diff --git a/.classpath b/.classpath index 5e8a55fe..b51d40f7 100644 --- a/.classpath +++ b/.classpath @@ -8,13 +8,14 @@ </classpathentry> <classpathentry kind="src" output="target/test-classes" path="src/test/java"> <attributes> + <attribute name="test" value="true"/> <attribute name="optional" value="true"/> <attribute name="maven.pomderived" value="true"/> - <attribute name="test" value="true"/> </attributes> </classpathentry> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"> <attributes> + <attribute name="module" value="true"/> <attribute name="maven.pomderived" value="true"/> </attributes> </classpathentry> @@ -23,5 +24,10 @@ <attribute name="maven.pomderived" value="true"/> </attributes> </classpathentry> + <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"> + <attributes> + <attribute name="maven.pomderived" value="true"/> + </attributes> + </classpathentry> <classpathentry kind="output" path="target/classes"/> </classpath> diff --git a/.gitignore b/.gitignore index 5f2dbe11..9e31d704 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +.idea target/ pom.xml.tag pom.xml.releaseBackup @@ -10,3 +11,79 @@ buildNumber.properties # Avoid ignoring Maven wrapper jar file (.jar files are usually ignored) !/.mvn/wrapper/maven-wrapper.jar + +.classpath + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf +.idea/**/sonarlint +.idea/sonarlint + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +# Custom stuff +APIKEY diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 00000000..ccf03486 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +adventofcode2019 \ No newline at end of file diff --git a/.idea/aws.xml b/.idea/aws.xml new file mode 100644 index 00000000..b63b642c --- /dev/null +++ b/.idea/aws.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="accountSettings"> + <option name="activeRegion" value="us-east-1" /> + <option name="recentlyUsedRegions"> + <list> + <option value="us-east-1" /> + </list> + </option> + </component> +</project> \ No newline at end of file diff --git a/.idea/checkstyle-idea.xml b/.idea/checkstyle-idea.xml new file mode 100644 index 00000000..9f040005 --- /dev/null +++ b/.idea/checkstyle-idea.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="CheckStyle-IDEA"> + <option name="configuration"> + <map> + <entry key="checkstyle-version" value="8.37" /> + <entry key="copy-libs" value="false" /> + <entry key="location-0" value="BUNDLED:(bundled):Sun Checks" /> + <entry key="location-1" value="BUNDLED:(bundled):Google Checks" /> + <entry key="scan-before-checkin" value="false" /> + <entry key="scanscope" value="JavaOnly" /> + <entry key="suppress-errors" value="false" /> + </map> + </option> + </component> +</project> \ No newline at end of file diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 00000000..8b4afbf5 --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,43 @@ +<component name="ProjectCodeStyleConfiguration"> + <code_scheme name="Project" version="173"> + <DBN-PSQL> + <case-options enabled="true"> + <option name="KEYWORD_CASE" value="lower" /> + <option name="FUNCTION_CASE" value="lower" /> + <option name="PARAMETER_CASE" value="lower" /> + <option name="DATATYPE_CASE" value="lower" /> + <option name="OBJECT_CASE" value="preserve" /> + </case-options> + <formatting-settings enabled="false" /> + </DBN-PSQL> + <DBN-SQL> + <case-options enabled="true"> + <option name="KEYWORD_CASE" value="lower" /> + <option name="FUNCTION_CASE" value="lower" /> + <option name="PARAMETER_CASE" value="lower" /> + <option name="DATATYPE_CASE" value="lower" /> + <option name="OBJECT_CASE" value="preserve" /> + </case-options> + <formatting-settings enabled="false"> + <option name="STATEMENT_SPACING" value="one_line" /> + <option name="CLAUSE_CHOP_DOWN" value="chop_down_if_statement_long" /> + <option name="ITERATION_ELEMENTS_WRAPPING" value="chop_down_if_not_single" /> + </formatting-settings> + </DBN-SQL> + <JavaCodeStyleSettings> + <option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="9999" /> + <option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="9999" /> + <option name="IMPORT_LAYOUT_TABLE"> + <value> + <package name="" withSubpackages="true" static="true" /> + <emptyLine /> + <package name="" withSubpackages="true" static="false" /> + <emptyLine /> + </value> + </option> + </JavaCodeStyleSettings> + <editorconfig> + <option name="ENABLED" value="false" /> + </editorconfig> + </code_scheme> +</component> \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 00000000..a55e7a17 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ +<component name="ProjectCodeStyleConfiguration"> + <state> + <option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" /> + </state> +</component> \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 00000000..2f3e6e57 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="CompilerConfiguration"> + <annotationProcessing> + <profile default="true" name="Default" enabled="true" /> + <profile name="Maven default annotation processors profile" enabled="true"> + <sourceOutputDir name="target/generated-sources/annotations" /> + <sourceTestOutputDir name="target/generated-test-sources/test-annotations" /> + <outputRelativeToContentRoot value="true" /> + <module name="adventofcode2019" /> + </profile> + </annotationProcessing> + <bytecodeTargetLevel> + <module name="adventofcode2019" target="17" /> + </bytecodeTargetLevel> + </component> +</project> \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 00000000..aa00ffab --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="Encoding"> + <file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" /> + <file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" /> + </component> +</project> \ No newline at end of file diff --git a/.idea/google-java-format.xml b/.idea/google-java-format.xml new file mode 100644 index 00000000..2aa056da --- /dev/null +++ b/.idea/google-java-format.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="GoogleJavaFormatSettings"> + <option name="enabled" value="false" /> + </component> +</project> \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 00000000..b15554c4 --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="RemoteRepositoriesConfiguration"> + <remote-repository> + <option name="id" value="picnic-snapshots" /> + <option name="name" value="picnic-snapshots" /> + <option name="url" value="https://nexus.global.picnicinternational.com/repository/maven-public" /> + </remote-repository> + <remote-repository> + <option name="id" value="central" /> + <option name="name" value="Maven Central repository" /> + <option name="url" value="https://repo1.maven.org/maven2" /> + </remote-repository> + <remote-repository> + <option name="id" value="jboss.community" /> + <option name="name" value="JBoss Community repository" /> + <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" /> + </remote-repository> + <remote-repository> + <option name="id" value="central" /> + <option name="name" value="Central Repository" /> + <option name="url" value="https://nexus.global.picnicinternational.com/repository/maven-public" /> + </remote-repository> + </component> +</project> \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 00000000..482738ca --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="MavenProjectsManager"> + <option name="originalFiles"> + <list> + <option value="$PROJECT_DIR$/pom.xml" /> + </list> + </option> + </component> + <component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="17" project-jdk-type="JavaSDK" /> +</project> \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 00000000..1f102bb9 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ProjectModuleManager"> + <modules> + <module fileurl="file://$PROJECT_DIR$/adventofcode2019.iml" filepath="$PROJECT_DIR$/adventofcode2019.iml" /> + </modules> + </component> +</project> \ No newline at end of file diff --git a/.idea/sonarlint/issuestore/index.pb b/.idea/sonarlint/issuestore/index.pb new file mode 100644 index 00000000..e69de29b diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 00000000..35eb1ddf --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="VcsDirectoryMappings"> + <mapping directory="" vcs="Git" /> + </component> +</project> \ No newline at end of file diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs index f9fe3459..839d647e 100644 --- a/.settings/org.eclipse.core.resources.prefs +++ b/.settings/org.eclipse.core.resources.prefs @@ -1,4 +1,5 @@ eclipse.preferences.version=1 encoding//src/main/java=UTF-8 +encoding//src/main/resources=UTF-8 encoding//src/test/java=UTF-8 encoding/<project>=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index db24ee78..60af120b 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,15 +1,16 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=13 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.compliance=13 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=enabled org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore -org.eclipse.jdt.core.compiler.release=disabled -org.eclipse.jdt.core.compiler.source=1.8 +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=13 diff --git a/README.md b/README.md index e8336bc7..f46a5a17 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,483 @@ -# adventOfCode(2019) -Let's do this! Code first, refactor later(tm). +# adventOfCode(Language.JAVA) + +## 2022 +### Days +- [Day 1](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year22/days/Day1.java) +- [Day 2](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year22/days/Day2.java) +- [Day 3](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year22/days/Day3.java) +- [Day 4](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year22/days/Day4.java) +- [Day 5](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year22/days/Day5.java) +- [Day 6](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year22/days/Day6.java) +- [Day 7](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year22/days/Day7.java) +- [Day 8](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year22/days/Day8.java) +- [Day 9](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year22/days/Day9.java) +- [Day 10](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year22/days/Day10.java) +- [Day 11](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year22/days/Day11.java) +- [Day 12](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year22/days/Day12.java) +- [Day 13](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year22/days/Day13.java) +- [Day 14](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year22/days/Day14.java) +- [Day 15](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year22/days/Day15.java) +- [Day 16](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year22/days/Day16.java) +- [Day 17](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year22/days/Day17.java) +- [Day 18](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year22/days/Day18.java) +- [Day 19](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year22/days/Day19.java) +- [Day 20](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year22/days/Day20.java) +- [Day 21](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year22/days/Day21.java) +- [Day 22](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year22/days/Day22.java) +- [Day 23](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year22/days/Day23.java) +- [Day 24](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year22/days/Day24.java) +- [Day 25](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year22/days/Day25.java) + +## 2021 +### Days +- [Day 1](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year21/days/Day1.java) +- [Day 2](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year21/days/Day2.java) +- [Day 3](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year21/days/Day3.java) +- [Day 4](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year21/days/Day4.java) +- [Day 5](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year21/days/Day5.java) +- [Day 6](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year21/days/Day6.java) +- [Day 7](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year21/days/Day7.java) +- [Day 8](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year21/days/Day8.java) +- [Day 9](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year21/days/Day9.java) +- [Day 10](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year21/days/Day10.java) +- [Day 11](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year21/days/Day11.java) +- [Day 12](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year21/days/Day12.java) +- [Day 13](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year21/days/Day13.java) +- [Day 14](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year21/days/Day14.java) +- [Day 15](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year21/days/Day15.java) +- [Day 16](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year21/days/Day16.java) +- [Day 17](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year21/days/Day17.java) +- [Day 18](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year21/days/Day18.java) +- [Day 19](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year21/days/Day19.java) +- [Day 20](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year21/days/Day20.java) +- [Day 21](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year21/days/Day21.java) +- [Day 22](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year21/days/Day22.java) +- [Day 23](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year21/days/Day23.java) +- [Day 24](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year21/days/Day24.java) +- [Day 25](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year21/days/Day25.java) + +### Console output +``` +Day 1: +Part 1: 1184 +Part 2: 1158 + +Day 2: +Part 1: 1507611 +Part 2: 1880593125 + +Day 3: +Part 1: 3901196 +Part 2: 4412188 + +Day 4: +Part 1: 45031 +Part 2: 2568 + +Day 5: +Part 1: 6283 +Part 2: 18864 + +Day 6: +Part 1: 352151 +Part 2: 1601616884019 + +Day 7: +Part 1: 356992 +Part 2: 101268110 + +Day 8: +Part 1: 383 +Part 2: 998900 + +Day 9: +Part 1: 468 +Part 2: 1280496 + +Day 10: +Part 1: 392421 +Part 2: 2769449099 + +Day 11: +Part 1: 1594 +Part 2: 437 + +Day 12: +Part 1: 3779 +Part 2: 96988 + +Day 13: +Part 1: 647 +Part 2: +1 1 1111 11 1 1 11 111 11 11 +1 1 1 1 1 1 1 1 1 1 1 1 +1111 111 1 1111 1 1 1 1 1 +1 1 1 1 1 1 1 111 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1111 11 1 1 11 1 1 11 11 + + +Day 14: +Part 1: 3284 +Part 2: 4302675529689 + +Day 15: +Part 1: 741 +Part 2: 2976 + +Day 16: +Part 1: 871 +Part 2: 68703010504 + +Day 17: +Part 1: 8911 +Part 2: 4748 + +Day 18: +Part 1: 4207 +Part 2: 4635 + +Day 19: +Part 1: 326 +Part 2: 10630 + +Day 20: +Part 1: 5218 +Part 2: 15527 + +Day 21: +Part 1: 678468 +Part 2: 131180774190079 + +Day 22: +Part 1: 580810 +Part 2: 1265621119006734 + +Day 23: +Part 1: 13556 +Part 2: 54200 + +Day 24: +Part 1: 99799212949967 +Part 2: 34198111816311 + +Day 25: +Part 1: 441 +Part 2: Merry Christmas +``` + +## 2020 +### Days +- [Day 1](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year20/days/Day1.java) +- [Day 2](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year20/days/Day2.java) +- [Day 3](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year20/days/Day3.java) +- [Day 4](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year20/days/Day4.java) +- [Day 5](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year20/days/Day5.java) +- [Day 6](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year20/days/Day6.java) +- [Day 7](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year20/days/Day7.java) +- [Day 8](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year20/days/Day8.java) +- [Day 9](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year20/days/Day9.java) +- [Day 10](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year20/days/Day10.java) +- [Day 11](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year20/days/Day11.java) +- [Day 12](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year20/days/Day12.java) +- [Day 13](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year20/days/Day13.java) +- [Day 14](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year20/days/Day14.java) +- [Day 15](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year20/days/Day15.java) +- [Day 16](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year20/days/Day16.java) +- [Day 17](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year20/days/Day17.java) +- [Day 18](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year20/days/Day18.java) +- [Day 19](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year20/days/Day19.java) +- [Day 20](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year20/days/Day20.java) +- [Day 21](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year20/days/Day21.java) +- [Day 22](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year20/days/Day22.java) +- [Day 23](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year20/days/Day23.java) +- [Day 24](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year20/days/Day24.java) +- [Day 25](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year20/days/Day25.java) + +### Console output +``` +Day 1: +Part 1: 270144 +Part 2: 261342720 + +Day 2: +Part 1: 422 +Part 2: 451 + +Day 3: +Part 1: 254 +Part 2: 1666768320 + +Day 4: +Part 1: 222 +Part 2: 140 + +Day 5: +Part 1: 855 +Part 2: 552 + +Day 6: +Part 1: 7283 +Part 2: 3520 + +Day 7: +Part 1: 238 +Part 2: 82930 + +Day 8: +Part 1: 1420 +Part 2: 1245 + +Day 9: +Part 1: 373803594 +Part 2: 51152360 + +Day 10: +Part 1: 2812 +Part 2: 386869246296064 + +Day 11: +Part 1: 2243 +Part 2: 2027 + +Day 12: +Part 1: 1578 +Part 2: 66614 + +Day 13: +Part 1: 2935 +Part 2: 836024966345345 + +Day 14: +Part 1: 14732563016887 +Part 2: 3618217244644 + +Day 15: +Part 1: 1294 +Part 2: 573522 + +Day 16: +Part 1: 26988 +Part 2: 426362917709 + +Day 17: +Part 1: 295 +Part 2: 1972 + +Day 18: +Part 1: 9535936849815 +Part 2: 472171581333710 + +Day 19: +Part 1: 104 +Part 2: 314 + +Day 20: +Part 1: 111936085519519 +Part 2: 1792 + +Day 21: +Part 1: 2786 +Part 2: lxjtns,knprxg,knprxg,clg,lxjtns,clg,cxfz,cxfz + +Day 22: +Part 1: 33925 +Part 2: 33441 + +Day 23: +Part 1: 69425837 +Part 2: 218882971435 + +Day 24: +Part 1: 479 +Part 2: 4135 + +Day 25: +Part 1: 16881444 +Part 2: That's all folks +``` + +## 2019 +### Days +- [Day 1](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year19/days/Day1.java) +- [Day 2](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year19/days/Day2.java) +- [Day 3](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year19/days/Day3.java) +- [Day 4](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year19/days/Day4.java) +- [Day 5](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year19/days/Day5.java) +- [Day 6](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year19/days/Day6.java) +- [Day 7](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year19/days/Day7.java) +- [Day 8](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year19/days/Day8.java) +- [Day 9](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year19/days/Day9.java) +- [Day 10](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year19/days/Day10.java) +- [Day 11](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year19/days/Day11.java) +- [Day 12](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year19/days/Day12.java) +- [Day 13](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year19/days/Day13.java) +- [Day 14](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year19/days/Day14.java) +- [Day 15](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year19/days/Day15.java) +- [Day 16](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year19/days/Day16.java) +- [Day 17](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year19/days/Day17.java) +- [Day 18](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year19/days/Day18.java) +- [Day 19](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year19/days/Day19.java) +- [Day 20](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year19/days/Day20.java) +- [Day 21](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year19/days/Day21.java) +- [Day 22](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year19/days/Day22.java) +- [Day 23](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year19/days/Day23.java) +- [Day 24](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year19/days/Day24.java) +- [Day 25](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year19/days/Day25.java) + +### Console output +Output of running [Main.java](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode2019/Main.java): +``` +Day 1: +Part 1: 3514064 +Part 2: 5268207 + +Day 2: +Part 1: 8017076 +Part 2: 3146 + +Day 3: +Part 1: 303 +Part 2: 11222 + +Day 4: +Part 1: 481 +Part 2: 299 + +Day 5: +Part 1: 11049715 +Part 2: 2140710 + +Day 6: +Part 1: 186597 +Part 2: 412 + +Day 7: +Part 1: 116680 +Part 2: 89603079 + +Day 8: +Part 1: 1360 +Part 2: +████ ███ █ █ ██ ███ +█ █ █ █ █ █ █ █ █ +███ █ █ █ █ █ █ █ █ +█ ███ █ █ ████ ███ +█ █ █ █ █ █ █ █ +█ █ ██ █ █ █ █ + +Day 9: +Part 1: 2518058886 +Part 2: 44292 + +Day 10: +Part 1: 299 +Part 2: 1419 + +Day 11: +Part 1: 2172 +Part 2: + ██ ████ █ ████ ████ ██ █ █ ███ + █ █ █ █ █ █ █ █ █ █ █ + █ ███ █ ███ ███ █ ████ █ █ + █ █ █ █ █ █ ██ █ █ ███ +█ █ █ █ █ █ █ █ █ █ █ + ██ ████ ████ ████ █ ███ █ █ █ + +Day 12: +Part 1: 13399 +Part 2: 312992287193064 + +Day 13: +Part 1: 320 +Part 2: 15156 + +Day 14: +Part 1: 485720 +Part 2: 3848998 + +Day 15: +Part 1: 380 +Part 2: 410 + +Day 16: +Part 1: 12541048 +Part 2: 62858988 + +Day 17: +Part 1: 7404 +Part 2: 929045 + +Day 18: +Part 1: 5402 +Part 2: 2138 + +Day 19: +Part 1: 179 +Part 2: 9760485 + +Day 20: +Part 1: 498 +Part 2: 5564 + +Day 21: +Part 1: 19352864 +Part 2: 1142488337 + +Day 22: +Part 1: 7860 +Part 2: 61256063148970 + +Day 23: +Part 1: 17286 +Part 2: 11249 + +Day 24: +Part 1: 32506911 +Part 2: 2025 + +Day 25: +Part 1: 34095120 +Part 2: MERRY CHRISTMAS!! +``` + +## 2018 +I never did the 2018 advent of code puzzles when the event was ongoing. I'm just doing them whenever I feel like it :) + +### Days +- [Day 1](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year18/days/Day1.java) +- [Day 2](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year18/days/Day2.java) +- [Day 3](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year18/days/Day3.java) +- [Day 4](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year18/days/Day4.java) +- [Day 5](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year18/days/Day5.java) +- [Day 6](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year18/days/Day6.java) +- [Day 7](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year18/days/Day7.java) +- [Day 8](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year18/days/Day8.java) +- [Day 9](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year18/days/Day9.java) +- [Day 10](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year18/days/Day10.java) +- [Day 11](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year18/days/Day11.java) +- [Day 12](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year18/days/Day12.java) +- [Day 13](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year18/days/Day13.java) +- [Day 14](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year18/days/Day14.java) +- [Day 15](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year18/days/Day15.java) +- [Day 16](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year18/days/Day16.java) +- [Day 17](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year18/days/Day17.java) +- [Day 18](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year18/days/Day18.java) +- [Day 19](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year18/days/Day19.java) +- [Day 20](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year18/days/Day20.java) +- [Day 21](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year18/days/Day21.java) +- [Day 22](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year18/days/Day22.java) +- [Day 23](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year18/days/Day23.java) +- [Day 24](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year18/days/Day24.java) +- [Day 25](https://github.com/SimonBaars/AdventOfCode-Java/blob/master/src/main/java/com/sbaars/adventofcode/year18/days/Day25.java) + +### Console output +``` +Day 1: +Part 1: 433 +Part 2: 256 + +Day 2: +Part 1: 5456 +Part 2: megsdlpulxvinkatfoyzxcbvq +``` diff --git a/adventofcode2019.iml b/adventofcode2019.iml new file mode 100644 index 00000000..1fd9ad3b --- /dev/null +++ b/adventofcode2019.iml @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="UTF-8"?> +<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4"> + <component name="CheckStyle-IDEA-Module"> + <option name="configuration"> + <map /> + </option> + </component> + <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_17"> + <output url="file://$MODULE_DIR$/target/classes" /> + <output-test url="file://$MODULE_DIR$/target/test-classes" /> + <content url="file://$MODULE_DIR$"> + <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" /> + <excludeFolder url="file://$MODULE_DIR$/target" /> + </content> + <orderEntry type="inheritedJdk" /> + <orderEntry type="sourceFolder" forTests="false" /> + <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.13.2" level="project" /> + <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" /> + <orderEntry type="library" name="Maven: com.google.guava:guava:31.0.1-jre" level="project" /> + <orderEntry type="library" name="Maven: com.google.guava:failureaccess:1.0.1" level="project" /> + <orderEntry type="library" name="Maven: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava" level="project" /> + <orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:3.0.2" level="project" /> + <orderEntry type="library" name="Maven: org.checkerframework:checker-qual:3.12.0" level="project" /> + <orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.7.1" level="project" /> + <orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.3" level="project" /> + <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.12.0" level="project" /> + <orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.4" level="project" /> + <orderEntry type="library" name="Maven: org.apache.commons:commons-math3:3.6.1" level="project" /> + <orderEntry type="library" name="Maven: org.apache.commons:commons-text:1.9" level="project" /> + <orderEntry type="library" name="Maven: commons-io:commons-io:1.3.2" level="project" /> + <orderEntry type="library" name="Maven: org.apache.commons:commons-csv:1.8" level="project" /> + <orderEntry type="library" name="Maven: org.apache.commons:commons-configuration2:2.7" level="project" /> + <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" /> + <orderEntry type="library" name="Maven: net.sourceforge.htmlcleaner:htmlcleaner:2.25" level="project" /> + <orderEntry type="library" name="Maven: org.jdom:jdom2:2.0.5" level="project" /> + </component> +</module> \ No newline at end of file diff --git a/pom.xml b/pom.xml index 07702b4e..87972c3e 100644 --- a/pom.xml +++ b/pom.xml @@ -1,25 +1,80 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> - <groupId>com.sbaars</groupId> - <artifactId>adventofcode2019</artifactId> - <version>0.0.1-SNAPSHOT</version> - <packaging>jar</packaging> + <groupId>com.sbaars</groupId> + <artifactId>adventofcode</artifactId> + <version>1.0</version> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <configuration> + <source>17</source> + <target>17</target> + </configuration> + </plugin> + </plugins> + </build> + <packaging>jar</packaging> - <name>adventofcode2019</name> - <url>http://maven.apache.org</url> + <name>adventofcode</name> + <url>http://maven.apache.org</url> - <properties> - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - </properties> - - <dependencies> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <version>3.8.1</version> - <scope>test</scope> - </dependency> - </dependencies> + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.13.2</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>com.google.guava</groupId> + <artifactId>guava</artifactId> + <version>31.0.1-jre</version> + </dependency> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-lang3</artifactId> + <version>3.12.0</version> + </dependency> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-collections4</artifactId> + <version>4.4</version> + </dependency> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-math3</artifactId> + <version>3.6.1</version> + </dependency> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-text</artifactId> + <version>1.9</version> + </dependency> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-io</artifactId> + <version>1.3.2</version> + </dependency> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-csv</artifactId> + <version>1.8</version> + </dependency> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-configuration2</artifactId> + <version>2.7</version> + </dependency> + <dependency> + <groupId>net.sourceforge.htmlcleaner</groupId> + <artifactId>htmlcleaner</artifactId> + <version>2.25</version> + </dependency> + </dependencies> </project> diff --git a/src/main/java/com/sbaars/adventofcode/common/CircularLinkedList.java b/src/main/java/com/sbaars/adventofcode/common/CircularLinkedList.java new file mode 100644 index 00000000..37604b83 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/common/CircularLinkedList.java @@ -0,0 +1,79 @@ +package com.sbaars.adventofcode.common; + +import java.util.HashMap; +import java.util.Map; + +/** + * A circular linked list of fixed length where all operations are O(1) + */ +public class CircularLinkedList { + private final Map<Integer, Node> valueMap = new HashMap<>(); + private Node current; + public CircularLinkedList(int[] elements) { + Node prev = null; + Node first = null; + for (int element : elements) { + Node n = new Node(); + n.value = element; + n.prev = prev; + valueMap.put(element, n); + if (prev != null) prev.next = n; + else first = n; + prev = n; + } + prev.next = first; + first.prev = prev; + this.current = first; + } + + public int current() { + return current.value; + } + + public void next() { + current = current.next; + } + + public int[] next(int n) { + int[] arr = new int[n]; + Node node = current; + for (int i = 0; i < n; i++) { + node = node.next; + arr[i] = node.value; + } + return arr; + } + + public Node currentNode() { + return current; + } + + public void insertAfter(Node s1, Node s2, int dest) { + Node d = valueMap.get(dest); + Node oldNext = d.next; + s1.prev.next = s2.next; + s2.next.prev = s1.prev; + d.next = s1; + s2.next = oldNext; + oldNext.prev = s2; + s1.prev = d; + } + + public int size() { + return valueMap.size(); + } + + public int[] toArray() { + return next(size()); + } + + public void setCurrent(int value) { + current = valueMap.get(value); + } + + public class Node { + public int value; + public Node prev; + public Node next; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/common/Day.java b/src/main/java/com/sbaars/adventofcode/common/Day.java new file mode 100644 index 00000000..fc4e06d3 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/common/Day.java @@ -0,0 +1,155 @@ +package com.sbaars.adventofcode.common; + +import com.sbaars.adventofcode.util.FetchInput; +import com.sbaars.adventofcode.util.Submit; + +import java.io.File; +import java.io.IOException; +import java.util.Arrays; +import java.util.Optional; +import java.util.stream.IntStream; +import java.util.stream.LongStream; +import java.util.stream.Stream; + +import static org.apache.commons.io.FileUtils.readFileToString; + +public abstract class Day { + public static final String DEFAULT_DELIMITER = "\n"; + protected final int year; + protected final int day; + protected int example = 0; + + private Object solutionPart1; + private Object solutionPart2; + + public Day(int year, int day) { + this.year = year; + this.day = day; + } + + public static String getResourceAsString(String resource) { + try { + return readFileToString(getResource(resource)); + } catch (IOException e) { + throw new IllegalStateException(e); + } + } + + public static File getResource(String path) { + return new File("src/main/resources/"+path); + } + + private String getDayPath() { + boolean b = example != 0; + return year + (b ? "-examples" : "") + "/day" + day + (b ? "-" + example : "") + ".txt"; + } + + public abstract Object part1(); + + public abstract Object part2(); + + public void printParts() { + solutionPart1 = part1(); + solutionPart2 = part2(); + if(solutionPart1 instanceof Optional) solutionPart1 = ((Optional<?>)solutionPart1).get(); + if(solutionPart2 instanceof Optional) solutionPart2 = ((Optional<?>)solutionPart2).get(); + System.out.println("Part 1: " + solutionPart1); + System.out.println("Part 2: " + solutionPart2); + } + + public void printParts(int example) { + this.example = example; + System.out.println("Part 1: " + part1()); + System.out.println("Part 2: " + part2()); + } + + public void submitPart1() { + if(solutionPart1 == null) solutionPart1 = part1(); + if(example == 0 && solutionPart1 != null) { + new Submit().submit(solutionPart1, year, day, 1); + } + } + + public void submitPart2() { + if(solutionPart2 == null) solutionPart2 = part1(); + if(example == 0 && solutionPart2 != null) { + new Submit().submit(solutionPart2, year, day, 2); + } + } + + protected String day() { + return getResourceAsString(getDayPath()); + } + + protected String[] dayStrings() { + return dayStrings(DEFAULT_DELIMITER); + } + + protected String[] dayStrings(String delimiter) { + return Arrays.stream(day().split(delimiter)).toArray(String[]::new); + } + + protected Stream<String> dayStream() { + return dayStream(DEFAULT_DELIMITER); + } + + protected Stream<String> dayStream(String delimiter) { + return Arrays.stream(day().split(delimiter)); + } + + protected IntStream dayIntStream() { + return dayIntStream(DEFAULT_DELIMITER); + } + + protected IntStream dayIntStream(String delimiter) { + return Arrays.stream(day().split(delimiter)).mapToInt(Integer::parseInt); + } + + protected long[] dayNumbers() { + return dayNumbers(DEFAULT_DELIMITER); + } + + protected long[] dayNumbers(String delimiter) { + return dayNumberStream(delimiter).toArray(); + } + + protected long[] dayDigits() { + return day().chars().filter(n -> n >= '0' && n <= '9').mapToLong(n -> n - '0').toArray(); + } + + protected double[] dayDoubles() { + return dayDoubles(DEFAULT_DELIMITER); + } + + protected double[] dayDoubles(String delimiter) { + return dayStream(delimiter).mapToDouble(Double::parseDouble).toArray(); + } + + protected LongStream dayNumberStream() { + return dayNumberStream(DEFAULT_DELIMITER); + } + + protected LongStream dayNumberStream(String delimiter) { + return dayStream(delimiter).filter(e -> !e.isEmpty()).map(e -> e.replace("\n", "").trim()).mapToLong(Long::parseLong); + } + + protected char[][] dayGrid() { + return dayGrid(DEFAULT_DELIMITER); + } + + protected char[][] dayGrid(String delimiter) { + return dayStream(delimiter).map(String::toCharArray).toArray(char[][]::new); + } + + public void downloadIfNotDownloaded() { + if(example == 0 && !getResource(getDayPath()).exists()) { + new FetchInput().retrieveInput(Integer.toString(day), Integer.toString(year)); + } + } + + public void downloadExample() { +// if(example > 0 && !getResource(getDayPath()).exists()) { + new FetchInput().retrieveExamples(Integer.toString(day), Integer.toString(year)); +// } + } +} diff --git a/src/main/java/com/sbaars/adventofcode/common/Direction.java b/src/main/java/com/sbaars/adventofcode/common/Direction.java new file mode 100644 index 00000000..72eb9e93 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/common/Direction.java @@ -0,0 +1,156 @@ +package com.sbaars.adventofcode.common; + +import java.awt.*; +import java.util.Arrays; + +import static java.lang.Math.abs; + +public enum Direction { + NORTH(1, 'U'), EAST(4, 'R'), SOUTH(2, 'D'), WEST(3, 'L'), CENTER(8, 'C'), + NORTHEAST(4, 'E'), SOUTHEAST(5, 'E'), SOUTHWEST(6, 'E'), NORTHWEST(7, 'E'); + + public final int num; + public final int code; + + Direction(int num, char code) { + this.num = num; + this.code = code; + } + + public static Direction getByDirCode(char code) { + return Arrays.stream(values()).filter(e -> e.code == code).findAny().get(); + } + + public static Direction getByDir(char code) { + return Arrays.stream(values()).filter(e -> e.name().charAt(0) == code).findAny().get(); + } + + public static Direction getByMove(Point from, Point to) { + if (to.x > from.x) return EAST; + else if (to.x < from.x) return WEST; + else if (to.y > from.y) return SOUTH; + else if (to.y < from.y) return NORTH; + else return CENTER; + } + + public static Point turn(Point w, boolean b) { + return b ? new Point(-w.y, w.x) : new Point(w.y, -w.x); + } + + public static Point turnDegrees(Point w, int distance, boolean b) { + int num = distance % 360; + while (num > 0) { + w = turn(w, b); + num -= 90; + } + return w; + } + + public static Point turnDegrees(Point w, int distance) { + return turnDegrees(w, abs(distance), distance > 0); + } + + public static Direction[] fourDirections() { + return new Direction[]{NORTH, EAST, SOUTH, WEST}; + } + + public static Direction[] eightDirections() { + return new Direction[]{NORTH, EAST, SOUTH, WEST, NORTHEAST, SOUTHEAST, SOUTHWEST, NORTHWEST}; + } + + public Direction turn(boolean right) { + int cur = ordinal() + (right ? 1 : -1); + if (cur == fourDirections().length) cur = 0; + else if (cur == -1) cur = fourDirections().length - 1; + return fourDirections()[cur]; + } + + public Point move(Point currentLocation, int amount) { + return switch (this) { + case SOUTH -> new Point(currentLocation.x, currentLocation.y + amount); + case NORTH -> new Point(currentLocation.x, currentLocation.y - amount); + case EAST -> new Point(currentLocation.x + amount, currentLocation.y); + case WEST -> new Point(currentLocation.x - amount, currentLocation.y); + case SOUTHWEST -> new Point(currentLocation.x - amount, currentLocation.y + amount); + case NORTHEAST -> new Point(currentLocation.x + amount, currentLocation.y - amount); + case SOUTHEAST -> new Point(currentLocation.x + amount, currentLocation.y + amount); + case NORTHWEST -> new Point(currentLocation.x - amount, currentLocation.y - amount); + case CENTER -> new Point(currentLocation.x, currentLocation.y); + }; + } + + public Point moveFix(Point currentLocation, int amount) { + return switch (this) { + case SOUTH -> new Point(currentLocation.x, currentLocation.y + amount); + case NORTH -> new Point(currentLocation.x, currentLocation.y - amount); + case EAST -> new Point(currentLocation.x - amount, currentLocation.y); + case WEST -> new Point(currentLocation.x + amount, currentLocation.y); + case SOUTHWEST -> new Point(currentLocation.x + amount, currentLocation.y + amount); + case NORTHEAST -> new Point(currentLocation.x - amount, currentLocation.y - amount); + case SOUTHEAST -> new Point(currentLocation.x - amount, currentLocation.y + amount); + case NORTHWEST -> new Point(currentLocation.x + amount, currentLocation.y - amount); + case CENTER -> new Point(currentLocation.x, currentLocation.y); + }; + } + + public char getInGrid(char[][] grid, Point p, char none) { + if (p.x >= 0 && p.x < grid.length && p.y >= 0 && p.y < grid[0].length) { + return grid[p.x][p.y]; + } + return none; + } + + public long getInGrid(long[][] grid, Point p, int none) { + p = this.move(p); + if (p.x >= 0 && p.x < grid.length && p.y >= 0 && p.y < grid[0].length) { + return grid[p.x][p.y]; + } + return none; + } + + public char getInGrid(char[][] grid, Point p) { + return getInGrid(grid, p, '.'); + } + + public Point move(Point currentLocation) { + return move(currentLocation, 1); + } + + public Point moveFix(Point currentLocation) { + return moveFix(currentLocation, 1); + } + + public Direction opposite() { + return switch (this) { + case NORTH -> SOUTH; + case SOUTH -> NORTH; + case EAST -> WEST; + case WEST -> EAST; + case NORTHEAST -> SOUTHWEST; + case SOUTHWEST -> NORTHEAST; + case SOUTHEAST -> NORTHWEST; + case NORTHWEST -> SOUTHEAST; + case CENTER -> CENTER; + }; + } + + public boolean leftOf(Direction robotDir) { + int n = this.ordinal() - 1; + if (n == -1) n = values().length - 1; + return robotDir.ordinal() == n; + } + + public Direction turnDegrees(int degrees, boolean right) { + int num = degrees % 360; + Direction dir = this; + while (num > 0) { + dir = turn(right); + num -= 90; + } + return dir; + } + + public Direction turnDegrees(int degrees) { + return turnDegrees(abs(degrees), degrees > 0); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/common/HasRecursion.java b/src/main/java/com/sbaars/adventofcode/common/HasRecursion.java new file mode 100644 index 00000000..50f0e778 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/common/HasRecursion.java @@ -0,0 +1,4 @@ +package com.sbaars.adventofcode.common; + +public interface HasRecursion { +} diff --git a/src/main/java/com/sbaars/adventofcode/common/HexDirection.java b/src/main/java/com/sbaars/adventofcode/common/HexDirection.java new file mode 100644 index 00000000..7ac6d8d3 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/common/HexDirection.java @@ -0,0 +1,62 @@ +package com.sbaars.adventofcode.common; + +import java.awt.*; +import java.util.Arrays; +import java.util.Optional; + +public enum HexDirection { + NORTHWEST(1, "nw"), EAST(4, "e"), SOUTHEAST(2, "se"), WEST(3, "w"), + NORTHEAST(4, "ne"), SOUTHWEST(5, "sw"); + + public final int num; + public final String code; + + HexDirection(int num, String code) { + this.num = num; + this.code = code; + } + + public static Optional<HexDirection> get(String code) { + return Arrays.stream(values()).filter(e -> e.code.equals(code)).findAny(); + } + + public Point move(Point currentLocation, int amount) { + switch (this) { + case EAST: + return new Point(currentLocation.x + (amount * 2), currentLocation.y); + case WEST: + return new Point(currentLocation.x - (amount * 2), currentLocation.y); + case SOUTHWEST: + return new Point(currentLocation.x - amount, currentLocation.y + amount); + case NORTHEAST: + return new Point(currentLocation.x + amount, currentLocation.y - amount); + case SOUTHEAST: + return new Point(currentLocation.x + amount, currentLocation.y + amount); + case NORTHWEST: + return new Point(currentLocation.x - amount, currentLocation.y - amount); + } + throw new IllegalStateException("Non-existent Direction: " + this); + } + + public Point move(Point currentLocation) { + return move(currentLocation, 1); + } + + public HexDirection opposite() { + switch (this) { + case EAST: + return WEST; + case WEST: + return EAST; + case NORTHEAST: + return SOUTHWEST; + case SOUTHWEST: + return NORTHEAST; + case SOUTHEAST: + return NORTHWEST; + case NORTHWEST: + return SOUTHEAST; + } + throw new IllegalStateException("Non-existent Direction: " + this); + } +} \ No newline at end of file diff --git a/src/main/java/com/sbaars/adventofcode/common/IntArray.java b/src/main/java/com/sbaars/adventofcode/common/IntArray.java new file mode 100644 index 00000000..92e912eb --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/common/IntArray.java @@ -0,0 +1,74 @@ +package com.sbaars.adventofcode.common; + +import java.util.HashMap; +import java.util.Map; +import java.util.stream.IntStream; + +/** + * A fixed length array where all operations are O(1) + */ +public class IntArray { + private final int[] elements; + private final Map<Integer, Integer> elementIndex = new HashMap<>(); + private int size; + + public IntArray(int[] elements) { + this.elements = elements; + for (int i = 0; i < elements.length; i++) { + elementIndex.put(elements[i], i); + } + this.size = elements.length; + } + + public IntArray(IntStream elements) { + this(elements.toArray()); + } + + public void move(int oldIndex, int newIndex) { + elementIndex.put(elements[oldIndex], newIndex); + elementIndex.put(elements[newIndex], oldIndex); + int old = elements[oldIndex]; + elements[oldIndex] = elements[newIndex]; + elements[newIndex] = old; + } + + public int get(int i) { + return elements[i]; + } + + public int size() { + return size; + } + + public int indexOf(int element) { + return elementIndex.get(element); + } + + public void remove(int index) { + move(index, --size); + } + + public boolean removeElement(int element) { + if(elementIndex.containsKey(element)) { + remove(indexOf(element)); + elementIndex.remove(element); + return true; + } + return false; + } + + public boolean contains(int element){ + return elementIndex.containsKey(element); + } + + public int[] toArray() { + if(size == elements.length) return elements; + int[] arr = new int[size]; + System.arraycopy(elements, 0, arr, 0, size); + return arr; + } + + public IntStream stream() { + return IntStream.of(toArray()); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/common/IntLoc.java b/src/main/java/com/sbaars/adventofcode/common/IntLoc.java new file mode 100644 index 00000000..5893c2bd --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/common/IntLoc.java @@ -0,0 +1,96 @@ +/* + * Copyright (c) 1995, 2021, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sbaars.adventofcode.common; + +import com.google.common.base.Objects; +import java.awt.*; +import java.util.stream.IntStream; +import java.util.stream.Stream; + +public class IntLoc { + public final int x; + public final int y; + + public IntLoc() { + this(0, 0); + } + + public IntLoc(IntLoc p) { + this(p.x, p.y); + } + + public IntLoc(int x, int y) { + this.x = x; + this.y = y; + } + + public IntLoc(Point p) { + this.x = p.x; + this.y = p.y; + } + + public int getX() { + return x; + } + + public int getY() { + return y; + } + + public IntLoc move(int dx, int dy) { + return new IntLoc(x + dx, y + dy); + } + + public IntLoc move(IntLoc l) { + return new IntLoc(x + l.x, y + l.y); + } + + public Point getPoint() { + return new Point(Math.toIntExact(x), Math.toIntExact(y)); + } + + public static Stream<IntLoc> range(int i, int j){ + return IntStream.range(0, i).boxed().flatMap(x -> IntStream.range(0, j).mapToObj(y -> new IntLoc(x, y))); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + IntLoc loc = (IntLoc) o; + return x == loc.x && y == loc.y; + } + + @Override + public int hashCode() { + return Objects.hashCode(x, y); + } + + @Override + public String toString() { + return getClass().getName() + "[x=" + x + ",y=" + y + "]"; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/common/Loc.java b/src/main/java/com/sbaars/adventofcode/common/Loc.java new file mode 100644 index 00000000..f04fe6e1 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/common/Loc.java @@ -0,0 +1,111 @@ +/* + * Copyright (c) 1995, 2021, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sbaars.adventofcode.common; + +import static java.lang.Math.toIntExact; + +import com.google.common.base.Objects; +import java.awt.*; +import java.util.stream.IntStream; +import java.util.stream.Stream; + +public class Loc { + public final long x; + public final long y; + + public Loc() { + this(0, 0); + } + + public Loc(Loc p) { + this(p.x, p.y); + } + + public Loc(long x, long y) { + this.x = x; + this.y = y; + } + + public Loc(int x, int y) { + this.x = x; + this.y = y; + } + + public Loc(Point p) { + this.x = p.x; + this.y = p.y; + } + + public long getX() { + return x; + } + + public long getY() { + return y; + } + + public Loc move(int dx, int dy) { + return new Loc(x + dx, y + dy); + } + + public Loc move(Loc l) { + return new Loc(x + l.x, y + l.y); + } + + public Point getPoint() { + return new Point(toIntExact(x), toIntExact(y)); + } + + public static Stream<Loc> range(int i, int j){ + return IntStream.range(0, i).boxed().flatMap(x -> IntStream.range(0, j).mapToObj(y -> new Loc(x, y))); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Loc loc = (Loc) o; + return x == loc.x && y == loc.y; + } + + @Override + public int hashCode() { + return Objects.hashCode(x, y); + } + + @Override + public String toString() { + return getClass().getName() + "[x=" + x + ",y=" + y + "]"; + } + + public int intX() { + return toIntExact(x); + } + + public int intY() { + return toIntExact(y); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/common/Loc3D.java b/src/main/java/com/sbaars/adventofcode/common/Loc3D.java new file mode 100644 index 00000000..b67c356a --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/common/Loc3D.java @@ -0,0 +1,137 @@ +/* + * Copyright (c) 1995, 2021, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sbaars.adventofcode.common; + +import com.google.common.base.Objects; +import java.util.List; + +public class Loc3D { + public final long x; + public final long y; + public final long z; + + public Loc3D() { + this(0, 0, 0); + } + + public Loc3D(Loc3D p) { + this(p.x, p.y, p.z); + } + + public Loc3D(long x, long y, long z) { + this.x = x; + this.y = y; + this.z = z; + } + + public Loc3D(int x, int y, int z) { + this.x = x; + this.y = y; + this.z = z; + } + + public Loc3D(long[] l) { + this.x = l[0]; + this.y = l[1]; + this.z = l[2]; + } + + public List<Long> toList(){ + return List.of(x,y,z); + } + + public double getX() { + return x; + } + + public double getY() { + return y; + } + + public double getZ() { + return z; + } + + public Loc3D move(long dx, long dy, long dz) { + return new Loc3D(x + dx, y + dy, z + dz); + } + + public double distance(Loc3D p) { + return Math.sqrt(Math.pow(x - p.getX(), 2) + Math.pow(y - p.getY(), 2) + Math.pow(z - p.getZ(), 2)); + } + + public Loc3D distanceTo(Loc3D b) { + return new Loc3D(b.x - x, b.y - y, b.z - z); + } + + public Loc3D flip(int flip) { + return switch (flip) { + case 0 -> this; + case 1 -> new Loc3D(x, -y, -z); + case 2 -> new Loc3D(x, -z, y); + case 3 -> new Loc3D(-y, -z, x); + case 4 -> new Loc3D(-x, -z, -y); + case 5 -> new Loc3D(y, -z, -x); + default -> throw new IllegalStateException("Invalid flip value: "+flip); + }; + } + + public Loc3D rotate(int rot) { + return switch (rot) { + case 0 -> this; + case 1 -> new Loc3D(-y, x, z); + case 2 -> new Loc3D(-x, -y, z); + case 3 -> new Loc3D(y, -x, z); + default -> throw new IllegalStateException("Invalid rotation value: "+rot); + }; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Loc3D loc = (Loc3D) o; + return x == loc.x && y == loc.y && z == loc.z; + } + + @Override + public int hashCode() { + return Objects.hashCode(x, y, z); + } + + @Override + public String toString() { + return "Loc3D{" + + "x=" + x + + ", y=" + y + + ", z=" + z + + '}'; + } + + public boolean sameDistance(Loc3D m, Loc3D n) { + return (x + m.x) == n.x && (y + m.y) == n.y && (z + m.z) == n.z; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/common/LongArray.java b/src/main/java/com/sbaars/adventofcode/common/LongArray.java new file mode 100644 index 00000000..1f999f65 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/common/LongArray.java @@ -0,0 +1,74 @@ +package com.sbaars.adventofcode.common; + +import java.util.HashMap; +import java.util.Map; +import java.util.stream.LongStream; + +/** + * A fixed length array where all operations are O(1) + */ +public class LongArray { + private final long[] elements; + private final Map<Long, Integer> elementIndex = new HashMap<>(); + private int size; + + public LongArray(long[] elements) { + this.elements = elements; + for (int i = 0; i < elements.length; i++) { + elementIndex.put(elements[i], i); + } + this.size = elements.length; + } + + public LongArray(LongStream elements) { + this(elements.toArray()); + } + + public void move(int oldIndex, int newIndex) { + elementIndex.put(elements[oldIndex], newIndex); + elementIndex.put(elements[newIndex], oldIndex); + long old = elements[oldIndex]; + elements[oldIndex] = elements[newIndex]; + elements[newIndex] = old; + } + + public long get(int i) { + return elements[i]; + } + + public int size() { + return size; + } + + public int indexOf(long element) { + return elementIndex.get(element); + } + + public void remove(int index) { + move(index, --size); + } + + public boolean removeElement(long element) { + if(elementIndex.containsKey(element)) { + remove(indexOf(element)); + elementIndex.remove(element); + return true; + } + return false; + } + + public boolean contains(long element){ + return elementIndex.containsKey(element); + } + + public long[] toArray() { + if(size == elements.length) return elements; + long[] arr = new long[size]; + System.arraycopy(elements, 0, arr, 0, size); + return arr; + } + + public LongStream stream() { + return LongStream.of(toArray()); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/common/ProcessesImages.java b/src/main/java/com/sbaars/adventofcode/common/ProcessesImages.java new file mode 100644 index 00000000..86c17836 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/common/ProcessesImages.java @@ -0,0 +1,10 @@ +package com.sbaars.adventofcode.common; + +import java.util.Arrays; +import java.util.stream.Collectors; + +public interface ProcessesImages { + default String printAsciiArray(int[][] pixels) { + return System.lineSeparator() + Arrays.stream(pixels).map(a -> Arrays.stream(a).boxed().map(x -> x == 0 ? " " : "█").collect(Collectors.joining())).collect(Collectors.joining(System.lineSeparator())); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/common/ReadsFormattedString.java b/src/main/java/com/sbaars/adventofcode/common/ReadsFormattedString.java new file mode 100644 index 00000000..324828f6 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/common/ReadsFormattedString.java @@ -0,0 +1,61 @@ +package com.sbaars.adventofcode.common; + +import static com.google.common.base.Preconditions.checkState; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public interface ReadsFormattedString { + static <T> T readString(String s, String pattern, Class<T> target) { + List<Object> mappedObjs = new ArrayList<>(); + while (s.length() > 0) { + if (pattern.length() > 1 && pattern.charAt(0) == '%') { + int size = mappedObjs.size(); + switch (pattern.charAt(1)) { + case 'n': + mappedObjs.add(crunchNumber(s, pattern)); + break; + case 'c': + mappedObjs.add(s.charAt(0)); + break; + case 's': + mappedObjs.add(crunchString(s, pattern)); + break; + default: + break; + } + if (mappedObjs.size() != size) { + s = s.substring(mappedObjs.get(size).toString().length()); + pattern = pattern.substring(2); + continue; + } + } + if (pattern.charAt(0) == s.charAt(0)) { + s = s.substring(1); + pattern = pattern.substring(1); + } else { + throw new IllegalStateException("Illegal crunch, pattern = " + pattern + " and s = " + s); + } + } + try { + checkState(target.getConstructors().length > 0, "Class "+target+" has no constructor!"); + return (T) Arrays.stream(target.getConstructors()).filter(c -> c.getParameterCount() == mappedObjs.size()).findAny().get()//.getConstructor(mappedObjs.stream().map(Object::getClass).toArray(Class[]::new)) + .newInstance(mappedObjs.toArray()); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + static long crunchNumber(String s, String pattern) { + return Long.parseLong(crunchString(s, pattern)); + } + + static String crunchString(String s, String pattern) { + return pattern.length() > 2 ? s.substring(0, s.indexOf(pattern.charAt(2))) : s; + } + + default int i(long n) { + return Math.toIntExact(n); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/common/StringTools.java b/src/main/java/com/sbaars/adventofcode/common/StringTools.java new file mode 100644 index 00000000..a2cf1783 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/common/StringTools.java @@ -0,0 +1,15 @@ +package com.sbaars.adventofcode.common; + +import java.util.stream.Collectors; + +public class StringTools { + public static String removeAll(String str, String remove) { + var arr = new IntArray(str.chars()); + remove.chars().forEach(arr::removeElement); + return arr.stream().mapToObj(Character::toString).collect(Collectors.joining()); + } + + public static boolean charSubset(String a, String b){ + return a.chars().allMatch(c -> b.chars().anyMatch(d -> d == c)); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/common/Tree.java b/src/main/java/com/sbaars/adventofcode/common/Tree.java new file mode 100644 index 00000000..d7e429ef --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/common/Tree.java @@ -0,0 +1,38 @@ +package com.sbaars.adventofcode.common; + +import java.util.ArrayList; +import java.util.List; + + +public class Tree<T> { + public enum TreeTraversal {CONTINUE, DOWN, UP} + private final Node<T> rootNode; + + public Tree(T rootNodeData) { + this.rootNode = new Node<T>(rootNodeData); + } + +// public Tree(Function<T, Pair<TreeTraversal, >> func, Stream<T> things) { +// +// } + + private class Node<T> { + final T data; + final List<Node> children; + final Node parent; + + public Node(T data, List<Node> children, Node parent) { + this.data = data; + this.children = children; + this.parent = parent; + } + + public Node(T data, List<Node> children) { + this(data, children, null); + } + + public Node(T data) { + this(data, new ArrayList<>()); + } + } +} diff --git a/src/main/java/com/sbaars/adventofcode/common/grid/CharGrid.java b/src/main/java/com/sbaars/adventofcode/common/grid/CharGrid.java new file mode 100644 index 00000000..7b4016e4 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/common/grid/CharGrid.java @@ -0,0 +1,48 @@ +package com.sbaars.adventofcode.common.grid; + +import java.util.Arrays; +import java.util.stream.IntStream; + +public class CharGrid implements Grid { + public char[][] grid; + + public CharGrid(char[][] grid) { + this.grid = grid; + } + + public CharGrid(String s) { + grid = Arrays.stream(s.split("\n")).map(String::toCharArray).toArray(char[][]::new); + } + + public int countChar(char... c) { + return Math.toIntExact(iterate().filter(e -> new String(c).chars().anyMatch(i -> i == e)).count()); + } + + public IntStream iterate() { + return Arrays.stream(grid).map(String::new).flatMapToInt(String::chars); + } + + public CharGrid copy() { + return new CharGrid(Arrays.stream(grid).map(char[]::clone).toArray(char[][]::new)); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + CharGrid charGrid = (CharGrid) o; + return Arrays.deepEquals(grid, charGrid.grid); + } + + @Override + public int hashCode() { + return Arrays.deepHashCode(grid); + } + + @Override + public String toString(){ + StringBuilder res = new StringBuilder(); + for(char[] nums : grid) res.append(new String(nums)).append("\n"); + return res.toString(); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/common/grid/Coordinates.java b/src/main/java/com/sbaars/adventofcode/common/grid/Coordinates.java new file mode 100644 index 00000000..055df527 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/common/grid/Coordinates.java @@ -0,0 +1,79 @@ +package com.sbaars.adventofcode.common.grid; + +import static com.sbaars.adventofcode.common.Day.DEFAULT_DELIMITER; +import static java.lang.Math.abs; + +import java.awt.*; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; +import java.util.function.UnaryOperator; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class Coordinates { + public final Set<Point> coords; + + public Coordinates(Set<Point> c) { + this.coords = c; + } + + public Coordinates(Stream<Point> c) { + this.coords = c.collect(Collectors.toSet()); + } + + public Coordinates(String s){ + this(s, DEFAULT_DELIMITER, ","); + } + + public Coordinates(String s, String delimiter, String coordDelimiter) { + this.coords = Arrays.stream(s.split(delimiter)).map(e -> e.split(coordDelimiter)).map(e -> new Point(Integer.parseInt(e[0]), Integer.parseInt(e[1]))).collect(Collectors.toSet()); + } + + public Coordinates() { + coords = new HashSet<>(); + } + + public Point add(Point a){ + coords.add(a); + return a; + } + + public Coordinates transform(UnaryOperator<Point> f){ + return new Coordinates(stream().map(f)); + } + + public Stream<Point> stream(){ + return coords.stream(); + } + + public NumGrid toGrid(){ + NumGrid g = new NumGrid(new long[sizeY()+1][sizeX()+1]); + int minX = stream().mapToInt(e -> e.x).min().getAsInt(); + int minY = stream().mapToInt(e -> e.y).min().getAsInt(); + coords.stream().map(e -> new Point(e.y-minY, e.x-minX)).forEach(e -> g.set(e, 1L)); + return g; + } + + private int sizeX() { + return stream().mapToInt(e -> e.x).max().getAsInt() + abs(stream().mapToInt(e -> e.x).min().getAsInt()); + } + + private int sizeY() { + return stream().mapToInt(e -> e.y).max().getAsInt() + abs(stream().mapToInt(e -> e.y).min().getAsInt()); + } + + public Coordinates mirrorX(){ + int sizeX = sizeX(); + return new Coordinates(coords.stream().map(p -> new Point(sizeX - p.x, p.y))); + } + + public Coordinates mirrorY(){ + int sizeY = sizeY(); + return new Coordinates(coords.stream().map(p -> new Point(p.x, sizeY - p.y))); + } + + public int size() { + return coords.size(); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/common/grid/Grid.java b/src/main/java/com/sbaars/adventofcode/common/grid/Grid.java new file mode 100644 index 00000000..13bf364d --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/common/grid/Grid.java @@ -0,0 +1,11 @@ +package com.sbaars.adventofcode.common.grid; + +import java.util.stream.IntStream; + +public interface Grid { + default int countChar(char... c) { + return Math.toIntExact(iterate().filter(e -> new String(c).chars().anyMatch(i -> i == e)).count()); + } + + IntStream iterate(); +} diff --git a/src/main/java/com/sbaars/adventofcode/common/grid/InfiniteGrid.java b/src/main/java/com/sbaars/adventofcode/common/grid/InfiniteGrid.java new file mode 100644 index 00000000..b2eb3613 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/common/grid/InfiniteGrid.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.common.grid; + +import java.awt.*; +import java.util.HashMap; +import java.util.Map; +import java.util.stream.IntStream; + +public class InfiniteGrid implements Grid { + final Map<Point, Character> grid = new HashMap<>(); + Point currentPos = new Point(0, 0); + + public InfiniteGrid(char[][] g) { + for (int i = 0; i < g.length; i++) { + for (int j = 0; j < g[0].length; j++) { + grid.put(new Point(j, i), g[i][j]); + } + } + } + + public IntStream iterate() { + return grid.values().stream().mapToInt(Character::getNumericValue); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/common/grid/NumGrid.java b/src/main/java/com/sbaars/adventofcode/common/grid/NumGrid.java new file mode 100644 index 00000000..41f4d47d --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/common/grid/NumGrid.java @@ -0,0 +1,153 @@ +package com.sbaars.adventofcode.common.grid; + +import java.awt.*; +import java.util.Arrays; +import java.util.stream.Collectors; +import java.util.stream.IntStream; +import java.util.stream.LongStream; +import java.util.stream.Stream; + +public class NumGrid implements Grid { + public long[][] grid; + + public NumGrid(String stringToParse, String lineDelimiter, String itemDelimiter) { + this.grid = numGrid(stringToParse, lineDelimiter, itemDelimiter); + } + + public NumGrid(String stringToParse) { + this(stringToParse, "\n", " "); + } + + public NumGrid(long[][] grid) { + this.grid = grid; + } + + private long[][] numGrid(String str, String lineDelimiter, String itemDelimiter) { + String[] lines = str.split(lineDelimiter); + long[][] res = new long[lines.length][]; + for(int i = 0; i<lines.length; i++){ + res[i] = Arrays.stream(lines[i].split(itemDelimiter)).map(String::trim).filter(e -> !e.isEmpty()).mapToLong(Long::parseLong).toArray(); + } + return res; + } + + public long count(long...n) { + return iterateLong().filter(e -> LongStream.of(n).anyMatch(i -> i == e)).count(); + } + + public long countExcept(long...n) { + return Math.toIntExact(iterateLong().filter(e -> LongStream.of(n).noneMatch(i -> i == e)).count()); + } + + public NumGrid mirrorX(){ + long[][] newGrid = new long[sizeX()][sizeY()]; + for(int i = 0; i<sizeX(); i++) { + for(int j = 0; j<sizeY(); j++) { + newGrid[i][sizeY()-j-1] = grid[i][j]; + } + } + grid = newGrid; + return this; + } + + public NumGrid mirrorY(){ + long[][] newGrid = new long[sizeX()][sizeY()]; + for(int i = 0; i<sizeX(); i++) { + for(int j = 0; j<sizeY(); j++) { + newGrid[sizeX()-i-1][j] = grid[i][j]; + } + } + grid = newGrid; + return this; + } + + public long sum() { + return iterateLong().sum(); + } + + public long sum(long...n) { + return iterateLong().filter(e -> LongStream.of(n).anyMatch(i -> i == e)).sum(); + } + + public long sumExcept(long...n) { + return iterateLong().filter(e -> LongStream.of(n).noneMatch(i -> i == e)).sum(); + } + + public boolean replace(long orig, long replacement){ + boolean changed = false; + for(int i = 0; i< grid.length; i++){ + for(int j = 0; j< grid[i].length; j++){ + if(grid[i][j] == orig){ + grid[i][j] = replacement; + changed = true; + } + } + } + return changed; + } + + public IntStream iterate() { + return LongStream.range(0, grid.length).flatMap(i -> LongStream.of(grid[Math.toIntExact(i)])).mapToInt(Math::toIntExact); + } + + public LongStream iterateLong() { + return LongStream.range(0, grid.length).flatMap(i -> LongStream.of(grid[Math.toIntExact(i)])); + } + + public Stream<Point> stream() { + return IntStream.range(0, grid.length).boxed().flatMap(x -> IntStream.range(0, grid[x].length).mapToObj(y -> new Point(x, y))); + } + + @Override + public String toString(){ + StringBuilder res = new StringBuilder(); + for(long[] nums : grid) res.append(LongStream.of(nums).mapToObj(Long::toString).collect(Collectors.joining(","))).append("\n"); + return res.toString(); + } + + public long get(Point p) { + if (p.x >= 0 && p.x < grid.length && p.y >= 0 && p.y < grid[0].length) { + return grid[p.x][p.y]; + } + return -1; + } + + /** + * The get method doesn't properly work with x and y positions, it assumes x=y and y=x. This one fixes that. + * Why not fix `get` you ask? Because I'm afraid it'll break earlier days. That's why. + */ + public long at(Point p) { + if (p.x >= 0 && p.x < grid[0].length && p.y >= 0 && p.y < grid.length) { + return grid[p.y][p.x]; + } + return -1; + } + + public long at(Point p, int or) { + if (p.x >= 0 && p.x < grid[0].length && p.y >= 0 && p.y < grid.length) { + return grid[p.y][p.x]; + } + return or; + } + + public int sizeX(){ + return grid.length; + } + + public int sizeY(){ + return grid[0].length; + } + + public void set(Point p, long i) { + if(get(p) == -1) throw new IllegalStateException("Trying to write to coordinate outside of grid: "+p+", "+i); + grid[p.x][p.y] = i; + } + + public void increment(Point p) { + increment(p, 1); + } + + public void increment(Point p, int n) { + set(p, get(p)+n); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/haskell/year20/HaskellDay2020.java b/src/main/java/com/sbaars/adventofcode/haskell/year20/HaskellDay2020.java new file mode 100644 index 00000000..d303347c --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/haskell/year20/HaskellDay2020.java @@ -0,0 +1,43 @@ +package com.sbaars.adventofcode.haskell.year20; + +import static java.util.Arrays.stream; +import static java.util.stream.Collectors.joining; + +import com.sbaars.adventofcode.year20.Day2020; +import java.util.List; +import java.util.stream.Collector; + +public abstract class HaskellDay2020 extends Day2020 { + protected HaskellDay2020(int day) { + super(day); + } + + protected Collector<CharSequence, ?, String> haskellList() { + return joining(", ", "[", "]"); + } + + protected String tuple(Object... elements) { + return stream(elements).map(Object::toString).collect(joining(", ", "(", ")")); + } + + protected String tup(Object a, Object b) { + return "(" + convert(a) + ", " + convert(b) + ")"; + } + + protected String convert(Object[] a) { + return stream(a).map(this::convert).collect(haskellList()); + } + + protected String convert(List<?> a) { + return a.stream().map(this::convert).collect(haskellList()); + } + + protected String convert(Object a) { + if (a instanceof Number) { + return a.toString(); + } else if (a instanceof Character) { + return "'" + a + "'"; + } + return "\"" + a + "\""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/haskell/year20/days/Day1.java b/src/main/java/com/sbaars/adventofcode/haskell/year20/days/Day1.java new file mode 100644 index 00000000..203e7ef3 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/haskell/year20/days/Day1.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.haskell.year20.days; + +import com.sbaars.adventofcode.haskell.year20.HaskellDay2020; + +public class Day1 extends HaskellDay2020 { + public Day1() { + super(1); + } + + public static void main(String[] args) { + new Day1().printParts(); + } + + @Override + public Object part1() { + return dayNumberStream().mapToObj(Long::toString).collect(haskellList()); + } + + @Override + public Object part2() { + return null; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/haskell/year20/days/Day10.java b/src/main/java/com/sbaars/adventofcode/haskell/year20/days/Day10.java new file mode 100644 index 00000000..2f46a4b1 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/haskell/year20/days/Day10.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.haskell.year20.days; + +import com.sbaars.adventofcode.haskell.year20.HaskellDay2020; + +public class Day10 extends HaskellDay2020 { + public Day10() { + super(10); + } + + public static void main(String[] args) { + new Day10().printParts(); + } + + @Override + public Object part1() { + return dayNumberStream().mapToObj(Long::toString).collect(haskellList()); + } + + @Override + public Object part2() { + return null; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/haskell/year20/days/Day11.java b/src/main/java/com/sbaars/adventofcode/haskell/year20/days/Day11.java new file mode 100644 index 00000000..e8feb3b6 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/haskell/year20/days/Day11.java @@ -0,0 +1,27 @@ +package com.sbaars.adventofcode.haskell.year20.days; + +import com.sbaars.adventofcode.haskell.year20.HaskellDay2020; +import java.util.Arrays; + +public class Day11 extends HaskellDay2020 { + public Day11() { + super(11); + } + + public static void main(String[] args) { + new Day11().printParts(); + } + + @Override + public Object part1() { + return Arrays.stream(dayGrid()).map(Arrays::toString) + .map(s -> s.replace(".", "False")) + .map(s -> s.replace("L", "True")) + .collect(haskellList()); + } + + @Override + public Object part2() { + return null; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/haskell/year20/days/Day2.java b/src/main/java/com/sbaars/adventofcode/haskell/year20/days/Day2.java new file mode 100644 index 00000000..fc8d19c3 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/haskell/year20/days/Day2.java @@ -0,0 +1,25 @@ +package com.sbaars.adventofcode.haskell.year20.days; + +import com.sbaars.adventofcode.haskell.year20.HaskellDay2020; + +public class Day2 extends HaskellDay2020 { + public Day2() { + super(2); + } + + public static void main(String[] args) { + new Day2().printParts(); + } + + @Override + public Object part1() { + return dayStream().map(com.sbaars.adventofcode.year20.days.Day2::mapPassword) + .map(p -> tuple(tup(p.lower(), p.higher()), p.character(), convert(p.password()))) + .collect(haskellList()); + } + + @Override + public Object part2() { + return null; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/haskell/year20/days/Day3.java b/src/main/java/com/sbaars/adventofcode/haskell/year20/days/Day3.java new file mode 100644 index 00000000..272bb76d --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/haskell/year20/days/Day3.java @@ -0,0 +1,27 @@ +package com.sbaars.adventofcode.haskell.year20.days; + +import com.sbaars.adventofcode.haskell.year20.HaskellDay2020; +import java.util.Arrays; + +public class Day3 extends HaskellDay2020 { + public Day3() { + super(3); + } + + public static void main(String[] args) { + new Day3().printParts(); + } + + @Override + public Object part1() { + return Arrays.stream(dayGrid()).map(Arrays::toString) + .map(s -> s.replace('.', '0')) + .map(s -> s.replace('#', '1')) + .collect(haskellList()); + } + + @Override + public Object part2() { + return null; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/haskell/year20/days/Day4.java b/src/main/java/com/sbaars/adventofcode/haskell/year20/days/Day4.java new file mode 100644 index 00000000..f7741b67 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/haskell/year20/days/Day4.java @@ -0,0 +1,30 @@ +package com.sbaars.adventofcode.haskell.year20.days; + +import com.sbaars.adventofcode.haskell.year20.HaskellDay2020; +import java.util.Arrays; + +public class Day4 extends HaskellDay2020 { + public Day4() { + super(4); + } + + public static void main(String[] args) { + new Day4().printParts(); + } + + @Override + public Object part1() { + String[][] passports = Arrays.stream(day().split("\n\n")) + .map(str -> str.replace("\n", " ")) + .map(str -> str.split(" ")).toArray(String[][]::new); + return Arrays.stream(passports).map(passport -> + Arrays.stream(passport).map(s -> s.split(":")) + .map(s -> tup(s[0], s[1])).collect(haskellList())) + .collect(haskellList()); + } + + @Override + public Object part2() { + return null; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/haskell/year20/days/Day5.java b/src/main/java/com/sbaars/adventofcode/haskell/year20/days/Day5.java new file mode 100644 index 00000000..9f17e2bf --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/haskell/year20/days/Day5.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.haskell.year20.days; + +import com.sbaars.adventofcode.haskell.year20.HaskellDay2020; + +public class Day5 extends HaskellDay2020 { + public Day5() { + super(5); + } + + public static void main(String[] args) { + new Day5().printParts(); + } + + @Override + public Object part1() { + return convert(dayStrings()); + } + + @Override + public Object part2() { + return null; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/haskell/year20/days/Day6.java b/src/main/java/com/sbaars/adventofcode/haskell/year20/days/Day6.java new file mode 100644 index 00000000..232292c4 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/haskell/year20/days/Day6.java @@ -0,0 +1,26 @@ +package com.sbaars.adventofcode.haskell.year20.days; + +import com.sbaars.adventofcode.haskell.year20.HaskellDay2020; +import java.util.Arrays; + +public class Day6 extends HaskellDay2020 { + public Day6() { + super(6); + } + + public static void main(String[] args) { + new Day6().printParts(); + } + + @Override + public Object part1() { + return Arrays.stream(day().split("\n\n")) + .map(i -> convert(i.split("\n"))) + .collect(haskellList()); + } + + @Override + public Object part2() { + return null; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/haskell/year20/days/Day7.java b/src/main/java/com/sbaars/adventofcode/haskell/year20/days/Day7.java new file mode 100644 index 00000000..94f1bf53 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/haskell/year20/days/Day7.java @@ -0,0 +1,33 @@ +package com.sbaars.adventofcode.haskell.year20.days; + +import static java.util.Arrays.stream; + +import com.sbaars.adventofcode.haskell.year20.HaskellDay2020; +import com.sbaars.adventofcode.year20.days.Day7.Item; +import com.sbaars.adventofcode.year20.days.Day7.Trade; + +public class Day7 extends HaskellDay2020 { + public Day7() { + super(7); + } + + public static void main(String[] args) { + new Day7().printParts(); + } + + @Override + public Object part1() { + return dayStream().filter(s -> !s.contains("no other bags")).map(Trade::new) + .map(t -> tuple(convert(t.input.item), stream(t.output).map(this::convertItem).collect(haskellList()))) + .collect(haskellList()); + } + + private String convertItem(Item i) { + return tup(i.amount, i.item); + } + + @Override + public Object part2() { + return null; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/haskell/year20/days/Day8.java b/src/main/java/com/sbaars/adventofcode/haskell/year20/days/Day8.java new file mode 100644 index 00000000..b116cc4a --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/haskell/year20/days/Day8.java @@ -0,0 +1,28 @@ +package com.sbaars.adventofcode.haskell.year20.days; + +import static java.util.Arrays.stream; + +import com.sbaars.adventofcode.haskell.year20.HaskellDay2020; +import com.sbaars.adventofcode.year20.gamepad.Gamepad; + +public class Day8 extends HaskellDay2020 { + public Day8() { + super(8); + } + + public static void main(String[] args) { + new Day8().printParts(); + } + + @Override + public Object part1() { + return stream(new Gamepad(dayStream()).getInstructions()) + .map(i -> tup(i.operation(), i.number())) + .collect(haskellList()); + } + + @Override + public Object part2() { + return null; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/haskell/year20/days/Day9.java b/src/main/java/com/sbaars/adventofcode/haskell/year20/days/Day9.java new file mode 100644 index 00000000..e10f996f --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/haskell/year20/days/Day9.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.haskell.year20.days; + +import com.sbaars.adventofcode.haskell.year20.HaskellDay2020; + +public class Day9 extends HaskellDay2020 { + public Day9() { + super(9); + } + + public static void main(String[] args) { + new Day9().printParts(); + } + + @Override + public Object part1() { + return dayNumberStream().mapToObj(Long::toString).collect(haskellList()); + } + + @Override + public Object part2() { + return null; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/haskell/year21/HaskellDay2021.java b/src/main/java/com/sbaars/adventofcode/haskell/year21/HaskellDay2021.java new file mode 100644 index 00000000..1661109a --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/haskell/year21/HaskellDay2021.java @@ -0,0 +1,43 @@ +package com.sbaars.adventofcode.haskell.year21; + +import static java.util.Arrays.stream; +import static java.util.stream.Collectors.joining; + +import com.sbaars.adventofcode.year21.Day2021; +import java.util.List; +import java.util.stream.Collector; + +public abstract class HaskellDay2021 extends Day2021 { + protected HaskellDay2021(int day) { + super(day); + } + + protected Collector<CharSequence, ?, String> haskellList() { + return joining(", ", "[", "]"); + } + + protected String tuple(Object... elements) { + return stream(elements).map(Object::toString).collect(joining(", ", "(", ")")); + } + + protected String tup(Object a, Object b) { + return "(" + convert(a) + ", " + convert(b) + ")"; + } + + protected String convert(Object[] a) { + return stream(a).map(this::convert).collect(haskellList()); + } + + protected String convert(List<?> a) { + return a.stream().map(this::convert).collect(haskellList()); + } + + protected String convert(Object a) { + if (a instanceof Number) { + return a.toString(); + } else if (a instanceof Character) { + return "'" + a + "'"; + } + return "\"" + a + "\""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/haskell/year21/days/Day1.java b/src/main/java/com/sbaars/adventofcode/haskell/year21/days/Day1.java new file mode 100644 index 00000000..893ff151 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/haskell/year21/days/Day1.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.haskell.year21.days; + +import com.sbaars.adventofcode.haskell.year21.HaskellDay2021; + +public class Day1 extends HaskellDay2021 { + public Day1() { + super(1); + } + + public static void main(String[] args) { + new Day1().printParts(); + } + + @Override + public Object part1() { + return dayNumberStream().mapToObj(Long::toString).collect(haskellList()); + } + + @Override + public Object part2() { + return null; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/template/Day1999.java b/src/main/java/com/sbaars/adventofcode/template/Day1999.java new file mode 100644 index 00000000..359be215 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/template/Day1999.java @@ -0,0 +1,9 @@ +package com.sbaars.adventofcode.template; + +import com.sbaars.adventofcode.common.Day; + +public abstract class Day1999 extends Day { + protected Day1999(int day) { + super(1999, day); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/template/Main.java b/src/main/java/com/sbaars/adventofcode/template/Main.java new file mode 100644 index 00000000..4f2d9c16 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/template/Main.java @@ -0,0 +1,16 @@ +package com.sbaars.adventofcode.template; + +import com.sbaars.adventofcode.common.Day; +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; + +public class Main { + public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException, IOException, InvocationTargetException, NoSuchMethodException { + for (int day = 1; day <= 25; day++) { + System.out.println("Day " + day + ":"); + Day instance = (Day) Class.forName("com.sbaars.adventofcode.year21.days.Day" + day).getDeclaredConstructor().newInstance(); + instance.printParts(); + System.out.println(); + } + } +} diff --git a/src/main/java/com/sbaars/adventofcode/template/days/Day1.java b/src/main/java/com/sbaars/adventofcode/template/days/Day1.java new file mode 100644 index 00000000..2f4cffe6 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/template/days/Day1.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.template.days; + +import com.sbaars.adventofcode.template.Day1999; + +public class Day1 extends Day1999 { + public Day1() { + super(1); + } + + public static void main(String[] args) { + new Day1().printParts(); + } + + @Override + public Object part1() { + String input = day(); + return input; + } + + @Override + public Object part2() { + return 0; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/template/days/Day10.java b/src/main/java/com/sbaars/adventofcode/template/days/Day10.java new file mode 100644 index 00000000..824ce8ef --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/template/days/Day10.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.template.days; + +import com.sbaars.adventofcode.template.Day1999; + +public class Day10 extends Day1999 { + public Day10() { + super(10); + } + + public static void main(String[] args) { + new Day10().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/template/days/Day11.java b/src/main/java/com/sbaars/adventofcode/template/days/Day11.java new file mode 100644 index 00000000..f5787930 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/template/days/Day11.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.template.days; + +import com.sbaars.adventofcode.template.Day1999; + +public class Day11 extends Day1999 { + public Day11() { + super(11); + } + + public static void main(String[] args) { + new Day11().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/template/days/Day12.java b/src/main/java/com/sbaars/adventofcode/template/days/Day12.java new file mode 100644 index 00000000..1eb3109a --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/template/days/Day12.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.template.days; + +import com.sbaars.adventofcode.template.Day1999; + +public class Day12 extends Day1999 { + public Day12() { + super(12); + } + + public static void main(String[] args) { + new Day12().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/template/days/Day13.java b/src/main/java/com/sbaars/adventofcode/template/days/Day13.java new file mode 100644 index 00000000..d3f4884d --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/template/days/Day13.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.template.days; + +import com.sbaars.adventofcode.template.Day1999; + +public class Day13 extends Day1999 { + public Day13() { + super(13); + } + + public static void main(String[] args) { + new Day13().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/template/days/Day14.java b/src/main/java/com/sbaars/adventofcode/template/days/Day14.java new file mode 100644 index 00000000..63050dd4 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/template/days/Day14.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.template.days; + +import com.sbaars.adventofcode.template.Day1999; + +public class Day14 extends Day1999 { + public Day14() { + super(14); + } + + public static void main(String[] args) { + new Day14().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/template/days/Day15.java b/src/main/java/com/sbaars/adventofcode/template/days/Day15.java new file mode 100644 index 00000000..951fd7d1 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/template/days/Day15.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.template.days; + +import com.sbaars.adventofcode.template.Day1999; + +public class Day15 extends Day1999 { + public Day15() { + super(15); + } + + public static void main(String[] args) { + new Day15().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/template/days/Day16.java b/src/main/java/com/sbaars/adventofcode/template/days/Day16.java new file mode 100644 index 00000000..32547836 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/template/days/Day16.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.template.days; + +import com.sbaars.adventofcode.template.Day1999; + +public class Day16 extends Day1999 { + + public Day16() { + super(16); + } + + public static void main(String[] args) { + new Day16().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/template/days/Day17.java b/src/main/java/com/sbaars/adventofcode/template/days/Day17.java new file mode 100644 index 00000000..53edcdf9 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/template/days/Day17.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.template.days; + +import com.sbaars.adventofcode.template.Day1999; + +public class Day17 extends Day1999 { + public Day17() { + super(17); + } + + public static void main(String[] args) { + new Day17().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/template/days/Day18.java b/src/main/java/com/sbaars/adventofcode/template/days/Day18.java new file mode 100644 index 00000000..e4a69d26 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/template/days/Day18.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.template.days; + +import com.sbaars.adventofcode.template.Day1999; + +public class Day18 extends Day1999 { + public Day18() { + super(18); + } + + public static void main(String[] args) { + new Day18().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/template/days/Day19.java b/src/main/java/com/sbaars/adventofcode/template/days/Day19.java new file mode 100644 index 00000000..0831a8db --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/template/days/Day19.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.template.days; + +import com.sbaars.adventofcode.template.Day1999; + +public class Day19 extends Day1999 { + + public Day19() { + super(19); + } + + public static void main(String[] args) { + new Day19().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/template/days/Day2.java b/src/main/java/com/sbaars/adventofcode/template/days/Day2.java new file mode 100644 index 00000000..e0affaeb --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/template/days/Day2.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.template.days; + +import com.sbaars.adventofcode.template.Day1999; + +public class Day2 extends Day1999 { + public Day2() { + super(2); + } + + public static void main(String[] args) { + new Day2().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/template/days/Day20.java b/src/main/java/com/sbaars/adventofcode/template/days/Day20.java new file mode 100644 index 00000000..de403ed4 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/template/days/Day20.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.template.days; + +import com.sbaars.adventofcode.template.Day1999; + +public class Day20 extends Day1999 { + public Day20() { + super(20); + } + + public static void main(String[] args) { + new Day20().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/template/days/Day21.java b/src/main/java/com/sbaars/adventofcode/template/days/Day21.java new file mode 100644 index 00000000..2ab6fb2c --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/template/days/Day21.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.template.days; + +import com.sbaars.adventofcode.template.Day1999; + +public class Day21 extends Day1999 { + public Day21() { + super(21); + } + + public static void main(String[] args) { + new Day21().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/template/days/Day22.java b/src/main/java/com/sbaars/adventofcode/template/days/Day22.java new file mode 100644 index 00000000..f1f9b6cc --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/template/days/Day22.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.template.days; + +import com.sbaars.adventofcode.template.Day1999; + +public class Day22 extends Day1999 { + public Day22() { + super(22); + } + + public static void main(String[] args) { + new Day22().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/template/days/Day23.java b/src/main/java/com/sbaars/adventofcode/template/days/Day23.java new file mode 100644 index 00000000..d7c0e53b --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/template/days/Day23.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.template.days; + +import com.sbaars.adventofcode.template.Day1999; + +public class Day23 extends Day1999 { + public Day23() { + super(23); + } + + public static void main(String[] args) { + new Day23().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/template/days/Day24.java b/src/main/java/com/sbaars/adventofcode/template/days/Day24.java new file mode 100644 index 00000000..ffbfdbc3 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/template/days/Day24.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.template.days; + +import com.sbaars.adventofcode.template.Day1999; + +public class Day24 extends Day1999 { + + public Day24() { + super(24); + } + + public static void main(String[] args) { + new Day24().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/template/days/Day25.java b/src/main/java/com/sbaars/adventofcode/template/days/Day25.java new file mode 100644 index 00000000..b148ed74 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/template/days/Day25.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.template.days; + +import com.sbaars.adventofcode.template.Day1999; + +public class Day25 extends Day1999 { + public Day25() { + super(25); + } + + public static void main(String[] args) { + new Day25().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/template/days/Day3.java b/src/main/java/com/sbaars/adventofcode/template/days/Day3.java new file mode 100644 index 00000000..49aefa22 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/template/days/Day3.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.template.days; + +import com.sbaars.adventofcode.template.Day1999; + +public class Day3 extends Day1999 { + public Day3() { + super(3); + } + + public static void main(String[] args) { + new Day3().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/template/days/Day4.java b/src/main/java/com/sbaars/adventofcode/template/days/Day4.java new file mode 100644 index 00000000..36512896 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/template/days/Day4.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.template.days; + +import com.sbaars.adventofcode.template.Day1999; + +public class Day4 extends Day1999 { + + public Day4() { + super(4); + } + + public static void main(String[] args) { + new Day4().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/template/days/Day5.java b/src/main/java/com/sbaars/adventofcode/template/days/Day5.java new file mode 100644 index 00000000..fb73e5f2 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/template/days/Day5.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.template.days; + +import com.sbaars.adventofcode.template.Day1999; + +public class Day5 extends Day1999 { + + public Day5() { + super(5); + } + + public static void main(String[] args) { + new Day5().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/template/days/Day6.java b/src/main/java/com/sbaars/adventofcode/template/days/Day6.java new file mode 100644 index 00000000..e5b707f4 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/template/days/Day6.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.template.days; + +import com.sbaars.adventofcode.template.Day1999; + +public class Day6 extends Day1999 { + + public Day6() { + super(6); + } + + public static void main(String[] args) { + new Day6().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/template/days/Day7.java b/src/main/java/com/sbaars/adventofcode/template/days/Day7.java new file mode 100644 index 00000000..81058557 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/template/days/Day7.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.template.days; + +import com.sbaars.adventofcode.template.Day1999; + +public class Day7 extends Day1999 { + + public Day7() { + super(7); + } + + public static void main(String[] args) { + new Day7().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/template/days/Day8.java b/src/main/java/com/sbaars/adventofcode/template/days/Day8.java new file mode 100644 index 00000000..639b12fe --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/template/days/Day8.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.template.days; + +import com.sbaars.adventofcode.template.Day1999; + +public class Day8 extends Day1999 { + + public Day8() { + super(8); + } + + public static void main(String[] args) { + new Day8().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/template/days/Day9.java b/src/main/java/com/sbaars/adventofcode/template/days/Day9.java new file mode 100644 index 00000000..90819940 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/template/days/Day9.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.template.days; + +import com.sbaars.adventofcode.template.Day1999; + +public class Day9 extends Day1999 { + public Day9() { + super(9); + } + + public static void main(String[] args) { + new Day9().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/util/FetchInput.java b/src/main/java/com/sbaars/adventofcode/util/FetchInput.java new file mode 100644 index 00000000..3f10ceff --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/util/FetchInput.java @@ -0,0 +1,110 @@ +package com.sbaars.adventofcode.util; + +import org.apache.commons.io.FileUtils; +import org.htmlcleaner.CleanerProperties; +import org.htmlcleaner.DomSerializer; +import org.htmlcleaner.HtmlCleaner; +import org.htmlcleaner.TagNode; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +import javax.xml.xpath.XPath; +import javax.xml.xpath.XPathConstants; +import javax.xml.xpath.XPathFactory; +import java.io.File; +import java.io.IOException; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.util.List; +import java.util.stream.IntStream; + +public class FetchInput { + private final HttpClient client; + + public FetchInput() { + this.client = WebClient.getClient(); + } + + public static void main(String[] args) { + new FetchInput().retrieveDay("25", "2021"); + } + + private void retrieveDay(String day, String year) { + retrieveInput(day, year); + retrieveExamples(day, year); + } + + public void retrieveExamples(String day, String year) { + var matches = getMatchesByXpath(doRequest(year + "/day/" + day), "//pre/code"); + for (int i = 0; i < matches.size(); i++) { + File file = getFile(day + "-" + (i + 1), year + "-examples"); + file.getParentFile().mkdirs(); + if (!file.exists()) { + writeFile(file, clean(matches.get(i))); + } + } + } + + // Turn Windows line separators into *nix ones + private String clean(String file){ + return file + .replace("\r\n", "\n") + .replace(">", ">"); + } + + private void runForYear(String year) { + for (int day = 1; day <= 25; day++) { + retrieveDay(Integer.toString(day), year); + } + } + + public void retrieveInput(String day, String year) { + File dayFile = getFile(day, year); + dayFile.getParentFile().mkdirs(); + if (!dayFile.exists()) { + writeFile(dayFile, clean(doRequest(year + "/day/" + day + "/input"))); + } + } + + private File getFile(String day, String year) { + return getResource(year + "/day" + day + ".txt"); + } + + private void writeFile(File file, String content) { + try { + FileUtils.writeStringToFile(file, content); + } catch (IOException e) { + throw new IllegalStateException(e); + } + } + + private File getResource(String path) { + return new File("src/main/resources/" + path); + } + + private List<String> getMatchesByXpath(String html, String xpath) { + try { + TagNode tagNode = new HtmlCleaner().clean(html); + org.w3c.dom.Document doc = new DomSerializer(new CleanerProperties()).createDOM(tagNode); + + XPath xpathObj = XPathFactory.newInstance().newXPath(); + NodeList matches = (NodeList) xpathObj.evaluate(xpath, doc, XPathConstants.NODESET); + return IntStream.range(0, matches.getLength()).mapToObj(matches::item).map(Node::getTextContent).toList(); + } catch (Exception e) { + throw new IllegalStateException(e); + } + } + + private String doRequest(String path) { + try { + HttpRequest req = HttpRequest.newBuilder() + .uri(URI.create("https://adventofcode.com/" + path)) + .GET().build(); + return client.send(req, HttpResponse.BodyHandlers.ofString()).body(); + } catch (Exception e) { + throw new IllegalStateException(e); + } + } +} diff --git a/src/main/java/com/sbaars/adventofcode/util/Submit.java b/src/main/java/com/sbaars/adventofcode/util/Submit.java new file mode 100644 index 00000000..8bf7a917 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/util/Submit.java @@ -0,0 +1,37 @@ +package com.sbaars.adventofcode.util; + +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; + +public class Submit { + + private final HttpClient client; + + public Submit() { + this.client = WebClient.getClient(); + } + + public void submit(Object answer, int year, int day, int part){ + String res = doRequest(answer.toString(), year, day, part); + if(res.contains("<article>")){ + res = res.substring(res.indexOf("<article>"), res.indexOf("</article>")); + } + System.out.println(res); + } + + private String doRequest(String answer, int year, int day, int part) { + System.out.println("level="+part+"&answer="+answer); + try { + HttpRequest req = HttpRequest.newBuilder() + .uri(URI.create("https://adventofcode.com/"+year+"/day/"+day+"/answer")) + .header("Content-Type", "application/x-www-form-urlencoded") + .POST(HttpRequest.BodyPublishers.ofString("level="+part+"&answer="+answer)).build(); + System.out.println(req); + return client.send(req, HttpResponse.BodyHandlers.ofString()).body(); + } catch (Exception e) { + throw new IllegalStateException(e); + } + } +} diff --git a/src/main/java/com/sbaars/adventofcode/util/WebClient.java b/src/main/java/com/sbaars/adventofcode/util/WebClient.java new file mode 100644 index 00000000..6526e916 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/util/WebClient.java @@ -0,0 +1,33 @@ +package com.sbaars.adventofcode.util; + +import static com.sbaars.adventofcode.common.Day.getResourceAsString; + +import java.net.CookieHandler; +import java.net.CookieManager; +import java.net.HttpCookie; +import java.net.URI; +import java.net.URISyntaxException; +import java.net.http.HttpClient; +import java.time.Duration; + +public class WebClient { + public static HttpClient getClient() { + String session = getResourceAsString("APIKEY").trim(); + CookieHandler.setDefault(new CookieManager()); + + HttpCookie sessionCookie = new HttpCookie("session", session); + sessionCookie.setPath("/"); + sessionCookie.setVersion(0); + + try { + ((CookieManager) CookieHandler.getDefault()).getCookieStore().add(new URI("https://adventofcode.com"), sessionCookie); + } catch (URISyntaxException e) { + throw new IllegalStateException(e); + } + + return HttpClient.newBuilder() + .cookieHandler(CookieHandler.getDefault()) + .connectTimeout(Duration.ofSeconds(10)) + .build(); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year15/Day2015.java b/src/main/java/com/sbaars/adventofcode/year15/Day2015.java new file mode 100644 index 00000000..86dd403a --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year15/Day2015.java @@ -0,0 +1,9 @@ +package com.sbaars.adventofcode.year15; + +import com.sbaars.adventofcode.common.Day; + +public abstract class Day2015 extends Day { + protected Day2015(int day) { + super(2015, day); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year15/Main.java b/src/main/java/com/sbaars/adventofcode/year15/Main.java new file mode 100644 index 00000000..edb2a861 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year15/Main.java @@ -0,0 +1,17 @@ +package com.sbaars.adventofcode.year15; + +import com.sbaars.adventofcode.common.Day; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; + +public class Main { + public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException, IOException, InvocationTargetException, NoSuchMethodException { + for (int day = 1; day <= 25; day++) { + System.out.println("Day " + day + ":"); + Day instance = (Day) Class.forName("com.sbaars.adventofcode.year21.days.Day" + day).getDeclaredConstructor().newInstance(); + instance.printParts(); + System.out.println(); + } + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year15/days/Day1.java b/src/main/java/com/sbaars/adventofcode/year15/days/Day1.java new file mode 100644 index 00000000..f9563ecc --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year15/days/Day1.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year15.days; + +import com.sbaars.adventofcode.year15.Day2015; + +public class Day1 extends Day2015 { + public Day1() { + super(1); + } + + public static void main(String[] args) { + new Day1().printParts(); + } + + @Override + public Object part1() { + String input = day(); + return input; + } + + @Override + public Object part2() { + return 0; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year15/days/Day10.java b/src/main/java/com/sbaars/adventofcode/year15/days/Day10.java new file mode 100644 index 00000000..8f575ed9 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year15/days/Day10.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year15.days; + +import com.sbaars.adventofcode.year15.Day2015; + +public class Day10 extends Day2015 { + public Day10() { + super(10); + } + + public static void main(String[] args) { + new Day10().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year15/days/Day11.java b/src/main/java/com/sbaars/adventofcode/year15/days/Day11.java new file mode 100644 index 00000000..1a99c37f --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year15/days/Day11.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year15.days; + +import com.sbaars.adventofcode.year15.Day2015; + +public class Day11 extends Day2015 { + public Day11() { + super(11); + } + + public static void main(String[] args) { + new Day11().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year15/days/Day12.java b/src/main/java/com/sbaars/adventofcode/year15/days/Day12.java new file mode 100644 index 00000000..39ee1a63 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year15/days/Day12.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year15.days; + +import com.sbaars.adventofcode.year15.Day2015; + +public class Day12 extends Day2015 { + public Day12() { + super(12); + } + + public static void main(String[] args) { + new Day12().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year15/days/Day13.java b/src/main/java/com/sbaars/adventofcode/year15/days/Day13.java new file mode 100644 index 00000000..7feb42c8 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year15/days/Day13.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year15.days; + +import com.sbaars.adventofcode.year15.Day2015; + +public class Day13 extends Day2015 { + public Day13() { + super(13); + } + + public static void main(String[] args) { + new Day13().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year15/days/Day14.java b/src/main/java/com/sbaars/adventofcode/year15/days/Day14.java new file mode 100644 index 00000000..d3511576 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year15/days/Day14.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year15.days; + +import com.sbaars.adventofcode.year15.Day2015; + +public class Day14 extends Day2015 { + public Day14() { + super(14); + } + + public static void main(String[] args) { + new Day14().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year15/days/Day15.java b/src/main/java/com/sbaars/adventofcode/year15/days/Day15.java new file mode 100644 index 00000000..f61da8dc --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year15/days/Day15.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year15.days; + +import com.sbaars.adventofcode.year15.Day2015; + +public class Day15 extends Day2015 { + public Day15() { + super(15); + } + + public static void main(String[] args) { + new Day15().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year15/days/Day16.java b/src/main/java/com/sbaars/adventofcode/year15/days/Day16.java new file mode 100644 index 00000000..f270e96d --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year15/days/Day16.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year15.days; + +import com.sbaars.adventofcode.year15.Day2015; + +public class Day16 extends Day2015 { + + public Day16() { + super(16); + } + + public static void main(String[] args) { + new Day16().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year15/days/Day17.java b/src/main/java/com/sbaars/adventofcode/year15/days/Day17.java new file mode 100644 index 00000000..2068921c --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year15/days/Day17.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year15.days; + +import com.sbaars.adventofcode.year15.Day2015; + +public class Day17 extends Day2015 { + public Day17() { + super(17); + } + + public static void main(String[] args) { + new Day17().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year15/days/Day18.java b/src/main/java/com/sbaars/adventofcode/year15/days/Day18.java new file mode 100644 index 00000000..9fd88e21 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year15/days/Day18.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year15.days; + +import com.sbaars.adventofcode.year15.Day2015; + +public class Day18 extends Day2015 { + public Day18() { + super(18); + } + + public static void main(String[] args) { + new Day18().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year15/days/Day19.java b/src/main/java/com/sbaars/adventofcode/year15/days/Day19.java new file mode 100644 index 00000000..3c426792 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year15/days/Day19.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year15.days; + +import com.sbaars.adventofcode.year15.Day2015; + +public class Day19 extends Day2015 { + + public Day19() { + super(19); + } + + public static void main(String[] args) { + new Day19().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year15/days/Day2.java b/src/main/java/com/sbaars/adventofcode/year15/days/Day2.java new file mode 100644 index 00000000..e26a3e6d --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year15/days/Day2.java @@ -0,0 +1,74 @@ +package com.sbaars.adventofcode.year15.days; + +import com.sbaars.adventofcode.common.Day; +import com.sbaars.adventofcode.year15.Day2015; + +import java.util.function.ToLongFunction; + +import static com.sbaars.adventofcode.common.ReadsFormattedString.readString; + +public class Day2 extends Day2015 { + public Day2() { + super(2); + } + + public record Dimension (long l, long w, long h) { + private long[] smallestSides() { + if(l>=w && l>=h) return new long[]{w, h}; + if(w>=l && w>=h) return new long[]{l, h}; + return new long[]{l, w}; + } + + private long smallestArea() { + long[] s = smallestSides(); + return s[0] * s[1]; + } + + private long area() { + return 2*l*w + 2*w*h + 2*h*l; + } + + private long wrappingPaper() { + return smallestArea() + area(); + } + + private long sideDistance() { + long[] s = smallestSides(); + return s[0]*2 + s[1]*2; + } + + private long volume() { + return l*w*h; + } + + private long ribbon() { + return sideDistance() + volume(); + } + } + + public static void main(String[] args) { + Day d = new Day2(); + d.downloadIfNotDownloaded(); + d.printParts(); +// d.submitPart1(); +// d.submitPart2(); + } + + @Override + public Object part1() { + return getResult(Dimension::wrappingPaper); + } + + @Override + public Object part2() { + return getResult(Dimension::ribbon); + } + + private long getResult(ToLongFunction<Dimension> func) { + return dayStream() + .map(String::trim) + .map(s -> readString(s, "%nx%nx%n", Dimension.class)) + .mapToLong(func) + .sum(); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year15/days/Day20.java b/src/main/java/com/sbaars/adventofcode/year15/days/Day20.java new file mode 100644 index 00000000..5552b813 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year15/days/Day20.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year15.days; + +import com.sbaars.adventofcode.year15.Day2015; + +public class Day20 extends Day2015 { + public Day20() { + super(20); + } + + public static void main(String[] args) { + new Day20().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year15/days/Day21.java b/src/main/java/com/sbaars/adventofcode/year15/days/Day21.java new file mode 100644 index 00000000..9982b887 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year15/days/Day21.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year15.days; + +import com.sbaars.adventofcode.year15.Day2015; + +public class Day21 extends Day2015 { + public Day21() { + super(21); + } + + public static void main(String[] args) { + new Day21().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year15/days/Day22.java b/src/main/java/com/sbaars/adventofcode/year15/days/Day22.java new file mode 100644 index 00000000..e2d1ed48 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year15/days/Day22.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year15.days; + +import com.sbaars.adventofcode.year15.Day2015; + +public class Day22 extends Day2015 { + public Day22() { + super(22); + } + + public static void main(String[] args) { + new Day22().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year15/days/Day23.java b/src/main/java/com/sbaars/adventofcode/year15/days/Day23.java new file mode 100644 index 00000000..3f70a59d --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year15/days/Day23.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year15.days; + +import com.sbaars.adventofcode.year15.Day2015; + +public class Day23 extends Day2015 { + public Day23() { + super(23); + } + + public static void main(String[] args) { + new Day23().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year15/days/Day24.java b/src/main/java/com/sbaars/adventofcode/year15/days/Day24.java new file mode 100644 index 00000000..a7cd1785 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year15/days/Day24.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year15.days; + +import com.sbaars.adventofcode.year15.Day2015; + +public class Day24 extends Day2015 { + + public Day24() { + super(24); + } + + public static void main(String[] args) { + new Day24().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year15/days/Day25.java b/src/main/java/com/sbaars/adventofcode/year15/days/Day25.java new file mode 100644 index 00000000..866cc03b --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year15/days/Day25.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year15.days; + +import com.sbaars.adventofcode.year15.Day2015; + +public class Day25 extends Day2015 { + public Day25() { + super(25); + } + + public static void main(String[] args) { + new Day25().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year15/days/Day3.java b/src/main/java/com/sbaars/adventofcode/year15/days/Day3.java new file mode 100644 index 00000000..a75097b0 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year15/days/Day3.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year15.days; + +import com.sbaars.adventofcode.year15.Day2015; + +public class Day3 extends Day2015 { + public Day3() { + super(3); + } + + public static void main(String[] args) { + new Day3().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year15/days/Day4.java b/src/main/java/com/sbaars/adventofcode/year15/days/Day4.java new file mode 100644 index 00000000..f68fbad7 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year15/days/Day4.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year15.days; + +import com.sbaars.adventofcode.year15.Day2015; + +public class Day4 extends Day2015 { + + public Day4() { + super(4); + } + + public static void main(String[] args) { + new Day4().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year15/days/Day5.java b/src/main/java/com/sbaars/adventofcode/year15/days/Day5.java new file mode 100644 index 00000000..1555f13d --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year15/days/Day5.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year15.days; + +import com.sbaars.adventofcode.year15.Day2015; + +public class Day5 extends Day2015 { + + public Day5() { + super(5); + } + + public static void main(String[] args) { + new Day5().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year15/days/Day6.java b/src/main/java/com/sbaars/adventofcode/year15/days/Day6.java new file mode 100644 index 00000000..7ca8d71a --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year15/days/Day6.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year15.days; + +import com.sbaars.adventofcode.year15.Day2015; + +public class Day6 extends Day2015 { + + public Day6() { + super(6); + } + + public static void main(String[] args) { + new Day6().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year15/days/Day7.java b/src/main/java/com/sbaars/adventofcode/year15/days/Day7.java new file mode 100644 index 00000000..17ff7f97 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year15/days/Day7.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year15.days; + +import com.sbaars.adventofcode.year15.Day2015; + +public class Day7 extends Day2015 { + + public Day7() { + super(7); + } + + public static void main(String[] args) { + new Day7().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year15/days/Day8.java b/src/main/java/com/sbaars/adventofcode/year15/days/Day8.java new file mode 100644 index 00000000..3cea4cf9 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year15/days/Day8.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year15.days; + +import com.sbaars.adventofcode.year15.Day2015; + +public class Day8 extends Day2015 { + + public Day8() { + super(8); + } + + public static void main(String[] args) { + new Day8().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year15/days/Day9.java b/src/main/java/com/sbaars/adventofcode/year15/days/Day9.java new file mode 100644 index 00000000..49abd46a --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year15/days/Day9.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year15.days; + +import com.sbaars.adventofcode.year15.Day2015; + +public class Day9 extends Day2015 { + public Day9() { + super(9); + } + + public static void main(String[] args) { + new Day9().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year16/Day2016.java b/src/main/java/com/sbaars/adventofcode/year16/Day2016.java new file mode 100644 index 00000000..47aa4d4e --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year16/Day2016.java @@ -0,0 +1,9 @@ +package com.sbaars.adventofcode.year16; + +import com.sbaars.adventofcode.common.Day; + +public abstract class Day2016 extends Day { + protected Day2016(int day) { + super(2016, day); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year16/Main.java b/src/main/java/com/sbaars/adventofcode/year16/Main.java new file mode 100644 index 00000000..d9054aa7 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year16/Main.java @@ -0,0 +1,17 @@ +package com.sbaars.adventofcode.year16; + +import com.sbaars.adventofcode.common.Day; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; + +public class Main { + public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException, IOException, InvocationTargetException, NoSuchMethodException { + for (int day = 1; day <= 25; day++) { + System.out.println("Day " + day + ":"); + Day instance = (Day) Class.forName("com.sbaars.adventofcode.year21.days.Day" + day).getDeclaredConstructor().newInstance(); + instance.printParts(); + System.out.println(); + } + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year16/days/Day1.java b/src/main/java/com/sbaars/adventofcode/year16/days/Day1.java new file mode 100644 index 00000000..42d16f9e --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year16/days/Day1.java @@ -0,0 +1,63 @@ +package com.sbaars.adventofcode.year16.days; + +import com.sbaars.adventofcode.common.Day; +import com.sbaars.adventofcode.common.Direction; +import com.sbaars.adventofcode.year16.Day2016; + +import java.awt.*; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +public class Day1 extends Day2016 { + public Day1() { + super(1); + } + + public static void main(String[] args) { + Day d = new Day1(); + d.downloadIfNotDownloaded(); + d.printParts(); +// d.submitPart1(); + d.submitPart2(); + } + + record Move (boolean right, int dist) {} + + @Override + public Object part1() { + List<Move> moves = dayStream(", ") + .map(String::trim) + .map(s -> new Move(s.charAt(0) == 'R', Integer.parseInt(s.substring(1)))) + .toList(); + Point p = new Point(0, 0); + Direction dir = Direction.NORTH; + for(Move m : moves) { + dir = dir.turn(m.right); + p = dir.moveFix(p, m.dist); + } + return Math.abs(p.x) + Math.abs(p.y); + } + + @Override + public Object part2() { + List<Move> moves = dayStream(", ") + .map(String::trim) + .map(s -> new Move(s.charAt(0) == 'R', Integer.parseInt(s.substring(1)))) + .toList(); + Point p = new Point(0, 0); + Direction dir = Direction.NORTH; + Set<Point> visited = new HashSet<>(); + visited.add(p); + for(Move m : moves) { + dir = dir.turn(m.right); + for(int i = 0; i<m.dist; i++){ + p = dir.moveFix(p, 1); + if(!visited.add(p)){ + return Math.abs(p.x) + Math.abs(p.y); + } + } + } + return 0; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year16/days/Day10.java b/src/main/java/com/sbaars/adventofcode/year16/days/Day10.java new file mode 100644 index 00000000..1731aea3 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year16/days/Day10.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year16.days; + +import com.sbaars.adventofcode.year16.Day2016; + +public class Day10 extends Day2016 { + public Day10() { + super(10); + } + + public static void main(String[] args) { + new Day10().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year16/days/Day11.java b/src/main/java/com/sbaars/adventofcode/year16/days/Day11.java new file mode 100644 index 00000000..60532571 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year16/days/Day11.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year16.days; + +import com.sbaars.adventofcode.year16.Day2016; + +public class Day11 extends Day2016 { + public Day11() { + super(11); + } + + public static void main(String[] args) { + new Day11().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year16/days/Day12.java b/src/main/java/com/sbaars/adventofcode/year16/days/Day12.java new file mode 100644 index 00000000..5674f233 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year16/days/Day12.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year16.days; + +import com.sbaars.adventofcode.year16.Day2016; + +public class Day12 extends Day2016 { + public Day12() { + super(12); + } + + public static void main(String[] args) { + new Day12().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year16/days/Day13.java b/src/main/java/com/sbaars/adventofcode/year16/days/Day13.java new file mode 100644 index 00000000..e5ea168d --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year16/days/Day13.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year16.days; + +import com.sbaars.adventofcode.year16.Day2016; + +public class Day13 extends Day2016 { + public Day13() { + super(13); + } + + public static void main(String[] args) { + new Day13().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year16/days/Day14.java b/src/main/java/com/sbaars/adventofcode/year16/days/Day14.java new file mode 100644 index 00000000..2fcc5098 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year16/days/Day14.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year16.days; + +import com.sbaars.adventofcode.year16.Day2016; + +public class Day14 extends Day2016 { + public Day14() { + super(14); + } + + public static void main(String[] args) { + new Day14().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year16/days/Day15.java b/src/main/java/com/sbaars/adventofcode/year16/days/Day15.java new file mode 100644 index 00000000..bdf9e808 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year16/days/Day15.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year16.days; + +import com.sbaars.adventofcode.year16.Day2016; + +public class Day15 extends Day2016 { + public Day15() { + super(15); + } + + public static void main(String[] args) { + new Day15().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year16/days/Day16.java b/src/main/java/com/sbaars/adventofcode/year16/days/Day16.java new file mode 100644 index 00000000..41d88858 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year16/days/Day16.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year16.days; + +import com.sbaars.adventofcode.year16.Day2016; + +public class Day16 extends Day2016 { + + public Day16() { + super(16); + } + + public static void main(String[] args) { + new Day16().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year16/days/Day17.java b/src/main/java/com/sbaars/adventofcode/year16/days/Day17.java new file mode 100644 index 00000000..74cac66c --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year16/days/Day17.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year16.days; + +import com.sbaars.adventofcode.year16.Day2016; + +public class Day17 extends Day2016 { + public Day17() { + super(17); + } + + public static void main(String[] args) { + new Day17().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year16/days/Day18.java b/src/main/java/com/sbaars/adventofcode/year16/days/Day18.java new file mode 100644 index 00000000..02f2ef72 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year16/days/Day18.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year16.days; + +import com.sbaars.adventofcode.year16.Day2016; + +public class Day18 extends Day2016 { + public Day18() { + super(18); + } + + public static void main(String[] args) { + new Day18().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year16/days/Day19.java b/src/main/java/com/sbaars/adventofcode/year16/days/Day19.java new file mode 100644 index 00000000..f1dbfe9d --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year16/days/Day19.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year16.days; + +import com.sbaars.adventofcode.year16.Day2016; + +public class Day19 extends Day2016 { + + public Day19() { + super(19); + } + + public static void main(String[] args) { + new Day19().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year16/days/Day2.java b/src/main/java/com/sbaars/adventofcode/year16/days/Day2.java new file mode 100644 index 00000000..309ef82f --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year16/days/Day2.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year16.days; + +import com.sbaars.adventofcode.year16.Day2016; + +public class Day2 extends Day2016 { + public Day2() { + super(2); + } + + public static void main(String[] args) { + new Day2().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year16/days/Day20.java b/src/main/java/com/sbaars/adventofcode/year16/days/Day20.java new file mode 100644 index 00000000..12ed5e1a --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year16/days/Day20.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year16.days; + +import com.sbaars.adventofcode.year16.Day2016; + +public class Day20 extends Day2016 { + public Day20() { + super(20); + } + + public static void main(String[] args) { + new Day20().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year16/days/Day21.java b/src/main/java/com/sbaars/adventofcode/year16/days/Day21.java new file mode 100644 index 00000000..c50ba740 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year16/days/Day21.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year16.days; + +import com.sbaars.adventofcode.year16.Day2016; + +public class Day21 extends Day2016 { + public Day21() { + super(21); + } + + public static void main(String[] args) { + new Day21().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year16/days/Day22.java b/src/main/java/com/sbaars/adventofcode/year16/days/Day22.java new file mode 100644 index 00000000..44bf1c82 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year16/days/Day22.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year16.days; + +import com.sbaars.adventofcode.year16.Day2016; + +public class Day22 extends Day2016 { + public Day22() { + super(22); + } + + public static void main(String[] args) { + new Day22().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year16/days/Day23.java b/src/main/java/com/sbaars/adventofcode/year16/days/Day23.java new file mode 100644 index 00000000..3db99ba6 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year16/days/Day23.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year16.days; + +import com.sbaars.adventofcode.year16.Day2016; + +public class Day23 extends Day2016 { + public Day23() { + super(23); + } + + public static void main(String[] args) { + new Day23().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year16/days/Day24.java b/src/main/java/com/sbaars/adventofcode/year16/days/Day24.java new file mode 100644 index 00000000..42f45488 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year16/days/Day24.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year16.days; + +import com.sbaars.adventofcode.year16.Day2016; + +public class Day24 extends Day2016 { + + public Day24() { + super(24); + } + + public static void main(String[] args) { + new Day24().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year16/days/Day25.java b/src/main/java/com/sbaars/adventofcode/year16/days/Day25.java new file mode 100644 index 00000000..3ff2805a --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year16/days/Day25.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year16.days; + +import com.sbaars.adventofcode.year16.Day2016; + +public class Day25 extends Day2016 { + public Day25() { + super(25); + } + + public static void main(String[] args) { + new Day25().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year16/days/Day3.java b/src/main/java/com/sbaars/adventofcode/year16/days/Day3.java new file mode 100644 index 00000000..02b30a9a --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year16/days/Day3.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year16.days; + +import com.sbaars.adventofcode.year16.Day2016; + +public class Day3 extends Day2016 { + public Day3() { + super(3); + } + + public static void main(String[] args) { + new Day3().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year16/days/Day4.java b/src/main/java/com/sbaars/adventofcode/year16/days/Day4.java new file mode 100644 index 00000000..1ece155c --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year16/days/Day4.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year16.days; + +import com.sbaars.adventofcode.year16.Day2016; + +public class Day4 extends Day2016 { + + public Day4() { + super(4); + } + + public static void main(String[] args) { + new Day4().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year16/days/Day5.java b/src/main/java/com/sbaars/adventofcode/year16/days/Day5.java new file mode 100644 index 00000000..9bd089d2 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year16/days/Day5.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year16.days; + +import com.sbaars.adventofcode.year16.Day2016; + +public class Day5 extends Day2016 { + + public Day5() { + super(5); + } + + public static void main(String[] args) { + new Day5().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year16/days/Day6.java b/src/main/java/com/sbaars/adventofcode/year16/days/Day6.java new file mode 100644 index 00000000..2f570814 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year16/days/Day6.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year16.days; + +import com.sbaars.adventofcode.year16.Day2016; + +public class Day6 extends Day2016 { + + public Day6() { + super(6); + } + + public static void main(String[] args) { + new Day6().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year16/days/Day7.java b/src/main/java/com/sbaars/adventofcode/year16/days/Day7.java new file mode 100644 index 00000000..a7e95d4b --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year16/days/Day7.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year16.days; + +import com.sbaars.adventofcode.year16.Day2016; + +public class Day7 extends Day2016 { + + public Day7() { + super(7); + } + + public static void main(String[] args) { + new Day7().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year16/days/Day8.java b/src/main/java/com/sbaars/adventofcode/year16/days/Day8.java new file mode 100644 index 00000000..e48674d7 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year16/days/Day8.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year16.days; + +import com.sbaars.adventofcode.year16.Day2016; + +public class Day8 extends Day2016 { + + public Day8() { + super(8); + } + + public static void main(String[] args) { + new Day8().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year16/days/Day9.java b/src/main/java/com/sbaars/adventofcode/year16/days/Day9.java new file mode 100644 index 00000000..6d2f526d --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year16/days/Day9.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year16.days; + +import com.sbaars.adventofcode.year16.Day2016; + +public class Day9 extends Day2016 { + public Day9() { + super(9); + } + + public static void main(String[] args) { + new Day9().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year17/Day2017.java b/src/main/java/com/sbaars/adventofcode/year17/Day2017.java new file mode 100644 index 00000000..183c4120 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year17/Day2017.java @@ -0,0 +1,9 @@ +package com.sbaars.adventofcode.year17; + +import com.sbaars.adventofcode.common.Day; + +public abstract class Day2017 extends Day { + protected Day2017(int day) { + super(2017, day); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year17/Main.java b/src/main/java/com/sbaars/adventofcode/year17/Main.java new file mode 100644 index 00000000..21f993b5 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year17/Main.java @@ -0,0 +1,17 @@ +package com.sbaars.adventofcode.year17; + +import com.sbaars.adventofcode.common.Day; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; + +public class Main { + public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException, IOException, InvocationTargetException, NoSuchMethodException { + for (int day = 1; day <= 25; day++) { + System.out.println("Day " + day + ":"); + Day instance = (Day) Class.forName("com.sbaars.adventofcode.year21.days.Day" + day).getDeclaredConstructor().newInstance(); + instance.printParts(); + System.out.println(); + } + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year17/days/Day1.java b/src/main/java/com/sbaars/adventofcode/year17/days/Day1.java new file mode 100644 index 00000000..064225d7 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year17/days/Day1.java @@ -0,0 +1,36 @@ +package com.sbaars.adventofcode.year17.days; + +import com.sbaars.adventofcode.common.Day; +import com.sbaars.adventofcode.year17.Day2017; + +public class Day1 extends Day2017 { + public Day1() { + super(1); + } + + public static void main(String[] args) { + Day d = new Day1(); + d.downloadIfNotDownloaded(); + d.printParts(); + } + + @Override + public Object part1() { + long[] x = dayDigits(); + long sum = 0; + for(int i = 0; i<x.length; i++) { + if(x[i] == x[(i+1)%x.length]) sum+=x[i]; + } + return sum; + } + + @Override + public Object part2() { + long[] x = dayDigits(); + long sum = 0; + for(int i = 0; i<x.length; i++) { + if(x[i] == x[(i+x.length/2)%x.length]) sum+=x[i]; + } + return sum; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year17/days/Day10.java b/src/main/java/com/sbaars/adventofcode/year17/days/Day10.java new file mode 100644 index 00000000..f2b9bf59 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year17/days/Day10.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year17.days; + +import com.sbaars.adventofcode.year17.Day2017; + +public class Day10 extends Day2017 { + public Day10() { + super(10); + } + + public static void main(String[] args) { + new Day10().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year17/days/Day11.java b/src/main/java/com/sbaars/adventofcode/year17/days/Day11.java new file mode 100644 index 00000000..ea83277f --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year17/days/Day11.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year17.days; + +import com.sbaars.adventofcode.year17.Day2017; + +public class Day11 extends Day2017 { + public Day11() { + super(11); + } + + public static void main(String[] args) { + new Day11().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year17/days/Day12.java b/src/main/java/com/sbaars/adventofcode/year17/days/Day12.java new file mode 100644 index 00000000..0bb1f6b0 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year17/days/Day12.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year17.days; + +import com.sbaars.adventofcode.year17.Day2017; + +public class Day12 extends Day2017 { + public Day12() { + super(12); + } + + public static void main(String[] args) { + new Day12().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year17/days/Day13.java b/src/main/java/com/sbaars/adventofcode/year17/days/Day13.java new file mode 100644 index 00000000..91be9398 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year17/days/Day13.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year17.days; + +import com.sbaars.adventofcode.year17.Day2017; + +public class Day13 extends Day2017 { + public Day13() { + super(13); + } + + public static void main(String[] args) { + new Day13().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year17/days/Day14.java b/src/main/java/com/sbaars/adventofcode/year17/days/Day14.java new file mode 100644 index 00000000..7dc83c9c --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year17/days/Day14.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year17.days; + +import com.sbaars.adventofcode.year17.Day2017; + +public class Day14 extends Day2017 { + public Day14() { + super(14); + } + + public static void main(String[] args) { + new Day14().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year17/days/Day15.java b/src/main/java/com/sbaars/adventofcode/year17/days/Day15.java new file mode 100644 index 00000000..b65f1b27 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year17/days/Day15.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year17.days; + +import com.sbaars.adventofcode.year17.Day2017; + +public class Day15 extends Day2017 { + public Day15() { + super(15); + } + + public static void main(String[] args) { + new Day15().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year17/days/Day16.java b/src/main/java/com/sbaars/adventofcode/year17/days/Day16.java new file mode 100644 index 00000000..cd8e05a8 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year17/days/Day16.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year17.days; + +import com.sbaars.adventofcode.year17.Day2017; + +public class Day16 extends Day2017 { + + public Day16() { + super(16); + } + + public static void main(String[] args) { + new Day16().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year17/days/Day17.java b/src/main/java/com/sbaars/adventofcode/year17/days/Day17.java new file mode 100644 index 00000000..ae76c6d7 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year17/days/Day17.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year17.days; + +import com.sbaars.adventofcode.year17.Day2017; + +public class Day17 extends Day2017 { + public Day17() { + super(17); + } + + public static void main(String[] args) { + new Day17().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year17/days/Day18.java b/src/main/java/com/sbaars/adventofcode/year17/days/Day18.java new file mode 100644 index 00000000..18784cd2 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year17/days/Day18.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year17.days; + +import com.sbaars.adventofcode.year17.Day2017; + +public class Day18 extends Day2017 { + public Day18() { + super(18); + } + + public static void main(String[] args) { + new Day18().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year17/days/Day19.java b/src/main/java/com/sbaars/adventofcode/year17/days/Day19.java new file mode 100644 index 00000000..2a12d394 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year17/days/Day19.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year17.days; + +import com.sbaars.adventofcode.year17.Day2017; + +public class Day19 extends Day2017 { + + public Day19() { + super(19); + } + + public static void main(String[] args) { + new Day19().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year17/days/Day2.java b/src/main/java/com/sbaars/adventofcode/year17/days/Day2.java new file mode 100644 index 00000000..e5958925 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year17/days/Day2.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year17.days; + +import com.sbaars.adventofcode.year17.Day2017; + +public class Day2 extends Day2017 { + public Day2() { + super(2); + } + + public static void main(String[] args) { + new Day2().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year17/days/Day20.java b/src/main/java/com/sbaars/adventofcode/year17/days/Day20.java new file mode 100644 index 00000000..96e5201e --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year17/days/Day20.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year17.days; + +import com.sbaars.adventofcode.year17.Day2017; + +public class Day20 extends Day2017 { + public Day20() { + super(20); + } + + public static void main(String[] args) { + new Day20().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year17/days/Day21.java b/src/main/java/com/sbaars/adventofcode/year17/days/Day21.java new file mode 100644 index 00000000..dc64d936 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year17/days/Day21.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year17.days; + +import com.sbaars.adventofcode.year17.Day2017; + +public class Day21 extends Day2017 { + public Day21() { + super(21); + } + + public static void main(String[] args) { + new Day21().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year17/days/Day22.java b/src/main/java/com/sbaars/adventofcode/year17/days/Day22.java new file mode 100644 index 00000000..ff097d85 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year17/days/Day22.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year17.days; + +import com.sbaars.adventofcode.year17.Day2017; + +public class Day22 extends Day2017 { + public Day22() { + super(22); + } + + public static void main(String[] args) { + new Day22().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year17/days/Day23.java b/src/main/java/com/sbaars/adventofcode/year17/days/Day23.java new file mode 100644 index 00000000..a0ca0dd9 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year17/days/Day23.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year17.days; + +import com.sbaars.adventofcode.year17.Day2017; + +public class Day23 extends Day2017 { + public Day23() { + super(23); + } + + public static void main(String[] args) { + new Day23().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year17/days/Day24.java b/src/main/java/com/sbaars/adventofcode/year17/days/Day24.java new file mode 100644 index 00000000..1b2401e0 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year17/days/Day24.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year17.days; + +import com.sbaars.adventofcode.year17.Day2017; + +public class Day24 extends Day2017 { + + public Day24() { + super(24); + } + + public static void main(String[] args) { + new Day24().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year17/days/Day25.java b/src/main/java/com/sbaars/adventofcode/year17/days/Day25.java new file mode 100644 index 00000000..32ab75e5 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year17/days/Day25.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year17.days; + +import com.sbaars.adventofcode.year17.Day2017; + +public class Day25 extends Day2017 { + public Day25() { + super(25); + } + + public static void main(String[] args) { + new Day25().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year17/days/Day3.java b/src/main/java/com/sbaars/adventofcode/year17/days/Day3.java new file mode 100644 index 00000000..a0d0b6d8 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year17/days/Day3.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year17.days; + +import com.sbaars.adventofcode.year17.Day2017; + +public class Day3 extends Day2017 { + public Day3() { + super(3); + } + + public static void main(String[] args) { + new Day3().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year17/days/Day4.java b/src/main/java/com/sbaars/adventofcode/year17/days/Day4.java new file mode 100644 index 00000000..4f2fdfaf --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year17/days/Day4.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year17.days; + +import com.sbaars.adventofcode.year17.Day2017; + +public class Day4 extends Day2017 { + + public Day4() { + super(4); + } + + public static void main(String[] args) { + new Day4().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year17/days/Day5.java b/src/main/java/com/sbaars/adventofcode/year17/days/Day5.java new file mode 100644 index 00000000..65d545ef --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year17/days/Day5.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year17.days; + +import com.sbaars.adventofcode.year17.Day2017; + +public class Day5 extends Day2017 { + + public Day5() { + super(5); + } + + public static void main(String[] args) { + new Day5().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year17/days/Day6.java b/src/main/java/com/sbaars/adventofcode/year17/days/Day6.java new file mode 100644 index 00000000..10e79881 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year17/days/Day6.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year17.days; + +import com.sbaars.adventofcode.year17.Day2017; + +public class Day6 extends Day2017 { + + public Day6() { + super(6); + } + + public static void main(String[] args) { + new Day6().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year17/days/Day7.java b/src/main/java/com/sbaars/adventofcode/year17/days/Day7.java new file mode 100644 index 00000000..f428dcf8 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year17/days/Day7.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year17.days; + +import com.sbaars.adventofcode.year17.Day2017; + +public class Day7 extends Day2017 { + + public Day7() { + super(7); + } + + public static void main(String[] args) { + new Day7().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year17/days/Day8.java b/src/main/java/com/sbaars/adventofcode/year17/days/Day8.java new file mode 100644 index 00000000..bb64cb6e --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year17/days/Day8.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year17.days; + +import com.sbaars.adventofcode.year17.Day2017; + +public class Day8 extends Day2017 { + + public Day8() { + super(8); + } + + public static void main(String[] args) { + new Day8().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year17/days/Day9.java b/src/main/java/com/sbaars/adventofcode/year17/days/Day9.java new file mode 100644 index 00000000..e735c45a --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year17/days/Day9.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year17.days; + +import com.sbaars.adventofcode.year17.Day2017; + +public class Day9 extends Day2017 { + public Day9() { + super(9); + } + + public static void main(String[] args) { + new Day9().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year18/Day2018.java b/src/main/java/com/sbaars/adventofcode/year18/Day2018.java new file mode 100644 index 00000000..b2aa6905 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year18/Day2018.java @@ -0,0 +1,9 @@ +package com.sbaars.adventofcode.year18; + +import com.sbaars.adventofcode.common.Day; + +public abstract class Day2018 extends Day { + protected Day2018(int day) { + super(2018, day); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year18/Main.java b/src/main/java/com/sbaars/adventofcode/year18/Main.java new file mode 100644 index 00000000..bd210152 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year18/Main.java @@ -0,0 +1,16 @@ +package com.sbaars.adventofcode.year18; + +import com.sbaars.adventofcode.common.Day; +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; + +public class Main { + public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException, IOException, InvocationTargetException, NoSuchMethodException { + for (int day = 1; day <= 25; day++) { + System.out.println("Day " + day + ":"); + Day instance = (Day) Class.forName("com.sbaars.adventofcode.year18.days.Day" + day).getDeclaredConstructor().newInstance(); + instance.printParts(); + System.out.println(); + } + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year18/days/Day1.java b/src/main/java/com/sbaars/adventofcode/year18/days/Day1.java new file mode 100644 index 00000000..4aab5186 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year18/days/Day1.java @@ -0,0 +1,33 @@ +package com.sbaars.adventofcode.year18.days; + +import com.sbaars.adventofcode.year18.Day2018; +import java.util.HashSet; +import java.util.Set; + +public class Day1 extends Day2018 { + public Day1() { + super(1); + } + + public static void main(String[] args) { + new Day1().printParts(); + } + + @Override + public Object part1() { + return dayNumberStream().sum(); + } + + @Override + public Object part2() { + Set<Long> encountered = new HashSet<>(); + long[] ns = dayNumbers(); + long acc = 0; + while (true) { + for (long n : ns) { + acc += n; + if (!encountered.add(acc)) return acc; + } + } + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year18/days/Day10.java b/src/main/java/com/sbaars/adventofcode/year18/days/Day10.java new file mode 100644 index 00000000..dffaf094 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year18/days/Day10.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year18.days; + +import com.sbaars.adventofcode.year18.Day2018; + +public class Day10 extends Day2018 { + public Day10() { + super(10); + } + + public static void main(String[] args) { + new Day10().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year18/days/Day11.java b/src/main/java/com/sbaars/adventofcode/year18/days/Day11.java new file mode 100644 index 00000000..4b83e73f --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year18/days/Day11.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year18.days; + +import com.sbaars.adventofcode.year18.Day2018; + +public class Day11 extends Day2018 { + public Day11() { + super(11); + } + + public static void main(String[] args) { + new Day11().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year18/days/Day12.java b/src/main/java/com/sbaars/adventofcode/year18/days/Day12.java new file mode 100644 index 00000000..9f5622e7 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year18/days/Day12.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year18.days; + +import com.sbaars.adventofcode.year18.Day2018; + +public class Day12 extends Day2018 { + public Day12() { + super(12); + } + + public static void main(String[] args) { + new Day12().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year18/days/Day13.java b/src/main/java/com/sbaars/adventofcode/year18/days/Day13.java new file mode 100644 index 00000000..5d619f42 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year18/days/Day13.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year18.days; + +import com.sbaars.adventofcode.year18.Day2018; + +public class Day13 extends Day2018 { + public Day13() { + super(13); + } + + public static void main(String[] args) { + new Day13().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year18/days/Day14.java b/src/main/java/com/sbaars/adventofcode/year18/days/Day14.java new file mode 100644 index 00000000..5f81b7f0 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year18/days/Day14.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year18.days; + +import com.sbaars.adventofcode.year18.Day2018; + +public class Day14 extends Day2018 { + public Day14() { + super(14); + } + + public static void main(String[] args) { + new Day14().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year18/days/Day15.java b/src/main/java/com/sbaars/adventofcode/year18/days/Day15.java new file mode 100644 index 00000000..c0f5e2c9 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year18/days/Day15.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year18.days; + +import com.sbaars.adventofcode.year18.Day2018; + +public class Day15 extends Day2018 { + public Day15() { + super(15); + } + + public static void main(String[] args) { + new Day15().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year18/days/Day16.java b/src/main/java/com/sbaars/adventofcode/year18/days/Day16.java new file mode 100644 index 00000000..df76fc75 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year18/days/Day16.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year18.days; + +import com.sbaars.adventofcode.year18.Day2018; + +public class Day16 extends Day2018 { + + public Day16() { + super(16); + } + + public static void main(String[] args) { + new Day16().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year18/days/Day17.java b/src/main/java/com/sbaars/adventofcode/year18/days/Day17.java new file mode 100644 index 00000000..dc146b58 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year18/days/Day17.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year18.days; + +import com.sbaars.adventofcode.year18.Day2018; + +public class Day17 extends Day2018 { + public Day17() { + super(17); + } + + public static void main(String[] args) { + new Day17().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year18/days/Day18.java b/src/main/java/com/sbaars/adventofcode/year18/days/Day18.java new file mode 100644 index 00000000..a9978127 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year18/days/Day18.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year18.days; + +import com.sbaars.adventofcode.year18.Day2018; + +public class Day18 extends Day2018 { + public Day18() { + super(18); + } + + public static void main(String[] args) { + new Day18().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year18/days/Day19.java b/src/main/java/com/sbaars/adventofcode/year18/days/Day19.java new file mode 100644 index 00000000..315683a8 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year18/days/Day19.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year18.days; + +import com.sbaars.adventofcode.year18.Day2018; + +public class Day19 extends Day2018 { + + public Day19() { + super(19); + } + + public static void main(String[] args) { + new Day19().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year18/days/Day2.java b/src/main/java/com/sbaars/adventofcode/year18/days/Day2.java new file mode 100644 index 00000000..266222e6 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year18/days/Day2.java @@ -0,0 +1,59 @@ +package com.sbaars.adventofcode.year18.days; + +import static java.util.Optional.empty; + +import com.google.common.collect.Sets; +import com.sbaars.adventofcode.year18.Day2018; +import java.util.List; +import java.util.Optional; +import java.util.Set; +import java.util.stream.Collectors; + +public class Day2 extends Day2018 { + public Day2() { + super(2); + } + + public static void main(String[] args) { + new Day2().submitPart2(); + } + + @Override + public Object part1() { + int two = 0, three = 0; + String[] input = dayStrings(); + for(String i : input){ + List<Integer> counts = i.chars().mapToObj(c -> (i+"_").split(Character.toString(c)).length - 1).toList(); + if(counts.contains(2)) { + two++; + } + if(counts.contains(3)) { + three++; + } + } + return two * three; + } + + @Override + public Object part2() { + var com = Sets.combinations(dayStream().collect(Collectors.toSet()), 2); + return com.stream().map(this::compareStrings).filter(Optional::isPresent).map(Optional::get).findFirst().get(); + } + + private Optional<String> compareStrings(Set<String> str) { + var it = str.iterator(); + String str1 = it.next(), str2 = it.next(); + if (str1.length() != str2.length() || str1.equals(str2)) return empty(); + int differences = 0; + int diffIndex = -1; + for (int i = 0; i < str1.length(); i++) { + if(str1.charAt(i) != str2.charAt(i)) { + diffIndex = i; + if (++differences > 1) { + return empty(); + } + } + } + return Optional.of(new StringBuilder(str1).deleteCharAt(diffIndex).toString()); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year18/days/Day20.java b/src/main/java/com/sbaars/adventofcode/year18/days/Day20.java new file mode 100644 index 00000000..cd28cd48 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year18/days/Day20.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year18.days; + +import com.sbaars.adventofcode.year18.Day2018; + +public class Day20 extends Day2018 { + public Day20() { + super(20); + } + + public static void main(String[] args) { + new Day20().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year18/days/Day21.java b/src/main/java/com/sbaars/adventofcode/year18/days/Day21.java new file mode 100644 index 00000000..156eff0e --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year18/days/Day21.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year18.days; + +import com.sbaars.adventofcode.year18.Day2018; + +public class Day21 extends Day2018 { + public Day21() { + super(21); + } + + public static void main(String[] args) { + new Day21().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year18/days/Day22.java b/src/main/java/com/sbaars/adventofcode/year18/days/Day22.java new file mode 100644 index 00000000..be51be66 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year18/days/Day22.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year18.days; + +import com.sbaars.adventofcode.year18.Day2018; + +public class Day22 extends Day2018 { + public Day22() { + super(22); + } + + public static void main(String[] args) { + new Day22().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year18/days/Day23.java b/src/main/java/com/sbaars/adventofcode/year18/days/Day23.java new file mode 100644 index 00000000..221ca959 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year18/days/Day23.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year18.days; + +import com.sbaars.adventofcode.year18.Day2018; + +public class Day23 extends Day2018 { + public Day23() { + super(23); + } + + public static void main(String[] args) { + new Day23().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year18/days/Day24.java b/src/main/java/com/sbaars/adventofcode/year18/days/Day24.java new file mode 100644 index 00000000..69433404 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year18/days/Day24.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year18.days; + +import com.sbaars.adventofcode.year18.Day2018; + +public class Day24 extends Day2018 { + + public Day24() { + super(24); + } + + public static void main(String[] args) { + new Day24().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year18/days/Day25.java b/src/main/java/com/sbaars/adventofcode/year18/days/Day25.java new file mode 100644 index 00000000..97fc5e8d --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year18/days/Day25.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year18.days; + +import com.sbaars.adventofcode.year18.Day2018; + +public class Day25 extends Day2018 { + public Day25() { + super(25); + } + + public static void main(String[] args) { + new Day25().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year18/days/Day3.java b/src/main/java/com/sbaars/adventofcode/year18/days/Day3.java new file mode 100644 index 00000000..c6f616ed --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year18/days/Day3.java @@ -0,0 +1,48 @@ +package com.sbaars.adventofcode.year18.days; + +import static com.sbaars.adventofcode.common.ReadsFormattedString.readString; + +import com.sbaars.adventofcode.common.Loc; +import com.sbaars.adventofcode.year18.Day2018; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +public class Day3 extends Day2018 { + public Day3() { + super(3); + } + + public static void main(String[] args) { + new Day3().printParts(); +// new Day3().submitPart1(); +// new Day3().submitPart2(); + } + + @Override + public Object part1() { + List<Claim> input = dayStream().map(e -> readString(e, "#%n @ %n,%n: %nx%n", Claim.class)).toList(); + Set<Loc> all = new HashSet<>(); + Set<Loc> overlap = new HashSet<>(); + for(Claim c : input){ + for(int i = 0; i<c.sizex; i++){ + for(int j = 0; j<c.sizey; j++){ + Loc loc = new Loc(c.x + i, c.y + j); + if(!all.add(loc)){ + overlap.add(loc); + } + } + } + } + return overlap.size(); + } + + @Override + public Object part2() { + List<Claim> input = dayStream().map(e -> readString(e, "#%n @ %n,%n: %nx%n", Claim.class)).toList(); + + return ""; + } + + public record Claim(long id, long x, long y, long sizex, long sizey){} +} diff --git a/src/main/java/com/sbaars/adventofcode/year18/days/Day4.java b/src/main/java/com/sbaars/adventofcode/year18/days/Day4.java new file mode 100644 index 00000000..b4346183 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year18/days/Day4.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year18.days; + +import com.sbaars.adventofcode.year18.Day2018; + +public class Day4 extends Day2018 { + + public Day4() { + super(4); + } + + public static void main(String[] args) { + new Day4().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year18/days/Day5.java b/src/main/java/com/sbaars/adventofcode/year18/days/Day5.java new file mode 100644 index 00000000..47505ad7 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year18/days/Day5.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year18.days; + +import com.sbaars.adventofcode.year18.Day2018; + +public class Day5 extends Day2018 { + + public Day5() { + super(5); + } + + public static void main(String[] args) { + new Day5().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year18/days/Day6.java b/src/main/java/com/sbaars/adventofcode/year18/days/Day6.java new file mode 100644 index 00000000..a2f6d2ea --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year18/days/Day6.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year18.days; + +import com.sbaars.adventofcode.year18.Day2018; + +public class Day6 extends Day2018 { + + public Day6() { + super(6); + } + + public static void main(String[] args) { + new Day6().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year18/days/Day7.java b/src/main/java/com/sbaars/adventofcode/year18/days/Day7.java new file mode 100644 index 00000000..5ec5eed7 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year18/days/Day7.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year18.days; + +import com.sbaars.adventofcode.year18.Day2018; + +public class Day7 extends Day2018 { + + public Day7() { + super(7); + } + + public static void main(String[] args) { + new Day7().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year18/days/Day8.java b/src/main/java/com/sbaars/adventofcode/year18/days/Day8.java new file mode 100644 index 00000000..007742a8 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year18/days/Day8.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year18.days; + +import com.sbaars.adventofcode.year18.Day2018; + +public class Day8 extends Day2018 { + + public Day8() { + super(8); + } + + public static void main(String[] args) { + new Day8().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year18/days/Day9.java b/src/main/java/com/sbaars/adventofcode/year18/days/Day9.java new file mode 100644 index 00000000..85156c21 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year18/days/Day9.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year18.days; + +import com.sbaars.adventofcode.year18.Day2018; + +public class Day9 extends Day2018 { + public Day9() { + super(9); + } + + public static void main(String[] args) { + new Day9().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year19/Day2019.java b/src/main/java/com/sbaars/adventofcode/year19/Day2019.java new file mode 100644 index 00000000..710d3b14 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year19/Day2019.java @@ -0,0 +1,9 @@ +package com.sbaars.adventofcode.year19; + +import com.sbaars.adventofcode.common.Day; + +public abstract class Day2019 extends Day { + protected Day2019(int day) { + super(2019, day); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year19/Main.java b/src/main/java/com/sbaars/adventofcode/year19/Main.java new file mode 100644 index 00000000..af0c8786 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year19/Main.java @@ -0,0 +1,16 @@ +package com.sbaars.adventofcode.year19; + +import com.sbaars.adventofcode.common.Day; +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; + +public class Main { + public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException, IOException, InvocationTargetException, NoSuchMethodException { + for (int day = 1; day <= 25; day++) { + System.out.println("Day " + day + ":"); + Day instance = (Day) Class.forName("com.sbaars.adventofcode.year19.days.Day" + day).getDeclaredConstructor().newInstance(); + instance.printParts(); + System.out.println(); + } + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year19/days/Day1.java b/src/main/java/com/sbaars/adventofcode/year19/days/Day1.java new file mode 100644 index 00000000..abfac02f --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year19/days/Day1.java @@ -0,0 +1,32 @@ +package com.sbaars.adventofcode.year19.days; + +import com.sbaars.adventofcode.year19.Day2019; + +public class Day1 extends Day2019 { + public Day1() { + super(1); + } + + public static void main(String[] args) { + new Day1().printParts(); + } + + @Override + public Object part1() { + return dayIntStream().map(this::getFuel).sum(); + } + + @Override + public Object part2() { + return dayIntStream().map(this::getRequiredFuel).sum(); + } + + private int getRequiredFuel(int mass) { + int fuel = getFuel(mass); + return fuel > 0 ? fuel + getRequiredFuel(fuel) : 0; + } + + private int getFuel(int mass) { + return (mass / 3) - 2; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year19/days/Day10.java b/src/main/java/com/sbaars/adventofcode/year19/days/Day10.java new file mode 100644 index 00000000..94d1cf42 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year19/days/Day10.java @@ -0,0 +1,89 @@ +package com.sbaars.adventofcode.year19.days; + +import com.google.common.base.Objects; +import com.sbaars.adventofcode.year19.Day2019; +import java.awt.*; +import java.util.Arrays; +import java.util.List; +import java.util.OptionalDouble; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +public class Day10 extends Day2019 { + + private final List<Point> asteroids; + private Point baseLocation; + + public Day10() { + super(10); + String[] mapString = dayStrings(); + this.asteroids = IntStream.range(0, mapString.length).boxed().flatMap(i -> IntStream.range(0, mapString[i].length()).mapToObj(j -> new Point(j, i))).filter(p -> mapString[p.y].charAt(p.x) == '#').collect(Collectors.toList()); + } + + public static void main(String[] args) { + new Day10().printParts(); + } + + @Override + public Object part1() { + long[] nVisible = new long[asteroids.size()]; + for (int i = 0; i < nVisible.length; i++) nVisible[i] = countNVisible(asteroids.get(i)); + baseLocation = asteroids.get(IntStream.range(0, nVisible.length).reduce((i, j) -> nVisible[i] > nVisible[j] ? i : j).getAsInt()); + return Arrays.stream(nVisible).max().getAsLong(); + } + + @Override + public Object part2() { + List<Asteroid> asteroidList = asteroids.stream().map(e -> new Asteroid(baseLocation, e)).collect(Collectors.toList()); + Asteroid prevDestroyed = new Asteroid(); + for (int destroyed = 1; destroyed < 200; destroyed++) { + Asteroid prev = prevDestroyed; + OptionalDouble nextRot = asteroidList.stream().mapToDouble(e -> e.rotation).filter(e -> e > prev.rotation).min(); + if (nextRot.isPresent()) { + double nextRotation = nextRot.getAsDouble(); + prevDestroyed = asteroidList.stream().filter(e -> e.rotation == nextRotation).reduce((a1, a2) -> a1.distance < a2.distance ? a1 : a2).get(); + asteroidList.remove(prevDestroyed); + } + } + return prevDestroyed.position.x * 100 + prevDestroyed.position.y; + } + + private long countNVisible(Point asteroid) { + return asteroids.stream().map(e -> new Asteroid(asteroid, e)).mapToDouble(e -> e.rotation).distinct().count(); + } + + class Asteroid { + double rotation; + double distance; + Point position; + + public Asteroid(Point center, Point me) { + this.rotation = calcRotationAngleInDegrees(center, me); + this.distance = me.distance(center); + this.position = me; + } + + public Asteroid() { + this.rotation = Double.MIN_VALUE; + } + + private double calcRotationAngleInDegrees(Point centerPt, Point targetPt) { + double theta = Math.atan2(targetPt.y - centerPt.y, targetPt.x - centerPt.x) + Math.PI / 2.0; + double angle = Math.toDegrees(theta); + return angle < 0 ? angle + 360 : angle; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Asteroid asteroid = (Asteroid) o; + return Objects.equal(position, asteroid.position); + } + + @Override + public int hashCode() { + return Objects.hashCode(position); + } + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year19/days/Day11.java b/src/main/java/com/sbaars/adventofcode/year19/days/Day11.java new file mode 100644 index 00000000..06145249 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year19/days/Day11.java @@ -0,0 +1,68 @@ +package com.sbaars.adventofcode.year19.days; + +import com.sbaars.adventofcode.common.Direction; +import com.sbaars.adventofcode.common.ProcessesImages; +import com.sbaars.adventofcode.year19.Day2019; +import com.sbaars.adventofcode.year19.intcode.IntcodeComputer; +import java.awt.*; +import java.util.HashSet; +import java.util.Set; + +public class Day11 extends Day2019 implements ProcessesImages { + public Day11() { + super(11); + } + + public static void main(String[] args) { + new Day11().printParts(); + } + + @Override + public Object part1() { + return robotWalk(false); + } + + private Object robotWalk(boolean startWhite) { + IntcodeComputer c = new IntcodeComputer(11); + Point currentLocation = new Point(0, 0); + Direction dir = Direction.NORTH; + final Set<Point> paintedOnce = new HashSet<>(); + final Set<Point> whitePlaces = new HashSet<>(); + if (startWhite) + whitePlaces.add(currentLocation); + while (true) { + c.setInput(whitePlaces.contains(currentLocation) ? 1 : 0); + long paintColor = c.run(); + if (paintColor == IntcodeComputer.STOP_CODE) + break; + long turn = c.run(); + paintedOnce.add(currentLocation); + if (paintColor == 1L) { + whitePlaces.add(currentLocation); + } else if (paintColor == 0L) { + whitePlaces.remove(currentLocation); + } + + dir = dir.turn(turn == 1L); + currentLocation = dir.move(currentLocation); + } + return startWhite ? constructImage(whitePlaces) : paintedOnce.size(); + } + + private String constructImage(Set<Point> whitePlaces) { + int cornerX = whitePlaces.stream().mapToInt(e -> e.x).min().getAsInt(); + int cornerY = whitePlaces.stream().mapToInt(e -> e.y).min().getAsInt(); + whitePlaces.forEach(e -> e.move(e.x - cornerX, e.y - cornerY)); + int sizex = whitePlaces.stream().mapToInt(e -> e.x).max().getAsInt() + 1; + int sizey = whitePlaces.stream().mapToInt(e -> e.y).max().getAsInt() + 1; + int[][] places = new int[sizey][sizex]; + for (Point p : whitePlaces) + places[p.y][p.x] = 1; + return printAsciiArray(places); + } + + @Override + public Object part2() { + return robotWalk(true); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year19/days/Day12.java b/src/main/java/com/sbaars/adventofcode/year19/days/Day12.java new file mode 100644 index 00000000..fc7429f1 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year19/days/Day12.java @@ -0,0 +1,101 @@ +package com.sbaars.adventofcode.year19.days; + +import com.sbaars.adventofcode.year19.Day2019; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; + +public class Day12 extends Day2019 { + int[][] moons = {{-5, 6, -11}, {-8, -4, -2}, {1, 16, 4}, {11, 11, -4}}; + int[][] velocity = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}}; + public Day12() { + super(12); + } + + public static void main(String[] args) { + new Day12().printParts(); + } + + private static long gcd(long a, long b) { + while (b > 0) { + long temp = b; + b = a % b; // % is remainder + a = temp; + } + return a; + } + + private static long lcm(long a, long b) { + return a * (b / gcd(a, b)); + } + + private static long lcm(long[] input) { + long result = input[0]; + for (int i = 1; i < input.length; i++) result = lcm(result, input[i]); + return result; + } + + @Override + public Object part1() { + for (int n = 0; n < 1000; n++) { + determineVelocity(); + moveMoonsUsingVelocity(); + } + int[] res = new int[moons.length]; + for (int i = 0; i < res.length; i++) { + res[i] = Arrays.stream(moons[i]).map(Math::abs).sum() * Arrays.stream(velocity[i]).map(Math::abs).sum(); + } + return Arrays.stream(res).sum(); + } + + @Override + public Object part2() { + var sets = Collections.nCopies(moons[0].length, new HashSet<>()); + long[] res = new long[sets.size()]; + for (long n = 0; true; n++) { + determineVelocity(); + moveMoonsUsingVelocity(); + + for (int i = 0; i < sets.size(); i++) { + if (res[i] == 0 && !sets.get(i).add(Arrays.asList(moons[0][i], moons[1][i], moons[2][i], moons[3][i], velocity[0][i], velocity[1][i], velocity[2][i], velocity[3][i]))) { + res[i] = n; + if (Arrays.stream(res).noneMatch(x -> x == 0)) { + return lcm(res); + } + } + } + } + } + + private void moveMoonsUsingVelocity() { + for (int i = 0; i < moons.length; i++) { + for (int j = 0; j < moons[0].length; j++) { + moons[i][j] += velocity[i][j]; + } + } + } + + private void determineVelocity() { + for (int i = 0; i < moons.length; i++) { + for (int j = i + 1; j < moons.length; j++) { + for (int dim = 0; dim < moons[0].length; dim++) { + int moon1 = moons[i][dim], moon2 = moons[j][dim]; + if (moon1 < moon2) { + velocity[i][dim]++; + velocity[j][dim]--; + } else if (moon1 > moon2) { + velocity[i][dim]--; + velocity[j][dim]++; + } + } + } + } + } + + short[][] copy(short[][] arr) { + short[][] myInt = new short[arr.length][]; + for (int i = 0; i < arr.length; i++) + myInt[i] = arr[i].clone(); + return myInt; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year19/days/Day13.java b/src/main/java/com/sbaars/adventofcode/year19/days/Day13.java new file mode 100644 index 00000000..27b876f2 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year19/days/Day13.java @@ -0,0 +1,69 @@ +package com.sbaars.adventofcode.year19.days; + +import com.sbaars.adventofcode.year19.Day2019; +import com.sbaars.adventofcode.year19.intcode.IntcodeComputer; +import java.awt.*; +import java.util.HashSet; +import java.util.Set; +import java.util.concurrent.atomic.AtomicInteger; + +public class Day13 extends Day2019 { + public Day13() { + super(13); + } + + public static void main(String[] args) { + new Day13().printParts(); + } + + @Override + public Object part1() { + IntcodeComputer cp = new IntcodeComputer(13); + Set<Point> n = new HashSet<Point>(); + while (true) { + long x = cp.run(); + if (x == IntcodeComputer.STOP_CODE) return n.size(); + long y = cp.run(); + long tile = cp.run(); + if (tile == 2) + n.add(new Point(Math.toIntExact(x), Math.toIntExact(y))); + } + } + + @Override + public Object part2() { + IntcodeComputer cp = new IntcodeComputer(13, 1); + cp.setElement(0, 2); + int[][] field = new int[21][38]; + int score = 0; + AtomicInteger paddlePos = new AtomicInteger(), ballPos = new AtomicInteger(); + while (true) { + long x = cp.run(); + if (x == IntcodeComputer.STOP_CODE) + return score; + long y = cp.run(); + long tile = cp.run(); + score = simulateField(cp, field, score, paddlePos, ballPos, Math.toIntExact(x), Math.toIntExact(y), Math.toIntExact(tile)); + } + } + + private int simulateField(IntcodeComputer cp, int[][] field, int score, AtomicInteger paddlePos, AtomicInteger ballPos, int x, int y, int tile) { + if (x == -1) + return tile; + else { + field[y][x] = tile; + if (tile == 3) { + paddlePos.set(x); + } else if (tile == 4) { + ballPos.set(x); + cp.setInput(provideInput(paddlePos, ballPos)); + } + } + return score; + } + + private int provideInput(AtomicInteger paddlePos, AtomicInteger ballPos) { + int ball = ballPos.get(), paddle = paddlePos.get(); + return Integer.compare(ball, paddle); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year19/days/Day14.java b/src/main/java/com/sbaars/adventofcode/year19/days/Day14.java new file mode 100644 index 00000000..9bcd4cc8 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year19/days/Day14.java @@ -0,0 +1,94 @@ +package com.sbaars.adventofcode.year19.days; + +import com.sbaars.adventofcode.common.HasRecursion; +import com.sbaars.adventofcode.year19.Day2019; +import com.sbaars.adventofcode.year19.util.LongCountMap; + +import java.util.Arrays; + +public class Day14 extends Day2019 implements HasRecursion { + + private final Trade[] trades; + + public Day14() { + super(14); + this.trades = dayStream().map(Trade::new).toArray(Trade[]::new); + } + + public static void main(String[] args) { + new Day14().printParts(); + } + + @Override + public Object part1() { + return findCost(new Item(1, "FUEL"), new LongCountMap<>()); + } + + private Trade getTrade(String key) { + return Arrays.stream(trades).filter(e -> e.output.item.equals(key)).findAny().get(); + } + + private long findCost(Item buyingItem, LongCountMap<String> leftOver) { + if (buyingItem.item.equals("ORE")) + return buyingItem.amount; + else if (buyingItem.amount <= leftOver.get(buyingItem.item)) { + leftOver.increment(buyingItem.item, -buyingItem.amount); + return 0; + } + buyingItem.amount -= leftOver.get(buyingItem.item); + leftOver.put(buyingItem.item, 0L); + + return performTrade(buyingItem, leftOver); + } + + private long performTrade(Item buyingItem, LongCountMap<String> leftOver) { + Trade fuelTrade = getTrade(buyingItem.item); + long timesApplied = (long) Math.ceil((double) buyingItem.amount / (double) fuelTrade.output.amount); + long totalCost = 0; + for (Item cost : fuelTrade.input) + totalCost += findCost(new Item(cost.amount * timesApplied, cost.item), leftOver); + leftOver.increment(buyingItem.item, fuelTrade.output.amount * timesApplied - buyingItem.amount); + return totalCost; + } + + @Override + public Object part2() { + long oreLeft = 1000000000000L; + long fuel = 1; + while (true) { + long cost = findCost(new Item(fuel + 1, "FUEL"), new LongCountMap<>()); + if (cost > oreLeft) { + return fuel; + } else { + fuel = Math.max(fuel + 1, (fuel + 1) * oreLeft / cost); + } + } + } + + class Trade { + private final Item[] input; + private final Item output; + + public Trade(String trade) { + String[] inputOutput = trade.split(" => "); + input = Arrays.stream(inputOutput[0].split(", ")).map(Item::new).toArray(Item[]::new); + output = new Item(inputOutput[1]); + } + } + + class Item { + private final String item; + private long amount; + + public Item(String item) { + String[] i = item.split(" "); + amount = Integer.parseInt(i[0]); + this.item = i[1]; + } + + public Item(long i, String string) { + amount = i; + item = string; + } + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year19/days/Day15.java b/src/main/java/com/sbaars/adventofcode/year19/days/Day15.java new file mode 100644 index 00000000..e0d54227 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year19/days/Day15.java @@ -0,0 +1,101 @@ +package com.sbaars.adventofcode.year19.days; + +import com.sbaars.adventofcode.common.Direction; +import com.sbaars.adventofcode.year19.Day2019; +import com.sbaars.adventofcode.year19.intcode.IntcodeComputer; +import com.sbaars.adventofcode.year19.pathfinding.Grid2d; +import java.awt.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class Day15 extends Day2019 { + + public static final int UNEXPLORED = 3; + public static final int WALL = 0; + private static final int PATH = 1; + private static final int FINISH = 2; + private static final int BOARD_SIZE = 41; + private static final Point START_POINT = new Point(BOARD_SIZE / 2 + 1, BOARD_SIZE / 2 + 1); + int[][] grid = new int[BOARD_SIZE][BOARD_SIZE]; + + public Day15() { + super(15); + } + + public static void main(String[] args) { + new Day15().printParts(); + } + + @Override + public Object part1() { + IntcodeComputer ic = new IntcodeComputer(15); + Point pos = START_POINT; + for (int[] row : grid) Arrays.fill(row, UNEXPLORED); + grid[pos.y][pos.x] = 1; + while (true) { + explore(pos, ic); + pos = moveToUnexploredPlace(pos, ic); + if (pos == null) { + Grid2d map2d = new Grid2d(grid, false); + return map2d.findPath(START_POINT, findPos(FINISH).get(0)).size() - 1; + } + } + } + + private Point moveToUnexploredPlace(Point pos, IntcodeComputer ic) { + List<Point> corridorSpaces = findPos(PATH); + for (Point p : corridorSpaces) { + if (hasAdjecent(p, UNEXPLORED)) { + Grid2d map2d = new Grid2d(grid, false); + List<Point> route = map2d.findPath(pos, p); + traverseRoute(ic, pos, route.subList(1, route.size())); + return p; + } + } + return null; + } + + private void traverseRoute(IntcodeComputer ic, Point pos, List<Point> route) { + for (Point p : route) { + if (ic.run(Direction.getByMove(pos, p).num) != 1L) + throw new IllegalStateException("Illegal state at " + pos + " execute to " + p); + pos = p; + } + } + + private boolean hasAdjecent(Point pos, int tile) { + return grid[pos.y + 1][pos.x] == tile || grid[pos.y][pos.x + 1] == tile || grid[pos.y - 1][pos.x] == tile || grid[pos.y][pos.x - 1] == tile; + } + + private List<Point> findPos(int tile) { + List<Point> positions = new ArrayList<>(); + for (int y = 0; y < grid.length; y++) { + for (int x = 0; x < grid[y].length; x++) { + if (grid[y][x] == tile) + positions.add(new Point(x, y)); + } + } + return positions; + } + + private void explore(Point pos, IntcodeComputer ic) { + Direction dir = Direction.NORTH; + for (int i = 0; i < 4; i++) { + Point move = dir.move(pos); + if (grid[move.y][move.x] == UNEXPLORED) { + grid[move.y][move.x] = Math.toIntExact(ic.run(dir.num)); + if (grid[move.y][move.x] != WALL) { + ic.run(dir.opposite().num); // Move back + } + } + dir = dir.turn(true); + } + } + + @Override + public Object part2() { + Point oxygenLeak = findPos(FINISH).get(0); + return findPos(PATH).stream().mapToInt(e -> new Grid2d(grid, false).findPath(oxygenLeak, e).size() - 1).max().getAsInt(); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year19/days/Day16.java b/src/main/java/com/sbaars/adventofcode/year19/days/Day16.java new file mode 100644 index 00000000..ca6c6b01 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year19/days/Day16.java @@ -0,0 +1,66 @@ +package com.sbaars.adventofcode.year19.days; + +import com.sbaars.adventofcode.year19.Day2019; +import java.util.Arrays; +import java.util.stream.Collectors; + +public class Day16 extends Day2019 { + + private static final int TARGET_POS = 5977341; + private final int[] input; + + public Day16() { + super(16); + input = day().chars().map(Character::getNumericValue).toArray(); + } + + public static void main(String[] args) { + new Day16().printParts(); + } + + public static int[] repeat(int[] arr, int newLength) { + newLength = newLength * arr.length; + int[] dup = Arrays.copyOf(arr, newLength); + for (int last = arr.length; last != 0 && last < newLength; last <<= 1) { + System.arraycopy(dup, 0, dup, last, Math.min(last << 1, newLength) - last); + } + return dup; + } + + @Override + public Object part1() { + return calcRes(Arrays.copyOf(input, input.length), 0); + } + + @Override + public Object part2() { + return calcRes(repeat(input, 10000), TARGET_POS); + } + + private Object calcRes(int[] nums, final int offset) { + int[] pattern = {0, 1, 0, -1}; + + int[] res = new int[nums.length]; + for (int phase = 0; phase < 100; phase++) { + int[] newNums = new int[nums.length + 1]; + for (int i = 0; i < nums.length; i++) { + newNums[i + 1] = newNums[i] + nums[i]; + } + for (int i = 0; i < nums.length; i++) { + int sum = 0, loc = 0; + for (int j = 0; true; j++) { + + int k = ((j + 1) * (i + 1)) - 1; + sum += (newNums[Math.min(k, res.length)] - newNums[loc]) * pattern[j % 4]; + if (k >= res.length) break; + loc = k; + } + res[i] = Math.abs(sum) % 10; + } + + System.arraycopy(res, 0, nums, 0, res.length); + } + return Arrays.stream(res, offset, offset + 8).mapToObj(Integer::toString).collect(Collectors.joining()); + } + +} diff --git a/src/main/java/com/sbaars/adventofcode/year19/days/Day17.java b/src/main/java/com/sbaars/adventofcode/year19/days/Day17.java new file mode 100644 index 00000000..2c7dfe45 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year19/days/Day17.java @@ -0,0 +1,148 @@ +package com.sbaars.adventofcode.year19.days; + +import com.sbaars.adventofcode.common.Direction; +import com.sbaars.adventofcode.year19.Day2019; +import com.sbaars.adventofcode.year19.intcode.IntcodeComputer; +import java.awt.*; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +public class Day17 extends Day2019 { + + char[][] grid = new char[48][48]; + + public Day17() { + super(17); + IntcodeComputer ic = new IntcodeComputer(17, 1); + long res; + int x = 0, y = 0; + while ((res = ic.run()) != IntcodeComputer.STOP_CODE) { + if (res == 10) { + y++; + x = 0; + } else { + grid[y][x] = (char) res; + x++; + } + } + } + + public static void main(String[] args) { + new Day17().printParts(); + } + + @Override + public Object part1() { + int result = 0; + for (int y = 1; y < grid.length - 1; y++) { + for (int x = 1; x < grid.length - 1; x++) { + if (hasAdjecent(grid, new Point(x, y), '#')) { + result += x * y; + } + } + } + return result; + } + + private boolean hasAdjecent(char[][] grid, Point pos, char tile) { + return grid[pos.y + 1][pos.x] == tile && grid[pos.y][pos.x + 1] == tile && grid[pos.y - 1][pos.x] == tile && grid[pos.y][pos.x - 1] == tile && grid[pos.y][pos.x] == tile; + } + + @Override + public Object part2() { + Point pos = findPos(grid, '^').get(0); + List<Instruction> instructions = new ArrayList<>(); + List<Point> traversed = new ArrayList<>(); + Direction dir; + Direction robotDir = Direction.NORTH; + while ((dir = directionContainsSomethingAndUntraversed(grid, pos, traversed)) != null) { + int n; + for (n = 1; getGrid(grid, dir.move(pos, n)) == '#'; n++) traversed.add(dir.move(pos, n)); + pos = dir.move(pos, n - 1); + instructions.add(new Instruction(n - 1, dir.leftOf(robotDir) ? Dir.R : Dir.L)); + robotDir = dir; + } + String patterns = findPatterns(instructions) + "\nn\n"; + IntcodeComputer ic = new IntcodeComputer(17, 2); + ic.setInput(patterns); + while (true) { + long res = ic.run(); + if (res > 255L) + return res; + } + } + + private String findPatterns(List<Instruction> instructions) { + List<List<Instruction>> patterns = new ArrayList<>(); + StringBuilder patternString = new StringBuilder(); + int start = 0; + for (int i = 0; i < instructions.size() - 1; i++) { + List<Instruction> pattern = existing(instructions, patterns, i); + if (pattern != null && start == i) { + start += pattern.size(); + i += pattern.size() - 1; + patternString.append(",").append(patterns.indexOf(pattern)); + } else if (start != i && (pattern != null || occurrences(instructions, instructions.subList(start, i + 1)) < 3)) { + patternString.append(",").append(patterns.size()); + patterns.add(instructions.subList(start, i)); + start = i; + i--; + } + } + return patternString.substring(1).replace("0", "A").replace("1", "B").replace("2", "C") + "\n" + patterns.stream().map(this::toString).collect(Collectors.joining("\n")); + } + + private List<Instruction> existing(List<Instruction> instructions, List<List<Instruction>> patterns, int i) { + for (List<Instruction> pattern : patterns) + if (i + pattern.size() <= instructions.size() && instructions.subList(i, i + pattern.size()).equals(pattern)) + return pattern; + return null; + } + + private int occurrences(List<Instruction> instructions, List<Instruction> subList) { + return Math.toIntExact(IntStream.range(0, instructions.size() - subList.size()).filter(i -> toString(instructions.subList(i, i + subList.size())).equals(toString(subList))).count()); + } + + public String toString(List<Instruction> i) { + return i.stream().map(Instruction::toString).collect(Collectors.joining(",")); + } + + private char getGrid(char[][] grid, Point p) { + if (p.x < 0 || p.y < 0 || p.x >= grid[0].length || p.y >= grid.length) return '.'; + return grid[p.y][p.x]; + } + + private Direction directionContainsSomethingAndUntraversed(char[][] grid, Point pos, List<Point> traversed) { + Direction dir = Direction.NORTH; + for (int i = 0; i < 4; i++) { + Point p = dir.move(pos); + if (getGrid(grid, p) == '#' && !traversed.contains(p)) { + return dir; + } + dir = dir.turn(true); + } + return null; + } + + private List<Point> findPos(char[][] grid, char tile) { + List<Point> positions = new ArrayList<>(); + for (int y = 0; y < grid.length; y++) { + for (int x = 0; x < grid[y].length; x++) { + if (grid[y][x] == tile) + positions.add(new Point(x, y)); + } + } + return positions; + } + + enum Dir {L, R} + + record Instruction(int amount, Dir dir) { + @Override + public String toString() { + return dir.name() + "," + amount; + } + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year19/days/Day18.java b/src/main/java/com/sbaars/adventofcode/year19/days/Day18.java new file mode 100644 index 00000000..ec9f5092 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year19/days/Day18.java @@ -0,0 +1,133 @@ +package com.sbaars.adventofcode.year19.days; + +import com.sbaars.adventofcode.year19.Day2019; +import com.sbaars.adventofcode.year19.pathfinding.CharGrid2d; +import java.awt.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.TreeSet; +import java.util.stream.Collectors; + +public class Day18 extends Day2019 { + + private static final char[][] CHANGE_GRID = { + {'@', '#', '@'}, + {'#', '#', '#'}, + {'@', '#', '@'} + }; + private final char[][] grid; + private final CharGrid2d charGrid; + private final Map<State, Integer> cachedResult = new HashMap<>(); + private final Point middle; + + public Day18() { + super(18); + grid = dayStream().map(String::toCharArray).toArray(char[][]::new); + charGrid = new CharGrid2d(grid, false); + middle = findPos('@').get(0); + } + + public static void main(String[] args) { + new Day18().printParts(); + } + + @Override + public Object part1() { + List<Point> me = new ArrayList<>(); + me.add(middle); + return findRoutes(me); + } + + private Object findRoutes(List<Point> me) { + List<Point> keys = findPos('a', 'z'); + Map<Route, List<Point>> routes = new HashMap<>(); + List<Point> requiredRoutes = new ArrayList<>(keys); + requiredRoutes.addAll(me); + for (int i = 0; i < requiredRoutes.size(); i++) { + for (int j = i + 1; j < requiredRoutes.size(); j++) { + List<Point> r = charGrid.findPath(requiredRoutes.get(i), requiredRoutes.get(j)); + if (!r.isEmpty()) + routes.put(new Route(requiredRoutes.get(i), requiredRoutes.get(j)), r); + } + } + return findSteps(me, new TreeSet<>(), keys, routes); + } + + public List<Point> getRoute(Map<Route, List<Point>> routes, Point p1, Point p2) { + List<Point> p = routes.get(new Route(p1, p2)); + if (p != null) + return p; + else return routes.get(new Route(p2, p1)); + } + + public boolean canTakeRoute(List<Point> route, TreeSet<Character> keys) { + for (Point p : route) { + if (grid[p.y][p.x] >= 'A' && grid[p.y][p.x] <= 'Z' && !keys.contains(grid[p.y][p.x])) { + return false; + } + } + return true; + } + + public int findSteps(List<Point> me, TreeSet<Character> collectedKeys, List<Point> keys, Map<Route, List<Point>> routes) { + Integer cachedRes = cachedResult.get(new State(me, collectedKeys)); + if (cachedRes != null) return cachedRes; + var possibleMoves = me.stream().flatMap(m -> keys.stream().map(p -> getRoute(routes, m, p))).filter(Objects::nonNull).filter(e -> canTakeRoute(e, collectedKeys)).collect(Collectors.toList()); + List<Integer> nSteps = new ArrayList<>(); + for (List<Point> takenMove : possibleMoves) { + var myKeys = new TreeSet<>(collectedKeys); + var keyLocs = new ArrayList<>(keys); + Point newLoc = me.contains(takenMove.get(0)) ? takenMove.get(takenMove.size() - 1) : takenMove.get(0); + Point oldLoc = me.contains(takenMove.get(0)) ? takenMove.get(0) : takenMove.get(takenMove.size() - 1); + char collected = grid[newLoc.y][newLoc.x]; + myKeys.add(Character.toUpperCase(collected)); + keyLocs.remove(newLoc); + var me2 = new ArrayList<>(me); + me2.set(me.indexOf(oldLoc), newLoc); + nSteps.add(findSteps(me2, myKeys, keyLocs, routes) + takenMove.size() - 1); + } + int res = nSteps.stream().mapToInt(e -> e).min().orElse(0); + cachedResult.put(new State(me, collectedKeys), res); + return res; + } + + private List<Point> findPos(char tile) { + List<Point> positions = new ArrayList<>(); + for (int y = 0; y < grid.length; y++) { + for (int x = 0; x < grid[y].length; x++) { + if (grid[y][x] == tile) + positions.add(new Point(x, y)); + } + } + return positions; + } + + private List<Point> findPos(char tile, char tile2) { + List<Point> positions = new ArrayList<>(); + for (int y = 0; y < grid.length; y++) { + for (int x = 0; x < grid[y].length; x++) { + if (grid[y][x] >= tile && grid[y][x] <= tile2) + positions.add(new Point(x, y)); + } + } + return positions; + } + + @Override + public Object part2() { + for (int y = 0; y < CHANGE_GRID.length; y++) { + System.arraycopy(CHANGE_GRID[y], 0, grid[middle.y - 1 + y], middle.x - 1, CHANGE_GRID[y].length); + } + cachedResult.clear(); + return findRoutes(findPos('@')); + } + + record Route(Point start, Point end) { + } + + record State(List<Point> me, TreeSet<Character> keys) { + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year19/days/Day19.java b/src/main/java/com/sbaars/adventofcode/year19/days/Day19.java new file mode 100644 index 00000000..e09108a8 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year19/days/Day19.java @@ -0,0 +1,39 @@ +package com.sbaars.adventofcode.year19.days; + +import com.sbaars.adventofcode.year19.Day2019; +import com.sbaars.adventofcode.year19.intcode.IntcodeComputer; + +public class Day19 extends Day2019 { + + public Day19() { + super(19); + } + + public static void main(String[] args) { + new Day19().printParts(); + } + + @Override + public Object part1() { + long res = 0; + for (int x = 0; x < 50; x++) + for (int y = 0; y < 50; y++) + res += new IntcodeComputer(19).run(x, y); + return res; + } + + @Override + public Object part2() { + int x = 500, y = 0; + while (true) { + if (beam(x, y)) { + if (beam(x - 99, y + 99)) return 10000 * (x - 99) + y; + else x++; + } else y++; + } + } + + private boolean beam(int x, int y) { + return new IntcodeComputer(19).run(x, y) == 1L; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year19/days/Day2.java b/src/main/java/com/sbaars/adventofcode/year19/days/Day2.java new file mode 100644 index 00000000..6bbeca6e --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year19/days/Day2.java @@ -0,0 +1,41 @@ +package com.sbaars.adventofcode.year19.days; + +import com.sbaars.adventofcode.year19.Day2019; +import com.sbaars.adventofcode.year19.intcode.IntcodeComputer; + +public class Day2 extends Day2019 { + public Day2() { + super(2); + } + + public static void main(String[] args) { + new Day2().printParts(); + } + + @Override + public Object part1() { + return execute(12, 2); + } + + @Override + public Object part2() { + return bruteForceFindingNumber(19690720, 99); + } + + private int bruteForceFindingNumber(int number, int bound) { + for (int i = 0; i < bound; i++) { + for (int j = 0; j < bound; j++) { + if (execute(i, j) == number) { + return 100 * i + j; + } + } + } + return -1; + } + + private long execute(int x, int y) { + IntcodeComputer computer = new IntcodeComputer(2, x, y); + computer.run(); + return computer.firstElement(); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year19/days/Day20.java b/src/main/java/com/sbaars/adventofcode/year19/days/Day20.java new file mode 100644 index 00000000..3da9ed97 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year19/days/Day20.java @@ -0,0 +1,136 @@ +package com.sbaars.adventofcode.year19.days; + +import com.google.common.collect.ArrayListMultimap; +import com.sbaars.adventofcode.year19.Day2019; +import com.sbaars.adventofcode.year19.pathfinding.CharGrid2d; +import java.awt.*; +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Queue; +import java.util.Set; + +public class Day20 extends Day2019 { + private final Map<String, Portal[]> portals = new HashMap<>(); + private final Map<Portal, String> portalLabel = new HashMap<>(); + private final ArrayListMultimap<Portal, Route> routes = ArrayListMultimap.create(); + private final List<Portal> portalsToTake = new ArrayList<>(); + char[][] grid; + CharGrid2d charGrid; + private Portal entry; + private Portal exit; + + public Day20() { + super(20); + grid = dayGrid(); + charGrid = new CharGrid2d(grid, false); + + int[] rows = {2, 26, 80, 104}; + for (int row : rows) { + boolean addPortal = row == rows[0] || row == rows[rows.length - 1]; + for (int i = 2; i < grid.length - 2; i++) { + if (grid[i][row] == '.') { + if (Character.isAlphabetic(grid[i][row - 1])) { + addPortal("" + grid[i][row - 2] + grid[i][row - 1], new Point(row, i), addPortal); + grid[i][row - 1] = '#'; + } else if (Character.isAlphabetic(grid[i][row + 1])) { + addPortal("" + grid[i][row + 1] + grid[i][row + 2], new Point(row, i), addPortal); + grid[i][row + 1] = '#'; + } + } + if (grid[row][i] == '.') { + if (Character.isAlphabetic(grid[row - 1][i])) { + addPortal("" + grid[row - 2][i] + grid[row - 1][i], new Point(i, row), addPortal); + grid[row - 1][i] = '#'; + } else if (Character.isAlphabetic(grid[row + 1][i])) { + addPortal("" + grid[row + 1][i] + grid[row + 2][i], new Point(i, row), addPortal); + grid[row + 1][i] = '#'; + } + } + } + } + portalsToTake.addAll(portalLabel.keySet()); + portalsToTake.add(exit); + } + + public static void main(String[] args) { + new Day20().printParts(); + } + + public void addPortal(String label, Point pos, boolean outerRing) { + Portal p = new Portal(pos, outerRing); + if (label.equals("AA")) this.entry = p; + else if (label.equals("ZZ")) this.exit = p; + else { + Portal[] portal = portals.get(label); + if (portal == null) { + portals.put(label, new Portal[]{p, null}); + } else portal[1] = p; + portalLabel.put(p, label); + } + + } + + @Override + public Object part1() { + return findRoutes(false); + } + + private int findRoutes(boolean b) { + final Queue<State> queue = new ArrayDeque<>(); + final Set<Visited> visited = new HashSet<>(); + queue.add(new State(new Visited(entry, 0), -1)); + while (true) { + State s = queue.poll(); + if (!routes.containsKey(s.vis.pos)) determineRoutes(s.vis.pos); + for (Route route : routes.get(s.vis.pos)) { + int level = s.vis.level; + if (level == 0 && route.goal.equals(exit)) return route.distance + s.totalSteps; + else if (route.goal.equals(exit)) continue; + if (b) level += route.goal.isOuter ? 1 : -1; + if (s.vis.level < 0) continue; + Visited vis = new Visited(route.goal, level); + if (!visited.contains(vis)) { + visited.add(vis); + queue.add(new State(vis, s.totalSteps + route.distance)); + } + } + } + } + + private void determineRoutes(Portal p) { + for (Portal portal : portalsToTake) { + if (!portal.pos.equals(p.pos)) { + List<Point> route = charGrid.findPath(p.pos, portal.pos); + if (!route.isEmpty()) routes.put(p, new Route(teleport(portal), route.size())); + } + } + } + + private Portal teleport(Portal portal) { + Portal[] thisPortal = portals.get(portalLabel.get(portal)); + if (portal.equals(exit)) return exit; + if (portal.equals(thisPortal[0])) return thisPortal[1]; + return thisPortal[0]; + } + + @Override + public Object part2() { + return findRoutes(true); + } + + record Portal(Point pos, boolean isOuter) { + } + + record Route(Portal goal, int distance) { + } + + record State(Visited vis, int totalSteps) { + } + + record Visited(Portal pos, int level) { + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year19/days/Day21.java b/src/main/java/com/sbaars/adventofcode/year19/days/Day21.java new file mode 100644 index 00000000..0665a04f --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year19/days/Day21.java @@ -0,0 +1,51 @@ +package com.sbaars.adventofcode.year19.days; + +import com.sbaars.adventofcode.year19.Day2019; +import com.sbaars.adventofcode.year19.intcode.IntcodeComputer; + +public class Day21 extends Day2019 { + + public Day21() { + super(21); + } + + public static void main(String[] args) { + new Day21().printParts(); + } + + @Override + public Object part1() { + IntcodeComputer ic = new IntcodeComputer(21); + // !(A && B && C) && D + ic.setInput("OR A T\n" + + "AND B T\n" + + "AND C T\n" + + "NOT T T\n" + //flip T + "AND D T\n" + + "OR T J\n" + + "WALK\n"); + long res; + while ((res = ic.run()) != IntcodeComputer.STOP_CODE) + if (res > 255) return res; + return 0; + } + + @Override + public Object part2() { + IntcodeComputer ic = new IntcodeComputer(21); + // (((!B && H) || !A) || (!C && H)) && D + ic.setInput("NOT A J\n" + + "NOT B T\n" + + "AND H T\n" + + "OR T J\n" + + "NOT C T\n" + + "AND H T\n" + + "OR T J\n" + + "AND D J\n" + + "RUN\n"); + long res; + while ((res = ic.run()) != IntcodeComputer.STOP_CODE) + if (res > 255) return res; + return 0; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year19/days/Day22.java b/src/main/java/com/sbaars/adventofcode/year19/days/Day22.java new file mode 100644 index 00000000..fe09b906 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year19/days/Day22.java @@ -0,0 +1,125 @@ +package com.sbaars.adventofcode.year19.days; + +import com.sbaars.adventofcode.year19.Day2019; +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +public class Day22 extends Day2019 { + + Move[] moves; + + public Day22() { + super(22); + this.moves = Arrays.stream(day().split(System.lineSeparator())).map(Move::parse).toArray(Move[]::new); + } + + public static void main(String[] args) { + new Day22().printParts(); + } + + private static BigInteger num(long n) { + return new BigInteger(Long.toString(n)); + } + + @Override + public Object part1() { + List<Integer> cards = IntStream.range(0, 10007).boxed().collect(Collectors.toList()); + for (Move move : moves) cards = move.execute(cards); + return cards.indexOf(2019); + } + + @Override + public Object part2() { + return seekPosition(num(119315717514047L), num(101741582076661L), 2020); + } + + private BigInteger seekPosition(BigInteger deckSize, BigInteger timesShuffled, int position) { + BigInteger[] calc = new BigInteger[]{num(1), num(0)}; + for (Move move : reverseArray(moves)) { + move.execute(calc, deckSize); + for (int i = 0; i < calc.length; i++) calc[i] = calc[i].mod(deckSize); + } + BigInteger pow = calc[0].modPow(timesShuffled, deckSize); + return pow.multiply(num(position)).add(calc[1].multiply(pow.add(deckSize).subtract(num(1))).multiply(calc[0].subtract(num(1)).modPow(deckSize.subtract(num(2)), deckSize))).mod(deckSize); + } + + private <T> T[] reverseArray(T[] arr) { + for (int i = 0; i < arr.length / 2; i++) { + T temp = arr[i]; + arr[i] = arr[arr.length - i - 1]; + arr[arr.length - i - 1] = temp; + } + return arr; + } + + enum Action { + DEAL_WITH_INCREMENT("deal with increment "), + DEAL_NEW_STACK("deal into new stack"), + CUT("cut "); + + String name; + + Action(String name) { + this.name = name; + } + + public static Action actionByText(String text) { + return Arrays.stream(values()).filter(a -> text.startsWith(a.name)).findAny().get(); + } + } + + record Move(Action action, int amount) { + + public static Move parse(String s) { + Action action = Action.actionByText(s); + s = s.replace(action.name, ""); + return new Move(action, !s.isEmpty() ? Integer.parseInt(s) : 0); + } + + public List<Integer> execute(List<Integer> cards) { + switch (action) { + case DEAL_NEW_STACK: + Collections.reverse(cards); + break; + case CUT: { + int n = amount > 0 ? amount : cards.size() + amount; + List<Integer> sub = new ArrayList<>(cards.subList(n, cards.size())); + sub.addAll(cards.subList(0, n)); + return sub; + } + case DEAL_WITH_INCREMENT: { + Integer[] deck = new Integer[cards.size()]; + for (int i = 0, card = 0; i < cards.size(); i++) { + deck[card] = cards.get(i); + card = (card + amount) % deck.length; + } + return Arrays.asList(deck); + } + } + return cards; + } + + public void execute(BigInteger[] input, BigInteger deckSize) { + switch (action) { + case DEAL_NEW_STACK: { + input[0] = input[0].multiply(num(-1)); + input[1] = input[1].add(num(1)).multiply(num(-1)); + } + break; + case CUT: + input[1] = input[1].add(num(amount)); + break; + case DEAL_WITH_INCREMENT: { + BigInteger p = num(amount).modPow(deckSize.subtract(num(2)), deckSize); + for (int i = 0; i < input.length; i++) input[i] = input[i].multiply(p); + } + break; + } + } + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year19/days/Day23.java b/src/main/java/com/sbaars/adventofcode/year19/days/Day23.java new file mode 100644 index 00000000..d4037780 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year19/days/Day23.java @@ -0,0 +1,56 @@ +package com.sbaars.adventofcode.year19.days; + +import com.sbaars.adventofcode.year19.Day2019; +import com.sbaars.adventofcode.year19.intcode.IntcodeComputer; +import com.sbaars.adventofcode.year19.intcode.RetentionPolicy; +import java.util.stream.IntStream; + +public class Day23 extends Day2019 { + + public Day23() { + super(23); + } + + public static void main(String[] args) { + new Day23().printParts(); + } + + @Override + public Object part1() { + return getNetworkNumber(true); + } + + @Override + public Object part2() { + return getNetworkNumber(false); + } + + private long getNetworkNumber(boolean returnNatY) { + long[] program = dayNumbers(","); + IntcodeComputer[] ic = IntStream.range(0, 50).mapToObj(i -> new IntcodeComputer(RetentionPolicy.EXIT_ON_EMPTY_INPUT, program, i, -1)).toArray(IntcodeComputer[]::new); + long[] nat = new long[2]; + long sentByNat = -1; + + long input; + while (true) { + boolean idle = true; + for (IntcodeComputer intcodeComputer : ic) { + if ((input = intcodeComputer.run()) != IntcodeComputer.STOP_CODE) { + int pc = Math.toIntExact(input); + long x = intcodeComputer.run(), y = intcodeComputer.run(); + if (pc == 255) { + if (returnNatY) return y; + nat[0] = x; + nat[1] = y; + } else ic[pc].addInput(x, y); + idle = false; + } + } + if (idle) { + ic[0].addInput(nat[0], nat[1]); + if (sentByNat == nat[1]) return nat[1]; + sentByNat = nat[1]; + } + } + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year19/days/Day24.java b/src/main/java/com/sbaars/adventofcode/year19/days/Day24.java new file mode 100644 index 00000000..0c5b1e45 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year19/days/Day24.java @@ -0,0 +1,142 @@ +package com.sbaars.adventofcode.year19.days; + +import com.sbaars.adventofcode.common.grid.CharGrid; +import com.sbaars.adventofcode.common.grid.Grid; +import com.sbaars.adventofcode.year19.Day2019; +import java.awt.*; +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.function.Function; +import java.util.function.Supplier; +import java.util.stream.IntStream; +import java.util.stream.Stream; + +public class Day24 extends Day2019 { + + private final Set<Grid> grids = new HashSet<>(); + private final char[][] initialGrid; + private Map<Integer, char[][]> layers = new HashMap<>(); + + public Day24() { + super(24); + this.initialGrid = dayGrid(); + } + + public static void main(String[] args) { + new Day24().printParts(); + } + + @Override + public Object part1() { + char[][] grid = initialGrid; + while (true) { + if (!grids.add(new CharGrid(grid))) return calcRes(grid); + char[][] newGrid = copy(grid); + final char[][] g = grid; + streamGrid(grid).forEach(p -> simulate(g, newGrid, p)); + grid = newGrid; + } + } + + private void simulate(char[][] grid, char[][] newGrid, Point p) { + int adj = nAdjecent(grid, p); + if (get(grid, p) == '#' && adj != 1) { + set(newGrid, p, '.'); + } else if (get(grid, p) == '.' && (adj == 1 || adj == 2)) { + set(newGrid, p, '#'); + } + } + + private long calcRes(char[][] grid) { + return (long) streamGrid(grid).filter(p -> get(grid, p) == '#').mapToDouble(p -> Math.pow(2, (p.y * grid.length) + p.x)).sum(); + } + + public char[][] copy(char[][] grid) { + char[][] g2 = new char[grid.length][]; + for (int i = 0; i < grid.length; i++) g2[i] = Arrays.copyOf(grid[i], grid[i].length); + return g2; + } + + public int nAdjecent(char[][] grid, Point pos) { + return num(grid, new Point(pos.x, pos.y - 1)) + num(grid, new Point(pos.x, pos.y + 1)) + num(grid, new Point(pos.x - 1, pos.y)) + num(grid, new Point(pos.x + 1, pos.y)); + } + + private int num(char[][] grid, Point p) { + if (p.x < 0 || p.y < 0 || p.x >= grid.length || p.y >= grid.length) return 0; + return get(grid, p) == '#' ? 1 : 0; + } + + @Override + public Object part2() { + char[][] grid = dayGrid(); + for (int i = -200; i <= 200; i++) layers.put(i, fill(new char[grid.length][grid[0].length], '.')); + layers.put(0, grid); + for (int i = 0; i < 200; i++) { + final Map<Integer, char[][]> layers2 = new HashMap<>(); + for (int layer = -200; layer <= 200; layer++) { + char[][] newGrid = copy(layers.get(layer)); + final int l = layer; + streamGrid(grid).filter(p -> p.x != 2 || p.y != 2).forEach(p -> simulate(l, newGrid, p)); + layers2.put(layer, newGrid); + } + layers = layers2; + } + return layers.values().stream().mapToLong(e -> count(e, '#')).sum(); + } + + public Stream<Point> streamGrid(int sizex, int sizey) { + return IntStream.range(0, sizey).boxed().flatMap(y -> IntStream.range(0, sizex).mapToObj(x -> new Point(x, y))); + } + + public Stream<Point> streamGrid(char[][] grid) { + return streamGrid(grid[0].length, grid.length); + } + + private long count(char[][] grid, char c) { + return streamGrid(grid).filter(p -> get(grid, p) == c).count(); + } + + private void simulate(int layer, char[][] newGrid, Point p) { + int adj = nAdjecent(layer, p); + if (get(layers.get(layer), p) == '#' && adj != 1) { + set(newGrid, p, '.'); + } else if (get(layers.get(layer), p) == '.' && (adj == 1 || adj == 2)) { + set(newGrid, p, '#'); + } + } + + private char get(char[][] grid, Point pos) { + return grid[pos.y][pos.x]; + } + + private void set(char[][] grid, Point pos, char c) { + grid[pos.y][pos.x] = c; + } + + private int nAdjecent(int layer, Point pos) { + int res = 0; + Point[] surround = new Point[]{new Point(2, 1), new Point(1, 2), new Point(2, 3), new Point(3, 2)}; + if (layers.containsKey(layer + 1)) { + List<Supplier<Boolean>> conditions = Arrays.asList(() -> pos.y == 0, () -> pos.x == 0, () -> pos.y == 4, () -> pos.x == 4); + res += IntStream.range(0, conditions.size()).filter(i -> conditions.get(i).get()).map(i -> num(layers.get(layer + 1), surround[i])).sum(); + } + if (layers.containsKey(layer - 1)) { + List<Function<Integer, Point>> fs = Arrays.asList(i -> new Point(i, 0), i -> new Point(0, i), i -> new Point(i, 4), i -> new Point(4, i)); + res += IntStream.range(0, fs.size()).filter(i -> pos.equals(surround[i])).map(i -> nLayer(layer, fs.get(i))).sum(); + } + return res + nAdjecent(layers.get(layer), pos); + } + + public int nLayer(int layer, Function<Integer, Point> f) { + return IntStream.range(0, 5).map(i -> num(layers.get(layer - 1), f.apply(i))).sum(); + } + + public char[][] fill(char[][] arr, char el) { + streamGrid(arr).forEach(p -> set(arr, p, el)); + return arr; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year19/days/Day25.java b/src/main/java/com/sbaars/adventofcode/year19/days/Day25.java new file mode 100644 index 00000000..5f022f88 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year19/days/Day25.java @@ -0,0 +1,51 @@ +package com.sbaars.adventofcode.year19.days; + +import com.sbaars.adventofcode.year19.Day2019; +import com.sbaars.adventofcode.year19.intcode.IntcodeComputer; +import com.sbaars.adventofcode.year19.intcode.RetentionPolicy; +import java.io.BufferedReader; +import java.io.InputStreamReader; + +public class Day25 extends Day2019 { + + public Day25() { + super(25); + } + + public static void main(String[] args) { + new Day25().play(); + } + + private void play() { + IntcodeComputer ic = new IntcodeComputer(RetentionPolicy.EXIT_ON_EMPTY_INPUT, dayNumbers()); + while (true) { + long res; + while ((res = ic.run()) != IntcodeComputer.STOP_CODE) System.out.print((char) res); + try { + ic.setInput(new BufferedReader(new InputStreamReader(System.in)).readLine() + "\n"); + } catch (Exception ignored) { + } + } + } + + @Override + public Object part1() { + IntcodeComputer ic = new IntcodeComputer(RetentionPolicy.EXIT_ON_EMPTY_INPUT, dayNumbers()); + String[] inputs = new String[]{"west", "take semiconductor", "west", "take planetoid", "west", "take food ration", "west", "take fixed point", "east", "east", "south", "east", "east", "north", "east", "north"}; + String numbers = ""; + for (int i = 0; i <= inputs.length; i++) { + long res; + while ((res = ic.run()) != IntcodeComputer.STOP_CODE) { + if (Character.isDigit((char) res)) numbers += (char) res; + } + if (i == inputs.length) return numbers.substring(1); + ic.setInput(inputs[i] + "\n"); + } + return 0; + } + + @Override + public Object part2() { + return "MERRY CHRISTMAS!!"; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year19/days/Day3.java b/src/main/java/com/sbaars/adventofcode/year19/days/Day3.java new file mode 100644 index 00000000..a17906e4 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year19/days/Day3.java @@ -0,0 +1,125 @@ +package com.sbaars.adventofcode.year19.days; + +import com.google.common.base.Objects; +import com.sbaars.adventofcode.common.Direction; +import com.sbaars.adventofcode.year19.Day2019; +import java.awt.*; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +public class Day3 extends Day2019 { + + private final Set<Step> intersect; + + public Day3() { + super(3); + String[] strings = dayStrings(); + Walk[] walks1 = mapToWalks(strings[0]), walks2 = mapToWalks(strings[1]); + Set<Step> walkedLocations = new HashSet<>(); + calculateDistance(walks1, walkedLocations, false); + this.intersect = calculateDistance(walks2, walkedLocations, true); + } + + public static void main(String[] args) { + new Day3().printParts(); + } + + @Override + public Object part1() { + return intersect.stream().mapToInt(e -> distance(e.point)).min().orElse(Integer.MAX_VALUE); + } + + @Override + public Object part2() { + return intersect.stream().mapToInt(e -> e.steps).min().orElse(Integer.MAX_VALUE); + } + + private Set<Step> calculateDistance(Walk[] walks1, Set<Step> walkedLocations, boolean collect) { + Set<Step> intersectingLocations = new HashSet<>(); + int x = 0, y = 0, steps = 0; + for (Walk walk : walks1) { + for (; walk.distance > 0; walk.distance--) { + switch (walk.dir) { + case NORTH: + y++; + break; + case SOUTH: + y--; + break; + case WEST: + x--; + break; + case EAST: + x++; + break; + } + performStep(walkedLocations, collect, intersectingLocations, x, y, steps); + steps++; + } + } + return intersectingLocations; + } + + private void performStep(Set<Step> walkedLocations, boolean collect, Set<Step> intersectingLocations, int x, int y, int steps) { + Step currentStep = new Step(new Point(x, y), steps); + if (collect) { + if (walkedLocations.contains(currentStep) && !intersectingLocations.contains(currentStep)) { + Step step = walkedLocations.stream().filter(e -> e.equals(currentStep)).findAny().get(); + intersectingLocations.add(step); + step.combine(currentStep); + } + } else { + walkedLocations.add(currentStep); + } + } + + public int distance(Point p) { + return Math.abs(p.x) + Math.abs(p.y); + } + + private Walk[] mapToWalks(String string) { + return Arrays.stream(string.split(",")).map(Walk::new).toArray(Walk[]::new); + } + + class Walk { + private final Direction dir; + private int distance; + + public Walk(String code) { + this.dir = Direction.getByDirCode(code.charAt(0)); + this.distance = Integer.parseInt(code.substring(1)); + } + } + + class Step { + private final Point point; + private int steps; + private boolean isCombined = false; + + public Step(Point point, int steps) { + this.point = point; + this.steps = steps + 1; + } + + public void combine(Step step) { + if (!isCombined) { + steps += step.steps; + isCombined = true; + } + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Step step = (Step) o; + return Objects.equal(point, step.point); + } + + @Override + public int hashCode() { + return Objects.hashCode(point); + } + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year19/days/Day4.java b/src/main/java/com/sbaars/adventofcode/year19/days/Day4.java new file mode 100644 index 00000000..136d1c96 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year19/days/Day4.java @@ -0,0 +1,55 @@ +package com.sbaars.adventofcode.year19.days; + +import com.sbaars.adventofcode.year19.Day2019; +import java.util.stream.IntStream; + +public class Day4 extends Day2019 { + public Day4() { + super(4); + } + + public static void main(String[] args) { + new Day4().printParts(); + } + + @Override + public Object part1() { + return checkPasswords(false); + } + + @Override + public Object part2() { + return checkPasswords(true); + } + + public long meetsCriteria(int lowerBound, int higherBound, boolean checkGroup) { + return IntStream.range(lowerBound, higherBound + 1).filter(e -> meetsCriteria(e, checkGroup)).count(); + } + + public boolean meetsCriteria(int input, boolean checkGroup) { + int lastSeen = 10, current, adjacentTheSame = -2, skip = 10; + + for (int i = 0; input > 0; i++) { + current = input % 10; + if (skip != current && current == lastSeen) { + if (checkGroup && adjacentTheSame + 1 == i) { + adjacentTheSame = -2; + skip = current; + } else if (adjacentTheSame == -2) { + adjacentTheSame = i; + } + } + if (lastSeen < current) + return false; + lastSeen = current; + input /= 10; + } + + return adjacentTheSame != -2; + } + + private int checkPasswords(boolean checkGroup) { + return Math.toIntExact(meetsCriteria(372037, 905157, checkGroup)); + } + +} diff --git a/src/main/java/com/sbaars/adventofcode/year19/days/Day5.java b/src/main/java/com/sbaars/adventofcode/year19/days/Day5.java new file mode 100644 index 00000000..4b7c7e8b --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year19/days/Day5.java @@ -0,0 +1,27 @@ +package com.sbaars.adventofcode.year19.days; + +import com.sbaars.adventofcode.year19.Day2019; +import com.sbaars.adventofcode.year19.intcode.IntcodeComputer; + +public class Day5 extends Day2019 { + public Day5() { + super(5); + } + + public static void main(String[] args) { + new Day5().printParts(); + } + + @Override + public Object part1() { + long res; + IntcodeComputer intcodeComputer = new IntcodeComputer(5, 1); + while ((res = intcodeComputer.run()) == 0) ; + return res; + } + + @Override + public Object part2() { + return new IntcodeComputer(5, 5).run(); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year19/days/Day6.java b/src/main/java/com/sbaars/adventofcode/year19/days/Day6.java new file mode 100644 index 00000000..b0e25ea2 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year19/days/Day6.java @@ -0,0 +1,77 @@ +package com.sbaars.adventofcode.year19.days; + +import com.google.common.collect.ArrayListMultimap; +import com.sbaars.adventofcode.year19.Day2019; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Map.Entry; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; + +public class Day6 extends Day2019 { + ArrayListMultimap<String, String> orbits = ArrayListMultimap.create(); + + public Day6() { + super(6); + } + + public static void main(String[] args) { + new Day6().printParts(); + } + + @Override + public Object part1() { + String[] nums = dayStrings(); + for (String num : nums) { + String[] parts = num.split("\\)"); + orbits.put(parts[0], parts[1]); + } + AtomicInteger o = new AtomicInteger(); + for (Entry<String, Collection<String>> entry : orbits.asMap().entrySet()) + countOrbitsInList(orbits, o, entry.getValue()); + return o.get(); + } + + private void countOrbitsInList(ArrayListMultimap<String, String> orbits, AtomicInteger o, Collection<String> entry) { + for (String str : entry) { + o.incrementAndGet(); + if (orbits.containsKey(str)) { + countOrbitsInList(orbits, o, orbits.get(str)); + } + } + } + + @Override + public Object part2() { + return findRoute("YOU", "SAN"); + } + + private int findRoute(String from, String to) { + return findRoute(from, to, new ArrayList<>(), 0); + } + + private int findRoute(String from, String to, List<String> visited, int depth) { + if (visited.contains(from)) + return 0; + visited.add(from); + List<String> str = collectAll(from); + if (str.contains(to)) + return depth - 1; + for (String s : str) { + int findRoute = findRoute(s, to, visited, depth + 1); + if (findRoute > 0) return findRoute; + } + return -1; + } + + private List<String> collectAll(String s1) { + List<String> s = findOrbit(s1); + s.addAll(orbits.get(s1)); + return s; + } + + public List<String> findOrbit(String orbitValue) { + return orbits.asMap().entrySet().stream().filter(e -> e.getValue().contains(orbitValue)).map(e -> e.getKey()).collect(Collectors.toList()); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year19/days/Day7.java b/src/main/java/com/sbaars/adventofcode/year19/days/Day7.java new file mode 100644 index 00000000..c7155770 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year19/days/Day7.java @@ -0,0 +1,75 @@ +package com.sbaars.adventofcode.year19.days; + +import com.sbaars.adventofcode.year19.Day2019; +import com.sbaars.adventofcode.year19.intcode.IntcodeComputer; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class Day7 extends Day2019 { + public Day7() { + super(7); + } + + public static void main(String[] args) { + new Day7().printParts(); + } + + @Override + public Object part1() { + var permutations = generatePerm(new ArrayList<>(Arrays.asList(0, 1, 2, 3, 4))); + List<Long> results = new ArrayList<>(); + for (List<Integer> perm : permutations) { + long lastVal = 0; + for (Integer i : perm) + lastVal = new IntcodeComputer(7, i, lastVal).run(); + results.add(lastVal); + + } + return results.stream().mapToLong(e -> e).max().getAsLong(); + } + + @Override + public Object part2() { + var permutations = generatePerm(new ArrayList<>(Arrays.asList(5, 6, 7, 8, 9))); + List<Long> results = new ArrayList<>(); + perms: + for (List<Integer> shuffle : permutations) { + IntcodeComputer[] computers = new IntcodeComputer[5]; + for (int i = 0; i < computers.length; i++) computers[i] = new IntcodeComputer(7, shuffle.get(i)); + long lastVal = 0; + while (true) { + for (IntcodeComputer c : computers) { + c.addInput(lastVal); + long thruster = lastVal; + lastVal = c.run(); + if (lastVal == IntcodeComputer.STOP_CODE) { + results.add(thruster); + continue perms; + } + } + } + + } + return results.stream().mapToLong(e -> e).max().getAsLong(); + } + + public <E> List<List<E>> generatePerm(List<E> original) { + if (original.isEmpty()) { + List<List<E>> result = new ArrayList<>(); + result.add(new ArrayList<E>()); + return result; + } + E firstElement = original.remove(0); + List<List<E>> returnValue = new ArrayList<>(); + List<List<E>> permutations = generatePerm(original); + for (List<E> smallerPermutated : permutations) { + for (int index = 0; index <= smallerPermutated.size(); index++) { + List<E> temp = new ArrayList<>(smallerPermutated); + temp.add(index, firstElement); + returnValue.add(temp); + } + } + return returnValue; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year19/days/Day8.java b/src/main/java/com/sbaars/adventofcode/year19/days/Day8.java new file mode 100644 index 00000000..674603d1 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year19/days/Day8.java @@ -0,0 +1,70 @@ +package com.sbaars.adventofcode.year19.days; + +import com.sbaars.adventofcode.common.ProcessesImages; +import com.sbaars.adventofcode.year19.Day2019; +import com.sbaars.adventofcode.year19.util.CountMap; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.IntStream; + +public class Day8 extends Day2019 implements ProcessesImages { + private static final int DIM_X = 6; + private static final int DIM_Y = 25; + private static final int SIZE = DIM_X * DIM_Y; + public Day8() { + super(8); + } + + public static void main(String[] args) { + new Day8().printParts(); + } + + @Override + public Object part1() { + int[] pixels = readPixels(); + var pixelCounts = countPixels(pixels); + var cm = pixelCounts.stream().reduce((e1, e2) -> e1.get(0) > e2.get(0) ? e2 : e1).get(); + return cm.get(1) * cm.get(2); + } + + private int[] readPixels() { + char[] chars = day().toCharArray(); + return IntStream.range(0, chars.length).map(i -> Character.getNumericValue(chars[i])).toArray(); + } + + private List<CountMap<Integer>> countPixels(int[] pixels) { + List<CountMap<Integer>> pixelCounts = new ArrayList<>(); + for (int i = 0; i < pixels.length; i += SIZE) { + CountMap<Integer> cm = new CountMap<>(); + for (int j = i; j < i + SIZE; j++) { + cm.increment(pixels[j]); + } + pixelCounts.add(cm); + } + return pixelCounts; + } + + @Override + public Object part2() { + int[][] pixelArrays = splitArray(readPixels(), 100, SIZE); + int[] finalPixels = determineFinalImage(pixelArrays); + return printAsciiArray(splitArray(finalPixels, DIM_X, DIM_Y)); + } + + private int[] determineFinalImage(int[][] pixelArrays) { + int[] finalPixels = pixelArrays[0]; + for (int i = 1; i < pixelArrays.length; i++) + for (int j = 0; j < pixelArrays[i].length; j++) + if (finalPixels[j] == 2) + finalPixels[j] = pixelArrays[i][j]; + return finalPixels; + } + + int[][] splitArray(int[] arr, int x, int y) { + int[][] pixelArrays = new int[x][y]; + for (int i = 0; i < arr.length; i += y) + for (int j = i; j < i + y; j++) + pixelArrays[i / y][j - i] = arr[j]; + return pixelArrays; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year19/days/Day9.java b/src/main/java/com/sbaars/adventofcode/year19/days/Day9.java new file mode 100644 index 00000000..b316369e --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year19/days/Day9.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year19.days; + +import com.sbaars.adventofcode.year19.Day2019; +import com.sbaars.adventofcode.year19.intcode.IntcodeComputer; + +public class Day9 extends Day2019 { + public Day9() { + super(9); + } + + public static void main(String[] args) { + new Day9().printParts(); + } + + @Override + public Object part1() { + return new IntcodeComputer(9, 1).run(); + } + + @Override + public Object part2() { + return new IntcodeComputer(9, 2).run(); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year19/intcode/IntcodeComputer.java b/src/main/java/com/sbaars/adventofcode/year19/intcode/IntcodeComputer.java new file mode 100644 index 00000000..2109a24f --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year19/intcode/IntcodeComputer.java @@ -0,0 +1,199 @@ +package com.sbaars.adventofcode.year19.intcode; + +import com.sbaars.adventofcode.year19.Day2019; +import java.util.ArrayDeque; +import java.util.Arrays; +import java.util.Queue; +import java.util.stream.IntStream; + +public class IntcodeComputer extends Day2019 { + public static final long STOP_CODE = Long.MIN_VALUE + 1; + private static final int[] DO_NOT_TRANSFORM_FINAL_ARGUMENT = {1, 2, 3, 7, 8}; + private static final long CONTINUE_CODE = Long.MIN_VALUE; + private final Queue<Long> input = new ArrayDeque<>(2); + public RetentionPolicy policy; + private long[] program; + private int instructionCounter = 0; + private long lastInput; + private long relativeBase = 0; + + public IntcodeComputer(RetentionPolicy policy, long[] program, long... input) { + super(0); + this.program = Arrays.copyOf(program, 10000); + setInput(input); + this.policy = policy; + } + + public IntcodeComputer(int day, long... input) { + super(day); + this.program = dayNumbers(","); + this.program = Arrays.copyOf(this.program, 10000); + if (day == 2) { + this.program[1] = input[0]; + this.program[2] = input[1]; + } else if (day == 17) { + this.program[0] = input[0]; + } + setInput(input); + this.policy = RetentionPolicy.EXIT_ON_OUTPUT; + } + + public long run(long... input) { + setInput(input); + return run(); + } + + public long run() { + long result; + while ((result = executeInstruction(Math.toIntExact(program[instructionCounter]))) == CONTINUE_CODE) ; + return result; + } + + private long executeInstruction(int instruction) { + if (instruction > 99) + return parseComplexInstruction(instruction); + return execute(instruction); + } + + private long execute(int instruction) { + return execute(new int[3], instruction); + } + + private long execute(int[] method, int instruction) { + int nParams = nParams(instruction); + long[] args = IntStream.range(1, nParams + 1).mapToLong(j -> program[instructionCounter + j]).toArray(); + transformParameters(method, args, instruction); + return executeInstruction(args, instruction); + } + + private void transformParameters(int[] method, long[] args, int instruction) { + IntStream.range(0, args.length).filter(i -> method[i] != 1).filter(i -> i + 1 != args.length || !Arrays.stream(DO_NOT_TRANSFORM_FINAL_ARGUMENT).anyMatch(j -> j == instruction)) + .forEach(i -> args[i] = program[Math.toIntExact((method[i] == 2 ? relativeBase : 0) + args[i])]); + if (Arrays.stream(DO_NOT_TRANSFORM_FINAL_ARGUMENT).anyMatch(j -> j == instruction) && method[args.length - 1] == 2) { + args[args.length - 1] += relativeBase; + } + } + + private long readInput() { + if (input.isEmpty()) + return lastInput; + lastInput = input.poll(); + return lastInput; + } + + public void addInput(long... num) { + for (long n : num) + input.add(n); + } + + public long firstElement() { + return program[0]; + } + + public void setInput(long... input) { + this.input.clear(); + addInput(input); + } + + private long executeInstruction(long[] args, int instruction) { + if (instruction == 3 && policy == RetentionPolicy.EXIT_ON_EMPTY_INPUT && input.size() == 0) + return STOP_CODE; + instructionCounter += nParams(instruction) + 1; + switch (instruction) { + case 1: + program[Math.toIntExact(args[2])] = args[0] + args[1]; + break; + case 2: + program[Math.toIntExact(args[2])] = args[0] * args[1]; + break; + case 3: + program[Math.toIntExact(args[0])] = readInput(); + break; + case 4: + return args[0]; + case 5: + if (args[0] != 0) instructionCounter = Math.toIntExact(args[1]); + break; + case 6: + if (args[0] == 0) instructionCounter = Math.toIntExact(args[1]); + break; + case 7: + program[Math.toIntExact(args[2])] = args[0] < args[1] ? 1 : 0; + break; + case 8: + program[Math.toIntExact(args[2])] = args[0] == args[1] ? 1 : 0; + break; + case 9: + relativeBase += Math.toIntExact(args[0]); + break; + case 99: + return STOP_CODE; + default: + throw new IllegalStateException("Something went wrong!"); + } + return CONTINUE_CODE; + } + + private long parseComplexInstruction(int instruction) { + int[] instructions = getInstructions(instruction); + int opcode = getOpCode(instructions); + return execute(new int[]{instructions[2], instructions[1], instructions[0]}, opcode); + } + + private int getOpCode(int instruction) { + return getOpCode(getInstructions(instruction)); + } + + private int getOpCode(int[] instructions) { + return (instructions[3] * 10) + instructions[4]; + } + + private int[] getInstructions(int instruction) { + int[] instructions = new int[5]; + for (int j = instructions.length - 1; instruction > 0; j--) { + instructions[j] = instruction % 10; + instruction /= 10; + } + return instructions; + } + + private int nParams(int instruction) { + switch (instruction) { + case 99: + return -1; + case 3: + case 4: + case 9: + return 1; + case 5: + case 6: + return 2; + case 1: + case 2: + case 7: + case 8: + return 3; + default: + if (instruction > 99) return nParams(getOpCode(instruction)); + else throw new IllegalStateException("Something went wrong! " + instruction); + } + } + + public void setElement(int i, long j) { + program[i] = j; + } + + public void setInput(String patterns) { + setInput(patterns.chars().mapToLong(e -> e).toArray()); + } + + @Override + public Object part1() { + return null; + } + + @Override + public Object part2() { + return null; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year19/intcode/RetentionPolicy.java b/src/main/java/com/sbaars/adventofcode/year19/intcode/RetentionPolicy.java new file mode 100644 index 00000000..719d0b1f --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year19/intcode/RetentionPolicy.java @@ -0,0 +1,5 @@ +package com.sbaars.adventofcode.year19.intcode; + +public enum RetentionPolicy { + EXIT_ON_EMPTY_INPUT, EXIT_ON_OUTPUT +} diff --git a/src/main/java/com/sbaars/adventofcode/year19/pathfinding/CharGrid2d.java b/src/main/java/com/sbaars/adventofcode/year19/pathfinding/CharGrid2d.java new file mode 100644 index 00000000..56706ad7 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year19/pathfinding/CharGrid2d.java @@ -0,0 +1,129 @@ +package com.sbaars.adventofcode.year19.pathfinding; + +import java.awt.*; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * Creates nodes and neighbours from a 2d grid. Each point in the map has an + * integer value that specifies the cost of crossing that point. If this value + * is negative, the point is unreachable. + * <p> + * If diagonal movement is allowed, the Chebyshev distance is used, else + * Manhattan distance is used. + * + * @author Ben Ruijl + */ +public class CharGrid2d { + private final char[][] map; + private final boolean allowDiagonal; + List<Character> collectedKeys; + + public CharGrid2d(char[][] map, boolean allowDiagonal) { + this.map = map; + this.allowDiagonal = allowDiagonal; + } + + public List<Point> findPath(Point start, Point end) { + return PathFinding.doAStar(new MapNode(start.x, start.y), new MapNode(end.x, end.y)).stream().map(MapNode::toPoint).collect(Collectors.toList()); + } + + /** + * A node in a 2d map. This is simply the coordinates of the point. + * + * @author Ben Ruijl + */ + public class MapNode implements Node<MapNode> { + private final int x, y; + + public MapNode(int x, int y) { + this.x = x; + this.y = y; + } + + public double getHeuristic(MapNode goal) { + if (allowDiagonal) { + return Math.max(Math.abs(x - goal.x), Math.abs(y - goal.y)); + } else { + return Math.abs(x - goal.x) + Math.abs(y - goal.y); + } + } + + public double getTraversalCost(MapNode neighbour) { + return 1 + map[neighbour.y][neighbour.x]; + } + + public Set<MapNode> getNeighbours() { + Set<MapNode> neighbours = new HashSet<MapNode>(); + + for (int i = x - 1; i <= x + 1; i++) { + for (int j = y - 1; j <= y + 1; j++) { + if ((i == x && j == y) || i < 0 || j < 0 || j >= map.length + || i >= map[j].length) { + continue; + } + + if (!allowDiagonal && + ((i < x && j < y) || + (i < x && j > y) || + (i > x && j > y) || + (i > x && j < y))) { + continue; + } + + if (map[j][i] == '#') { + continue; + } + + // TODO: create cache instead of recreation + neighbours.add(new MapNode(i, j)); + } + } + + return neighbours; + } + + @Override + public String toString() { + return "(" + x + ", " + y + ")"; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + getOuterType().hashCode(); + result = prime * result + x; + result = prime * result + y; + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + MapNode other = (MapNode) obj; + if (!getOuterType().equals(other.getOuterType())) + return false; + if (x != other.x) + return false; + return y == other.y; + } + + public Point toPoint() { + return new Point(x, y); + } + + private CharGrid2d getOuterType() { + return CharGrid2d.this; + } + + } + +} diff --git a/src/main/java/com/sbaars/adventofcode/year19/pathfinding/Grid2d.java b/src/main/java/com/sbaars/adventofcode/year19/pathfinding/Grid2d.java new file mode 100644 index 00000000..b3d1b666 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year19/pathfinding/Grid2d.java @@ -0,0 +1,129 @@ +package com.sbaars.adventofcode.year19.pathfinding; + +import com.sbaars.adventofcode.year19.days.Day15; +import java.awt.*; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * Creates nodes and neighbours from a 2d grid. Each point in the map has an + * integer value that specifies the cost of crossing that point. If this value + * is negative, the point is unreachable. + * <p> + * If diagonal movement is allowed, the Chebyshev distance is used, else + * Manhattan distance is used. + * + * @author Ben Ruijl + */ +public class Grid2d { + private final int[][] map; + private final boolean allowDiagonal; + + public Grid2d(int[][] map, boolean allowDiagonal) { + this.map = map; + this.allowDiagonal = allowDiagonal; + } + + public List<Point> findPath(Point start, Point end) { + return PathFinding.doAStar(new MapNode(start.x, start.y), new MapNode(end.x, end.y)).stream().map(MapNode::toPoint).collect(Collectors.toList()); + } + + /** + * A node in a 2d map. This is simply the coordinates of the point. + * + * @author Ben Ruijl + */ + public class MapNode implements Node<MapNode> { + private final int x, y; + + public MapNode(int x, int y) { + this.x = x; + this.y = y; + } + + public double getHeuristic(MapNode goal) { + if (allowDiagonal) { + return Math.max(Math.abs(x - goal.x), Math.abs(y - goal.y)); + } else { + return Math.abs(x - goal.x) + Math.abs(y - goal.y); + } + } + + public double getTraversalCost(MapNode neighbour) { + return 1 + map[neighbour.y][neighbour.x]; + } + + public Set<MapNode> getNeighbours() { + Set<MapNode> neighbours = new HashSet<MapNode>(); + + for (int i = x - 1; i <= x + 1; i++) { + for (int j = y - 1; j <= y + 1; j++) { + if ((i == x && j == y) || i < 0 || j < 0 || j >= map.length + || i >= map[j].length) { + continue; + } + + if (!allowDiagonal && + ((i < x && j < y) || + (i < x && j > y) || + (i > x && j > y) || + (i > x && j < y))) { + continue; + } + + if (map[j][i] == Day15.WALL || map[j][i] == Day15.UNEXPLORED) { + continue; + } + + // TODO: create cache instead of recreation + neighbours.add(new MapNode(i, j)); + } + } + + return neighbours; + } + + @Override + public String toString() { + return "(" + x + ", " + y + ")"; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + getOuterType().hashCode(); + result = prime * result + x; + result = prime * result + y; + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + MapNode other = (MapNode) obj; + if (!getOuterType().equals(other.getOuterType())) + return false; + if (x != other.x) + return false; + return y == other.y; + } + + public Point toPoint() { + return new Point(x, y); + } + + private Grid2d getOuterType() { + return Grid2d.this; + } + + } + +} diff --git a/src/main/java/com/sbaars/adventofcode/year19/pathfinding/Node.java b/src/main/java/com/sbaars/adventofcode/year19/pathfinding/Node.java new file mode 100644 index 00000000..8bbccfeb --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year19/pathfinding/Node.java @@ -0,0 +1,38 @@ +package com.sbaars.adventofcode.year19.pathfinding; + +import java.util.Set; + +/** + * A node in a graph, useful for pathfinding. + * + * @param <T> Actual type of the node + * @author Ben Ruijl + */ +public interface Node<T> { + /** + * The heuristic cost to move from the current node to the goal. In most + * cases this is the Manhattan distance or Chebyshev distance. + * + * @param goal + * @return + */ + double getHeuristic(T goal); + + /** + * The cost of moving from the current node to the neighbour. In most cases + * this is just the distance between the nodes, but additional terrain cost + * can be added as well (for example climbing a mountain is more expensive + * than walking on a road). + * + * @param neighbour Neighbour of current node + * @return Traversal cost + */ + double getTraversalCost(T neighbour); + + /** + * Gets the set of neighbouring nodes. + * + * @return Neighbouring nodes + */ + Set<T> getNeighbours(); +} diff --git a/src/main/java/com/sbaars/adventofcode/year19/pathfinding/PathFinding.java b/src/main/java/com/sbaars/adventofcode/year19/pathfinding/PathFinding.java new file mode 100644 index 00000000..792b9e6a --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year19/pathfinding/PathFinding.java @@ -0,0 +1,85 @@ +package com.sbaars.adventofcode.year19.pathfinding; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.PriorityQueue; +import java.util.Set; + +/** + * Helper class containing pathfinding algorithms. + * + * @author Ben Ruijl + */ +public class PathFinding { + + /** + * A Star pathfinding. Note that the heuristic has to be monotonic: + * {@code h(x) <= + * d(x, y) + h(y)}. + * + * @param start Starting node + * @param goal Goal node + * @return Shortest path from start to goal, or null if none found + */ + public static <T extends Node<T>> List<T> doAStar(T start, T goal) { + Set<T> closed = new HashSet<T>(); + Map<T, T> fromMap = new HashMap<T, T>(); + List<T> route = new LinkedList<T>(); + Map<T, Double> gScore = new HashMap<T, Double>(); + final Map<T, Double> fScore = new HashMap<T, Double>(); + PriorityQueue<T> open = new PriorityQueue<T>(11, new Comparator<T>() { + + public int compare(T nodeA, T nodeB) { + return Double.compare(fScore.get(nodeA), fScore.get(nodeB)); + } + }); + + gScore.put(start, 0.0); + fScore.put(start, start.getHeuristic(goal)); + open.offer(start); + + while (!open.isEmpty()) { + T current = open.poll(); + if (current.equals(goal)) { + while (current != null) { + route.add(0, current); + current = fromMap.get(current); + } + + return route; + } + + closed.add(current); + + for (T neighbour : current.getNeighbours()) { + if (closed.contains(neighbour)) { + continue; + } + + double tentG = gScore.get(current) + + current.getTraversalCost(neighbour); + + boolean contains = open.contains(neighbour); + if (!contains || tentG < gScore.get(neighbour)) { + gScore.put(neighbour, tentG); + fScore.put(neighbour, tentG + neighbour.getHeuristic(goal)); + + if (contains) { + open.remove(neighbour); + } + + open.offer(neighbour); + fromMap.put(neighbour, current); + } + } + } + + return new ArrayList<>(); + } + +} diff --git a/src/main/java/com/sbaars/adventofcode/year19/util/CountMap.java b/src/main/java/com/sbaars/adventofcode/year19/util/CountMap.java new file mode 100644 index 00000000..1498360d --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year19/util/CountMap.java @@ -0,0 +1,58 @@ +package com.sbaars.adventofcode.year19.util; + +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Collectors; + +public class CountMap<K> extends HashMap<K, Integer> { + /** + * + */ + private static final long serialVersionUID = 1L; + + public CountMap() { + } + + public CountMap(int initialCapacity, float loadFactor) { + super(initialCapacity, loadFactor); + } + + public CountMap(int initialCapacity) { + super(initialCapacity); + } + + public CountMap(Map<? extends K, Integer> m) { + super(m); + } + + public Integer increment(K key) { + return super.put(key, super.containsKey(key) ? super.get(key) + 1 : 1); + } + + public Integer increment(K key, int amount) { + return super.put(key, super.containsKey(key) ? super.get(key) + amount : amount); + } + + @SuppressWarnings("unchecked") + @Override + public Integer get(Object key) { + if (!super.containsKey(key)) + super.put((K) key, 0); + return super.get(key); + } + + @Override + public String toString() { + return keySet().stream().sorted().map(e -> e + "\t" + get(e)).collect(Collectors.joining(System.lineSeparator())); + } + + public void addAll(CountMap<K> amountPerCloneClassSize) { + amountPerCloneClassSize.entrySet().stream().forEach(e -> this.increment(e.getKey(), e.getValue())); + } + + public void incrementAll(CountMap<K> input) { + for (Entry<K, Integer> i : input.entrySet()) { + increment(i.getKey(), i.getValue()); + } + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year19/util/LongCountMap.java b/src/main/java/com/sbaars/adventofcode/year19/util/LongCountMap.java new file mode 100644 index 00000000..32dca808 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year19/util/LongCountMap.java @@ -0,0 +1,69 @@ +package com.sbaars.adventofcode.year19.util; + +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.LongStream; + +public class LongCountMap<K> extends HashMap<K, Long> { + /** + * + */ + private static final long serialVersionUID = 1L; + + public LongCountMap() { + } + + public LongCountMap(int initialCapacity, float loadFactor) { + super(initialCapacity, loadFactor); + } + + public LongCountMap(int initialCapacity) { + super(initialCapacity); + } + + public LongCountMap(Map<? extends K, Long> m) { + super(m); + } + + public Long increment(K key) { + return super.put(key, super.containsKey(key) ? super.get(key) + 1 : 1); + } + + public Long increment(K key, long amount) { + return super.put(key, super.containsKey(key) ? super.get(key) + amount : amount); + } + + @SuppressWarnings("unchecked") + @Override + public Long get(Object key) { + if (!super.containsKey(key)) + super.put((K) key, 0L); + return super.get(key); + } + + @Override + public String toString() { + return keySet().stream().sorted().map(e -> e + "\t" + get(e)).collect(Collectors.joining(System.lineSeparator())); + } + + public void addAll(LongCountMap<K> amountPerCloneClassSize) { + amountPerCloneClassSize.entrySet().stream().forEach(e -> this.increment(e.getKey(), e.getValue())); + } + + public void incrementAll(LongCountMap<K> input) { + for (Entry<K, Long> i : input.entrySet()) { + increment(i.getKey(), i.getValue()); + } + } + + public long sumValues() { + return values().stream().mapToLong(e -> e).sum(); + } + + public static LongCountMap<Long> ofFrequencies(LongStream frequencies) { + var lcm = new LongCountMap<Long>(); + frequencies.forEach(lcm::increment); + return lcm; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year20/Day2020.java b/src/main/java/com/sbaars/adventofcode/year20/Day2020.java new file mode 100644 index 00000000..abc1429d --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year20/Day2020.java @@ -0,0 +1,9 @@ +package com.sbaars.adventofcode.year20; + +import com.sbaars.adventofcode.common.Day; + +public abstract class Day2020 extends Day { + protected Day2020(int day) { + super(2020, day); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year20/Main.java b/src/main/java/com/sbaars/adventofcode/year20/Main.java new file mode 100644 index 00000000..eacfa11b --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year20/Main.java @@ -0,0 +1,16 @@ +package com.sbaars.adventofcode.year20; + +import com.sbaars.adventofcode.common.Day; +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; + +public class Main { + public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException, IOException, InvocationTargetException, NoSuchMethodException { + for (int day = 1; day <= 25; day++) { + System.out.println("Day " + day + ":"); + Day instance = (Day) Class.forName("com.sbaars.adventofcode.year20.days.Day" + day).getDeclaredConstructor().newInstance(); + instance.printParts(); + System.out.println(); + } + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year20/days/Day1.java b/src/main/java/com/sbaars/adventofcode/year20/days/Day1.java new file mode 100644 index 00000000..7730f234 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year20/days/Day1.java @@ -0,0 +1,37 @@ +package com.sbaars.adventofcode.year20.days; + +import com.sbaars.adventofcode.year20.Day2020; +import java.util.Arrays; + +public class Day1 extends Day2020 { + public Day1() { + super(1); + } + + public static void main(String[] args) { + new Day1().printParts(); + } + + @Override + public Object part1() { + long[] nums = dayNumbers(); + return Arrays.stream(nums).flatMap(a -> + Arrays.stream(nums).filter(b -> a + b == 2020L).map(b -> a * b) + ).findAny().getAsLong(); + } + + @Override + public Object part2() { + long[] s = dayNumbers(); + for (long a : s) { + for (long b : s) { + for (long c : s) { + if (a != b && b != c && a + b + c == 2020L) { + return a * b * c; + } + } + } + } + return 0; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year20/days/Day10.java b/src/main/java/com/sbaars/adventofcode/year20/days/Day10.java new file mode 100644 index 00000000..59f06af7 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year20/days/Day10.java @@ -0,0 +1,51 @@ +package com.sbaars.adventofcode.year20.days; + +import static java.util.Arrays.sort; + +import com.sbaars.adventofcode.year19.util.CountMap; +import com.sbaars.adventofcode.year19.util.LongCountMap; +import com.sbaars.adventofcode.year20.Day2020; +import org.apache.commons.lang3.ArrayUtils; + +public class Day10 extends Day2020 { + public Day10() { + super(10); + } + + public static void main(String[] args) { + new Day10().printParts(); + } + + @Override + public Object part1() { + long[] input = getInput(); + CountMap<Long> diffs = new CountMap<>(); + for (int i = 1; i < input.length; i++) { + diffs.increment(input[i] - input[i - 1]); + } + return diffs.get(1L) * diffs.get(3L); + } + + @Override + public Object part2() { + long[] input = getInput(); + LongCountMap<Long> nRoutes = new LongCountMap<>(); + nRoutes.increment(input[input.length - 1]); + for (int i = input.length - 2; i >= 0; i--) { + for (int j = i + 1; j < input.length && j <= i + 3; j++) { + if (input[j] - input[i] <= 3) { + nRoutes.increment(input[i], nRoutes.get(input[j])); + } + } + } + return nRoutes.get(0L); + } + + private long[] getInput() { + long[] input = dayNumbers(); + sort(input); + input = ArrayUtils.add(input, input[input.length - 1] + 3); + input = ArrayUtils.addFirst(input, 0L); + return input; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year20/days/Day11.java b/src/main/java/com/sbaars/adventofcode/year20/days/Day11.java new file mode 100644 index 00000000..54c91b22 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year20/days/Day11.java @@ -0,0 +1,91 @@ +package com.sbaars.adventofcode.year20.days; + +import static java.util.Arrays.stream; + +import com.sbaars.adventofcode.common.Direction; +import com.sbaars.adventofcode.year20.Day2020; +import java.awt.*; + +public class Day11 extends Day2020 { + public Day11() { + super(11); + } + + public static void main(String[] args) { + new Day11().printParts(); + } + + @Override + public Object part1() { + char[][] input = dayGrid(); + int changes; + do { + changes = 0; + char[][] newGrid = new char[input.length][input[0].length]; + for (int i = 0; i < input.length; i++) { + for (int j = 0; j < input[0].length; j++) { + Point p = new Point(i, j); + char[][] finalInput = input; + long occupied = stream(Direction.eightDirections()).filter(d -> + d.getInGrid(finalInput, d.move(p)) == '#' + ).count(); + changes = getChanges(input, changes, newGrid, i, j, occupied, 4L); + } + } + input = newGrid; + } while (changes > 0); + return getCount(input, '#'); + } + + private int getChanges(char[][] input, int changes, char[][] newGrid, int i, int j, long occupied, long numOccupied) { + if (occupied == 0L && input[i][j] == 'L') { + newGrid[i][j] = '#'; + changes++; + } else if (occupied >= numOccupied && input[i][j] == '#') { + newGrid[i][j] = 'L'; + changes++; + } else { + newGrid[i][j] = input[i][j]; + } + return changes; + } + + private long getCount(char[][] input, char ch) { + return stream(input).flatMapToInt(c -> new String(c).chars()).filter(c -> c == ch).count(); + } + + @Override + public Object part2() { + char[][] input = dayGrid(); + int changes; + do { + changes = 0; + char[][] newGrid = new char[input.length][input[0].length]; + for (int i = 0; i < input.length; i++) { + for (int j = 0; j < input[0].length; j++) { + int occupied = countOccupied(input, i, j); + changes = getChanges(input, changes, newGrid, i, j, occupied, 5L); + } + } + input = newGrid; + } while (changes > 0); + return getCount(input, '#'); + } + + private int countOccupied(char[][] input, int i, int j) { + int occupied = 0; + Direction[] dirs = Direction.eightDirections(); + for (Direction dir : dirs) { + Point p = new Point(i, j); + p = dir.move(p, 1); + while (p.x >= 0 && p.x < input.length && p.y >= 0 && p.y < input[0].length && input[p.x][p.y] != 'L') { + if (input[p.x][p.y] == '#') { + occupied++; + break; + } + p = dir.move(p, 1); + } + } + return occupied; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year20/days/Day12.java b/src/main/java/com/sbaars/adventofcode/year20/days/Day12.java new file mode 100644 index 00000000..226c2678 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year20/days/Day12.java @@ -0,0 +1,61 @@ +package com.sbaars.adventofcode.year20.days; + +import com.sbaars.adventofcode.common.Direction; +import com.sbaars.adventofcode.year20.Day2020; + +import java.awt.*; +import java.util.List; + +import static com.sbaars.adventofcode.common.Direction.EAST; +import static com.sbaars.adventofcode.common.Direction.turnDegrees; +import static java.lang.Math.abs; +import static java.util.stream.Collectors.toList; + +public class Day12 extends Day2020 { + public Day12() { + super(12); + } + + public static void main(String[] args) { + new Day12().printParts(); + } + + @Override + public Object part1() { + List<Flight> input = convertInput(); + Direction face = EAST; + Point location = new Point(0, 0); + for (Flight f : input) { + switch (f.dir) { + case 'L', 'R' -> face = face.turnDegrees(f.distance, f.dir == 'R'); + case 'F' -> location = face.move(location, f.distance); + default -> location = Direction.getByDir(f.dir).move(location, f.distance); + } + } + return abs(location.x) + abs(location.y); + } + + private List<Flight> convertInput() { + return dayStream().map(e -> new Flight(e.charAt(0), Integer.parseInt(e.substring(1)))).collect(toList()); + } + + @Override + public Object part2() { + List<Flight> input = convertInput(); + Point waypoint = new Point(10, -1); + Point location = new Point(0, 0); + for (Flight f : input) { + switch (f.dir) { + case 'L', 'R' -> waypoint = turnDegrees(waypoint, f.distance, f.dir == 'R'); + case 'F' -> location = new Point(location.x + (waypoint.x * f.distance), location.y + (waypoint.y * f.distance)); + default -> waypoint = Direction.getByDir(f.dir).move(waypoint, f.distance); + } + } + return abs(location.x) + abs(location.y); + } + + record Flight(char dir, int distance) { + } + + +} diff --git a/src/main/java/com/sbaars/adventofcode/year20/days/Day13.java b/src/main/java/com/sbaars/adventofcode/year20/days/Day13.java new file mode 100644 index 00000000..c7b9c1cd --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year20/days/Day13.java @@ -0,0 +1,52 @@ +package com.sbaars.adventofcode.year20.days; + +import static java.lang.Integer.parseInt; +import static java.lang.Long.parseLong; +import static java.util.Arrays.stream; +import static java.util.stream.IntStream.range; + +import com.sbaars.adventofcode.year20.Day2020; + +public class Day13 extends Day2020 { + public Day13() { + super(13); + } + + public static void main(String[] args) { + new Day13().printParts(); + } + + @Override + public Object part1() { + String[] day = dayStrings(); + int timestamp = parseInt(day[0]); + int[] times = stream(day[1].replace(",x", "").split(",")) + .mapToInt(Integer::parseInt).toArray(); + for (int i = timestamp; true; i++) { + for (int j : times) { + if (i % j == 0) { + return j * (i - timestamp); + } + } + } + } + + @Override + public Object part2() { + String[] s = dayStrings()[1].split(","); + long[][] nums = range(0, s.length).filter(i -> !s[i].equals("x")) + .mapToObj(i -> new long[]{parseLong(s[i]), i}) + .toArray(long[][]::new); + long product = stream(nums).mapToLong(a -> a[0]).reduce((a, b) -> a * b).getAsLong(); + long sum = stream(nums).mapToLong(a -> a[1] * (product / a[0]) * inverseModulo(product / a[0], a[0])).sum(); + return product - sum % product; + } + + long inverseModulo(long x, long y) { + if (x != 0) { + long modulo = y % x; + return modulo == 0 ? 1 : y - inverseModulo(modulo, x) * y / x; + } + return 0; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year20/days/Day14.java b/src/main/java/com/sbaars/adventofcode/year20/days/Day14.java new file mode 100644 index 00000000..9d617876 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year20/days/Day14.java @@ -0,0 +1,97 @@ +package com.sbaars.adventofcode.year20.days; + +import static com.sbaars.adventofcode.common.ReadsFormattedString.readString; +import static java.lang.Long.parseLong; +import static java.lang.Long.toBinaryString; +import static java.util.Optional.empty; +import static java.util.Optional.of; + +import com.sbaars.adventofcode.year20.Day2020; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import org.apache.commons.text.TextStringBuilder; + +public class Day14 extends Day2020 { + public Day14() { + super(14); + } + + public static void main(String[] args) { + new Day14().printParts(); + } + + @Override + public Object part1() { + Instruction[] input = getInput(); + Map<Long, Long> memory = new HashMap<>(); + final TextStringBuilder currentMask = new TextStringBuilder(); + for (Instruction i : input) { + i.getMem().ifPresentOrElse(m -> memory.put(m.index, m.value | parseLong(currentMask.toString(), 2)), + () -> currentMask.set(i.value).replaceAll("X", "0")); + } + return memory.values().stream().mapToLong(e -> e).sum(); + } + + @Override + public Object part2() { + Instruction[] input = getInput(); + Map<Long, Long> memory = new HashMap<>(); + String currentMask = ""; + for (Instruction i : input) { + Optional<Mem> mem = i.getMem(); + if (mem.isPresent()) { + StringBuilder bin = binWithLength(mem.get().index, currentMask.length()); + List<Integer> floaters = applyMask(currentMask, bin); + fillMemory(memory, mem, bin, floaters); + } else { + currentMask = i.value; + } + } + return memory.values().stream().mapToLong(e -> e).sum(); + } + + private Instruction[] getInput() { + return dayStream().map(s -> readString(s, "%s = %s", Instruction.class)).toArray(Instruction[]::new); + } + + private void fillMemory(Map<Long, Long> memory, Optional<Mem> mem, StringBuilder bin, List<Integer> floaters) { + StringBuilder binary; + for (long j = 0; (binary = binWithLength(j, floaters.size())).length() == floaters.size(); j++) { + for (int k = 0; k < floaters.size(); k++) { + bin.setCharAt(floaters.get(k), binary.charAt(k)); + } + memory.put(parseLong(bin.toString(), 2), mem.get().value); + } + } + + private List<Integer> applyMask(String currentMask, StringBuilder bin) { + List<Integer> floaters = new ArrayList<>(); + for (int j = 0; j < bin.length(); j++) { + char c = currentMask.charAt(j); + if (c == 'X') floaters.add(j); + else if (c == '1') bin.setCharAt(j, c); + } + return floaters; + } + + private StringBuilder binWithLength(long val, int s) { + StringBuilder bin = new StringBuilder(toBinaryString(val)); + while (bin.length() < s) { + bin.insert(0, '0'); + } + return bin; + } + + public static record Instruction(String mem, String value) { + + public Optional<Mem> getMem() { + return mem.startsWith("mem") ? of(readString(mem + value, "mem[%n]%n", Mem.class)) : empty(); + } + } + + public static record Mem(long index, long value) { + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year20/days/Day15.java b/src/main/java/com/sbaars/adventofcode/year20/days/Day15.java new file mode 100644 index 00000000..3f928271 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year20/days/Day15.java @@ -0,0 +1,40 @@ +package com.sbaars.adventofcode.year20.days; + +import static java.util.stream.IntStream.range; + +import com.sbaars.adventofcode.year20.Day2020; +import java.util.HashMap; +import java.util.Map; + +public class Day15 extends Day2020 { + public Day15() { + super(15); + } + + public static void main(String[] args) { + new Day15().printParts(); + } + + @Override + public Object part1() { + return getSolution(2020L); + } + + @Override + public Object part2() { + return getSolution(30000000L); + } + + private long getSolution(long offset) { + Map<Long, Long> turnNumbers = new HashMap<>(); + long[] nums = dayNumbers(","); + range(0, nums.length - 1).forEach(i -> turnNumbers.put(nums[i], (long) i)); + long lastNumber = nums[nums.length - 1]; + for (long turnNumber = turnNumbers.size(); turnNumber < offset - 1; turnNumber++) { + long newLastNumber = turnNumbers.containsKey(lastNumber) ? turnNumber - turnNumbers.get(lastNumber) : 0; + turnNumbers.put(lastNumber, turnNumber); + lastNumber = newLastNumber; + } + return lastNumber; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year20/days/Day16.java b/src/main/java/com/sbaars/adventofcode/year20/days/Day16.java new file mode 100644 index 00000000..4a46b37b --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year20/days/Day16.java @@ -0,0 +1,82 @@ +package com.sbaars.adventofcode.year20.days; + +import static com.sbaars.adventofcode.common.ReadsFormattedString.readString; +import static java.util.Arrays.stream; +import static java.util.stream.Collectors.toList; +import static org.apache.commons.lang3.ArrayUtils.subarray; + +import com.google.common.collect.Multimap; +import com.google.common.collect.MultimapBuilder; +import com.sbaars.adventofcode.year20.Day2020; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.Set; + +public class Day16 extends Day2020 { + private final Rule[] rules; + private final long[] myTicket; + private final List<List<Long>> tickets; + public Day16() { + super(16); + String[] input = day().split("\n\n"); + this.rules = stream(input[0].split("\n")).map(s -> readString(s, "%s: %n-%n or %n-%n", Rule.class)).toArray(Rule[]::new); + this.myTicket = stream(input[1].split("\n")[1].split(",")).mapToLong(Long::parseLong).toArray(); + String[] ticketStrings = input[2].split("\n"); + this.tickets = stream(subarray(ticketStrings, 1, ticketStrings.length)).map(s -> stream(s.split(",")).map(Long::parseLong).collect(toList())).collect(toList()); + } + + public static void main(String[] args) { + new Day16().printParts(); + } + + @Override + public Object part1() { + return tickets.stream().flatMapToLong(t -> t.stream().filter(n -> stream(rules).noneMatch(r -> r.check(n))).mapToLong(e -> e)).sum(); + } + + @Override + public Object part2() { + List<List<Long>> valid = tickets.stream().filter(t -> t.stream().allMatch(n -> stream(rules).anyMatch(r -> r.check(n)))).collect(toList()); + + Multimap<Integer, Rule> ruleIndex = MultimapBuilder.hashKeys().arrayListValues().build(); + for (Rule r : rules) { + for (int j = 0; j < valid.get(0).size(); j++) { + int finalJ = j; + if (valid.stream().allMatch(t -> r.check(t.get(finalJ)))) { + ruleIndex.put(j, r); + } + } + } + + Optional<Map.Entry<Integer, Collection<Rule>>> rs; + Set<Integer> indices = new HashSet<>(); + while ((rs = ruleIndex.asMap().entrySet().stream().filter(e -> e.getValue().size() == 1 && !indices.contains(e.getKey())).findAny()).isPresent()) { + Map.Entry<Integer, Collection<Rule>> r = rs.get(); + int index = r.getKey(); + Rule rule = ((List<Rule>) r.getValue()).get(0); + for (int i = 0; i < rules.length; i++) { + Map.Entry<Integer, Collection<Rule>> t = new ArrayList<>(ruleIndex.asMap().entrySet()).get(i); + if (t.getKey() != index) { + t.getValue().remove(rule); + } + } + indices.add(index); + } + + return ruleIndex.asMap().entrySet().stream().filter(e -> e.getValue().stream().anyMatch(Rule::isDeparture)).mapToLong(e -> myTicket[e.getKey()]).reduce((a, b) -> a * b).getAsLong(); + } + + public record Rule(String name, long lower1, long upper1, long lower2, long upper2) { + public boolean check(long val) { + return (val >= lower1 && val <= upper1) || (val >= lower2 && val <= upper2); + } + + public boolean isDeparture() { + return name.startsWith("departure"); + } + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year20/days/Day17.java b/src/main/java/com/sbaars/adventofcode/year20/days/Day17.java new file mode 100644 index 00000000..88440d65 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year20/days/Day17.java @@ -0,0 +1,114 @@ +package com.sbaars.adventofcode.year20.days; + +import com.sbaars.adventofcode.common.HasRecursion; +import com.sbaars.adventofcode.year20.Day2020; +import java.util.HashSet; +import java.util.Set; + +public class Day17 extends Day2020 implements HasRecursion { + public Day17() { + super(17); + } + + public static void main(String[] args) { + new Day17().printParts(); + } + + @Override + public Object part1() { + Set<Pos> pos = new HashSet<>(); + char[][] input = dayGrid(); + for (int i = 0; i < input.length; i++) { + for (int j = 0; j < input[i].length; j++) { + if (input[i][j] == '#') { + pos.add(new Pos(i, j, 0)); + } + } + } + for (int i = 0; i < 6; i++) { + Set<Pos> newPos = new HashSet<>(); + Set<Pos> checkedPos = new HashSet<>(); + for (Pos p : pos) { + addNeighbors(pos, newPos, checkedPos, p, true); + } + pos = newPos; + } + return pos.size(); + } + + public void addNeighbors(Set<Pos> pos, Set<Pos> newPos, Set<Pos> checkedPos, Pos p, boolean active) { + if (!checkedPos.contains(p)) { + long neighbours = active ? -1 : 0; + checkedPos.add(p); + for (int a = -1; a <= 1; a++) { + for (int b = -1; b <= 1; b++) { + for (int c = -1; c <= 1; c++) { + Pos x = new Pos(p.x + a, p.y + b, p.z + c); + if (pos.contains(x)) { + neighbours++; + } else if (active) { + addNeighbors(pos, newPos, checkedPos, x, false); + } + } + } + } + if ((active && (neighbours == 2 || neighbours == 3)) || + (!active && neighbours == 3)) { + newPos.add(p); + } + } + } + + @Override + public Object part2() { + Set<Pos4> pos = new HashSet<>(); + char[][] input = dayGrid(); + for (int i = 0; i < input.length; i++) { + for (int j = 0; j < input[i].length; j++) { + if (input[i][j] == '#') { + pos.add(new Pos4(i, j, 0, 0)); + } + } + } + for (int i = 0; i < 6; i++) { + Set<Pos4> newPos = new HashSet<>(); + Set<Pos4> checkedPos = new HashSet<>(); + for (Pos4 p : pos) { + addNeighbors(pos, newPos, checkedPos, p, true); + } + pos = newPos; + } + return pos.size(); + } + + public void addNeighbors(Set<Pos4> pos, Set<Pos4> newPos, Set<Pos4> checkedPos, Pos4 p, boolean active) { + if (!checkedPos.contains(p)) { + long neighbours = active ? -1 : 0; + checkedPos.add(p); + for (int a = -1; a <= 1; a++) { + for (int b = -1; b <= 1; b++) { + for (int c = -1; c <= 1; c++) { + for (int d = -1; d <= 1; d++) { + Pos4 x = new Pos4(p.x + a, p.y + b, p.z + c, p.w + d); + if (pos.contains(x)) { + neighbours++; + } else if (active) { + addNeighbors(pos, newPos, checkedPos, x, false); + } + } + } + } + } + if ((active && (neighbours == 2 || neighbours == 3)) || + (!active && neighbours == 3)) { + newPos.add(p); + } + } + } + + public static record Pos(long x, long y, long z) { + } + + public static record Pos4(long x, long y, long z, long w) { + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year20/days/Day18.java b/src/main/java/com/sbaars/adventofcode/year20/days/Day18.java new file mode 100644 index 00000000..a6ec71b5 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year20/days/Day18.java @@ -0,0 +1,73 @@ +package com.sbaars.adventofcode.year20.days; + +import com.sbaars.adventofcode.common.HasRecursion; +import com.sbaars.adventofcode.year20.Day2020; +import org.apache.commons.lang3.tuple.Pair; + +import static java.util.Arrays.stream; + +public class Day18 extends Day2020 implements HasRecursion { + public Day18() { + super(18); + } + + public static void main(String[] args) { + new Day18().printParts(); + } + + @Override + public Object part1() { + return getSolution(true); + } + + @Override + public Object part2() { + return getSolution(false); + } + + public long resolveExpression(StringBuilder s, boolean part1) { + var a = solve(s, part1); + return getSolution(a.getRight(), s, a.getLeft(), part1); + } + + private long getSolution(boolean part1) { + return stream(dayStrings()).mapToLong(i -> resolveExpression(new StringBuilder(i), part1)).sum(); + } + + private Pair<Long, Integer> solve(StringBuilder s, boolean part1) { + long leftHand; + int i = s.length() - 2; + if (s.charAt(s.length() - 1) == ')') { + for (int nBrackets = 1; nBrackets > 0; i--) { + if (s.charAt(i) == '(') nBrackets--; + else if (s.charAt(i) == ')') nBrackets++; + } + i++; + leftHand = resolveExpression(new StringBuilder(s.substring(i + 1, s.length() - 1)), part1); + } else { + leftHand = Long.parseLong(s.substring(s.length() - 1, s.length())); + i = s.length() - 1; + } + return Pair.of(leftHand, i); + } + + private long getSolution(int i, StringBuilder s, long leftHand, boolean part1) { + if (i > 0) { + char operator = s.charAt(i - 2); + StringBuilder leftSide = new StringBuilder(s.substring(0, i - 3)); + if (operator == '*') { + return resolveExpression(new StringBuilder(s.substring(0, i - 3)), part1) * leftHand; + } else if (operator == '+') { + if (part1) { + return resolveExpression(new StringBuilder(s.substring(0, i - 3)), true) + leftHand; + } else { + var sol = solve(leftSide, false); + return getSolution(sol.getRight(), leftSide, sol.getKey() + leftHand, false); + } + } + } else if (i == 0) { + return leftHand; + } + throw new IllegalStateException(); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year20/days/Day19.java b/src/main/java/com/sbaars/adventofcode/year20/days/Day19.java new file mode 100644 index 00000000..919a835e --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year20/days/Day19.java @@ -0,0 +1,135 @@ +package com.sbaars.adventofcode.year20.days; + +import static java.lang.Long.parseLong; +import static java.util.Arrays.stream; +import static java.util.Collections.singletonList; + +import com.sbaars.adventofcode.year20.Day2020; +import java.util.Arrays; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Optional; +import java.util.Set; +import java.util.stream.Collectors; + +public class Day19 extends Day2020 { + Map<Long, Set<String>> sol = new HashMap<>(); + + public Day19() { + super(19); + } + + public static void main(String[] args) { + new Day19().printParts(); + } + + private static Optional<String> getLetter(String rule) { + return rule.startsWith("\"") ? Optional.of(rule.charAt(1) + "") : Optional.empty(); + } + + private static long[] getRule(String rule, boolean num) { + if (rule.startsWith("\"")) { + return new long[]{}; + } + String[] r = rule.split(" \\| "); + if (!num || r.length > 1) { + return Arrays.stream(r[num ? 1 : 0].split(" ")).mapToLong(Long::parseLong).toArray(); + } else { + return new long[]{}; + } + } + + @Override + public Object part1() { + return getSolution(day()); + } + + private long getSolution(String inputFile) { + String[] input = inputFile.split("\n\n"); + Map<Long, Rule> rules = Arrays.stream(input[0].split("\n")) + .map(e -> e.split(": ")) + .collect(Collectors.toMap(e -> parseLong(e[0]), e -> new Rule(parseLong(e[0]), e[1]))); + + rules.values().forEach(e -> e.getPossibilities(rules, sol)); + return stream(input[1].split("\n")) + .filter(e -> sol.values().stream().anyMatch(r -> r.contains(e))) + .count(); + } + + @Override + public Object part2() { + int maxDepth = 10; + String[] input = day().split("\n\n"); + Set<String> all = sol.values().stream().flatMap(Collection::stream).collect(Collectors.toUnmodifiableSet()); + Set<String> s42 = sol.get(42L); + Set<String> s31 = sol.get(31L); + Set<String> s11 = sol.get(11L); + for (int i = 2; i <= maxDepth; i++) { + Set<String> add = new HashSet<>(s42.size() * s31.size()); + Set<String> add2 = new HashSet<>(s42.size() * s31.size() * s11.size()); + for (String o : s42) { + for (String o1 : s42) { + add.add(o + o1); + } + for (String o2 : s31) { + for (String o3 : s11) { + add2.add(o + o3 + o2); + } + } + } + s42.addAll(add); + s11.addAll(add2); + } + return stream(input[1].split("\n")) + .filter(e -> sol.values().stream().anyMatch(r -> r.contains(e))) + .count(); + } + + public record Rule(long id, Optional<String> letter, long[] rule1, long[] rule2) { + public Rule(long id, String rule) { + this(id, getLetter(rule), getRule(rule, false), getRule(rule, true)); + } + + public Set<String> getPossibilities(Map<Long, Rule> m, Map<Long, Set<String>> sol) { + if (sol.containsKey(id)) return sol.get(id); + if (letter.isEmpty()) { + Rule[] r = stream(rule1).mapToObj(m::get).toArray(Rule[]::new); + Rule[] orRule = stream(rule2).mapToObj(m::get).toArray(Rule[]::new); + Set<String> output = r[0].getPossibilities(m, sol); + if (sol.containsKey(id)) return sol.get(id); + for (int i = 1; i < r.length; i++) { + Set<String> output2 = r[i].getPossibilities(m, sol); + if (sol.containsKey(id)) return sol.get(id); + Set<String> newOne = new HashSet<>(); + for (String o : output) { + for (String o2 : output2) { + newOne.add(o + o2); + } + } + output = newOne; + } + if (orRule.length > 0) { + Set<String> outputOr = orRule[0].getPossibilities(m, sol); + if (sol.containsKey(id)) return sol.get(id); + for (int i = 1; i < orRule.length; i++) { + Set<String> outputOr2 = orRule[i].getPossibilities(m, sol); + if (sol.containsKey(id)) return sol.get(id); + Set<String> newOne = new HashSet<>(); + for (String o : outputOr) { + for (String o2 : outputOr2) { + newOne.add(o + o2); + } + } + outputOr = newOne; + } + output.addAll(outputOr); + } + sol.put(id, output); + return output; + } + return new HashSet<>(singletonList(letter.get())); + } + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year20/days/Day2.java b/src/main/java/com/sbaars/adventofcode/year20/days/Day2.java new file mode 100644 index 00000000..293587d7 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year20/days/Day2.java @@ -0,0 +1,49 @@ +package com.sbaars.adventofcode.year20.days; + +import static com.sbaars.adventofcode.common.ReadsFormattedString.readString; +import static java.lang.Math.toIntExact; + +import com.sbaars.adventofcode.year20.Day2020; +import java.util.function.Predicate; + +public class Day2 extends Day2020 { + public Day2() { + super(2); + } + + public static void main(String[] args) { + new Day2().printParts(); + } + + public static Password mapPassword(String s) { + return readString(s, "%n-%n %c: %s", Password.class); + } + + @Override + public Object part1() { + return pwCount(Password::isValid); + } + + private long pwCount(Predicate<Password> validator) { + return dayStream().map(Day2::mapPassword).filter(validator).count(); + } + + @Override + public Object part2() { + return pwCount(Password::isValid2); + } + + public record Password(long lower, long higher, char character, String password) { + + public boolean isValid() { + long count = password.chars().filter(c -> c == character).count(); + return count >= lower && count <= higher; + } + + public boolean isValid2() { + int char1 = password.charAt(toIntExact(lower - 1)); + int char2 = password.charAt(toIntExact(higher - 1)); + return char1 != char2 && (char1 == character || char2 == character); + } + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year20/days/Day20.java b/src/main/java/com/sbaars/adventofcode/year20/days/Day20.java new file mode 100644 index 00000000..3ccff922 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year20/days/Day20.java @@ -0,0 +1,127 @@ +package com.sbaars.adventofcode.year20.days; + +import com.google.common.collect.ArrayListMultimap; +import com.google.common.collect.Multimap; +import com.google.common.collect.Streams; +import com.sbaars.adventofcode.common.Direction; +import com.sbaars.adventofcode.year20.Day2020; +import org.apache.commons.lang3.ArrayUtils; + +import java.awt.*; +import java.util.List; +import java.util.*; + +import static com.sbaars.adventofcode.common.Direction.*; +import static java.lang.Long.parseLong; +import static java.util.Arrays.stream; + +public class Day20 extends Day2020 { + public Day20() { + super(20); + } + + public static void main(String[] args) { + new Day20().printParts(); + } + + @Override + public Object part1() { + Grid[] input = stream(day().split("\n\n")).map(Grid::new).toArray(Grid[]::new); + Multimap<String, Metadata> map = ArrayListMultimap.create(); + stream(input).forEach(e -> e.getSides(map)); + Map<String, Collection<Metadata>> map2 = map.asMap(); + List<Long> answer = new ArrayList<>(); + for (Grid g : input) { + List<String> possibleSides = Streams.concat(g.findSides(false).values().stream(), g.findSides(true).values().stream()).toList(); + if (possibleSides.stream().filter(e -> map2.get(e).size() > 1).count() == 4L) { + answer.add(g.id); + } + } + return answer.stream().mapToLong(e -> e).reduce((a, b) -> a * b).getAsLong(); + } + + @Override + public Object part2() { + Grid[] input = stream(day().split("\n\n")).map(Grid::new).toArray(Grid[]::new); + long total = 0; + for (Grid g : input) { + total += g.countWithoutSides(); + } + long seaMonsterSize = 15; +// for (long n = 0; total - n > 0; n += seaMonsterSize) { +// System.out.println((n / 15) + ". " + (total - n)); +// } + return total - (35 * seaMonsterSize); + } + + public static record Grid(long id, char[][] grid) { + public Grid(String s) { + this(parseLong(s.substring(5, 9)), stream(s.substring(11).split("\n")).map(String::toCharArray).toArray(char[][]::new)); + } + + public Multimap<String, Metadata> getSides(Multimap<String, Metadata> map) { + findSides(map, false); + findSides(map, true); + return map; + } + + private void findSides(Multimap<String, Metadata> map, boolean flipped) { + Point p = new Point(flipped ? grid.length - 1 : 0, flipped ? 0 : grid.length - 1); + Direction[] d = Direction.fourDirections(); + if (flipped) ArrayUtils.reverse(d); + for (Direction dir : d) { + StringBuilder res = new StringBuilder(); + for (int i = 0; i < grid.length; i++) { + res.append(dir.getInGrid(grid, p)); + if (i != grid.length - 1) + p = dir.move(p); + } + map.put(res.toString(), new Metadata(id, dir.turn(false), flipped)); + } + } + + private Map<Direction, String> findSides(boolean flipped) { + Map<Direction, String> map = new HashMap<>(); + Point p = new Point(flipped ? grid.length - 1 : 0, flipped ? 0 : grid.length - 1); + Direction[] d = Direction.fourDirections(); + if (flipped) ArrayUtils.reverse(d); + for (Direction dir : d) { + StringBuilder res = new StringBuilder(); + for (int i = 0; i < grid.length; i++) { + res.append(dir.getInGrid(grid, p)); + if (i != grid.length - 1) + p = dir.move(p); + } + map.put(dir, res.toString()); + } + return map; + } + + public long countWithoutSides() { + long total = 0; + for (int i = 1; i < grid.length - 1; i++) { + for (int j = 1; j < grid[i].length - 1; j++) { + if (grid[i][j] == '#') { + total++; + } + } + } + return total; + } + } + + public record Metadata(long id, Direction dir, boolean flipped) { + public boolean validMetadata(List<Metadata> l) { + Map<Direction, Boolean> map = new EnumMap<Direction, Boolean>(Direction.class); + for (Metadata m : l) { + map.put(m.dir, m.flipped); + } + return l.size() == 4 && + map.size() == 4 && + l.stream().map(n -> n.id).distinct().count() == 4L && + map.get(NORTH).equals(map.get(SOUTH)) && + map.get(EAST).equals(map.get(WEST)) && + map.get(NORTH).equals(map.get(EAST)); + } + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year20/days/Day21.java b/src/main/java/com/sbaars/adventofcode/year20/days/Day21.java new file mode 100644 index 00000000..1f46f5f1 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year20/days/Day21.java @@ -0,0 +1,65 @@ +package com.sbaars.adventofcode.year20.days; + +import com.google.common.collect.ArrayListMultimap; +import com.google.common.collect.Multimap; +import com.sbaars.adventofcode.year20.Day2020; + +import java.util.*; +import java.util.stream.Collectors; + +import static java.util.Arrays.asList; +import static java.util.Map.Entry.comparingByKey; + +public class Day21 extends Day2020 { + public Day21() { + super(21); + } + + public static void main(String[] args) { + new Day21().printParts(); + } + + private static String[] getSplit(String s) { + return s.substring(0, s.length() - 1).split(" \\(contains "); + } + + @Override + public Object part1() { + Rule[] input = Arrays.stream(day().split("\n")).map(Rule::new).toArray(Rule[]::new); + Multimap<String, String> allergens = getAllergens(input); + return Arrays.stream(input).flatMap(r -> Arrays.stream(r.ingredients)).filter(i -> !allergens.containsValue(i)).count(); + } + + private Multimap<String, String> getAllergens(Rule[] input) { + Multimap<String, String> allergens = ArrayListMultimap.create(); + Set<String> found = new HashSet<>(); + for (Rule r : input) { + for (String allergen : r.allergens) { + if (!found.contains(allergen)) { + allergens.putAll(allergen, asList(r.ingredients)); + } else if (allergens.containsKey(allergen)) { + for (String s : new HashSet<>(allergens.get(allergen))) { + if (!asList(r.ingredients).contains(s)) { + allergens.remove(allergen, s); + } + } + } + found.add(allergen); + } + } + return allergens; + } + + @Override + public Object part2() { + Rule[] input = Arrays.stream(day().split("\n")).map(Rule::new).toArray(Rule[]::new); + Multimap<String, String> allergens = getAllergens(input); + return allergens.asMap().entrySet().stream().sorted(comparingByKey()).map(e -> e.getValue().stream().findAny().get()).collect(Collectors.joining(",")); + } + + public static record Rule(String[] ingredients, String[] allergens) { + public Rule(String s) { + this(getSplit(s)[0].split(" "), getSplit(s)[1].split(", ")); + } + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year20/days/Day22.java b/src/main/java/com/sbaars/adventofcode/year20/days/Day22.java new file mode 100644 index 00000000..d272e158 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year20/days/Day22.java @@ -0,0 +1,94 @@ +package com.sbaars.adventofcode.year20.days; + +import static java.lang.Math.toIntExact; +import static java.util.stream.Collectors.toCollection; + +import com.sbaars.adventofcode.year20.Day2020; +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; +import java.util.Deque; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.stream.LongStream; + +public class Day22 extends Day2020 { + public Day22() { + super(22); + } + + public static void main(String[] args) { + new Day22().printParts(); + } + + @Override + public Object part1() { + String[] input = day().split("\n\n"); + Deque<Long> p1 = getInput(0, input); + Deque<Long> p2 = getInput(1, input); + + while (p1.size() > 0 && p2.size() > 0) { + long l1 = p1.pop(); + long l2 = p2.pop(); + if (l1 > l2) { + p1.add(l1); + p1.add(l2); + } else { + p2.add(l2); + p2.add(l1); + } + } + Deque<Long> winner = p1.size() > 0 ? p1 : p2; + return calcScore(winner); + } + + private long calcScore(Deque<Long> winner) { + return LongStream.rangeClosed(1, winner.size()).boxed().sorted(Comparator.reverseOrder()).mapToLong(l -> winner.pop() * l).sum(); + } + + @Override + public Object part2() { + String[] input = day().split("\n\n"); + Deque<Long> p1 = getInput(0, input); + Deque<Long> p2 = getInput(1, input); + return calcScore(playGame(p1, p2) == Player.P1 ? p1 : p2); + } + + private ArrayDeque<Long> getInput(int i, String[] input) { + return Arrays.stream(input[i].split("\n")).filter(e -> !e.startsWith("Player")).map(Long::parseLong).collect(toCollection(ArrayDeque::new)); + } + + public Player playGame(Deque<Long> p1, Deque<Long> p2) { + Set<List<Long>> playedGames = new HashSet<>(); + while (p1.size() > 0 && p2.size() > 0) { + if (!playedGames.add(new ArrayList<>(p1))) { + return Player.P1; + } + + long l1 = p1.pop(); + long l2 = p2.pop(); + if (p1.size() < l1 || p2.size() < l2) { + if (l1 > l2) { + p1.add(l1); + p1.add(l2); + } else { + p2.add(l2); + p2.add(l1); + } + } else { + if (playGame(new ArrayDeque<>(new ArrayList<>(p1).subList(0, toIntExact(l1))), new ArrayDeque<>(new ArrayList<>(p2).subList(0, toIntExact(l2)))) == Player.P1) { + p1.add(l1); + p1.add(l2); + } else { + p2.add(l2); + p2.add(l1); + } + } + } + return p1.size() > 0 ? Player.P1 : Player.P2; + } + + enum Player {P1, P2} +} diff --git a/src/main/java/com/sbaars/adventofcode/year20/days/Day23.java b/src/main/java/com/sbaars/adventofcode/year20/days/Day23.java new file mode 100644 index 00000000..61354f5f --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year20/days/Day23.java @@ -0,0 +1,57 @@ +package com.sbaars.adventofcode.year20.days; + +import static java.lang.Long.parseLong; +import static java.util.Arrays.stream; + +import com.google.common.collect.Streams; +import com.sbaars.adventofcode.common.CircularLinkedList; +import com.sbaars.adventofcode.common.CircularLinkedList.Node; +import com.sbaars.adventofcode.year20.Day2020; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +public class Day23 extends Day2020 { + public Day23() { + super(23); + } + + public static void main(String[] args) { + new Day23().printParts(); + } + + @Override + public Object part1() { + return getSolution(true); + } + + @Override + public Object part2() { + return getSolution(false); + } + + private long getSolution(boolean part1) { + int[] input = day().chars().map(Character::getNumericValue).toArray(); + CircularLinkedList cups = new CircularLinkedList( + Streams.concat(stream(input), part1 ? IntStream.empty() : IntStream.rangeClosed(10, 1000000) + ).toArray()); + for (int i = 0; i < (part1 ? 100 : 10000000); i++) { + int current = cups.current(); + int j; + Node next = cups.currentNode().next; + Node last = next.next.next; + for (j = current - 2 + cups.size(); j > 0; j--) { + int n = j % cups.size() + 1; + if (next.value != n && next.next.value != n && last.value != n) { + break; + } + } + int d = j % cups.size() + 1; + cups.insertAfter(next, last, d); + cups.next(); + } + cups.setCurrent(1); + if (part1) return parseLong(stream(cups.next(8)).mapToObj(Integer::toString).collect(Collectors.joining())); + int[] next = cups.next(2); + return (long) next[0] * next[1]; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year20/days/Day24.java b/src/main/java/com/sbaars/adventofcode/year20/days/Day24.java new file mode 100644 index 00000000..eba4e133 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year20/days/Day24.java @@ -0,0 +1,82 @@ +package com.sbaars.adventofcode.year20.days; + +import com.sbaars.adventofcode.common.HasRecursion; +import com.sbaars.adventofcode.common.HexDirection; +import com.sbaars.adventofcode.year20.Day2020; + +import java.awt.*; +import java.util.List; +import java.util.*; + +import static java.util.Arrays.stream; + +public class Day24 extends Day2020 implements HasRecursion { + Set<Point> visited = new HashSet<>(); + + public Day24() { + super(24); + } + + public static void main(String[] args) { + new Day24().printParts(); + } + + @Override + public Object part1() { + var input = stream(dayStrings()).map(this::read).toList(); + for (List<HexDirection> dirs : input) { + Point pos = new Point(0, 0); + for (HexDirection dir : dirs) { + pos = dir.move(pos); + } + if (!visited.add(pos)) { + visited.remove(pos); + } + } + return visited.size(); + } + + public List<HexDirection> read(String dirs) { + List<HexDirection> res = new ArrayList<>(dirs.length()); + while (dirs.length() > 0) { + Optional<HexDirection> direction; + if (dirs.length() > 1 && (direction = HexDirection.get(dirs.substring(0, 2))).isPresent()) { + res.add(direction.get()); + dirs = dirs.substring(2); + } else if ((direction = HexDirection.get(dirs.substring(0, 1))).isPresent()) { + res.add(direction.get()); + dirs = dirs.substring(1); + } + } + return res; + } + + @Override + public Object part2() { + for (int i = 0; i < 100; i++) { + Set<Point> newPos = new HashSet<>(); + visited.forEach(p -> addNeighbors(visited, newPos, new HashSet<>(), p, true)); + visited = newPos; + } + return visited.size(); + } + + public void addNeighbors(Set<Point> pos, Set<Point> newPos, Set<Point> checkedPos, Point p, boolean active) { + if (!checkedPos.contains(p)) { + int neighbours = 0; + checkedPos.add(p); + for (HexDirection dir : HexDirection.values()) { + Point x = dir.move(p); + if (pos.contains(x)) { + neighbours++; + } else if (active) { + addNeighbors(pos, newPos, checkedPos, x, false); + } + } + if ((active && (neighbours == 1 || neighbours == 2)) || + (!active && neighbours == 2)) { + newPos.add(p); + } + } + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year20/days/Day25.java b/src/main/java/com/sbaars/adventofcode/year20/days/Day25.java new file mode 100644 index 00000000..c00a9c9f --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year20/days/Day25.java @@ -0,0 +1,39 @@ +package com.sbaars.adventofcode.year20.days; + +import com.sbaars.adventofcode.year20.Day2020; + +public class Day25 extends Day2020 { + public Day25() { + super(25); + } + + public static void main(String[] args) { + new Day25().printParts(); + } + + @Override + public Object part1() { + long cardPublicKey = 1965712L; + long doorPublicKey = 19072108L; + long value = 1; + for (int loopSize = 1; true; loopSize++) { + value = transform(value, loopSize - 1, loopSize, 7); + if (value == cardPublicKey) { + return transform(1, 0, loopSize, doorPublicKey); + } + } + } + + public long transform(long value, int start, int loopSize, long subjectNumber) { + for (int i = start; i < loopSize; i++) { + value *= subjectNumber; + value %= 20201227; + } + return value; + } + + @Override + public Object part2() { + return "That's all folks"; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year20/days/Day3.java b/src/main/java/com/sbaars/adventofcode/year20/days/Day3.java new file mode 100644 index 00000000..b7602b88 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year20/days/Day3.java @@ -0,0 +1,34 @@ +package com.sbaars.adventofcode.year20.days; + +import com.sbaars.adventofcode.year20.Day2020; + +public class Day3 extends Day2020 { + public Day3() { + super(3); + } + + public static void main(String[] args) { + new Day3().printParts(); + } + + @Override + public Object part1() { + return trees(dayGrid(), 3, 1); + } + + @Override + public Object part2() { + char[][] g = dayGrid(); + return trees(g, 1, 1) * trees(g, 3, 1) * trees(g, 5, 1) * trees(g, 7, 1) * trees(g, 1, 2); + } + + int trees(char[][] grid, int x, int y) { + int trees = 0; + for (int i = 0; i * y < grid.length; i++) { + if (grid[i * y][i * x % grid[0].length] == '#') { + trees++; + } + } + return trees; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year20/days/Day4.java b/src/main/java/com/sbaars/adventofcode/year20/days/Day4.java new file mode 100644 index 00000000..5cc7f2c2 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year20/days/Day4.java @@ -0,0 +1,56 @@ +package com.sbaars.adventofcode.year20.days; + +import static com.google.common.collect.ImmutableSet.toImmutableSet; + +import com.sbaars.adventofcode.year20.Day2020; +import java.util.Arrays; +import java.util.Map; +import java.util.function.Predicate; +import java.util.regex.Pattern; + +public class Day4 extends Day2020 { + private static final Map<String, String> expected = Map.of("byr", "^(200[0-2]|19[2-9][0-9])$", + "iyr", "^(2020|201[0-9])$", + "eyr", "^(2030|202[0-9])$", + "hgt", "^((1([5-8][0-9]|9[0-3])cm)|((59|6[0-9]|7[0-6])in))$", + "hcl", "^(#[0-9a-f]{6})$", + "ecl", "^(amb|blu|brn|gry|grn|hzl|oth)$", + "pid", "^[0-9]{9}$"); + + public Day4() { + super(4); + } + + public static void main(String[] args) { + new Day4().printParts(); + } + + @Override + public Object part1() { + return verifyPassports(this::valid1); + } + + @Override + public Object part2() { + return verifyPassports(this::valid2); + } + + public long verifyPassports(Predicate<String[]> verifyFunction) { + String[][] passports = Arrays.stream(day().split("\n\n")).map(str -> str.replace("\n", " ")).map(str -> str.split(" ")).toArray(String[][]::new); + return Arrays.stream(passports).filter(verifyFunction).count(); + } + + public boolean valid1(String[] passport) { + return Arrays.stream(passport).map(s -> s.substring(0, 3)).collect(toImmutableSet()).containsAll(expected.keySet()); + } + + public boolean valid2(String[] passport) { + return valid1(passport) && Arrays.stream(passport).map(s -> s.split(":")).allMatch(s -> matchesRegex(s[0], s[1])); + } + + public boolean matchesRegex(String key, String validate) { + if (!expected.containsKey(key)) return true; + final Pattern pattern = Pattern.compile(expected.get(key)); + return pattern.matcher(validate).matches(); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year20/days/Day5.java b/src/main/java/com/sbaars/adventofcode/year20/days/Day5.java new file mode 100644 index 00000000..294e92ca --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year20/days/Day5.java @@ -0,0 +1,50 @@ +package com.sbaars.adventofcode.year20.days; + +import com.sbaars.adventofcode.year20.Day2020; +import java.util.HashSet; +import java.util.Set; + +public class Day5 extends Day2020 { + + public Day5() { + super(5); + } + + public static void main(String[] args) { + new Day5().printParts(); + } + + @Override + public Object part1() { + return getSeatIds(dayStrings()).stream().mapToInt(e -> e).max().getAsInt(); + } + + private Set<Integer> getSeatIds(String[] boardingPasses) { + Set<Integer> l = new HashSet<>(); + for (String s : boardingPasses) { + int rowLow = 0; + int rowHigh = 127; + int columnLow = 0; + int columnHigh = 7; + for (char c : s.toCharArray()) { + if (c == 'F') { + rowHigh -= (rowHigh - rowLow + 1) / 2; + } else if (c == 'B') { + rowLow += (rowHigh - rowLow + 1) / 2; + } else if (c == 'L') { + columnHigh -= (columnHigh - columnLow + 1) / 2; + } else if (c == 'R') { + columnLow += (columnHigh - columnLow + 1) / 2; + } + } + l.add(rowHigh * 8 + columnHigh); + } + return l; + } + + @Override + public Object part2() { + Set<Integer> l = getSeatIds(dayStrings()); + return l.stream().mapToInt(e -> e).filter(n -> l.contains(n) && l.contains(n + 2) && !l.contains(n + 1)).sum() + 1; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year20/days/Day6.java b/src/main/java/com/sbaars/adventofcode/year20/days/Day6.java new file mode 100644 index 00000000..3e611be1 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year20/days/Day6.java @@ -0,0 +1,37 @@ +package com.sbaars.adventofcode.year20.days; + +import static com.google.common.primitives.Ints.asList; +import static java.util.stream.IntStream.range; + +import com.sbaars.adventofcode.year20.Day2020; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class Day6 extends Day2020 { + + public Day6() { + super(6); + } + + public static void main(String[] args) { + new Day6().printParts(); + } + + @Override + public Object part1() { + return Arrays.stream(day().split("\n\n")) + .map(i -> i.replace("\n", "")) + .mapToLong(i -> i.chars().distinct().count()).sum(); + } + + @Override + public Object part2() { + return Arrays.stream(day().split("\n\n")).mapToInt(group -> { + String[] people = group.split("\n"); + List<Integer> c = new ArrayList<>(asList(people[0].chars().toArray())); + range(1, people.length).forEach(i -> c.retainAll(asList(people[i].chars().toArray()))); + return c.size(); + }).sum(); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year20/days/Day7.java b/src/main/java/com/sbaars/adventofcode/year20/days/Day7.java new file mode 100644 index 00000000..c74b6ead --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year20/days/Day7.java @@ -0,0 +1,90 @@ +package com.sbaars.adventofcode.year20.days; + +import static java.lang.Math.toIntExact; +import static java.util.Arrays.stream; +import static java.util.Collections.singletonList; + +import com.sbaars.adventofcode.year20.Day2020; +import java.util.Deque; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.Optional; +import java.util.Set; +import java.util.stream.IntStream; + +public class Day7 extends Day2020 { + + private final Trade[] trades; + + public Day7() { + super(7); + this.trades = dayStream().filter(s -> !s.contains("no other bags")).map(Trade::new).toArray(Trade[]::new); + } + + public static void main(String[] args) { + new Day7().printParts(); + } + + @Override + public Object part1() { + return findBagTypes(new Item(1, "shiny gold"), new HashSet<>()).size() - 1; + } + + @Override + public Object part2() { + return findNumberOfBags(new LinkedList<>(singletonList(new Item(1, "shiny gold")))) - 1; + } + + private Trade[] getTrades(Item i) { + return stream(trades).filter(e -> stream(e.output).anyMatch(t -> t.item.equals(i.item) && t.amount >= i.amount)).toArray(Trade[]::new); + } + + private Optional<Trade> getTrade(Item i) { + return stream(trades).filter(e -> e.input.item.equals(i.item)).findAny(); + } + + private Set<String> findBagTypes(Item buyingItem, Set<String> visitedColors) { + visitedColors.add(buyingItem.item); + Trade[] possibleTrades = getTrades(buyingItem); + stream(possibleTrades).forEach(t -> findBagTypes(t.input, visitedColors)); + return visitedColors; + } + + private long findNumberOfBags(Deque<Item> leftOver) { + long total = 0; + while (!leftOver.isEmpty()) total += findBagsInside(leftOver, leftOver.pop()); + return total; + } + + private long findBagsInside(Deque<Item> leftOver, Item buyingItem) { + Optional<Trade> fuelTrade = getTrade(buyingItem); + fuelTrade.ifPresent(trade -> stream(trade.output).flatMap(i -> IntStream.rangeClosed(1, toIntExact(i.amount)).mapToObj(e -> new Item(1, i.item))).forEach(leftOver::add)); + return buyingItem.amount; + } + + public static class Trade { + public final Item input; + public final Item[] output; + + public Trade(String trade) { + String[] inputOutput = trade.split(" contain "); + output = stream(inputOutput[1].split(", ")).map(Item::new).toArray(Item[]::new); + input = new Item(1, inputOutput[0].replace(" bags", "")); + } + } + + public static class Item { + public final String item; + public long amount; + + public Item(String item) { + amount = Integer.parseInt(item.substring(0, 1)); + this.item = item.substring(2).replaceAll(" bags?\\.?", ""); + } + + public Item(long i, String string) { + amount = i; + item = string; + } + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year20/days/Day8.java b/src/main/java/com/sbaars/adventofcode/year20/days/Day8.java new file mode 100644 index 00000000..bfa05f16 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year20/days/Day8.java @@ -0,0 +1,40 @@ +package com.sbaars.adventofcode.year20.days; + +import com.sbaars.adventofcode.year20.Day2020; +import com.sbaars.adventofcode.year20.gamepad.Gamepad; +import java.util.HashSet; +import java.util.Set; + +public class Day8 extends Day2020 { + + public Day8() { + super(8); + } + + public static void main(String[] args) { + new Day8().printParts(); + } + + @Override + public Object part1() { + Gamepad gamepad = new Gamepad(dayStream()); + Set<Integer> visited = new HashSet<>(); + while (visited.add(gamepad.executeInstruction())); + return gamepad.getAccumulator(); + } + + @Override + public Object part2() { + for (int i = 0; i < 223; i++) { + Gamepad gamepad = new Gamepad(dayStream()); + gamepad.replaceInstruction("jmp", "nop", i); + Set<Integer> visited = new HashSet<>(); + while (visited.add(gamepad.executeInstruction())) { + if (gamepad.getCurrent() == gamepad.getSize()) { + return gamepad.getAccumulator(); + } + } + } + throw new IllegalStateException(); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year20/days/Day9.java b/src/main/java/com/sbaars/adventofcode/year20/days/Day9.java new file mode 100644 index 00000000..0899da17 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year20/days/Day9.java @@ -0,0 +1,50 @@ +package com.sbaars.adventofcode.year20.days; + +import static java.util.Arrays.copyOfRange; +import static java.util.Arrays.stream; + +import com.sbaars.adventofcode.year20.Day2020; +import java.util.HashSet; +import java.util.Set; + +public class Day9 extends Day2020 { + public Day9() { + super(9); + } + + public static void main(String[] args) { + new Day9().printParts(); + } + + @Override + public Object part1() { + long[] input = dayNumbers(); + for (int k = 0; k < input.length - 25; k++) { + Set<Long> sums = new HashSet<>(); + for (int i = k; i < k + 25; i++) { + for (int j = i + 1; j < k + 25; j++) { + sums.add(input[i] + input[j]); + } + } + if (!sums.contains(input[k + 25])) { + return input[k + 25]; + } + } + return 0; + } + + @Override + public Object part2() { + long[] input = dayNumbers(); + long part1Solution = (long) part1(); + for (int i = 2; i < input.length; i++) { + for (int j = 0; j <= input.length - i; j++) { + if (stream(input, j, j + i).sum() == part1Solution) { + long[] window = copyOfRange(input, j, j + i + 1); + return stream(window).max().getAsLong() + stream(window).min().getAsLong(); + } + } + } + return 0; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year20/gamepad/Gamepad.java b/src/main/java/com/sbaars/adventofcode/year20/gamepad/Gamepad.java new file mode 100644 index 00000000..75242339 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year20/gamepad/Gamepad.java @@ -0,0 +1,66 @@ +package com.sbaars.adventofcode.year20.gamepad; + +import java.util.stream.Stream; + +public class Gamepad { + private final Instruction[] instructions; + private long acc = 0; + private int current = 0; + + public Gamepad(Stream<String> input) { + this.instructions = input.map(s -> s.replace("+", "")) + .map(s -> s.split(" ")) + .map(s -> new Instruction(s[0], Long.parseLong(s[1]))) + .toArray(Instruction[]::new); + } + + public int executeInstruction() { + Instruction instruction = instructions[current]; + switch (instruction.operation) { + case "acc": + acc += instruction.number; + break; + case "jmp": + current += instruction.number - 1; + break; + case "nop": + break; + default: + throw new IllegalStateException(); + } + return current++; + } + + public void replaceInstruction(String instruction, String replacement, int occurrence) { + int numMatch = 0; + for (int i = 0; i < instructions.length; i++) { + if (instructions[i].operation.equals(instruction)) { + if (numMatch == occurrence) { + instructions[i] = new Instruction(replacement, instructions[i].number); + return; + } + numMatch++; + } + } + throw new IllegalStateException("Instruction to replace was not found"); + } + + public Instruction[] getInstructions() { + return instructions; + } + + public long getAccumulator() { + return acc; + } + + public int getCurrent() { + return current; + } + + public int getSize() { + return instructions.length; + } + + public static record Instruction(String operation, long number) { + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year21/Day2021.java b/src/main/java/com/sbaars/adventofcode/year21/Day2021.java new file mode 100644 index 00000000..4e24a699 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year21/Day2021.java @@ -0,0 +1,9 @@ +package com.sbaars.adventofcode.year21; + +import com.sbaars.adventofcode.common.Day; + +public abstract class Day2021 extends Day { + protected Day2021(int day) { + super(2021, day); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year21/Main.java b/src/main/java/com/sbaars/adventofcode/year21/Main.java new file mode 100644 index 00000000..1057bf40 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year21/Main.java @@ -0,0 +1,16 @@ +package com.sbaars.adventofcode.year21; + +import com.sbaars.adventofcode.common.Day; +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; + +public class Main { + public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException, IOException, InvocationTargetException, NoSuchMethodException { + for (int day = 1; day <= 25; day++) { + System.out.println("Day " + day + ":"); + Day instance = (Day) Class.forName("com.sbaars.adventofcode.year21.days.Day" + day).getDeclaredConstructor().newInstance(); + instance.printParts(); + System.out.println(); + } + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year21/days/Day1.java b/src/main/java/com/sbaars/adventofcode/year21/days/Day1.java new file mode 100644 index 00000000..96a48cbc --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year21/days/Day1.java @@ -0,0 +1,27 @@ +package com.sbaars.adventofcode.year21.days; + +import com.sbaars.adventofcode.year21.Day2021; + +import java.util.stream.IntStream; + +public class Day1 extends Day2021 { + public Day1() { + super(1); + } + + public static void main(String[] args) { + new Day1().printParts(); + } + + @Override + public Object part1() { + long[] input = dayNumbers(); + return IntStream.range(1, input.length).filter(i -> input[i-1] < input[i]).count(); + } + + @Override + public Object part2() { + long[] input = dayNumbers(); + return IntStream.range(3, input.length).filter(i -> input[i-3] + input[i-2] + input[i-1] < input[i] + input[i-2] + input[i-1]).count(); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year21/days/Day10.java b/src/main/java/com/sbaars/adventofcode/year21/days/Day10.java new file mode 100644 index 00000000..ffcd06a9 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year21/days/Day10.java @@ -0,0 +1,62 @@ +package com.sbaars.adventofcode.year21.days; + +import com.sbaars.adventofcode.year21.Day2021; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Stack; + +public class Day10 extends Day2021 { + public Day10() { + super(10); + } + + public static void main(String[] args) throws IOException { + new Day10().printParts(); + } + + @Override + public Object part1() { + return getScore(false).get(0); + } + + @Override + public Object part2() { + List<Long> scores = getScore(true); + return scores.stream().sorted().skip(scores.size()/2).findFirst().get(); + } + + private List<Long> getScore(boolean part) { + Map<Character, Character> m = Map.of(')', '(', ']', '[', '>', '<', '}', '{'); + Map<Character, Integer> p = part ? Map.of('(', 1, '[', 2, '{', 3, '<', 4) : Map.of(')', 3, ']', 57, '>', 25137, '}', 1197); + var in = dayStrings(); + List<Long> scores = new ArrayList<>(); + long score1 = 0; + out: for(String line : in){ + Stack<Character> s = new Stack<>(); + for(Character c : line.toCharArray()){ + if(m.containsKey(c)){ + if(!s.isEmpty()){ + Character stackC = s.pop(); + if(!m.get(c).equals(stackC)){ + if(!part) score1+=p.get(c); + continue out; + } + } + } else { + s.push(c); + } + } + if(!part) continue; + long score = 0; + while(!s.isEmpty()){ + Character c = s.pop(); + score = (score * 5) + p.get(c); + } + scores.add(score); + } + if(!part) return List.of(score1); + return scores; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year21/days/Day11.java b/src/main/java/com/sbaars/adventofcode/year21/days/Day11.java new file mode 100644 index 00000000..b9f6db79 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year21/days/Day11.java @@ -0,0 +1,46 @@ +package com.sbaars.adventofcode.year21.days; + +import com.sbaars.adventofcode.common.Direction; +import com.sbaars.adventofcode.common.HasRecursion; +import com.sbaars.adventofcode.common.grid.NumGrid; +import com.sbaars.adventofcode.year21.Day2021; +import java.awt.*; +import java.util.Arrays; + +public class Day11 extends Day2021 implements HasRecursion { + public Day11() { + super(11); + } + + public static void main(String[] args) { + new Day11().printParts(); + } + + @Override + public Object part1() { + var in = new NumGrid(day(), "\n", ""); + long flashes = 0; + for(int i = 0; i<100; i++){ + flashes+=in.stream().mapToLong(e -> flash(in, e)).sum(); + in.stream().filter(p -> in.get(p) > 9).forEach(p -> in.set(p, 0)); + } + return flashes; + } + + private long flash(NumGrid in, Point e) { + in.increment(e); + return in.get(e) == 10 ? Arrays.stream(Direction.eightDirections()).map(d -> d.move(e)).filter(p -> in.get(p) != -1).mapToLong(p -> flash(in, p)).sum() + 1 : 0; + } + + @Override + public Object part2() { + var in = new NumGrid(day(), "\n", ""); + for(int step = 1; true; step++){ + in.stream().forEach(e -> flash(in, e)); + in.stream().filter(p -> in.get(p) > 9).forEach(p -> in.set(p, 0)); + if(in.stream().mapToLong(in::get).allMatch(e -> e == 0L)){ + return step; + } + } + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year21/days/Day12.java b/src/main/java/com/sbaars/adventofcode/year21/days/Day12.java new file mode 100644 index 00000000..50545c92 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year21/days/Day12.java @@ -0,0 +1,71 @@ +package com.sbaars.adventofcode.year21.days; + +import com.google.common.collect.ImmutableListMultimap; +import com.sbaars.adventofcode.common.HasRecursion; +import com.sbaars.adventofcode.year19.util.CountMap; +import com.sbaars.adventofcode.year21.Day2021; + +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Stream; + +import static com.google.common.collect.ImmutableListMultimap.toImmutableListMultimap; + +public class Day12 extends Day2021 implements HasRecursion { + + public static final String START = "start"; + + public Day12() { + super(12); + } + + public static void main(String[] args) { + new Day12().printParts(); + } + + @Override + public Object part1() { + return findPos(START, getInput(), Set.of(START)); + } + + private ImmutableListMultimap<String, String> getInput() { + return dayStream().map(e -> e.split("-")).flatMap(e -> Stream.of(new String[]{e[0], e[1]}, new String[]{e[1], e[0]})).collect(toImmutableListMultimap(e -> e[0], e -> e[1])); + } + + private long findPos(String s, ImmutableListMultimap<String, String> in, Set<String> visited) { + if(s.equals("end")) return 1; + long n = 0; + List<String> reachable = in.get(s); + for(String l : reachable){ + if(!visited.contains(l)) { + Set<String> newSet = new HashSet<>(visited); + if(!l.toUpperCase().equals(l)) newSet.add(l); + n+=findPos(l, in, newSet); + } + } + return n; + } + + @Override + public Object part2() { + return findPos2(START, getInput(), Map.of(START, 2)); + } + + private long findPos2(String s, ImmutableListMultimap<String, String> in, Map<String, Integer> visited) { + if(s.equals("end")) { + return 1; + } + long n = 0; + List<String> reachable = in.get(s); + for(String l : reachable){ + if((!visited.containsKey(l) || visited.get(l) < 2) && visited.values().stream().filter(e -> e==2).count() <= 2) { + CountMap<String> newSet = new CountMap<>(visited); + if(!l.toUpperCase().equals(l)) newSet.increment(l); + n+=findPos2(l, in, newSet); + } + } + return n; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year21/days/Day13.java b/src/main/java/com/sbaars/adventofcode/year21/days/Day13.java new file mode 100644 index 00000000..a531ca6e --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year21/days/Day13.java @@ -0,0 +1,49 @@ +package com.sbaars.adventofcode.year21.days; + +import static com.sbaars.adventofcode.common.ReadsFormattedString.readString; +import static java.lang.Math.toIntExact; + +import com.sbaars.adventofcode.common.grid.Coordinates; +import com.sbaars.adventofcode.year21.Day2021; +import java.awt.*; +import java.util.Arrays; +import java.util.List; + +public class Day13 extends Day2021 { + private final Coordinates dots; + private final List<Fold> folds; + + public Day13() { + super(13); + var in = day().split("\n\n"); + dots = new Coordinates(in[0]); + folds = Arrays.stream(in[1].split("\n")).map(e -> readString(e, "fold along %s=%n", Fold.class)).toList(); + } + + public static void main(String[] args) { + new Day13().printParts(); + } + + @Override + public Object part1() { + return dots.stream().map(e -> fold(folds.get(0), e)).distinct().count(); + } + + public record Fold (String axis, long n){} + + @Override + public Object part2() { + var d = dots; + for(Fold f : folds) { + d = d.transform(e -> fold(f, e)); + } + return "\n"+d.toGrid().toString().replace(",", "").replace("0", " "); + } + + private Point fold(Fold f, Point e) { + if(f.axis.equals("y")){ + return e.y > f.n ? new Point(e.x, toIntExact(f.n - (e.y - f.n))) : e; + } + return e.x > f.n ? new Point(toIntExact(f.n - (e.x - f.n)), e.y) : e; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year21/days/Day14.java b/src/main/java/com/sbaars/adventofcode/year21/days/Day14.java new file mode 100644 index 00000000..872a68b2 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year21/days/Day14.java @@ -0,0 +1,56 @@ +package com.sbaars.adventofcode.year21.days; + +import com.sbaars.adventofcode.year19.util.LongCountMap; +import com.sbaars.adventofcode.year21.Day2021; +import java.util.Arrays; +import java.util.stream.Collectors; + +public class Day14 extends Day2021 { + public Day14() { + super(14); + } + + public static void main(String[] args) { + new Day14().printParts(); + } + + @Override + public Object part1() { + return simulateSteps(10); + } + + private long simulateSteps(int steps) { + var in = day().split("\n\n"); + var init = in[0]; + var strs = Arrays.stream(in[1].split("\n")).map(e -> e.split(" -> ")).collect(Collectors.toMap(e -> e[0], e -> e[1])); + var pairs = new LongCountMap<String>(); + for(int i = 0; i<init.length()-1; i++) { + pairs.increment(init.substring(i, i+2)); + } + LongCountMap<Character> chCounts = new LongCountMap<>(); + init.chars().forEach(e -> chCounts.increment((char)e)); + for(int step = 1; step <= steps; step++){ + var newPairs = new LongCountMap<String>(); + for(String pair : pairs.keySet()){ + long increment = pairs.get(pair); + if(strs.containsKey(pair)) { + String key = strs.get(pair); + String n1 = pair.substring(0, 1) + key; + String n2 = key + pair.substring(1, 2); + newPairs.increment(n1, increment); + newPairs.increment(n2, increment); + chCounts.increment(key.charAt(0), increment); + } else { + newPairs.increment(pair, increment); + } + } + pairs = newPairs; + } + return chCounts.values().stream().mapToLong(e -> e).max().getAsLong() - chCounts.values().stream().mapToLong(e -> e).min().getAsLong(); + } + + @Override + public Object part2() { + return simulateSteps(40); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year21/days/Day15.java b/src/main/java/com/sbaars/adventofcode/year21/days/Day15.java new file mode 100644 index 00000000..cf55f13f --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year21/days/Day15.java @@ -0,0 +1,77 @@ +package com.sbaars.adventofcode.year21.days; + +import com.sbaars.adventofcode.common.grid.NumGrid; +import com.sbaars.adventofcode.year21.Day2021; +import java.util.Comparator; +import java.util.PriorityQueue; + +public class Day15 extends Day2021 { + public Day15() { + super(15); + } + + public static void main(String[] args) { + new Day15().printParts(); + } + + @Override + public Object part1() { + var in = new NumGrid(day(), "\n", ""); + return shortestPath(in, in.sizeX()-1, in.sizeY()-1, 1); + } + + record Cell (int x, int y, long distance) {} + + static long shortestPath(NumGrid g, int row, int col, int resize) + { + long[][] grid = g.grid; + long[][] dist = new long[g.sizeX()*resize][g.sizeY()*resize]; + int[] dx = { 1, 0, -1, 0 }; + int[] dy = { 0, 1, 0, -1 }; + + for(int i = 0; i < dist.length; i++) { + for(int j = 0; j < dist[0].length; j++) { + dist[i][j] = Integer.MAX_VALUE; + } + } + + dist[0][0] = 0; + + PriorityQueue<Cell> pq = new PriorityQueue<>(row * col, Comparator.comparing(Cell::distance)); + pq.add(new Cell(0, 0, dist[0][0])); + while (!pq.isEmpty()) { + Cell curr = pq.poll(); + for(int i = 0; i < dx.length; i++) { + int rows = curr.x + dx[i]; + int cols = curr.y + dy[i]; + + if (isInsideGrid(rows, cols, dist.length, dist[0].length)) { + long gridNum = grid[rows % grid.length][cols % grid.length] + (rows/grid.length) + (cols/grid[0].length); + if(gridNum >= 10) gridNum -= 9; + + if (dist[rows][cols] > dist[curr.x][curr.y] + gridNum) { + if (dist[rows][cols] != Integer.MAX_VALUE) { + Cell adj = new Cell(rows, cols, dist[rows][cols]); + pq.remove(adj); + } + + dist[rows][cols] = dist[curr.x][curr.y] + gridNum; + + pq.add(new Cell(rows, cols, dist[rows][cols])); + } + } + } + } + return dist[dist.length-1][dist[0].length-1]; + } + + static boolean isInsideGrid(int i, int j, int sizex, int sizey) { + return i >= 0 && i < sizex && j >= 0 && j < sizey; + } + + @Override + public Object part2() { + var in = new NumGrid(day(), "\n", ""); + return shortestPath(in, (in.sizeX()*5)-1, (in.sizeY()*5)-1, 5); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year21/days/Day16.java b/src/main/java/com/sbaars/adventofcode/year21/days/Day16.java new file mode 100644 index 00000000..55908643 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year21/days/Day16.java @@ -0,0 +1,134 @@ +package com.sbaars.adventofcode.year21.days; + +import com.sbaars.adventofcode.common.HasRecursion; +import com.sbaars.adventofcode.year21.Day2021; +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.List; + +public class Day16 extends Day2021 implements HasRecursion { + + public Day16() { + super(16); + } + + public static void main(String[] args) { + new Day16().printParts(); + } + + @Override + public Object part1() { + return findSum(day()); + } + + private long findSum(String hex) { + return findPackets(hexToBin(hex.trim())); + } + + private long findPackets(String in) { + long sum = 0; + for(int i = 0; i< in.length();){ + if(in.substring(i).chars().allMatch(e -> e == '0')) break; + int version = binToDec(in.substring(i, i+3)); + sum+=version; + int id = binToDec(in.substring(i+3, i+6)); + i+=6; + if(id == 4){ + for(;;i+=5){ + if(in.charAt(i) == '0'){ + i+=5; + break; + } + } + } else { + int lengthLength = 15; + boolean b = in.charAt(i) == '1'; + if(b){ + lengthLength = 11; + } + i++; + int length = binToDec(in.substring(i, i+lengthLength)); + i+=lengthLength; + if(!b) { + sum += findPackets(in.substring(i, i + length)); + i += length; + } + } + } + return sum; + } + + String hexToBin(String s) { + return String.format("%"+(s.length()*4)+"s", new BigInteger(s, 16).toString(2)).replace(" ", "0"); + } + + int binToDec(String s) { + return Integer.parseInt(new BigInteger(s, 2).toString(10)); + } + + long binToLongDec(String s) { + return Long.parseLong(new BigInteger(s, 2).toString(10)); + } + + @Override + public Object part2() { + return findSum2(day()); + } + + private long findSum2(String hex) { + var in = hexToBin(hex.trim()); + return findPackets2(in, Integer.MAX_VALUE).get(0); + } + + int prevI = 0; + private List<Long> findPackets2(String in, int toParse) { + List<Long> res = new ArrayList<>(); + long sum = 0; + for(int i = 0, parsed = 0; i< in.length();parsed++){ + if(parsed >= toParse){ + break; + } + if(in.substring(i).chars().allMatch(e -> e == '0')) break; + int id = binToDec(in.substring(i+3, i+6)); + i+=6; + if(id == 4){ + String s = ""; + for(;;i+=5){ + s+=in.substring(i+1, i+5); + if(in.charAt(i) == '0'){ + i+=5; + break; + } + } + res.add(binToLongDec(s)); + } else { + int lengthLength = 15; + boolean b = in.charAt(i) == '1'; + if(b){ + lengthLength = 11; + } + i++; + int length = binToDec(in.substring(i, i+lengthLength)); + i+=lengthLength; + List<Long> op = findPackets2(in.substring(i, b ? in.length() : (i + length)), b ? length : Integer.MAX_VALUE); + res.add(performOp(op, id)); + i += b ? prevI : length; + } + prevI = i; + } + return res; + } + + private long performOp(List<Long> op, int id) { + return switch (id) { + case 0 -> op.stream().mapToLong(e -> e).sum(); + case 1 -> op.stream().mapToLong(e -> e).reduce((a,b) -> a*b).getAsLong(); + case 2 -> op.stream().mapToLong(e -> e).min().getAsLong(); + case 3 -> op.stream().mapToLong(e -> e).max().getAsLong(); + case 5 -> op.get(0) > op.get(1) ? 1L : 0L; + case 6 -> op.get(0) < op.get(1) ? 1L : 0L; + case 7 -> op.get(0).equals(op.get(1)) ? 1L : 0L; + default -> throw new IllegalStateException("Not known id: "+id); + }; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year21/days/Day17.java b/src/main/java/com/sbaars/adventofcode/year21/days/Day17.java new file mode 100644 index 00000000..761a08a1 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year21/days/Day17.java @@ -0,0 +1,59 @@ +package com.sbaars.adventofcode.year21.days; + +import static com.sbaars.adventofcode.common.ReadsFormattedString.readString; +import static java.lang.Long.MIN_VALUE; +import static java.lang.Math.toIntExact; + +import com.sbaars.adventofcode.year21.Day2021; +import java.awt.*; +import java.util.stream.IntStream; +import java.util.stream.LongStream; + +public class Day17 extends Day2021 { + public Day17() { + super(17); + } + + public static void main(String[] args) { + new Day17().printParts(); + } + + @Override + public Object part1() { + return getSol().max().getAsLong(); + } + + private LongStream getSol() { + var in = readString(day().trim(), "target area: x=%n..%n, y=%n..%n", Target.class); + var area = new Area(new Point(toIntExact(in.xStart), toIntExact(in.yStart)), new Point(toIntExact(in.xEnd), toIntExact(in.yEnd))); + return IntStream.range(-200, 300).boxed().flatMap(x -> IntStream.range(-200, 300).mapToObj(y -> new Point(x, y))).mapToLong(p -> simulateSteps(area, p)); + } + + public long simulateSteps(Area target, Point p){ + Point curr = new Point(0,0); + long highest = 0; + while(curr.y>target.topLeft.y && !target.inArea(curr)) { + curr = new Point(curr.x + p.x, curr.y + p.y); + p = new Point(p.x > 0 ? p.x - 1 : (p.x < 0 ? p.x - 1 : p.x), p.y - 1); + if(curr.y > highest) highest = curr.y; + if(curr.x == 0 && (curr.y < target.topLeft.y || curr.y > target.bottomRight.y)) break; + } + if(target.inArea(curr)){ + return highest; + } + return MIN_VALUE; + } + + @Override + public Object part2() { + return getSol().filter(e -> e!=MIN_VALUE).count(); + } + + public record Target(long xStart, long xEnd, long yStart, long yEnd){} + + public record Area(Point topLeft, Point bottomRight){ + public boolean inArea(Point p){ + return p.x>=topLeft.x && p.y >= topLeft.y && p.x <=bottomRight.x && p.y <= bottomRight.y; + } + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year21/days/Day18.java b/src/main/java/com/sbaars/adventofcode/year21/days/Day18.java new file mode 100644 index 00000000..122e244e --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year21/days/Day18.java @@ -0,0 +1,147 @@ +package com.sbaars.adventofcode.year21.days; + +import static java.lang.Integer.parseInt; + +import com.sbaars.adventofcode.year21.Day2021; +import java.awt.*; +import java.util.ArrayList; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +public class Day18 extends Day2021 { + public Day18() { + super(18); + } + + public static void main(String[] args) { + new Day18().printParts(); + } + + @Override + public Object part1() { + var in = dayStream().filter(e -> !e.isEmpty()).map(this::reduce).collect(Collectors.toCollection(ArrayList::new)); + while(in.size()>1){ + String one = in.remove(0); + String two = in.remove(0); + in.add(0, add(one, two)); + } + return magnitude(in.get(0)); + } + + private String add(String one, String two) { + return reduce("[" + one + "," + two + "]"); + } + + private String reduce(String s) { + String prev = ""; + while(!prev.equals(s)) { + prev = s; + s = explode(s); + if(prev.equals(s)) s = split(s); + } + return s; + } + + private String split(String s) { + for (int i = 0; i < s.length(); i++) { + int num = parseNumAt(i, s); + if(num>=10) { + String pair = "["+(num/2)+","+(num%2==0 ? num/2 : (num/2)+1)+"]"; + return s.substring(0, i) + pair + s.substring(i + 2); + } + } + return s; + } + + private String explode(String s) { + int depth = 0; + for(int i = 0; i<s.length()-5; i++){ + if(s.charAt(i) == '[') depth++; + else if(s.charAt(i) == ']') depth--; + if(depth>4) { + String pair = s.substring(i); + String repl = pair.replaceFirst("\\[[0-9]*,[0-9]*\\]", ""); + if (repl.length()<pair.length()) { + pair = pair.substring(0, pair.indexOf(']')+1); + int leftNum = parseNumAt(1, pair); + int rightNum = parseNumAt(pair.length()-2, pair); + int leftIndex = -1; + int rightIndex = -1; + for(int j = i-1; j>=0; j--){ + if(isNum(s.charAt(j))){ + leftIndex = j; + break; + } + } + for(int k = i+pair.length(); k<s.length(); k++){ + if(isNum(s.charAt(k))){ + rightIndex = k; + break; + } + } + String leftPart = leftIndex == -1 ? s.substring(0, i) : s.substring(0, leftIndex-(Integer.toString(parseNumAt(leftIndex, s)).length()-1)) + (leftNum+parseNumAt(leftIndex, s)) + s.substring(leftIndex+1, i); + String rightPart = rightIndex == -1 ? s.substring(i+pair.length()) : s.substring(i+pair.length(), rightIndex) + (rightNum+parseNumAt(rightIndex, s)) + s.substring(rightIndex+Integer.toString(parseNumAt(rightIndex, s)).length()); + return leftPart + 0 + rightPart; + } + } + } + return s; + } + + private int magnitude(String s) { + String prev = ""; + while(!prev.equals(s)) { + prev = s; + s = calcMag(s); + } + return Integer.parseInt(s); + } + + private String calcMag(String s) { + for(int i = 0; i<s.length()-5; i++){ + String pair = s.substring(i); + if (pair.endsWith(pair.replaceFirst("\\[[0-9]*,[0-9]*\\]", ""))) { + int leftNum = 0; + int rightNum = 0; + int leftIndex = -1; + int rightIndex = -1; + for(int j = i+1; j<s.length(); j++){ + char c = s.charAt(j); + if(c < '0' || c > '9'){ + leftNum = parseInt(s.substring(i+1, j)); + leftIndex = j; + break; + } + } + for(int k = leftIndex+1; k<s.length(); k++){ + char c = s.charAt(k); + if(c < '0' || c > '9'){ + rightNum = parseInt(s.substring(leftIndex+1, k)); + rightIndex = k; + break; + } + } + return s.substring(0, i) + ((leftNum*3)+(rightNum*2)) + s.substring(rightIndex+1); + } + } + return s; + } + + int parseNumAt(int i, String s){ + if(!isNum(s.charAt(i))) return -1; + int j = i; + for(; isNum(s.charAt(j)); j++); + for(; isNum(s.charAt(i)); i--); + return parseInt(s.substring(i+1, j)); + } + + boolean isNum(char c){ + return c >= '0' && c <= '9'; + } + + @Override + public Object part2() { + var in = dayStream().filter(e -> !e.isEmpty()).map(this::reduce).collect(Collectors.toCollection(ArrayList::new)); + return IntStream.range(0, in.size()).boxed().flatMap(x -> IntStream.range(0, in.size()).filter(y -> x!=y).mapToObj(y -> new Point(x, y))).mapToInt(p -> magnitude(reduce("["+in.get(p.x)+","+in.get(p.y)+"]"))).max().getAsInt(); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year21/days/Day19.java b/src/main/java/com/sbaars/adventofcode/year21/days/Day19.java new file mode 100644 index 00000000..dbbe1651 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year21/days/Day19.java @@ -0,0 +1,125 @@ +package com.sbaars.adventofcode.year21.days; + +import com.sbaars.adventofcode.common.IntLoc; +import com.sbaars.adventofcode.common.Loc3D; +import com.sbaars.adventofcode.year21.Day2021; +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Optional; +import java.util.Queue; +import org.apache.commons.lang3.tuple.Pair; + +public class Day19 extends Day2021 { + + public Day19() { + super(19); + } + + public static void main(String[] args) { + new Day19().printParts(); + } + + @Override + public Object part1() { + return findScannerPositions().getLeft().locs.size(); + } + + private Scanner[] scannerVariants(Scanner sc) { + Scanner[] variations = new Scanner[24]; + for (int up = 0; up < 6; up++) { + for (int rot = 0; rot < 4; rot++) { + variations[rot + up * 4] = new Scanner(sc, up, rot); + } + } + return variations; + } + + protected Pair<Scanner, Loc3D[]> findScannerPositions() { + Scanner[][] scanners = Arrays.stream(day().trim().split("\n\n")).map(Scanner::new).map(this::scannerVariants).toArray(Scanner[][]::new); + var orientation = new Scanner[scanners.length]; + var position = new Loc3D[scanners.length]; + + orientation[0] = scanners[0][0]; + position[0] = new Loc3D(0, 0, 0); + + Queue<Integer> queue = new ArrayDeque<>(List.of(0)); + + while (!queue.isEmpty()) { + var num = queue.poll(); + for (int i = 0; i < scanners.length; i++) { + if (position[i] == null) { + var match = orientation[num].match(scanners[i]); + if (match.isPresent()) { + orientation[i] = match.get().getLeft(); + Loc3D one = position[num]; + Loc3D two = match.get().getRight(); + position[i] = new Loc3D(one.x + two.x, one.y + two.y, one.z + two.z); + queue.add(i); + } + } + } + } + + var result = new Scanner(new ArrayList<>(orientation[0].locs)); + for (int i = 1; i < scanners.length; i++) { + result.add(orientation[i], position[i]); + } + return Pair.of(result, position); + } + + @Override + public Object part2() { + var p = findScannerPositions().getRight(); + return IntLoc.range(p.length, p.length).mapToLong(l -> Math.abs(p[l.x].x - p[l.y].x) + Math.abs(p[l.x].y - p[l.y].y) + Math.abs(p[l.x].z - p[l.y].z)).max().getAsLong(); + } + + public record Scanner(List<Loc3D> locs) { + public Scanner(String s) { + this(Arrays.stream(s.substring(s.indexOf("\n") + 1).split("\n")).map(e -> Arrays.stream(e.split(",")).mapToLong(Long::parseLong).toArray()).map(Loc3D::new).toList()); + } + + public Scanner(Scanner other, int up, int rot) { + this(other.locs.stream().map(e -> e.flip(up).rotate(rot)).toList()); + } + + private Optional<Loc3D> findMatch(Scanner s) { + for (int i = 0; i < locs.size(); i++) { + for (int j = 0; j < s.locs.size(); j++) { + var a = locs.get(i); + var b = s.locs.get(j); + var relx = b.x - a.x; + var rely = b.y - a.y; + var relz = b.z - a.z; + int count = 0; + for (int k = 0; k < locs.size(); k++) { + if ((count + locs.size() - k) < 12) break; + for (int l = 0; l < s.locs.size(); l++) { + var m = locs.get(k); + var n = s.locs.get(l); + if ((relx + m.x) == n.x && (rely + m.y) == n.y && (relz + m.z) == n.z) { + count++; + if (count >= 12) return Optional.of(new Loc3D(relx, rely, relz)); + break; + } + } + } + } + } + return Optional.empty(); + } + + public Optional<Pair<Scanner, Loc3D>> match(Scanner[] other) { + return Arrays.stream(other).map(e -> Pair.of(e, findMatch(e))).filter(e -> e.getRight().isPresent()).map(e -> Pair.of(e.getLeft(), e.getRight().get())).findFirst(); + } + + public void add(Scanner s, Loc3D p) { + for (int l = 0; l < s.locs.size(); l++) { + var n = s.locs.get(l); + n = new Loc3D(n.x - p.x, n.y - p.y, n.z - p.z); + if (!locs.contains(n)) locs.add(n); + } + } + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year21/days/Day2.java b/src/main/java/com/sbaars/adventofcode/year21/days/Day2.java new file mode 100644 index 00000000..6e01b4e3 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year21/days/Day2.java @@ -0,0 +1,62 @@ +package com.sbaars.adventofcode.year21.days; + +import static com.sbaars.adventofcode.common.ReadsFormattedString.readString; + +import com.sbaars.adventofcode.common.Direction; +import com.sbaars.adventofcode.common.Loc; +import com.sbaars.adventofcode.year21.Day2021; +import java.awt.*; +import java.util.List; + +public class Day2 extends Day2021 { + public Day2() { + super(2); + } + + public static void main(String[] args) { + new Day2().printParts(); + } + + @Override + public Object part1() { + Loc p = dayStream() + .map(e -> readString(e, "%s %n", Move.class)) + .reduce( + new Loc(), + (acc, m) -> new Loc(m.direction().move(acc.getPoint(), Math.toIntExact(m.n))), + Loc::move + ); + return p.x * p.y; + } + + @Override + public Object part2() { + List<Move> input = dayStream().map(e -> readString(e, "%s %n", Move.class)).toList(); + Point p = new Point(0, 0); + long aim = 0; + for(Move m : input) { + Direction d = m.direction(); + switch (d) { + case NORTH -> aim -= m.n; + case SOUTH -> aim += m.n; + case EAST -> { + p = Direction.EAST.move(p, Math.toIntExact(m.n)); + p = Direction.SOUTH.move(p, Math.toIntExact(aim * m.n)); + } + default -> throw new IllegalStateException("There must be a direction."); + } + } + return p.x * p.y; + } + + public record Move (String dir, long n) { + public Direction direction(){ + return switch (dir) { + case "forward" -> Direction.EAST; + case "up" -> Direction.NORTH; + case "down" -> Direction.SOUTH; + default -> throw new IllegalStateException("Unknown dir: " + dir); + }; + } + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year21/days/Day20.java b/src/main/java/com/sbaars/adventofcode/year21/days/Day20.java new file mode 100644 index 00000000..4ccaa73e --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year21/days/Day20.java @@ -0,0 +1,74 @@ +package com.sbaars.adventofcode.year21.days; + +import static com.sbaars.adventofcode.common.Direction.CENTER; +import static com.sbaars.adventofcode.common.Direction.EAST; +import static com.sbaars.adventofcode.common.Direction.SOUTHEAST; +import static com.sbaars.adventofcode.common.Direction.NORTH; +import static com.sbaars.adventofcode.common.Direction.NORTHEAST; +import static com.sbaars.adventofcode.common.Direction.SOUTH; +import static com.sbaars.adventofcode.common.Direction.SOUTHWEST; +import static com.sbaars.adventofcode.common.Direction.WEST; +import static com.sbaars.adventofcode.common.Direction.NORTHWEST; + +import com.sbaars.adventofcode.common.IntLoc; +import com.sbaars.adventofcode.common.grid.CharGrid; +import com.sbaars.adventofcode.common.grid.Coordinates; +import com.sbaars.adventofcode.common.grid.NumGrid; +import com.sbaars.adventofcode.year21.Day2021; +import java.awt.*; +import java.math.BigInteger; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class Day20 extends Day2021 { + public Day20() { + super(20); + } + + public static void main(String[] args) { + new Day20().printParts(); + } + + @Override + public Object part1() { + return doDay(2); + } + + private int doDay(int times) { + var in = day().split("\n\n"); + char[] replace = in[0].toCharArray(); + CharGrid inputImage = new CharGrid(in[1]); + Coordinates inputCoords = new Coordinates(IntLoc.range(inputImage.grid.length, inputImage.grid[0].length) + .filter(e -> inputImage.grid[e.y][e.x]=='#') + .map(IntLoc::getPoint) + .collect(Collectors.toSet())); + Coordinates outputImage = new Coordinates(); + for(int it = 0; it<times; it++){ + int iteration = it; + NumGrid n = inputCoords.toGrid(); + for(int i = -times; i<=n.sizeX()+times; i++){ + for(int j = -times; j<=n.sizeY()+times; j++){ + Point thisPoint = new Point(i, j); + String bin = Stream.of(NORTHWEST, NORTH, NORTHEAST, WEST, CENTER, EAST, SOUTHWEST, SOUTH, SOUTHEAST) + .map(dir -> Long.toString(n.at(dir.move(thisPoint), iteration%2==1 && replace[0] == '#' ? 1 : 0))) + .collect(Collectors.joining()); + if(replace[binToDec(bin)] == '#'){ + outputImage.add(thisPoint); + } + } + } + inputCoords = outputImage; + outputImage = new Coordinates(); + } + return inputCoords.size(); + } + + int binToDec(String s) { + return Integer.parseInt(new BigInteger(s, 2).toString(10)); + } + + @Override + public Object part2() { + return doDay(50); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year21/days/Day21.java b/src/main/java/com/sbaars/adventofcode/year21/days/Day21.java new file mode 100644 index 00000000..23c42dc3 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year21/days/Day21.java @@ -0,0 +1,98 @@ +package com.sbaars.adventofcode.year21.days; + +import com.google.common.base.Objects; +import com.sbaars.adventofcode.common.HasRecursion; +import com.sbaars.adventofcode.year21.Day2021; +import org.apache.commons.math3.util.Pair; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; + +public class Day21 extends Day2021 implements HasRecursion { + public Day21() { + super(21); + } + + public static void main(String[] args) { + new Day21().printParts(); + } + + @Override + public Object part1() { + int player1 = 7; + int player2 = 2; + int score1= 0; + int score2 = 0; + int thr = 1; + boolean turn = true; + while(true){ + for(int j = 1; j<=3; j++) { + if(turn){ + player1 = player1 + thr; + while(player1>10) player1-=10; + } else { + player2 = player2 + thr; + while(player2>10) player2-=10; + } + thr++; + } + if(turn) { + score1+=player1; + } else { + score2+=player2; + } + if(score1 >= 1000 || score2 >= 1000){ + return Math.min(score1, score2) * (thr-1); + } + turn = !turn; + } + } + + @Override + public Object part2() { + Pair<Long, Long> universes = universes(new HashMap<>(), new State(7, 2, 0, 0, true)); + return Math.max(universes.getFirst(), universes.getSecond()); + } + + private Pair<Long, Long> universes(Map<State, Pair<Long, Long>> m, State s) { + Pair<Long, Long> wins = new Pair<>(0L, 0L); + if(m.containsKey(s)) { + return m.get(s); + } else if(Math.max(s.score[0], s.score[1]) >= 21){ + return new Pair<>(s.move ? 0L : 1L, s.move ? 1L : 0L); + } + for(int i = 1; i<=3; i++){ + for(int j = 1; j<=3; j++){ + for(int k = 1; k<=3; k++){ + int newTurn = s.turn[s.move ? 0 : 1] + i + j + k; + while(newTurn>10) newTurn-=10; + int newScore = s.score[s.move ? 0 : 1] + newTurn; + Pair<Long, Long> newWins = universes(m, new State(s.move ? newTurn : s.turn[0], s.move ? s.turn[1] : newTurn, s.move ? newScore : s.score[0], s.move ? s.score[1] : newScore, !s.move)); + wins = new Pair<>(wins.getFirst() + newWins.getFirst(), wins.getSecond() + newWins.getSecond()); + } + } + } + m.put(s, wins); + return wins; + } + + public record State(int[] turn, int[] score, boolean move) { + public State (int t1, int t2, int s1, int s2, boolean move){ + this(new int[]{t1,t2}, new int[]{s1, s2}, move); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + State state = (State) o; + return move == state.move && Arrays.equals(turn, state.turn) && Arrays.equals(score, state.score); + } + + @Override + public int hashCode() { + return Objects.hashCode(turn[0], turn[1], score[0], score[1], move); + } + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year21/days/Day22.java b/src/main/java/com/sbaars/adventofcode/year21/days/Day22.java new file mode 100644 index 00000000..5ac33099 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year21/days/Day22.java @@ -0,0 +1,102 @@ +package com.sbaars.adventofcode.year21.days; + +import static com.sbaars.adventofcode.common.ReadsFormattedString.readString; +import static java.math.BigInteger.ZERO; + +import com.sbaars.adventofcode.common.Loc3D; +import com.sbaars.adventofcode.year21.Day2021; +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class Day22 extends Day2021 { + public Day22() { + super(22); + } + + public static void main(String[] args) { + new Day22().printParts(); + } + + @Override + public Object part1() { + var in = dayStream().map(e -> readString(e, "%s x=%n..%n,y=%n..%n,z=%n..%n", Cube.class)).toList(); + Set<Loc3D> locs = new HashSet<>(); + for(Cube c : in){ + for(long i = Math.max(c.xStart, -50); i<=Math.min(c.xEnd, 50); i++){ + for(long j = Math.max(c.yStart, -50); j<=Math.min(c.yEnd, 50); j++){ + for(long k = Math.max(c.zStart, -50); k<=Math.min(c.zEnd, 50); k++){ + Loc3D l = new Loc3D(i, j, k); + if(c.status.equals("on")){ + locs.add(l); + } else { + locs.remove(l); + } + } + } + } + } + return locs.size(); + } + + @Override + public Object part2() { + var in = dayStream().map(e -> readString(e, "%s x=%n..%n,y=%n..%n,z=%n..%n", Cube.class)).toList(); + List<Cube> cubes = new ArrayList<>(); + for(Cube cur : in) { + Cube cu = new Cube(cur.status, cur.xStart, cur.xEnd+1, cur.yStart, cur.yEnd+1, cur.zStart, cur.zEnd+1); + cubes = cubes.stream().flatMap(c -> c.getSubCubes(cu)).collect(Collectors.toCollection(ArrayList::new)); + if (cu.status.equals("on")) { + cubes.add(cu); + } + } + return cubes.stream().map(this::cubeSize).reduce(BigInteger::add).orElse(ZERO); + } + + private BigInteger cubeSize(Cube c) { + return BigInteger.valueOf(c.xEnd - c.xStart).multiply(BigInteger.valueOf(c.yEnd - c.yStart)).multiply(BigInteger.valueOf(c.zEnd - c.zStart)); + } + + public record Cube (String status, long xStart, long xEnd, long yStart, long yEnd, long zStart, long zEnd) { + private Stream<Cube> getSubCubes(Cube c2) { + if (c2.contains(this)) { + return Stream.of(); + } else if (!touches(c2)) { + return Stream.of(this); + } + + var xIntersect = Stream.of(c2.xStart, c2.xEnd).filter(x -> xStart < x && x < xEnd).collect(Collectors.toCollection(ArrayList::new)); + var yIntersect = Stream.of(c2.yStart, c2.yEnd).filter(y -> yStart < y && y < yEnd).collect(Collectors.toCollection(ArrayList::new)); + var zIntersect = Stream.of(c2.zStart, c2.zEnd).filter(z -> zStart < z && z < zEnd).collect(Collectors.toCollection(ArrayList::new)); + + xIntersect.add(0, xStart); + xIntersect.add(xEnd); + yIntersect.add(0, yStart); + yIntersect.add(yEnd); + zIntersect.add(0, zStart); + zIntersect.add(zEnd); + + var res = new ArrayList<Cube>(); + for (int i = 0; i<xIntersect.size()-1; i++) { + for (int j = 0; j<yIntersect.size()-1; j++) { + for (int k = 0; k<zIntersect.size()-1; k++) { + res.add(new Cube(status, xIntersect.get(i), xIntersect.get(i+1), yIntersect.get(j), yIntersect.get(j+1), zIntersect.get(k), zIntersect.get(k+1))); + } + } + } + return res.stream().filter(c -> !c2.contains(c)); + } + + private boolean contains(Cube b) { + return xStart <= b.xStart && xEnd >= b.xEnd && yStart <= b.yStart && yEnd >= b.yEnd && zStart <= b.zStart && zEnd >= b.zEnd; + } + + private boolean touches(Cube b) { + return xStart <= b.xEnd && xEnd >= b.xStart && yStart <= b.yEnd && yEnd >= b.yStart && zStart <= b.zEnd && zEnd >= b.zStart; + } + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year21/days/Day23.java b/src/main/java/com/sbaars/adventofcode/year21/days/Day23.java new file mode 100644 index 00000000..8f6e3bac --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year21/days/Day23.java @@ -0,0 +1,281 @@ +package com.sbaars.adventofcode.year21.days; + +import static com.google.common.base.Preconditions.checkState; + +import com.google.common.base.MoreObjects; +import com.sbaars.adventofcode.year21.Day2021; +import java.util.Arrays; +import java.util.Comparator; +import java.util.HashSet; +import java.util.Optional; +import java.util.PriorityQueue; +import java.util.Queue; +import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.IntStream; +import org.apache.commons.lang3.ArrayUtils; + +public class Day23 extends Day2021 { + public Day23() { + super(23); + } + + public static void main(String[] args) { + new Day23().verify(); + new Day23().printParts(); + } + + public void verify(){ + Queue<State> l = getQueue(new State(new int[][]{{0,0},{1,1},{2,2},{3,3}}, new int[]{-1,-1,-1,-1,-1,-1,-1})); + checkState(l.peek().win()); + simulateMoves(l, new HashSet<>()); + checkState(l.isEmpty()); + l = getQueue(new State(new int[][]{{0,0},{1,1},{2,2},{-1,3}}, new int[]{-1,-1,-1,-1,-1,-1,3})); + simulateMoves(l, new HashSet<>()); + checkState(l.size() == 1); + checkState(l.poll().win()); + l = getQueue(new State(new int[][]{{0,0},{2,1},{1,2},{3,3}}, new int[]{-1,-1,-1,-1,-1,-1,-1})); + checkState(getMinimum(l, new HashSet<>()) == (100L*4)+(10L*6)); + l = getQueue(new State(new int[][]{{0,0},{2,2},{1,1},{3,3}}, new int[]{-1,-1,-1,-1,-1,-1,-1})); + checkState(getMinimum(l, new HashSet<>()) == (100L*10)+(10L*14)); + l = getQueue(new State(new int[][]{{0,0,0,0},{2,2,2,2},{1,1,1,1},{3,3,3,3}}, new int[]{-1,-1,-1,-1,-1,-1,-1})); + checkState(getMinimum(l, new HashSet<>()) == 3240L); + } + + @Override + public Object part1() { + if(example == 1) { + return constructField(new int[][]{{1, 0}, {2, 3}, {1, 2}, {3, 0}}); + } + return constructField(new int[][]{{2, 1}, {3, 0}, {0, 3}, {1, 2}}); + } + + private long constructField(int[][] rooms) { + int[] waiting = new int[7]; + Arrays.fill(waiting, -1); + Set<State> stateSet = new HashSet<>(); + Queue<State> states = getQueue(new State(rooms, waiting, 0, 0)); + return getMinimum(states, stateSet); + } + + private PriorityQueue<State> getQueue(State s) { + var queue = new PriorityQueue<>(1000, Comparator.comparing(State::energySpent)); + queue.add(s); + return queue; + } + + private long getMinimum(Queue<State> states, Set<State> stateSet) { + while(true){ + Optional<Long> sim = simulateMoves(states, stateSet); + if(sim.isPresent()) { + return sim.get(); + } + } + } + + private Optional<Long> simulateMoves(Queue<State> states, Set<State> stateSet) { + State s = states.poll(); + if(stateSet.contains(s)) return Optional.empty(); + stateSet.add(s); + if(s.win()){ + return Optional.of(s.energySpent); + } + int[] occupied = s.occupiedRooms(); + for(int r : occupied){ + int[] freeWait = s.freeWaiting(r); + for(int w : freeWait){ + states.add(s.moveIntoWaiting(r, w)); + } + } + occupied = s.occupiedWaiting(); + for(int w : occupied){ + int r = s.freeRoom(w); + if(r!=-1){ + states.add(s.moveFromWaiting(w, r)); + } + } + return Optional.empty(); + } + + public record State(int[][] rooms, int[] waiting, long energySpent, long moves){ + public State(int[][] rooms, int[] waiting){ + this(rooms, waiting, 0L, 0L); + } + + public State copy(long newEnergy){ + int[][] room = Arrays.stream(rooms).map(int[]::clone).toArray(int[][]::new);; + int[] wait = Arrays.copyOf(waiting, waiting.length); + return new State(room, wait, energySpent + newEnergy, moves + 1); + } + + public State moveIntoWaiting(int r, int w){ + int toMove = ArrayUtils.lastIndexOf(rooms[r], -1) + 1; + State s = copy(energy(rooms[r][toMove]) * (energyMultiplier(r, w) + toMove)); + s.waiting[w] = s.rooms[r][toMove]; + s.rooms[r][toMove] = -1; + return s; + } + + public long energy(int x){ + return switch(x) { + case 0 -> 1L; + case 1 -> 10L; + case 2 -> 100L; + case 3 -> 1000L; + default -> throw new IllegalStateException("Invalid "+x); + }; + } + + public long energyMultiplier(int r, int w) { + if(r == 0 && w == 0) { + return 3; + } else if(r == 0 && w == 1) { + return 2; + } else if(r == 0 && w == 2) { + return 2; + } else if(r == 0 && w == 3) { + return 4; + } else if(r == 0 && w == 4) { + return 6; + } else if(r == 0 && w == 5) { + return 8; + } else if(r == 0 && w == 6) { + return 9; + } else if(r == 1 && w == 0) { + return 5; + } else if(r == 1 && w == 1) { + return 4; + } else if(r == 1 && w == 2) { + return 2; + } else if(r == 1 && w == 3) { + return 2; + } else if(r == 1 && w == 4) { + return 4; + } else if(r == 1 && w == 5) { + return 6; + } else if(r == 1 && w == 6) { + return 7; + } else if(r == 2 && w == 0) { + return 7; + } else if(r == 2 && w == 1) { + return 6; + } else if(r == 2 && w == 2) { + return 4; + } else if(r == 2 && w == 3) { + return 2; + } else if(r == 2 && w == 4) { + return 2; + } else if(r == 2 && w == 5) { + return 4; + } else if(r == 2 && w == 6) { + return 5; + } else if(r == 3 && w == 0) { + return 9; + } else if(r == 3 && w == 1) { + return 8; + } else if(r == 3 && w == 2) { + return 6; + } else if(r == 3 && w == 3) { + return 4; + } else if(r == 3 && w == 4) { + return 2; + } else if(r == 3 && w == 5) { + return 2; + } else if(r == 3 && w == 6) { + return 3; + } + throw new IllegalStateException("Invalid move "+r+", "+w); + } + + public State moveFromWaiting(int w, int r){ + int toMove = ArrayUtils.lastIndexOf(rooms[r], -1); + if(toMove == -1){ + toMove = 0; + } + State s = copy(energy(waiting[w]) * (energyMultiplier(r, w) + toMove)); + s.rooms[r][toMove] = s.waiting[w]; + s.waiting[w] = -1; + return s; + } + + public int[] occupiedRooms(){ + return IntStream.range(0, rooms.length).filter(e -> !IntStream.of(rooms[e]).allMatch(r->r ==e || r == -1)).toArray(); + } + + public int[] occupiedWaiting(){ + return IntStream.range(0, waiting.length).filter(e -> waiting[e] != -1).toArray(); + } + + public int freeRoom(int forWaiting){ + int room = waiting[forWaiting]; + if(rooms[room][rooms[room].length-1] != -1 && rooms[room][rooms[room].length-1] != room) return -1; + int r = room + 1; + for(int i = forWaiting+1; i<=r; i++){ + if(waiting[i] != -1){ + return -1; + } + } + for(int i = forWaiting-1; i>r; i--){ + if(waiting[i] != -1){ + return -1; + } + } + return room; + } + + // Indexes of free waiting spots + public int[] freeWaiting(int forRoom){ + var seeminglyFree = IntStream.range(0, waiting.length).filter(e -> waiting[e] == -1).boxed().collect(Collectors.toCollection(HashSet::new)); + int r = forRoom+1; + for(int i = r; i>=0; i--){ + if(!seeminglyFree.contains(i)){ + int i2 = i; + seeminglyFree.removeIf(x -> x<i2); + break; + } + } + for(int i = r+1; i<waiting.length; i++){ + if(!seeminglyFree.contains(i)){ + int i2 = i; + seeminglyFree.removeIf(x -> x>i2); + break; + } + } + return seeminglyFree.stream().mapToInt(e -> e).toArray(); + } + + public boolean win(){ + return IntStream.range(0, rooms.length).allMatch(e -> IntStream.of(rooms[e]).allMatch(f -> f==e)); + } + + @Override + public String toString() { + return MoreObjects.toStringHelper(this) + .add("rooms", rooms) + .add("waiting", waiting) + .add("energySpent", energySpent) + .toString(); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + State state = (State) o; + return Arrays.deepEquals(rooms, state.rooms) && Arrays.equals(waiting, state.waiting); + } + + @Override + public int hashCode() { + return Arrays.deepHashCode(rooms) + Arrays.hashCode(waiting); + } + } + + @Override + public Object part2() { + if(example == 1) { + return constructField(new int[][]{{1, 3, 3, 0}, {2, 2, 1, 3}, {1, 1, 0, 2}, {3, 0, 2, 0}}); + } + return constructField(new int[][]{{2, 3, 3, 1}, {3, 2, 1, 0}, {0, 1, 0, 3}, {1, 0, 2, 2}}); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year21/days/Day24.java b/src/main/java/com/sbaars/adventofcode/year21/days/Day24.java new file mode 100644 index 00000000..2d14c7f6 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year21/days/Day24.java @@ -0,0 +1,110 @@ +package com.sbaars.adventofcode.year21.days; + +import com.sbaars.adventofcode.common.HasRecursion; +import com.sbaars.adventofcode.year21.Day2021; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +import static java.lang.Long.parseLong; + +public class Day24 extends Day2021 implements HasRecursion { + + public Day24() { + super(24); + } + + public static void main(String[] args) { + new Day24().printParts(); + } + + @Override + public Object part1() { + return calcSolution(9, false); + } + + private String calcSolution(int i, boolean part) { + var in = dayStream().map(e -> new Instruction(e.split(" "))).toList(); + Map<Character, Long> vars = new HashMap<>(); + Map<String, String> processed = new HashMap<>(8192, 0.5f); + return processNumbers(new State(vars, processed, in, i, part), 0).get(); + } + + @Override + public Object part2() { + return calcSolution(3, true); + } + + public record Instruction (String op, String n1, String n2){ + public Instruction (String[] s){ + this(s[0], s[1], s.length>2 ? s[2] : ""); + } + + public int execute(Map<Character, Long> vars) { + char c = n1.charAt(0); + switch (op) { + case "add" -> vars.put(c, getVar(vars, n1) + getVar(vars, n2)); + case "mul" -> vars.put(c, getVar(vars, n1) * getVar(vars, n2)); + case "div" -> vars.put(c, getVar(vars, n1) / getVar(vars, n2)); + case "mod" -> vars.put(c, getVar(vars, n1) % getVar(vars, n2)); + case "eql" -> vars.put(c, getVar(vars, n1) == getVar(vars, n2) ? 1L : 0L); + default -> throw new IllegalStateException("Don't care " + op); + } + return 0; + } + + public boolean isInput(){ + return op.equals("inp"); + } + + public long getVar(Map<Character, Long> vars, String v) { + char c = v.charAt(0); + if(c >= '0' && c <= '9' || c=='-') return parseLong(v); + if(vars.containsKey(c)) { + return vars.get(c); + } + return 0; + } + } + + public record State(Map<Character, Long> vars, Map<String, String> processed, List<Instruction> in, int firstNum, boolean p) { + public State clone(Map<Character, Long> vars) { + return new State(vars, processed, in, firstNum, p); + } + } + + public Optional<String> findBestNumbers(State s, int curInstruction) { + String state= curInstruction + s.vars.toString(); + if (s.processed.containsKey(state)) { + return Optional.ofNullable(s.processed.get(state)); + } + Optional<String> res = processNumbers(s, curInstruction); + s.processed.put(state, res.orElse(null)); + return res; + } + + public Optional<String> processNumbers(State s, int curInstruction) { + if (curInstruction == s.in.size()) { + long z = s.vars.get('z'); + if (z==0) return Optional.of(""); + return Optional.empty(); + } + + Instruction line = s.in.get(curInstruction); + if (line.isInput()) { + for(long i=s.p ? 1 : 9; s.p ? i<=9 : i>0; i+=s.p?1:-1) { + long e = curInstruction<5 ? s.firstNum : i; + Map<Character, Long> n = new HashMap<>(s.vars); + n.put(line.n1.charAt(0), e); + Optional<String> sol = findBestNumbers(s.clone(n), curInstruction+1); + if (sol.isPresent()) return sol.map(s2 -> e+s2); + } + return Optional.empty(); + } else { + line.execute(s.vars); + return processNumbers(s, curInstruction+1); + } + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year21/days/Day25.java b/src/main/java/com/sbaars/adventofcode/year21/days/Day25.java new file mode 100644 index 00000000..2e05a2a4 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year21/days/Day25.java @@ -0,0 +1,55 @@ +package com.sbaars.adventofcode.year21.days; + +import com.sbaars.adventofcode.common.Day; +import com.sbaars.adventofcode.common.grid.CharGrid; +import com.sbaars.adventofcode.year21.Day2021; + +public class Day25 extends Day2021 { + public Day25() { + super(25); + } + + public static void main(String[] args) { + Day d = new Day25(); + d.downloadIfNotDownloaded(); + d.printParts(); + } + + @Override + public Object part1() { + var in = dayGrid(); + CharGrid g = new CharGrid(in); + for(int x = 1;;x++){ + var g2 = g.copy(); + for(int i = 0; i<g.grid[0].length; i++){ + for(int j = 0; j<g.grid.length; j++){ + if(g.grid[j][i] == '>' && g.grid[j][(i+1)%g.grid[0].length] == '.') { + g2.grid[j][i] = '.'; + g2.grid[j][(i+1)%g.grid[0].length] = '>'; + } + } + } + var g3 = g2.copy(); + for(int i = 0; i<g2.grid[0].length; i++){ + for(int j = 0; j<g2.grid.length; j++){ + if(g2.grid[j][i] == 'v' && g2.grid[(j+1)%g2.grid.length][i] == '.') { + g3.grid[j][i] = '.'; + g3.grid[(j+1)%g.grid.length][i] = 'v'; + } + } + } + if(g.equals(g3)) { + return x; + } + g = g3; + if(x>500){ + return x; + } + } + } + + @Override + public Object part2() { + return "Merry Christmas"; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year21/days/Day3.java b/src/main/java/com/sbaars/adventofcode/year21/days/Day3.java new file mode 100644 index 00000000..f34f9f64 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year21/days/Day3.java @@ -0,0 +1,62 @@ +package com.sbaars.adventofcode.year21.days; + +import com.sbaars.adventofcode.common.HasRecursion; +import com.sbaars.adventofcode.year21.Day2021; + +import java.util.ArrayList; +import java.util.List; + +import static java.lang.Integer.parseInt; + +public class Day3 extends Day2021 implements HasRecursion { + public Day3() { + super(3); + } + + public static void main(String[] args) { + new Day3().printParts(); + } + + @Override + public Object part1() { + var in = dayStrings(); + StringBuilder most = new StringBuilder(); + StringBuilder least = new StringBuilder(); + + for(int i = 0; i<in[0].length(); i++){ + if(moreZeros(in, i)){ + most.append("0"); + least.append("1"); + } else { + most.append("1"); + least.append("0"); + } + } + return parseInt(most.toString(), 2) * parseInt(least.toString(), 2); + } + + private boolean moreZeros(String[] in, int i) { + int ones = 0, zeros = 0; + for(String s : in){ + if(s.charAt(i) == '1'){ + ones++; + } else { + zeros++; + } + } + return ones<zeros; + } + + @Override + public Object part2() { + var in = dayStream().toList(); + return parseInt(findVal(in, true, 0).get(0), 2) * parseInt(findVal(in, false, 0).get(0), 2); + } + + private List<String> findVal(List<String> in, boolean high, int pos) { + List<String> res = new ArrayList<>(in); + res.removeIf(e -> e.charAt(pos) == (!moreZeros(in.toArray(String[]::new), pos)^high ? '1' : '0')); + if(res.size() == 1) return res; + return findVal(res, high, pos+1); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year21/days/Day4.java b/src/main/java/com/sbaars/adventofcode/year21/days/Day4.java new file mode 100644 index 00000000..7500ef66 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year21/days/Day4.java @@ -0,0 +1,84 @@ +package com.sbaars.adventofcode.year21.days; + +import com.sbaars.adventofcode.common.grid.NumGrid; +import com.sbaars.adventofcode.year21.Day2021; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +public class Day4 extends Day2021 { + + public Day4() { + super(4); + } + + public static void main(String[] args) { + new Day4().printParts(); + } + + @Override + public Object part1() { + var in = day(); + String[] split = in.split("\n\n"); + long[] nums = Arrays.stream(split[0].split(",")).mapToLong(Long::parseLong).toArray(); + List<NumGrid> cards = IntStream.range(1, split.length).mapToObj(i -> split[i]).map(NumGrid::new).toList(); + for(long num : nums){ + for(NumGrid card : cards){ + if(markCard(card, num) && checkCard(card)){ + return result(card, num); + } + } + } + return ""; + } + + private long result(NumGrid card, long num) { + return card.sumExcept(-1) * num; + } + + private boolean markCard(NumGrid card, long num){ + return card.replace(num, -1); + } + + private boolean checkCard(NumGrid grid){ + long[][] card = grid.grid; + for(long[] nums : card){ + if(Arrays.stream(nums).allMatch(n -> n==-1)){ + return true; + } + } + out: for(int i = 0; i<card[0].length; i++){ + for(int j = 0; j<card[i].length; j++){ + if(card[j][i] != -1){ + continue out; + } + } + return true; + } + return false; + } + + @Override + public Object part2() { + var in = day(); + String[] split = in.split("\n\n"); + long[] nums = Arrays.stream(split[0].split(",")).mapToLong(Long::parseLong).toArray(); + List<NumGrid> cards = IntStream.range(1, split.length).mapToObj(i -> new NumGrid(split[i])).collect(Collectors.toCollection(ArrayList::new)); + for(long num : nums){ + for(int i = 0; i<cards.size(); i++){ + NumGrid card = cards.get(i); + if(markCard(card, num) && checkCard(card)){ + if(cards.size() == 1){ + return result(card, num); + } else { + cards.remove(i); + i--; + } + } + } + } + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year21/days/Day5.java b/src/main/java/com/sbaars/adventofcode/year21/days/Day5.java new file mode 100644 index 00000000..a77de10c --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year21/days/Day5.java @@ -0,0 +1,92 @@ +package com.sbaars.adventofcode.year21.days; + +import static com.sbaars.adventofcode.common.ReadsFormattedString.readString; + +import com.sbaars.adventofcode.year21.Day2021; +import java.awt.*; +import java.util.HashSet; +import java.util.Set; + +public class Day5 extends Day2021 { + + public Day5() { + super(5); + } + + public static void main(String[] args) { + new Day5().printParts(1); + } + + @Override + public Object part1() { + var in = dayStream().map(e -> readString(e, "%n,%n -> %n,%n", Coords.class)).toList(); + Set<Point> all = new HashSet<>(); + Set<Point> vis = new HashSet<>(); + for(Coords c : in) { + if(c.x1 == c.x2){ + for(long y = Math.min(c.y1, c.y2); y<=Math.max(c.y1, c.y2); y++){ + var l = new Point(Math.toIntExact(c.x1), Math.toIntExact(y)); + if(!all.add(l)){ + vis.add(l); + } + } + } else if(c.y1 == c.y2){ + for(long x = Math.min(c.x1, c.x2); x<=Math.max(c.x1, c.x2); x++){ + var l = new Point(Math.toIntExact(x), Math.toIntExact(c.y1)); + if(!all.add(l)){ + vis.add(l); + } + } + } + } + return vis.size(); + } + + @Override + public Object part2() { + var in = dayStream().map(e -> readString(e, "%n,%n -> %n,%n", Coords.class)).toList(); + Set<Point> all = new HashSet<>(); + Set<Point> vis = new HashSet<>(); + for(Coords c : in) { + if(c.x1 == c.x2){ + for(long y = Math.min(c.y1, c.y2); y<=Math.max(c.y1, c.y2); y++){ + var l = new Point(Math.toIntExact(c.x1), Math.toIntExact(y)); + if(!all.add(l)){ + vis.add(l); + } + } + } else if(c.y1 == c.y2){ + for(long x = Math.min(c.x1, c.x2); x<=Math.max(c.x1, c.x2); x++){ + var l = new Point(Math.toIntExact(x), Math.toIntExact(c.y1)); + if(!all.add(l)){ + vis.add(l); + } + } + } else if((c.x1 > c.x2 && c.y1 > c.y2) || (c.x1 < c.x2 && c.y1 < c.y2)){ + for(long x = 0; x<=Math.max(c.x1, c.x2)-Math.min(c.x1, c.x2); x++){ + var l = new Point(Math.toIntExact(Math.min(c.x1, c.x2)+x), Math.toIntExact(Math.min(c.y1, c.y2)+x)); + if(!all.add(l)){ + vis.add(l); + } + } + }else if(c.x1 < c.x2 && c.y1 > c.y2){ + for(long x = 0; x<=Math.max(c.x1, c.x2)-Math.min(c.x1, c.x2); x++){ + var l = new Point(Math.toIntExact(c.x1+x), Math.toIntExact(c.y1-x)); + if(!all.add(l)){ + vis.add(l); + } + } + }else if(c.x1 > c.x2 && c.y1 < c.y2){ + for(long x = 0; x<=Math.max(c.x1, c.x2)-Math.min(c.x1, c.x2); x++){ + var l = new Point(Math.toIntExact(c.x1-x), Math.toIntExact(c.y1+x)); + if(!all.add(l)){ + vis.add(l); + } + } + } else throw new IllegalStateException("not covered "+c); + } + return vis.size(); + } + + public record Coords(long x1, long y1, long x2, long y2) {} +} diff --git a/src/main/java/com/sbaars/adventofcode/year21/days/Day6.java b/src/main/java/com/sbaars/adventofcode/year21/days/Day6.java new file mode 100644 index 00000000..4c1a0357 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year21/days/Day6.java @@ -0,0 +1,43 @@ +package com.sbaars.adventofcode.year21.days; + +import com.sbaars.adventofcode.year19.util.LongCountMap; +import com.sbaars.adventofcode.year21.Day2021; + +public class Day6 extends Day2021 { + + public Day6() { + super(6); + } + + public static void main(String[] args) { + new Day6().printParts(); + } + + @Override + public Object part1() { + return countFishes(80); + } + + @Override + public Object part2() { + return countFishes(256); + } + + private long countFishes(int iterations) { + var cm = LongCountMap.ofFrequencies(dayNumberStream(",")); + var nc = new LongCountMap<Long>(); + for(int j = 0; j<iterations; j++) { + for(var e : cm.entrySet()) { + if(e.getKey() == 0){ + nc.increment(8L, e.getValue()); + nc.increment(6L, e.getValue()); + } else { + nc.increment(e.getKey()-1, e.getValue()); + } + } + cm = nc; + nc = new LongCountMap<>(); + } + return cm.sumValues(); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year21/days/Day7.java b/src/main/java/com/sbaars/adventofcode/year21/days/Day7.java new file mode 100644 index 00000000..ae86e612 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year21/days/Day7.java @@ -0,0 +1,44 @@ +package com.sbaars.adventofcode.year21.days; + +import static java.lang.Math.max; +import static java.lang.Math.min; + +import com.sbaars.adventofcode.year21.Day2021; +import java.util.stream.LongStream; + +public class Day7 extends Day2021 { + + public Day7() { + super(7); + } + + public static void main(String[] args) { + new Day7().printParts(); + } + + @Override + public Object part1() { + return input().map(this::sol).min().getAsLong(); + } + + private LongStream input() { + return dayNumberStream(","); + } + + private long sol(long guess){ + return getSteps(guess).sum(); + } + + private LongStream getSteps(long guess) { + return input().map(n -> max(guess, n) - min(guess, n)); + } + + private long sol2(long guess){ + return getSteps(guess).map(n -> n*(n+1)/2).sum(); + } + + @Override + public Object part2() { + return input().map(this::sol2).min().getAsLong(); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year21/days/Day8.java b/src/main/java/com/sbaars/adventofcode/year21/days/Day8.java new file mode 100644 index 00000000..59d195cb --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year21/days/Day8.java @@ -0,0 +1,96 @@ +package com.sbaars.adventofcode.year21.days; + +import static com.sbaars.adventofcode.common.StringTools.charSubset; +import static java.util.Arrays.asList; +import static java.util.Arrays.stream; + +import com.sbaars.adventofcode.common.IntArray; +import com.sbaars.adventofcode.common.StringTools; +import com.sbaars.adventofcode.year21.Day2021; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class Day8 extends Day2021 { + + public Day8() { + super(8); + } + + public static void main(String[] args) { + new Day8().printParts(); + } + + @Override + public Object part1() { + return readInput() + .flatMap(e -> stream(e[1])) + .filter(e -> e.length() == 2 || e.length() == 3 || e.length() == 4 || e.length() == 7) + .count(); + } + + @Override + public Object part2() { + return readInput() + .mapToInt(line -> Integer.parseInt(Stream.of(line[1]).map(e -> getNum(line[0], e)).collect(Collectors.joining()))) + .sum(); + } + + private Stream<String[][]> readInput() { + return dayStream() + .map(e -> e.split("\\|")) + .map(e -> new String[][]{e[0].split(" "), stream(e[1].split(" ")).filter(f -> !f.isBlank()).toArray(String[]::new)}); + } + + private String getNum(String[] line, String w) { + return switch (w.length()) { + case 2 -> "1"; + case 3 -> "7"; + case 4 -> "4"; + case 7 -> "8"; + case 6 -> { + String bottomLeft = getBottomLeft(line, false); + if (w.contains(bottomLeft)) { + if (getMiddle(line, w)) { + yield "0"; + } else yield "6"; + } else yield "9"; + } + case 5 -> { + String bottomLeft = getBottomLeft(line, false); + if (w.contains(bottomLeft)) { + yield "2"; + } + String topRight = getBottomLeft(line, true); + if (w.contains(topRight)) { + yield "3"; + } else yield "5"; + } + default -> throw new IllegalStateException("Unrecognized word " + w); + }; + } + + private String getBottomLeft(String[] line, boolean mirror){ + List<String> l = asList(line); + IntArray possible = new IntArray("abcdefg".chars()); + l.stream().filter(e -> e.length() >=2 && e.length() <=4) + .forEach(e -> (mirror ? difference(e) : e).chars().forEach(possible::removeElement)); + if(possible.size()>1){ + return Character.toString(getPotentialUniques(line).stream().filter(possible::contains).findAny().get()); + } + return Character.toString(possible.get(0)); + } + + public Set<Integer> getPotentialUniques(String[] line){ + return Stream.of(line).filter(e -> e.length() == 6).map(this::difference).map(e -> (int)e.toCharArray()[0]).collect(Collectors.toSet()); + } + + private String difference(String a) { + return StringTools.removeAll("abcdefg", a); + } + + private boolean getMiddle(String[] line, String a){ + return Stream.of(line).filter(e -> e.length() == 2 || e.length() == 3).allMatch(e -> charSubset(e, a)); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year21/days/Day9.java b/src/main/java/com/sbaars/adventofcode/year21/days/Day9.java new file mode 100644 index 00000000..fc633fa0 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year21/days/Day9.java @@ -0,0 +1,60 @@ +package com.sbaars.adventofcode.year21.days; + +import com.sbaars.adventofcode.common.HasRecursion; +import com.sbaars.adventofcode.common.grid.NumGrid; +import com.sbaars.adventofcode.year21.Day2021; + +import java.awt.*; +import java.util.HashSet; +import java.util.Set; + +import static com.sbaars.adventofcode.common.Direction.fourDirections; +import static java.lang.Math.toIntExact; +import static java.util.Arrays.stream; +import static java.util.Collections.reverseOrder; + +public class Day9 extends Day2021 implements HasRecursion { + public Day9() { + super(9); + } + + public static void main(String[] args) { + new Day9().printParts(); + } + + @Override + public Object part1() { + NumGrid in = new NumGrid(day(), "\n", ""); + var grid = in.grid; + return in.stream() + .filter(p -> isLowPoint(grid, p)) + .mapToLong(p -> 1+grid[p.x][p.y]) + .sum(); + } + + @Override + public Object part2() { + NumGrid in = new NumGrid(day(), "\n", ""); + var grid = in.grid; + return in.stream() + .filter(p -> isLowPoint(grid, p)) + .map(p -> findBasins(new HashSet<>(), in, p, -1)) + .sorted(reverseOrder()) + .limit(3) + .reduce((a,b) -> a*b) + .get(); + } + + private boolean isLowPoint(long[][] in, Point loc) { + return stream(fourDirections()).map(d -> d.getInGrid(in, loc, -1)).filter(n -> n != -1).allMatch(n -> n > in[loc.x][loc.y]); + } + + private int findBasins(Set<Point> illegal, NumGrid in, Point loc, int height) { + int amount = 0; + if(in.get(loc) != -1 && !illegal.contains(loc) && in.get(loc) > height && in.get(loc) < 9){ + amount+=stream(fourDirections()).map(d -> d.move(loc)).filter(e -> in.get(loc) != -1).mapToInt(p -> findBasins(illegal, in, p, toIntExact(in.get(loc)))).sum() + 1; + illegal.add(loc); + } + return amount; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year22/Day2022.java b/src/main/java/com/sbaars/adventofcode/year22/Day2022.java new file mode 100644 index 00000000..a50a8f11 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year22/Day2022.java @@ -0,0 +1,9 @@ +package com.sbaars.adventofcode.year22; + +import com.sbaars.adventofcode.common.Day; + +public abstract class Day2022 extends Day { + protected Day2022(int day) { + super(2022, day); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year22/Main.java b/src/main/java/com/sbaars/adventofcode/year22/Main.java new file mode 100644 index 00000000..caf6be12 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year22/Main.java @@ -0,0 +1,16 @@ +package com.sbaars.adventofcode.year22; + +import com.sbaars.adventofcode.common.Day; +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; + +public class Main { + public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException, IOException, InvocationTargetException, NoSuchMethodException { + for (int day = 1; day <= 25; day++) { + System.out.println("Day " + day + ":"); + Day instance = (Day) Class.forName("com.sbaars.adventofcode.year22.days.Day" + day).getDeclaredConstructor().newInstance(); + instance.printParts(); + System.out.println(); + } + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year22/days/Day1.java b/src/main/java/com/sbaars/adventofcode/year22/days/Day1.java new file mode 100644 index 00000000..04624059 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year22/days/Day1.java @@ -0,0 +1,38 @@ +package com.sbaars.adventofcode.year22.days; + +import com.sbaars.adventofcode.common.Day; +import com.sbaars.adventofcode.year22.Day2022; + +import java.util.Arrays; +import java.util.stream.LongStream; + +public class Day1 extends Day2022 { + public Day1() { + super(1); + } + + public static void main(String[] args) { + Day d = new Day1(); + d.downloadIfNotDownloaded(); + d.downloadExample(); + d.printParts(); +// System.in.read(); +// d.submitPart1(); +// d.submitPart2(); + } + + @Override + public Object part1() { + return input().max().getAsLong(); + } + + @Override + public Object part2() { + long[] nums = input().sorted().toArray(); + return nums[nums.length-1] + nums[nums.length-2] + nums[nums.length-3]; + } + + private LongStream input () { + return Arrays.stream(day().split("\n\n")).mapToLong(s -> Arrays.stream(s.split("\n")).map(String::trim).mapToLong(Long::parseLong).sum()); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year22/days/Day10.java b/src/main/java/com/sbaars/adventofcode/year22/days/Day10.java new file mode 100644 index 00000000..b7084e09 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year22/days/Day10.java @@ -0,0 +1,54 @@ +package com.sbaars.adventofcode.year22.days; + +import com.sbaars.adventofcode.year22.Day2022; + +import java.util.ArrayList; +import java.util.List; +import java.util.function.BiFunction; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class Day10 extends Day2022 { + public Day10() { + super(10); + } + + public static void main(String[] args) { + new Day10().printParts(); + } + + @Override + public Object part1() { + return performOp(this::signalStrength).mapToLong(e -> e).sum(); + } + + @Override + public Object part2() { + return performOp(this::getPixel).collect(Collectors.joining()); + } + + private long signalStrength(long cycle, long x) { + return (cycle+20) % 40 == 0 ? cycle*x : 0; + } + + private String getPixel(long cycle, long x) { + long i = (cycle -1) % 40; + return (i == 0 ? "\n" : "") + (List.of(x -1, x, x +1).contains(i) ? "██" : "░░"); + } + + private<T> Stream<T> performOp(BiFunction<Long, Long, T> func) { + long cycle = 1; + long x = 1; + List<T> res = new ArrayList<>(); + for(String op : dayStrings()) { + res.add(func.apply(cycle, x)); + if(op.startsWith("addx")) { + cycle++; + res.add(func.apply(cycle, x)); + x+=Long.parseLong(op.substring(5)); + } + cycle++; + } + return res.stream(); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year22/days/Day11.java b/src/main/java/com/sbaars/adventofcode/year22/days/Day11.java new file mode 100644 index 00000000..bbcfb967 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year22/days/Day11.java @@ -0,0 +1,70 @@ +package com.sbaars.adventofcode.year22.days; + +import com.sbaars.adventofcode.year19.util.LongCountMap; +import com.sbaars.adventofcode.year22.Day2022; + +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import static com.sbaars.adventofcode.common.ReadsFormattedString.readString; + +public class Day11 extends Day2022 { + public Day11() { + super(11); + } + + public static void main(String[] args) { + new Day11().printParts(); + } + + public record Monkey(long n, String items, char op, String add, long divisible, long ifTrue, long ifFalse) {} + + @Override + public Object part1() { + return solution(20, true); + } + + private long solution(int cycles, boolean decreasingWorry) { + List<Monkey> monkeys = Arrays.stream(day().split("\n\n")).map(String::trim).map(s -> readString(s, "Monkey %n:\n" + + " Starting items: %s\n" + + " Operation: new = old %c %s\n" + + " Test: divisible by %n\n" + + " If true: throw to monkey %n\n" + + " If false: throw to monkey %n", Monkey.class)).toList(); + Map<Long, List<BigInteger>> items = monkeys.stream().collect(Collectors.toMap(m -> m.n, m -> Arrays.stream(m.items.split(", ")).map(BigInteger::new).collect(Collectors.toCollection(ArrayList::new)))); + LongCountMap<Long> times = new LongCountMap<>(); +// long gcd = monkeys.stream().mapToLong(e -> e.divisible).reduce((a,b) -> a*b).getAsLong(); + for(int i = 0; i<cycles; i++) { + for(Monkey m : monkeys) { + while(!items.get(m.n).isEmpty()) { + BigInteger item = items.get(m.n).remove(0); + BigInteger worryLevel = applyOperator(item, m.op, m.add).divide(new BigInteger(decreasingWorry ? "3" : "1")); + boolean test = worryLevel.mod(new BigInteger(m.divisible+"")).intValue() == 0; + items.get(test ? m.ifTrue : m.ifFalse).add(worryLevel); + times.increment(m.n); + } + } + System.out.println(i); + } + long[] sorted = times.values().stream().mapToLong(e -> e).sorted().toArray(); + return sorted[sorted.length-1] * sorted[sorted.length-2]; + } + + private BigInteger applyOperator(BigInteger item, char op, String add) { + BigInteger itemValue = add.equals("old") ? item : new BigInteger(add); + return switch (op) { + case '*' -> item.multiply(itemValue); + case '+' -> item.add(itemValue); + default -> throw new IllegalStateException(); + }; + } + + @Override + public Object part2() { + return solution(10000, false); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year22/days/Day12.java b/src/main/java/com/sbaars/adventofcode/year22/days/Day12.java new file mode 100644 index 00000000..37f244f3 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year22/days/Day12.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year22.days; + +import com.sbaars.adventofcode.year22.Day2022; + +public class Day12 extends Day2022 { + public Day12() { + super(12); + } + + public static void main(String[] args) { + new Day12().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year22/days/Day13.java b/src/main/java/com/sbaars/adventofcode/year22/days/Day13.java new file mode 100644 index 00000000..25c1cf90 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year22/days/Day13.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year22.days; + +import com.sbaars.adventofcode.year22.Day2022; + +public class Day13 extends Day2022 { + public Day13() { + super(13); + } + + public static void main(String[] args) { + new Day13().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year22/days/Day14.java b/src/main/java/com/sbaars/adventofcode/year22/days/Day14.java new file mode 100644 index 00000000..c1b89b9c --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year22/days/Day14.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year22.days; + +import com.sbaars.adventofcode.year22.Day2022; + +public class Day14 extends Day2022 { + public Day14() { + super(14); + } + + public static void main(String[] args) { + new Day14().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year22/days/Day15.java b/src/main/java/com/sbaars/adventofcode/year22/days/Day15.java new file mode 100644 index 00000000..6a223f69 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year22/days/Day15.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year22.days; + +import com.sbaars.adventofcode.year22.Day2022; + +public class Day15 extends Day2022 { + public Day15() { + super(15); + } + + public static void main(String[] args) { + new Day15().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year22/days/Day16.java b/src/main/java/com/sbaars/adventofcode/year22/days/Day16.java new file mode 100644 index 00000000..40211dca --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year22/days/Day16.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year22.days; + +import com.sbaars.adventofcode.year22.Day2022; + +public class Day16 extends Day2022 { + + public Day16() { + super(16); + } + + public static void main(String[] args) { + new Day16().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year22/days/Day17.java b/src/main/java/com/sbaars/adventofcode/year22/days/Day17.java new file mode 100644 index 00000000..070b33db --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year22/days/Day17.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year22.days; + +import com.sbaars.adventofcode.year22.Day2022; + +public class Day17 extends Day2022 { + public Day17() { + super(17); + } + + public static void main(String[] args) { + new Day17().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year22/days/Day18.java b/src/main/java/com/sbaars/adventofcode/year22/days/Day18.java new file mode 100644 index 00000000..f192020d --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year22/days/Day18.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year22.days; + +import com.sbaars.adventofcode.year22.Day2022; + +public class Day18 extends Day2022 { + public Day18() { + super(18); + } + + public static void main(String[] args) { + new Day18().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year22/days/Day19.java b/src/main/java/com/sbaars/adventofcode/year22/days/Day19.java new file mode 100644 index 00000000..2ee9868d --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year22/days/Day19.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year22.days; + +import com.sbaars.adventofcode.year22.Day2022; + +public class Day19 extends Day2022 { + + public Day19() { + super(19); + } + + public static void main(String[] args) { + new Day19().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year22/days/Day2.java b/src/main/java/com/sbaars/adventofcode/year22/days/Day2.java new file mode 100644 index 00000000..8a2e0973 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year22/days/Day2.java @@ -0,0 +1,79 @@ +package com.sbaars.adventofcode.year22.days; + +import com.sbaars.adventofcode.year22.Day2022; + +import java.io.IOException; +import java.util.stream.Stream; + +import static com.sbaars.adventofcode.common.ReadsFormattedString.readString; +import static com.sbaars.adventofcode.year22.days.Day2.Outcome.*; +import static com.sbaars.adventofcode.year22.days.Day2.Shape.*; + +public class Day2 extends Day2022 { + public Day2() { + super(2); + } + + public static void main(String[] args) throws IOException { + new Day2().printParts(); + } + + enum Shape {ROCK, PAPER, SCISSOR}; + enum Outcome {DRAW, WIN, LOSS}; + + public record Game(String a, String b) { + private Shape getShape(String s){ + return switch (s) { + case "A", "X" -> ROCK; + case "B", "Y" -> PAPER; + case "C", "Z" -> SCISSOR; + default -> throw new RuntimeException(s); + }; + } + + private Shape choose(Shape s, Outcome desired) { + return Shape.values()[(s.ordinal() + desired.ordinal()) % Shape.values().length]; + } + + private long getScore1() { + return getScore(getShape(b)); + } + + private long getScore(Shape sb) { + Shape sa = getShape(a); + long baseScore = sb.ordinal()+1; + return switch(calculateOutcome(sa, sb)) { + case LOSS -> baseScore; + case WIN -> baseScore + 6; + case DRAW -> baseScore + 3; + }; + } + + private Outcome calculateOutcome(Shape sa, Shape sb) { + if(sa == sb) { + return DRAW; + } else if(sa.ordinal() == ((sb.ordinal() + 1) % Shape.values().length)) { + return LOSS; + } + return WIN; + } + + private long getScore2() { + return getScore(choose(getShape(a), b.equals("X")? LOSS :b.equals("Y")?Outcome.DRAW: WIN)); + } + } + + @Override + public Object part1() { + return input().mapToLong(Game::getScore1).sum(); + } + + @Override + public Object part2() { + return input().mapToLong(Game::getScore2).sum(); + } + + private Stream<Game> input() { + return dayStream().map(String::trim).map(s -> readString(s, "%s %s", Game.class)); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year22/days/Day20.java b/src/main/java/com/sbaars/adventofcode/year22/days/Day20.java new file mode 100644 index 00000000..435a7209 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year22/days/Day20.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year22.days; + +import com.sbaars.adventofcode.template.Day1999; + +public class Day20 extends Day1999 { + public Day20() { + super(20); + } + + public static void main(String[] args) { + new Day20().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year22/days/Day21.java b/src/main/java/com/sbaars/adventofcode/year22/days/Day21.java new file mode 100644 index 00000000..a491a4e7 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year22/days/Day21.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year22.days; + +import com.sbaars.adventofcode.year22.Day2022; + +public class Day21 extends Day2022 { + public Day21() { + super(21); + } + + public static void main(String[] args) { + new Day21().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year22/days/Day22.java b/src/main/java/com/sbaars/adventofcode/year22/days/Day22.java new file mode 100644 index 00000000..34342f2f --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year22/days/Day22.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year22.days; + +import com.sbaars.adventofcode.year22.Day2022; + +public class Day22 extends Day2022 { + public Day22() { + super(22); + } + + public static void main(String[] args) { + new Day22().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year22/days/Day23.java b/src/main/java/com/sbaars/adventofcode/year22/days/Day23.java new file mode 100644 index 00000000..4e2345e3 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year22/days/Day23.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year22.days; + +import com.sbaars.adventofcode.year22.Day2022; + +public class Day23 extends Day2022 { + public Day23() { + super(23); + } + + public static void main(String[] args) { + new Day23().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year22/days/Day24.java b/src/main/java/com/sbaars/adventofcode/year22/days/Day24.java new file mode 100644 index 00000000..46c40a18 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year22/days/Day24.java @@ -0,0 +1,24 @@ +package com.sbaars.adventofcode.year22.days; + +import com.sbaars.adventofcode.year22.Day2022; + +public class Day24 extends Day2022 { + + public Day24() { + super(24); + } + + public static void main(String[] args) { + new Day24().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year22/days/Day25.java b/src/main/java/com/sbaars/adventofcode/year22/days/Day25.java new file mode 100644 index 00000000..e992d504 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year22/days/Day25.java @@ -0,0 +1,23 @@ +package com.sbaars.adventofcode.year22.days; + +import com.sbaars.adventofcode.year22.Day2022; + +public class Day25 extends Day2022 { + public Day25() { + super(25); + } + + public static void main(String[] args) { + new Day25().printParts(); + } + + @Override + public Object part1() { + return ""; + } + + @Override + public Object part2() { + return ""; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year22/days/Day3.java b/src/main/java/com/sbaars/adventofcode/year22/days/Day3.java new file mode 100644 index 00000000..820f77e3 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year22/days/Day3.java @@ -0,0 +1,38 @@ +package com.sbaars.adventofcode.year22.days; + +import com.sbaars.adventofcode.year22.Day2022; + +import java.io.IOException; +import java.util.stream.IntStream; + +public class Day3 extends Day2022 { + public Day3() { + super(3); + } + + public static void main(String[] args) throws IOException { + new Day3().printParts(); + } + + @Override + public Object part1() { + return dayStream() + .map(String::trim) + .map(e -> new String[]{e.substring(0, e.length()/2), e.substring(e.length()/2)}) + .mapToInt(e -> getPriorities(e[0]).filter(i -> getPriorities(e[1]).anyMatch(j -> j == i)).findFirst().getAsInt()) + .sum(); + } + + private IntStream getPriorities(String s) { + return s.chars().map(i -> i >= 'a' && i <= 'z' ? i - 'a' + 1 : i - 'A' + 1 + 26); + } + + @Override + public Object part2() { + String[] s = dayStream().map(String::trim).toArray(String[]::new); + return IntStream.range(0, s.length/3) + .map(x -> x * 3) + .map(x -> getPriorities(s[x]).filter(i -> getPriorities(s[x+1]).anyMatch(j -> j == i) && getPriorities(s[x+2]).anyMatch(j -> j == i)).findFirst().getAsInt()) + .sum(); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year22/days/Day4.java b/src/main/java/com/sbaars/adventofcode/year22/days/Day4.java new file mode 100644 index 00000000..500bc148 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year22/days/Day4.java @@ -0,0 +1,43 @@ +package com.sbaars.adventofcode.year22.days; + +import com.sbaars.adventofcode.year22.Day2022; + +import java.io.IOException; +import java.util.stream.Stream; + +import static com.sbaars.adventofcode.common.ReadsFormattedString.readString; + +public class Day4 extends Day2022 { + + public Day4() { + super(4); + } + + public static void main(String[] args) throws IOException { + new Day4().printParts(); + } + + public record Assignment(long aStart, long aEnd, long bStart, long bEnd){ + public boolean contained(){ + return (aStart>=bStart && aEnd<=bEnd) || (bStart>=aStart && bEnd<=aEnd); + } + + public boolean overlap(){ + return aStart <= bEnd && aEnd >= bStart; + } + } + + @Override + public Object part1() { + return input().filter(Assignment::contained).count(); + } + + private Stream<Assignment> input() { + return dayStream().map(String::trim).map(s -> readString(s, "%n-%n,%n-%n", Assignment.class)); + } + + @Override + public Object part2() { + return input().filter(Assignment::overlap).count(); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year22/days/Day5.java b/src/main/java/com/sbaars/adventofcode/year22/days/Day5.java new file mode 100644 index 00000000..9d25367e --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year22/days/Day5.java @@ -0,0 +1,75 @@ +package com.sbaars.adventofcode.year22.days; + +import com.sbaars.adventofcode.year22.Day2022; + +import java.io.IOException; +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.Deque; +import java.util.List; +import java.util.stream.Collectors; + +import static com.sbaars.adventofcode.common.ReadsFormattedString.readString; +import static java.lang.Math.toIntExact; + +public class Day5 extends Day2022 { + + public Day5() { + super(5); + } + + public static void main(String[] args) throws IOException { + new Day5().printParts(); + } + + public record Move(long which, long from, long to) {} + + @Override + public Object part1() { + List<Deque<Integer>> stacks = input(); + List<Move> moves = getMoves(); + for(Move m : moves) { + for(int i = 0; i<m.which; i++) { + int top = stacks.get(toIntExact(m.from-1)).pop(); + stacks.get(toIntExact(m.to-1)).push(top); + } + } + return stacks.stream().map(Deque::peek).map(e -> Character.toString((char)(int)e)).collect(Collectors.joining()); + } + + @Override + public Object part2() { + List<Deque<Integer>> stacks = input(); + List<Move> moves = getMoves(); + for(Move m : moves) { + List<Integer> toBeMoved = new ArrayList<>(); + for(int i = 0; i<m.which; i++) toBeMoved.add(0, stacks.get(toIntExact(m.from-1)).pop()); + toBeMoved.forEach(i -> stacks.get(toIntExact(m.to-1)).push(i)); + } + return stacks.stream().map(Deque::peek).map(e -> Character.toString((char)(int)e)).collect(Collectors.joining()); + } + + private List<Move> getMoves() { + return dayStream().map(String::trim).map(s -> readString(s, "move %n from %n to %n", Move.class)).toList(); + } + + private static List<Deque<Integer>> input() { + List<Deque<Integer>> stacks = new ArrayList<>(); + for(int i = 1; i<=9; i++){ + Deque<Integer> s = new ArrayDeque<>(); + switch (i) { + case 1 -> "NSDCVQT".chars().forEach(s::push); + case 2 -> "MFV".chars().forEach(s::push); + case 3 -> "FQWDPNHM".chars().forEach(s::push); + case 4 -> "DQRTF".chars().forEach(s::push); + case 5 -> "RFMNQHVB".chars().forEach(s::push); + case 6 -> "CFGNPWQ".chars().forEach(s::push); + case 7 -> "WFRLCT".chars().forEach(s::push); + case 8 -> "TZNS".chars().forEach(s::push); + case 9 -> "MSDJRQHN".chars().forEach(s::push); + } + stacks.add(s); + } + return stacks; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year22/days/Day6.java b/src/main/java/com/sbaars/adventofcode/year22/days/Day6.java new file mode 100644 index 00000000..feeefe52 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year22/days/Day6.java @@ -0,0 +1,32 @@ +package com.sbaars.adventofcode.year22.days; + +import com.sbaars.adventofcode.year22.Day2022; + +import java.io.IOException; +import java.util.stream.IntStream; + +public class Day6 extends Day2022 { + + public Day6() { + super(6); + } + + public static void main(String[] args) throws IOException { + new Day6().printParts(); + } + + @Override + public Object part1() { + return calculateAnswer(4); + } + + private int calculateAnswer(int size) { + String s = day(); + return IntStream.range(0, s.length()).filter(i -> s.substring(i, i+size).chars().distinct().count() == size).findFirst().getAsInt() + size; + } + + @Override + public Object part2() { + return calculateAnswer(14); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year22/days/Day7.java b/src/main/java/com/sbaars/adventofcode/year22/days/Day7.java new file mode 100644 index 00000000..321d9222 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year22/days/Day7.java @@ -0,0 +1,85 @@ +package com.sbaars.adventofcode.year22.days; + +import com.sbaars.adventofcode.common.HasRecursion; +import com.sbaars.adventofcode.year22.Day2022; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.atomic.AtomicInteger; + +import static com.sbaars.adventofcode.common.ReadsFormattedString.readString; + +public class Day7 extends Day2022 implements HasRecursion { + + public Day7() { + super(7); + } + + public static void main(String[] args) throws IOException { + new Day7().printParts(); + } + + public record Node(Map<String, Node> children, long size){} + public record File(long size, String name){} + + @Override + public Object part1() { + return sumSize(findChildren(dayStrings(), new AtomicInteger(0))); + } + + public Node findChildren(String[] commands, AtomicInteger index) { + Map<String, Node> children = new HashMap<>(); + for(; index.get()<commands.length; index.incrementAndGet()) { + String c = commands[index.get()]; + if (c.charAt(0) == '$') { + String command = c.substring(2); + if (command.startsWith("cd")) { + String folder = command.substring(3); + if (folder.equals("..")) break; + index.incrementAndGet(); + children.put(folder, findChildren(commands, index)); + } + } else { + if(c.startsWith("dir")) { + String dirName = c.substring(4); + children.put(dirName, new Node(new HashMap<>(), 0)); + } else { + File f = readString(c, "%n %s", File.class); + children.put(f.name, new Node(new HashMap<>(), f.size)); + } + } + } + return new Node(children, children.values().stream().mapToLong(Node::size).sum()); + } + + public long sumSize(Node n) { + long total = 0; + for(Node node : n.children.values()) { + if(node.size<=100000 && !node.children.isEmpty()) { + total+=node.size; + } + total += sumSize(node); + } + return total; + } + + public List<Long> sumSize(Node n, long sizeRoot) { + List<Long> total = new ArrayList<>(); + for(Node node : n.children.values()) { + if(node.size>=sizeRoot-(70000000-30000000) && !node.children.isEmpty()) { + total.add(node.size); + } + total.addAll(sumSize(node, sizeRoot)); + } + return total; + } + + @Override + public Object part2() { + Node root = findChildren(dayStrings(), new AtomicInteger(0)); + return sumSize(root, root.size).stream().mapToLong(e -> e).min().getAsLong(); + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year22/days/Day8.java b/src/main/java/com/sbaars/adventofcode/year22/days/Day8.java new file mode 100644 index 00000000..cfa17aa6 --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year22/days/Day8.java @@ -0,0 +1,65 @@ +package com.sbaars.adventofcode.year22.days; + +import com.sbaars.adventofcode.common.Direction; +import com.sbaars.adventofcode.common.grid.NumGrid; +import com.sbaars.adventofcode.year22.Day2022; + +import java.awt.*; +import java.io.IOException; + +public class Day8 extends Day2022 { + + public Day8() { + super(8); + } + + public static void main(String[] args) throws IOException { + new Day8().printParts(); + } + + @Override + public Object part1() { + NumGrid grid = new NumGrid(day(), "\n", ""); + return grid.stream().filter(p -> findEdge(grid, p)).count(); + } + + private boolean findEdge(NumGrid grid, Point p) { + Direction[] dirs = Direction.fourDirections(); + long num = grid.get(p); + for(Direction d : dirs) { + Point newLoc = p; + while (true) { + newLoc = d.move(newLoc); + long atLoc = grid.get(newLoc); + if(atLoc >= num) break; + else if(atLoc == -1) return true; + } + } + return false; + } + + @Override + public Object part2() { + NumGrid grid = new NumGrid(day(), "\n", ""); + return grid.stream().mapToLong(p -> scenicScore(grid, p)).max().getAsLong(); + } + + private long scenicScore(NumGrid grid, Point p) { + Direction[] dirs = Direction.fourDirections(); + long num = grid.get(p); + long score = 1; + for(Direction d : dirs) { + Point newLoc = p; + long s = 0; + while (true) { + newLoc = d.move(newLoc); + long atLoc = grid.get(newLoc); + if(atLoc >= num) {s++; break;} + else if(atLoc == -1) break; + s++; + } + score*=s; + } + return score; + } +} diff --git a/src/main/java/com/sbaars/adventofcode/year22/days/Day9.java b/src/main/java/com/sbaars/adventofcode/year22/days/Day9.java new file mode 100644 index 00000000..c383059f --- /dev/null +++ b/src/main/java/com/sbaars/adventofcode/year22/days/Day9.java @@ -0,0 +1,79 @@ +package com.sbaars.adventofcode.year22.days; + +import com.sbaars.adventofcode.common.Direction; +import com.sbaars.adventofcode.year22.Day2022; + +import java.awt.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.stream.IntStream; + +import static com.sbaars.adventofcode.common.ReadsFormattedString.readString; + +public class Day9 extends Day2022 { + public Day9() { + super(9); + } + + public static void main(String[] args) { + new Day9().printParts(); + } + + public record Move(char dir, long n){} + + @Override + public Object part1() { + return simulateRope(1); + } + + @Override + public Object part2() { + return simulateRope(9); + } + + private int simulateRope(int size) { + List<Move> moves = dayStream().map(s -> readString(s, "%c %n", Move.class)).toList(); + Point head = new Point(); + List<Point> tail = new ArrayList<>(IntStream.range(0, size).mapToObj(i -> new Point()).toList()); + HashSet<Point> visited = new HashSet<>(); + visited.add(head); + + for(Move m : moves) { + Direction dir = Direction.getByDirCode(m.dir); + for(int i = 0; i<m.n; i++) { + head = dir.move(head); + for(int j = 0; j<tail.size(); j++) { + Point t = j == 0 ? head : tail.get(j - 1); + tail.set(j, moveRope(t, tail.get(j))); + if(j == tail.size()-1) visited.add(tail.get(j)); + } + } + } + return visited.size(); + } + + private static Point moveRope(Point head, Point tail) { + if (Arrays.stream(Direction.values()).noneMatch(d -> d.move(tail).equals(head))) { + if (head.x > tail.x && head.y == tail.y) { + return Direction.EAST.move(tail); + } else if (head.x < tail.x && head.y == tail.y) { + return Direction.WEST.move(tail); + } else if (head.x == tail.x && head.y > tail.y) { + return Direction.SOUTH.move(tail); + } else if (head.x == tail.x && head.y < tail.y) { + return Direction.NORTH.move(tail); + } else if (head.x > tail.x && head.y > tail.y) { + return Direction.SOUTHEAST.move(tail); + } else if (head.x < tail.x && head.y < tail.y) { + return Direction.NORTHWEST.move(tail); + } else if (head.x < tail.x && head.y > tail.y) { + return Direction.SOUTHWEST.move(tail); + } else if (head.x > tail.x && head.y < tail.y) { + return Direction.NORTHEAST.move(tail); + } else throw new IllegalStateException(); + } + return tail; + } +} diff --git a/src/main/java/com/sbaars/adventofcode2019/common/Day.java b/src/main/java/com/sbaars/adventofcode2019/common/Day.java deleted file mode 100644 index caf3ee9d..00000000 --- a/src/main/java/com/sbaars/adventofcode2019/common/Day.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.sbaars.adventofcode2019.common; - -import java.io.IOException; - -public interface Day { - public int part1() throws IOException; - public int part2() throws IOException; - - public default void printParts() throws IOException { - System.out.println("Part 1 = "+part1()); - System.out.println("Part 2 = "+part2()); - } -} diff --git a/src/main/java/com/sbaars/adventofcode2019/util/DoesFileOperations.java b/src/main/java/com/sbaars/adventofcode2019/util/DoesFileOperations.java deleted file mode 100644 index 3a90b468..00000000 --- a/src/main/java/com/sbaars/adventofcode2019/util/DoesFileOperations.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.sbaars.adventofcode2019.util; - -import java.io.File; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.nio.file.StandardCopyOption; - -public interface DoesFileOperations { - - public default String getFileAsString(File file) throws IOException { - return new String(getFileBytes(file), StandardCharsets.UTF_8); - } - - public default byte[] getFileBytes(File file) throws IOException { - return Files.readAllBytes(file.toPath()); - } - - public default void writeStringToFile(File file, String content) throws IOException { - if (file.exists()) - Files.delete(file.toPath()); - else if (file.getParentFile() != null) - file.getParentFile().mkdirs(); - if (file.createNewFile()) - Files.write(Paths.get(file.getAbsolutePath()), content.getBytes(StandardCharsets.UTF_8)); - } - - public default void copyFolder(Path src, Path dest) { - try { - dest.toFile().mkdirs(); - Files.walk(src).forEach(source -> copy(source, dest.resolve(src.relativize(source)))); - } catch (IOException e) { - e.printStackTrace(); - } - } - - public default void copy(Path source, Path dest) { - try { - Files.copy(source, dest, StandardCopyOption.REPLACE_EXISTING); - } catch (IOException e) { - throw new RuntimeException(e.getMessage(), e); - } - } - - public default boolean delete(File dir) { - if (dir.isDirectory()) { - String[] children = dir.list(); - for (int i=0; i<children.length; i++) { - boolean success = delete(new File(dir, children[i])); - if (!success) { - return false; - } - } - } - return dir.delete(); - } - - -} \ No newline at end of file diff --git a/src/main/resources/2015-examples/day13-1.txt b/src/main/resources/2015-examples/day13-1.txt new file mode 100644 index 00000000..b67c3c6f --- /dev/null +++ b/src/main/resources/2015-examples/day13-1.txt @@ -0,0 +1,12 @@ +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. diff --git a/src/main/resources/2015-examples/day13-2.txt b/src/main/resources/2015-examples/day13-2.txt new file mode 100644 index 00000000..5fad4498 --- /dev/null +++ b/src/main/resources/2015-examples/day13-2.txt @@ -0,0 +1,5 @@ + +41 +46 ++55 David -2 +Carol Alice ++60 Bob +54 + -7 +83 diff --git a/src/main/resources/2015-examples/day15-1.txt b/src/main/resources/2015-examples/day15-1.txt new file mode 100644 index 00000000..1a7ff256 --- /dev/null +++ b/src/main/resources/2015-examples/day15-1.txt @@ -0,0 +1,2 @@ +Butterscotch: capacity -1, durability -2, flavor 6, texture 3, calories 8 +Cinnamon: capacity 2, durability 3, flavor -2, texture -1, calories 3 diff --git a/src/main/resources/2015-examples/day16-1.txt b/src/main/resources/2015-examples/day16-1.txt new file mode 100644 index 00000000..ab4a9e4e --- /dev/null +++ b/src/main/resources/2015-examples/day16-1.txt @@ -0,0 +1,10 @@ +children: 3 +cats: 7 +samoyeds: 2 +pomeranians: 3 +akitas: 0 +vizslas: 0 +goldfish: 5 +trees: 3 +cars: 2 +perfumes: 1 diff --git a/src/main/resources/2015-examples/day18-1.txt b/src/main/resources/2015-examples/day18-1.txt new file mode 100644 index 00000000..c983cdfa --- /dev/null +++ b/src/main/resources/2015-examples/day18-1.txt @@ -0,0 +1,6 @@ +1B5... +234... +...... +..123. +..8A4. +..765. diff --git a/src/main/resources/2015-examples/day18-2.txt b/src/main/resources/2015-examples/day18-2.txt new file mode 100644 index 00000000..ba052dd4 --- /dev/null +++ b/src/main/resources/2015-examples/day18-2.txt @@ -0,0 +1,39 @@ +Initial state: +.#.#.# +...##. +#....# +..#... +#.#..# +####.. + +After 1 step: +..##.. +..##.# +...##. +...... +#..... +#.##.. + +After 2 steps: +..###. +...... +..###. +...... +.#.... +.#.... + +After 3 steps: +...#.. +...... +...#.. +..##.. +...... +...... + +After 4 steps: +...... +...... +..##.. +..##.. +...... +...... diff --git a/src/main/resources/2015-examples/day19-1.txt b/src/main/resources/2015-examples/day19-1.txt new file mode 100644 index 00000000..bdbac08e --- /dev/null +++ b/src/main/resources/2015-examples/day19-1.txt @@ -0,0 +1,3 @@ +H => HO +H => OH +O => HH diff --git a/src/main/resources/2015-examples/day2-1.txt b/src/main/resources/2015-examples/day2-1.txt new file mode 100644 index 00000000..9e58c3ad --- /dev/null +++ b/src/main/resources/2015-examples/day2-1.txt @@ -0,0 +1 @@ +2x3x4 \ No newline at end of file diff --git a/src/main/resources/2015-examples/day2-2.txt b/src/main/resources/2015-examples/day2-2.txt new file mode 100644 index 00000000..102fb048 --- /dev/null +++ b/src/main/resources/2015-examples/day2-2.txt @@ -0,0 +1 @@ +1x1x10 \ No newline at end of file diff --git a/src/main/resources/2015-examples/day20-1.txt b/src/main/resources/2015-examples/day20-1.txt new file mode 100644 index 00000000..b89e91d9 --- /dev/null +++ b/src/main/resources/2015-examples/day20-1.txt @@ -0,0 +1,9 @@ +House 1 got 10 presents. +House 2 got 30 presents. +House 3 got 40 presents. +House 4 got 70 presents. +House 5 got 60 presents. +House 6 got 120 presents. +House 7 got 80 presents. +House 8 got 150 presents. +House 9 got 130 presents. diff --git a/src/main/resources/2015-examples/day21-1.txt b/src/main/resources/2015-examples/day21-1.txt new file mode 100644 index 00000000..8637bef7 --- /dev/null +++ b/src/main/resources/2015-examples/day21-1.txt @@ -0,0 +1,21 @@ +Weapons: Cost Damage Armor +Dagger 8 4 0 +Shortsword 10 5 0 +Warhammer 25 6 0 +Longsword 40 7 0 +Greataxe 74 8 0 + +Armor: Cost Damage Armor +Leather 13 0 1 +Chainmail 31 0 2 +Splintmail 53 0 3 +Bandedmail 75 0 4 +Platemail 102 0 5 + +Rings: Cost Damage Armor +Damage +1 25 1 0 +Damage +2 50 2 0 +Damage +3 100 3 0 +Defense +1 20 0 1 +Defense +2 40 0 2 +Defense +3 80 0 3 diff --git a/src/main/resources/2015-examples/day22-1.txt b/src/main/resources/2015-examples/day22-1.txt new file mode 100644 index 00000000..4bede78c --- /dev/null +++ b/src/main/resources/2015-examples/day22-1.txt @@ -0,0 +1,21 @@ +-- Player turn -- +- Player has 10 hit points, 0 armor, 250 mana +- Boss has 13 hit points +Player casts Poison. + +-- Boss turn -- +- Player has 10 hit points, 0 armor, 77 mana +- Boss has 13 hit points +Poison deals 3 damage; its timer is now 5. +Boss attacks for 8 damage. + +-- Player turn -- +- Player has 2 hit points, 0 armor, 77 mana +- Boss has 10 hit points +Poison deals 3 damage; its timer is now 4. +Player casts Magic Missile, dealing 4 damage. + +-- Boss turn -- +- Player has 2 hit points, 0 armor, 24 mana +- Boss has 3 hit points +Poison deals 3 damage. This kills the boss, and the player wins. diff --git a/src/main/resources/2015-examples/day22-2.txt b/src/main/resources/2015-examples/day22-2.txt new file mode 100644 index 00000000..f232c85c --- /dev/null +++ b/src/main/resources/2015-examples/day22-2.txt @@ -0,0 +1,64 @@ +-- Player turn -- +- Player has 10 hit points, 0 armor, 250 mana +- Boss has 14 hit points +Player casts Recharge. + +-- Boss turn -- +- Player has 10 hit points, 0 armor, 21 mana +- Boss has 14 hit points +Recharge provides 101 mana; its timer is now 4. +Boss attacks for 8 damage! + +-- Player turn -- +- Player has 2 hit points, 0 armor, 122 mana +- Boss has 14 hit points +Recharge provides 101 mana; its timer is now 3. +Player casts Shield, increasing armor by 7. + +-- Boss turn -- +- Player has 2 hit points, 7 armor, 110 mana +- Boss has 14 hit points +Shield's timer is now 5. +Recharge provides 101 mana; its timer is now 2. +Boss attacks for 8 - 7 = 1 damage! + +-- Player turn -- +- Player has 1 hit point, 7 armor, 211 mana +- Boss has 14 hit points +Shield's timer is now 4. +Recharge provides 101 mana; its timer is now 1. +Player casts Drain, dealing 2 damage, and healing 2 hit points. + +-- Boss turn -- +- Player has 3 hit points, 7 armor, 239 mana +- Boss has 12 hit points +Shield's timer is now 3. +Recharge provides 101 mana; its timer is now 0. +Recharge wears off. +Boss attacks for 8 - 7 = 1 damage! + +-- Player turn -- +- Player has 2 hit points, 7 armor, 340 mana +- Boss has 12 hit points +Shield's timer is now 2. +Player casts Poison. + +-- Boss turn -- +- Player has 2 hit points, 7 armor, 167 mana +- Boss has 12 hit points +Shield's timer is now 1. +Poison deals 3 damage; its timer is now 5. +Boss attacks for 8 - 7 = 1 damage! + +-- Player turn -- +- Player has 1 hit point, 7 armor, 167 mana +- Boss has 9 hit points +Shield's timer is now 0. +Shield wears off, decreasing armor by 7. +Poison deals 3 damage; its timer is now 4. +Player casts Magic Missile, dealing 4 damage. + +-- Boss turn -- +- Player has 1 hit point, 0 armor, 114 mana +- Boss has 2 hit points +Poison deals 3 damage. This kills the boss, and the player wins. diff --git a/src/main/resources/2015-examples/day23-1.txt b/src/main/resources/2015-examples/day23-1.txt new file mode 100644 index 00000000..c55ca775 --- /dev/null +++ b/src/main/resources/2015-examples/day23-1.txt @@ -0,0 +1,4 @@ +inc a +jio a, +2 +tpl a +inc a diff --git a/src/main/resources/2015-examples/day24-1.txt b/src/main/resources/2015-examples/day24-1.txt new file mode 100644 index 00000000..653a9a2e --- /dev/null +++ b/src/main/resources/2015-examples/day24-1.txt @@ -0,0 +1,14 @@ +Group 1; Group 2; Group 3 +11 9 (QE= 99); 10 8 2; 7 5 4 3 1 +10 9 1 (QE= 90); 11 7 2; 8 5 4 3 +10 8 2 (QE=160); 11 9; 7 5 4 3 1 +10 7 3 (QE=210); 11 9; 8 5 4 2 1 +10 5 4 1 (QE=200); 11 9; 8 7 3 2 +10 5 3 2 (QE=300); 11 9; 8 7 4 1 +10 4 3 2 1 (QE=240); 11 9; 8 7 5 +9 8 3 (QE=216); 11 7 2; 10 5 4 1 +9 7 4 (QE=252); 11 8 1; 10 5 3 2 +9 5 4 2 (QE=360); 11 8 1; 10 7 3 +8 7 5 (QE=280); 11 9; 10 4 3 2 1 +8 5 4 3 (QE=480); 11 9; 10 7 2 1 +7 5 4 3 1 (QE=420); 11 9; 10 8 2 diff --git a/src/main/resources/2015-examples/day25-1.txt b/src/main/resources/2015-examples/day25-1.txt new file mode 100644 index 00000000..54a3f9e8 --- /dev/null +++ b/src/main/resources/2015-examples/day25-1.txt @@ -0,0 +1,8 @@ + | 1 2 3 4 5 6 +---+---+---+---+---+---+---+ + 1 | 1 3 6 10 15 21 + 2 | 2 5 9 14 20 + 3 | 4 8 13 19 + 4 | 7 12 18 + 5 | 11 17 + 6 | 16 diff --git a/src/main/resources/2015-examples/day25-2.txt b/src/main/resources/2015-examples/day25-2.txt new file mode 100644 index 00000000..633f688e --- /dev/null +++ b/src/main/resources/2015-examples/day25-2.txt @@ -0,0 +1,8 @@ + | 1 2 3 4 5 6 +---+---------+---------+---------+---------+---------+---------+ + 1 | 20151125 18749137 17289845 30943339 10071777 33511524 + 2 | 31916031 21629792 16929656 7726640 15514188 4041754 + 3 | 16080970 8057251 1601130 7981243 11661866 16474243 + 4 | 24592653 32451966 21345942 9380097 10600672 31527494 + 5 | 77061 17552253 28094349 6899651 9250759 31663883 + 6 | 33071741 6796745 25397450 24659492 1534922 27995004 diff --git a/src/main/resources/2015-examples/day7-1.txt b/src/main/resources/2015-examples/day7-1.txt new file mode 100644 index 00000000..82c9f9d4 --- /dev/null +++ b/src/main/resources/2015-examples/day7-1.txt @@ -0,0 +1,8 @@ +123 -> x +456 -> y +x AND y -> d +x OR y -> e +x LSHIFT 2 -> f +y RSHIFT 2 -> g +NOT x -> h +NOT y -> i diff --git a/src/main/resources/2015-examples/day7-2.txt b/src/main/resources/2015-examples/day7-2.txt new file mode 100644 index 00000000..af81e278 --- /dev/null +++ b/src/main/resources/2015-examples/day7-2.txt @@ -0,0 +1,8 @@ +d: 72 +e: 507 +f: 492 +g: 114 +h: 65412 +i: 65079 +x: 123 +y: 456 diff --git a/src/main/resources/2015-examples/day9-1.txt b/src/main/resources/2015-examples/day9-1.txt new file mode 100644 index 00000000..2bceede9 --- /dev/null +++ b/src/main/resources/2015-examples/day9-1.txt @@ -0,0 +1,3 @@ +London to Dublin = 464 +London to Belfast = 518 +Dublin to Belfast = 141 diff --git a/src/main/resources/2015-examples/day9-2.txt b/src/main/resources/2015-examples/day9-2.txt new file mode 100644 index 00000000..d733269a --- /dev/null +++ b/src/main/resources/2015-examples/day9-2.txt @@ -0,0 +1,6 @@ +Dublin -> London -> Belfast = 982 +London -> Dublin -> Belfast = 605 +London -> Belfast -> Dublin = 659 +Dublin -> Belfast -> London = 659 +Belfast -> Dublin -> London = 605 +Belfast -> London -> Dublin = 982 diff --git a/src/main/resources/2015/day1.txt b/src/main/resources/2015/day1.txt new file mode 100644 index 00000000..f7beb583 --- /dev/null +++ b/src/main/resources/2015/day1.txt @@ -0,0 +1 @@ +((((()(()(((((((()))(((()((((()())(())()(((()((((((()((()(()(((()(()((())))()((()()())))))))))()((((((())((()))(((((()(((((((((()()))((()(())()((())((()(()))((()))()))()(((((()(((()()))()())((()((((())()())()((((())()(()(()(((()(())(()(())(((((((())()()(((())(()(()(()(())))(()((((())((()))(((()(()()(((((()()(()(((()(((((())()))()((()(()))()((()((((())((((())(()(((())()()(()()()()()(())((((())((())(()()))()((((())))((((()())()((((())((()())((())(())(((((()((((()(((()((((())(()(((()()))()))((((((()((())()())))(((()(()))(()()(()(((()(()))((()()()())((()()()(((())())()())())())((()))(()(()))(((((()(()(())((()(())(())()((((()())()))((((())(())((())())((((()(((())(())((()()((((()((((((()(())()()(()(()()((((()))(())()())()))(())))(())))())()()(())(()))()((()(()(())()()))(()())))))(()))(()()))(())(((((()(()(()()((())()())))))((())())((())(()(())((()))(())(((()((((((((()()()(()))()()(((()))()((()()(())(())())()(()(())))(((((()(())(())(()))))())()))(()))()(()(((((((()((((())))())())())())()((((((((((((((()()((((((()()()())())()())())())(())(())))())((()())((()(()))))))()))))))))))))))))())((())((())()()))))))(((()((()(()()))((())(()()))()()())))(())))))))(()(((())))())()())))()()(())()))()(()))())((()()))))(()))))()))(()()(())))))))()(((()))))()(()))(())())))))()))((()))((()))())(())))))))))((((())()))()))()))())(())()()(())))())))(()())()))((()()(())))(())((((((()(())((()(((()(()()(())))()))))))()))()(()((()))()(()))(()(((())((((())())(())(()))))))))())))))))())())))))())))))()()(((())()(()))))))))())))))(())()()()))()))()))(()(())()()())())))))))())()(()(()))))()()()))))())(()))))()()))))()())))))(((())()()))(()))))))))))()()))))()()()))))(()())())()()())()(()))))()(()))(())))))))(((((())(())())()()))()()))(())))))()(()))))(())(()()))()())()))()))()))()))))())()()))())())))(()))(()))))))())()(((())()))))))))()))()())))())))())))()))))))))))()()))(()()))))))(())()(()))))())(()))))(()))))(()())))))())())()()))))())()))))))))(()))))()))))))()(()())))))))()))())))())))())))())))))))())(()()))))))(()())())))()())()))))))))))))))())))()(())))()))())()()(())(()()))(())))())()())(()(()(()))))())))))))))))())(()))()))()))))(())()())()())))))))))))()()))))))))))))())())))))(()())))))))))))())(())))()))))))))())())(()))()))(())))()))()()(())()))))))()((((())()))())())))))()))()))))((()())()))))())))(())))))))))))))))))()))))()()())()))()()))))())()))((()())))())))(()))(()())))))))()))()))))(())))))))(())))))())()()(()))())()))()()))))())()()))))())()))())))))))(()))))()())()))))))))(()))())))(()))()))))(())()))())())(())())())))))))((((())))))()))()))()())()(())))()))()))()())(()())()()(()())()))))())())))))(()))()))))())(()()(())))))(())()()((())())))))(())(())))))))())))))))))()(())))))))()())())())()(()))))))))(()))))))))())()()))()(()))))))()))))))())))))))(())))()()(())()())))))(((())))()((())()))())))(()()))())(())())))()(((()())))))()(()()())))()()(()()(()()))())()(()()()))())()()))()())(()))))())))))())))(())()()))))(()))))(())(()))(())))))()()))()))))())()))()()(())())))((()))())()))))))()()))))((()(()))))()()))))))())))))())(()((()())))))))))))()())())))()))(()))))))(()))(())()())))(()))))))))())()()()()))))(()())))))))((())))()))(()))(())(())()())()))))))))(())))())))(()))()()))(()()))(()))())))()(())))())((()((()(())))((())))()))))((((())())()())))(())))()))))))())(()()((())))())()(()())))))(()())()))())))))))((())())))))))(()(()))())()()(()()(((()(((()())))))()))))))()(())(()()((()()(())()()))())()())()))()())())())))))))(((())))))))()()))))))(((())()))(()()))(()()))))(()(()()((((())()())((()()))))(()(())))))()((()()()())()()((()((()()))(()))(((()()()))(((())))()(((())()))))))((()(())())))(()())(((((()(()))(()((()))(()())()))))(()(()))()(()))(())(((())(()()))))()()))(((()))))(()()()()))())))((()()()(())()))()))))()()))()))))))((((((()()()))))())((()()(((()))))(()(())(()()())())())))()(((()()))(())((())))(()))(()()()())((())())())(()))))()))()((()(())()(()()(())(()))(())()))(())(()))))(())(())())(()()(()((()()((())))((()))()((())))(((()()()()((((()))(()()))()()()(((())((())())(()()(()()()))()((())(())()))())(((()()(())))()((()()())()())(()(())())(((())(())())((())(())()(((()()))(())))((())(()())())(())((()()()((((((())))((()(((((())()))()))(())(()()))()))(())()()))(())((()()())()()(()))())()((())))()((()()())((((()())((())())())((()((()))()))((())((()()(()((()()(((())(()()))))((()((())()(((())(()((())())((())(()((((((())())()(()())()(())(((())((((((()(())(()((()()()((()()(()()()())))()()(((((()()))()((((((()))()(()(()(()(((()())((()))())()((()))(())))()))()()))())()()))())((((())(()(()))(((((((())(((()(((((()(((()()((((())(((())())))(()()()(()(()))()))((((((()))((()(((()(())((()((((()((((((())(((((())))(((()(()))))(((()(((())()((())(()((()))(((()()(((())((((()(()(((((()))(((()(((((((()(()()()(()(()(()()())(())(((((()(())())()())(()(()(()))()(()()()())(()()(()((()))()((())())()(()))((())(()))()(()))()(((()(()(()((((((()()()()())()(((((()()(((()()()((()(((((()))((((((((()()()(((((()))))))(()()()(())(()))(()()))))(())()))(((((()(((((()()(()(()())(((()))((((()((()(()(()((()(()((())))()(((()((()))((()))(((((((((()((()((()(())))()((((()((()()))((())(((()(((((()()(()(()()((()(()()()(((((((())())()())))))((((()()(()))()))(()((())()(()(((((((((()()(((()(()())(()((()())((())())((((()(((()(((()((((()((()((((()(()((((((())((((((((((((()()(()()((((((((((((((()((()()))()((((((((((((())((((()(()())((()(()(()))()(((((()()(((()()))()())(())((()(((((()((())(((((()((()(((((()))()()((((())()((((())(((((((((()(())(()(())))())(()((())(((())(())(())())(()(()(())()()((()((())()(((()(((((()(())))()(((()((())))((()()()(((()(((()((()(()(())(()((()())(()(()(((()(((((((((())(()((((()()))(()((((()()()()(((()((((((((()(()()((((((()(()()(()((()((((((((((()()(((((((()())(())))(((()()))(((((()((()()())(()()((((())((()((((()))))(())((()(()()(((()(()(((()((((()(((((()))())())(()((())()))(((()())((())((())((((()((()((((((())(()((((()()))((((((())()(()))((()(((())((((((((((()()(((((()(((((()((()()()((((())))(()))()((()(())()()((()((((((((((()((())(())(((((()(()(()()))((((()((((()()((()(((()(((((((((()(()((()((()))((((((()(((())()()((()(((((((()())))()()(()((()((()()(((()(()()()()((((()((())((((()(((((((((()(((()()(((()(()(((()(((()((())()(()((()(()(()(()))()(((()))(()((((()((())((((())((((((())(()))(()((((())((()(()((((((((()()((((((()(()(()()()(())((()((()()(((()(((((((()()((()(((((((()))(((((()(((()(()()()(()(((()((()()((())(()(((((((((()(()((()((((((()()((())()))(((((()((())()())()(((((((((((()))((((()()()()())(()()(()(()()))()))(()))(()(((()()))())(()(()))()()((())(()())()())()(()))()))(()()(()((((((())((()(((((((((((()(())()((()(()((()((()(()((()((((((((((()()())((())()(())))((())()())()(((((()(()())((((()((()(())(()))(((())()((()))(((((())(()))()()(()))(((())((((()((((()(())))(((((((()))))())()())(())((())()(()()((()(()))()(()()(()()((()())((())((()()))((((()))()()))(()()(())()()(((((()(())((()((((()))()))(()())())(((()()(()()))(())))))(()))((())(((((()((((()))()((((()))()((())(((())))(((()())))((()(()()(( \ No newline at end of file diff --git a/src/main/resources/2015/day10.txt b/src/main/resources/2015/day10.txt new file mode 100644 index 00000000..e7dcbbd1 --- /dev/null +++ b/src/main/resources/2015/day10.txt @@ -0,0 +1 @@ +1113122113 diff --git a/src/main/resources/2015/day11.txt b/src/main/resources/2015/day11.txt new file mode 100644 index 00000000..04b9e320 --- /dev/null +++ b/src/main/resources/2015/day11.txt @@ -0,0 +1 @@ +hxbxwxba diff --git a/src/main/resources/2015/day12.txt b/src/main/resources/2015/day12.txt new file mode 100644 index 00000000..87e53094 --- /dev/null +++ b/src/main/resources/2015/day12.txt @@ -0,0 +1 @@ +[{"a":{"e":{"e":161,"a":"blue","d":{"e":-14,"a":"red","d":{"c":"yellow","a":[-35,0],"b":"orange","d":{"e":70,"a":"green","d":"blue","j":12,"c":69,"h":"orange","b":92,"g":"yellow","f":"green","i":121}},"c":"blue","h":14,"b":46,"g":62,"f":[179]},"j":{"e":133,"c":"violet","a":"orange","b":"blue","d":"violet"},"c":{"e":151,"a":"violet","d":{"e":"red","c":93,"a":135,"g":{"e":43,"c":"green","a":"orange","b":"green","d":54},"b":69,"d":159,"f":2},"c":"green","h":65,"b":{"c":126,"a":106,"b":190,"d":-40},"g":134,"f":"red"},"h":87,"b":[-3,"yellow",50,120],"g":{"e":[138,83,"red"],"c":["yellow",["red",177,98,"blue",179,"blue","violet",23],108,["green",17,-46,3,99],-43,46,"orange","yellow",{"a":192,"b":39},57],"a":"red","b":195,"d":172},"f":97,"i":160},"a":"orange","d":120,"c":61,"h":"red","b":186,"g":{"e":"orange","a":82,"d":{"a":{"e":"green","c":-5,"a":-13,"b":12,"d":"blue","f":-19}},"c":"blue","h":["violet","violet",82,3,"orange","orange",45,"red",198,[81,"red","green","green","yellow",{"c":"orange","a":"blue","b":193},"blue"]],"b":99,"g":{"a":[64,"orange","blue",98],"b":30},"f":"orange","i":[167]},"f":[{"e":"green","c":168,"a":"red","b":173,"d":"blue"},{"e":"violet","c":90,"a":10,"g":{"a":3,"b":195},"b":"orange","d":{"e":143,"c":-26,"a":136,"g":-28,"b":137,"d":"violet","f":[108,70,19,"blue","violet","orange"]},"f":-11},{"e":188,"a":173,"d":135,"j":148,"c":"orange","h":["orange","yellow",108,"violet","violet","blue",188,"yellow","red"],"b":[145,118,"orange","green","green",17,["red",55,86,-20,"green",118,"violet","green"]],"g":{"e":62,"c":"blue","a":"violet","b":-41,"d":5},"f":"green","i":[33,"orange"]},{"a":"green"},{"a":[87,"violet"],"b":"violet"},{"e":"violet","a":147,"d":"blue","c":["blue",91,"violet","violet","yellow","orange","yellow",-4],"h":"yellow","b":19,"g":{"a":"red"},"f":[-38,"yellow","violet",-10,"orange",29,"violet",52],"i":"red"},54,[-14,-2,{"e":12,"a":"violet","d":"blue","j":"orange","c":180,"h":{"e":186,"a":"green","d":"violet","c":"orange","h":"yellow","b":"yellow","g":"green","f":"violet"},"b":"green","g":{"e":"green","c":103,"a":119,"b":"blue","d":"violet","f":116},"f":22,"i":"yellow"},["violet","blue","blue","violet",44,"orange"],144],"red",[119,"red",[10,15,115,"orange",55,"yellow",85,135,-12,"orange"],61,{"e":"red","c":"yellow","a":34,"b":"blue","d":"orange","f":"yellow"},{"c":{"c":"yellow","a":0,"b":"violet"},"a":"orange","b":"green","d":-37},-21]],"i":{"e":[{"e":123,"a":106,"d":100,"j":"violet","c":164,"h":["red",120,"orange","violet",54],"b":-22,"g":"violet","f":"orange","i":130}],"c":{"e":"blue","a":[[198,82,2,"orange",151],128,"violet",88],"d":72,"c":"blue","h":194,"b":4,"g":149,"f":"violet"},"a":[["blue",27,"green",174],"orange",50,"orange",["orange","violet",154,167],"red","orange",{"c":49,"a":"violet","b":76,"d":{"c":166,"a":"red","b":10,"d":185}},53,"yellow"],"b":"orange","d":101,"f":-1}},"b":{"e":{"e":["blue",92,-20,"red","yellow",129,99,"yellow",38],"a":98,"d":129,"c":-5,"h":"green","b":"violet","g":"blue","f":"yellow","i":"red"},"a":"blue","d":[[20,87,"red",124,-2,"yellow","red",17,"violet","yellow"],{"c":"violet","a":"red","b":161},104,{"e":["blue",[51,47,57,-41,"green",149,-11,"red",103,"orange"],"violet",72,"red",["orange","blue","red"],-8,{"c":"violet","a":68,"b":-43,"d":"green"},"orange"],"a":36,"d":["orange","green","green",106,"green","red","red","red","violet"],"j":{"a":"red","b":144},"c":166,"h":109,"b":[{"a":56,"b":"red"},-41,"blue",36,20,"blue","blue"],"g":188,"f":"yellow","i":-7},[155,["green","green",0,"red","blue"],{"e":144,"c":"green","a":"orange","b":133,"d":10,"f":[91,160,"blue",183,18,43,85,-37]},{"e":"violet","a":-35,"d":57,"c":"violet","h":17,"b":"orange","g":57,"f":"red","i":"blue"},"red","red","green","red",29,{"e":112,"c":["red","blue",68,"red","yellow"],"a":"blue","g":"blue","b":{"a":"red"},"d":162,"f":"green"}],"green",[42,"orange"],[["yellow",183,2,"red",115,"red",-31]]],"j":29,"c":{"e":[{"c":"orange","a":{"e":"orange","c":-47,"a":"blue","b":35,"d":25,"f":"blue"},"b":111,"d":16},-44,-22,179,"yellow",84],"a":{"e":178,"a":["red",183,92],"d":163,"c":105,"h":24,"b":"violet","g":-26,"f":[125,"green","violet"],"i":"red"},"d":[[12,"yellow","blue","green"],144,[114,"orange",92,"blue",["violet",40,"blue"],67,105],["orange",155,"violet",37,-38]],"j":{"a":{"c":["green","yellow",-13,"green","red"],"a":[-27],"b":"violet"},"b":["red",[109,57],181,"blue",193,-32,83,"violet"]},"c":128,"h":21,"b":{"e":"red","a":"red","d":"green","c":["green",{"a":"blue"}],"h":"orange","b":{"e":199,"c":35,"a":126,"b":183,"d":60},"g":"orange","f":"violet","i":105},"g":"yellow","f":133,"i":[{"c":"violet","a":"yellow","b":"orange","d":144},"red","yellow","green",105,72,"red","yellow"]},"h":["violet",[[161,"red","blue",[98,"red","violet"],"orange",51,"violet"],"violet",-6,"orange","yellow",51],{"e":72,"a":[190,"red","blue",-13,90,"blue",-6,"violet",137,61],"d":[126,["red",101,118],13,"blue",-4,"blue",[47,157,77]],"c":"orange","h":176,"b":{"c":[67,"green",59,"green",140,"orange","blue",15,53],"a":162,"b":"orange","d":47},"g":49,"f":"yellow","i":"violet"}],"b":{"e":132,"c":[["blue",142,"violet","green",75,56,"green","green"],"red",185,"orange","violet"],"a":144,"b":"violet","d":{"e":"green","a":"blue","d":"violet","c":["violet","yellow","orange","green",121,"blue",-23],"h":"violet","b":"yellow","g":-34,"f":147,"i":127},"f":-25},"g":"green","f":"blue","i":80}},{"e":[43,[34,"yellow",-1,{"e":[150,95],"a":"red","d":"green","j":{"e":"red","c":"yellow","a":"orange","g":-4,"b":-4,"d":{"e":108,"a":"green","d":"orange","j":70,"c":-1,"h":45,"b":"blue","g":-20,"f":"yellow","i":"yellow"},"f":-19},"c":"red","h":90,"b":-46,"g":96,"f":[44,-43,"green","green"],"i":[124,"orange",30,"blue","green","violet",66,"red","orange",125]}]],"c":{"a":[{"c":108,"a":"green","b":"orange"},"green","yellow"],"b":-11},"a":["red",["violet",132,-33,{"a":[148,-13,"orange",84,"yellow",10,"orange","blue"]},["red",-21,{"c":"green","a":"violet","b":"blue"},-1,"red",110,"yellow",51],["violet",{"a":"orange","b":127},[-14,{"a":"yellow"}],{"a":15}]]],"g":"violet","b":["green","violet"],"d":{"a":"yellow","b":"red"},"f":{"e":"green","c":{"a":"orange","b":"violet"},"a":{"c":102,"a":["red","green",{"e":"yellow","a":-41,"d":101,"j":{"a":"yellow"},"c":"yellow","h":"violet","b":19,"g":"blue","f":"yellow","i":61}],"b":["red","green"]},"g":55,"b":"violet","d":{"a":"orange","b":{"e":{"e":-5,"c":113,"a":"orange","g":"blue","b":"orange","d":35,"f":"violet"},"c":"blue","a":26,"b":150,"d":"blue"}},"f":"red"}},[{"a":[{"e":39,"a":"green","d":[[152,198,"yellow",75,"yellow",191,131,"blue"],[177,27,"blue","red"],51,129,"red",{"a":52},"green"],"c":165,"h":"blue","b":4,"g":[{"c":"yellow","a":"violet","b":15},"red","yellow","blue",52,182,{"a":83,"b":"green"},"blue",167,[103,66,105]],"f":-19,"i":162},"blue","orange",165,[153,"green",115],["orange",0,"green",{"c":"violet","a":"red","b":26,"d":198}],{"e":15,"a":["violet",58,-15,"orange",-3],"d":{"e":113,"c":59,"a":["green",-42,"violet",38,"green",-2],"b":"orange","d":"red"},"c":["green",156,"green","yellow",79,"red",126,64,"orange"],"h":"blue","b":"red","g":["orange",43,"red","yellow",{"e":"blue","a":47,"d":"red","c":"violet","h":44,"b":-15,"g":60,"f":"violet","i":-38},"orange",130,34],"f":-49,"i":"yellow"}],"b":[142,"green",[{"c":"yellow","a":181,"b":"yellow"},"blue"],{"a":[["red",35,"green","red",0,"yellow"]],"b":"yellow"},-20]},{"e":88,"a":{"e":"yellow","c":"blue","a":171,"b":{"c":[{"e":"orange","a":"orange","d":"green","c":"green","h":-13,"b":28,"g":70,"f":-30,"i":63}],"a":"green","b":"orange","d":23},"d":"red"},"d":19,"c":"violet","h":[[105,{"e":"orange","a":["red","violet",138,"blue"],"d":21,"j":-20,"c":-26,"h":143,"b":26,"g":119,"f":179,"i":"orange"},"green",["red",48,171,"blue"],"blue","yellow",{"a":"yellow","b":132}],"yellow",{"c":92,"a":{"c":-23,"a":"yellow","b":"violet"},"b":"green","d":[52,124,"violet",{"e":-19,"c":"yellow","a":181,"b":-23,"d":-7},"yellow",139,136]},117,{"e":145,"c":"blue","a":175,"b":42,"d":193}],"b":"yellow","g":[-16,-43,{"a":146,"b":[115,199,"red","violet",150]},{"a":{"c":-14,"a":129,"b":"yellow"}},64,[86,1,109,"orange",[{"e":"blue","c":"blue","a":"violet","b":"orange","d":"yellow"},149,30,"blue",112,{"e":140,"c":"green","a":139,"b":"orange","d":-8},-13,25,111],[127,183,"violet",81,"yellow",192,"blue",{"a":"blue"},"violet",105],71,"violet",18,{"c":37,"a":["red","blue"],"b":184,"d":121}],"green",["yellow",{"e":59,"c":33,"a":154,"g":97,"b":113,"d":"orange","f":23},"yellow",125,"yellow",85,99],34,{"c":100,"a":{"e":"green","a":19,"d":-2,"c":114,"h":72,"b":144,"g":96,"f":85,"i":125},"b":"green","d":-18}],"f":[[73,"blue",132,["yellow","blue","orange","blue",146,15,"orange","orange",{"e":138,"a":"violet","d":194,"c":104,"h":-4,"b":122,"g":-32,"f":"yellow"},-28]],{"e":"red","c":-6,"a":18,"g":-31,"b":44,"d":{"a":117,"b":-37},"f":{"a":"yellow"}},"orange",122,{"e":{"e":-31,"a":"yellow","d":78,"c":118,"h":"green","b":{"a":"violet","b":166},"g":167,"f":126,"i":137},"a":"yellow","d":{"c":152,"a":"blue","b":"green"},"c":"yellow","h":[14,"green",39,171,"red",46,137,-13],"b":"red","g":{"e":"green","c":136,"a":"violet","b":76,"d":"red","f":148},"f":86},-9,["green",156,119,["red",66,198,["orange",-1,34],"yellow",["violet",52,85,-5,"red"],96,43,"violet"],"red",32,95,{"e":119,"a":"blue","d":-8,"c":126,"h":17,"b":"blue","g":178,"f":"violet"},73]],"i":{"e":57,"a":"green","d":195,"c":"violet","h":23,"b":[{"c":"violet","a":122,"b":[64,"violet","green",11,"red",-18,"orange","green","yellow","orange"]},"orange","red",{"e":"violet","a":147,"d":"green","j":-34,"c":{"e":-24,"a":51,"d":"violet","c":"orange","h":121,"b":"blue","g":104,"f":152,"i":99},"h":62,"b":"yellow","g":37,"f":"orange","i":178}],"g":"yellow","f":"violet","i":112}},"violet","violet",{"a":192,"b":"yellow"},["red",["green",165],{"a":"red"},[["green","blue","red","violet",82,"violet","violet",61,86],["violet","green",[187,119,"yellow","orange",17,173],"orange",{"e":"yellow","a":193,"d":87,"c":-1,"h":-1,"b":"red","g":"green","f":"orange"},133,{"e":165,"a":["green",68,-24,"blue"],"d":129,"c":"yellow","h":52,"b":173,"g":"green","f":145},51],141,129],{"c":"red","a":14,"b":"violet","d":{"e":25,"a":118,"d":"orange","c":{"e":6,"c":169,"a":"violet","b":"orange","d":"violet"},"h":29,"b":{"e":"blue","c":"violet","a":["red",176,79,74,"violet","yellow",67,"violet","blue"],"b":"violet","d":"yellow"},"g":34,"f":[47,"green","violet","blue"]}},{"e":"blue","c":{"c":23,"a":"violet","b":16,"d":{"e":-27,"c":"orange","a":{"e":48,"a":56,"d":"yellow","c":173,"h":"violet","b":98,"g":147,"f":"green","i":69},"b":137,"d":[171,"green","orange",1,-22,17,"red","orange","green",-33],"f":"red"}},"a":[{"c":"blue","a":"red","b":-30},"red",{"e":"blue","c":154,"a":"green","b":"blue","d":"red","f":{"e":"blue","c":59,"a":"orange","g":125,"b":84,"d":"green","f":50}},[91,{"e":-20,"c":"red","a":"orange","b":-13,"d":46},79,173,["orange","blue","orange","yellow","red","violet",107,103,32]]],"b":[193,["orange",{"a":6,"b":"violet"},"violet",82,-24,"green"],197],"d":25,"f":-2},{"e":167,"a":-45,"d":"violet","c":55,"h":"red","b":"red","g":"blue","f":21,"i":{"e":198,"c":[{"c":"yellow","a":"green","b":55,"d":"violet"},[44,13,0],{"e":"red","a":197,"d":"violet","c":69,"h":80,"b":92,"g":11,"f":158,"i":130},"red"],"a":"violet","b":"red","d":"yellow"}},[{"e":88,"a":[["green",199,176,-23],{"e":128,"a":185,"d":"yellow","c":142,"h":"blue","b":"red","g":148,"f":124,"i":"violet"},15,"violet","violet",1],"d":"orange","c":"blue","h":-31,"b":[{"e":"violet","c":90,"a":"red","b":24,"d":177},190,65,-14],"g":146,"f":140,"i":126},"green",["yellow",-11,158,11,{"e":"green","c":"red","a":"red","b":{"a":168},"d":7},"orange",107,"green","red"]],167,[["green",{"e":37,"a":"blue","d":"blue","c":-48,"h":"red","b":179,"g":"blue","f":"orange"},{"c":"yellow","a":116,"b":196,"d":97},{"e":"violet","c":{"e":"green","a":"orange","d":107,"c":144,"h":"violet","b":4,"g":98,"f":147,"i":"blue"},"a":"violet","b":"orange","d":["orange",-40,"violet","violet",64],"f":191},["blue","blue"],178,"violet",["violet"]],"violet",49,"green","blue","violet",{"e":"orange","c":61,"a":"orange","b":"green","d":125,"f":["red","yellow","orange",["orange","yellow",-41,27,"violet","orange","blue"],"violet",9,"green","red"]}]],{"e":194,"a":{"e":138,"a":"violet","d":112,"c":[[184,"green","red","violet","blue","red",{"e":"yellow","c":"orange","a":-16,"g":"orange","b":115,"d":"red","f":-6}],149],"h":[-20,["yellow",50,"yellow",20,"red"],"green","blue",-38,128],"b":{"e":["orange",[160],{"e":193,"c":-18,"a":118,"g":"violet","b":"violet","d":"orange","f":"yellow"},183],"c":"red","a":"red","b":{"e":"yellow","a":"yellow","d":99,"c":-13,"h":166,"b":{"e":20,"c":183,"a":"red","b":77,"d":61},"g":-31,"f":"violet","i":"violet"},"d":"orange","f":49},"g":"green","f":166,"i":"red"},"d":{"e":[[-30,"green",-33,"blue"],-38,"red",167,"yellow",["orange",[53,145,67,109,156],"green",189,{"e":"red","c":"red","a":"orange","b":116,"d":"red","f":"violet"},-24,"orange","yellow","violet","violet"],{"e":"red","c":"violet","a":"red","b":76,"d":"blue","f":"orange"},[45,10,"green",168,-9,"violet"]],"c":{"c":[93,-6,109,[12,"orange","red","blue"],"violet"],"a":{"e":-35,"c":{"e":36,"c":-10,"a":105,"b":31,"d":"green"},"a":"green","b":40,"d":"yellow"},"b":["violet",{"e":"violet","a":"blue","d":"blue","c":75,"h":"yellow","b":"orange","g":23,"f":"violet"},187],"d":48},"a":172,"b":{"e":"red","a":"blue","d":[7,"yellow","yellow","red",-2],"c":"blue","h":"blue","b":167,"g":"violet","f":{"a":"yellow"}},"d":"green","f":"orange"},"c":{"e":["violet",{"c":"yellow","a":"violet","b":140,"d":102},62,"yellow",111,69,[84]],"a":114,"d":"violet","c":13,"h":"violet","b":"green","g":99,"f":{"e":"blue","a":"green","d":"blue","j":[-21,"blue","red",88,174,"orange",-1],"c":"yellow","h":[[68,119,152,"yellow"],132,"green","violet","violet",8,{"e":61,"c":1,"a":70,"b":"yellow","d":"blue","f":"violet"}],"b":48,"g":-39,"f":[3,142,"green","blue","violet","orange","orange","yellow","blue",114],"i":["blue","green",82,19,91,18]}},"h":-24,"b":137,"g":153,"f":0,"i":"orange"},{"e":45,"a":{"e":[[62,25,"orange",189,"orange",38,"orange"]],"c":119,"a":100,"b":["red",{"a":"green","b":[-36,"green","red","orange","violet",157,"blue","green",42]},"violet"],"d":[{"c":{"a":24,"b":77},"a":135,"b":8,"d":{"e":185,"a":"violet","d":138,"j":"green","c":-16,"h":6,"b":149,"g":23,"f":"violet","i":"blue"}}],"f":{"e":192,"c":"yellow","a":[-36,"blue",-27],"b":["green",-17,81],"d":"yellow","f":141}},"d":23,"j":{"a":[86,"blue",-22,"orange",123,56,[131,156,58,"violet","green",{"e":27,"a":56,"d":"yellow","c":35,"h":"green","b":84,"g":141,"f":65}],{"a":-17,"b":192},137]},"c":[47,{"e":{"e":95,"a":{"e":182,"a":177,"d":"blue","c":174,"h":-11,"b":"red","g":"yellow","f":"violet","i":39},"d":80,"c":"orange","h":"violet","b":112,"g":-19,"f":"green"},"c":{"c":"violet","a":-18,"b":"green","d":["red",16,-37,"blue","yellow",21,"blue"]},"a":-5,"b":106,"d":31,"f":146},46,-49,{"c":"orange","a":-20,"b":-9},["orange",{"e":["blue","blue",155,"orange","red"],"a":"violet","d":"orange","j":-33,"c":"green","h":"violet","b":"orange","g":"violet","f":173,"i":[-1,"yellow",194,"green",-31,"green"]},{"a":42,"b":{"e":"blue","a":"green","d":"yellow","j":"violet","c":121,"h":102,"b":"orange","g":-27,"f":137,"i":-23}},{"e":{"c":-25,"a":"red","b":129},"c":145,"a":34,"b":108,"d":"red"},"yellow","red","yellow",131,164,6],"yellow",{"a":["orange"],"b":31}],"h":{"e":{"e":"orange","a":"orange","d":{"c":"violet","a":{"e":"blue","a":127,"d":"blue","c":"green","h":"violet","b":88,"g":-40,"f":"yellow","i":"red"},"b":"violet"},"c":["red",{"e":"yellow","a":160,"d":"yellow","j":"blue","c":"orange","h":25,"b":41,"g":44,"f":"yellow","i":106},["yellow",197,21,115,"blue","green",144,38,-24,"blue"],"blue","blue","yellow",148],"h":"red","b":[65,41,{"a":177,"b":118},-42,{"e":13,"c":"orange","a":"violet","g":104,"b":32,"d":"blue","f":"orange"},119,"blue",-44],"g":"violet","f":87,"i":58},"a":128,"d":"green","j":"green","c":[{"a":{"e":"red","c":-24,"a":"yellow","b":"orange","d":"red","f":15}},"violet","green",165,"yellow",{"e":109,"a":101,"d":98,"c":"orange","h":"red","b":"yellow","g":"red","f":78},[166,"green","blue",-20,[33],"red",-9,"yellow","orange",112],"blue"],"h":[{"c":{"e":"yellow","c":144,"a":86,"b":"orange","d":"yellow","f":176},"a":128,"b":"violet","d":{"a":150}},71,{"e":{"a":47},"a":105,"d":45,"c":"green","h":"green","b":112,"g":"red","f":["yellow",196,170,49,"green","red"],"i":91},"blue","blue","green"],"b":{"e":["blue",-40,{"e":-46,"a":-15,"d":"green","c":"red","h":93,"b":18,"g":"yellow","f":-17},"green","violet","green","orange","orange","orange",80],"c":"orange","a":[93,"blue",199,91,"green"],"b":"green","d":{"e":70,"c":"orange","a":"blue","b":-39,"d":198,"f":"blue"}},"g":[57,"violet",81],"f":"violet","i":"violet"},"b":"blue","g":[154,"orange",["yellow",{"e":{"e":-37,"c":-6,"a":"orange","g":"violet","b":"orange","d":"orange","f":77},"c":"green","a":"violet","g":"yellow","b":157,"d":"violet","f":"red"},75,86,"orange"],[{"e":"orange","c":7,"a":["orange",-40,"red",139,"violet"],"b":34,"d":120,"f":"green"},152,119,"orange",{"e":[-5,"orange",107,105,"red","violet",104,136,"violet"],"c":9,"a":199,"b":48,"d":178,"f":152},36],"yellow",89,{"a":155,"b":107},{"a":{"c":13,"a":160,"b":114}},{"a":"yellow"}],"f":["yellow",{"a":"blue","b":157},{"e":"orange","c":[81,-48,"yellow",76,13,"red","red"],"a":{"e":"red","a":"yellow","d":"violet","j":12,"c":"green","h":"green","b":"yellow","g":"yellow","f":76,"i":-44},"b":"blue","d":"green","f":"blue"},{"c":{"a":"orange"},"a":180,"b":"orange","d":133}],"i":{"e":"violet","c":{"e":"orange","c":{"e":[13,"red","yellow","yellow","blue","green","red",156],"c":{"e":"violet","a":"violet","d":"blue","c":102,"h":-7,"b":21,"g":"blue","f":"violet"},"a":129,"b":26,"d":"green"},"a":7,"b":"green","d":"orange"},"a":"red","b":"orange","d":[["yellow",33,178,-31,194,9,126],"orange",27,7,91,[190,-27],[143,{"e":"blue","a":3,"d":5,"c":116,"h":"blue","b":"red","g":"red","f":"violet","i":39},"green",81,[-24,-34,-42,188,63,"orange"],2,172,-44,"yellow",75],{"e":-40,"a":["green","blue","violet",197,-21,"yellow","blue",84,"blue",7],"d":["red","yellow","orange",39,"orange",98,"violet",173],"c":49,"h":38,"b":184,"g":"green","f":-33}]}}],[[[{"e":["violet","blue",53],"a":{"e":77,"c":"orange","a":[166,118,"red",-6,"orange","orange","violet",74,"green"],"b":"red","d":47},"d":"violet","c":92,"h":4,"b":3,"g":{"e":"green","c":"blue","a":"yellow","g":167,"b":"green","d":-31,"f":30},"f":"orange"},{"e":"orange","c":194,"a":"violet","g":-34,"b":43,"d":"yellow","f":"blue"},"yellow",-28],[["green",181,"blue"]],175,"orange",110,198,[185,{"e":183,"c":{"c":29,"a":"blue","b":{"e":45,"a":"yellow","d":"orange","c":"green","h":155,"b":"green","g":-39,"f":"blue","i":"red"},"d":192},"a":"red","g":{"e":{"a":"violet","b":77},"a":-42,"d":57,"j":"orange","c":193,"h":62,"b":"red","g":64,"f":58,"i":"yellow"},"b":[["green",-31,"yellow",141,"yellow","red",111,167,-13,"blue"]],"d":["red",17],"f":"red"},"green",[{"e":22,"c":"orange","a":{"a":"red","b":"violet"},"b":"violet","d":{"a":167,"b":"blue"},"f":56},{"a":{"e":26,"c":145,"a":"violet","g":6,"b":13,"d":"green","f":"yellow"},"b":-41},"yellow",[[120,"red",187,124,"red","green"],"violet","red"],["yellow","violet",34],"yellow","red",71],{"c":["red","green",82,"yellow"],"a":[146,87,"green","orange",168,"yellow"],"b":{"a":["violet"]}},117,"orange",39,144],["violet",{"e":131,"a":-28,"d":["red","green","blue","blue","violet",-15,"violet"],"j":-42,"c":"orange","h":47,"b":"green","g":"yellow","f":[99,140,138],"i":"blue"},{"e":"blue","a":65,"d":"red","c":185,"h":8,"b":["orange",153,{"c":"orange","a":-40,"b":"violet"},"blue","orange",93,175],"g":-27,"f":"yellow","i":-47},48,{"c":83,"a":["blue",184,"orange","blue",{"a":167,"b":"yellow"},"violet","yellow"],"b":-27}],[[12,22,-15,"yellow",34],28,{"e":121,"c":170,"a":"red","g":{"e":13,"a":"yellow","d":44,"j":{"c":198,"a":"violet","b":176},"c":23,"h":-3,"b":"green","g":"blue","f":"violet","i":165},"b":"blue","d":64,"f":189},"yellow",-19,{"e":-49,"c":123,"a":-6,"g":"green","b":[190,"red","orange",68,98,"yellow","orange","red",{"c":68,"a":"red","b":"red"},"violet"],"d":-27,"f":"orange"},17,{"a":[105,127,{"e":-1,"a":138,"d":173,"j":"green","c":"blue","h":80,"b":"yellow","g":176,"f":"green","i":"green"},139,-41,"blue",10]},"orange"]],[[[{"e":"green","a":"blue","d":"orange","j":"blue","c":"yellow","h":"yellow","b":{"c":199,"a":"violet","b":-19},"g":"yellow","f":"red","i":"violet"},["orange"],[{"e":-20,"a":72,"d":"violet","c":"green","h":"yellow","b":20,"g":62,"f":-46},["yellow",48,44,"yellow","orange",-19,"green","red",10],{"c":0,"a":"blue","b":"green"},71,168,-27,"red"],{"e":"violet","a":{"a":"violet"},"d":-32,"c":"orange","h":"orange","b":"yellow","g":144,"f":131,"i":"orange"},"orange","violet","yellow","red"],151,[18,[{"a":"green"}],"orange","red","blue"]],{"c":91,"a":-17,"b":47,"d":46}],[["orange","green",[132],[4,156,186,{"e":148,"a":"green","d":"red","c":14,"h":34,"b":98,"g":141,"f":197,"i":"blue"},"red"],["yellow",["red","violet",-8,{"e":"orange","a":86,"d":"green","c":-49,"h":"green","b":"orange","g":107,"f":"green","i":174},101,57,"red","red",{"c":"orange","a":185,"b":84,"d":"blue"}],92,"orange","green","green",{"e":[-17,"blue","violet"],"c":["blue",80,"red"],"a":134,"g":192,"b":"green","d":"violet","f":51}],{"e":[122,"yellow","green","orange"],"a":"blue","d":113,"c":"yellow","h":"yellow","b":["violet","violet",199,71,128,["yellow","green","violet","blue",-41,"green","violet","yellow","yellow"],["yellow",190,"green","green","orange","green",-30,61]],"g":{"a":136,"b":"red"},"f":[135,"violet",60,["yellow",16,"blue"],131,"yellow",{"e":"orange","c":"violet","a":62,"b":190,"d":109},"blue",68,{"a":58,"b":-31}]},"yellow",-17,"violet","red"],44,[-39,"orange",{"e":70,"c":199,"a":73,"g":12,"b":"orange","d":6,"f":"green"},["blue","red",58,{"e":51,"c":80,"a":[46,26,"violet",64,"violet"],"b":"red","d":"red"},{"a":"yellow","b":"blue"}],196,{"a":"orange","b":{"c":"yellow","a":66,"b":161}}],157,[-25,["red",31],96,"yellow",[{"a":"green","b":9},"yellow",147,"yellow","green","orange",[-4,"green",66,152,157,["violet","violet",45,199,36,"violet",125,25]],50,["green",34,"orange",-37,33,179]],"green",{"e":"violet","a":["red",{"e":40,"a":"green","d":-24,"c":174,"h":"violet","b":"red","g":180,"f":63},"red","red",{"a":-36},178,-19,"violet",["green","red",24,"red"],"violet"],"d":{"e":24,"c":9,"a":7,"g":-41,"b":44,"d":"red","f":"violet"},"c":"violet","h":"yellow","b":["red"],"g":"yellow","f":-1,"i":["blue",53,"violet","red",87,"blue",{"e":-20,"a":130,"d":"red","c":"blue","h":58,"b":"blue","g":"blue","f":"blue","i":"yellow"},"orange","green"]},["red","green","green",-23,-6,75,"blue",{"e":112,"a":"green","d":129,"c":"yellow","h":"green","b":"yellow","g":-16,"f":194,"i":{"a":"violet","b":114}},"blue",[87,{"a":"violet"},10,65,70,"yellow",104,78,-41]],{"e":"violet","a":[[180,108],"orange","green","yellow",119,52],"d":113,"j":"red","c":[91,"green","red",41,"red",41],"h":"yellow","b":{"e":"orange","c":188,"a":77,"g":"yellow","b":"blue","d":-46,"f":"blue"},"g":"yellow","f":"yellow","i":{"e":{"e":"yellow","c":112,"a":"red","b":-36,"d":10,"f":"blue"},"a":{"a":172},"d":["green",92,87,65,123],"c":"blue","h":{"c":152,"a":"green","b":107,"d":-47},"b":"violet","g":25,"f":65,"i":"blue"}},"violet"],[["orange",{"e":"yellow","c":"orange","a":"orange","b":128,"d":145},"blue",-3,"green",108,"yellow",153],{"e":"red","c":50,"a":[90,"green",34,91,{"c":"orange","a":"red","b":197,"d":"red"}],"b":{"e":[54,"yellow","yellow"],"a":{"e":"orange","c":"yellow","a":"red","g":59,"b":"orange","d":161,"f":15},"d":"green","c":"orange","h":"green","b":25,"g":"green","f":"green","i":[191,95,-39]},"d":11},"yellow",39,"green","blue"],{"e":[[-45,[77,"yellow",-2,149,"blue",37,114],"violet",53,"green","violet",86,"green",2],135,-36,193,{"e":177,"a":33,"d":23,"j":"orange","c":-49,"h":79,"b":"violet","g":2,"f":"orange","i":-11},{"c":35,"a":"green","b":"blue"},"red",71,"violet","yellow"],"a":{"c":[100,"red",-32,"green","red","red",106,"red"],"a":"violet","b":-37,"d":{"e":145,"a":22,"d":[-45,85,-25,141],"j":"yellow","c":150,"h":[-4,"violet","green","violet",197,26,52,13,"blue",195],"b":165,"g":79,"f":-2,"i":"yellow"}},"d":[174,182,4,111,"violet",[25,"violet","yellow","red",107,124,114,"violet"],["red",57,-26,"green",131,25,"blue",["green","blue",47,-9,91,"yellow","red",-29,"red"]]],"c":[49,"violet",-24,56,99,127,26],"h":{"e":30,"a":10,"d":"violet","c":{"e":"blue","c":192,"a":86,"g":"blue","b":111,"d":[198,"green"],"f":-42},"h":-9,"b":["violet",{"e":29,"a":"blue","d":49,"j":109,"c":99,"h":-9,"b":"violet","g":"orange","f":120,"i":"orange"},["green",-7,"green"],"blue",129,"green","violet",{"e":-7,"a":"blue","d":130,"c":"green","h":126,"b":158,"g":"blue","f":132,"i":"blue"},191,"orange"],"g":183,"f":"yellow"},"b":"orange","g":[-7,"blue",{"e":"orange","a":"yellow","d":"violet","j":139,"c":33,"h":"blue","b":"red","g":-20,"f":3,"i":151},"blue",136,"orange",160],"f":[128]}],[["blue",185,57,82,{"e":"yellow","a":"red","d":"violet","c":5,"h":"yellow","b":16,"g":11,"f":-27}],[["orange",38,{"c":"green","a":"blue","b":[177,"blue","violet",-41,"orange",41,67,106]},"green","blue","red"],"violet",["green",-13,"orange",6,{"e":"red","a":116,"d":"orange","c":100,"h":"violet","b":"yellow","g":"red","f":"red","i":"red"},{"e":36,"a":"blue","d":"blue","j":135,"c":194,"h":-27,"b":["green",186,"green","violet","violet",197,32],"g":["blue"],"f":"violet","i":101},-47,"violet",30],[11,"orange",[-11,{"a":"green","b":-32},-21,133],{"a":32}],"orange",-49,102,136,"blue",125],-1,{"e":"orange","a":{"e":{"c":"violet","a":"green","b":13,"d":"blue"},"a":[{"e":"red","c":"orange","a":67,"g":"blue","b":"red","d":103,"f":176},7,5,176],"d":["orange",[-12,"orange","orange","yellow",165,152],["blue",38,"yellow","blue"],"violet",157,"orange"],"c":153,"h":"yellow","b":"green","g":["blue",[11,"red","yellow","green",16,89,"yellow"],"violet",180,120],"f":-21,"i":166},"d":["yellow",{"e":"violet","c":"green","a":"red","b":156,"d":"blue","f":{"e":38,"a":"orange","d":109,"c":"orange","h":93,"b":"green","g":-19,"f":-4}},{"e":88,"c":81,"a":50,"b":184,"d":"orange"},{"a":"green"},"red",[31,["blue",37],"violet",-5,16,"red",-43],"orange",32,[-10,72,16,138,"blue","green","violet"],"green"],"c":"violet","h":{"e":49,"c":-25,"a":"violet","b":42,"d":["red",-5,65,"green",-47,146,{"e":"red","c":167,"a":113,"b":169,"d":"red"},-19,"blue"],"f":"blue"},"b":{"a":89},"g":{"e":-42,"c":"green","a":-27,"b":{"e":"orange","a":"blue","d":"violet","j":"green","c":-8,"h":112,"b":-45,"g":-27,"f":"green","i":["violet","yellow","blue","violet",13,"blue",21]},"d":["orange",113,152,115,"red",112,-11,-5,{"e":"blue","c":"orange","a":158,"b":57,"d":"violet"}],"f":42},"f":[18,"yellow","red"],"i":-37}],{"c":[-7,"orange","green","green"],"a":{"a":"blue"},"b":{"e":"orange","a":114,"d":{"c":{"c":45,"a":26,"b":-4},"a":111,"b":["yellow",["red",196,"blue","yellow","orange","orange"],"red",-39,"orange","red","blue",{"e":"red","c":"red","a":"violet","b":"green","d":-13,"f":144},18],"d":22},"c":["green",{"c":"orange","a":20,"b":"yellow","d":120},98,107,"green","orange",181,[69,-30,{"e":"red","a":"blue","d":"orange","c":42,"h":136,"b":"blue","g":24,"f":35,"i":"red"},["violet","blue",77,152,"violet","red","orange"],185,[87,59],178,"yellow"],"violet"],"h":172,"b":{"c":"orange","a":{"e":161,"c":52,"a":33,"b":"violet","d":169,"f":122},"b":{"e":"yellow","a":-12,"d":"yellow","c":43,"h":-30,"b":"blue","g":94,"f":"yellow"},"d":{"e":0,"a":37,"d":"green","c":-30,"h":101,"b":111,"g":"orange","f":195}},"g":{"a":138,"b":"yellow"},"f":[160]},"d":"violet"},[{"c":{"e":{"e":[-30,"green",127],"c":"red","a":"red","b":123,"d":163},"c":"violet","a":[62,"red",101,103,172,"green",{"e":"orange","a":"blue","d":"green","j":23,"c":"red","h":"blue","b":43,"g":"orange","f":"red","i":-31},"violet",159],"b":"orange","d":37,"f":143},"a":"blue","b":136},{"e":74,"a":49,"d":"violet","j":176,"c":{"e":147,"c":50,"a":158,"b":{"e":55,"a":99,"d":"yellow","c":{"e":"red","a":"yellow","d":-14,"j":89,"c":79,"h":185,"b":138,"g":-1,"f":66,"i":"green"},"h":{"a":-9},"b":{"e":-19,"a":"violet","d":"red","c":-5,"h":99,"b":11,"g":"green","f":90},"g":177,"f":146,"i":"green"},"d":190,"f":{"e":"red","c":"yellow","a":"blue","g":"blue","b":135,"d":-49,"f":114}},"h":"yellow","b":88,"g":[{"a":["green","red",36,"violet"]},{"e":[118],"c":"violet","a":-4,"b":"red","d":"blue"},"violet","green",[["green","blue",81,"orange","blue","violet","violet",115,195],19,39,39,31,41,-1],"yellow",{"a":42,"b":149},79],"f":129,"i":173},["violet",{"e":48,"a":81,"d":102,"j":76,"c":182,"h":{"a":43,"b":"violet"},"b":-27,"g":166,"f":["orange",["yellow"],36,"green",[86,"green",2,"yellow",-36],83,"yellow","orange",89],"i":133},[{"a":"violet","b":"violet"},"blue","orange","orange",161,"violet",[196,-14,152,{"a":129},"violet"],181,"red","red"],{"e":"violet","c":40,"a":["orange","violet","yellow","violet","yellow",91,"orange","violet",108],"g":"orange","b":"blue","d":[{"a":"orange"},-28,7,"orange",{"a":"violet"},183],"f":-12},115,-32,"yellow","violet","orange",193],{"e":{"a":147,"b":11},"c":127,"a":79,"b":"yellow","d":-5},{"e":[{"e":1,"a":101,"d":"blue","c":[126,"violet",-24,"green"],"h":"blue","b":149,"g":"orange","f":"violet"},"red","red",{"a":5,"b":"orange"},"red"],"c":{"e":"orange","a":-49,"d":"red","j":-22,"c":{"e":"blue","c":155,"a":-2,"g":"blue","b":{"c":"violet","a":151,"b":"blue","d":"violet"},"d":{"c":55,"a":"blue","b":68,"d":"green"},"f":"green"},"h":"red","b":"red","g":27,"f":[["violet","blue"],"violet",144,111,-24,"blue","red","yellow"],"i":{"a":155,"b":38}},"a":"red","b":1,"d":"yellow","f":{"e":{"c":78,"a":40,"b":"green"},"c":"yellow","a":122,"g":"blue","b":"red","d":{"a":[70,79,65,"green",77,"red",133]},"f":[115,"blue"]}},{"c":42,"a":[{"e":"violet","c":{"e":"violet","a":"blue","d":"yellow","c":"violet","h":-24,"b":11,"g":"green","f":"green","i":"violet"},"a":122,"b":"orange","d":"violet"},[197,"blue",62,-32,127,119,"orange","blue"],121,{"c":198,"a":"orange","b":["red","yellow","yellow"],"d":"red"},-5],"b":{"e":14,"c":-41,"a":[["green",75,"yellow",138,"green","orange",42,188],21,98,109,149],"g":-36,"b":[-34,["orange","green",98,-45],[33,89,"blue","green"],184,"violet","yellow"],"d":["green",["orange",111,"blue","orange","blue","yellow","orange",189,"yellow","blue"],"orange",98,"green"],"f":[-32,{"e":-13,"c":"blue","a":108,"g":106,"b":153,"d":-45,"f":3},"blue",109,"blue"]}},[[[172,{"e":"red","a":"blue","d":71,"j":"green","c":61,"h":"orange","b":133,"g":155,"f":153,"i":169},"red",-6,"red",155],[60,130,80],"blue",["green",63,"green",127,"red"],["yellow",185,{"c":"orange","a":27,"b":"blue"},"yellow","violet",{"c":32,"a":6,"b":-37},-18],"yellow",138,["blue",{"e":94,"c":"blue","a":156,"b":-15,"d":52},101,"orange",61],"blue"],{"e":[62,"blue","red"],"a":138,"d":"red","j":"yellow","c":"blue","h":["green","green",-42,"green"],"b":["red",3,-36,"red","red","violet",{"e":"violet","a":"blue","d":77,"c":"orange","h":"yellow","b":"violet","g":"orange","f":"green","i":"blue"}],"g":[193,"blue","yellow",74,"green",-24,96,7],"f":-9,"i":"blue"},["yellow",[138,100,"orange",62,-30,"blue","green"],"yellow","violet",19]],109,{"e":"violet","a":"blue","d":90,"j":-39,"c":"green","h":[{"a":"green","b":153},91],"b":189,"g":"blue","f":"orange","i":"green"}],{"a":{"c":"green","a":34,"b":["yellow",181,-2,126,"blue","orange","violet"],"d":["red","violet",133,[192,176,16,"blue",3],[96,"blue","red","orange",[-16,"red",119,"yellow","orange","red",149,"red"],"red","violet","violet",-17,"yellow"],["blue"],"blue","green","blue"]},"b":{"a":"green","b":"violet"}},{"e":{"e":170,"c":139,"a":[{"e":-15,"a":78,"d":"violet","j":-1,"c":7,"h":71,"b":[116,-1,-25,-20],"g":"blue","f":"green","i":68},-25,[[125,"orange",134,"orange",35,50,126],-3,[166,"red",33,"red",85],-33,"orange",[198,"violet","red","blue",106,141,-45],-47],77,[["violet",74,"green","yellow",130,"violet"],9],{"e":9,"a":140,"d":111,"c":"yellow","h":"orange","b":"yellow","g":"violet","f":"red"}],"b":{"e":"green","c":167,"a":[16,-5,"green","red","green"],"b":-27,"d":"blue","f":"orange"},"d":{"e":{"c":66,"a":{"e":"red","a":"violet","d":"yellow","j":"red","c":"blue","h":-32,"b":95,"g":"violet","f":31,"i":"red"},"b":"blue","d":"blue"},"a":"red","d":{"c":75,"a":"yellow","b":"green","d":["green",-21,171,"yellow","blue",131,0,-33]},"c":[164,"orange"],"h":"red","b":118,"g":161,"f":"yellow","i":{"e":"violet","a":"green","d":{"e":123,"c":"violet","a":"orange","g":46,"b":-29,"d":"yellow","f":43},"c":-44,"h":"green","b":{"c":"green","a":81,"b":31,"d":"blue"},"g":"yellow","f":3}},"f":"green"},"c":"yellow","a":[["yellow","blue","red",168,69,[-44,"orange"],{"e":"blue","c":"yellow","a":65,"b":"yellow","d":"red","f":"orange"},"green","blue","blue"],{"e":{"c":48,"a":-39,"b":["orange",127,"blue","blue",92,"green"],"d":"red"},"a":-41,"d":"blue","j":"blue","c":134,"h":["violet","red"],"b":-48,"g":13,"f":"blue","i":["red",131,"blue","orange","green","green",161]},{"e":197,"a":-17,"d":-48,"c":"violet","h":177,"b":123,"g":"violet","f":-12,"i":[52,148,"violet","red",128,["blue"]]},[17,-28,{"e":-20,"a":{"a":"violet"},"d":"yellow","c":{"a":"blue","b":"violet"},"h":11,"b":39,"g":{"e":"blue","a":"green","d":"violet","c":"orange","h":"blue","b":132,"g":137,"f":"red"},"f":"blue","i":[187]},{"e":"violet","c":149,"a":"green","g":"red","b":72,"d":[-5],"f":{"c":11,"a":-2,"b":"green"}},-6,["green","yellow","yellow",{"e":"orange","c":"red","a":185,"b":"green","d":"red"}]],4],"g":"orange","b":[{"e":["violet","violet","green",119,-26],"a":"blue","d":"red","c":{"e":-38,"c":"green","a":17,"b":{"a":-31},"d":"yellow"},"h":["red","violet",-13,-41,[197,"violet","orange",150,"violet",156,161,179,70,"red"],143,110,-2,"blue","green"],"b":"green","g":"blue","f":"red"},"orange",{"c":[26,{"c":-21,"a":"green","b":"red"},"blue","orange",-23,"green",179,["orange"],{"e":"orange","c":"blue","a":"green","b":169,"d":"red"},"orange"],"a":"violet","b":"blue","d":175},60,"orange",[-44,{"e":"green","c":"orange","a":-41,"b":"violet","d":[0,"orange","green"]},"blue",["violet",[26,-9,"yellow",101,6,"yellow",161],81,104,"red","red","violet","red",180,60],114],"orange",15,22,"yellow"],"d":[53,"yellow",{"e":{"e":[99],"a":51,"d":["orange","yellow",114],"c":67,"h":{"e":109,"c":"violet","a":"orange","g":"orange","b":"blue","d":"orange","f":-4},"b":-27,"g":[93,"orange"],"f":"blue","i":"red"},"a":"red","d":37,"j":{"c":"red","a":"blue","b":"orange","d":{"a":"violet"}},"c":["green"],"h":"orange","b":[32,{"c":"red","a":"red","b":34},81,-3,{"c":"red","a":133,"b":-47,"d":112},"green","green","orange",{"e":"blue","a":"orange","d":"green","j":45,"c":-16,"h":78,"b":-28,"g":"yellow","f":"blue","i":130},0],"g":116,"f":-5,"i":"red"},"yellow","blue",152],"f":{"c":{"e":116,"c":"orange","a":128,"b":"blue","d":"blue"},"a":2,"b":{"c":101,"a":-48,"b":["yellow",106,179,["orange",97,104,"violet","orange","blue","orange"],{"e":"blue","a":183,"d":"red","c":-8,"h":26,"b":"orange","g":4,"f":"orange"},"violet","green","blue","green"]}}}],[{"e":10,"c":[[{"a":195},"yellow",[89,"orange","blue",[158,"violet",-41,174,135,"red",-21,182,"yellow","green"]],"green",{"e":"orange","a":[159,-6],"d":"yellow","j":"violet","c":"green","h":-23,"b":"orange","g":108,"f":"orange","i":53},["blue"],["blue","blue",[3,"violet","red"],"violet","yellow","violet"],85,92,"yellow"],{"a":"violet","b":188},"violet",{"a":197}],"a":-46,"g":"yellow","b":[54,["yellow","orange","violet",168,197,125,{"e":"blue","c":-24,"a":"orange","g":164,"b":"red","d":148,"f":{"e":48,"c":61,"a":"yellow","g":"blue","b":-46,"d":56,"f":-4}},{"a":["blue",131,6]},{"c":[179],"a":-13,"b":"violet","d":-34},-22],"violet",187],"d":34,"f":"yellow"},197,[{"e":52,"c":96,"a":{"e":59,"c":"orange","a":73,"b":["blue","green"],"d":-22},"b":{"e":["blue",152],"a":123,"d":"green","c":28,"h":-33,"b":-8,"g":"violet","f":167,"i":-29},"d":[[-21,"yellow"],52,"blue","red"]},-21],176,[[[193],53]],[[175,{"e":"red","a":132,"d":113,"c":["yellow"],"h":["red",185,129,57,"violet",135,"green","yellow","blue","green"],"b":"orange","g":-20,"f":{"c":"red","a":"orange","b":{"a":"violet","b":11}},"i":141},28,{"e":-4,"a":{"e":51,"a":171,"d":103,"c":{"e":-9,"a":144,"d":"green","j":"orange","c":"violet","h":126,"b":"yellow","g":60,"f":"violet","i":"orange"},"h":{"e":-40,"c":99,"a":"orange","g":"green","b":"red","d":128,"f":"blue"},"b":"green","g":82,"f":-23},"d":-16,"j":"violet","c":108,"h":140,"b":"yellow","g":"blue","f":84,"i":"orange"},[{"e":"red","c":-31,"a":-23,"g":-11,"b":25,"d":"green","f":"green"},{"e":"blue","c":180,"a":58,"b":-27,"d":60,"f":79},"orange",172],"red"],["orange",{"c":64,"a":109,"b":-14,"d":"red"},{"a":70,"b":"orange"},["violet",17],{"e":"violet","a":[141,"blue",{"a":"red"},[142,"red","violet","violet",-45,58,78,"yellow","orange"],"orange"],"d":{"e":"green","a":"red","d":86,"c":{"e":-44,"a":33,"d":"violet","c":188,"h":"red","b":-36,"g":"blue","f":"yellow"},"h":"red","b":186,"g":166,"f":"red"},"c":20,"h":"red","b":["violet",{"e":"blue","a":187,"d":115,"j":193,"c":119,"h":"yellow","b":"yellow","g":"red","f":74,"i":25},"orange",0,-17,"yellow",-23],"g":199,"f":76}]]]] diff --git a/src/main/resources/2015/day13.txt b/src/main/resources/2015/day13.txt new file mode 100644 index 00000000..a6f9c66f --- /dev/null +++ b/src/main/resources/2015/day13.txt @@ -0,0 +1,56 @@ +Alice would gain 2 happiness units by sitting next to Bob. +Alice would gain 26 happiness units by sitting next to Carol. +Alice would lose 82 happiness units by sitting next to David. +Alice would lose 75 happiness units by sitting next to Eric. +Alice would gain 42 happiness units by sitting next to Frank. +Alice would gain 38 happiness units by sitting next to George. +Alice would gain 39 happiness units by sitting next to Mallory. +Bob would gain 40 happiness units by sitting next to Alice. +Bob would lose 61 happiness units by sitting next to Carol. +Bob would lose 15 happiness units by sitting next to David. +Bob would gain 63 happiness units by sitting next to Eric. +Bob would gain 41 happiness units by sitting next to Frank. +Bob would gain 30 happiness units by sitting next to George. +Bob would gain 87 happiness units by sitting next to Mallory. +Carol would lose 35 happiness units by sitting next to Alice. +Carol would lose 99 happiness units by sitting next to Bob. +Carol would lose 51 happiness units by sitting next to David. +Carol would gain 95 happiness units by sitting next to Eric. +Carol would gain 90 happiness units by sitting next to Frank. +Carol would lose 16 happiness units by sitting next to George. +Carol would gain 94 happiness units by sitting next to Mallory. +David would gain 36 happiness units by sitting next to Alice. +David would lose 18 happiness units by sitting next to Bob. +David would lose 65 happiness units by sitting next to Carol. +David would lose 18 happiness units by sitting next to Eric. +David would lose 22 happiness units by sitting next to Frank. +David would gain 2 happiness units by sitting next to George. +David would gain 42 happiness units by sitting next to Mallory. +Eric would lose 65 happiness units by sitting next to Alice. +Eric would gain 24 happiness units by sitting next to Bob. +Eric would gain 100 happiness units by sitting next to Carol. +Eric would gain 51 happiness units by sitting next to David. +Eric would gain 21 happiness units by sitting next to Frank. +Eric would gain 55 happiness units by sitting next to George. +Eric would lose 44 happiness units by sitting next to Mallory. +Frank would lose 48 happiness units by sitting next to Alice. +Frank would gain 91 happiness units by sitting next to Bob. +Frank would gain 8 happiness units by sitting next to Carol. +Frank would lose 66 happiness units by sitting next to David. +Frank would gain 97 happiness units by sitting next to Eric. +Frank would lose 9 happiness units by sitting next to George. +Frank would lose 92 happiness units by sitting next to Mallory. +George would lose 44 happiness units by sitting next to Alice. +George would lose 25 happiness units by sitting next to Bob. +George would gain 17 happiness units by sitting next to Carol. +George would gain 92 happiness units by sitting next to David. +George would lose 92 happiness units by sitting next to Eric. +George would gain 18 happiness units by sitting next to Frank. +George would gain 97 happiness units by sitting next to Mallory. +Mallory would gain 92 happiness units by sitting next to Alice. +Mallory would lose 96 happiness units by sitting next to Bob. +Mallory would lose 51 happiness units by sitting next to Carol. +Mallory would lose 81 happiness units by sitting next to David. +Mallory would gain 31 happiness units by sitting next to Eric. +Mallory would lose 73 happiness units by sitting next to Frank. +Mallory would lose 89 happiness units by sitting next to George. diff --git a/src/main/resources/2015/day14.txt b/src/main/resources/2015/day14.txt new file mode 100644 index 00000000..6cf5489f --- /dev/null +++ b/src/main/resources/2015/day14.txt @@ -0,0 +1,9 @@ +Dancer can fly 27 km/s for 5 seconds, but then must rest for 132 seconds. +Cupid can fly 22 km/s for 2 seconds, but then must rest for 41 seconds. +Rudolph can fly 11 km/s for 5 seconds, but then must rest for 48 seconds. +Donner can fly 28 km/s for 5 seconds, but then must rest for 134 seconds. +Dasher can fly 4 km/s for 16 seconds, but then must rest for 55 seconds. +Blitzen can fly 14 km/s for 3 seconds, but then must rest for 38 seconds. +Prancer can fly 3 km/s for 21 seconds, but then must rest for 40 seconds. +Comet can fly 18 km/s for 6 seconds, but then must rest for 103 seconds. +Vixen can fly 18 km/s for 5 seconds, but then must rest for 84 seconds. diff --git a/src/main/resources/2015/day15.txt b/src/main/resources/2015/day15.txt new file mode 100644 index 00000000..6281182f --- /dev/null +++ b/src/main/resources/2015/day15.txt @@ -0,0 +1,4 @@ +Sprinkles: capacity 5, durability -1, flavor 0, texture 0, calories 5 +PeanutButter: capacity -1, durability 3, flavor 0, texture 0, calories 1 +Frosting: capacity 0, durability -1, flavor 4, texture 0, calories 6 +Sugar: capacity -1, durability 0, flavor 0, texture 2, calories 8 diff --git a/src/main/resources/2015/day16.txt b/src/main/resources/2015/day16.txt new file mode 100644 index 00000000..b1bd498e --- /dev/null +++ b/src/main/resources/2015/day16.txt @@ -0,0 +1,500 @@ +Sue 1: children: 1, cars: 8, vizslas: 7 +Sue 2: akitas: 10, perfumes: 10, children: 5 +Sue 3: cars: 5, pomeranians: 4, vizslas: 1 +Sue 4: goldfish: 5, children: 8, perfumes: 3 +Sue 5: vizslas: 2, akitas: 7, perfumes: 6 +Sue 6: vizslas: 0, akitas: 1, perfumes: 2 +Sue 7: perfumes: 8, cars: 4, goldfish: 10 +Sue 8: perfumes: 7, children: 2, cats: 1 +Sue 9: pomeranians: 3, goldfish: 10, trees: 10 +Sue 10: akitas: 7, trees: 8, pomeranians: 4 +Sue 11: goldfish: 1, perfumes: 4, cars: 6 +Sue 12: samoyeds: 6, trees: 6, perfumes: 2 +Sue 13: akitas: 10, pomeranians: 0, vizslas: 2 +Sue 14: cars: 2, perfumes: 3, children: 4 +Sue 15: goldfish: 2, children: 8, cars: 5 +Sue 16: goldfish: 9, cars: 0, vizslas: 5 +Sue 17: cats: 5, trees: 6, perfumes: 6 +Sue 18: cars: 0, perfumes: 8, pomeranians: 7 +Sue 19: trees: 2, goldfish: 5, perfumes: 4 +Sue 20: akitas: 4, vizslas: 4, trees: 0 +Sue 21: pomeranians: 7, trees: 0, goldfish: 10 +Sue 22: cars: 4, vizslas: 0, perfumes: 3 +Sue 23: vizslas: 8, trees: 1, akitas: 2 +Sue 24: children: 7, trees: 0, akitas: 1 +Sue 25: goldfish: 3, akitas: 2, trees: 2 +Sue 26: pomeranians: 4, vizslas: 4, samoyeds: 2 +Sue 27: cars: 0, trees: 8, akitas: 5 +Sue 28: perfumes: 6, cats: 0, cars: 2 +Sue 29: trees: 7, akitas: 1, vizslas: 1 +Sue 30: perfumes: 9, cars: 9, trees: 10 +Sue 31: pomeranians: 5, akitas: 9, samoyeds: 1 +Sue 32: pomeranians: 10, vizslas: 5, goldfish: 5 +Sue 33: vizslas: 2, akitas: 3, trees: 7 +Sue 34: goldfish: 10, perfumes: 0, samoyeds: 7 +Sue 35: akitas: 6, cats: 7, perfumes: 10 +Sue 36: pomeranians: 8, vizslas: 7, akitas: 6 +Sue 37: goldfish: 2, cars: 10, children: 7 +Sue 38: goldfish: 2, perfumes: 3, cars: 7 +Sue 39: trees: 9, vizslas: 10, cars: 5 +Sue 40: goldfish: 1, pomeranians: 0, trees: 2 +Sue 41: trees: 2, goldfish: 6, vizslas: 3 +Sue 42: akitas: 1, cars: 3, vizslas: 3 +Sue 43: akitas: 1, pomeranians: 1, vizslas: 3 +Sue 44: goldfish: 7, akitas: 3, vizslas: 10 +Sue 45: akitas: 8, samoyeds: 8, goldfish: 2 +Sue 46: trees: 0, vizslas: 4, cars: 9 +Sue 47: cars: 9, trees: 10, perfumes: 4 +Sue 48: akitas: 0, vizslas: 5, perfumes: 4 +Sue 49: goldfish: 9, trees: 1, cars: 4 +Sue 50: goldfish: 2, perfumes: 5, cars: 2 +Sue 51: samoyeds: 1, goldfish: 2, perfumes: 7 +Sue 52: cars: 0, perfumes: 4, goldfish: 8 +Sue 53: goldfish: 9, vizslas: 2, akitas: 9 +Sue 54: trees: 1, goldfish: 9, children: 5 +Sue 55: cars: 0, akitas: 5, trees: 4 +Sue 56: trees: 4, samoyeds: 5, children: 9 +Sue 57: children: 0, vizslas: 8, cars: 3 +Sue 58: trees: 4, pomeranians: 5, akitas: 5 +Sue 59: vizslas: 10, cats: 3, children: 2 +Sue 60: cats: 6, vizslas: 2, cars: 2 +Sue 61: akitas: 1, vizslas: 0, children: 4 +Sue 62: akitas: 4, trees: 9, children: 10 +Sue 63: pomeranians: 6, vizslas: 6, cars: 4 +Sue 64: perfumes: 8, pomeranians: 1, children: 8 +Sue 65: perfumes: 3, goldfish: 6, trees: 5 +Sue 66: goldfish: 10, akitas: 8, vizslas: 4 +Sue 67: vizslas: 10, samoyeds: 3, trees: 2 +Sue 68: samoyeds: 4, cars: 7, perfumes: 3 +Sue 69: perfumes: 2, goldfish: 0, trees: 2 +Sue 70: trees: 8, vizslas: 7, akitas: 6 +Sue 71: cars: 2, children: 7, perfumes: 3 +Sue 72: cars: 1, akitas: 9, perfumes: 0 +Sue 73: vizslas: 4, akitas: 7, cars: 5 +Sue 74: samoyeds: 3, cars: 3, akitas: 2 +Sue 75: trees: 2, cars: 1, vizslas: 7 +Sue 76: samoyeds: 9, perfumes: 1, trees: 6 +Sue 77: trees: 6, perfumes: 10, cars: 7 +Sue 78: trees: 0, children: 8, vizslas: 5 +Sue 79: vizslas: 0, trees: 0, samoyeds: 1 +Sue 80: trees: 6, goldfish: 8, perfumes: 0 +Sue 81: samoyeds: 8, pomeranians: 6, akitas: 5 +Sue 82: vizslas: 6, perfumes: 9, akitas: 4 +Sue 83: cats: 0, vizslas: 3, pomeranians: 10 +Sue 84: cars: 4, perfumes: 6, samoyeds: 5 +Sue 85: vizslas: 7, trees: 5, goldfish: 7 +Sue 86: goldfish: 2, trees: 2, vizslas: 1 +Sue 87: trees: 6, goldfish: 10, pomeranians: 4 +Sue 88: vizslas: 1, akitas: 0, perfumes: 8 +Sue 89: goldfish: 8, akitas: 3, vizslas: 7 +Sue 90: vizslas: 9, akitas: 7, perfumes: 9 +Sue 91: children: 7, cars: 7, trees: 9 +Sue 92: vizslas: 10, akitas: 8, goldfish: 1 +Sue 93: goldfish: 7, vizslas: 2, pomeranians: 0 +Sue 94: cats: 2, samoyeds: 6, pomeranians: 3 +Sue 95: samoyeds: 4, children: 4, pomeranians: 10 +Sue 96: pomeranians: 9, cats: 1, goldfish: 3 +Sue 97: trees: 1, akitas: 6, goldfish: 1 +Sue 98: vizslas: 7, akitas: 2, perfumes: 7 +Sue 99: pomeranians: 6, perfumes: 2, trees: 1 +Sue 100: cars: 3, children: 9, trees: 10 +Sue 101: children: 0, perfumes: 0, vizslas: 3 +Sue 102: cars: 4, goldfish: 5, children: 2 +Sue 103: pomeranians: 3, perfumes: 7, cats: 8 +Sue 104: akitas: 0, perfumes: 5, vizslas: 5 +Sue 105: akitas: 7, vizslas: 2, samoyeds: 8 +Sue 106: goldfish: 7, perfumes: 0, cats: 8 +Sue 107: cats: 6, pomeranians: 9, cars: 6 +Sue 108: akitas: 3, vizslas: 10, cats: 5 +Sue 109: akitas: 10, perfumes: 2, cars: 7 +Sue 110: goldfish: 7, pomeranians: 1, trees: 1 +Sue 111: akitas: 10, samoyeds: 6, vizslas: 6 +Sue 112: cats: 6, akitas: 7, trees: 9 +Sue 113: akitas: 1, trees: 9, vizslas: 8 +Sue 114: vizslas: 2, cats: 1, cars: 4 +Sue 115: akitas: 0, trees: 5, goldfish: 7 +Sue 116: goldfish: 2, trees: 10, akitas: 2 +Sue 117: cars: 4, goldfish: 10, perfumes: 5 +Sue 118: cars: 5, perfumes: 6, trees: 0 +Sue 119: perfumes: 5, vizslas: 1, cats: 0 +Sue 120: perfumes: 8, akitas: 9, vizslas: 4 +Sue 121: samoyeds: 2, vizslas: 7, perfumes: 6 +Sue 122: children: 6, trees: 9, perfumes: 2 +Sue 123: cars: 7, akitas: 0, pomeranians: 0 +Sue 124: akitas: 7, cats: 8, vizslas: 5 +Sue 125: goldfish: 3, trees: 1, cars: 4 +Sue 126: cars: 4, perfumes: 3, akitas: 0 +Sue 127: children: 10, vizslas: 5, akitas: 9 +Sue 128: akitas: 3, samoyeds: 2, cats: 8 +Sue 129: cats: 8, akitas: 1, vizslas: 8 +Sue 130: trees: 4, cars: 6, perfumes: 6 +Sue 131: akitas: 7, perfumes: 6, goldfish: 9 +Sue 132: akitas: 6, vizslas: 7, trees: 1 +Sue 133: akitas: 5, vizslas: 7, children: 9 +Sue 134: cars: 8, goldfish: 4, pomeranians: 4 +Sue 135: samoyeds: 1, pomeranians: 6, akitas: 4 +Sue 136: perfumes: 10, goldfish: 1, cars: 3 +Sue 137: cars: 3, samoyeds: 6, vizslas: 7 +Sue 138: samoyeds: 10, akitas: 3, perfumes: 4 +Sue 139: perfumes: 10, vizslas: 2, goldfish: 7 +Sue 140: samoyeds: 7, cars: 1, trees: 2 +Sue 141: children: 6, cats: 5, cars: 9 +Sue 142: cats: 0, trees: 1, akitas: 10 +Sue 143: samoyeds: 4, cars: 0, children: 7 +Sue 144: trees: 0, cars: 4, perfumes: 8 +Sue 145: goldfish: 7, cars: 5, trees: 1 +Sue 146: perfumes: 7, cars: 7, goldfish: 0 +Sue 147: trees: 2, goldfish: 7, vizslas: 5 +Sue 148: samoyeds: 8, perfumes: 1, trees: 0 +Sue 149: vizslas: 2, samoyeds: 5, trees: 0 +Sue 150: akitas: 4, perfumes: 4, pomeranians: 2 +Sue 151: trees: 2, cars: 0, goldfish: 10 +Sue 152: goldfish: 7, vizslas: 0, trees: 0 +Sue 153: children: 9, cats: 0, pomeranians: 10 +Sue 154: cars: 6, goldfish: 10, akitas: 5 +Sue 155: perfumes: 9, trees: 2, akitas: 3 +Sue 156: pomeranians: 9, perfumes: 5, cars: 9 +Sue 157: akitas: 0, trees: 2, cars: 7 +Sue 158: goldfish: 10, trees: 8, akitas: 7 +Sue 159: akitas: 5, trees: 10, cars: 10 +Sue 160: akitas: 3, trees: 5, cars: 8 +Sue 161: samoyeds: 2, cars: 7, perfumes: 4 +Sue 162: cars: 6, vizslas: 10, pomeranians: 5 +Sue 163: cars: 10, perfumes: 6, vizslas: 9 +Sue 164: pomeranians: 7, cars: 4, vizslas: 2 +Sue 165: goldfish: 9, vizslas: 3, trees: 1 +Sue 166: goldfish: 1, samoyeds: 3, trees: 1 +Sue 167: vizslas: 4, goldfish: 7, cats: 5 +Sue 168: children: 1, cars: 5, samoyeds: 7 +Sue 169: trees: 1, samoyeds: 3, goldfish: 6 +Sue 170: goldfish: 2, cars: 3, perfumes: 9 +Sue 171: cars: 4, goldfish: 0, trees: 6 +Sue 172: cats: 8, perfumes: 6, trees: 1 +Sue 173: akitas: 9, goldfish: 7, cars: 10 +Sue 174: vizslas: 2, trees: 0, akitas: 1 +Sue 175: perfumes: 3, vizslas: 8, akitas: 4 +Sue 176: perfumes: 0, akitas: 6, goldfish: 3 +Sue 177: perfumes: 6, children: 1, goldfish: 10 +Sue 178: cars: 5, vizslas: 3, children: 10 +Sue 179: perfumes: 3, trees: 8, cats: 9 +Sue 180: perfumes: 8, vizslas: 4, trees: 7 +Sue 181: perfumes: 7, vizslas: 9, samoyeds: 4 +Sue 182: vizslas: 9, trees: 4, pomeranians: 4 +Sue 183: trees: 9, cars: 3, goldfish: 5 +Sue 184: perfumes: 2, cars: 4, vizslas: 3 +Sue 185: children: 10, akitas: 10, cats: 9 +Sue 186: cars: 5, samoyeds: 0, trees: 0 +Sue 187: trees: 2, goldfish: 3, cars: 4 +Sue 188: goldfish: 3, vizslas: 1, cats: 6 +Sue 189: trees: 2, pomeranians: 10, cars: 7 +Sue 190: perfumes: 10, akitas: 3, samoyeds: 0 +Sue 191: cats: 5, vizslas: 6, akitas: 6 +Sue 192: samoyeds: 5, trees: 1, perfumes: 8 +Sue 193: pomeranians: 0, akitas: 9, cats: 0 +Sue 194: trees: 1, goldfish: 0, perfumes: 10 +Sue 195: perfumes: 2, akitas: 7, cars: 5 +Sue 196: perfumes: 5, samoyeds: 8, cars: 1 +Sue 197: vizslas: 2, pomeranians: 9, trees: 1 +Sue 198: trees: 8, vizslas: 6, children: 8 +Sue 199: pomeranians: 4, cars: 7, vizslas: 5 +Sue 200: trees: 0, perfumes: 10, akitas: 10 +Sue 201: cats: 9, akitas: 4, vizslas: 0 +Sue 202: goldfish: 9, pomeranians: 9, cats: 6 +Sue 203: cars: 5, perfumes: 5, trees: 2 +Sue 204: pomeranians: 7, children: 2, akitas: 6 +Sue 205: samoyeds: 7, pomeranians: 7, children: 6 +Sue 206: trees: 1, cars: 1, pomeranians: 4 +Sue 207: goldfish: 2, perfumes: 5, trees: 0 +Sue 208: perfumes: 2, samoyeds: 4, trees: 1 +Sue 209: cars: 8, perfumes: 6, goldfish: 9 +Sue 210: perfumes: 4, cars: 8, samoyeds: 3 +Sue 211: perfumes: 2, cars: 8, trees: 9 +Sue 212: trees: 7, perfumes: 2, akitas: 5 +Sue 213: children: 3, goldfish: 5, vizslas: 0 +Sue 214: akitas: 6, goldfish: 0, children: 0 +Sue 215: trees: 8, akitas: 3, goldfish: 1 +Sue 216: goldfish: 6, perfumes: 8, akitas: 3 +Sue 217: children: 7, trees: 2, vizslas: 6 +Sue 218: goldfish: 8, samoyeds: 4, pomeranians: 6 +Sue 219: goldfish: 8, samoyeds: 0, children: 9 +Sue 220: perfumes: 1, cars: 8, vizslas: 6 +Sue 221: perfumes: 9, cars: 10, children: 10 +Sue 222: perfumes: 9, vizslas: 1, trees: 0 +Sue 223: goldfish: 1, akitas: 2, vizslas: 8 +Sue 224: samoyeds: 8, akitas: 7, vizslas: 4 +Sue 225: goldfish: 1, cars: 4, perfumes: 10 +Sue 226: goldfish: 9, trees: 4, perfumes: 5 +Sue 227: vizslas: 5, trees: 4, goldfish: 7 +Sue 228: cars: 1, cats: 10, perfumes: 4 +Sue 229: vizslas: 8, cars: 10, akitas: 4 +Sue 230: cats: 1, children: 8, vizslas: 3 +Sue 231: perfumes: 7, cats: 6, samoyeds: 7 +Sue 232: cars: 3, children: 9, perfumes: 7 +Sue 233: vizslas: 1, samoyeds: 2, children: 2 +Sue 234: trees: 1, samoyeds: 8, children: 2 +Sue 235: trees: 6, akitas: 9, goldfish: 7 +Sue 236: children: 10, trees: 0, samoyeds: 8 +Sue 237: pomeranians: 4, trees: 1, goldfish: 2 +Sue 238: vizslas: 4, akitas: 2, cars: 0 +Sue 239: goldfish: 9, cars: 10, perfumes: 4 +Sue 240: perfumes: 3, vizslas: 6, trees: 6 +Sue 241: pomeranians: 6, akitas: 4, trees: 2 +Sue 242: cars: 8, perfumes: 5, children: 7 +Sue 243: trees: 4, perfumes: 7, cars: 3 +Sue 244: perfumes: 6, akitas: 1, vizslas: 7 +Sue 245: akitas: 3, perfumes: 9, samoyeds: 0 +Sue 246: pomeranians: 3, vizslas: 9, samoyeds: 1 +Sue 247: cars: 0, goldfish: 7, cats: 2 +Sue 248: trees: 5, goldfish: 6, perfumes: 3 +Sue 249: trees: 0, pomeranians: 7, perfumes: 9 +Sue 250: cars: 9, trees: 1, goldfish: 10 +Sue 251: perfumes: 3, cars: 8, trees: 7 +Sue 252: cars: 5, akitas: 7, trees: 8 +Sue 253: perfumes: 7, akitas: 3, trees: 8 +Sue 254: goldfish: 8, samoyeds: 1, vizslas: 7 +Sue 255: perfumes: 3, cars: 4, children: 6 +Sue 256: perfumes: 9, trees: 8, children: 7 +Sue 257: trees: 8, children: 6, cars: 4 +Sue 258: vizslas: 1, trees: 10, goldfish: 9 +Sue 259: vizslas: 5, trees: 6, goldfish: 9 +Sue 260: trees: 0, goldfish: 6, cars: 7 +Sue 261: cars: 1, perfumes: 4, goldfish: 9 +Sue 262: cars: 7, goldfish: 9, cats: 9 +Sue 263: cars: 0, children: 5, goldfish: 8 +Sue 264: cars: 2, akitas: 8, trees: 0 +Sue 265: perfumes: 9, children: 8, samoyeds: 7 +Sue 266: cats: 1, children: 1, vizslas: 10 +Sue 267: vizslas: 8, children: 2, trees: 6 +Sue 268: akitas: 10, vizslas: 3, cats: 2 +Sue 269: children: 4, goldfish: 1, cats: 6 +Sue 270: vizslas: 5, cars: 9, akitas: 9 +Sue 271: vizslas: 5, children: 4, akitas: 3 +Sue 272: cars: 1, goldfish: 0, vizslas: 0 +Sue 273: goldfish: 10, samoyeds: 1, akitas: 2 +Sue 274: goldfish: 10, children: 2, pomeranians: 0 +Sue 275: children: 0, vizslas: 1, samoyeds: 6 +Sue 276: children: 1, vizslas: 3, samoyeds: 1 +Sue 277: perfumes: 4, cats: 6, children: 10 +Sue 278: pomeranians: 7, goldfish: 3, cars: 4 +Sue 279: perfumes: 5, goldfish: 9, trees: 7 +Sue 280: goldfish: 6, trees: 5, perfumes: 8 +Sue 281: cars: 2, akitas: 1, vizslas: 7 +Sue 282: vizslas: 4, akitas: 3, children: 8 +Sue 283: pomeranians: 8, akitas: 9, vizslas: 4 +Sue 284: samoyeds: 10, trees: 10, pomeranians: 2 +Sue 285: akitas: 9, perfumes: 7, goldfish: 6 +Sue 286: akitas: 2, vizslas: 7, goldfish: 10 +Sue 287: pomeranians: 8, cars: 6, samoyeds: 5 +Sue 288: pomeranians: 1, trees: 0, goldfish: 0 +Sue 289: trees: 10, samoyeds: 1, children: 0 +Sue 290: cats: 10, samoyeds: 6, trees: 0 +Sue 291: vizslas: 9, trees: 6, goldfish: 5 +Sue 292: cats: 4, perfumes: 8, cars: 3 +Sue 293: goldfish: 10, perfumes: 10, cats: 0 +Sue 294: cats: 7, trees: 6, akitas: 4 +Sue 295: vizslas: 8, cars: 1, akitas: 6 +Sue 296: vizslas: 5, akitas: 10, trees: 1 +Sue 297: pomeranians: 8, samoyeds: 5, vizslas: 4 +Sue 298: perfumes: 10, children: 5, vizslas: 2 +Sue 299: cars: 10, akitas: 7, cats: 5 +Sue 300: trees: 1, perfumes: 7, cars: 7 +Sue 301: cars: 9, vizslas: 1, perfumes: 3 +Sue 302: perfumes: 9, vizslas: 1, akitas: 5 +Sue 303: akitas: 9, trees: 1, goldfish: 10 +Sue 304: children: 10, vizslas: 6, pomeranians: 8 +Sue 305: trees: 3, goldfish: 6, cats: 9 +Sue 306: cars: 5, perfumes: 9, vizslas: 5 +Sue 307: children: 0, goldfish: 7, trees: 2 +Sue 308: trees: 9, samoyeds: 4, cars: 0 +Sue 309: cats: 8, vizslas: 2, perfumes: 3 +Sue 310: cars: 6, pomeranians: 6, vizslas: 6 +Sue 311: vizslas: 6, akitas: 7, cats: 10 +Sue 312: trees: 0, goldfish: 7, cars: 0 +Sue 313: perfumes: 5, akitas: 5, cars: 2 +Sue 314: akitas: 10, vizslas: 3, samoyeds: 8 +Sue 315: cars: 3, perfumes: 1, goldfish: 8 +Sue 316: pomeranians: 6, goldfish: 9, perfumes: 1 +Sue 317: goldfish: 4, akitas: 6, cars: 2 +Sue 318: perfumes: 8, vizslas: 8, akitas: 0 +Sue 319: akitas: 10, cars: 5, vizslas: 6 +Sue 320: vizslas: 4, akitas: 3, cats: 4 +Sue 321: goldfish: 4, akitas: 8, cars: 8 +Sue 322: pomeranians: 5, vizslas: 7, cats: 1 +Sue 323: perfumes: 1, trees: 6, goldfish: 0 +Sue 324: goldfish: 6, trees: 10, cars: 10 +Sue 325: akitas: 2, samoyeds: 6, trees: 9 +Sue 326: vizslas: 4, akitas: 7, cars: 9 +Sue 327: children: 3, perfumes: 4, cars: 1 +Sue 328: akitas: 9, perfumes: 6, cars: 10 +Sue 329: perfumes: 2, goldfish: 0, trees: 1 +Sue 330: vizslas: 10, pomeranians: 7, goldfish: 6 +Sue 331: trees: 3, vizslas: 8, cars: 3 +Sue 332: akitas: 2, cats: 1, goldfish: 8 +Sue 333: cars: 6, trees: 2, vizslas: 0 +Sue 334: samoyeds: 7, cars: 7, trees: 3 +Sue 335: cats: 7, children: 1, perfumes: 8 +Sue 336: akitas: 5, goldfish: 10, vizslas: 5 +Sue 337: cats: 3, vizslas: 0, akitas: 10 +Sue 338: perfumes: 8, cars: 1, trees: 8 +Sue 339: cars: 4, samoyeds: 8, children: 2 +Sue 340: goldfish: 9, pomeranians: 1, samoyeds: 1 +Sue 341: akitas: 3, trees: 0, goldfish: 2 +Sue 342: perfumes: 4, vizslas: 8, pomeranians: 9 +Sue 343: akitas: 4, cars: 5, goldfish: 4 +Sue 344: samoyeds: 5, cats: 4, trees: 0 +Sue 345: samoyeds: 4, cars: 8, akitas: 2 +Sue 346: akitas: 3, vizslas: 10, perfumes: 10 +Sue 347: goldfish: 10, akitas: 4, cars: 1 +Sue 348: perfumes: 10, cats: 4, vizslas: 5 +Sue 349: akitas: 2, vizslas: 4, cars: 7 +Sue 350: akitas: 5, vizslas: 5, cars: 6 +Sue 351: vizslas: 8, perfumes: 6, cars: 3 +Sue 352: cars: 10, vizslas: 0, goldfish: 10 +Sue 353: cars: 10, perfumes: 5, children: 7 +Sue 354: vizslas: 6, akitas: 3, samoyeds: 9 +Sue 355: akitas: 2, perfumes: 7, cars: 10 +Sue 356: cars: 10, perfumes: 7, children: 6 +Sue 357: akitas: 4, cars: 8, trees: 1 +Sue 358: trees: 2, cars: 1, goldfish: 2 +Sue 359: vizslas: 5, cars: 9, trees: 4 +Sue 360: perfumes: 4, akitas: 3, cars: 3 +Sue 361: children: 3, akitas: 2, cats: 5 +Sue 362: cars: 8, cats: 4, akitas: 10 +Sue 363: cats: 2, trees: 1, vizslas: 4 +Sue 364: vizslas: 2, pomeranians: 5, samoyeds: 9 +Sue 365: samoyeds: 2, akitas: 7, goldfish: 9 +Sue 366: goldfish: 8, trees: 7, cats: 2 +Sue 367: perfumes: 2, vizslas: 6, trees: 5 +Sue 368: cars: 5, samoyeds: 0, perfumes: 6 +Sue 369: samoyeds: 10, trees: 10, vizslas: 1 +Sue 370: trees: 2, vizslas: 3, cars: 4 +Sue 371: akitas: 6, pomeranians: 2, cats: 4 +Sue 372: trees: 2, perfumes: 3, goldfish: 9 +Sue 373: vizslas: 5, children: 0, pomeranians: 6 +Sue 374: trees: 1, vizslas: 8, perfumes: 10 +Sue 375: cars: 0, akitas: 6, children: 0 +Sue 376: akitas: 1, vizslas: 0, trees: 0 +Sue 377: samoyeds: 10, cats: 5, pomeranians: 0 +Sue 378: goldfish: 3, pomeranians: 7, cats: 7 +Sue 379: perfumes: 0, cats: 0, trees: 8 +Sue 380: perfumes: 4, samoyeds: 1, akitas: 7 +Sue 381: akitas: 4, pomeranians: 2, children: 4 +Sue 382: vizslas: 9, akitas: 4, trees: 10 +Sue 383: trees: 1, vizslas: 10, akitas: 6 +Sue 384: trees: 3, akitas: 8, goldfish: 3 +Sue 385: goldfish: 6, perfumes: 2, children: 9 +Sue 386: children: 10, akitas: 7, goldfish: 7 +Sue 387: goldfish: 3, vizslas: 10, perfumes: 5 +Sue 388: children: 4, trees: 0, cars: 2 +Sue 389: trees: 0, cats: 3, goldfish: 10 +Sue 390: samoyeds: 9, pomeranians: 0, cats: 6 +Sue 391: samoyeds: 10, trees: 3, akitas: 4 +Sue 392: akitas: 9, goldfish: 10, perfumes: 7 +Sue 393: goldfish: 6, cars: 2, akitas: 9 +Sue 394: trees: 4, goldfish: 9, vizslas: 7 +Sue 395: vizslas: 4, samoyeds: 1, goldfish: 6 +Sue 396: vizslas: 5, cats: 0, samoyeds: 1 +Sue 397: goldfish: 7, cats: 0, trees: 7 +Sue 398: cars: 10, akitas: 1, vizslas: 7 +Sue 399: samoyeds: 10, cats: 6, goldfish: 6 +Sue 400: cats: 6, samoyeds: 0, trees: 2 +Sue 401: trees: 1, children: 4, goldfish: 2 +Sue 402: cats: 8, vizslas: 4, children: 3 +Sue 403: cars: 9, perfumes: 8, pomeranians: 2 +Sue 404: goldfish: 8, trees: 2, cars: 5 +Sue 405: perfumes: 1, pomeranians: 5, vizslas: 5 +Sue 406: perfumes: 6, trees: 2, pomeranians: 6 +Sue 407: trees: 0, goldfish: 6, cars: 6 +Sue 408: trees: 0, samoyeds: 7, goldfish: 9 +Sue 409: samoyeds: 10, goldfish: 6, pomeranians: 0 +Sue 410: perfumes: 5, vizslas: 6, trees: 0 +Sue 411: goldfish: 2, trees: 2, pomeranians: 0 +Sue 412: pomeranians: 4, perfumes: 8, cats: 8 +Sue 413: vizslas: 4, cars: 5, akitas: 1 +Sue 414: perfumes: 2, trees: 8, goldfish: 7 +Sue 415: akitas: 3, trees: 1, perfumes: 3 +Sue 416: cars: 7, trees: 1, perfumes: 8 +Sue 417: cars: 5, goldfish: 5, trees: 1 +Sue 418: cars: 9, goldfish: 4, samoyeds: 2 +Sue 419: pomeranians: 8, akitas: 1, goldfish: 6 +Sue 420: cars: 0, cats: 0, children: 8 +Sue 421: akitas: 10, goldfish: 1, vizslas: 8 +Sue 422: children: 8, vizslas: 6, samoyeds: 10 +Sue 423: samoyeds: 3, goldfish: 10, vizslas: 8 +Sue 424: cars: 3, children: 7, goldfish: 4 +Sue 425: cars: 9, perfumes: 9, goldfish: 8 +Sue 426: akitas: 5, trees: 10, vizslas: 10 +Sue 427: vizslas: 10, cars: 3, akitas: 7 +Sue 428: cats: 6, perfumes: 5, goldfish: 10 +Sue 429: goldfish: 7, trees: 5, vizslas: 10 +Sue 430: perfumes: 3, trees: 7, cars: 3 +Sue 431: cars: 2, vizslas: 1, akitas: 6 +Sue 432: pomeranians: 8, perfumes: 5, cars: 3 +Sue 433: children: 8, cars: 0, perfumes: 7 +Sue 434: samoyeds: 0, vizslas: 9, akitas: 10 +Sue 435: akitas: 3, vizslas: 8, cats: 4 +Sue 436: goldfish: 5, trees: 8, samoyeds: 8 +Sue 437: cars: 10, samoyeds: 9, goldfish: 7 +Sue 438: samoyeds: 5, akitas: 7, perfumes: 9 +Sue 439: goldfish: 10, perfumes: 5, cars: 0 +Sue 440: pomeranians: 1, samoyeds: 9, children: 4 +Sue 441: vizslas: 4, perfumes: 2, cats: 5 +Sue 442: trees: 0, pomeranians: 3, cars: 7 +Sue 443: akitas: 0, cars: 2, vizslas: 10 +Sue 444: children: 1, akitas: 9, trees: 0 +Sue 445: cars: 5, perfumes: 7, goldfish: 9 +Sue 446: akitas: 0, perfumes: 1, vizslas: 2 +Sue 447: vizslas: 7, perfumes: 0, cars: 5 +Sue 448: vizslas: 6, goldfish: 10, trees: 0 +Sue 449: cars: 7, vizslas: 7, trees: 3 +Sue 450: pomeranians: 4, akitas: 4, vizslas: 8 +Sue 451: cats: 4, perfumes: 8, children: 3 +Sue 452: samoyeds: 8, akitas: 9, cars: 1 +Sue 453: cars: 8, akitas: 5, vizslas: 2 +Sue 454: vizslas: 9, perfumes: 4, akitas: 4 +Sue 455: akitas: 3, goldfish: 2, vizslas: 6 +Sue 456: cars: 4, perfumes: 5, goldfish: 10 +Sue 457: trees: 9, pomeranians: 4, goldfish: 10 +Sue 458: pomeranians: 1, perfumes: 9, children: 6 +Sue 459: samoyeds: 0, goldfish: 8, vizslas: 6 +Sue 460: cars: 10, goldfish: 8, samoyeds: 8 +Sue 461: akitas: 8, goldfish: 9, vizslas: 2 +Sue 462: cars: 1, vizslas: 2, akitas: 8 +Sue 463: goldfish: 2, akitas: 4, samoyeds: 10 +Sue 464: children: 5, perfumes: 5, cars: 5 +Sue 465: perfumes: 9, trees: 0, samoyeds: 6 +Sue 466: akitas: 5, goldfish: 3, cats: 6 +Sue 467: perfumes: 3, goldfish: 0, trees: 4 +Sue 468: goldfish: 2, children: 4, trees: 1 +Sue 469: cars: 0, perfumes: 8, children: 7 +Sue 470: vizslas: 8, cats: 5, samoyeds: 9 +Sue 471: pomeranians: 7, trees: 2, goldfish: 3 +Sue 472: goldfish: 8, akitas: 4, perfumes: 5 +Sue 473: perfumes: 2, pomeranians: 3, cars: 8 +Sue 474: samoyeds: 0, akitas: 7, pomeranians: 6 +Sue 475: vizslas: 7, perfumes: 1, trees: 6 +Sue 476: vizslas: 3, samoyeds: 1, perfumes: 10 +Sue 477: cars: 6, perfumes: 5, vizslas: 2 +Sue 478: pomeranians: 1, goldfish: 3, akitas: 7 +Sue 479: goldfish: 10, trees: 0, cars: 3 +Sue 480: cats: 3, akitas: 5, vizslas: 8 +Sue 481: pomeranians: 5, vizslas: 2, trees: 3 +Sue 482: cars: 8, samoyeds: 10, goldfish: 10 +Sue 483: pomeranians: 3, vizslas: 6, goldfish: 5 +Sue 484: perfumes: 7, vizslas: 4, akitas: 7 +Sue 485: goldfish: 1, trees: 0, perfumes: 10 +Sue 486: goldfish: 6, perfumes: 0, akitas: 10 +Sue 487: cats: 2, akitas: 10, trees: 1 +Sue 488: akitas: 1, goldfish: 3, cars: 7 +Sue 489: goldfish: 3, akitas: 6, vizslas: 6 +Sue 490: goldfish: 8, perfumes: 2, akitas: 2 +Sue 491: trees: 4, vizslas: 8, perfumes: 6 +Sue 492: cars: 9, perfumes: 3, cats: 0 +Sue 493: trees: 3, vizslas: 6, goldfish: 7 +Sue 494: trees: 8, samoyeds: 1, perfumes: 5 +Sue 495: children: 9, akitas: 8, vizslas: 4 +Sue 496: vizslas: 2, pomeranians: 1, perfumes: 7 +Sue 497: trees: 2, akitas: 4, vizslas: 6 +Sue 498: akitas: 8, pomeranians: 7, trees: 0 +Sue 499: perfumes: 6, goldfish: 3, vizslas: 7 +Sue 500: cars: 1, perfumes: 6, vizslas: 1 diff --git a/src/main/resources/2015/day17.txt b/src/main/resources/2015/day17.txt new file mode 100644 index 00000000..6b25a726 --- /dev/null +++ b/src/main/resources/2015/day17.txt @@ -0,0 +1,20 @@ +33 +14 +18 +20 +45 +35 +16 +35 +1 +13 +18 +13 +50 +44 +48 +6 +24 +41 +30 +42 diff --git a/src/main/resources/2015/day18.txt b/src/main/resources/2015/day18.txt new file mode 100644 index 00000000..5efaa1bf --- /dev/null +++ b/src/main/resources/2015/day18.txt @@ -0,0 +1,100 @@ +#...##......#......##.##..#...##......##.#.#.###.#.#..#..#......####..#......###.#.#....#..##..###.. +####..#.#...#....#.#####.##.##.#..#.......#....#.##...###.###..#.#.#........#..#.#.##...##..#.####.# +...#..##...#.#.###.#.###..#.##.####.###...#...........#.###..##.#.##.#.###...#.#..###....#.###.#..#. +.#...##...####.#..#.....#..#...#.#.##...#...##..#.#.###....#..###.....##..#.###..###.....##..###...# +..##.#####....##..#.#..##.##..######...#..###.######.....#..##...#.#..##..##..#..#..#..##.#.#.#.#... +.###.###.###...##...##..###..##.###.#.....##..##.#.#########...##..##.#..##.#..##..####..#.#.#.##### +#.#####..###.###.##.##.#...#.#.#.#..#.###...#..##.###.#...####.#..#.#.....###..#..####..#.#.#...##.. +....#...##.....#....####.##.#.###..#.#.##..#.#...##.###.###..#.##..#.#.##..##..#.##.###..#.#.###.### +##.##...#.##...#.#..#.#..#...###...###.#..#..#.#####..###.#......#.....###.#####.#.#..#.#.#.##..#.#. +#.#..#.....#.....##.#..##...###..##...##...###.#.###.#..#.#.###...##..##..#.###...#.#######.#...#.#. +#.#.....####.#..#.##...#.##....#####.###.#.....#####....###..#........##..####...#...#.###....#..### +##.#.##..#.#.##.#.....##.#.....###.####.#..######.....####.#.#..##.#.##...#..#.#.....#.####.#....... +#..#..#.#..#.######.##..##.####.....##.#.##.#.######..#.#....#.#...#.#..#..#.#.###.#..#.#.#..#...### +####..####.#.#.###.....#.#.#.##..#.##.##.##.#..##..##.#.##.....#.#..#.####.....###.#..#.####.#.#..## +###.##..##.#.##..#..##...#.#####.##.#....##.####.#.##....#..###.#.#.##...#.....#.#.#.#.#..##.#.#..#. +......#..####...##.##...#.##.##...##..#..##.###..#...#..##...#.#....###.####...#.##.###.#.##.####.## +..#...#####.#.#..#.##....#..#...#..####.....###...##.###....#..#.###...#........#.#.##..#..#.#.....# +#######.#.#.###.###..######.##..#####.##.###.###....####.#..##.##...###.#..############.#.##....##.# +#.#...##.###.#.###..#.#.#.#.#.#..##..####.#..##.....#.##..#.##...##.#..##..#.#.#....##....##.#..#.#. +..#.#.####.....###..#######.#.#.#.#...##.#####.....##...##...##.###..######.###..#...####.#..###.### +.#.##....#.#.##..##.#.##.##..######...#.....#..#.#.#.#.....#.#..##.#.#.......#######....#.......#... +..###.##.##..##....#.###...#.....##..##......###...##..###.##...##.###.#.#.#.###.###.#.#...###..#... +.##.#.#...#...##.#.#...#..#..#.#...##.#.##...##..#....#.#..##.#..#.#..#.#.....#..#.#...#######.#.##. +...####....#.###.#..###..##...##..#.#.#.###...#..##.##.##..##.#...#..#.##.....#.#........#..#.#.#### +.....##..###...#....#.#.#.#...###.###...#.#...#.#.####....#..####...###..#..######..##.##..###.##### +#####.##..#....###.###....##.....#.#..#....#.#####.##.#.####.#.##...#..###...###..##...#.###.#####.. +###.##..........########.######....####.###.#..##...#.##.####.#.....##..#####..###...#####.....#.#.# +##..#####.##.#.#####.#.##.##..#.##....########.#####.#...#.###.##...#.###.#.#..#....##.#..#...#.#.#. +.##.#....#..#...#..#####..#..##.#......#..#....########...#..#...#.....####.#...##...#.###.#.#..##.# +.##.##.#.##.#.##...#.#.#..##.##.###.#..##..#...###.##.###.#####.#.###..#..###.#...#.###.#...#..#.#.# +.#..#..#.#..#..###..#....###.####.##.#.###.#.##.###.#.##.###.###...###...###.#...####...#.##.##.#.#. +###..##...###...#..##.#..#.#...##....###.##.##..#####....###..#..#....#..###.###.#...#.##...#.#.#..# +#....#.......##.....#.##...#..#.###.#.##..##..#.##..#.###..##.##...#####.#..#####..#####..#####....# +.####.####....###..###.#.##.####.##.#...####.#.###.#.....#...####..#####.###..#.#.###.##.##...##..#. +####..##...##.########...##..###..#..###.##.#.#.#........#.#####.#...#.###.####.#..####..#.#.#....## +###.#..#...###.#..#..#.###...##..###.##.#.#...#..#...####..##....#.#..#..##.#.#...#####.###.#..#.#.# +...##....#.###.#.#..##...##.###.#..#..#......#...#.#..####.#.##..######.####.#...#..#..#..##.#.#.##. +##.####.#...#..#.#.##..##.#.#.###..##...####......#..######.#......#.##.#....##...###.#.#..#......## +#.....#...#######.##.#..#.#...###.#..#.####....#.#.##.#.##...###..#...#.###.##..#.###..#.##...#####. +#####.##...#..#.#.#.......#.##..#####..#####...###..##.#.#..###.#.#####.####..#.#..##...#.##...#.### +.##.#..#######.###.#.####.....##...#.##.#.#..#...##....####......######.#..######.....##########.##. +##...#.#..#.##.###.#.#.#.##.###.##..##.##.##...#.#..###.#######..#.....#####..#....######.#..##..### +.#.#.###.....#..##..#.#..##..#.###...###.#..##...#...#.#####.#.#####..###.#..#...##..#.#..#..####... +.#......##..#.....####.###....##.###.....###.##........#.###.##..#..#.#######.#.######..##..###..... +..##.#.#..#.##...#.###.###...######..#..#.#..#....###.#.#....#..........#...##.##.##.#..##..#.#####. +###.###.#..#.##..##.#..#..##.....##.....#..#######.#..#.#.#.####.###..###.#.#..#.##.##.####.###.#### +#.#.#..#....########.#..#..#...##..#.##..#.#..##..####...##.....#.##.#.#...########..#.###.#..#.#.## +.##.....#...#.#...##.##....###...##..#.####...#..#.#..#..#.##..#.###.##.####.##..####.....##.#.....# +....####.#.##.#.##.#..##.#.######.##.####..#...####.#..###.#.#..#..##.#.#.....##.#####.#.####...#.#. +#..#####.#####.....##....######..##....#..#.#.###.#####.....##.##.####.#...##...#.##.#.#####.##.#... +##.####..###.#....#...#.#.#.#.###.#####.#.####..####...####......##..#..#..#.#.##...########....#... +.###.#.#.#.#..####.##.#..######..#.#.###.....#.#......#.#.#.#..####.##...##.#####.#.##..##..#..#.#.. +.....###...#...#.####.###.#.#.#.#.....#....#.####.###.##.##.##.#######......#.####......#....##..... +##..#..#.#.##..#...#..##.##.##..###.#....##.##....####.#.##.###....#.##.#.#.##...##.###...#..#..#### +...#.#..##..##.#...##.##...#.#......#.#.##..###....####.##...#.#.###.#..#..#.####..##..##..#####.### +.##.##..##########.##...#.##.####.#.#######.##.#.##.##..#...##....########.###..##.##.##.#..##.#.#.# +#####.#....#.##..#.....#......##.##..#.##.###..##.......###..##.#.###.##.###....####.#..#.###..#.#.# +.#...#..#.##....##....#...####....#...#..#...####...########.###.#..##.#.#.##..###..#.#.###.....##.# +##..##.....###......#..###.##.####.##.####.#.#....#..#...#..#.#..#.###.#...#...#..##.##...#..####### +.....##..###..##...#####.#.#.....###.#.#..####...#.#.#..#..####..##.#..###.####.#....##..###....#..# +#.#.##.#....#.#####.#....##...#...##...##....#.#.......#....#..#...###.###.#.####..####....#.##.#.#. +..##...##..###.#.#.##.#..#....#.#.....##.###.#.###.###.....#...#.#..#######.#####..#.###...##......# +#......###..#....#.#..#.###.##.#...##..###.####.#.#....#.##..#.###..##.#..#####..##.###.....#..###.. +##.#.##..##.###.#..##.....#.##.....###....##.####.######.#...#..###....#.#...#.##.....###....#..#.#. +.##.#.#.#.##..#.#.#..##..#.###.####....#..###.######..####.#.....###.##..#...###.#..######.##.#.##.. +...##.####.#..##.#####.##.#...##..#..#...#.#.#.#####...#....#..###...#..#....#.#.##.#.######.#..#### +..#.#.#.#...#.######.#.....#..#.#..###....#.#.########...#....#.#.##..#...##...#.#..#.#.###....##... +#####..#..##..#..##..#..#.#.##.#....#####.####.##.#.###..##..##....#.....#.#####.#...#.#####.##.#.#. +#.#..#####...####.###.###.....####.###.....##...##...#..#..#######.#.##....##..####.....##...#..#..# +#.#.###.#.#..##..#....#.#...#.#.##.##..#.##.....##...#.#..##.......##.#.###..#####.#.##....#.##..... +...#.......#....#.#.####.#.###.###..#....#..##.#..####........#.##..#...#.#...###.#..#.#.#...#...#.. +...##.#####.##.#.###.##.##.#.##..##.#.#.#.#.#.##.#..##...##.#.#..#..##.##.#####.#.###...#####..#..#. +#######.#..#..#....##.#.#..####.#..#..###...#..#.......###.#.#.####....#.###...#.#.###.#.#.#.#..###. +..##.##.#.##.###....###.##.#.###.#...#....#.####..###..###.#.#..#...##.#.#.#..##.###..###.#.##...### +######..######..##..##.#.#.##.##.#..##..#.#.#.##..#.#...#...#.#.#..######.#..#.#.######..#......##.# +#.#####.....#.......#########..###.##...#...##.#.#..#...#####...#...#..#.###.#..#.#...###.#.#.#...#. +#....##....###...##.##.#...##.........##.#.#..#.#.##.#.######.#####..#..###.###.#...#.#.##.######... +#.#...###.#.###.##.#.######.#######.###.##..#.#.#...######.##.####.##..#.#.#.#......##..##.........# +..###..##....#.....##...#.#.###.#.#.....##.#...###.####.#...#...##..##.#.#.####..###...######....#.# +..###.#.##.####.#..#.##....##..#####....#..##.##.#..#######...#.####...##.#.#.##.........#....#....# +.##.#...#.####..#.#...#.##..######.##..##.#.###.##..###.###....##..#.##.##..##.#...###.##.##.###.... +#...###.###.#..#....#.......#..#.....###..#.###.##.##....#.####.#.####.##..##..#..#.....#....##.#.#. +.##.#..#..#.##.......#.####.#######.....#.##.##.#.....#.#..#....######.#..###.##.##.....#.####..##.# +###..#.###.#..####.....##....#..####....#.##.##..#...######.#########...#.#....##...###.#..#.##...#. +#..###..##..#.#.##.###.#.#.##...###.#...##.##..#.###....###..#.#...#.###..######.#..#.###..#..#..#.# +.#........##.#.###..###.#.#.##.....##.##.#.#...##..#.##....###..#.#.#.#.##....#.##..#.#...###...#... +####.####..#....#.#.#..#..##.......##.####...###.##..#.#.##.#..##..######.......##.#.##..#...#.....# +..#..#..###..##.##..######.#..###..###.#.##..##.#..#####.#.#.#.##..#.##..##.##......####.#.......... +...##.##..###.#...###....#.#.#.#.....#.##.....##...#...#......####...##.##....##.#..#.####.#..###.#. +..#.....####.#.###.#####..#..###..#..#.#...#####...###.###....#.###..#...#..#..#.#..#.##..##.#.#.... +..##.#####...###.###.........#....##.####.##..#.#..#.#...#...##.##.##..#.#.##.########......#####... +...###.#.#..#...#.###.###.......##.###.#..#.##########...#..#.#.#.##.#.###...######..#.#...###.##... +.#.#.#######.#..##.##..##...#...####...#..#####.#..##...###.#.#...#.##...#......#..##.####..#.....## +.##.##.#.#......#######..###.....##.#.##..###......#....####...#.###.#.##.#........#..#....##.....## +#...#.###.#.##...##.####....#...#.###..#.#.....#.#....#.#.#.##...#.#..#####.#.#..#..#..#....#...#### +.....##...###......#####..##.##.##...##.#.#####..##...#.#.#.#.###...###.##.####..#.#..#.#..#.####.## +#..#..##.#.##.#.##.#.#.#..###....###.##.#.##.#...#.#..#...#....###.#..#.#.######.#...####..#..##.#.# +#..#.#..#...###.#..##.#...#...##.#......#...#..#..####..##.....#.###...#.#..#.#....#.#####.##.###... +###....#.#..#.#..###..#.##......#...#..#..##.#..###..##..#..#.####..#...########..##.#.##.#.#.#...#. +.#.#.##.##.###..#...#.#....#..#.##..#.#.#.#.##.##.#####...#........####..###..####.#####..#.##.#.##. diff --git a/src/main/resources/2015/day19.txt b/src/main/resources/2015/day19.txt new file mode 100644 index 00000000..a245944f --- /dev/null +++ b/src/main/resources/2015/day19.txt @@ -0,0 +1,45 @@ +Al => ThF +Al => ThRnFAr +B => BCa +B => TiB +B => TiRnFAr +Ca => CaCa +Ca => PB +Ca => PRnFAr +Ca => SiRnFYFAr +Ca => SiRnMgAr +Ca => SiTh +F => CaF +F => PMg +F => SiAl +H => CRnAlAr +H => CRnFYFYFAr +H => CRnFYMgAr +H => CRnMgYFAr +H => HCa +H => NRnFYFAr +H => NRnMgAr +H => NTh +H => OB +H => ORnFAr +Mg => BF +Mg => TiMg +N => CRnFAr +N => HSi +O => CRnFYFAr +O => CRnMgAr +O => HP +O => NRnFAr +O => OTi +P => CaP +P => PTi +P => SiRnFAr +Si => CaSi +Th => ThCa +Ti => BP +Ti => TiTi +e => HF +e => NAl +e => OMg + +CRnCaCaCaSiRnBPTiMgArSiRnSiRnMgArSiRnCaFArTiTiBSiThFYCaFArCaCaSiThCaPBSiThSiThCaCaPTiRnPBSiThRnFArArCaCaSiThCaSiThSiRnMgArCaPTiBPRnFArSiThCaSiRnFArBCaSiRnCaPRnFArPMgYCaFArCaPTiTiTiBPBSiThCaPTiBPBSiRnFArBPBSiRnCaFArBPRnSiRnFArRnSiRnBFArCaFArCaCaCaSiThSiThCaCaPBPTiTiRnFArCaPTiBSiAlArPBCaCaCaCaCaSiRnMgArCaSiThFArThCaSiThCaSiRnCaFYCaSiRnFYFArFArCaSiRnFYFArCaSiRnBPMgArSiThPRnFArCaSiRnFArTiRnSiRnFYFArCaSiRnBFArCaSiRnTiMgArSiThCaSiThCaFArPRnFArSiRnFArTiTiTiTiBCaCaSiRnCaCaFYFArSiThCaPTiBPTiBCaSiThSiRnMgArCaF diff --git a/src/main/resources/2015/day2.txt b/src/main/resources/2015/day2.txt new file mode 100644 index 00000000..5f3335f7 --- /dev/null +++ b/src/main/resources/2015/day2.txt @@ -0,0 +1,1000 @@ +29x13x26 +11x11x14 +27x2x5 +6x10x13 +15x19x10 +26x29x15 +8x23x6 +17x8x26 +20x28x3 +23x12x24 +11x17x3 +19x23x28 +25x2x25 +1x15x3 +25x14x4 +23x10x23 +29x19x7 +17x10x13 +26x30x4 +16x7x16 +7x5x27 +8x23x6 +2x20x2 +18x4x24 +30x2x26 +6x14x23 +10x23x9 +29x29x22 +1x21x14 +22x10x13 +10x12x10 +20x13x11 +12x2x14 +2x16x29 +27x18x26 +6x12x20 +18x17x8 +14x25x1 +30x15x22 +17x18x7 +28x23x24 +15x12x25 +14x7x20 +29x23x8 +24x5x22 +6x22x8 +1x15x26 +14x5x1 +24x28x28 +17x23x23 +4x15x7 +23x8x11 +6x15x1 +23x18x13 +17x1x26 +23x13x17 +2x18x8 +22x22x1 +10x22x6 +28x29x20 +22x21x25 +14x8x23 +12x30x14 +8x7x5 +3x30x15 +4x3x29 +25x18x3 +16x7x16 +4x3x8 +9x16x30 +20x28x3 +28x24x6 +4x18x2 +23x18x5 +22x4x30 +15x30x9 +7x12x12 +3x22x29 +12x1x9 +9x2x25 +17x11x10 +25x24x7 +7x27x26 +26x4x12 +29x2x26 +19x24x12 +23x23x3 +26x28x16 +18x4x16 +25x30x18 +29x19x19 +16x3x27 +29x25x29 +18x19x5 +14x21x30 +19x13x26 +19x10x15 +9x4x7 +18x6x6 +24x25x29 +9x12x27 +15x3x22 +30x17x21 +18x19x28 +9x11x12 +8x28x22 +11x3x4 +28x17x20 +24x18x15 +11x12x13 +6x19x24 +28x4x5 +28x22x23 +13x29x2 +9x16x15 +29x28x1 +10x18x30 +19x11x12 +26x28x25 +23x17x13 +25x1x21 +17x1x27 +17x27x28 +28x13x15 +14x13x25 +11x29x7 +22x29x5 +13x6x14 +23x18x13 +25x7x17 +18x9x20 +21x11x2 +28x11x13 +13x25x1 +19x29x25 +16x29x4 +10x21x10 +7x25x17 +5x9x3 +1x15x6 +8x27x29 +23x6x30 +22x22x29 +6x20x30 +26x25x29 +10x19x19 +20x30x9 +5x30x24 +17x10x27 +30x14x30 +8x17x4 +7x18x6 +3x5x4 +24x17x15 +14x20x17 +22x27x15 +18x14x15 +23x9x11 +21x16x29 +7x18x21 +9x3x29 +10x13x4 +2x30x4 +23x20x4 +8x22x21 +29x28x4 +13x16x25 +21x9x11 +7x26x26 +13x23x30 +19x7x10 +9x23x21 +21x9x17 +9x21x15 +20x29x22 +23x13x15 +19x25x2 +12x11x30 +20x21x6 +21x6x17 +24x26x9 +29x21x29 +29x26x16 +6x16x1 +2x12x6 +6x7x20 +7x2x22 +6x22x4 +13x11x27 +25x27x14 +11x8x6 +26x11x14 +30x3x29 +27x21x20 +15x16x26 +6x22x10 +11x9x25 +23x13x6 +13x9x3 +30x22x13 +29x23x14 +25x19x6 +7x29x11 +19x18x5 +29x25x13 +25x24x27 +1x9x12 +22x9x17 +14x12x28 +19x21x17 +13x25x17 +14x25x12 +4x14x30 +7x15x28 +3x6x25 +6x2x16 +15x19x11 +17x30x20 +20x23x7 +26x21x6 +26x29x24 +2x4x30 +4x22x18 +13x3x28 +27x6x21 +5x3x27 +12x7x11 +28x11x9 +12x9x2 +1x22x20 +15x13x28 +14x19x16 +28x20x3 +20x4x9 +26x7x26 +18x19x25 +7x1x13 +20x23x29 +27x26x8 +11x15x15 +10x21x23 +29x2x11 +21x28x20 +3x18x23 +26x17x17 +14x26x17 +20x7x17 +18x12x8 +4x8x8 +8x15x23 +24x29x5 +1x25x8 +1x28x17 +16x18x13 +29x24x22 +13x16x10 +14x7x16 +15x11x29 +12x15x19 +17x6x28 +4x3x9 +15x16x8 +29x27x11 +2x24x20 +4x21x3 +29x24x27 +18x22x22 +7x8x18 +20x7x8 +19x9x2 +20x17x2 +2x29x10 +19x25x1 +28x9x3 +29x27x20 +7x21x7 +10x4x22 +26x8x5 +26x14x1 +5x27x9 +2x18x3 +3x27x17 +30x17x23 +30x11x20 +4x6x7 +6x29x27 +30x16x20 +24x30x28 +19x20x26 +18x1x25 +26x12x12 +19x15x29 +16x21x24 +23x13x26 +25x16x10 +8x9x18 +24x14x1 +24x15x21 +19x9x14 +8x23x11 +22x2x16 +29x9x26 +3x16x25 +15x20x30 +3x11x12 +15x2x3 +13x7x4 +2x7x27 +9x26x11 +30x24x19 +28x17x21 +10x8x2 +11x15x26 +10x12x20 +24x24x27 +25x26x16 +13x4x20 +25x13x11 +12x22x3 +20x7x1 +12x18x6 +26x8x20 +14x2x7 +23x12x1 +26x24x24 +27x26x23 +26x17x5 +17x24x2 +26x5x6 +23x5x1 +5x18x30 +24x21x19 +5x28x11 +21x20x14 +25x4x22 +26x24x11 +7x5x8 +13x1x30 +5x1x6 +14x5x2 +8x11x7 +13x20x1 +17x30x14 +29x22x10 +12x26x3 +27x17x3 +26x27x4 +5x26x17 +22x11x19 +8x26x3 +24x19x22 +7x1x4 +6x27x30 +4x28x14 +16x14x18 +4x5x20 +19x25x4 +15x15x1 +10x14x14 +16x18x24 +21x27x15 +5x5x10 +1x7x13 +16x2x8 +13x15x11 +3x25x10 +20x29x8 +12x3x2 +10x13x12 +25x27x1 +11x30x19 +7x19x13 +27x6x18 +16x21x19 +21x29x5 +16x23x12 +29x19x15 +5x5x10 +27x15x1 +13x16x22 +29x19x5 +8x12x9 +3x18x5 +13x25x3 +5x9x21 +10x20x16 +9x9x11 +23x21x1 +22x2x15 +27x8x13 +23x7x3 +26x30x15 +29x15x16 +16x27x13 +2x18x9 +10x27x8 +20x9x25 +10x2x17 +16x13x13 +21x26x1 +27x26x24 +9x30x16 +19x17x28 +25x15x1 +10x26x6 +10x11x11 +5x26x25 +30x4x15 +9x8x23 +14x25x7 +8x28x8 +28x18x24 +4x4x25 +16x25x11 +17x27x8 +15x16x9 +24x13x21 +17x3x27 +27x5x26 +8x27x12 +29x2x8 +24x23x30 +1x30x21 +6x18x20 +13x14x12 +25x30x23 +24x6x24 +12x7x21 +11x6x8 +8x30x30 +26x3x12 +28x6x5 +18x7x1 +7x6x20 +14x16x18 +11x22x15 +4x20x10 +19x24x19 +8x24x11 +4x9x10 +6x6x22 +10x9x29 +1x5x28 +19x25x29 +20x30x3 +15x13x13 +9x9x24 +20x14x29 +26x24x13 +2x25x8 +10x26x2 +12x19x12 +18x6x20 +4x5x14 +26x27x10 +16x26x20 +3x21x15 +2x26x18 +14x11x17 +26x26x25 +10x1x11 +17x19x19 +27x28x26 +9x2x10 +19x30x15 +23x30x14 +15x3x20 +2x14x22 +21x18x8 +22x4x29 +19x6x29 +9x26x29 +16x10x9 +22x12x22 +13x28x14 +25x14x28 +28x3x30 +10x17x1 +10x27x22 +10x23x19 +14x25x9 +11x24x8 +30x25x10 +22x13x28 +2x7x6 +11x20x8 +9x22x14 +19x16x9 +11x24x4 +11x17x2 +6x4x10 +26x10x10 +12x14x5 +27x10x3 +15x3x6 +11x7x19 +22x10x12 +21x26x10 +13x20x3 +27x8x8 +1x24x23 +24x9x22 +23x17x23 +3x28x19 +2x20x28 +23x17x24 +26x1x4 +4x1x12 +5x6x16 +13x22x13 +25x21x21 +20x21x12 +9x24x25 +17x16x12 +12x28x9 +18x16x27 +29x12x2 +30x12x15 +24x11x10 +4x9x22 +4x24x5 +19x11x5 +6x25x6 +1x20x17 +22x8x21 +11x26x4 +16x19x3 +8x12x8 +13x2x18 +10x5x11 +8x12x17 +21x2x5 +26x17x26 +23x18x17 +28x11x14 +1x4x27 +29x5x28 +5x9x10 +5x7x25 +20x15x27 +15x11x17 +12x14x1 +29x14x4 +18x14x18 +14x25x24 +26x14x18 +13x8x11 +30x1x23 +3x4x12 +12x24x9 +8x6x16 +14x15x30 +12x30x8 +22x11x18 +16x30x28 +17x18x4 +13x14x23 +2x28x8 +3x28x30 +29x30x8 +4x6x26 +6x30x17 +11x30x30 +19x4x3 +12x15x20 +22x28x4 +26x30x2 +6x12x7 +1x10x5 +25x29x7 +17x9x18 +16x21x29 +21x14x7 +15x16x11 +26x6x15 +8x24x7 +2x20x4 +2x9x3 +19x8x13 +18x7x22 +27x14x17 +2x13x8 +18x15x26 +15x27x27 +18x11x15 +1x29x20 +21x12x11 +20x2x15 +28x23x9 +1x1x17 +7x23x9 +30x9x27 +9x16x18 +15x24x28 +30x11x18 +29x26x10 +9x5x25 +2x1x19 +14x3x14 +6x3x6 +30x15x20 +20x17x27 +28x10x9 +14x24x28 +17x11x6 +12x3x6 +8x8x15 +23x14x21 +11x21x7 +5x13x30 +4x29x25 +30x28x24 +18x4x9 +3x15x6 +13x9x19 +30x14x7 +7x9x9 +17x11x26 +24x26x13 +16x21x16 +27x17x25 +2x21x11 +9x11x27 +3x3x7 +13x8x14 +20x20x26 +13x29x22 +30x11x1 +7x10x19 +27x5x9 +23x17x15 +21x6x13 +24x15x16 +18x4x14 +18x16x6 +22x11x18 +14x2x5 +15x3x7 +10x20x29 +16x1x10 +30x23x1 +10x15x11 +17x14x5 +22x8x13 +7x11x28 +26x17x3 +2x23x2 +28x13x19 +18x12x28 +22x23x16 +14x12x1 +20x8x19 +17x19x13 +29x2x12 +2x26x27 +29x16x4 +13x8x18 +16x15x30 +23x16x2 +28x8x27 +21x8x23 +13x20x26 +19x6x17 +17x30x15 +7x4x30 +2x13x30 +18x7x19 +4x13x27 +8x6x5 +18x20x25 +2x3x30 +23x27x13 +22x30x4 +23x25x25 +23x16x19 +25x3x1 +5x6x15 +11x29x12 +25x24x7 +16x7x20 +20x3x2 +12x27x15 +16x10x12 +1x3x14 +22x1x26 +2x24x18 +11x29x16 +15x2x9 +10x1x24 +21x8x11 +30x11x23 +6x30x21 +13x27x29 +14x6x5 +18x29x19 +12x4x28 +29x3x14 +10x30x28 +5x7x15 +14x1x10 +9x25x14 +7x24x18 +28x17x21 +18x13x25 +26x15x1 +21x1x19 +12x16x21 +4x6x13 +7x15x26 +17x19x5 +12x28x2 +1x20x19 +27x7x5 +17x26x8 +12x15x19 +5x23x10 +8x2x8 +16x13x12 +14x27x1 +26x29x3 +24x16x14 +14x13x13 +7x22x23 +2x9x30 +4x27x8 +26x27x15 +23x1x6 +25x29x18 +5x18x1 +20x8x20 +5x10x25 +30x25x15 +7x22x25 +28x26x17 +29x4x1 +21x11x27 +20x9x8 +25x22x12 +2x11x11 +23x2x16 +23x27x20 +2x13x28 +27x2x24 +11x1x17 +12x4x27 +16x20x22 +30x12x10 +5x15x4 +5x2x27 +12x4x25 +1x16x4 +27x4x4 +21x16x3 +27x26x3 +24x6x6 +24x12x12 +20x20x25 +8x29x2 +21x4x5 +2x4x8 +4x13x19 +3x20x10 +12x15x16 +6x5x4 +12x16x20 +22x19x17 +8x17x22 +25x16x15 +7x1x19 +10x1x7 +23x23x5 +28x6x12 +2x25x12 +10x27x12 +24x27x19 +14x14x20 +4x1x5 +16x27x29 +20x20x24 +28x24x30 +6x15x15 +9x15x30 +23x26x3 +17x24x21 +22x25x25 +18x29x10 +20x25x1 +24x11x16 +20x7x21 +20x7x9 +7x26x2 +5x18x1 +16x26x28 +4x10x18 +27x30x21 +26x9x9 +8x16x14 +6x27x8 +28x9x20 +13x13x4 +9x18x16 +18x15x18 +22x19x14 +14x10x17 +25x29x11 +1x18x19 +8x11x26 +18x6x14 +30x24x13 +27x1x27 +15x9x3 +2x29x17 +2x26x21 +22x9x9 +20x20x20 +22x28x2 +26x5x16 +11x3x14 +21x16x16 +18x26x7 +18x30x6 +7x11x12 +15x10x2 +27x2x16 +27x30x24 +28x14x24 +7x4x8 +6x28x15 +13x19x1 +22x26x30 +7x30x24 +2x17x21 +19x26x2 +19x24x15 +14x23x2 +21x27x15 +30x15x14 +21x29x5 +23x30x2 +4x1x2 +15x5x13 +21x2x30 +20x7x16 +1x21x25 +2x25x1 +12x29x5 +28x13x16 +26x3x12 +29x20x23 +28x12x20 +4x30x8 +16x15x16 +6x16x29 +2x28x13 +24x25x2 +26x15x22 +17x20x11 +18x12x7 +19x1x18 +8x27x13 +22x16x8 +19x26x17 +13x11x10 +22x12x3 +13x12x14 +29x17x9 +6x14x10 +14x20x10 +8x26x9 +25x13x22 +3x30x25 +14x28x1 +30x29x12 +3x17x15 +3x24x14 +28x24x22 +16x6x1 +20x25x14 +17x17x13 +6x19x27 +10x15x20 +8x23x20 +7x29x21 +18x9x25 +10x5x22 +2x27x27 +16x18x30 +15x5x12 +26x29x29 +28x11x10 +9x29x28 +24x15x23 +26x9x10 +5x1x25 +22x27x16 +7x29x3 +1x3x5 +8x7x29 +19x21x11 +28x13x30 +17x16x20 +5x10x25 +9x14x15 +15x14x23 +16x4x17 +21x8x2 +9x9x8 +22x22x4 +10x2x27 +12x19x10 +15x29x4 +22x14x7 +29x18x5 +1x7x27 +24x1x15 +23x23x26 +12x17x23 +26x10x24 +8x22x2 +8x1x10 +22x19x12 +2x23x13 +11x27x25 +26x15x27 +27x7x21 +18x9x6 +22x21x22 +7x12x26 +23x21x13 +14x3x8 +5x9x28 +29x29x15 +27x25x23 +12x2x24 +8x2x20 +29x19x4 +12x24x29 +2x27x28 +14x20x9 +28x6x25 +18x29x8 +19x11x30 +15x11x23 +18x7x7 +14x20x14 +26x18x22 +27x25x13 +12x10x30 +30x2x7 +28x10x1 +18x10x30 +22x11x5 +22x16x3 +25x15x9 +5x10x24 +4x28x8 +19x24x18 +3x4x25 +14x4x30 +11x26x3 +12x12x12 +26x7x24 +3x2x14 +1x27x7 +2x2x13 +3x26x26 +12x4x11 +12x17x20 +4x19x30 +5x18x10 +17x6x18 +19x30x20 +11x2x17 +30x13x19 +22x23x7 +17x28x2 +5x17x30 +7x11x4 +21x26x18 +15x28x4 +5x6x27 +12x6x16 +9x17x12 +27x20x5 +14x5x20 +27x14x6 +2x14x21 +4x28x30 +24x5x1 +19x29x29 +11x23x1 +8x16x21 +3x17x19 +10x13x5 +20x21x16 +23x3x6 +27x26x11 +3x2x22 +14x3x5 +10x9x8 diff --git a/src/main/resources/2015/day20.txt b/src/main/resources/2015/day20.txt new file mode 100644 index 00000000..f0d83361 --- /dev/null +++ b/src/main/resources/2015/day20.txt @@ -0,0 +1 @@ +36000000 diff --git a/src/main/resources/2015/day21.txt b/src/main/resources/2015/day21.txt new file mode 100644 index 00000000..3351c92f --- /dev/null +++ b/src/main/resources/2015/day21.txt @@ -0,0 +1,3 @@ +Hit Points: 104 +Damage: 8 +Armor: 1 diff --git a/src/main/resources/2015/day22.txt b/src/main/resources/2015/day22.txt new file mode 100644 index 00000000..0001c6bd --- /dev/null +++ b/src/main/resources/2015/day22.txt @@ -0,0 +1,2 @@ +Hit Points: 55 +Damage: 8 diff --git a/src/main/resources/2015/day23.txt b/src/main/resources/2015/day23.txt new file mode 100644 index 00000000..a2b735a5 --- /dev/null +++ b/src/main/resources/2015/day23.txt @@ -0,0 +1,47 @@ +jio a, +18 +inc a +tpl a +inc a +tpl a +tpl a +tpl a +inc a +tpl a +inc a +tpl a +inc a +inc a +tpl a +tpl a +tpl a +inc a +jmp +22 +tpl a +inc a +tpl a +inc a +inc a +tpl a +inc a +tpl a +inc a +inc a +tpl a +tpl a +inc a +inc a +tpl a +inc a +inc a +tpl a +inc a +inc a +tpl a +jio a, +8 +inc b +jie a, +4 +tpl a +inc a +jmp +2 +hlf a +jmp -7 diff --git a/src/main/resources/2015/day24.txt b/src/main/resources/2015/day24.txt new file mode 100644 index 00000000..502fad75 --- /dev/null +++ b/src/main/resources/2015/day24.txt @@ -0,0 +1,29 @@ +1 +2 +3 +5 +7 +13 +17 +19 +23 +29 +31 +37 +41 +43 +53 +59 +61 +67 +71 +73 +79 +83 +89 +97 +101 +103 +107 +109 +113 diff --git a/src/main/resources/2015/day25.txt b/src/main/resources/2015/day25.txt new file mode 100644 index 00000000..c5c38e68 --- /dev/null +++ b/src/main/resources/2015/day25.txt @@ -0,0 +1 @@ +To continue, please consult the code grid in the manual. Enter the code at row 2947, column 3029. diff --git a/src/main/resources/2015/day3.txt b/src/main/resources/2015/day3.txt new file mode 100644 index 00000000..a5954e78 --- /dev/null +++ b/src/main/resources/2015/day3.txt @@ -0,0 +1 @@ +v>v<vvv<<vv^v<v>vv>v<<<^^^^^<<^<vv>^>v^>^>^>^>^><vvvv<^>^<<^><<<^vvvv>^>^><^v^><^<>^^>^vvv^<vv>>^>^^<>><>^>vvv>>^vv>^<><>^<v^>^>^><vv^vv^>><<^><<v>><>^<^>>vvv>v>>>v<<^<><^<v<>v>^^v^^^<^v^^>>><^>^>v<>^<>>^>^^v^><v<v>>><>v<v^v>^v<>>^><v>^<>v^>^<>^v^^^v^^>>vv<<^^><^<vvv>^>^^<^>>^^^^^v^<v>vv<>>v^v<^v^^<><^<^vv^><>><><>v>vvv^vv^^<<><<vvv><<^v^><v<>vvv^<^>vvvv^>^>>^v^<v^vv<^^v<>v>vv^<>><v<<<^v^<<><v<^<^<><^^^>^>>v>^>v^<>v><^<^<v^>^^vv<^^<>v^v^vv<>>>>v^v<>><^^v>vv^^>v^v>v<vv>>v>><v^v^v>vv>^^>^v><<vv^v^^vv<^v><^<<v<v^>vv^^^<v^>v>v^^^>><^^<v^<^>>v><vv<v^^>^^v>>v^^^<^^v>^v>><^<^<>>v<<^^vv>^^^v<^<^<v<v^^vv>^vv^>>v^><v>><<<>^vv^<^<>v^^<<<v<^>^><><v^^>>^^^<^vv<^^^>><^^v>^^v^<v^v^>^^<v>^<^v<^<<<<^<v^>v^<^^<>^^>^><<>>^v><>><^<v><^^^>>vv>^><vv>^^^^^v^vvv><><^<^>v>v^v^>^><><^<^><>v<<vv<^>><>^v^^v>^<<<>^v^>^<<v^vv<>v^<v^^vv><<v^<>>>^<v>vv>v>>>^<^>><vv<>>>>v<v>>>^v>v><>>vvv<^^><<^>^>v<^vvvv<v><vv<><^^^v^^^>v^v<>v<^^v>>><>v<v^>>v><v^>>^^<v<<<^<v<><^^v><<v^><<<<^vv<^<>^><vv<<<<^>>>^v>^v>vv>^v<>v>v<v><^>>v>>^>^><^<v^v^>^v<><><^^>^<vvvv^^<>^^^>vv^v^v>^v^^v^^v><v^<^<>><^<v>v>>vv<<v>>vvvv<vv><>>^v^>^>>v^v^<<<vv<><v<<>>>^v<<v>^^vv^><>v>^>v><<<<<<<^>^^v^<<^^>>vvv^<><>><>^^v<<vv><^^v<^^><vv>v^>>>v^v><v^v<^>v^><>v<<>v>^^v><<<<><^v^v>>^<>^<<>^<v<<>>v<<>><^<<<<^v>^<^v>v>vv<v<v<<>^>v<^<<>v^<vvvv^>v>><<v><v<>v>v>>v^vvv^^>>>v^<^<<^^<<<><v>v^<<v<<<>v<^^<><v<v^^<v>^>v>>v<>^>^^>>^v<<>v^^^>>>^vv<^v<v>^>v>^><>v^^<>^^v^^vv^<^>^<<>><<^>^v>>><<<vvvv><<><v<^v^v<vvv^<><<^<vv><v^v^v^>v>v^<vvv^><^><^<vv><>>v^>^^^<>><v^<^^^<>v<<v<^v>>>^>>v^><<>vvv><^>>v><v><>v>>^>v><<><<>^<>^^^vv><v^>v^^>>^>^<^v<v<^^<^vvvv>v<v>^>v^>^><^<vvvv><^><><<v<>v<v^><^<v^>^v^^<<<<^><^^<^><>>^v<<^<<^vv>v>>v<^<^vv>><v<vv>v<v<v>^v<>^>v<>^v<<<v>>^^v>>><vvv>v^>^v^v>^^^v<vvvv>><^>vvv^<vv^^vv><<<>v<>v>^<vvv^<^<v<v<^vv^^>>vv^<^^v^><^^^^^v<^<v<^>>>vv^v^>^<v>^<><v^<^v>>><^v^<<v<<v<>v>^v<v^v>>^^v<<v<v<<>>>vv>>^v>>^<<<<^><<<><^^>>v<>^vvvv>v^^^>^^^>^<vvvv><^^v<v<>v<^v^v<<v^^^v^<v<^v>v^^<>^>^<^v>vv<v^vv<^<<>v><<^><><^^v<<><^^><>^v>^<><<^<^^<<>vv<>^^<<^>><<<>>vvv>^>v^^v^><<^>v>^>^<^<<>v<^>vv^v^v<>vv<<v>vv<vv><^>v^<>^vv^v^<v<^>>>>v^v><^<><<>vv^<vvv^>>vvv^>v>>><^^vv<vvvv>v<^<^>>^^>^^vv>>><^v<>^v^<<>v^^^<v>^>>^<^<v>>^v<^^^<v>^v>^>>v<vv>>^<v^<<>>^>>><v>v^<<^<v>>^<<^^<>v<^v<^<>v^v>^^v<vvvv>^vv>vvv>v^<^>><v^^vv<<<^>vvvv<>>^^<>v^<><>v<^<>v<>^>v<>vv<v^v>>v<v<^<v^^v^vv^vvv><^^>v>><>>^<^^<>>^>^<v^>>vvv^v><v>>^>^>v><><<><vv^v>v<>^v<^vv^^^<>^^<<^^^v<>><v<^<^<^<^^><v^v<^>v^>vvvv>^^v^>^<v<^^^>>^<<vv^<><><^^^^<<>^<><v>vv^<><^>^^<>v^<>>>v><>vvvvv>v>v^^>^<<vvvv<>vv>>v<<^<>^^^v^<><>>^<<<v<v<>>>><><v>v<v<>>^>^^^^vv^^<<><^^<<vv<^<>v>vv<v<><<<^<<v<<<<>v<>>^<^>^>><v>v>><^^<>><<<><<><v^^v<<><^<^v<v^><^^v<<>><<<<^>v^<v>><v^><v<vvv>v^v^<v><<>>v<><<v>^<>><>>^><>v^v>v<<>v<>v^^><<>>>v<<>>>>^>v>><v<<>>>vv>v>^<^^^<>v<v>^<^^v^vvv^>vv>^<v><vvvv>^<<>vvv<<<vv>^^<^>^>>v>v<<<<<>^^vv^>>v>^<^<v^v^>^v>>v>^v<><>^<^>v>v<<<^^^v>^<<<>vvv^v^^>^>>^>v>v<>^^><>>v>^>v<<<^^^v^<v^vv>><><^<^<><vvv<v^>>^v>vv<^v<<^vv>v^<<v>v>v>^v^>^v<<^v^vv>v<v>^<<><v^>>v<>><v<<<^v<<>vvv^<vv<vvv<<>^vv^^v><^>v^vv<<v^<<^^^<^<>^^<<>v<><<v>^><>^<><<v<v^^>vv<>^<v<^<vvv>vv>v><^^v<>><^v^v><><>><v<v>vv<>>><v^^v<>><<^>>><^^^vvv<<<vv<<^v<<<>><<vv>>>>v<<<<<vv><><v>v^^<<^vv^<vv<>>vv>^<>^v^^<>^^^vv>v^^<v<><v>v<v>>^v<v<>>^<v^^><>v^^^>v^^v<vv><^>v^v^<>v>v<v<^^>>v<^^vv^v<^^^^vv<<><<^>>^^<<v^^<<^>v^>>^^^><^^>^v^v>^<<v<vv<<<v<^^^>^>>^v<>^<^>v>^>^v^<^^^<^vv<v><^^>>v<v>^>^v^>>>>^v>^^<<^<v^v<^<<v<<^><^^<v^<><v>v^<<v^^<><<>>><vv<<><>^<>>>v<<v^^^v^^<<<vv<<^<^<^vv^<><><<^^<^^>v^>^<v<>>v^v<><<v>^^v>^<^<vvv<v>v^v>>>^^<^<v^>^vv<<<v<<>^><><^<>v>>>v<v^<>v>><^^^v^^^v<^^<vv^^^>v>v<>>^^<><>v>^<v<>^>>>><>v>^v>^vv^v<vv<<^^>><v<>^>^^<v<^>^<vvv>><>^<<>>><<<><>^^<<<v<>v^>v>v<v>^^^>^>^v<<>v>vv>><<<v>^^<v><vv<<v^^>^>>^><^>v<^<^v>><^^>v<vv^^><><>^><<><>v^>v<><^^>><>^<^^v<^<<v>><v><<<^^<<v<^vv^v<>><>>>^>v<vvv^>^<><v^><^<<^vv<^v^v^v<>v^^v>v^<^>^vv^>>><<>v^vv^<>^v^><<v^v<v>v^<><>>v^v^><>v^vvv^^^<<^<<v<<v<^vv^>>v^v>^^<v<>><>v>>v^<>^>v>^>><<>v^v><^v>v>>><v<v><^<^^>vv<v><^>^<^>^^v><><v<^^v<<><^<<v^<v<<><^^vvv^v>^>^<>>vv>v^^v^^vv<^^>><v^^vv><^v>v^<<v<^v>vvv<>>^v><<>^v<<<>^><^vv><<^^<v^>v<<v>^vv<>^v>>>><<<<^^<^v>^<^^<^<^^>>^^v>^^^^v^^^<<>^^vv<<v^^><v>><^<<><>^>v<>>v^^^>^v^^v^<v^v>v>>>>>^v>^>^^<vvv^^<v^<<<v<<>v>><^^^v<<^^<v>>^<^<^><^<<v^v><<vv<^<>>v>v>^v<><<v>^>vv^v<v>v><^<v>><>^<vv<v^^^^v<^^>><<^^>v>v>^^^<>v>^v^^>vv^vv<^^>><>^>^<>v>><>^v<<v>v>^><^^^v^<vv><<^v^>v^>vv>v^<>v><vv><^v>v<><v^v^v<^v<>^v<v^<<><<v>>^v><v>^^<>vvv^>^<<v^>><^>><^<>^v<v<v<^vvv<><<^v^<v>><<<v>^<^<v>v>^vv^v>v<^^vv<<vvv^<v>><>vv^>v<<>v<vvvv>>v>^^>>><<<^>^vv>><v>^^^>v<^vv<>v<<<v<<<<v>>>>^<^^^^>v<^^<><v>v>v<v^>vv^>v>v<^>^v^<>v>>vvv>^^><^vvv>><>>>^<<^<v<>>>v^^><v<v>>^><>v<^^v^<<v><>^<>>><^v^v>>>^vvvv^<><<<v<^>>v>^v^<v<v<<^<<v^vv^v>v<v<>>v<v^<<<><v^>><^<<^>^^><v>v<^v^<^>v>^<<v>v^<>v^<>vv^<>^>^>v^>^vv<>^^<<>>v<>^v<><v^><><<<vv>v>v^>vv^><<<<v>^v<><>^^<vv>v^^v^^^<v<^^><v^v<>><v<vv>^<>>><vv<^v<<>>^><>>v<v^v^>>>v<<>v<<<<<<<^v<<^^^v<^v<>v^^<<<^<>>v^vv<v>^<^^<^^<<^>vv><^<^^v<<<^><^v<^><>v<vv^>^v^^>>><<vv^^v><^<<^<>>^>>^<<<<v^vv<>>>v>^v>><>v>>v>><>v>><^^><v>^^vv<^^<^>vv><<^>><<><v>^vvv><^v^>vvv^>>^<><^>^<<>>v^v>v<<>^>>^>v<^^<^<<>^^v<vvvvv^^^<^<>^^v>v<>^<^^<<v>v^^vvv^^v>^vv<v^>^<>v<^v^>^<v><v<<<^v<v<v^^<vvv>vv<<vv>v^<<v<^<vv><^>^><^^<^^<<v^^<v^v<v^^^^>^>vv^<>^<>^>^^<^v><<<^>vv^vv>v^v<>^^v^<^^^vvv^><v^<v^^<v<>v^<><>v>vv<^v^>>^v<^^vv>vv>^>><<<<v^^<^><>^><>>v<>>v>^v<^vv>^^>^<^<<v^>>v^v<^^v<vv<^<><^^>^^<>^^^<vv<v<<^^>^>^vv<^>><^<vvv^<>>vv^><v>v^>^vv>^>v^^<>>^v<>>v<^>^v>vv^<vv<^^>>^<v>>>>vvv>vv>^><^v<<<>^^v>v^v<^^^v^^>^><<^^>^<v>><^^^^^<v<vv<v<^<>^^<^v<^>>vv>>^v^vv<>><>^>>>^<v>^^^^><^<<<v<>^v<><vvv^<^^>vv^>>v<vvvv><v^v><^vv<^v<><vvv<vv>v<>^v^<<>>>>v^^>^vv<<vvv<^^><v><><<>v^v<^<^>><vv>^^><^>^><<><v<^v^><^<><>vv>>>>^><<^^^<^v^>^>^^>^<^><v><^^<^^<>><><v>><<<>^>^^v<>^<<<v>>vv>^>>^>^<>>vv<^^vv<>v<>^^>^v<v^^^^v<>^<v>v^v>^^^<v>v<<<^vv^><>^<v>>^^vv>v^<<^><>>vv^^^^^>v>>v<<<>^<vvv<<><><^v<^v<^>^<>^vvv>^>v><<<vv<>v>vv<v<<v>^<^^>v^v>^<^v^<<vvv^^<>^v<<^>^<><>^^<>>^^<^v^<^<v<><<^><v<>v^^>v^v^^^<^v<<^v>^>>^^^^^><<<vv^>>v^><v^^vv><>v^^<^v<^<v^^><<v>v^^^><^^^><<<<<>^<<^<>>v<<v^v^^v<<>^<vv>>><^^^<>>>>vvv>v<>>>v^v^v<^<<^>^<<>v>>^>^^><^><<^v^^<^<>v^v>vv<>>>>>>v<<><v^<v<>>^^>v<<<>^<<v><^><<^v>vv>>>><><>v^<^v><v^<<<<^v><^>v>>^^^v<^>>^>>v<<^<<>vvv>>^v<>>^v><<<^v^v<><v>^vvv<v<v>^^^<><vv^<<>vvv<v<^^v^^><v<^v<^v^<v<^>^^^>>v>^<v^>>^<><<><vv<>vv>^v^>>^<<v<^^v>v<v<vvv>><><<><vvvvv<^v<^>^^><>^<<>^v<<>>v^vv<<>^^v^v^v><^>v>v<^<<^<^>vv>^v<<^>^>>v^<<v^>v^^v^^<v^v>>><vv><<<>^v>><><v<vv<^>v<>><^v>^^v<<<<^v^vv<<<<><><^<^<^v><<^^v^<<<<<^^><^^>vv<v<^<v>v<^><><v<>vvv^<vv>v^>^>^^^v<<^<^^>vv<v^v^v>^vv^><^v^<<>v<^^>^vv<<>^<<><^>v^<<^<>v><><>v<<^^><^^^v>>v>^vv<v^>>^v^^<><<<<<^>^v^<^<^^>^vv<^>v^^v^<>v<><v>v^v>vvv><><<><>vv<vvv^v>^^>^^^<><^>^^^>v<vvvv<>vv<v<v^^>><>v<>>v^>v^^vv^>v>>><v<<<<v<^v>><^^>^v^v<v^v^^^vvv>>>vv<^>><<<^>><^<^>^<^>^>>v^<^<>^<^^<><vvv^^<>^<>>><<v>^<^<v<<><^<<^><^^>vv<>^^><v^v<vv<^<vvv<<^>v^>>v>>>v<<^vv^<><>>>^^<^v^>>^>>><<v<<^<vv><^<>^>>^v>>><^^^<<<vv<<v<v>^vv><><<>^^^<>^<vv^<^<<v>^^><vv>><>>>^>vv>^<^<>>^<^^><v>v^><v>vv><><>>><><<^^v<<^v<v>vv<><><<^v>^v<>^<^^^v^>^<^><^v>v>^v<>><^^v^^^^^<><v<>>vvv<v^^<>v>>>>^<<><^v>vv>>^^><<><><^^^<^<^<<^v>^^^><v>>>>><<v<v>v^^^<>>v<vv<^<>v^^^v<><^>v>><<><>v<^><<>>><>v>^<>>^>v^v<<<<>^<v^vv^>vv<<><v^vv<v<v<<>>>>>vv<><>^<^v>vv^<<v<^v^^<<^<<^^v^>>><<>^<>><^>>><v<>><<>^^>><<<^^^^^v>>^<<>>vvvv<^v<v^^<^>^vv<vv<>v<<<^><>>>>vv^<^v>v<^<>^v>>^<^^v^>>><>^^<^v>>v<<>vv<vvvv<>vv>^><>v^<>^<<^vv<v^^v<vvvv><^>>^v^>^^<<<^>>^^>^<^^<^<<<v^<^^v<<vv^<<^^^vv><v<vv^>v^^v<v>^^<^v<^>>><<>vv<<^><<v^v^^^v<vv>^>vv<^>>^<v<>vv>>>^>>><<v<^<>^<<<>>^<<>><^<<^^^>>v^^>v<<<>v>v>v<v<^>^<>>>^vvv><<^^<<><v<><^<v<vvv>v>>>>vv^^v<v<^<^><v>^v<<v<vv>>v>v<<<<><<>vv<><^^^<>>v<v<vvv><v^<vv^>>><v^^<>>>^^<><^<^v^><vv>>^^v>^<<v^>v>^^>^v^<v<^<v^v><>>v^^<^v^^<<>^^>v^^>><<<<^<^^v>^^v>v<<vv^^vv>^>v^<v<v><>vv>>^<v^v^<v<^>^v>v^^>vvvvv<v><<>vv>vvvvvv>>v>>^^^<v>vv^^><<v>>v^^^^v>vv>v<^v>>>>^>^><v^>^<v<vv>v>^>><v>><<>>^vv<vv^^<^^>>>>><><<^<v<><<v>^><^vv^v>>>>>v>^>^<vv>^v^>v<^v^<^<<vv<<>v<>>^vv<<>^v^v>><><<>>v^^<<>^^<v><>v<<^^<^^>^^>^<^><>>v<>>^^<^>><<<v<>>>^v^>v>v<<^^<<^>v<v^>>v^^v^^<<>^v>v><v^>v<^^>^<vv><vv^<>v<><^<<<vv<<v>v<^<<<<^^>v^v^^><<><^^^<v>v^^>>>vvv><>vv<>>^^v^v<<^>v^^v^>vv>^<<v<^<v^>^^<<v<^^>^v^^<^^v<<>>vv<^>>^><><>v>>v<>^<v^^><<>>> \ No newline at end of file diff --git a/src/main/resources/2015/day4.txt b/src/main/resources/2015/day4.txt new file mode 100644 index 00000000..d75e0dcd --- /dev/null +++ b/src/main/resources/2015/day4.txt @@ -0,0 +1 @@ +yzbqklnj diff --git a/src/main/resources/2015/day5.txt b/src/main/resources/2015/day5.txt new file mode 100644 index 00000000..56421004 --- /dev/null +++ b/src/main/resources/2015/day5.txt @@ -0,0 +1,1000 @@ +rthkunfaakmwmush +qxlnvjguikqcyfzt +sleaoasjspnjctqt +lactpmehuhmzwfjl +bvggvrdgjcspkkyj +nwaceixfiasuzyoz +hsapdhrxlqoiumqw +lsitcmhlehasgejo +hksifrqlsiqkzyex +dfwuxtexmnvjyxqc +iawwfwylyrcbxwak +mamtkmvvaeeifnve +qiqtuihvsaeebjkd +skerkykytazvbupg +kgnxaylpgbdzedoo +plzkdktirhmumcuf +pexcckdvsrahvbop +jpocepxixeqjpigq +vnsvxizubavwrhtc +lqveclebkwnajppk +ikbzllevuwxscogb +xvfmkozbxzfuezjt +ukeazxczeejwoxli +tvtnlwcmhuezwney +hoamfvwwcarfuqro +wkvnmvqllphnsbnf +kiggbamoppmfhmlf +ughbudqakuskbiik +avccmveveqwhnjdx +llhqxueawluwmygt +mgkgxnkunzbvakiz +fwjbwmfxhkzmwtsq +kzmtudrtznhutukg +gtvnosbfetqiftmf +aoifrnnzufvhcwuy +cldmefgeuwlbxpof +xdqfinwotmffynqz +pajfvqhtlbhmyxai +jkacnevnrxpgxqal +esxqayxzvortsqgz +glfoarwvkzgybqlz +xdjcnevwhdfsnmma +jyjktscromovdchb +pvguwmhdvfxvapmz +iheglsjvxmkzgdbu +lwjioxdbyhqnwekv +zcoguugygkwizryj +ogvnripxxfeqpxdh +hkvajhsbfnzsygbm +cnjqeykecopwabpq +wojjtbcjinoiuhsj +kpwpvgxbyzczdzjq +wrvhylisemlewgzk +uiezkmnhilfzahtm +mucteynnuxpxzmvt +zaiwbgxefusfhmst +apptbogpxivjwink +qryboarjtwjhjgjb +irehxupgyseaahzd +fobstqxguyubggoh +ysriumfghtxtfxwe +auchdmasvfeliptw +mztuhefcrnknyrdl +tyjmkhihbwabjtaa +yquzkdtgsljkaebw +almvdvofjtkyzbmd +emqftiuqqpdwwbrv +hrrhmqfpepvbawvw +atrkgykycvgxbpyb +dhthetnealksbdan +zzqafhgicubptiyo +qdtaieaziwhbttnw +kyskgapdgqrtrefw +edwzlpqztpydmdlr +awszjnlmvlyqsuvl +kcrtmtshtsgixvcp +jtaskgkijivbbkri +mmggfwapsetemiuj +itagrrnjbnmhgppd +uqmbezechbrpbnqq +nnyimvtascflpzsa +knqeimypkdttyudj +vgoiyvtvegwyxjjd +qubzdxsbecktzrho +zehojtvktsbbxijb +xepmjrekwcgoxyoh +bnptxnocbpbqbyeq +sfvynsywscbnymos +dsltfbpcmffbluba +kncrlzlmkikylppa +siwudrvmildgaozv +jhhefbvbvneqzvtc +lqjgztxitbuccqbp +himmwlbhjqednltt +vwognchyertnnfil +eejakhapkbodrntf +qxuijkkhhlskgrba +aankpfxxicfpllog +vuxykvljyqexfhrn +epgygflbxlbwybzq +zuxmwvetmvcszayc +xttwhfqmemgtjnkf +hftwldmivyfunfvl +bejlyxfamzliilrj +zkehazcxyyvtrxti +dsgafehmcfpycvgz +igremmqdojqdvwmb +swnjzvmhcslvkmiw +fchzbfbmtqtxmaef +xwjmyyrlznxrcytq +brwcwzpcvbwdrthl +fvrlridacsiojdmb +mhsturxdlmtxozvy +usxvqyrwywdyvjvz +gwazuslvmarfpnzm +rgkbudaqsnolbcqo +dpxvlbtavdhdedkj +nnqmjzejhodyfgyd +ozoazxkfhujgtzvy +psdgvhzdiwnuaxpl +tznkilxpogbzgijz +wnpytcseirtborhh +lhauurlfsmagfges +oqfbzixnlywkzwwy +yoehapoyjpakziom +vtjftdcsfdzbmtrn +zcshfnodiwixcwqj +wapbxpaxgjvtntkm +qfyypkyvblrtaenh +bsxhbxkovgukhcza +kitdmvpiwzdonoyy +slkbhxmehzavbdsf +dovzjouqkzkcmbkl +qpbigdcqkfnfkxvq +eaiaquhnesvtcdsv +mhbezlhqojdsuryj +dqprkkzxlghkoccx +xqepmorryeivhrhm +frwmrjpezwmjflvf +gjpfgwghodfslwlf +fzyvajisdjbhfthq +pvzxkxdscdbilrdb +mtaxmqcnagmplvnm +rlyafujuuydrqwnc +gvqvrcxwyohufehq +lmrkircgfrfusmfd +ovlpnkxcpimyaspb +xhyjremmqhdqywju +pxfczlhpzbypfarm +utjhprzhtggausyp +utzkkzlnyskjtlqh +cecbcnxpazvkedic +xwvoaggihrbhmijq +krredhmtwlfmyagw +lwfhxgbknhwudkzw +vyczyvuxzmhxmdmn +swcoaosyieqekwxx +waohmlfdftjphpqw +gaclbbfqtiqasijg +ybcyaxhluxmiiagp +xgtxadsytgaznndw +wzqhtjqpaihyxksm +fdwltsowtcsmsyhm +rpoelfbsararhfja +tswgdacgnlhzwcvz +xjgbhdlxllgeigor +ksgthvrewhesuvke +whgooqirdjwsfhgi +toztqrxzavxmjewp +hbkayxxahipxnrtl +lazimkmdnhrtflcu +ndoudnupbotwqgmr +niwuwyhnudxmnnlk +hlmihzlrpnrtwekr +wzkttdudlgbvhqnc +rfyzzgytifkqlxjx +skddrtwxcyvhmjtb +mljspkvjxbuyhari +xwkhozaoancnwaud +nookruxkdffeymdz +oiqfvpxmcplyfgoa +qoxggshmrjlzarex +lsroezewzkrwdchx +nkoonmvdydgzspcl +lygxeqztdqklabov +jempjyzupwboieye +hpdaqkhjiddzybly +cvcizjlnzdjfjlbh +vaaddsbkcgdjhbkj +pjxmtxoyrkmpnenf +ujqdvyqnkbusxlps +miyvzkzqploqaceb +gapcsbkulicvlnmo +xqpcyriqhjhaeqlj +ipumdjwlldzqhmgh +swdstecnzttmehxe +ucmqordmzgioclle +aywgqhmqlrzcxmqx +ptkgyitqanvjocjn +wcesxtmzbzqedgfl +rnetcouciqdesloe +chpnkwfdjikqxwms +onpyrjowcuzdtzfg +tydnqwaqwkskcycz +dhamguhmkjzzeduy +oecllwyrlvsyeeuf +gsukajpoewxhqzft +sgdnffdixtxidkih +pqqzjxzydcvwwkmw +wnjltltufkgnrtgm +hylaicyfrqwolnaq +ovfnugjjwyfjunkm +xknyzsebmqodvhcl +uwfmrjzjvvzoaraw +zaldjvlcnqbessds +zphvjuctrsksouvz +ceqbneqjwyshgyge +wmelhaoylbyxcson +nghuescieaujhgkj +dhjmflwwnskrdpph +exvanqpoofjgiubf +aidkmnongrzjhsvn +mdbtkyjzpthewycc +izctbwnzorqwcqwz +hrvludvulaopcbrv +mrsjyjmjmbxyqbnz +sjdqrffsybmijezd +geozfiuqmentvlci +duzieldieeomrmcg +ehkbsecgugsulotm +cymnfvxkxeatztuq +bacrjsgrnbtmtmdl +kbarcowlijtzvhfb +uwietqeuupewbjav +ypenynjeuhpshdxw +fwwqvpgzquczqgso +wjegagwkzhmxqmdi +vocvrudgxdljwhcz +nnytqwspstuwiqep +axapfrlcanzgkpjs +lklrjiszochmmepj +gxadfpwiovjzsnpi +qidsjxzgwoqdrfie +wgszciclvsdxxoej +kwewlmzxruoojlaq +ywhahockhioribnz +ucbqdveieawzucef +mdyyzmfoaxmzddfv +hsxnabxyqfzceijv +vivruyvbrtaqeebr +jxfeweptjtgvmcjc +mmypqxmpurhculwd +mpiaphksvctnryli +xqzqnuxmuzylkkun +fndmtefjxxcygtji +dnorqlldvzqprird +nutokyajmjpwjaqu +vlupfperqyqkjcaj +dgihjeokrphkpdnk +nvbdyrlheqzixuku +mhrkntnxvsmvrpka +kvhkyanlhhymwljf +fhipumtegqfgeqqw +vpfjgveycdefuabu +kzincljffncylcsf +tsezxymwmjtyegqw +wxhcdrqedkdcwxli +ueihvxviirnooomi +kfelyctfvwyovlyh +horzapuapgtvzizz +iiqkdpmfvhwwzmtj +rsaclclupiicstff +quwkkhrafypkaoum +gyrgkgmwqfkeudfe +noydhbqacwptyfmy +efwwuipzgtkwffhf +suyojcitomdxsduh +lbcxnsykojkufkml +zpglsvoutvzkgdep +usgrufyvgsbsmbpr +katrrwuhwvunjqor +btngwrpcxoyfbgbc +bxjscjdiowjrkpns +nwxvnfrnlkgqxvhf +ikhyqkvljucgdlag +xibnxsjopmxvflkl +mzplumcfivqcjqnz +jqflcxoxzlbwlxry +fcscvmfepdxrshxe +wlpffwunffklzbuc +emvrlqajjgwzfmle +rhaheurtzrfoqkyq +ifuuhpxmadaysfsx +ncyfvleyzqntpcoo +zeogmyaqccmtvokd +jqppbzebppdnpurn +xixarswxsiwjzgni +ezruwzajsoombphs +hmiqfeizyprielxf +jnaoxljnftymsfey +extgzrxzovlsixnf +yhyfmovvlrwoezsv +ffnybaolppuzpjym +pqowimdiusccaagn +jgceiosiihpjsmnu +hkoexeaopebktngx +njhzuvsygymejqav +yjkgcclgtvushcfk +gmbjxhnkkxlihups +pdlwysadiebsidjz +omrwmgzulfoaqros +ofvvgdezwvcffdcy +otytpuklhxcpxhgd +eyfaosxdauumvlux +mvdthjfstrlqlyuo +mdgdchgnlxaxspdm +bakjezmhbwqxzevd +msakswaphdwaodhg +vjcqscgdbnsxdllh +jjywaovewbuzreoj +nqvplhwacylifvwk +lpwmpixbxysmsign +flcvbpxrchcpbgcb +qjpkeuenenwawlok +bnqkflfmdmntctya +fzsgzpoqixvpsneq +icwfdisutoilejld +relchofohnkwbumi +aljalgdaqwhzhfwr +cahkvnwnbwhodpqs +dnrzeunxiattlvdm +nsmkhlrpwlunppjs +mqqsexlwfqnogwub +tfavelkqrtndpait +ooguafrnmprfxcnz +ntynkiordzxtwrqa +rkkyzlxekqqlkvym +ofxcivdnwcmgfnme +ywotqwbrqxlrnobh +nrbbiypwhrqihvev +flqsjixxtydheufs +lcfrfzypstrqctja +hyzbuzawuzjrynny +exfbywcnstebnvmq +vydzwnbmcihvqrnj +qmwqaaylinzrdmiw +lpxpztpvfggspeun +lhxmqqbracsuyrfm +zgkwsrabaseidbrw +yjlmbhbqsqgszsun +mqfzqtbxtuteabtd +izomzdmcqmfrevwd +iqijrlqurdwrkoln +fxhqzpgoxxjkkhql +oulwontmgrjeopnk +edaigfydjexvzzvj +vjhybiklxpxjqpwc +ypxfbfnpbmqmwtte +xzvcsgasztrxdzud +rpulqmobptfarboo +palacmdijxzzykrf +jmllwukplufohiby +dnswayomusiekfmy +sxbrjqtqgzzwhcfo +lylvndsgbnbqiejm +jaxxhoulxnxnaenr +nblissutfazbcpwn +zmlsjszzldvbiacr +kewojtlchfkclqwk +eqvfjasddggvfame +yibzqlvxtraxpdon +dgnbxsbmdrtyvaac +uoxrcxfimhgtxqhy +xfdxalrwcwudlviq +xmtbdklqptoswpwl +zezyopzdztdjerfl +xuzluhjsqvhytgbc +qdjtmeckispmgzki +phakupesplzmmmvc +gpuoqfffumzszybn +bhywxqkrrlwuebbw +ibvwgoyvelzenkzl +ncohvvbmiekbaksa +fzuvqzvxvdbeirrp +lshtzniokucwojjd +punrduvlnrulkium +gnfpikidnfobrrme +vxkvweekmnvkzgyl +rhydssudkcjlqgxn +cjtqvlaahohcgumo +jwzmfyinsfwecgcb +blpeseqhlzfilpuf +jvtpjkyokzcvagon +qjomincbcobjczpe +ugsyzkzgdhxtmsfz +hleaqgwzqjwajcra +coumfghptpnxvvov +hqpnbupnzwpdvgqd +cpouyodqxgviasem +lljvxeyozckifhfd +huqtnvutdyfgwtwa +yenlveuynmlmmymu +ojdyufkomxiwjmbf +spjzgvcwvzgffjkk +vxykmjhyvmhyssbp +tazdeqggfcjfvwwn +uumwcngwcytvpufx +avovuzkrevloneop +owczrtbnrvjfemkt +hzpugcanaxyvaokj +iishlodnxvjtgzyn +qosdonclrnxirham +eonqlnwevahydddg +ryqmnuikftlxuoqy +whqepbcwabzbthha +vekisvnwhgpyemxr +lrwxzoamnvpnlhap +ywepvqthnorfswjv +evqwvsoazmwyypjy +bgwoojddubppmjxf +jypkfrthzgtyeddi +tynabbhfjzkrqsju +adxstbfqheuqbcuk +gqwqiocdyqoiblrx +ybuddlyuskdlegxv +luwynbsmpgyeqsbr +ltyqgqoyljibqndo +jaedpajzphfybajh +epglnrxofptsqvmy +zjdpxkngfkstxbxh +ekegphcwanoickfu +cqvhuucvejqirvfs +uqudnnqumsqcgefo +qnzunermlnpcfflo +ovyxaniqaawzfuxx +djekxcezjowdhopq +bwtwbmdehrhpjnlk +nilsnlacerweikfa +hyrigsrmsrzcyaus +gvmdmgddduylmxic +ewzovdblhmjgjwsk +ojjfsknlonzguzlq +yjgfruvpjvlvrvvq +cyoryodwyhzwprbv +crsjclrurcquqgut +sjhfhobwtojxcmem +ibxfjudilmdeksea +uqbhdbjoeupyhbcz +uqbxigzxuxgmjgnw +jashafmtzrhswirg +dexiolovaucyooka +czjbwwnlwcoqnoiu +ojigosazigfhttjc +zfiqtgrqbmftknzn +dlzbmvmolssbqlzl +sgmchcurrutdtsmw +scdwjqsdohcdrwry +cgtdvecqwplpprxn +iiplenflfczaktwi +wmgnwfxfcjhyeiqg +giihshowtcatecvl +nqhzfincclumvkaz +kxstpzgdfvepionc +agbhxcijxjxerxyi +hmgfqevgdyvisyvs +tthakmvpowpvhtao +ottalcghygpaafbo +aplvozayycremgqg +dbjxlnaouxqtdpfz +peeyallzjsdvpalc +ndtdjyboixuyhfox +llabnbcobexfoldn +cweuvfnfyumbjvxr +ewkhhepaosalnvkk +pivyiwsiqpwhagyx +auzsnwdcerfttawt +grbfrekupciuzkrt +byfwzadtzrbndluf +lluypxjeljzquptk +pskwsnhqanemtfou +sxvrtqqjdjkfhhrm +ulsmqgmshvijyeqh +qigofesfhekoftkf +zhatniakqtqcxyqa +uuczvylgnxkenqee +mlitvtuxknihmisc +srrtrxdvcokpyfmz +osispuucklxcfkeb +vqhazlaulmnpipql +umkiueljberqhdig +knvpbkbvgoqzwprp +nbsocqikhuvsbloj +wjnpepjkzkednqbm +agbhmytsofuyqcor +gvogzhkkpxyfecko +ardafguxifeipxcn +yiajcskbgykyzzkw +sejunbydztyibnpq +dqrgfggwcnxeiygy +xnqqwilzfbhcweel +jjtifhlvmyfxajqi +gwszrpgpmbpiwhek +kydzftzgcidiohfd +efprvslgkhboujic +kecjdfwqimkzuynx +rildnxnexlvrvxts +dlnhjbqjrzpfgjlk +qluoxmzyhkbyvhub +crydevvrjfmsypbi +dosaftwumofnjvix +pwsqxrfwigeffvef +nzyfmnpwqyygjvfx +iccbckrkxlwjsjat +bmputypderxzrwab +bhuakynbwnlreixb +qmrzfyqjiwaawvvk +juvtixbkwyludftn +zapmjxmuvhuqlfol +paiwrqjhpjavuivm +tsepfbiqhhkbyriz +jpprewufiogxoygk +mmapyxbsugcsngef +pduhmgnepnpsshnh +aetndoqjvqyjrwut +fnfvlorhwpkkemhz +gedfidpwvoeazztl +beclvhospgtowaue +wsclsvthxustmczm +tjbxhnpniuikijhe +rhetyhvfcemponeg +mavonujurprbeexi +argbrpomztrdyasa +bzvtffbtygjxmkvh +maqyqkhsqgzfzvve +seeirbiynilkhfcr +wxmanwnozfrlxhwr +dieulypsobhuvswb +nxevassztkpnvxtb +jclxuynjsrezvlcy +xlolzyvgmwjsbmyf +tguzoeybelluxwxc +fkchoysvdoaasykz +cyynwbfcqpqapldf +rhifmzpddjykktuy +ndvufsyusbxcsotm +txutnzvdsorrixgg +qjoczhukbliojneu +ufhwujotncovjjsz +kclsgsdwcrxsycbr +yscwmlrdaueniiic +nxhivrovpkgsmugb +fdxqfyvwwvgeuqkv +femtamfylysohmpr +amsyzslvyxsoribh +nhmqxncwsonhgbcz +uomqsvcbpthlmcue +kxtfapcqrnjkkslj +xtieihonlfubeync +adpcjqxgydulchgj +cjynnzsmmujsxxpd +neeapmzweidordog +szoivgqyqwnyjsnk +uwgrtzaqezgphdcu +ptpgttqxocjwxohi +fhltebsizfwzpgpf +emmsazsidspkhgnh +dxcprkbcjeqxqzgn +tpxzqwxbzwigdtlt +afsmksnmzustfqyt +xyehnftstacyfpit +vcrfqumhjcmnurlw +rrznpjzcjgnugoch +gbxnzkwsjmepvgzk +jwobshgwerborffm +zmuvfkhohoznmifs +buyuwgynbtujtura +bevncenmpxfyzwtf +hqqtcrhzfsrcutjh +kbpzshllpiowepgc +alspewedcukgtvso +xvsvzzdcgjuvutrw +pmwulqraatlbuski +abuzsiinbueowpqn +oedruzahyfuchijk +avhcuhqqjuqkesoq +azqgplkzsawkvnhb +rjyoydogkzohhcvx +aezxwucqvqxuqotb +kxobnsjvzvenyhbu +nnjoiilshoavzwly +aijttlxjrqwaewgk +cvsaujkqfoixarsw +zngtoacpxcsplgal +qhkxliqtokvepcdv +aixihrtdmxkfvcqw +owbgdgdymxhhnoum +tajsagmruwzuakkd +ckrfduwmsodeuebj +alfdhuijuwyufnne +xpchlkijwuftgmnm +rwcrvgphistiihlg +xdaksnorrnkihreq +akeschycpnyyuiug +rgputhzsvngfuovz +lerknhznuxzdhvre +mqiqmyladulbkzve +csnmupielbbpyops +kwgrwgmhfzjbwxxz +npwtvbslvlxvtjsd +zxleuskblzjfmxgf +hexvporkmherrtrn +rhtdhcagicfndmbm +qhnzyuswqwoobuzz +dpvanjuofrbueoza +kjcqujmnhkjdmrrf +gholddsspmxtpybg +jihlvyqdyzkshfsi +zuviqmuqqfmtneur +kzexjowatvkohrtx +wgijnfhibsiruvnl +zevkrkmhsxmicijb +khxrcteqourjvoxa +ylpxlkcnenbxxtta +zrfsvctbojjkpvtw +nlzbudxibnmcrxbt +cqnscphbicqmyrex +ywvdohheukipshcw +riwatbvjqstubssf +idlztqqaxzjiyllu +sdpdgzemlqtizgxn +rjtbovqlgcgojyjx +fnfrfwujmjwdrbdr +osnppzzmrpxmdhtj +ljhwngclvydkwyoe +chwqkrkzrvjwarat +jmydkwpibkvmqlgs +zvhfmbxnlxtujpcz +jsnhsphowlqupqwj +fzhkkbpasthopdev +jerntjdsspdstyhf +gctwmaywbyrzwdxz +xemeaiuzlctijykr +xulrqevtbhplmgxc +yfejfizzsycecqpu +gboxrvvxyzcowtzm +lpvhcxtchwvpgaxp +wdiwucbdyxwnjdqf +qgwoqazzjlvnjrwj +prtlnkakjfqcjngn +fagvxsvjpuvqxniz +xacmxveueaakfbsm +ginvtonnfbnugkpz +qpvggsppewfzvwin +reoqnlzruyyfraxa +kolwtqhifjbbuzor +vrkcywvdhdprztww +ngdvyfmvjqhbzbxt +rooxeoilqzqjunmp +efxmdprtogtxgyqs +qrhjuqndgurcmwgu +ouitjprueefafzpl +kirdwcksqrbwbchp +fpumsmogojuywezo +lgjrgykywugzjees +xigioqcpjabpbdas +ewkhuprpqzikmeop +fgrgxsqeducigxvr +bclkursnqkzmjihl +jozidniwvnqhvsbc +oghcilcyozrmmpta +xbgmaungzcpasapi +iqowypfiayzbcvhv +opdehgwdgkocrgkf +zfzvdjeinlegcjba +vhakxvlcayuzukap +xyradgyiebpevnwe +eamhtflgedwyshkn +igteqdgchjeulfth +kwsfkigxzpbgdxod +vapnpsbdboiewpzp +wbuqhjsngxpqshen +vxxilouxuytitwgm +cpnwlkwnkeanqnet +wdmbtqvvlowftvgb +wjtmcecpyqzwpbqg +jnxmoxdhvsphcdeg +wabxfxpotoywwodn +mwbsoxzlqpqobvvh +coktshbyzjkxnwlt +rzhnggpslwzvyqrp +dgzuqbzarbutlkfx +wunajaiiwgijfvjh +uotdbcgmsvbsfqlb +kxdtlgmqbccjqldb +ngmjzjwvwbegehfr +cvpsabqfpyygwncs +wqluvqlhdhskgmzj +rbveperybfntcfxs +fbmoypqdyyvqyknz +zxpgzwnvmuvkbgov +yexcyzhyrpluxfbj +ltqaihhstpzgyiou +munhsdsfkjebdicd +plecvjctydfbanep +kjrxnnlqrpcieuwx +zbcdtcqakhobuscf +kgovoohchranhmsh +llxufffkyvuxcmfx +tgaswqyzqopfvxtw +kojcqjkdpzvbtjtv +xggdlkmkrsygzcfk +vvitpsnjtdqwyzhh +gcqjuwytlhxsecci +vbsghygcsokphnrg +vejqximdopiztjjm +hudqtwmwkviiuslp +vwswfvpcwwpxlyry +gxmfiehdxptweweq +qjmekjdcedfasopf +pqyxdxtryfnihphf +felnavctjjojdlgp +hbimufguekgdxdac +dhxhtnqgfczywxlr +pssottpdjxkejjrh +edieanguabapxyig +sciinanyqblrbzbb +irxpsorkpcpahiqi +qsxecaykkmtfisei +ivfwlvxlbnrzixff +hqxzzfulfxpmivcw +vvbpaepmhmvqykdg +cetgicjasozykgje +wuetifzdarhwmhji +gaozwhpoickokgby +eldnodziomvdfbuv +favpaqktqaqgixtv +twbcobsayaecyxvu +lzyzjihydpfjgqev +wnurwckqgufskuoh +fxogtycnnmcbgvqz +aetositiahrhzidz +dyklsmlyvgcmtswr +ykaxtdkjqevtttbx +kfmnceyxyhiczzjm +nnizopcndipffpko +yjmznhzyfinpmvkb +sljegcvvbnjhhwdd +zmkeadxlwhfahpwg +rwvcogvegcohcrmx +aguqwrfymwbpscau +vlusytjagzvsnbwe +smvzhburcgvqtklh +rfuprvjkhazrcxpv +megqlnoqmymcrclc +gvldhkewtmlwqvqv +awynhvtyziemnjoa +voprnvtnzspfvpeh +dhlguqwmunbbekih +goayirdhnjrfuiqi +eoghydfykxdslohz +chpippjykogxpbxq +hqbycjweqczwjwgf +pvefsrvwumrlvhmt +eghwdovaynmctktk +crwkxoucibumzawc +bzbtahvhkdigvvtj +bnbptgihhfubxhho +ddqmbwyfmfnjjaro +gvtswqyzazihctif +vmqctjpgadxztqqb +dgnndowtpeooaqqf +sxdvctfdtalufxty +ylgeexosibsmmckw +sxplpyskbpqnojvw +coarhxtsvrontyeg +fyoaurggjupvzvlv +jlyrkqsiwuggvjem +uwbsjoxonreuucyi +gihuqvwxovbgokes +dxzaaxupbcgnxcwf +gidrgmvyrlqqslve +csflmlvqmonoywpx +jkxkpixlythlacnk +ejkarcdkdslldugv +dbzmsusevohhjkmr +cbrqzualjpdtworc +kpgidqlmcbpfmmwu +zwghjuofexfowqam +ncdlxmcrsmsocetz +kfprzqacefifjkbd +swwzivrxulkhvldc +wgqejhigbjwunscp +rsstnwcyybfauqxu +qhngfxyhdqopyfgk +zrndpyyejsmqsiaj +xxknxwpvafxiwwjc +mmaahwgoiwbxloem +tabacndyodmpuovp +yriwomauudscvdce +duvyscvfidmtcugl +mgipxnqlfpjdilge +imeeqcdetjuhfjnw +dvkutrdofpulqkyh +jefvtlktxegpmbya +iyzudqgpvlzjfydh +giohapxnpaqayryd +qheqdprmnqlpztls +rdxhijmzegxkotoq +hdnmaspumdwnrcdz +wafpbgehbuzdgsnc +tbtrfztsferdmhsy +vusndcyjngtkrtmk +ilqblestzxebcifh +urfgjbjgzlrfsdlv +aptcdvpsqwleqttn +bigczjvzokvfofiw +zjnjeufonyqgkbpx +trcdebioegfqrrdi +jrdvdriujlmbqewt +jqrcmuxpwurdhaue +yjlermsgruublkly +zwarvgszuqeesuwq +xthhhqzwvqiyctvs +mzwwaxnbdxhajyyv +nclsozlqrjvqifyi +gcnyqmhezcqvksqw +deuakiskeuwdfxwp +tclkbhqqcydlgrrl +qbpndlfjayowkcrx +apjhkutpoiegnxfx +oaupiimsplsvcsie +sdmxrufyhztxzgmt +ukfoinnlbqrgzdeh +azosvwtcipqzckns +mydyeqsimocdikzn +itfmfjrclmglcrkc +swknpgysfscdrnop +shyyuvvldmqheuiv +tljrjohwhhekyhle +dayinwzuvzimvzjw +qgylixuuervyylur +klqqaiemurawmaaz +hdmzgtxxjabplxvf +xiivzelzdjjtkhnj +ktgplkzblgxwrnvo +gvbpyofzodnknytd +lqhlmnmhakqeffqw +ltzdbngrcxwuxecy +obxnfjeebvovjcjz +zexpwallpocrxpvp +tjpkkmcqbbkxaiak +qiedfixxgvciblih +qcxkhghosuslbyih +gnsfidwhzaxjufgm +xrghwgvyjakkzidw +tftftwedtecglavz +wquqczzkzqrlfngr +twibtkijpvzbsfro +bmplypdsvzuhrjxp +zanrfmestvqpwbuh +zonrhfqowyimcukm +kpvajjfmqpbhrjma +kujzluicngigjbtp +iusguantsrwxdjal +kwxeuylcnszswahw +visdhnkobxnemldu +rogeadmmaicwtabl +pxqycifbgevqudvs +osaiozyvlyddylqr +vffjxrolrpuxcatx +jbmsetccdrywssjd +qgxyhjfpbfifmvgc +npejgalglldxjdhs +mbbtqgmttastrlck +whapaqwdtpkropek +dulbdboxazfyjgkg +xaymnudlozbykgow +lebvqmxeaymkkfoy +bmicnfuubkregouj +dieatyxxxlvhneoj +yglaapcsnsbuvrva +bbpjaslqpzqcwkpk +xehuznbayagrbhnd +ikqmeovaurmqfuvr +ylyokwuzxltvxmgv +hqtfinrkllhqtoiz +pjmhtigznoaejifx +fqdbmowkjtmvvrmx +uvqtqfoulvzozfxv +rpajajukuxtchrjd +sznucejifktvxdre +ufvibsmoushmjbne +xirdqoshngthfvax +iafpkddchsgdqmzl +vmualmlduipvykzh +fnmuahmblwyceejb +ilsaapnswfoymiov +lenvylifraahaclv +cukqxlipuyxedqfh +zgwecslpniqvtvuz +cdcdfpsxuyrhsmag +dszjinhantnxgqra +ioimwotsgnjeacgt +dqcymnvjystbynhp +yibaudyfefbfgunx +cabslcvunjavqkbf +goymzvmgkvlsmugf +zxteiitpthzskjjx +agnxcnaqhjhlurzs +cvmgyxhhnykuxbmb +cgqmjexydmvgwxpp +sygjajofieojiuna +clpvxbrbjvqfbzvu +cbntswqynsdqnhyv +bztpbtwbefiotkfa +pnxccbgajvhyeybu +asyzrvgzumtuissa +facjyblvcqqginxa +rvwnucnbsvberxuv +ghrbeykzrxclasie +ekujtselepgjtaql +krtrzsmduhsifyiw +ticjswvsnyrwhpnt +clmjhsftkfjzwyke +lbxlcixxcztddlam +xhfeekmxgbloguri +azxqwlucwhahtvep +kitdjrwmockhksow +keznwwcusgbtvfrs +ljvzxoywcofgwajj +vebjnhnkcfzbhrcw +eqfcxkavstxcuels +ldattkyawjrvcido +bsqqeilshcwtqyil +foqqsxahfiozcqrw +liswfmuhzfbyzjhf +sulbdcyzmolapfbs +zuggzkelwxjpsgxb +betioxrgtnhpivcw +xmtbixstdipibhgs +ttvurgqmulryyaji +viobnljznzppfmxw +qlzabfopydtxrlet +tusvydegfxhaxolk +thoufvvfjferxhwp +cfyyzppfarjiilbs +jwmhxtgafkkgseqs +pqwuuaxbeklodwpt +vndyveahdiwgkjyx +ssrjgasfhdouwyoh +thbavfcisgvvyekf +yjdvxmubvqadgypa +tlbmcxaelkouhsvu +bonohfnlboxiezzr +rktlxcbkhewyvcjl +rsmoutcbcssodvsc +qszdratuxcrhsvoh +eypyfahpuzqwzwhi +yhkrleqmqlmwdnio +vpnvxusvmngsobmq +hkzyhopvxrsimzys +dblriiwnrvnhxykl +xkriqxkrprjwpncs +rcymltrbszhyhqti +mzbvneplsnpiztzn +vkqtnptgbqefvfoc +nwdtfiaozkcjtlax +crximadpvdaccrsm +lrbajafxwwnxvbei +rbexzesrytpwwmjf +stxwjarildpnzfpg +btamaihdivrhhrrv +acqbucebpaulpotl +dkjhzghxxtxgdpvm +rsbzwsnvlpqzyjir +mizypbwvpgqoiams +nvrslorjpqaasudn +wvexcpzmconqkbvk +rfwfumhjwzrvdzam +eaghdaqorkhdsmth +gtuntmpqaivosewh +nzlsmdgjrigghrmy +dhuvxwobpzbuwjgk +kkcuvbezftvkhebf +aeediumxyljbuyqu +rfkpqeekjezejtjc +wkzasuyckmgwddwy +eixpkpdhsjmynxhi +elrlnndorggmmhmx +ayxwhkxahljoxggy +mtzvvwmwexkberaw +evpktriyydxvdhpx +otznecuqsfagruls +vrdykpyebzyblnut +cnriedolerlhbqjy +uajaprnrrkvggqgx +xdlxuguloojvskjq +mfifrjamczjncuym +otmgvsykuuxrluky +oiuroieurpyejuvm diff --git a/src/main/resources/2015/day6.txt b/src/main/resources/2015/day6.txt new file mode 100644 index 00000000..df10465d --- /dev/null +++ b/src/main/resources/2015/day6.txt @@ -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 diff --git a/src/main/resources/2015/day7.txt b/src/main/resources/2015/day7.txt new file mode 100644 index 00000000..1b7dfc90 --- /dev/null +++ b/src/main/resources/2015/day7.txt @@ -0,0 +1,339 @@ +bn RSHIFT 2 -> bo +lf RSHIFT 1 -> ly +fo RSHIFT 3 -> fq +cj OR cp -> cq +fo OR fz -> ga +t OR s -> u +lx -> a +NOT ax -> ay +he RSHIFT 2 -> hf +lf OR lq -> lr +lr AND lt -> lu +dy OR ej -> ek +1 AND cx -> cy +hb LSHIFT 1 -> hv +1 AND bh -> bi +ih AND ij -> ik +c LSHIFT 1 -> t +ea AND eb -> ed +km OR kn -> ko +NOT bw -> bx +ci OR ct -> cu +NOT p -> q +lw OR lv -> lx +NOT lo -> lp +fp OR fv -> fw +o AND q -> r +dh AND dj -> dk +ap LSHIFT 1 -> bj +bk LSHIFT 1 -> ce +NOT ii -> ij +gh OR gi -> gj +kk RSHIFT 1 -> ld +lc LSHIFT 1 -> lw +lb OR la -> lc +1 AND am -> an +gn AND gp -> gq +lf RSHIFT 3 -> lh +e OR f -> g +lg AND lm -> lo +ci RSHIFT 1 -> db +cf LSHIFT 1 -> cz +bn RSHIFT 1 -> cg +et AND fe -> fg +is OR it -> iu +kw AND ky -> kz +ck AND cl -> cn +bj OR bi -> bk +gj RSHIFT 1 -> hc +iu AND jf -> jh +NOT bs -> bt +kk OR kv -> kw +ks AND ku -> kv +hz OR ik -> il +b RSHIFT 1 -> v +iu RSHIFT 1 -> jn +fo RSHIFT 5 -> fr +be AND bg -> bh +ga AND gc -> gd +hf OR hl -> hm +ld OR le -> lf +as RSHIFT 5 -> av +fm OR fn -> fo +hm AND ho -> hp +lg OR lm -> ln +NOT kx -> ky +kk RSHIFT 3 -> km +ek AND em -> en +NOT ft -> fu +NOT jh -> ji +jn OR jo -> jp +gj AND gu -> gw +d AND j -> l +et RSHIFT 1 -> fm +jq OR jw -> jx +ep OR eo -> eq +lv LSHIFT 15 -> lz +NOT ey -> ez +jp RSHIFT 2 -> jq +eg AND ei -> ej +NOT dm -> dn +jp AND ka -> kc +as AND bd -> bf +fk OR fj -> fl +dw OR dx -> dy +lj AND ll -> lm +ec AND ee -> ef +fq AND fr -> ft +NOT kp -> kq +ki OR kj -> kk +cz OR cy -> da +as RSHIFT 3 -> au +an LSHIFT 15 -> ar +fj LSHIFT 15 -> fn +1 AND fi -> fj +he RSHIFT 1 -> hx +lf RSHIFT 2 -> lg +kf LSHIFT 15 -> kj +dz AND ef -> eh +ib OR ic -> id +lf RSHIFT 5 -> li +bp OR bq -> br +NOT gs -> gt +fo RSHIFT 1 -> gh +bz AND cb -> cc +ea OR eb -> ec +lf AND lq -> ls +NOT l -> m +hz RSHIFT 3 -> ib +NOT di -> dj +NOT lk -> ll +jp RSHIFT 3 -> jr +jp RSHIFT 5 -> js +NOT bf -> bg +s LSHIFT 15 -> w +eq LSHIFT 1 -> fk +jl OR jk -> jm +hz AND ik -> im +dz OR ef -> eg +1 AND gy -> gz +la LSHIFT 15 -> le +br AND bt -> bu +NOT cn -> co +v OR w -> x +d OR j -> k +1 AND gd -> ge +ia OR ig -> ih +NOT go -> gp +NOT ed -> ee +jq AND jw -> jy +et OR fe -> ff +aw AND ay -> az +ff AND fh -> fi +ir LSHIFT 1 -> jl +gg LSHIFT 1 -> ha +x RSHIFT 2 -> y +db OR dc -> dd +bl OR bm -> bn +ib AND ic -> ie +x RSHIFT 3 -> z +lh AND li -> lk +ce OR cd -> cf +NOT bb -> bc +hi AND hk -> hl +NOT gb -> gc +1 AND r -> s +fw AND fy -> fz +fb AND fd -> fe +1 AND en -> eo +z OR aa -> ab +bi LSHIFT 15 -> bm +hg OR hh -> hi +kh LSHIFT 1 -> lb +cg OR ch -> ci +1 AND kz -> la +gf OR ge -> gg +gj RSHIFT 2 -> gk +dd RSHIFT 2 -> de +NOT ls -> lt +lh OR li -> lj +jr OR js -> jt +au AND av -> ax +0 -> c +he AND hp -> hr +id AND if -> ig +et RSHIFT 5 -> ew +bp AND bq -> bs +e AND f -> h +ly OR lz -> ma +1 AND lu -> lv +NOT jd -> je +ha OR gz -> hb +dy RSHIFT 1 -> er +iu RSHIFT 2 -> iv +NOT hr -> hs +as RSHIFT 1 -> bl +kk RSHIFT 2 -> kl +b AND n -> p +ln AND lp -> lq +cj AND cp -> cr +dl AND dn -> do +ci RSHIFT 2 -> cj +as OR bd -> be +ge LSHIFT 15 -> gi +hz RSHIFT 5 -> ic +dv LSHIFT 1 -> ep +kl OR kr -> ks +gj OR gu -> gv +he RSHIFT 5 -> hh +NOT fg -> fh +hg AND hh -> hj +b OR n -> o +jk LSHIFT 15 -> jo +gz LSHIFT 15 -> hd +cy LSHIFT 15 -> dc +kk RSHIFT 5 -> kn +ci RSHIFT 3 -> ck +at OR az -> ba +iu RSHIFT 3 -> iw +ko AND kq -> kr +NOT eh -> ei +aq OR ar -> as +iy AND ja -> jb +dd RSHIFT 3 -> df +bn RSHIFT 3 -> bp +1 AND cc -> cd +at AND az -> bb +x OR ai -> aj +kk AND kv -> kx +ao OR an -> ap +dy RSHIFT 3 -> ea +x RSHIFT 1 -> aq +eu AND fa -> fc +kl AND kr -> kt +ia AND ig -> ii +df AND dg -> di +NOT fx -> fy +k AND m -> n +bn RSHIFT 5 -> bq +km AND kn -> kp +dt LSHIFT 15 -> dx +hz RSHIFT 2 -> ia +aj AND al -> am +cd LSHIFT 15 -> ch +hc OR hd -> he +he RSHIFT 3 -> hg +bn OR by -> bz +NOT kt -> ku +z AND aa -> ac +NOT ak -> al +cu AND cw -> cx +NOT ie -> if +dy RSHIFT 2 -> dz +ip LSHIFT 15 -> it +de OR dk -> dl +au OR av -> aw +jg AND ji -> jj +ci AND ct -> cv +dy RSHIFT 5 -> eb +hx OR hy -> hz +eu OR fa -> fb +gj RSHIFT 3 -> gl +fo AND fz -> gb +1 AND jj -> jk +jp OR ka -> kb +de AND dk -> dm +ex AND ez -> fa +df OR dg -> dh +iv OR jb -> jc +x RSHIFT 5 -> aa +NOT hj -> hk +NOT im -> in +fl LSHIFT 1 -> gf +hu LSHIFT 15 -> hy +iq OR ip -> ir +iu RSHIFT 5 -> ix +NOT fc -> fd +NOT el -> em +ck OR cl -> cm +et RSHIFT 3 -> ev +hw LSHIFT 1 -> iq +ci RSHIFT 5 -> cl +iv AND jb -> jd +dd RSHIFT 5 -> dg +as RSHIFT 2 -> at +NOT jy -> jz +af AND ah -> ai +1 AND ds -> dt +jx AND jz -> ka +da LSHIFT 1 -> du +fs AND fu -> fv +jp RSHIFT 1 -> ki +iw AND ix -> iz +iw OR ix -> iy +eo LSHIFT 15 -> es +ev AND ew -> ey +ba AND bc -> bd +fp AND fv -> fx +jc AND je -> jf +et RSHIFT 2 -> eu +kg OR kf -> kh +iu OR jf -> jg +er OR es -> et +fo RSHIFT 2 -> fp +NOT ca -> cb +bv AND bx -> by +u LSHIFT 1 -> ao +cm AND co -> cp +y OR ae -> af +bn AND by -> ca +1 AND ke -> kf +jt AND jv -> jw +fq OR fr -> fs +dy AND ej -> el +NOT kc -> kd +ev OR ew -> ex +dd OR do -> dp +NOT cv -> cw +gr AND gt -> gu +dd RSHIFT 1 -> dw +NOT gw -> gx +NOT iz -> ja +1 AND io -> ip +NOT ag -> ah +b RSHIFT 5 -> f +NOT cr -> cs +kb AND kd -> ke +jr AND js -> ju +cq AND cs -> ct +il AND in -> io +NOT ju -> jv +du OR dt -> dv +dd AND do -> dq +b RSHIFT 2 -> d +jm LSHIFT 1 -> kg +NOT dq -> dr +bo OR bu -> bv +gk OR gq -> gr +he OR hp -> hq +NOT h -> i +hf AND hl -> hn +gv AND gx -> gy +x AND ai -> ak +bo AND bu -> bw +hq AND hs -> ht +hz RSHIFT 1 -> is +gj RSHIFT 5 -> gm +g AND i -> j +gk AND gq -> gs +dp AND dr -> ds +b RSHIFT 3 -> e +gl AND gm -> go +gl OR gm -> gn +y AND ae -> ag +hv OR hu -> hw +1674 -> b +ab AND ad -> ae +NOT ac -> ad +1 AND ht -> hu +NOT hn -> ho diff --git a/src/main/resources/2015/day8.txt b/src/main/resources/2015/day8.txt new file mode 100644 index 00000000..3e5be655 --- /dev/null +++ b/src/main/resources/2015/day8.txt @@ -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" diff --git a/src/main/resources/2015/day9.txt b/src/main/resources/2015/day9.txt new file mode 100644 index 00000000..a56f5e25 --- /dev/null +++ b/src/main/resources/2015/day9.txt @@ -0,0 +1,28 @@ +AlphaCentauri to Snowdin = 66 +AlphaCentauri to Tambi = 28 +AlphaCentauri to Faerun = 60 +AlphaCentauri to Norrath = 34 +AlphaCentauri to Straylight = 34 +AlphaCentauri to Tristram = 3 +AlphaCentauri to Arbre = 108 +Snowdin to Tambi = 22 +Snowdin to Faerun = 12 +Snowdin to Norrath = 91 +Snowdin to Straylight = 121 +Snowdin to Tristram = 111 +Snowdin to Arbre = 71 +Tambi to Faerun = 39 +Tambi to Norrath = 113 +Tambi to Straylight = 130 +Tambi to Tristram = 35 +Tambi to Arbre = 40 +Faerun to Norrath = 63 +Faerun to Straylight = 21 +Faerun to Tristram = 57 +Faerun to Arbre = 83 +Norrath to Straylight = 9 +Norrath to Tristram = 50 +Norrath to Arbre = 60 +Straylight to Tristram = 27 +Straylight to Arbre = 81 +Tristram to Arbre = 90 diff --git a/src/main/resources/2016-examples/day1-1.txt b/src/main/resources/2016-examples/day1-1.txt new file mode 100644 index 00000000..3c5090f2 --- /dev/null +++ b/src/main/resources/2016-examples/day1-1.txt @@ -0,0 +1 @@ +R2, L3 \ No newline at end of file diff --git a/src/main/resources/2016-examples/day1-2.txt b/src/main/resources/2016-examples/day1-2.txt new file mode 100644 index 00000000..a9ad4ed6 --- /dev/null +++ b/src/main/resources/2016-examples/day1-2.txt @@ -0,0 +1 @@ +R2, R2, R2 \ No newline at end of file diff --git a/src/main/resources/2016-examples/day1-3.txt b/src/main/resources/2016-examples/day1-3.txt new file mode 100644 index 00000000..b781c2d0 --- /dev/null +++ b/src/main/resources/2016-examples/day1-3.txt @@ -0,0 +1 @@ +R5, L5, R5, R3 \ No newline at end of file diff --git a/src/main/resources/2016-examples/day1-4.txt b/src/main/resources/2016-examples/day1-4.txt new file mode 100644 index 00000000..60f9cffe --- /dev/null +++ b/src/main/resources/2016-examples/day1-4.txt @@ -0,0 +1 @@ +R8, R4, R4, R8 \ No newline at end of file diff --git a/src/main/resources/2016-examples/day10-1.txt b/src/main/resources/2016-examples/day10-1.txt new file mode 100644 index 00000000..e9ad2b4e --- /dev/null +++ b/src/main/resources/2016-examples/day10-1.txt @@ -0,0 +1,6 @@ +value 5 goes to bot 2 +bot 2 gives low to bot 1 and high to bot 0 +value 3 goes to bot 1 +bot 1 gives low to output 1 and high to bot 0 +bot 0 gives low to output 2 and high to output 0 +value 2 goes to bot 2 diff --git a/src/main/resources/2016-examples/day11-1.txt b/src/main/resources/2016-examples/day11-1.txt new file mode 100644 index 00000000..0a01c5e3 --- /dev/null +++ b/src/main/resources/2016-examples/day11-1.txt @@ -0,0 +1,4 @@ +The first floor contains a hydrogen-compatible microchip and a lithium-compatible microchip. +The second floor contains a hydrogen generator. +The third floor contains a lithium generator. +The fourth floor contains nothing relevant. diff --git a/src/main/resources/2016-examples/day11-10.txt b/src/main/resources/2016-examples/day11-10.txt new file mode 100644 index 00000000..4191a853 --- /dev/null +++ b/src/main/resources/2016-examples/day11-10.txt @@ -0,0 +1,4 @@ +F4 . . . . LM +F3 E HG HM LG . +F2 . . . . . +F1 . . . . . diff --git a/src/main/resources/2016-examples/day11-11.txt b/src/main/resources/2016-examples/day11-11.txt new file mode 100644 index 00000000..88f32241 --- /dev/null +++ b/src/main/resources/2016-examples/day11-11.txt @@ -0,0 +1,4 @@ +F4 E HG . LG LM +F3 . . HM . . +F2 . . . . . +F1 . . . . . diff --git a/src/main/resources/2016-examples/day11-12.txt b/src/main/resources/2016-examples/day11-12.txt new file mode 100644 index 00000000..2fd3c63d --- /dev/null +++ b/src/main/resources/2016-examples/day11-12.txt @@ -0,0 +1,4 @@ +F4 . HG . LG . +F3 E . HM . LM +F2 . . . . . +F1 . . . . . diff --git a/src/main/resources/2016-examples/day11-13.txt b/src/main/resources/2016-examples/day11-13.txt new file mode 100644 index 00000000..f85a14c9 --- /dev/null +++ b/src/main/resources/2016-examples/day11-13.txt @@ -0,0 +1,4 @@ +F4 E HG HM LG LM +F3 . . . . . +F2 . . . . . +F1 . . . . . diff --git a/src/main/resources/2016-examples/day11-2.txt b/src/main/resources/2016-examples/day11-2.txt new file mode 100644 index 00000000..f1044a8c --- /dev/null +++ b/src/main/resources/2016-examples/day11-2.txt @@ -0,0 +1,4 @@ +F4 . . . . . +F3 . . . LG . +F2 . HG . . . +F1 E . HM . LM diff --git a/src/main/resources/2016-examples/day11-3.txt b/src/main/resources/2016-examples/day11-3.txt new file mode 100644 index 00000000..f7d59167 --- /dev/null +++ b/src/main/resources/2016-examples/day11-3.txt @@ -0,0 +1,4 @@ +F4 . . . . . +F3 . . . LG . +F2 E HG HM . . +F1 . . . . LM diff --git a/src/main/resources/2016-examples/day11-4.txt b/src/main/resources/2016-examples/day11-4.txt new file mode 100644 index 00000000..29750325 --- /dev/null +++ b/src/main/resources/2016-examples/day11-4.txt @@ -0,0 +1,4 @@ +F4 . . . . . +F3 E HG HM LG . +F2 . . . . . +F1 . . . . LM diff --git a/src/main/resources/2016-examples/day11-5.txt b/src/main/resources/2016-examples/day11-5.txt new file mode 100644 index 00000000..285327fe --- /dev/null +++ b/src/main/resources/2016-examples/day11-5.txt @@ -0,0 +1,4 @@ +F4 . . . . . +F3 . HG . LG . +F2 E . HM . . +F1 . . . . LM diff --git a/src/main/resources/2016-examples/day11-6.txt b/src/main/resources/2016-examples/day11-6.txt new file mode 100644 index 00000000..808c2d4b --- /dev/null +++ b/src/main/resources/2016-examples/day11-6.txt @@ -0,0 +1,4 @@ +F4 . . . . . +F3 . HG . LG . +F2 . . . . . +F1 E . HM . LM diff --git a/src/main/resources/2016-examples/day11-7.txt b/src/main/resources/2016-examples/day11-7.txt new file mode 100644 index 00000000..fe95e36e --- /dev/null +++ b/src/main/resources/2016-examples/day11-7.txt @@ -0,0 +1,4 @@ +F4 . . . . . +F3 . HG . LG . +F2 E . HM . LM +F1 . . . . . diff --git a/src/main/resources/2016-examples/day11-8.txt b/src/main/resources/2016-examples/day11-8.txt new file mode 100644 index 00000000..e8018194 --- /dev/null +++ b/src/main/resources/2016-examples/day11-8.txt @@ -0,0 +1,4 @@ +F4 . . . . . +F3 E HG HM LG LM +F2 . . . . . +F1 . . . . . diff --git a/src/main/resources/2016-examples/day11-9.txt b/src/main/resources/2016-examples/day11-9.txt new file mode 100644 index 00000000..af6a17fa --- /dev/null +++ b/src/main/resources/2016-examples/day11-9.txt @@ -0,0 +1,4 @@ +F4 E . HM . LM +F3 . HG . LG . +F2 . . . . . +F1 . . . . . diff --git a/src/main/resources/2016-examples/day12-1.txt b/src/main/resources/2016-examples/day12-1.txt new file mode 100644 index 00000000..01a004ba --- /dev/null +++ b/src/main/resources/2016-examples/day12-1.txt @@ -0,0 +1,6 @@ +cpy 41 a +inc a +inc a +dec a +jnz a 2 +dec a diff --git a/src/main/resources/2016-examples/day13-1.txt b/src/main/resources/2016-examples/day13-1.txt new file mode 100644 index 00000000..3cdf3263 --- /dev/null +++ b/src/main/resources/2016-examples/day13-1.txt @@ -0,0 +1,8 @@ + 0123456789 +0 .#.####.## +1 ..#..#...# +2 #....##... +3 ###.#.###. +4 .##..#..#. +5 ..##....#. +6 #...##.### diff --git a/src/main/resources/2016-examples/day13-2.txt b/src/main/resources/2016-examples/day13-2.txt new file mode 100644 index 00000000..2b185ad3 --- /dev/null +++ b/src/main/resources/2016-examples/day13-2.txt @@ -0,0 +1,8 @@ + 0123456789 +0 .#.####.## +1 .O#..#...# +2 #OOO.##... +3 ###O#.###. +4 .##OO#OO#. +5 ..##OOO.#. +6 #...##.### diff --git a/src/main/resources/2016-examples/day15-1.txt b/src/main/resources/2016-examples/day15-1.txt new file mode 100644 index 00000000..8a942343 --- /dev/null +++ b/src/main/resources/2016-examples/day15-1.txt @@ -0,0 +1,2 @@ +Disc #1 has 5 positions; at time=0, it is at position 4. +Disc #2 has 2 positions; at time=0, it is at position 1. diff --git a/src/main/resources/2016-examples/day17-1.txt b/src/main/resources/2016-examples/day17-1.txt new file mode 100644 index 00000000..bd3c147d --- /dev/null +++ b/src/main/resources/2016-examples/day17-1.txt @@ -0,0 +1,9 @@ +######### +#S| | | # +#-#-#-#-# +# | | | # +#-#-#-#-# +# | | | # +#-#-#-#-# +# | | | +####### V diff --git a/src/main/resources/2016-examples/day18-1.txt b/src/main/resources/2016-examples/day18-1.txt new file mode 100644 index 00000000..93aa8052 --- /dev/null +++ b/src/main/resources/2016-examples/day18-1.txt @@ -0,0 +1,2 @@ +ABCDE +12345 diff --git a/src/main/resources/2016-examples/day18-2.txt b/src/main/resources/2016-examples/day18-2.txt new file mode 100644 index 00000000..7dec673f --- /dev/null +++ b/src/main/resources/2016-examples/day18-2.txt @@ -0,0 +1,3 @@ +..^^. +.^^^^ +^^..^ diff --git a/src/main/resources/2016-examples/day18-3.txt b/src/main/resources/2016-examples/day18-3.txt new file mode 100644 index 00000000..a6d3b621 --- /dev/null +++ b/src/main/resources/2016-examples/day18-3.txt @@ -0,0 +1,10 @@ +.^^.^.^^^^ +^^^...^..^ +^.^^.^.^^. +..^^...^^^ +.^^^^.^^.^ +^^..^.^^.. +^^^^..^^^. +^..^^^^.^^ +.^^^..^.^^ +^^.^^^..^^ diff --git a/src/main/resources/2016-examples/day19-1.txt b/src/main/resources/2016-examples/day19-1.txt new file mode 100644 index 00000000..53d302cf --- /dev/null +++ b/src/main/resources/2016-examples/day19-1.txt @@ -0,0 +1,3 @@ + 1 +5 2 + 4 3 diff --git a/src/main/resources/2016-examples/day2-1.txt b/src/main/resources/2016-examples/day2-1.txt new file mode 100644 index 00000000..50ecbb59 --- /dev/null +++ b/src/main/resources/2016-examples/day2-1.txt @@ -0,0 +1,3 @@ +1 2 3 +4 5 6 +7 8 9 diff --git a/src/main/resources/2016-examples/day2-2.txt b/src/main/resources/2016-examples/day2-2.txt new file mode 100644 index 00000000..51391967 --- /dev/null +++ b/src/main/resources/2016-examples/day2-2.txt @@ -0,0 +1,4 @@ +ULL +RRDDD +LURDL +UUUUD diff --git a/src/main/resources/2016-examples/day20-1.txt b/src/main/resources/2016-examples/day20-1.txt new file mode 100644 index 00000000..b5cde741 --- /dev/null +++ b/src/main/resources/2016-examples/day20-1.txt @@ -0,0 +1,3 @@ +5-8 +0-2 +4-7 diff --git a/src/main/resources/2016-examples/day23-1.txt b/src/main/resources/2016-examples/day23-1.txt new file mode 100644 index 00000000..bcabc2c6 --- /dev/null +++ b/src/main/resources/2016-examples/day23-1.txt @@ -0,0 +1,7 @@ +cpy 2 a +tgl a +tgl a +tgl a +cpy 1 a +dec a +dec a diff --git a/src/main/resources/2016-examples/day24-1.txt b/src/main/resources/2016-examples/day24-1.txt new file mode 100644 index 00000000..628e51b9 --- /dev/null +++ b/src/main/resources/2016-examples/day24-1.txt @@ -0,0 +1,5 @@ +########### +#0.1.....2# +#.#######.# +#4.......3# +########### diff --git a/src/main/resources/2016-examples/day6-1.txt b/src/main/resources/2016-examples/day6-1.txt new file mode 100644 index 00000000..32ba5180 --- /dev/null +++ b/src/main/resources/2016-examples/day6-1.txt @@ -0,0 +1,16 @@ +eedadn +drvtee +eandsr +raavrd +atevrs +tsrnev +sdttsa +rasrtv +nssdts +ntnada +svetve +tesnvt +vntsnd +vrdear +dvrsen +enarar diff --git a/src/main/resources/2016-examples/day8-1.txt b/src/main/resources/2016-examples/day8-1.txt new file mode 100644 index 00000000..273dea2d --- /dev/null +++ b/src/main/resources/2016-examples/day8-1.txt @@ -0,0 +1,3 @@ +###.... +###.... +....... \ No newline at end of file diff --git a/src/main/resources/2016-examples/day8-2.txt b/src/main/resources/2016-examples/day8-2.txt new file mode 100644 index 00000000..a18d0cc9 --- /dev/null +++ b/src/main/resources/2016-examples/day8-2.txt @@ -0,0 +1,3 @@ +#.#.... +###.... +.#..... \ No newline at end of file diff --git a/src/main/resources/2016-examples/day8-3.txt b/src/main/resources/2016-examples/day8-3.txt new file mode 100644 index 00000000..b942c8e0 --- /dev/null +++ b/src/main/resources/2016-examples/day8-3.txt @@ -0,0 +1,3 @@ +....#.# +###.... +.#..... \ No newline at end of file diff --git a/src/main/resources/2016-examples/day8-4.txt b/src/main/resources/2016-examples/day8-4.txt new file mode 100644 index 00000000..631c2749 --- /dev/null +++ b/src/main/resources/2016-examples/day8-4.txt @@ -0,0 +1,3 @@ +.#..#.# +#.#.... +.#..... \ No newline at end of file diff --git a/src/main/resources/2016/day1.txt b/src/main/resources/2016/day1.txt new file mode 100644 index 00000000..2288cc5a --- /dev/null +++ b/src/main/resources/2016/day1.txt @@ -0,0 +1 @@ +R4, R3, L3, L2, L1, R1, L1, R2, R3, L5, L5, R4, L4, R2, R4, L3, R3, L3, R3, R4, R2, L1, R2, L3, L2, L1, R3, R5, L1, L4, R2, L4, R3, R1, R2, L5, R2, L189, R5, L5, R52, R3, L1, R4, R5, R1, R4, L1, L3, R2, L2, L3, R4, R3, L2, L5, R4, R5, L2, R2, L1, L3, R3, L4, R4, R5, L1, L1, R3, L5, L2, R76, R2, R2, L1, L3, R189, L3, L4, L1, L3, R5, R4, L1, R1, L1, L1, R2, L4, R2, L5, L5, L5, R2, L4, L5, R4, R4, R5, L5, R3, L1, L3, L1, L1, L3, L4, R5, L3, R5, R3, R3, L5, L5, R3, R4, L3, R3, R1, R3, R2, R2, L1, R1, L3, L3, L3, L1, R2, L1, R4, R4, L1, L1, R3, R3, R4, R1, L5, L2, R2, R3, R2, L3, R4, L5, R1, R4, R5, R4, L4, R1, L3, R1, R3, L2, L3, R1, L2, R3, L3, L1, L3, R4, L4, L5, R3, R5, R4, R1, L2, R3, R5, L5, L4, L1, L1 diff --git a/src/main/resources/2016/day10.txt b/src/main/resources/2016/day10.txt new file mode 100644 index 00000000..4ef1923d --- /dev/null +++ b/src/main/resources/2016/day10.txt @@ -0,0 +1,231 @@ +bot 75 gives low to bot 145 and high to bot 95 +bot 116 gives low to bot 157 and high to bot 197 +bot 185 gives low to bot 57 and high to bot 139 +bot 202 gives low to bot 105 and high to bot 209 +bot 179 gives low to output 20 and high to bot 133 +bot 114 gives low to bot 140 and high to bot 51 +bot 166 gives low to bot 95 and high to bot 87 +bot 57 gives low to bot 118 and high to bot 32 +bot 33 gives low to bot 141 and high to bot 105 +bot 68 gives low to bot 86 and high to bot 25 +bot 139 gives low to bot 32 and high to bot 28 +bot 18 gives low to bot 186 and high to bot 136 +bot 99 gives low to bot 41 and high to bot 83 +bot 155 gives low to bot 43 and high to bot 78 +bot 157 gives low to bot 55 and high to bot 185 +bot 204 gives low to bot 83 and high to bot 54 +bot 22 gives low to bot 187 and high to bot 148 +bot 48 gives low to bot 151 and high to bot 160 +value 7 goes to bot 77 +bot 154 gives low to bot 138 and high to bot 4 +bot 206 gives low to output 15 and high to bot 203 +value 11 goes to bot 113 +bot 47 gives low to bot 209 and high to bot 86 +bot 187 gives low to bot 54 and high to bot 37 +bot 103 gives low to output 13 and high to bot 125 +bot 92 gives low to bot 150 and high to bot 131 +bot 102 gives low to bot 56 and high to bot 164 +bot 37 gives low to bot 44 and high to bot 11 +bot 80 gives low to bot 17 and high to bot 84 +bot 52 gives low to bot 143 and high to bot 38 +bot 168 gives low to bot 170 and high to bot 2 +bot 188 gives low to bot 161 and high to bot 180 +bot 17 gives low to bot 93 and high to bot 109 +bot 117 gives low to bot 81 and high to bot 168 +bot 25 gives low to bot 59 and high to bot 71 +bot 173 gives low to bot 192 and high to bot 126 +bot 118 gives low to output 7 and high to bot 96 +bot 1 gives low to bot 155 and high to bot 100 +bot 64 gives low to bot 125 and high to bot 192 +bot 5 gives low to bot 197 and high to bot 8 +bot 136 gives low to bot 202 and high to bot 47 +bot 59 gives low to bot 7 and high to bot 130 +bot 197 gives low to bot 185 and high to bot 0 +bot 94 gives low to bot 16 and high to bot 39 +bot 138 gives low to bot 87 and high to bot 65 +bot 20 gives low to bot 128 and high to bot 208 +value 59 goes to bot 162 +bot 201 gives low to bot 119 and high to bot 177 +bot 32 gives low to bot 96 and high to bot 90 +bot 174 gives low to bot 36 and high to bot 124 +bot 60 gives low to bot 158 and high to bot 34 +value 53 goes to bot 140 +bot 141 gives low to bot 152 and high to bot 175 +bot 145 gives low to bot 183 and high to bot 146 +bot 190 gives low to output 1 and high to bot 36 +bot 113 gives low to bot 194 and high to bot 157 +value 41 goes to bot 143 +bot 61 gives low to bot 171 and high to bot 144 +bot 8 gives low to bot 0 and high to bot 152 +bot 170 gives low to bot 193 and high to bot 91 +bot 65 gives low to bot 147 and high to bot 93 +bot 6 gives low to bot 205 and high to bot 182 +bot 45 gives low to bot 195 and high to bot 13 +bot 98 gives low to bot 111 and high to bot 46 +bot 172 gives low to bot 154 and high to bot 7 +bot 119 gives low to bot 131 and high to bot 169 +bot 199 gives low to bot 117 and high to bot 156 +bot 128 gives low to bot 179 and high to bot 208 +bot 84 gives low to bot 109 and high to bot 21 +bot 86 gives low to bot 172 and high to bot 59 +value 43 goes to bot 104 +bot 165 gives low to bot 27 and high to bot 72 +bot 62 gives low to bot 58 and high to bot 120 +bot 109 gives low to bot 121 and high to bot 102 +bot 115 gives low to bot 24 and high to bot 151 +bot 19 gives low to bot 52 and high to bot 76 +bot 125 gives low to output 2 and high to bot 107 +bot 76 gives low to bot 38 and high to bot 155 +value 61 goes to bot 52 +bot 14 gives low to bot 153 and high to bot 53 +bot 180 gives low to bot 106 and high to bot 15 +bot 30 gives low to bot 28 and high to bot 75 +bot 121 gives low to bot 60 and high to bot 56 +bot 200 gives low to output 16 and high to bot 206 +bot 163 gives low to bot 71 and high to bot 14 +bot 146 gives low to bot 174 and high to bot 16 +bot 12 gives low to bot 11 and high to bot 10 +bot 127 gives low to bot 126 and high to bot 129 +bot 101 gives low to bot 64 and high to bot 173 +bot 7 gives low to bot 4 and high to bot 80 +bot 189 gives low to bot 51 and high to bot 62 +bot 85 gives low to bot 98 and high to bot 108 +bot 169 gives low to bot 204 and high to bot 187 +bot 160 gives low to bot 123 and high to bot 112 +bot 40 gives low to bot 182 and high to bot 70 +bot 158 gives low to bot 101 and high to bot 178 +bot 175 gives low to bot 159 and high to bot 67 +bot 183 gives low to bot 190 and high to bot 174 +bot 95 gives low to bot 146 and high to bot 94 +bot 110 gives low to bot 115 and high to bot 48 +bot 55 gives low to bot 49 and high to bot 57 +bot 159 gives low to bot 75 and high to bot 166 +bot 208 gives low to bot 133 and high to bot 196 +bot 131 gives low to bot 99 and high to bot 204 +value 2 goes to bot 19 +value 47 goes to bot 24 +value 31 goes to bot 194 +bot 70 gives low to bot 199 and high to bot 156 +bot 120 gives low to bot 112 and high to bot 198 +bot 42 gives low to bot 22 and high to bot 191 +bot 23 gives low to bot 177 and high to bot 42 +bot 144 gives low to bot 23 and high to bot 79 +bot 107 gives low to output 9 and high to bot 161 +bot 81 gives low to bot 15 and high to bot 170 +bot 143 gives low to bot 176 and high to bot 88 +bot 186 gives low to bot 33 and high to bot 202 +bot 205 gives low to bot 127 and high to bot 50 +bot 27 gives low to bot 3 and high to bot 97 +bot 87 gives low to bot 94 and high to bot 147 +bot 41 gives low to bot 100 and high to bot 18 +bot 50 gives low to bot 129 and high to bot 199 +bot 66 gives low to output 4 and high to bot 190 +bot 171 gives low to bot 201 and high to bot 23 +value 37 goes to bot 27 +bot 10 gives low to bot 142 and high to bot 163 +bot 148 gives low to bot 37 and high to bot 12 +bot 195 gives low to bot 165 and high to bot 31 +bot 36 gives low to output 6 and high to bot 26 +bot 162 gives low to bot 114 and high to bot 189 +bot 104 gives low to bot 162 and high to bot 189 +bot 82 gives low to bot 67 and high to bot 154 +bot 196 gives low to output 17 and high to output 8 +bot 39 gives low to bot 85 and high to bot 89 +bot 78 gives low to bot 134 and high to bot 33 +bot 167 gives low to bot 203 and high to bot 128 +bot 44 gives low to bot 73 and high to bot 63 +bot 97 gives low to bot 207 and high to bot 132 +bot 13 gives low to bot 31 and high to bot 9 +bot 46 gives low to bot 103 and high to bot 64 +bot 203 gives low to output 14 and high to bot 179 +value 23 goes to bot 195 +bot 182 gives low to bot 50 and high to bot 70 +bot 112 gives low to bot 61 and high to bot 198 +bot 184 gives low to bot 89 and high to bot 60 +bot 67 gives low to bot 166 and high to bot 138 +bot 88 gives low to bot 116 and high to bot 5 +bot 31 gives low to bot 72 and high to bot 92 +bot 198 gives low to bot 144 and high to bot 79 +bot 83 gives low to bot 18 and high to bot 29 +bot 0 gives low to bot 139 and high to bot 30 +value 19 goes to bot 115 +bot 3 gives low to bot 19 and high to bot 207 +value 13 goes to bot 114 +bot 89 gives low to bot 108 and high to bot 158 +bot 176 gives low to bot 113 and high to bot 116 +value 5 goes to bot 3 +bot 181 gives low to bot 48 and high to bot 58 +bot 26 gives low to output 19 and high to bot 111 +value 3 goes to bot 45 +bot 4 gives low to bot 65 and high to bot 17 +bot 11 gives low to bot 63 and high to bot 10 +bot 177 gives low to bot 169 and high to bot 22 +bot 71 gives low to bot 130 and high to bot 14 +bot 108 gives low to bot 46 and high to bot 101 +bot 207 gives low to bot 76 and high to bot 1 +value 17 goes to bot 104 +bot 126 gives low to bot 188 and high to bot 149 +bot 135 gives low to bot 164 and high to bot 40 +bot 105 gives low to bot 175 and high to bot 82 +bot 153 gives low to bot 84 and high to bot 53 +bot 35 gives low to bot 122 and high to bot 171 +bot 164 gives low to bot 6 and high to bot 40 +bot 124 gives low to bot 26 and high to bot 98 +bot 69 gives low to bot 13 and high to bot 122 +bot 49 gives low to output 0 and high to bot 118 +bot 193 gives low to bot 206 and high to bot 167 +bot 133 gives low to output 5 and high to bot 196 +bot 24 gives low to bot 74 and high to bot 137 +bot 111 gives low to output 18 and high to bot 103 +bot 192 gives low to bot 107 and high to bot 188 +value 29 goes to bot 110 +bot 72 gives low to bot 97 and high to bot 150 +bot 140 gives low to bot 110 and high to bot 181 +bot 191 gives low to bot 148 and high to bot 12 +value 67 goes to bot 74 +bot 132 gives low to bot 1 and high to bot 41 +bot 16 gives low to bot 124 and high to bot 85 +bot 156 gives low to bot 168 and high to bot 2 +bot 58 gives low to bot 160 and high to bot 120 +bot 43 gives low to bot 5 and high to bot 134 +bot 77 gives low to output 11 and high to bot 49 +bot 21 gives low to bot 102 and high to bot 135 +bot 178 gives low to bot 173 and high to bot 127 +bot 63 gives low to bot 68 and high to bot 142 +bot 194 gives low to bot 77 and high to bot 55 +bot 51 gives low to bot 181 and high to bot 62 +bot 209 gives low to bot 82 and high to bot 172 +bot 38 gives low to bot 88 and high to bot 43 +bot 130 gives low to bot 80 and high to bot 153 +bot 29 gives low to bot 136 and high to bot 73 +bot 56 gives low to bot 34 and high to bot 6 +bot 54 gives low to bot 29 and high to bot 44 +bot 150 gives low to bot 132 and high to bot 99 +bot 106 gives low to output 12 and high to bot 200 +bot 79 gives low to bot 42 and high to bot 191 +bot 147 gives low to bot 39 and high to bot 184 +bot 93 gives low to bot 184 and high to bot 121 +bot 90 gives low to bot 66 and high to bot 183 +bot 123 gives low to bot 35 and high to bot 61 +bot 53 gives low to bot 21 and high to bot 135 +bot 137 gives low to bot 69 and high to bot 35 +bot 28 gives low to bot 90 and high to bot 145 +bot 2 gives low to bot 91 and high to bot 20 +bot 91 gives low to bot 167 and high to bot 20 +bot 161 gives low to output 3 and high to bot 106 +value 71 goes to bot 176 +bot 73 gives low to bot 47 and high to bot 68 +bot 134 gives low to bot 8 and high to bot 141 +bot 9 gives low to bot 92 and high to bot 119 +bot 129 gives low to bot 149 and high to bot 117 +bot 74 gives low to bot 45 and high to bot 69 +bot 34 gives low to bot 178 and high to bot 205 +bot 100 gives low to bot 78 and high to bot 186 +bot 152 gives low to bot 30 and high to bot 159 +bot 149 gives low to bot 180 and high to bot 81 +bot 142 gives low to bot 25 and high to bot 163 +bot 15 gives low to bot 200 and high to bot 193 +bot 96 gives low to output 10 and high to bot 66 +value 73 goes to bot 165 +bot 151 gives low to bot 137 and high to bot 123 +bot 122 gives low to bot 9 and high to bot 201 diff --git a/src/main/resources/2016/day11.txt b/src/main/resources/2016/day11.txt new file mode 100644 index 00000000..d4538045 --- /dev/null +++ b/src/main/resources/2016/day11.txt @@ -0,0 +1,4 @@ +The first floor contains a strontium generator, a strontium-compatible microchip, a plutonium generator, and a plutonium-compatible microchip. +The second floor contains a thulium generator, a ruthenium generator, a ruthenium-compatible microchip, a curium generator, and a curium-compatible microchip. +The third floor contains a thulium-compatible microchip. +The fourth floor contains nothing relevant. diff --git a/src/main/resources/2016/day12.txt b/src/main/resources/2016/day12.txt new file mode 100644 index 00000000..3729d83e --- /dev/null +++ b/src/main/resources/2016/day12.txt @@ -0,0 +1,23 @@ +cpy 1 a +cpy 1 b +cpy 26 d +jnz c 2 +jnz 1 5 +cpy 7 c +inc d +dec c +jnz c -2 +cpy a c +inc a +dec b +jnz b -2 +cpy c b +dec d +jnz d -6 +cpy 19 c +cpy 11 d +inc a +dec d +jnz d -2 +dec c +jnz c -5 diff --git a/src/main/resources/2016/day13.txt b/src/main/resources/2016/day13.txt new file mode 100644 index 00000000..ea29ccd0 --- /dev/null +++ b/src/main/resources/2016/day13.txt @@ -0,0 +1 @@ +1362 diff --git a/src/main/resources/2016/day14.txt b/src/main/resources/2016/day14.txt new file mode 100644 index 00000000..f7f11ad9 --- /dev/null +++ b/src/main/resources/2016/day14.txt @@ -0,0 +1 @@ +ngcjuoqr diff --git a/src/main/resources/2016/day15.txt b/src/main/resources/2016/day15.txt new file mode 100644 index 00000000..6472b577 --- /dev/null +++ b/src/main/resources/2016/day15.txt @@ -0,0 +1,6 @@ +Disc #1 has 17 positions; at time=0, it is at position 15. +Disc #2 has 3 positions; at time=0, it is at position 2. +Disc #3 has 19 positions; at time=0, it is at position 4. +Disc #4 has 13 positions; at time=0, it is at position 2. +Disc #5 has 7 positions; at time=0, it is at position 2. +Disc #6 has 5 positions; at time=0, it is at position 0. diff --git a/src/main/resources/2016/day16.txt b/src/main/resources/2016/day16.txt new file mode 100644 index 00000000..f8e6224b --- /dev/null +++ b/src/main/resources/2016/day16.txt @@ -0,0 +1 @@ +00111101111101000 diff --git a/src/main/resources/2016/day17.txt b/src/main/resources/2016/day17.txt new file mode 100644 index 00000000..20c2a4e0 --- /dev/null +++ b/src/main/resources/2016/day17.txt @@ -0,0 +1 @@ +hhhxzeay diff --git a/src/main/resources/2016/day18.txt b/src/main/resources/2016/day18.txt new file mode 100644 index 00000000..aeae9dc3 --- /dev/null +++ b/src/main/resources/2016/day18.txt @@ -0,0 +1 @@ +......^.^^.....^^^^^^^^^...^.^..^^.^^^..^.^..^.^^^.^^^^..^^.^.^.....^^^^^..^..^^^..^^.^.^..^^..^^^.. diff --git a/src/main/resources/2016/day19.txt b/src/main/resources/2016/day19.txt new file mode 100644 index 00000000..aa27aa1f --- /dev/null +++ b/src/main/resources/2016/day19.txt @@ -0,0 +1 @@ +3017957 diff --git a/src/main/resources/2016/day2.txt b/src/main/resources/2016/day2.txt new file mode 100644 index 00000000..d098f4b1 --- /dev/null +++ b/src/main/resources/2016/day2.txt @@ -0,0 +1,5 @@ +RRLLRLLRULLRUUUDRDLDDLLLDDDDDUUURRRRUUDLRULURRRDRUDRUUDDRUDLLLRLDDDUDRDDRRLLLLRLRLULUURDRURRUULDRRDUDURRUURURDLURULLDUDRDLUUUUDDURRLLLUDLDLRDRRRDULLDLDULLDRLDLDURDLRRULLDDLDRLLLUDDLLRDURULLDDDDDUURURLRLRRDUURUULRLLLULLRLULLUUDRRLLDURLDDDDULUUDLUDDDULRLDURDDRUUDRRUUURLLLULURUDRULDRDUDUDRRDDULRURLLRRLRRLLDLULURDRDRULDRDRURUDLLRRDUUULDDDUURDLULDLRLLURRURLLUDURDDRUDRDLLLLDLRLDLDDRDRRDUUULLUULRRDLURLDULLDLDUUUULLLDRURLRULLULRLULUURLLRDDRULDULRLDRRURLURUDLRRRLUDLDUULULLURLDDUDDLLUDRUDRLDUDURRRRLRUUURLUDDUDURDUDDDLLRLRDDURDRUUDUDRULURLRLDRULDRRLRLDDDRDDDRLDUDRLULDLUDLRLRRRLRDULDDLRRDDLDDULDLLDU +RULLUDDUDLULRRDLLDRUDLLLDURLLLURDURLRDRRDLRDRDLLURRULUULUDUDDLLRRULLURDRLDURDLDDUURLUURLDLDLRLDRLRUULDRLRLDRLRLUDULURDULLLDRUDULDURURRRUDURDUDLRDRRURULRRLRLRRRRRRDRUDLDRULDRUDLRDLRRUDULDLRLURRRLLDRULULRUDULRLULLRLULDRUDUULLRUULDULDUDDUUULLLDRDDRRDLURUUDRRLRRRDLRRLULLLLDLRUULDLLULURUURURDRURLLDUDRRURRURRUUDDRRDDRRRRUDULULRLUULRRDDRDDLLUDLDLULLRLDRLLUULDURLDRULDDUDRUUUURRLDDUDRUURUDLLDLDLURDLULDRLLLULLLUDLLDLD +RDLDULURDLULRRDLRLLLULRUULURULLLDLLDDRLLURUUUURDRLURLLRLRLLLULRDLURDURULULDDUDDUDRLRLDLULLURRRUULUDRDURRRUDDDLUDLDLRLRRLLLRUULLLLURRDDDRRRUURULRLDRRRLRLUDDRRULDDDRUUDDRLLDULRLUDUDLDLDDDUDDLLDDRDRDUDULDRRUDRDRRDRLUURDLRDDDULLDRRRRRUDRLURDUURRDDRLUDLURRRLRDDDLRRLUULRLURDUUURRDLDDULLLRURRRUDRLUDLLDDDDDUDDRDULLUUDDURRLULLUDULUUDRLDRRRLLURLRRLLDLLLLUDRUUUDDULLRDLLDUDUDUURRUUUDRUURDRDLLDLDDULLDDRRULDLDDUUURLDLULLLRRLLRDDULLDLDLDDLDLDULURRDURURDRDRRDLR +RDRLRRUUDRLDUDLLDLUDLUUDUDLRRUUDRDDDLDDLLLRRRUDULLRRRRRURRRLUDDDLRRRRUUULDURDRULLDLRURRUULUDRURRRRLRURLRDUUDUDUDRDDURRURUDLLLLLRURUULRUURLLURDRUURLUDDDRLDDURDLDUDRURDRLRRRRUURDDRRRRURDLUUDRLDRDUULURUDDULLURRDUDLUULLDURRURLUDUUDRDDDUUDDUUUULDLDUDDLUDUUDRURLLULRUUULLRRDDUDDLULDDUUUDLUDDLDDLLRUUDRULLRRDRLLDLLRRLULLRRDDRLRDUULLLUULLDLLUDUDDLRDULUDLDLUDDRRRRDUDLUULLULDLRRDLULRLRRRULRURRDRLULDDUDLDLDULLURLLRDLURRULURDLURLUDRDRRUUDRLLUDDRLRDDUURLRRDUDLDRURDUUUDRRLLRDLDLLDRRURLUDURUULDUDLDDDDRUULLDDRLRURRDURLURRLDDRRRRLRLRDRURUDDRDLDRURLULDDL +RULRDLDDLRURDDDDDDRURLLLDDDUUULLRRDLDLURUURLUDLURRLUDUURDULDRUULDDURULDUULDDULLLUDLRULDRLDLRDDRRDLDDLLDRRUDDUDRDUULUDLLLDDLUUULDDUUULRRDULLURLULDLRLLLRLURLLRLRLDRDURRDUUDDURRULDDURRULRDRDUDLRRDRLDULULDRDURDURLLLDRDRLULRDUURRUUDURRDRLUDDRRLDLDLULRLLRRUUUDDULURRDRLLDLRRLDRLLLLRRDRRDDLDUULRLRRULURLDRLRDULUDRDLRUUDDDURUDLRLDRRUDURDDLLLUDLRLURDUDUDULRURRDLLURLLRRRUDLRRRLUDURDDDDRRDLDDLLDLRDRDDRLLLURDDRDRLRULDDRRLUURDURDLLDRRRDDURUDLDRRDRUUDDDLUDULRUUUUDRLDDD diff --git a/src/main/resources/2016/day20.txt b/src/main/resources/2016/day20.txt new file mode 100644 index 00000000..189331ca --- /dev/null +++ b/src/main/resources/2016/day20.txt @@ -0,0 +1,1005 @@ +3382920125-3384842620 +274395476-292717439 +2930989217-2931442098 +3567238438-3585628354 +1810679772-1815894338 +2521813372-2535211980 +4013982395-4016121606 +2226785695-2253602522 +4229313327-4237568877 +1132836395-1152735559 +4269205249-4270079756 +2511639370-2530694840 +1171860793-1191956612 +3608053909-3628140626 +1775412113-1797695975 +4252451184-4252820601 +1890203557-1895515881 +193774732-206045669 +3175243761-3179190970 +19216799-19928301 +3971224406-3973125653 +68520730-94398865 +945026896-957344481 +1412893721-1441801950 +3788966586-3804667828 +2223187817-2271363589 +2545050647-2564483681 +2242154395-2257327093 +660143774-679617175 +32282927-36527505 +1229799722-1238149872 +3822988915-3824678099 +3884348907-3904978960 +2252013899-2263171199 +3981516539-4010091149 +945651521-976367354 +1221206473-1229799720 +2549674323-2561232188 +2376575970-2385719960 +1829303629-1830213769 +2912748047-2912973420 +296450718-298533185 +0-296167 +3007232257-3021954584 +2582574639-2595855729 +1126754955-1140997648 +2752347098-2755308045 +321293830-342822868 +3044917961-3053774169 +296168-338264 +2649036310-2651206776 +3928579179-3971224404 +3737193158-3780150443 +1573397371-1581625110 +1148171795-1149071460 +3408724803-3428558635 +4109666880-4111857380 +3448144745-3460294806 +1973628511-1981533533 +3910915179-3925173331 +1167391101-1190519306 +1698028061-1711856370 +3238650022-3242636563 +2167565708-2184217555 +1944362237-1944379075 +3521245233-3565141178 +2571486508-2634519366 +1068461313-1077918553 +2525701686-2528766629 +1007018315-1008720710 +1169491074-1182700437 +3223704461-3228194458 +2745317983-2749861362 +3731646349-3774460614 +67383642-75156586 +1087254330-1100199012 +1944252124-1944359392 +2678720901-2684840830 +3189810804-3209591108 +3045104016-3056042589 +3100783758-3105185632 +1970405872-1975927116 +30653275-33023281 +1729464127-1757742357 +3492152701-3496720848 +3838945885-3848343543 +2375265785-2376167442 +1281737199-1296067597 +153839654-192286353 +3061850960-3063867047 +2004615362-2011857766 +476720144-488779061 +4176808904-4176858533 +492477166-527499878 +4010091151-4025282542 +1483844776-1496977388 +391524704-408520374 +835404913-844274834 +1247397368-1259987148 +2274372271-2286321078 +33382215-47606566 +2656063772-2678720900 +1122989118-1134481584 +2298071484-2303767417 +1500615536-1513878328 +2291114932-2295384774 +1291517806-1295675102 +259510824-282241059 +967069512-969192091 +2079767818-2105862356 +1606936119-1620662769 +2945855436-2949623976 +4086076760-4093177773 +2485901459-2511639368 +589152049-597247085 +3270052935-3298492585 +409062463-409427072 +1929277403-1941018188 +1010771555-1012643406 +1493995188-1495245637 +1619574592-1622196598 +3716313190-3737193157 +3826791442-3865501220 +825394498-825744078 +1773854071-1779360047 +2816332266-2818641650 +2371579315-2373848117 +2366969457-2391079767 +4123843400-4124989452 +192286354-192541612 +870373772-896071056 +2048779745-2054449255 +268512502-283090853 +4269917675-4279760928 +1462129979-1465223356 +3247583317-3259024503 +3403959199-3407679571 +4180798441-4182367116 +3063867048-3099209395 +1739301078-1760165423 +2645684515-2649713671 +2162195522-2167543718 +3221850097-3227046227 +396737648-399152359 +2313750941-2342383891 +427252428-458811443 +445566820-446097704 +907066705-914448562 +1920136239-1939293201 +2334636788-2339526533 +3514129555-3521245232 +4281339062-4294967295 +2686884806-2745210393 +439169154-455722709 +825744079-851589298 +3592373874-3634851804 +1211029415-1212832495 +273388944-274163729 +2132629675-2132700694 +2326528914-2330825379 +909137317-928919312 +1522375692-1550294454 +1134481585-1159050084 +997502057-1007018313 +2133634767-2135284509 +496193729-512883053 +1728458413-1734223404 +1782318366-1788200671 +127408875-153839652 +621168152-658228192 +40273288-64703196 +2342383892-2343706398 +2190122771-2202195589 +784611548-810002490 +1362421579-1395584056 +739113110-750311063 +730131534-755802629 +3644607763-3677628864 +1665013054-1678433427 +243374728-261627849 +3385386916-3393847439 +2155515429-2187539714 +810370879-819340508 +1335022169-1353125978 +22887908-40273287 +4025282543-4038335157 +2949623977-2974530638 +356899-526908 +215559317-227556922 +634153508-644185930 +4051716178-4083270267 +2135798301-2137541953 +3378154439-3385386915 +566204137-570632585 +630340925-635762048 +600087250-621168151 +1441801951-1451987059 +1136156009-1152687437 +1879006122-1885589295 +2974530640-3007232256 +2242396606-2252030436 +679617177-709847053 +1121696532-1122989116 +1689775922-1705775363 +240864028-243374726 +928919314-945651520 +199476581-210053727 +2020719353-2029905834 +1224624935-1228220228 +3348209102-3378154437 +1694908069-1706914052 +1823170033-1840038962 +2123962597-2125807985 +220529375-231563680 +3636188162-3644607762 +114512497-116367083 +2542221563-2563583721 +440721121-443253425 +1814324660-1814776846 +316171985-321293828 +1551343653-1551417152 +1031220674-1068461312 +178336905-180296237 +3677628866-3700353494 +709847054-730131532 +1287723007-1318939855 +1822475995-1842462378 +3125724575-3159628774 +1955246012-1962440512 +1819209653-1819816377 +344329395-389291803 +2749861364-2759109163 +527499879-533571500 +1164270-1481011 +3817400832-3821786328 +901919569-920421338 +851589300-870373771 +595550368-600087248 +2759109164-2760643932 +3821786329-3826791440 +1949443933-1970405871 +2221584805-2223187816 +1923301958-1942106417 +1012132604-1016533540 +348650091-378626227 +28276119-52605826 +2483735686-2492147527 +2568480999-2571486507 +2683686729-2686884804 +1383416036-1383424105 +1451987061-1465262753 +3819890477-3820014182 +218734078-227934420 +3242025866-3245287395 +1565274153-1568270598 +543998311-551251629 +3159628776-3221850096 +1383415633-1383417760 +472634773-481329318 +3272554719-3284374410 +2352029418-2357807359 +3795913899-3817400830 +1982524206-1985660116 +2344870095-2356691970 +15179284-15208613 +483586800-485882611 +790054203-825394496 +2417955156-2431673241 +1060111039-1068592663 +717604300-721842101 +1720917970-1760674479 +2339262539-2341812485 +4083270269-4107229565 +3393847441-3444103711 +1819816379-1842989273 +2855176964-2861003252 +615534248-642669508 +1217865821-1218326602 +1996585864-1999916771 +3299334363-3300161360 +1989192869-1994354251 +17392476-18451433 +3575798614-3592373872 +165099211-183295830 +3228194460-3247583316 +2982941789-2987321627 +1441097434-1445936581 +590243311-595211713 +755802630-760774561 +3235753051-3255820518 +1468416458-1468455274 +669621393-672959731 +2473003938-2489482468 +3259024505-3270052934 +3331647869-3348209101 +4199628170-4252451182 +3634851805-3636188160 +1096541631-1099376487 +2536496011-2542221561 +3397236409-3399143903 +1641276080-1681591145 +3680601912-3703506252 +1296474851-1322391536 +988476364-989996293 +3033936266-3036955642 +979911605-1002087529 +4104876209-4107243235 +3306555870-3308425868 +115778546-129354919 +389291805-417628406 +1989403878-2012858691 +1546327487-1547203424 +2343706400-2351350196 +1186369842-1198581391 +4182367118-4199628169 +1334526721-1342509587 +3700353495-3716313188 +867902139-879521194 +1425754606-1443576388 +3336592324-3353553106 +3042033257-3046689814 +533571502-542226692 +3928078977-3941757285 +345288703-383651417 +3498131404-3514129553 +216258763-220545698 +1809247449-1819209652 +2760643934-2781531747 +987427038-999763162 +2833260077-2855176963 +3944171786-3948030354 +3469422818-3492152699 +760774563-790054202 +4129662063-4137417252 +1335520454-1339806810 +1476565092-1521929333 +171417566-180614013 +1048919317-1064342678 +3325700154-3334070797 +3384723456-3389821412 +2431673243-2438008172 +711297600-720760721 +4264349849-4281339060 +304359527-308615901 +1586925539-1609842612 +464241620-492477164 +1388596941-1411011352 +683224859-684724346 +394626125-419293805 +4237408619-4246478691 +2391079769-2402783877 +2659409480-2678047635 +2296473187-2312899725 +110865646-115455859 +1864974310-1920136237 +863159991-870770281 +1055828663-1070489310 +2444713222-2451056648 +2637386450-2651970603 +943589-1164269 +3444538013-3454605952 +3162950403-3227215568 +1765728230-1779481151 +3503881483-3510813488 +3007115189-3007470646 +590039933-596625156 +3948145140-3970110907 +2793388962-2826701333 +3272493234-3287945160 +568598493-582854306 +1670360905-1689775920 +3022737908-3034367992 +3315476309-3325700152 +2546025328-2556376813 +1342454357-1351096476 +261627850-274064399 +4228394805-4236419474 +1944311172-1944722574 +4131310747-4162992714 +1010081024-1010771554 +2125807987-2130444545 +1760674480-1765728228 +73645309-79317363 +950292880-959564426 +2786879875-2825002009 +105397257-127408874 +1087209164-1121696531 +368220701-371111861 +1569459904-1586925537 +607581036-608077398 +4173269611-4174119323 +2844879629-2845217856 +2753271043-2757764026 +1959985533-1968095028 +1705775364-1720917968 +3602618846-3610579776 +1242566331-1276821530 +889929398-890275103 +3306446323-3317763996 +1595029750-1597941920 +780548480-785102060 +2705670454-2708020928 +1256458647-1281737197 +2219132176-2221584803 +1942594732-1944396203 +64982902-67683321 +3066140059-3066855275 +1465262754-1470050405 +1495924013-1501063645 +318586-356898 +1160956884-1211029414 +1534780725-1535823633 +2022004332-2027472832 +3041899759-3042690143 +313123739-314449501 +1012222604-1031220672 +1659525312-1670360904 +481669087-484796416 +3116438564-3122478539 +837255957-838285548 +912527697-912840438 +76991573-82365911 +2130444546-2138286096 +1779481152-1809247447 +3825258788-3825671210 +4065379322-4070317121 +2451479414-2453220953 +2469339724-2489484142 +2271363591-2296473186 +3780150445-3787339388 +4016664589-4025890998 +590578611-593888990 +2453886250-2456860665 +3279224721-3288422104 +3535542612-3543098316 +2443650195-2444595922 +1985660117-2016553627 +1148119196-1148764506 +3094795296-3095920839 +4019192128-4026050778 +1092442517-1093829738 +2023013298-2041240865 +1814467493-1818539320 +3076118916-3090677357 +3307156073-3323639190 +1563809190-1567493564 +3980703234-3988136413 +551284368-587037715 +857019769-872505288 +976367356-997502056 +3971819957-3973561606 +794806432-803617291 +2241454848-2263544967 +1212832497-1217770903 +3456605804-3481082221 +902154451-921445395 +2094224351-2099681572 +1944357183-1944363132 +1223055058-1227782181 +2636445986-2641100226 +3444755935-3454876871 +542541828-547000672 +2474960157-2502850835 +1879702426-1881800084 +2580182143-2590984428 +1595567928-1598277825 +507513580-514073365 +1859163315-1864974309 +3854470118-3860479944 +3265417704-3279454467 +4055818403-4079447905 +2063632639-2064958294 +1217770904-1224112895 +3695132653-3713149541 +497756477-523236755 +1610554974-1633348137 +1842989274-1859163313 +3396782387-3402868431 +3300138591-3300502021 +3458569100-3469996107 +4270100053-4270561883 +2922640986-2942710495 +4173886702-4180798440 +2873495940-2912748046 +1711630545-1716251263 +2658467267-2677384090 +1564163162-1570677945 +2417337335-2417413928 +1461667403-1462859282 +2652947303-2656063770 +195088301-196469703 +2582553452-2620574531 +2048460532-2048899787 +709214029-721035675 +3891491970-3903401430 +3365160031-3374736713 +3104588971-3115733169 +3204860388-3211157811 +1787926186-1796355897 +2445799244-2452795590 +2418910963-2424145291 +247380909-275647101 +4105856039-4107646677 +3925173332-3931399691 +3066565693-3074312658 +1470050407-1475643287 +2016553629-2057778379 +2790660820-2822522031 +2991807862-2996796995 +4047075048-4050210199 +2064958296-2095043831 +3307610341-3308724441 +1015524241-1023656078 +589825855-592055765 +1015993233-1029896311 +4040738788-4068965233 +4186913164-4229954405 +1008774467-1018719265 +574855316-576727313 +4208019144-4247208714 +65602494-66299578 +3360158360-3378108909 +269782036-280194349 +4134699031-4169267930 +699993381-721029669 +2466959221-2498251053 +4115341314-4143640697 +2865625835-2866804445 +2658583733-2671459562 +1168494786-1196738801 +4254567270-4259506300 +2333068117-2335855320 +4133687106-4151924959 +1535012775-1537900539 +3446385279-3469422817 +2462195571-2481529125 +1322391538-1347698869 +1383416657-1383450578 +3005709574-3006877355 +2394741810-2427498661 +1963046613-1969784518 +3865501221-3866422917 +1460361099-1462481424 +3448387919-3469381556 +1230059245-1242566330 +3031419211-3047324322 +3444330376-3444538011 +2787078869-2833260075 +1242988078-1244105333 +3682801932-3684630135 +2438008173-2445691083 +1395584057-1407407033 +2198522828-2219132175 +2170430672-2175936933 +3732557498-3736464094 +1494472634-1498091211 +2032522821-2045467139 +2714467967-2717531120 +2912973422-2913083816 +2736931464-2749855256 +3298492587-3300115843 +3685589675-3709803507 +3115849886-3116207193 +2451274812-2454113545 +4047188788-4050382414 +94398867-114790779 +2563583722-2564317178 +4039808033-4042390351 +3228958627-3255826496 +3800106025-3801876074 +2639096879-2645122059 +3929103007-3938392177 +3532436927-3534736680 +461413165-464241619 +2526200033-2536496010 +2398846954-2423553234 +536370-943588 +4288962745-4290619977 +636980688-646930866 +1218887965-1225612868 +671828987-677448584 +4270021357-4270354835 +3685969598-3693109108 +3906297697-3910915177 +1898545939-1906623101 +3921404257-3955599234 +2665600353-2678784357 +3379840660-3386697049 +2172294648-2181893861 +2138286098-2147627935 +2474128173-2491465605 +2312899727-2326264347 +2861003254-2878829564 +3565141180-3568626042 +308034725-308930370 +1374297787-1380188076 +2068350379-2103164273 +2702434316-2706631005 +840841762-843827173 +229774001-234577870 +2443293270-2444181013 +2574363987-2599509306 +845988653-846928995 +2842140798-2844212347 +1159050086-1162924895 +4176624770-4179568335 +1905152176-1908861185 +3606966881-3625605509 +2166966376-2171494787 +3707543797-3710413405 +2227000048-2246357729 +3124052995-3138551453 +3034771020-3037079950 +1243594629-1247856697 +4103498097-4109666879 +4203196953-4219400839 +1077918555-1094983032 +2187539716-2208607142 +2473581216-2485901458 +3006847770-3007275174 +3795257999-3795893809 +3795280067-3796297230 +3545921317-3561167758 +553671633-571891401 +2238446853-2246415452 +3503347037-3503591653 +310512326-314458992 +4012559618-4015268266 +2642511754-2651864212 +886299687-896817994 +3831912904-3841111291 +2914871355-2945855434 +4291658998-4292541862 +1079441616-1095238335 +1972756258-1972823681 +3044529792-3049122444 +897474157-908605461 +1622977765-1624949994 +3760168892-3775868493 +2695977801-2706156257 +4199845296-4243416654 +4177775615-4178843612 +2101880914-2105104067 +3867587845-3899468258 +1437467314-1437840786 +2093133394-2110473538 +1724010685-1748760725 +1167854731-1171905437 +2322711178-2336704318 +4231384538-4242310243 +1436980489-1437501195 +1378548431-1400976547 +3396448428-3399042206 +3332285028-3332375353 +2850614289-2852661610 +3187769187-3204842123 +2636291169-2640638445 +2517128152-2524544424 +3533300423-3541129068 +3573676754-3586699285 +3832578767-3841924270 +2477155824-2487462236 +3035920211-3040698912 +2636502692-2642511753 +2952432198-2971920769 +421129764-426848253 +2238635499-2243485822 +3899018260-3903171024 +1243523891-1245953102 +3384235667-3387646608 +790098274-793907157 +3276379980-3277190884 +3307896877-3319098793 +3641444007-3652122767 +3447005599-3461604095 +3462534637-3489441055 +2833382577-2840549985 +3542225929-3546837316 +2146092922-2155515428 +4211070374-4233272852 +3300043907-3314078796 +1701091122-1708998038 +2913024368-2913481687 +2745210394-2745645192 +1537899875-1539681070 +314012837-315380828 +3792148556-3796673743 +1291936207-1296576784 +3128985781-3150897646 +1379246184-1380841525 +3237038068-3243669218 +834667595-848396762 +3658218412-3670611693 +2692426015-2739862742 +4106928638-4107460569 +4287915224-4289366667 +892439163-897474155 +3893977471-3899446004 +3974871979-3981866307 +4046928323-4047184536 +333364695-343159811 +2952169267-2954573558 +2690146848-2717243659 +2755378753-2756460882 +2651575794-2653371414 +4046844150-4051716177 +2781531748-2810973065 +3303219538-3313081002 +912236390-912762687 +618629-906615 +2841833088-2843285315 +1218091567-1218345972 +906568139-909137316 +3108329496-3111948153 +74728522-80765410 +3548862395-3557636198 +1570417344-1580218390 +3117586921-3125724574 +3577015031-3577548939 +1015056285-1023786721 +3655096652-3659642735 +4111857382-4124735338 +1284290662-1296474850 +967937098-970818324 +20056881-20584783 +4135005481-4144833956 +221149070-240864027 +1710858080-1717882479 +1601063719-1618092010 +1166807149-1170618627 +1706232059-1713134566 +3115733170-3116067361 +4130973781-4143562361 +843422499-844720865 +3734875958-3741567257 +2678807125-2686424630 +1054816704-1061718755 +2872527689-2890484915 +3040491186-3056691605 +4252820602-4259944760 +2739837406-2740050066 +3126484839-3131427900 +2332013266-2335298295 +2999166329-3016421804 +2205268977-2209403178 +991291734-998472487 +192541614-202428614 +4047160273-4047217725 +2878835138-2893001123 +1375604678-1379759604 +3496345621-3504196200 +2652396822-2655405235 +3314078797-3318915019 +1633348139-1660027185 +3498753158-3512415972 +2591789953-2616643994 +575368706-581401066 +4231679445-4237060522 +3383738500-3386738201 +1008368502-1010698488 +3866113074-3867587843 +2402783878-2419285864 +2939413921-2942219764 +193014880-206479483 +4018437222-4024788715 +211754529-219443426 +3975278884-3986634567 +2564266037-2568480997 +666978253-677172271 +223203125-231491045 +2192871188-2207220241 +675858225-675952197 +4257875783-4260699436 +3940911746-3941818761 +3988918893-4007346244 +3031534264-3053593807 +195556009-196837181 +4286366695-4289048606 +226298223-238515408 +421363548-427252427 +300712133-316171984 +1471461219-1476565091 +3240052251-3241386278 +2231989399-2264591448 +3299508574-3300179059 +2646205821-2652027108 +3129409101-3132079129 +4172668392-4179309752 +64703198-66141247 +3971539247-3974871978 +292717441-304774999 +1293392954-1298137650 +3332318691-3332429290 +334555237-344329394 +772076204-782410336 +2039614574-2040147613 +458811445-463771353 +1356594077-1362421577 +4130552895-4133561937 +1402788318-1412893719 +2993310543-3009919115 +2444518820-2447369285 +1351096477-1359203213 +3543692767-3554653903 +2994252231-2998775799 +3888643539-3894556102 +755676110-755819696 +2959006612-2961692229 +4288838018-4289477072 +3975814181-3999363827 +2442111999-2453707073 +1623782409-1624437681 +4254752791-4266103317 +2438554423-2452608911 +4258959867-4260213148 +3309364026-3323683264 +572107636-575184177 +1785746314-1791209417 +755713961-755868908 +417628407-420524802 +1331153534-1351460515 +3352294628-3356437686 +958623192-968490278 +20119191-22887906 +777444801-820808960 +3519216305-3538850688 +1504049921-1519439892 +69376974-77465178 +3904978961-3910909761 +1096342936-1098061182 +2360555311-2366969456 +3332376000-3332444944 +2093416138-2123962596 +1400240408-1411182311 +1812810592-1813817247 +4194775348-4230093279 +10043235-20056880 +658965209-660143773 +658228194-660018205 +988139853-988890960 +3566969226-3575798613 +1299704418-1313986078 +3326245272-3365728403 +2355105948-2361674222 +1374933841-1376509422 +2755815067-2756920528 +3065692142-3066173496 +1222655406-1222854745 +3302092195-3307808868 +1222656245-1223388503 +3310805449-3318236347 +1563665591-1565964587 +3500127914-3506345530 +66175128-68520729 +971415679-971438052 +2533426597-2535586000 +417640991-421129762 +4038335159-4047297836 +1481012-19067078 +4215425077-4233295756 +1513069473-1522375690 +1526395860-1535180867 +2533109682-2535536505 +259012497-280042917 +1092158303-1092310579 +587037717-595030105 +2449102172-2455068497 +3115910816-3116438562 +4289219635-4290513855 +971352187-971425385 +2596721069-2614884167 +2202304638-2204641422 +1983306462-2016210300 +98785619-120360211 +3734505160-3736504307 +906373341-908727213 +1987234731-2000421026 +591565572-595550367 +4166402786-4171901263 +3003226411-3005630903 +2098393934-2104954270 +1374724703-1375984400 +2202151168-2203033657 +1476748370-1499918361 +3987121456-3988259357 +2864184557-2895589402 +1566627822-1583849612 +448076121-458094571 +3532511739-3541650687 +1770087544-1786108116 +1343999847-1350306206 +4137009835-4151771902 +574161-825403 +3352815885-3355102553 +4189090453-4235387842 +348976886-386738198 +3984044069-3987766381 +1658592149-1660311063 +1620874816-1624015163 +4066090098-4073771506 +542226693-576985533 +1333730749-1335614766 +2443413884-2445100251 +3865604776-3866752621 +3819878422-3819980898 +3299910115-3316426233 +4047194787-4047227667 +11540965-12225599 +3353631607-3363805493 +675731305-675887073 +3178549872-3188507025 +4143640698-4159586896 +1092177276-1092640111 +906363542-906948068 +3924258074-3929255454 +2948759624-2961881600 +723319058-728376658 +675715140-675742004 +4152104204-4172668390 +4041961742-4042525064 +988633059-991245637 +612207279-637349464 +3099209397-3111771687 +1249971850-1256470700 +470483337-473161883 +1594652709-1595966414 +3033237415-3061850958 +1960894410-1960943838 +2101531682-2109531569 +2920716472-2924595989 +3819966618-3819998902 +526909-785166 +3038311762-3044991110 +332215272-375605795 +2447148673-2462195569 +2690105306-2733531504 +1814492093-1818707672 +2920662080-2924197601 +3240013671-3240354417 +1609842613-1621859382 +4022515306-4026711143 +1468393035-1468419357 +207646612-211754527 +307684614-308379795 +1033592629-1037435660 +3434226621-3437122894 +3785668719-3795913898 +3796760686-3797471605 +2285198565-2297181003 +3108911312-3111149567 +86384527-88825176 +4056463317-4068828679 +2953555159-2960474022 +2634519368-2638715809 +3004961824-3005815942 +3444103712-3444389286 +1595556007-1596384528 +1555143934-1562116062 +3936081202-3945563120 +1659222079-1662764945 +3496720849-3503120412 +2913481688-2931396492 +1981533535-1984202583 +3022489925-3031534263 +85723398-87045537 +2256910583-2262520880 +4060339410-4069992129 +3110505154-3113683544 +2032719111-2063632638 +2092072604-2097347473 +4041476487-4047873276 +2914975332-2933186420 +1960874133-1960901569 +3796091862-3797395425 +1550294455-1559848607 +2844699816-2845069351 +2256768047-2260994367 +3111539056-3113760923 +1468376221-1468412465 +912440499-912775470 +3924993791-3964673937 +3108424707-3110543821 +841598382-845221105 +844215802-846669383 +971389171-971451918 +1239928137-1251743127 +2665595736-2679331263 +989266353-998318732 +1941122272-1949443931 +1939293202-1941391631 +755125638-756411210 +590764992-594630716 +206479484-210953249 +3021954586-3023849838 +1308467159-1320340471 +1660536607-1663577866 +1563386860-1566627821 +1622209725-1624469922 +2662613082-2675241140 +3077994117-3083539989 +755393660-757594713 +1562116064-1563502746 +3184192645-3197212232 +573558521-576486773 +3077610247-3082214069 diff --git a/src/main/resources/2016/day21.txt b/src/main/resources/2016/day21.txt new file mode 100644 index 00000000..f43fd373 --- /dev/null +++ b/src/main/resources/2016/day21.txt @@ -0,0 +1,100 @@ +swap position 2 with position 7 +swap letter f with letter a +swap letter c with letter a +rotate based on position of letter g +rotate based on position of letter f +rotate based on position of letter b +swap position 3 with position 6 +swap letter e with letter c +swap letter f with letter h +rotate based on position of letter e +swap letter c with letter b +rotate right 6 steps +reverse positions 4 through 7 +rotate based on position of letter f +swap position 1 with position 5 +rotate left 1 step +swap letter d with letter e +rotate right 7 steps +move position 0 to position 6 +swap position 2 with position 6 +swap position 2 with position 0 +swap position 0 with position 1 +rotate based on position of letter d +rotate right 2 steps +rotate left 4 steps +reverse positions 0 through 2 +rotate right 2 steps +move position 6 to position 1 +move position 1 to position 2 +reverse positions 2 through 5 +move position 2 to position 7 +rotate left 3 steps +swap position 0 with position 1 +rotate based on position of letter g +swap position 5 with position 0 +rotate left 1 step +swap position 7 with position 1 +swap letter g with letter h +rotate left 1 step +rotate based on position of letter g +reverse positions 1 through 7 +reverse positions 1 through 4 +reverse positions 4 through 5 +rotate left 2 steps +swap letter f with letter d +swap position 6 with position 3 +swap letter c with letter e +swap letter c with letter d +swap position 1 with position 6 +rotate based on position of letter g +move position 4 to position 5 +swap letter g with letter h +rotate based on position of letter h +swap letter h with letter f +swap position 3 with position 6 +rotate based on position of letter c +rotate left 3 steps +rotate based on position of letter d +swap position 0 with position 7 +swap letter e with letter d +move position 6 to position 7 +rotate right 5 steps +move position 7 to position 0 +rotate left 1 step +move position 6 to position 2 +rotate based on position of letter d +rotate right 7 steps +swap position 3 with position 5 +move position 1 to position 5 +rotate right 0 steps +move position 4 to position 5 +rotate based on position of letter b +reverse positions 2 through 4 +rotate right 3 steps +swap letter b with letter g +rotate based on position of letter a +rotate right 0 steps +move position 0 to position 6 +reverse positions 5 through 6 +rotate left 2 steps +move position 3 to position 0 +swap letter g with letter b +move position 6 to position 1 +rotate based on position of letter f +move position 3 to position 2 +reverse positions 2 through 7 +swap position 0 with position 4 +swap letter e with letter b +rotate left 4 steps +reverse positions 0 through 4 +rotate based on position of letter a +rotate based on position of letter b +rotate left 6 steps +rotate based on position of letter d +rotate left 7 steps +swap letter c with letter d +rotate left 3 steps +move position 4 to position 6 +move position 3 to position 2 +reverse positions 0 through 6 diff --git a/src/main/resources/2016/day22.txt b/src/main/resources/2016/day22.txt new file mode 100644 index 00000000..df16e40f --- /dev/null +++ b/src/main/resources/2016/day22.txt @@ -0,0 +1,1066 @@ +root@ebhq-gridcenter# df -h +Filesystem Size Used Avail Use% +/dev/grid/node-x0-y0 93T 68T 25T 73% +/dev/grid/node-x0-y1 91T 69T 22T 75% +/dev/grid/node-x0-y2 92T 68T 24T 73% +/dev/grid/node-x0-y3 92T 73T 19T 79% +/dev/grid/node-x0-y4 89T 69T 20T 77% +/dev/grid/node-x0-y5 88T 69T 19T 78% +/dev/grid/node-x0-y6 88T 67T 21T 76% +/dev/grid/node-x0-y7 89T 72T 17T 80% +/dev/grid/node-x0-y8 86T 65T 21T 75% +/dev/grid/node-x0-y9 94T 72T 22T 76% +/dev/grid/node-x0-y10 91T 64T 27T 70% +/dev/grid/node-x0-y11 90T 73T 17T 81% +/dev/grid/node-x0-y12 90T 72T 18T 80% +/dev/grid/node-x0-y13 90T 68T 22T 75% +/dev/grid/node-x0-y14 93T 73T 20T 78% +/dev/grid/node-x0-y15 91T 66T 25T 72% +/dev/grid/node-x0-y16 86T 73T 13T 84% +/dev/grid/node-x0-y17 90T 69T 21T 76% +/dev/grid/node-x0-y18 87T 71T 16T 81% +/dev/grid/node-x0-y19 91T 64T 27T 70% +/dev/grid/node-x0-y20 86T 64T 22T 74% +/dev/grid/node-x0-y21 90T 73T 17T 81% +/dev/grid/node-x0-y22 85T 64T 21T 75% +/dev/grid/node-x0-y23 88T 68T 20T 77% +/dev/grid/node-x0-y24 90T 66T 24T 73% +/dev/grid/node-x0-y25 87T 68T 19T 78% +/dev/grid/node-x0-y26 90T 67T 23T 74% +/dev/grid/node-x0-y27 88T 72T 16T 81% +/dev/grid/node-x1-y0 89T 65T 24T 73% +/dev/grid/node-x1-y1 89T 71T 18T 79% +/dev/grid/node-x1-y2 88T 73T 15T 82% +/dev/grid/node-x1-y3 93T 68T 25T 73% +/dev/grid/node-x1-y4 91T 68T 23T 74% +/dev/grid/node-x1-y5 94T 68T 26T 72% +/dev/grid/node-x1-y6 94T 64T 30T 68% +/dev/grid/node-x1-y7 86T 73T 13T 84% +/dev/grid/node-x1-y8 87T 72T 15T 82% +/dev/grid/node-x1-y9 85T 64T 21T 75% +/dev/grid/node-x1-y10 87T 71T 16T 81% +/dev/grid/node-x1-y11 88T 67T 21T 76% +/dev/grid/node-x1-y12 85T 65T 20T 76% +/dev/grid/node-x1-y13 85T 73T 12T 85% +/dev/grid/node-x1-y14 85T 68T 17T 80% +/dev/grid/node-x1-y15 93T 68T 25T 73% +/dev/grid/node-x1-y16 89T 64T 25T 71% +/dev/grid/node-x1-y17 90T 71T 19T 78% +/dev/grid/node-x1-y18 87T 65T 22T 74% +/dev/grid/node-x1-y19 94T 72T 22T 76% +/dev/grid/node-x1-y20 86T 65T 21T 75% +/dev/grid/node-x1-y21 92T 69T 23T 75% +/dev/grid/node-x1-y22 87T 69T 18T 79% +/dev/grid/node-x1-y23 86T 68T 18T 79% +/dev/grid/node-x1-y24 91T 64T 27T 70% +/dev/grid/node-x1-y25 85T 73T 12T 85% +/dev/grid/node-x1-y26 89T 68T 21T 76% +/dev/grid/node-x1-y27 91T 70T 21T 76% +/dev/grid/node-x2-y0 94T 73T 21T 77% +/dev/grid/node-x2-y1 93T 67T 26T 72% +/dev/grid/node-x2-y2 87T 69T 18T 79% +/dev/grid/node-x2-y3 86T 66T 20T 76% +/dev/grid/node-x2-y4 94T 68T 26T 72% +/dev/grid/node-x2-y5 93T 64T 29T 68% +/dev/grid/node-x2-y6 89T 66T 23T 74% +/dev/grid/node-x2-y7 86T 64T 22T 74% +/dev/grid/node-x2-y8 90T 64T 26T 71% +/dev/grid/node-x2-y9 86T 67T 19T 77% +/dev/grid/node-x2-y10 87T 71T 16T 81% +/dev/grid/node-x2-y11 85T 70T 15T 82% +/dev/grid/node-x2-y12 93T 68T 25T 73% +/dev/grid/node-x2-y13 88T 64T 24T 72% +/dev/grid/node-x2-y14 87T 64T 23T 73% +/dev/grid/node-x2-y15 91T 68T 23T 74% +/dev/grid/node-x2-y16 94T 67T 27T 71% +/dev/grid/node-x2-y17 90T 73T 17T 81% +/dev/grid/node-x2-y18 93T 68T 25T 73% +/dev/grid/node-x2-y19 90T 71T 19T 78% +/dev/grid/node-x2-y20 94T 73T 21T 77% +/dev/grid/node-x2-y21 93T 65T 28T 69% +/dev/grid/node-x2-y22 94T 64T 30T 68% +/dev/grid/node-x2-y23 93T 65T 28T 69% +/dev/grid/node-x2-y24 89T 72T 17T 80% +/dev/grid/node-x2-y25 87T 64T 23T 73% +/dev/grid/node-x2-y26 85T 69T 16T 81% +/dev/grid/node-x2-y27 87T 73T 14T 83% +/dev/grid/node-x3-y0 94T 65T 29T 69% +/dev/grid/node-x3-y1 87T 71T 16T 81% +/dev/grid/node-x3-y2 91T 64T 27T 70% +/dev/grid/node-x3-y3 94T 69T 25T 73% +/dev/grid/node-x3-y4 90T 73T 17T 81% +/dev/grid/node-x3-y5 94T 66T 28T 70% +/dev/grid/node-x3-y6 85T 72T 13T 84% +/dev/grid/node-x3-y7 87T 66T 21T 75% +/dev/grid/node-x3-y8 89T 72T 17T 80% +/dev/grid/node-x3-y9 94T 73T 21T 77% +/dev/grid/node-x3-y10 88T 67T 21T 76% +/dev/grid/node-x3-y11 86T 67T 19T 77% +/dev/grid/node-x3-y12 86T 67T 19T 77% +/dev/grid/node-x3-y13 87T 68T 19T 78% +/dev/grid/node-x3-y14 91T 68T 23T 74% +/dev/grid/node-x3-y15 92T 68T 24T 73% +/dev/grid/node-x3-y16 87T 66T 21T 75% +/dev/grid/node-x3-y17 94T 65T 29T 69% +/dev/grid/node-x3-y18 90T 66T 24T 73% +/dev/grid/node-x3-y19 87T 71T 16T 81% +/dev/grid/node-x3-y20 86T 73T 13T 84% +/dev/grid/node-x3-y21 93T 65T 28T 69% +/dev/grid/node-x3-y22 85T 64T 21T 75% +/dev/grid/node-x3-y23 89T 73T 16T 82% +/dev/grid/node-x3-y24 88T 67T 21T 76% +/dev/grid/node-x3-y25 90T 72T 18T 80% +/dev/grid/node-x3-y26 92T 69T 23T 75% +/dev/grid/node-x3-y27 87T 70T 17T 80% +/dev/grid/node-x4-y0 86T 69T 17T 80% +/dev/grid/node-x4-y1 92T 72T 20T 78% +/dev/grid/node-x4-y2 94T 64T 30T 68% +/dev/grid/node-x4-y3 85T 64T 21T 75% +/dev/grid/node-x4-y4 92T 68T 24T 73% +/dev/grid/node-x4-y5 93T 65T 28T 69% +/dev/grid/node-x4-y6 94T 66T 28T 70% +/dev/grid/node-x4-y7 90T 69T 21T 76% +/dev/grid/node-x4-y8 90T 72T 18T 80% +/dev/grid/node-x4-y9 88T 72T 16T 81% +/dev/grid/node-x4-y10 89T 73T 16T 82% +/dev/grid/node-x4-y11 85T 64T 21T 75% +/dev/grid/node-x4-y12 85T 65T 20T 76% +/dev/grid/node-x4-y13 92T 68T 24T 73% +/dev/grid/node-x4-y14 94T 70T 24T 74% +/dev/grid/node-x4-y15 92T 69T 23T 75% +/dev/grid/node-x4-y16 91T 70T 21T 76% +/dev/grid/node-x4-y17 88T 69T 19T 78% +/dev/grid/node-x4-y18 92T 64T 28T 69% +/dev/grid/node-x4-y19 86T 72T 14T 83% +/dev/grid/node-x4-y20 89T 71T 18T 79% +/dev/grid/node-x4-y21 92T 64T 28T 69% +/dev/grid/node-x4-y22 91T 66T 25T 72% +/dev/grid/node-x4-y23 88T 65T 23T 73% +/dev/grid/node-x4-y24 94T 69T 25T 73% +/dev/grid/node-x4-y25 89T 70T 19T 78% +/dev/grid/node-x4-y26 88T 73T 15T 82% +/dev/grid/node-x4-y27 87T 64T 23T 73% +/dev/grid/node-x5-y0 92T 67T 25T 72% +/dev/grid/node-x5-y1 89T 68T 21T 76% +/dev/grid/node-x5-y2 89T 69T 20T 77% +/dev/grid/node-x5-y3 94T 69T 25T 73% +/dev/grid/node-x5-y4 85T 69T 16T 81% +/dev/grid/node-x5-y5 90T 66T 24T 73% +/dev/grid/node-x5-y6 94T 70T 24T 74% +/dev/grid/node-x5-y7 88T 65T 23T 73% +/dev/grid/node-x5-y8 91T 67T 24T 73% +/dev/grid/node-x5-y9 93T 66T 27T 70% +/dev/grid/node-x5-y10 91T 68T 23T 74% +/dev/grid/node-x5-y11 93T 73T 20T 78% +/dev/grid/node-x5-y12 93T 70T 23T 75% +/dev/grid/node-x5-y13 85T 70T 15T 82% +/dev/grid/node-x5-y14 86T 70T 16T 81% +/dev/grid/node-x5-y15 87T 71T 16T 81% +/dev/grid/node-x5-y16 88T 71T 17T 80% +/dev/grid/node-x5-y17 94T 66T 28T 70% +/dev/grid/node-x5-y18 93T 68T 25T 73% +/dev/grid/node-x5-y19 85T 67T 18T 78% +/dev/grid/node-x5-y20 85T 73T 12T 85% +/dev/grid/node-x5-y21 85T 67T 18T 78% +/dev/grid/node-x5-y22 90T 68T 22T 75% +/dev/grid/node-x5-y23 91T 72T 19T 79% +/dev/grid/node-x5-y24 87T 68T 19T 78% +/dev/grid/node-x5-y25 94T 72T 22T 76% +/dev/grid/node-x5-y26 86T 69T 17T 80% +/dev/grid/node-x5-y27 90T 73T 17T 81% +/dev/grid/node-x6-y0 93T 65T 28T 69% +/dev/grid/node-x6-y1 92T 70T 22T 76% +/dev/grid/node-x6-y2 86T 64T 22T 74% +/dev/grid/node-x6-y3 88T 73T 15T 82% +/dev/grid/node-x6-y4 92T 67T 25T 72% +/dev/grid/node-x6-y5 88T 71T 17T 80% +/dev/grid/node-x6-y6 94T 66T 28T 70% +/dev/grid/node-x6-y7 92T 64T 28T 69% +/dev/grid/node-x6-y8 92T 69T 23T 75% +/dev/grid/node-x6-y9 93T 68T 25T 73% +/dev/grid/node-x6-y10 88T 66T 22T 75% +/dev/grid/node-x6-y11 93T 66T 27T 70% +/dev/grid/node-x6-y12 90T 64T 26T 71% +/dev/grid/node-x6-y13 92T 68T 24T 73% +/dev/grid/node-x6-y14 87T 72T 15T 82% +/dev/grid/node-x6-y15 89T 69T 20T 77% +/dev/grid/node-x6-y16 92T 69T 23T 75% +/dev/grid/node-x6-y17 89T 73T 16T 82% +/dev/grid/node-x6-y18 85T 70T 15T 82% +/dev/grid/node-x6-y19 89T 65T 24T 73% +/dev/grid/node-x6-y20 85T 73T 12T 85% +/dev/grid/node-x6-y21 92T 65T 27T 70% +/dev/grid/node-x6-y22 85T 71T 14T 83% +/dev/grid/node-x6-y23 94T 69T 25T 73% +/dev/grid/node-x6-y24 93T 65T 28T 69% +/dev/grid/node-x6-y25 85T 73T 12T 85% +/dev/grid/node-x6-y26 92T 67T 25T 72% +/dev/grid/node-x6-y27 90T 69T 21T 76% +/dev/grid/node-x7-y0 92T 65T 27T 70% +/dev/grid/node-x7-y1 92T 68T 24T 73% +/dev/grid/node-x7-y2 90T 69T 21T 76% +/dev/grid/node-x7-y3 93T 68T 25T 73% +/dev/grid/node-x7-y4 93T 71T 22T 76% +/dev/grid/node-x7-y5 85T 71T 14T 83% +/dev/grid/node-x7-y6 85T 68T 17T 80% +/dev/grid/node-x7-y7 85T 64T 21T 75% +/dev/grid/node-x7-y8 85T 69T 16T 81% +/dev/grid/node-x7-y9 94T 68T 26T 72% +/dev/grid/node-x7-y10 89T 66T 23T 74% +/dev/grid/node-x7-y11 93T 70T 23T 75% +/dev/grid/node-x7-y12 85T 72T 13T 84% +/dev/grid/node-x7-y13 87T 70T 17T 80% +/dev/grid/node-x7-y14 86T 72T 14T 83% +/dev/grid/node-x7-y15 90T 72T 18T 80% +/dev/grid/node-x7-y16 87T 67T 20T 77% +/dev/grid/node-x7-y17 87T 66T 21T 75% +/dev/grid/node-x7-y18 90T 72T 18T 80% +/dev/grid/node-x7-y19 91T 73T 18T 80% +/dev/grid/node-x7-y20 88T 73T 15T 82% +/dev/grid/node-x7-y21 88T 69T 19T 78% +/dev/grid/node-x7-y22 90T 69T 21T 76% +/dev/grid/node-x7-y23 89T 73T 16T 82% +/dev/grid/node-x7-y24 87T 72T 15T 82% +/dev/grid/node-x7-y25 85T 71T 14T 83% +/dev/grid/node-x7-y26 94T 71T 23T 75% +/dev/grid/node-x7-y27 94T 70T 24T 74% +/dev/grid/node-x8-y0 86T 65T 21T 75% +/dev/grid/node-x8-y1 89T 72T 17T 80% +/dev/grid/node-x8-y2 86T 72T 14T 83% +/dev/grid/node-x8-y3 85T 66T 19T 77% +/dev/grid/node-x8-y4 88T 69T 19T 78% +/dev/grid/node-x8-y5 94T 73T 21T 77% +/dev/grid/node-x8-y6 92T 67T 25T 72% +/dev/grid/node-x8-y7 88T 66T 22T 75% +/dev/grid/node-x8-y8 88T 70T 18T 79% +/dev/grid/node-x8-y9 87T 69T 18T 79% +/dev/grid/node-x8-y10 86T 66T 20T 76% +/dev/grid/node-x8-y11 88T 65T 23T 73% +/dev/grid/node-x8-y12 89T 70T 19T 78% +/dev/grid/node-x8-y13 90T 71T 19T 78% +/dev/grid/node-x8-y14 92T 64T 28T 69% +/dev/grid/node-x8-y15 93T 71T 22T 76% +/dev/grid/node-x8-y16 87T 66T 21T 75% +/dev/grid/node-x8-y17 91T 73T 18T 80% +/dev/grid/node-x8-y18 94T 67T 27T 71% +/dev/grid/node-x8-y19 87T 73T 14T 83% +/dev/grid/node-x8-y20 90T 67T 23T 74% +/dev/grid/node-x8-y21 91T 65T 26T 71% +/dev/grid/node-x8-y22 90T 70T 20T 77% +/dev/grid/node-x8-y23 92T 70T 22T 76% +/dev/grid/node-x8-y24 85T 71T 14T 83% +/dev/grid/node-x8-y25 94T 69T 25T 73% +/dev/grid/node-x8-y26 90T 67T 23T 74% +/dev/grid/node-x8-y27 90T 66T 24T 73% +/dev/grid/node-x9-y0 89T 65T 24T 73% +/dev/grid/node-x9-y1 88T 64T 24T 72% +/dev/grid/node-x9-y2 92T 67T 25T 72% +/dev/grid/node-x9-y3 87T 71T 16T 81% +/dev/grid/node-x9-y4 89T 69T 20T 77% +/dev/grid/node-x9-y5 92T 67T 25T 72% +/dev/grid/node-x9-y6 89T 71T 18T 79% +/dev/grid/node-x9-y7 88T 67T 21T 76% +/dev/grid/node-x9-y8 85T 70T 15T 82% +/dev/grid/node-x9-y9 89T 71T 18T 79% +/dev/grid/node-x9-y10 87T 71T 16T 81% +/dev/grid/node-x9-y11 89T 64T 25T 71% +/dev/grid/node-x9-y12 93T 66T 27T 70% +/dev/grid/node-x9-y13 93T 70T 23T 75% +/dev/grid/node-x9-y14 87T 73T 14T 83% +/dev/grid/node-x9-y15 88T 71T 17T 80% +/dev/grid/node-x9-y16 91T 66T 25T 72% +/dev/grid/node-x9-y17 93T 69T 24T 74% +/dev/grid/node-x9-y18 89T 70T 19T 78% +/dev/grid/node-x9-y19 86T 69T 17T 80% +/dev/grid/node-x9-y20 85T 66T 19T 77% +/dev/grid/node-x9-y21 88T 68T 20T 77% +/dev/grid/node-x9-y22 93T 73T 20T 78% +/dev/grid/node-x9-y23 91T 73T 18T 80% +/dev/grid/node-x9-y24 86T 64T 22T 74% +/dev/grid/node-x9-y25 90T 64T 26T 71% +/dev/grid/node-x9-y26 88T 72T 16T 81% +/dev/grid/node-x9-y27 91T 69T 22T 75% +/dev/grid/node-x10-y0 89T 71T 18T 79% +/dev/grid/node-x10-y1 88T 67T 21T 76% +/dev/grid/node-x10-y2 89T 70T 19T 78% +/dev/grid/node-x10-y3 85T 65T 20T 76% +/dev/grid/node-x10-y4 87T 67T 20T 77% +/dev/grid/node-x10-y5 92T 69T 23T 75% +/dev/grid/node-x10-y6 85T 73T 12T 85% +/dev/grid/node-x10-y7 90T 72T 18T 80% +/dev/grid/node-x10-y8 90T 66T 24T 73% +/dev/grid/node-x10-y9 92T 68T 24T 73% +/dev/grid/node-x10-y10 86T 67T 19T 77% +/dev/grid/node-x10-y11 88T 71T 17T 80% +/dev/grid/node-x10-y12 93T 69T 24T 74% +/dev/grid/node-x10-y13 89T 71T 18T 79% +/dev/grid/node-x10-y14 94T 67T 27T 71% +/dev/grid/node-x10-y15 86T 65T 21T 75% +/dev/grid/node-x10-y16 89T 73T 16T 82% +/dev/grid/node-x10-y17 91T 73T 18T 80% +/dev/grid/node-x10-y18 85T 70T 15T 82% +/dev/grid/node-x10-y19 92T 69T 23T 75% +/dev/grid/node-x10-y20 91T 73T 18T 80% +/dev/grid/node-x10-y21 91T 65T 26T 71% +/dev/grid/node-x10-y22 91T 72T 19T 79% +/dev/grid/node-x10-y23 92T 71T 21T 77% +/dev/grid/node-x10-y24 90T 71T 19T 78% +/dev/grid/node-x10-y25 87T 66T 21T 75% +/dev/grid/node-x10-y26 89T 66T 23T 74% +/dev/grid/node-x10-y27 93T 72T 21T 77% +/dev/grid/node-x11-y0 86T 69T 17T 80% +/dev/grid/node-x11-y1 87T 64T 23T 73% +/dev/grid/node-x11-y2 89T 71T 18T 79% +/dev/grid/node-x11-y3 88T 66T 22T 75% +/dev/grid/node-x11-y4 92T 65T 27T 70% +/dev/grid/node-x11-y5 88T 70T 18T 79% +/dev/grid/node-x11-y6 94T 64T 30T 68% +/dev/grid/node-x11-y7 94T 70T 24T 74% +/dev/grid/node-x11-y8 92T 65T 27T 70% +/dev/grid/node-x11-y9 90T 70T 20T 77% +/dev/grid/node-x11-y10 89T 69T 20T 77% +/dev/grid/node-x11-y11 89T 65T 24T 73% +/dev/grid/node-x11-y12 88T 69T 19T 78% +/dev/grid/node-x11-y13 85T 73T 12T 85% +/dev/grid/node-x11-y14 93T 72T 21T 77% +/dev/grid/node-x11-y15 91T 71T 20T 78% +/dev/grid/node-x11-y16 89T 73T 16T 82% +/dev/grid/node-x11-y17 92T 66T 26T 71% +/dev/grid/node-x11-y18 88T 68T 20T 77% +/dev/grid/node-x11-y19 92T 67T 25T 72% +/dev/grid/node-x11-y20 86T 72T 14T 83% +/dev/grid/node-x11-y21 92T 68T 24T 73% +/dev/grid/node-x11-y22 94T 71T 23T 75% +/dev/grid/node-x11-y23 85T 72T 13T 84% +/dev/grid/node-x11-y24 86T 68T 18T 79% +/dev/grid/node-x11-y25 88T 65T 23T 73% +/dev/grid/node-x11-y26 86T 64T 22T 74% +/dev/grid/node-x11-y27 87T 70T 17T 80% +/dev/grid/node-x12-y0 91T 73T 18T 80% +/dev/grid/node-x12-y1 86T 73T 13T 84% +/dev/grid/node-x12-y2 87T 65T 22T 74% +/dev/grid/node-x12-y3 85T 68T 17T 80% +/dev/grid/node-x12-y4 85T 68T 17T 80% +/dev/grid/node-x12-y5 89T 69T 20T 77% +/dev/grid/node-x12-y6 88T 67T 21T 76% +/dev/grid/node-x12-y7 93T 64T 29T 68% +/dev/grid/node-x12-y8 85T 67T 18T 78% +/dev/grid/node-x12-y9 92T 70T 22T 76% +/dev/grid/node-x12-y10 89T 68T 21T 76% +/dev/grid/node-x12-y11 91T 73T 18T 80% +/dev/grid/node-x12-y12 94T 66T 28T 70% +/dev/grid/node-x12-y13 85T 65T 20T 76% +/dev/grid/node-x12-y14 85T 67T 18T 78% +/dev/grid/node-x12-y15 85T 71T 14T 83% +/dev/grid/node-x12-y16 93T 69T 24T 74% +/dev/grid/node-x12-y17 94T 71T 23T 75% +/dev/grid/node-x12-y18 89T 73T 16T 82% +/dev/grid/node-x12-y19 93T 73T 20T 78% +/dev/grid/node-x12-y20 88T 67T 21T 76% +/dev/grid/node-x12-y21 87T 64T 23T 73% +/dev/grid/node-x12-y22 85T 73T 12T 85% +/dev/grid/node-x12-y23 93T 71T 22T 76% +/dev/grid/node-x12-y24 89T 67T 22T 75% +/dev/grid/node-x12-y25 93T 72T 21T 77% +/dev/grid/node-x12-y26 88T 68T 20T 77% +/dev/grid/node-x12-y27 90T 71T 19T 78% +/dev/grid/node-x13-y0 92T 64T 28T 69% +/dev/grid/node-x13-y1 90T 70T 20T 77% +/dev/grid/node-x13-y2 89T 64T 25T 71% +/dev/grid/node-x13-y3 93T 68T 25T 73% +/dev/grid/node-x13-y4 86T 65T 21T 75% +/dev/grid/node-x13-y5 91T 66T 25T 72% +/dev/grid/node-x13-y6 88T 71T 17T 80% +/dev/grid/node-x13-y7 85T 67T 18T 78% +/dev/grid/node-x13-y8 87T 64T 23T 73% +/dev/grid/node-x13-y9 94T 68T 26T 72% +/dev/grid/node-x13-y10 93T 73T 20T 78% +/dev/grid/node-x13-y11 91T 72T 19T 79% +/dev/grid/node-x13-y12 92T 68T 24T 73% +/dev/grid/node-x13-y13 87T 72T 15T 82% +/dev/grid/node-x13-y14 94T 73T 21T 77% +/dev/grid/node-x13-y15 88T 70T 18T 79% +/dev/grid/node-x13-y16 91T 69T 22T 75% +/dev/grid/node-x13-y17 85T 73T 12T 85% +/dev/grid/node-x13-y18 87T 73T 14T 83% +/dev/grid/node-x13-y19 507T 498T 9T 98% +/dev/grid/node-x13-y20 87T 70T 17T 80% +/dev/grid/node-x13-y21 86T 69T 17T 80% +/dev/grid/node-x13-y22 91T 73T 18T 80% +/dev/grid/node-x13-y23 94T 69T 25T 73% +/dev/grid/node-x13-y24 93T 68T 25T 73% +/dev/grid/node-x13-y25 88T 64T 24T 72% +/dev/grid/node-x13-y26 87T 68T 19T 78% +/dev/grid/node-x13-y27 86T 71T 15T 82% +/dev/grid/node-x14-y0 91T 73T 18T 80% +/dev/grid/node-x14-y1 88T 68T 20T 77% +/dev/grid/node-x14-y2 88T 70T 18T 79% +/dev/grid/node-x14-y3 85T 70T 15T 82% +/dev/grid/node-x14-y4 87T 69T 18T 79% +/dev/grid/node-x14-y5 88T 70T 18T 79% +/dev/grid/node-x14-y6 86T 67T 19T 77% +/dev/grid/node-x14-y7 86T 72T 14T 83% +/dev/grid/node-x14-y8 85T 66T 19T 77% +/dev/grid/node-x14-y9 91T 69T 22T 75% +/dev/grid/node-x14-y10 93T 68T 25T 73% +/dev/grid/node-x14-y11 92T 64T 28T 69% +/dev/grid/node-x14-y12 89T 64T 25T 71% +/dev/grid/node-x14-y13 90T 70T 20T 77% +/dev/grid/node-x14-y14 86T 66T 20T 76% +/dev/grid/node-x14-y15 92T 68T 24T 73% +/dev/grid/node-x14-y16 93T 65T 28T 69% +/dev/grid/node-x14-y17 88T 64T 24T 72% +/dev/grid/node-x14-y18 86T 68T 18T 79% +/dev/grid/node-x14-y19 505T 496T 9T 98% +/dev/grid/node-x14-y20 87T 70T 17T 80% +/dev/grid/node-x14-y21 93T 67T 26T 72% +/dev/grid/node-x14-y22 91T 70T 21T 76% +/dev/grid/node-x14-y23 93T 71T 22T 76% +/dev/grid/node-x14-y24 86T 71T 15T 82% +/dev/grid/node-x14-y25 85T 64T 21T 75% +/dev/grid/node-x14-y26 91T 71T 20T 78% +/dev/grid/node-x14-y27 88T 67T 21T 76% +/dev/grid/node-x15-y0 93T 69T 24T 74% +/dev/grid/node-x15-y1 91T 70T 21T 76% +/dev/grid/node-x15-y2 90T 72T 18T 80% +/dev/grid/node-x15-y3 87T 70T 17T 80% +/dev/grid/node-x15-y4 91T 69T 22T 75% +/dev/grid/node-x15-y5 87T 64T 23T 73% +/dev/grid/node-x15-y6 85T 67T 18T 78% +/dev/grid/node-x15-y7 94T 73T 21T 77% +/dev/grid/node-x15-y8 89T 71T 18T 79% +/dev/grid/node-x15-y9 94T 65T 29T 69% +/dev/grid/node-x15-y10 93T 73T 20T 78% +/dev/grid/node-x15-y11 87T 72T 15T 82% +/dev/grid/node-x15-y12 87T 69T 18T 79% +/dev/grid/node-x15-y13 93T 64T 29T 68% +/dev/grid/node-x15-y14 92T 64T 28T 69% +/dev/grid/node-x15-y15 86T 65T 21T 75% +/dev/grid/node-x15-y16 85T 65T 20T 76% +/dev/grid/node-x15-y17 93T 68T 25T 73% +/dev/grid/node-x15-y18 89T 73T 16T 82% +/dev/grid/node-x15-y19 505T 494T 11T 97% +/dev/grid/node-x15-y20 85T 72T 13T 84% +/dev/grid/node-x15-y21 93T 73T 20T 78% +/dev/grid/node-x15-y22 86T 72T 14T 83% +/dev/grid/node-x15-y23 85T 71T 14T 83% +/dev/grid/node-x15-y24 86T 65T 21T 75% +/dev/grid/node-x15-y25 85T 64T 21T 75% +/dev/grid/node-x15-y26 93T 72T 21T 77% +/dev/grid/node-x15-y27 87T 65T 22T 74% +/dev/grid/node-x16-y0 91T 68T 23T 74% +/dev/grid/node-x16-y1 87T 70T 17T 80% +/dev/grid/node-x16-y2 92T 73T 19T 79% +/dev/grid/node-x16-y3 88T 71T 17T 80% +/dev/grid/node-x16-y4 85T 65T 20T 76% +/dev/grid/node-x16-y5 91T 70T 21T 76% +/dev/grid/node-x16-y6 88T 67T 21T 76% +/dev/grid/node-x16-y7 94T 69T 25T 73% +/dev/grid/node-x16-y8 92T 64T 28T 69% +/dev/grid/node-x16-y9 88T 72T 16T 81% +/dev/grid/node-x16-y10 88T 70T 18T 79% +/dev/grid/node-x16-y11 89T 67T 22T 75% +/dev/grid/node-x16-y12 93T 65T 28T 69% +/dev/grid/node-x16-y13 87T 64T 23T 73% +/dev/grid/node-x16-y14 93T 68T 25T 73% +/dev/grid/node-x16-y15 90T 73T 17T 81% +/dev/grid/node-x16-y16 94T 71T 23T 75% +/dev/grid/node-x16-y17 85T 66T 19T 77% +/dev/grid/node-x16-y18 89T 69T 20T 77% +/dev/grid/node-x16-y19 502T 490T 12T 97% +/dev/grid/node-x16-y20 92T 69T 23T 75% +/dev/grid/node-x16-y21 86T 67T 19T 77% +/dev/grid/node-x16-y22 90T 64T 26T 71% +/dev/grid/node-x16-y23 90T 66T 24T 73% +/dev/grid/node-x16-y24 94T 65T 29T 69% +/dev/grid/node-x16-y25 89T 64T 25T 71% +/dev/grid/node-x16-y26 92T 72T 20T 78% +/dev/grid/node-x16-y27 85T 65T 20T 76% +/dev/grid/node-x17-y0 93T 68T 25T 73% +/dev/grid/node-x17-y1 87T 64T 23T 73% +/dev/grid/node-x17-y2 88T 66T 22T 75% +/dev/grid/node-x17-y3 90T 65T 25T 72% +/dev/grid/node-x17-y4 90T 65T 25T 72% +/dev/grid/node-x17-y5 87T 66T 21T 75% +/dev/grid/node-x17-y6 92T 65T 27T 70% +/dev/grid/node-x17-y7 93T 70T 23T 75% +/dev/grid/node-x17-y8 91T 72T 19T 79% +/dev/grid/node-x17-y9 88T 69T 19T 78% +/dev/grid/node-x17-y10 86T 68T 18T 79% +/dev/grid/node-x17-y11 90T 68T 22T 75% +/dev/grid/node-x17-y12 86T 69T 17T 80% +/dev/grid/node-x17-y13 90T 70T 20T 77% +/dev/grid/node-x17-y14 91T 66T 25T 72% +/dev/grid/node-x17-y15 87T 72T 15T 82% +/dev/grid/node-x17-y16 94T 64T 30T 68% +/dev/grid/node-x17-y17 94T 70T 24T 74% +/dev/grid/node-x17-y18 89T 68T 21T 76% +/dev/grid/node-x17-y19 501T 491T 10T 98% +/dev/grid/node-x17-y20 85T 66T 19T 77% +/dev/grid/node-x17-y21 92T 64T 28T 69% +/dev/grid/node-x17-y22 94T 67T 27T 71% +/dev/grid/node-x17-y23 90T 64T 26T 71% +/dev/grid/node-x17-y24 90T 66T 24T 73% +/dev/grid/node-x17-y25 92T 68T 24T 73% +/dev/grid/node-x17-y26 92T 73T 19T 79% +/dev/grid/node-x17-y27 88T 66T 22T 75% +/dev/grid/node-x18-y0 93T 64T 29T 68% +/dev/grid/node-x18-y1 94T 64T 30T 68% +/dev/grid/node-x18-y2 92T 70T 22T 76% +/dev/grid/node-x18-y3 86T 70T 16T 81% +/dev/grid/node-x18-y4 91T 64T 27T 70% +/dev/grid/node-x18-y5 89T 65T 24T 73% +/dev/grid/node-x18-y6 85T 71T 14T 83% +/dev/grid/node-x18-y7 89T 64T 25T 71% +/dev/grid/node-x18-y8 89T 67T 22T 75% +/dev/grid/node-x18-y9 94T 72T 22T 76% +/dev/grid/node-x18-y10 89T 73T 16T 82% +/dev/grid/node-x18-y11 90T 67T 23T 74% +/dev/grid/node-x18-y12 91T 70T 21T 76% +/dev/grid/node-x18-y13 90T 67T 23T 74% +/dev/grid/node-x18-y14 93T 73T 20T 78% +/dev/grid/node-x18-y15 88T 71T 17T 80% +/dev/grid/node-x18-y16 94T 70T 24T 74% +/dev/grid/node-x18-y17 89T 64T 25T 71% +/dev/grid/node-x18-y18 89T 66T 23T 74% +/dev/grid/node-x18-y19 502T 495T 7T 98% +/dev/grid/node-x18-y20 88T 69T 19T 78% +/dev/grid/node-x18-y21 93T 72T 21T 77% +/dev/grid/node-x18-y22 90T 71T 19T 78% +/dev/grid/node-x18-y23 90T 72T 18T 80% +/dev/grid/node-x18-y24 85T 67T 18T 78% +/dev/grid/node-x18-y25 87T 65T 22T 74% +/dev/grid/node-x18-y26 87T 72T 15T 82% +/dev/grid/node-x18-y27 93T 64T 29T 68% +/dev/grid/node-x19-y0 94T 73T 21T 77% +/dev/grid/node-x19-y1 93T 68T 25T 73% +/dev/grid/node-x19-y2 91T 67T 24T 73% +/dev/grid/node-x19-y3 91T 73T 18T 80% +/dev/grid/node-x19-y4 94T 70T 24T 74% +/dev/grid/node-x19-y5 87T 67T 20T 77% +/dev/grid/node-x19-y6 91T 64T 27T 70% +/dev/grid/node-x19-y7 88T 68T 20T 77% +/dev/grid/node-x19-y8 86T 72T 14T 83% +/dev/grid/node-x19-y9 86T 66T 20T 76% +/dev/grid/node-x19-y10 92T 71T 21T 77% +/dev/grid/node-x19-y11 93T 69T 24T 74% +/dev/grid/node-x19-y12 93T 73T 20T 78% +/dev/grid/node-x19-y13 93T 66T 27T 70% +/dev/grid/node-x19-y14 92T 72T 20T 78% +/dev/grid/node-x19-y15 92T 70T 22T 76% +/dev/grid/node-x19-y16 86T 73T 13T 84% +/dev/grid/node-x19-y17 85T 65T 20T 76% +/dev/grid/node-x19-y18 85T 68T 17T 80% +/dev/grid/node-x19-y19 508T 493T 15T 97% +/dev/grid/node-x19-y20 88T 69T 19T 78% +/dev/grid/node-x19-y21 94T 65T 29T 69% +/dev/grid/node-x19-y22 89T 68T 21T 76% +/dev/grid/node-x19-y23 89T 65T 24T 73% +/dev/grid/node-x19-y24 89T 64T 25T 71% +/dev/grid/node-x19-y25 85T 73T 12T 85% +/dev/grid/node-x19-y26 94T 69T 25T 73% +/dev/grid/node-x19-y27 92T 68T 24T 73% +/dev/grid/node-x20-y0 94T 67T 27T 71% +/dev/grid/node-x20-y1 87T 68T 19T 78% +/dev/grid/node-x20-y2 85T 68T 17T 80% +/dev/grid/node-x20-y3 92T 73T 19T 79% +/dev/grid/node-x20-y4 88T 73T 15T 82% +/dev/grid/node-x20-y5 94T 64T 30T 68% +/dev/grid/node-x20-y6 85T 65T 20T 76% +/dev/grid/node-x20-y7 89T 67T 22T 75% +/dev/grid/node-x20-y8 91T 69T 22T 75% +/dev/grid/node-x20-y9 94T 64T 30T 68% +/dev/grid/node-x20-y10 90T 72T 18T 80% +/dev/grid/node-x20-y11 94T 73T 21T 77% +/dev/grid/node-x20-y12 86T 69T 17T 80% +/dev/grid/node-x20-y13 86T 66T 20T 76% +/dev/grid/node-x20-y14 92T 73T 19T 79% +/dev/grid/node-x20-y15 87T 65T 22T 74% +/dev/grid/node-x20-y16 88T 72T 16T 81% +/dev/grid/node-x20-y17 88T 68T 20T 77% +/dev/grid/node-x20-y18 85T 65T 20T 76% +/dev/grid/node-x20-y19 503T 499T 4T 99% +/dev/grid/node-x20-y20 93T 70T 23T 75% +/dev/grid/node-x20-y21 89T 73T 16T 82% +/dev/grid/node-x20-y22 93T 73T 20T 78% +/dev/grid/node-x20-y23 87T 64T 23T 73% +/dev/grid/node-x20-y24 86T 67T 19T 77% +/dev/grid/node-x20-y25 93T 71T 22T 76% +/dev/grid/node-x20-y26 89T 65T 24T 73% +/dev/grid/node-x20-y27 89T 66T 23T 74% +/dev/grid/node-x21-y0 91T 64T 27T 70% +/dev/grid/node-x21-y1 87T 69T 18T 79% +/dev/grid/node-x21-y2 91T 70T 21T 76% +/dev/grid/node-x21-y3 92T 72T 20T 78% +/dev/grid/node-x21-y4 91T 68T 23T 74% +/dev/grid/node-x21-y5 85T 72T 13T 84% +/dev/grid/node-x21-y6 87T 72T 15T 82% +/dev/grid/node-x21-y7 92T 69T 23T 75% +/dev/grid/node-x21-y8 90T 71T 19T 78% +/dev/grid/node-x21-y9 85T 67T 18T 78% +/dev/grid/node-x21-y10 85T 65T 20T 76% +/dev/grid/node-x21-y11 94T 69T 25T 73% +/dev/grid/node-x21-y12 86T 67T 19T 77% +/dev/grid/node-x21-y13 94T 68T 26T 72% +/dev/grid/node-x21-y14 88T 64T 24T 72% +/dev/grid/node-x21-y15 91T 64T 27T 70% +/dev/grid/node-x21-y16 90T 71T 19T 78% +/dev/grid/node-x21-y17 87T 66T 21T 75% +/dev/grid/node-x21-y18 89T 72T 17T 80% +/dev/grid/node-x21-y19 504T 490T 14T 97% +/dev/grid/node-x21-y20 85T 65T 20T 76% +/dev/grid/node-x21-y21 86T 66T 20T 76% +/dev/grid/node-x21-y22 89T 72T 17T 80% +/dev/grid/node-x21-y23 94T 65T 29T 69% +/dev/grid/node-x21-y24 89T 69T 20T 77% +/dev/grid/node-x21-y25 91T 69T 22T 75% +/dev/grid/node-x21-y26 92T 69T 23T 75% +/dev/grid/node-x21-y27 94T 69T 25T 73% +/dev/grid/node-x22-y0 91T 73T 18T 80% +/dev/grid/node-x22-y1 91T 64T 27T 70% +/dev/grid/node-x22-y2 85T 64T 21T 75% +/dev/grid/node-x22-y3 85T 69T 16T 81% +/dev/grid/node-x22-y4 92T 64T 28T 69% +/dev/grid/node-x22-y5 86T 69T 17T 80% +/dev/grid/node-x22-y6 94T 70T 24T 74% +/dev/grid/node-x22-y7 91T 72T 19T 79% +/dev/grid/node-x22-y8 87T 70T 17T 80% +/dev/grid/node-x22-y9 90T 69T 21T 76% +/dev/grid/node-x22-y10 90T 64T 26T 71% +/dev/grid/node-x22-y11 85T 67T 18T 78% +/dev/grid/node-x22-y12 86T 72T 14T 83% +/dev/grid/node-x22-y13 85T 71T 14T 83% +/dev/grid/node-x22-y14 93T 70T 23T 75% +/dev/grid/node-x22-y15 92T 69T 23T 75% +/dev/grid/node-x22-y16 87T 69T 18T 79% +/dev/grid/node-x22-y17 91T 71T 20T 78% +/dev/grid/node-x22-y18 85T 66T 19T 77% +/dev/grid/node-x22-y19 507T 493T 14T 97% +/dev/grid/node-x22-y20 90T 69T 21T 76% +/dev/grid/node-x22-y21 91T 71T 20T 78% +/dev/grid/node-x22-y22 85T 66T 19T 77% +/dev/grid/node-x22-y23 87T 69T 18T 79% +/dev/grid/node-x22-y24 94T 66T 28T 70% +/dev/grid/node-x22-y25 87T 65T 22T 74% +/dev/grid/node-x22-y26 91T 66T 25T 72% +/dev/grid/node-x22-y27 92T 73T 19T 79% +/dev/grid/node-x23-y0 91T 65T 26T 71% +/dev/grid/node-x23-y1 88T 70T 18T 79% +/dev/grid/node-x23-y2 90T 66T 24T 73% +/dev/grid/node-x23-y3 85T 65T 20T 76% +/dev/grid/node-x23-y4 85T 70T 15T 82% +/dev/grid/node-x23-y5 90T 67T 23T 74% +/dev/grid/node-x23-y6 89T 72T 17T 80% +/dev/grid/node-x23-y7 92T 68T 24T 73% +/dev/grid/node-x23-y8 85T 71T 14T 83% +/dev/grid/node-x23-y9 85T 64T 21T 75% +/dev/grid/node-x23-y10 93T 66T 27T 70% +/dev/grid/node-x23-y11 92T 73T 19T 79% +/dev/grid/node-x23-y12 87T 69T 18T 79% +/dev/grid/node-x23-y13 91T 64T 27T 70% +/dev/grid/node-x23-y14 87T 68T 19T 78% +/dev/grid/node-x23-y15 91T 65T 26T 71% +/dev/grid/node-x23-y16 86T 70T 16T 81% +/dev/grid/node-x23-y17 88T 70T 18T 79% +/dev/grid/node-x23-y18 87T 70T 17T 80% +/dev/grid/node-x23-y19 503T 495T 8T 98% +/dev/grid/node-x23-y20 89T 69T 20T 77% +/dev/grid/node-x23-y21 91T 68T 23T 74% +/dev/grid/node-x23-y22 92T 64T 28T 69% +/dev/grid/node-x23-y23 87T 73T 14T 83% +/dev/grid/node-x23-y24 89T 69T 20T 77% +/dev/grid/node-x23-y25 86T 64T 22T 74% +/dev/grid/node-x23-y26 89T 67T 22T 75% +/dev/grid/node-x23-y27 91T 65T 26T 71% +/dev/grid/node-x24-y0 87T 65T 22T 74% +/dev/grid/node-x24-y1 89T 66T 23T 74% +/dev/grid/node-x24-y2 93T 68T 25T 73% +/dev/grid/node-x24-y3 93T 68T 25T 73% +/dev/grid/node-x24-y4 88T 65T 23T 73% +/dev/grid/node-x24-y5 87T 66T 21T 75% +/dev/grid/node-x24-y6 93T 70T 23T 75% +/dev/grid/node-x24-y7 93T 67T 26T 72% +/dev/grid/node-x24-y8 87T 71T 16T 81% +/dev/grid/node-x24-y9 86T 69T 17T 80% +/dev/grid/node-x24-y10 93T 64T 29T 68% +/dev/grid/node-x24-y11 85T 69T 16T 81% +/dev/grid/node-x24-y12 91T 69T 22T 75% +/dev/grid/node-x24-y13 86T 67T 19T 77% +/dev/grid/node-x24-y14 92T 69T 23T 75% +/dev/grid/node-x24-y15 88T 73T 15T 82% +/dev/grid/node-x24-y16 86T 67T 19T 77% +/dev/grid/node-x24-y17 92T 69T 23T 75% +/dev/grid/node-x24-y18 88T 70T 18T 79% +/dev/grid/node-x24-y19 505T 491T 14T 97% +/dev/grid/node-x24-y20 92T 73T 19T 79% +/dev/grid/node-x24-y21 86T 73T 13T 84% +/dev/grid/node-x24-y22 94T 67T 27T 71% +/dev/grid/node-x24-y23 86T 65T 21T 75% +/dev/grid/node-x24-y24 88T 72T 16T 81% +/dev/grid/node-x24-y25 86T 66T 20T 76% +/dev/grid/node-x24-y26 93T 65T 28T 69% +/dev/grid/node-x24-y27 89T 69T 20T 77% +/dev/grid/node-x25-y0 91T 72T 19T 79% +/dev/grid/node-x25-y1 89T 68T 21T 76% +/dev/grid/node-x25-y2 87T 66T 21T 75% +/dev/grid/node-x25-y3 85T 66T 19T 77% +/dev/grid/node-x25-y4 86T 67T 19T 77% +/dev/grid/node-x25-y5 89T 72T 17T 80% +/dev/grid/node-x25-y6 94T 66T 28T 70% +/dev/grid/node-x25-y7 87T 64T 23T 73% +/dev/grid/node-x25-y8 86T 66T 20T 76% +/dev/grid/node-x25-y9 87T 73T 14T 83% +/dev/grid/node-x25-y10 92T 72T 20T 78% +/dev/grid/node-x25-y11 94T 64T 30T 68% +/dev/grid/node-x25-y12 85T 68T 17T 80% +/dev/grid/node-x25-y13 87T 65T 22T 74% +/dev/grid/node-x25-y14 90T 72T 18T 80% +/dev/grid/node-x25-y15 91T 64T 27T 70% +/dev/grid/node-x25-y16 86T 65T 21T 75% +/dev/grid/node-x25-y17 92T 68T 24T 73% +/dev/grid/node-x25-y18 89T 71T 18T 79% +/dev/grid/node-x25-y19 508T 491T 17T 96% +/dev/grid/node-x25-y20 92T 64T 28T 69% +/dev/grid/node-x25-y21 86T 68T 18T 79% +/dev/grid/node-x25-y22 94T 70T 24T 74% +/dev/grid/node-x25-y23 90T 73T 17T 81% +/dev/grid/node-x25-y24 92T 72T 20T 78% +/dev/grid/node-x25-y25 90T 67T 23T 74% +/dev/grid/node-x25-y26 87T 70T 17T 80% +/dev/grid/node-x25-y27 94T 66T 28T 70% +/dev/grid/node-x26-y0 93T 72T 21T 77% +/dev/grid/node-x26-y1 88T 72T 16T 81% +/dev/grid/node-x26-y2 86T 64T 22T 74% +/dev/grid/node-x26-y3 90T 66T 24T 73% +/dev/grid/node-x26-y4 91T 66T 25T 72% +/dev/grid/node-x26-y5 93T 72T 21T 77% +/dev/grid/node-x26-y6 87T 64T 23T 73% +/dev/grid/node-x26-y7 85T 73T 12T 85% +/dev/grid/node-x26-y8 87T 71T 16T 81% +/dev/grid/node-x26-y9 90T 71T 19T 78% +/dev/grid/node-x26-y10 86T 66T 20T 76% +/dev/grid/node-x26-y11 88T 67T 21T 76% +/dev/grid/node-x26-y12 89T 70T 19T 78% +/dev/grid/node-x26-y13 88T 70T 18T 79% +/dev/grid/node-x26-y14 90T 69T 21T 76% +/dev/grid/node-x26-y15 87T 69T 18T 79% +/dev/grid/node-x26-y16 92T 64T 28T 69% +/dev/grid/node-x26-y17 93T 68T 25T 73% +/dev/grid/node-x26-y18 90T 67T 23T 74% +/dev/grid/node-x26-y19 501T 499T 2T 99% +/dev/grid/node-x26-y20 86T 69T 17T 80% +/dev/grid/node-x26-y21 88T 64T 24T 72% +/dev/grid/node-x26-y22 85T 68T 17T 80% +/dev/grid/node-x26-y23 86T 69T 17T 80% +/dev/grid/node-x26-y24 93T 69T 24T 74% +/dev/grid/node-x26-y25 90T 72T 18T 80% +/dev/grid/node-x26-y26 93T 71T 22T 76% +/dev/grid/node-x26-y27 85T 71T 14T 83% +/dev/grid/node-x27-y0 85T 73T 12T 85% +/dev/grid/node-x27-y1 89T 67T 22T 75% +/dev/grid/node-x27-y2 88T 72T 16T 81% +/dev/grid/node-x27-y3 88T 70T 18T 79% +/dev/grid/node-x27-y4 93T 65T 28T 69% +/dev/grid/node-x27-y5 93T 66T 27T 70% +/dev/grid/node-x27-y6 89T 69T 20T 77% +/dev/grid/node-x27-y7 94T 64T 30T 68% +/dev/grid/node-x27-y8 88T 64T 24T 72% +/dev/grid/node-x27-y9 89T 67T 22T 75% +/dev/grid/node-x27-y10 89T 72T 17T 80% +/dev/grid/node-x27-y11 94T 67T 27T 71% +/dev/grid/node-x27-y12 90T 68T 22T 75% +/dev/grid/node-x27-y13 86T 68T 18T 79% +/dev/grid/node-x27-y14 89T 69T 20T 77% +/dev/grid/node-x27-y15 86T 70T 16T 81% +/dev/grid/node-x27-y16 93T 70T 23T 75% +/dev/grid/node-x27-y17 90T 66T 24T 73% +/dev/grid/node-x27-y18 86T 65T 21T 75% +/dev/grid/node-x27-y19 502T 493T 9T 98% +/dev/grid/node-x27-y20 89T 69T 20T 77% +/dev/grid/node-x27-y21 94T 70T 24T 74% +/dev/grid/node-x27-y22 91T 70T 21T 76% +/dev/grid/node-x27-y23 86T 69T 17T 80% +/dev/grid/node-x27-y24 87T 66T 21T 75% +/dev/grid/node-x27-y25 85T 64T 21T 75% +/dev/grid/node-x27-y26 85T 65T 20T 76% +/dev/grid/node-x27-y27 91T 69T 22T 75% +/dev/grid/node-x28-y0 86T 67T 19T 77% +/dev/grid/node-x28-y1 93T 67T 26T 72% +/dev/grid/node-x28-y2 88T 67T 21T 76% +/dev/grid/node-x28-y3 87T 67T 20T 77% +/dev/grid/node-x28-y4 85T 65T 20T 76% +/dev/grid/node-x28-y5 91T 73T 18T 80% +/dev/grid/node-x28-y6 88T 66T 22T 75% +/dev/grid/node-x28-y7 86T 66T 20T 76% +/dev/grid/node-x28-y8 88T 68T 20T 77% +/dev/grid/node-x28-y9 91T 68T 23T 74% +/dev/grid/node-x28-y10 91T 66T 25T 72% +/dev/grid/node-x28-y11 85T 73T 12T 85% +/dev/grid/node-x28-y12 86T 71T 15T 82% +/dev/grid/node-x28-y13 85T 71T 14T 83% +/dev/grid/node-x28-y14 85T 64T 21T 75% +/dev/grid/node-x28-y15 92T 68T 24T 73% +/dev/grid/node-x28-y16 85T 73T 12T 85% +/dev/grid/node-x28-y17 87T 71T 16T 81% +/dev/grid/node-x28-y18 85T 68T 17T 80% +/dev/grid/node-x28-y19 504T 491T 13T 97% +/dev/grid/node-x28-y20 88T 71T 17T 80% +/dev/grid/node-x28-y21 92T 64T 28T 69% +/dev/grid/node-x28-y22 86T 69T 17T 80% +/dev/grid/node-x28-y23 85T 70T 15T 82% +/dev/grid/node-x28-y24 92T 71T 21T 77% +/dev/grid/node-x28-y25 86T 64T 22T 74% +/dev/grid/node-x28-y26 90T 66T 24T 73% +/dev/grid/node-x28-y27 92T 64T 28T 69% +/dev/grid/node-x29-y0 93T 72T 21T 77% +/dev/grid/node-x29-y1 93T 72T 21T 77% +/dev/grid/node-x29-y2 86T 72T 14T 83% +/dev/grid/node-x29-y3 88T 71T 17T 80% +/dev/grid/node-x29-y4 93T 64T 29T 68% +/dev/grid/node-x29-y5 92T 73T 19T 79% +/dev/grid/node-x29-y6 87T 69T 18T 79% +/dev/grid/node-x29-y7 86T 69T 17T 80% +/dev/grid/node-x29-y8 90T 68T 22T 75% +/dev/grid/node-x29-y9 88T 64T 24T 72% +/dev/grid/node-x29-y10 93T 65T 28T 69% +/dev/grid/node-x29-y11 94T 70T 24T 74% +/dev/grid/node-x29-y12 88T 72T 16T 81% +/dev/grid/node-x29-y13 90T 65T 25T 72% +/dev/grid/node-x29-y14 90T 70T 20T 77% +/dev/grid/node-x29-y15 94T 65T 29T 69% +/dev/grid/node-x29-y16 90T 73T 17T 81% +/dev/grid/node-x29-y17 94T 66T 28T 70% +/dev/grid/node-x29-y18 90T 64T 26T 71% +/dev/grid/node-x29-y19 507T 495T 12T 97% +/dev/grid/node-x29-y20 92T 67T 25T 72% +/dev/grid/node-x29-y21 93T 69T 24T 74% +/dev/grid/node-x29-y22 93T 71T 22T 76% +/dev/grid/node-x29-y23 93T 69T 24T 74% +/dev/grid/node-x29-y24 85T 66T 19T 77% +/dev/grid/node-x29-y25 91T 70T 21T 76% +/dev/grid/node-x29-y26 91T 65T 26T 71% +/dev/grid/node-x29-y27 91T 69T 22T 75% +/dev/grid/node-x30-y0 91T 64T 27T 70% +/dev/grid/node-x30-y1 85T 65T 20T 76% +/dev/grid/node-x30-y2 91T 64T 27T 70% +/dev/grid/node-x30-y3 94T 73T 21T 77% +/dev/grid/node-x30-y4 85T 69T 16T 81% +/dev/grid/node-x30-y5 91T 73T 18T 80% +/dev/grid/node-x30-y6 86T 67T 19T 77% +/dev/grid/node-x30-y7 92T 73T 19T 79% +/dev/grid/node-x30-y8 86T 70T 16T 81% +/dev/grid/node-x30-y9 91T 71T 20T 78% +/dev/grid/node-x30-y10 89T 66T 23T 74% +/dev/grid/node-x30-y11 90T 67T 23T 74% +/dev/grid/node-x30-y12 88T 70T 18T 79% +/dev/grid/node-x30-y13 85T 64T 21T 75% +/dev/grid/node-x30-y14 91T 65T 26T 71% +/dev/grid/node-x30-y15 94T 69T 25T 73% +/dev/grid/node-x30-y16 87T 65T 22T 74% +/dev/grid/node-x30-y17 93T 70T 23T 75% +/dev/grid/node-x30-y18 94T 71T 23T 75% +/dev/grid/node-x30-y19 508T 498T 10T 98% +/dev/grid/node-x30-y20 94T 65T 29T 69% +/dev/grid/node-x30-y21 85T 70T 15T 82% +/dev/grid/node-x30-y22 91T 71T 20T 78% +/dev/grid/node-x30-y23 88T 67T 21T 76% +/dev/grid/node-x30-y24 90T 65T 25T 72% +/dev/grid/node-x30-y25 91T 67T 24T 73% +/dev/grid/node-x30-y26 93T 69T 24T 74% +/dev/grid/node-x30-y27 87T 72T 15T 82% +/dev/grid/node-x31-y0 91T 68T 23T 74% +/dev/grid/node-x31-y1 86T 67T 19T 77% +/dev/grid/node-x31-y2 85T 64T 21T 75% +/dev/grid/node-x31-y3 86T 65T 21T 75% +/dev/grid/node-x31-y4 87T 70T 17T 80% +/dev/grid/node-x31-y5 87T 71T 16T 81% +/dev/grid/node-x31-y6 91T 69T 22T 75% +/dev/grid/node-x31-y7 85T 64T 21T 75% +/dev/grid/node-x31-y8 89T 65T 24T 73% +/dev/grid/node-x31-y9 93T 67T 26T 72% +/dev/grid/node-x31-y10 87T 72T 15T 82% +/dev/grid/node-x31-y11 92T 69T 23T 75% +/dev/grid/node-x31-y12 94T 66T 28T 70% +/dev/grid/node-x31-y13 91T 65T 26T 71% +/dev/grid/node-x31-y14 89T 67T 22T 75% +/dev/grid/node-x31-y15 91T 70T 21T 76% +/dev/grid/node-x31-y16 87T 70T 17T 80% +/dev/grid/node-x31-y17 87T 67T 20T 77% +/dev/grid/node-x31-y18 92T 71T 21T 77% +/dev/grid/node-x31-y19 509T 496T 13T 97% +/dev/grid/node-x31-y20 94T 66T 28T 70% +/dev/grid/node-x31-y21 90T 67T 23T 74% +/dev/grid/node-x31-y22 88T 69T 19T 78% +/dev/grid/node-x31-y23 87T 65T 22T 74% +/dev/grid/node-x31-y24 94T 73T 21T 77% +/dev/grid/node-x31-y25 93T 70T 23T 75% +/dev/grid/node-x31-y26 93T 66T 27T 70% +/dev/grid/node-x31-y27 86T 66T 20T 76% +/dev/grid/node-x32-y0 88T 72T 16T 81% +/dev/grid/node-x32-y1 92T 70T 22T 76% +/dev/grid/node-x32-y2 93T 67T 26T 72% +/dev/grid/node-x32-y3 89T 73T 16T 82% +/dev/grid/node-x32-y4 94T 68T 26T 72% +/dev/grid/node-x32-y5 86T 72T 14T 83% +/dev/grid/node-x32-y6 88T 71T 17T 80% +/dev/grid/node-x32-y7 87T 66T 21T 75% +/dev/grid/node-x32-y8 87T 64T 23T 73% +/dev/grid/node-x32-y9 88T 67T 21T 76% +/dev/grid/node-x32-y10 91T 67T 24T 73% +/dev/grid/node-x32-y11 94T 66T 28T 70% +/dev/grid/node-x32-y12 86T 66T 20T 76% +/dev/grid/node-x32-y13 94T 71T 23T 75% +/dev/grid/node-x32-y14 87T 67T 20T 77% +/dev/grid/node-x32-y15 94T 73T 21T 77% +/dev/grid/node-x32-y16 87T 67T 20T 77% +/dev/grid/node-x32-y17 88T 68T 20T 77% +/dev/grid/node-x32-y18 85T 65T 20T 76% +/dev/grid/node-x32-y19 506T 494T 12T 97% +/dev/grid/node-x32-y20 94T 64T 30T 68% +/dev/grid/node-x32-y21 91T 68T 23T 74% +/dev/grid/node-x32-y22 94T 66T 28T 70% +/dev/grid/node-x32-y23 86T 72T 14T 83% +/dev/grid/node-x32-y24 87T 67T 20T 77% +/dev/grid/node-x32-y25 91T 65T 26T 71% +/dev/grid/node-x32-y26 85T 71T 14T 83% +/dev/grid/node-x32-y27 93T 67T 26T 72% +/dev/grid/node-x33-y0 87T 72T 15T 82% +/dev/grid/node-x33-y1 86T 65T 21T 75% +/dev/grid/node-x33-y2 93T 70T 23T 75% +/dev/grid/node-x33-y3 85T 67T 18T 78% +/dev/grid/node-x33-y4 89T 67T 22T 75% +/dev/grid/node-x33-y5 91T 70T 21T 76% +/dev/grid/node-x33-y6 89T 67T 22T 75% +/dev/grid/node-x33-y7 86T 68T 18T 79% +/dev/grid/node-x33-y8 91T 72T 19T 79% +/dev/grid/node-x33-y9 86T 72T 14T 83% +/dev/grid/node-x33-y10 86T 68T 18T 79% +/dev/grid/node-x33-y11 91T 72T 19T 79% +/dev/grid/node-x33-y12 93T 69T 24T 74% +/dev/grid/node-x33-y13 87T 71T 16T 81% +/dev/grid/node-x33-y14 88T 70T 18T 79% +/dev/grid/node-x33-y15 86T 73T 13T 84% +/dev/grid/node-x33-y16 90T 72T 18T 80% +/dev/grid/node-x33-y17 86T 70T 16T 81% +/dev/grid/node-x33-y18 90T 64T 26T 71% +/dev/grid/node-x33-y19 509T 496T 13T 97% +/dev/grid/node-x33-y20 89T 69T 20T 77% +/dev/grid/node-x33-y21 94T 69T 25T 73% +/dev/grid/node-x33-y22 90T 66T 24T 73% +/dev/grid/node-x33-y23 85T 73T 12T 85% +/dev/grid/node-x33-y24 92T 68T 24T 73% +/dev/grid/node-x33-y25 89T 65T 24T 73% +/dev/grid/node-x33-y26 90T 68T 22T 75% +/dev/grid/node-x33-y27 93T 70T 23T 75% +/dev/grid/node-x34-y0 86T 66T 20T 76% +/dev/grid/node-x34-y1 92T 64T 28T 69% +/dev/grid/node-x34-y2 90T 69T 21T 76% +/dev/grid/node-x34-y3 91T 73T 18T 80% +/dev/grid/node-x34-y4 90T 70T 20T 77% +/dev/grid/node-x34-y5 86T 68T 18T 79% +/dev/grid/node-x34-y6 87T 72T 15T 82% +/dev/grid/node-x34-y7 92T 72T 20T 78% +/dev/grid/node-x34-y8 86T 64T 22T 74% +/dev/grid/node-x34-y9 88T 65T 23T 73% +/dev/grid/node-x34-y10 88T 72T 16T 81% +/dev/grid/node-x34-y11 93T 69T 24T 74% +/dev/grid/node-x34-y12 87T 73T 14T 83% +/dev/grid/node-x34-y13 88T 72T 16T 81% +/dev/grid/node-x34-y14 93T 69T 24T 74% +/dev/grid/node-x34-y15 88T 68T 20T 77% +/dev/grid/node-x34-y16 89T 66T 23T 74% +/dev/grid/node-x34-y17 92T 66T 26T 71% +/dev/grid/node-x34-y18 94T 70T 24T 74% +/dev/grid/node-x34-y19 506T 496T 10T 98% +/dev/grid/node-x34-y20 85T 72T 13T 84% +/dev/grid/node-x34-y21 89T 70T 19T 78% +/dev/grid/node-x34-y22 92T 65T 27T 70% +/dev/grid/node-x34-y23 87T 64T 23T 73% +/dev/grid/node-x34-y24 89T 71T 18T 79% +/dev/grid/node-x34-y25 90T 73T 17T 81% +/dev/grid/node-x34-y26 87T 70T 17T 80% +/dev/grid/node-x34-y27 91T 67T 24T 73% +/dev/grid/node-x35-y0 86T 70T 16T 81% +/dev/grid/node-x35-y1 91T 67T 24T 73% +/dev/grid/node-x35-y2 86T 66T 20T 76% +/dev/grid/node-x35-y3 92T 72T 20T 78% +/dev/grid/node-x35-y4 90T 73T 17T 81% +/dev/grid/node-x35-y5 86T 69T 17T 80% +/dev/grid/node-x35-y6 91T 69T 22T 75% +/dev/grid/node-x35-y7 94T 73T 21T 77% +/dev/grid/node-x35-y8 89T 68T 21T 76% +/dev/grid/node-x35-y9 86T 64T 22T 74% +/dev/grid/node-x35-y10 92T 68T 24T 73% +/dev/grid/node-x35-y11 89T 64T 25T 71% +/dev/grid/node-x35-y12 91T 70T 21T 76% +/dev/grid/node-x35-y13 88T 68T 20T 77% +/dev/grid/node-x35-y14 92T 69T 23T 75% +/dev/grid/node-x35-y15 88T 66T 22T 75% +/dev/grid/node-x35-y16 91T 66T 25T 72% +/dev/grid/node-x35-y17 88T 65T 23T 73% +/dev/grid/node-x35-y18 93T 72T 21T 77% +/dev/grid/node-x35-y19 501T 491T 10T 98% +/dev/grid/node-x35-y20 85T 67T 18T 78% +/dev/grid/node-x35-y21 90T 65T 25T 72% +/dev/grid/node-x35-y22 87T 71T 16T 81% +/dev/grid/node-x35-y23 87T 70T 17T 80% +/dev/grid/node-x35-y24 89T 0T 89T 0% +/dev/grid/node-x35-y25 87T 68T 19T 78% +/dev/grid/node-x35-y26 87T 67T 20T 77% +/dev/grid/node-x35-y27 90T 71T 19T 78% +/dev/grid/node-x36-y0 85T 68T 17T 80% +/dev/grid/node-x36-y1 85T 65T 20T 76% +/dev/grid/node-x36-y2 90T 72T 18T 80% +/dev/grid/node-x36-y3 91T 65T 26T 71% +/dev/grid/node-x36-y4 92T 72T 20T 78% +/dev/grid/node-x36-y5 85T 66T 19T 77% +/dev/grid/node-x36-y6 87T 69T 18T 79% +/dev/grid/node-x36-y7 94T 73T 21T 77% +/dev/grid/node-x36-y8 85T 72T 13T 84% +/dev/grid/node-x36-y9 86T 69T 17T 80% +/dev/grid/node-x36-y10 90T 70T 20T 77% +/dev/grid/node-x36-y11 85T 72T 13T 84% +/dev/grid/node-x36-y12 86T 64T 22T 74% +/dev/grid/node-x36-y13 89T 68T 21T 76% +/dev/grid/node-x36-y14 85T 68T 17T 80% +/dev/grid/node-x36-y15 93T 71T 22T 76% +/dev/grid/node-x36-y16 85T 66T 19T 77% +/dev/grid/node-x36-y17 93T 72T 21T 77% +/dev/grid/node-x36-y18 94T 64T 30T 68% +/dev/grid/node-x36-y19 506T 499T 7T 98% +/dev/grid/node-x36-y20 86T 69T 17T 80% +/dev/grid/node-x36-y21 85T 68T 17T 80% +/dev/grid/node-x36-y22 91T 65T 26T 71% +/dev/grid/node-x36-y23 85T 73T 12T 85% +/dev/grid/node-x36-y24 85T 71T 14T 83% +/dev/grid/node-x36-y25 87T 67T 20T 77% +/dev/grid/node-x36-y26 85T 69T 16T 81% +/dev/grid/node-x36-y27 89T 65T 24T 73% +/dev/grid/node-x37-y0 85T 70T 15T 82% +/dev/grid/node-x37-y1 85T 73T 12T 85% +/dev/grid/node-x37-y2 94T 68T 26T 72% +/dev/grid/node-x37-y3 91T 64T 27T 70% +/dev/grid/node-x37-y4 89T 67T 22T 75% +/dev/grid/node-x37-y5 89T 66T 23T 74% +/dev/grid/node-x37-y6 93T 65T 28T 69% +/dev/grid/node-x37-y7 89T 64T 25T 71% +/dev/grid/node-x37-y8 94T 69T 25T 73% +/dev/grid/node-x37-y9 87T 72T 15T 82% +/dev/grid/node-x37-y10 93T 64T 29T 68% +/dev/grid/node-x37-y11 87T 72T 15T 82% +/dev/grid/node-x37-y12 89T 65T 24T 73% +/dev/grid/node-x37-y13 91T 64T 27T 70% +/dev/grid/node-x37-y14 87T 65T 22T 74% +/dev/grid/node-x37-y15 92T 67T 25T 72% +/dev/grid/node-x37-y16 89T 73T 16T 82% +/dev/grid/node-x37-y17 92T 64T 28T 69% +/dev/grid/node-x37-y18 88T 68T 20T 77% +/dev/grid/node-x37-y19 504T 495T 9T 98% +/dev/grid/node-x37-y20 93T 71T 22T 76% +/dev/grid/node-x37-y21 93T 67T 26T 72% +/dev/grid/node-x37-y22 87T 71T 16T 81% +/dev/grid/node-x37-y23 93T 65T 28T 69% +/dev/grid/node-x37-y24 89T 64T 25T 71% +/dev/grid/node-x37-y25 86T 65T 21T 75% +/dev/grid/node-x37-y26 93T 73T 20T 78% +/dev/grid/node-x37-y27 87T 66T 21T 75% diff --git a/src/main/resources/2016/day23.txt b/src/main/resources/2016/day23.txt new file mode 100644 index 00000000..87c4c7a7 --- /dev/null +++ b/src/main/resources/2016/day23.txt @@ -0,0 +1,26 @@ +cpy a b +dec b +cpy a d +cpy 0 a +cpy b c +inc a +dec c +jnz c -2 +dec d +jnz d -5 +dec b +cpy b c +cpy c d +dec d +inc c +jnz d -2 +tgl c +cpy -16 c +jnz 1 c +cpy 95 c +jnz 73 d +inc a +inc d +jnz d -2 +inc c +jnz c -5 diff --git a/src/main/resources/2016/day24.txt b/src/main/resources/2016/day24.txt new file mode 100644 index 00000000..619879b0 --- /dev/null +++ b/src/main/resources/2016/day24.txt @@ -0,0 +1,39 @@ +################################################################################################################################################################################### +#.#.........#.#.....#.#.#.#.#.........#...#.......#.....#.#.....#...#.......#.#...#.#.....#...#.....#.................#.#...#.....#.....#.....#.............#.........#.#.....#0#.# +#.###.#.#.#.#.#.#.#.#.#.#.#.#####.#.#.#.#.#.###.#.#.###.#.#.#.#.#.###.#.#.#.#.#.#.#.#.#.#.#.#.#.#.###.#.#.#.#.###.#.#.#.#.#.#.#.###.#.#.#.#.#####.#####.#.#.#.#.#.#.#.#.###.#.#.#.# +#.......#.......#.#...#.....#...#.#...#...#.....#2#.#...#.#.....#...#...#.......#...#...#.....#.#.#.....#...#.#.....#.........#.#.#.....#.......#...#.....#.......#.....#...#...#.# +#.###.#.#.#.###.#####.#.#.#.###.#.###.#.#.###.#.#####.#.#####.#.#.#.#########.#.#.#######.###.#.#.#.#.#.###.#.#.#.#.###.#.#.#.#.#.#.#.###.###.#.#.###.#####.#.#.#####.#.###.#.#.#.# +#.....#...........#...#.......................#...........#.#...#.#.#.#.....#.#...#...#.#...#.#.........#...#.....#...#...#.....#.....#.....#...#.....#.#...#...........#.....#.#.# +#####.###.#########.###.#.#########.###.###.#.#####.#####.#.#.#####.#.#.#.###.#.#.#.#.#.###.#.###########.#.#.#.#.#.#####.#######.###.#.###.#.###.#####.#.#.#####.#.#.###.###.#.#.# +#...#.#1..#...........#.#.....#...#.#.....#...#...#...........#...#.......#...............#...#.......#.....#.....#.#...#.....#...#.#.#.......#.......#.............#...........#.# +#.#.#.#.###.#.#.#.#.###.#.#.#.#.#.#.#.###.#.#.#.#.#.#.#.#####.#####.###.#.#.#######.#####.###.#.###.#.#.###.#.#.###.#.#.#.#.#.#.###.#.#.###.#.#.#.#.#.#.#.#.#.###.#######.#.####### +#...#...#...#.....#...#...........#...#.#...#...#.#.#.#...#...#...#...#.#...#.#.......#...#...#.#.....#.#.....#.....#.....#.....#.#.#...#...#.#.....#.....#.....#.......#.#.#.....# +#.#.#.#.###.#.#####.#.#.#.#.#####.#.#.#.#.###.#.#.#.#.#####.#.#.#.#.#.#.###.#.#.#.#.#.#####.#.#.#.#.###.###.#.###.###.###.#.#.#.#.#.###.###.#.###.#.#.###.#.###.#.#.###.#.###.#.### +#...#...#...#...........#.........#.#.#.#.....#.#.#.#.#.........#.....#.#.......#.#.#...#.....#...#...#.......#.#.....#.#.....#.......#...#.#.#...#.#.#...#.#...#.#...#.#.#...#.#.# +#.###.###.#.#.#.#.#.###.#.#.#.#.#.#.#.#.###.#.#####.#.#.#.#.#####.#.#.#.#.#.###.#.#.###.###.###.#######.#.#####.###.#.#.#.###.#.#.###.#.#.#.#.#.#.#.###.#.###.#.#.#.#####.#.#.#.#.# +#...#.#...#.#.#.............#.......#.#...............#.#.#.....#...#.#...#.....#...#...................#.....#.#.#.....#.........#...#.#...#.......#...#...#...#.#.......#.....#.# +###.#.#.#.#.#.#######.#.#.#.#.#.###.#####.###.#.#.###.#.###.###.#.#.#.#.#.#.#########.###.#.#.###.#.#.#.#.#.#.#.#.#.###.###########.#.#.#####.#.#####.#.#.#.###.#.#.###.#.###.#.#.# +#...#.....#...#...#...#.#...#.....#.#.......#.....#...#...#.#.....#...#...#...#.......#.............#.....#...#.....#.......#.....#.#.#.......#.....#...#.....#...#.....#.#...#...# +#.#.#####.#########.#.#.#.#.###########.###.###.#.#.#.#.#.#.#####.#.###.#.#.###.#####.#.#.#####.###.#.#.###.#.#.###.#.###.#.#.#.###.#.#.#.#####.#.#.#.#.#.#.#.#.#.#.#####.#.#.#.### +#.........#.#...........#.#.#...#.#.....#.....#...........#.#.....#.....#...#.#...#.#.......#...#.#.......#.....#...#...#...#.......#.#.......#.#.....#...#...#.#.#.#4........#...# +#.###.#.###.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#############.#.#.#######.#.#.#.#.###.#.#.#####.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.###.###.#.#.###.#.#.#.#.#.#.#.#.#.#.#.###.#.#####.#.# +#3........#...#...#.#.#.#...#...#.....#...#.#...#...#.#.#.#...#.....#.#.#.#.............#.........#.#.....#.....#.#.............#.#.#.#...#...#...#.#.............#.#...#.....#...# +###.###.#.#.###.###.###.#.#####.#####.#####.#.#.#.#.#.#.###.#.#.#.#.#.#####.###.###.#.###.#.#.#.#.#.#.#.###.#.###.###########.###.#.#.#.#.#.#.#.#####.###.#.#.#.#.#.###.###.#.#.#.# +#...#.......#.#.#...............#.........#...#.....#.#...........#.#.........#.....#.........#...#...#.........#.......#.......#.........#.....#.#...#...#.#.#.....#.............# +#.#.###.#####.###.###.#.###.#.###.#.#.###.###.#.#####.#######.###.#.#.###.#####.#.#.#.#.#.#.###.#.#####.#.#.#######.#.#.###.###.#.#.###.#.###.#.#.###.#############.#.###.#.#####.# +#.#.#...#...#.#...#.#...#...#.....#.#.........#.......#.............#.#...#.........#.#.....#.....#.....#...#.....#...#...#.....#...#...#.........#...#.....#.........#...#.....#.# +#.#####.#.#.#.#.#.#.#.#.#.#.#.#####.#.#.#.#.###.#.###.#.#.###.###.#.###.#.#.#.#.###.#.#####.###.#.###.#########.#.#.#####.#.#.#.#.#.###.###.###.#.#.#.#.###.#.#.#.#.###.#.#.#.#.#.# +#.................#...#...#.#...........#.#.#.......#.......#...#.#...#...#.#...#.#.#.......#.#.#...#...........#.............#.#...#...#.......#...#.#.....#...#.#...#...#.......# +#.#.#.#.#.###.###.#.#.#####.#.#.#.#####.#.#.#.###.#.#######.###.#.#.###.#.#.#####.#.#####.#.#.#.#.#.#.#.#.#.#.#.#.###.#.#####.#####.###.#.#.###.#.#.#.#.#.#.#.###.#.#.#.#.#####.#.# +#...#.#.#...#.....#.#.#.......#...#...#...#.......................#.#.....#.................#.....#.......#...#...........#...#...........#...#...#...#.....#.#.#...#.#.#...#...#.# +#.#.#.#.###.#.#######.#####.###.#.#.#.###.#.###.#.#.###.#.#.#.###.#####.#.#.#.#.#.###.#.#####.###.#######.#.#.#.###.###.#.###.#.#.###.###.#.#.###.###.#.###.###.###.#.#.###.#.#.#.# +#...#...#.#.#...#...#.#...#...#.#.....#.#...#.....#.....#.....#.#.....#.....#.#...#.#...#.........#.....#.#.....................#...#...#.#...#...#...#.#.....#.#...#.....#...#...# +#.#####.#.#####.###.#.#.#.#.#.#.#.#.###.#####.#.#.#.###.#.###.#.###.#.###.###.#.#.#.###.#.#.#.#.#.#.#.#.#.#.###.#.###.#.#######.#.#.#.#.#.#.#.#.#.#.#.#.#.#####.#.#.#.#.#.#.#.#.#.# +#.....#.#.#7..#.#.......#...#.#.....#...#.........#...#.#...#.......#.....#...#.#...#.#...#.#.#.#.#.......#.....#...#...#.........#.....#...#.....#.....#.#.....#.............#..5# +#.###.#.#.###.#.###.#######.#.#####.###.#.#.###.#.#.#.#.###.###.#.#.#####.#.#.#.#.#.#.#.###.#.#.#.#.#.###.###.###.#.#####.###.#.###.#.#.#.#.#.#####.#.#.#.#.#####.#.#.#.#.###.#.#.# +#.......#.....#.....#.#.......#.#.#...#...#6#.#.......#...#.#.#.....#.#.#.....#.....#.....#.....#.#...#.........#...#...#.#.......#.#.#...#.#...#...#.....#.#.....#...#...#...#.#.# +###.#.###.#.#.#.#.#.#.#.###.#.#.#.#.###.#.#.#.#####.#.#####.#.#.#.#.#.#.###.#.#####.#.#.#.#######.#.#.#####.#.#.#.#.#.#.#.###.###.###.#.#.#.#.#######.#.#.#.#.#.#.#.#.###.#.#.#.#.# +#...#.#...#.#.....#...#.....#...#.#.....#...#.#...#.#.......#...#.....#...#.......#.....#.#...#...#...#.#...#.....#.....#.........#.#.......#.#.......#.#.....#.....#.#...........# +#.#.#.###.#.###.###.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#######.###.#.#.#####.###.#.#.#.#.#.#.#.#.###.#.#.#####.###.###.###.#.#.#.#.#.#####.#.#####.#.#.#.###.#.###.#.#.#####.#.#.#######.# +#.#.#...#.......#.....#...#.#...#...................#...#...#...#...#.......#.#.....#...#...#.........#.....#...........#...#.#.#.#.#.#...#.........#.#.........#.#...#.....#.#...# +################################################################################################################################################################################### diff --git a/src/main/resources/2016/day25.txt b/src/main/resources/2016/day25.txt new file mode 100644 index 00000000..30cc487b --- /dev/null +++ b/src/main/resources/2016/day25.txt @@ -0,0 +1,30 @@ +cpy a d +cpy 4 c +cpy 633 b +inc d +dec b +jnz b -2 +dec c +jnz c -5 +cpy d a +jnz 0 0 +cpy a b +cpy 0 a +cpy 2 c +jnz b 2 +jnz 1 6 +dec b +dec c +jnz c -4 +inc a +jnz 1 -7 +cpy 2 b +jnz c 2 +jnz 1 4 +dec b +dec c +jnz 1 -4 +jnz 0 0 +out b +jnz a -19 +jnz 1 -21 diff --git a/src/main/resources/2016/day3.txt b/src/main/resources/2016/day3.txt new file mode 100644 index 00000000..50d7e863 --- /dev/null +++ b/src/main/resources/2016/day3.txt @@ -0,0 +1,1908 @@ + 4 21 894 + 419 794 987 + 424 797 125 + 651 305 558 + 655 631 963 + 2 628 436 + 736 50 363 + 657 707 408 + 252 705 98 + 532 173 878 + 574 792 854 + 157 737 303 + 468 76 580 + 502 503 434 + 467 567 310 + 911 911 391 + 791 913 925 + 174 49 532 + 796 803 426 + 800 132 710 + 273 722 711 + 388 576 551 + 17 936 676 + 371 712 141 + 692 738 913 + 745 805 975 + 381 140 680 + 859 344 336 + 109 148 877 + 835 441 716 + 355 288 669 + 968 259 517 + 979 350 773 + 134 222 347 + 614 279 628 + 510 140 590 + 901 581 707 + 958 933 680 + 95 558 766 + 676 739 739 + 890 40 825 + 280 735 297 + 593 354 701 + 555 756 730 + 39 656 853 + 399 660 14 + 293 685 48 + 109 374 42 + 260 608 680 + 306 885 603 + 49 683 810 + 125 513 512 + 706 600 143 + 728 138 658 + 410 673 27 + 617 872 89 + 923 733 103 + 462 674 95 + 352 718 191 + 129 351 173 + 648 839 828 + 332 829 789 + 947 44 214 + 768 576 184 + 672 900 601 + 98 672 738 + 368 926 539 + 271 300 372 + 141 844 261 + 731 426 205 + 734 979 792 + 16 703 888 + 133 682 323 + 428 784 182 + 398 171 394 + 154 845 425 + 643 14 775 + 695 849 432 + 22 227 464 + 490 544 485 + 474 701 910 + 902 629 10 + 996 680 67 + 91 908 75 + 653 600 845 + 439 53 117 + 480 552 860 + 156 144 46 + 492 359 597 + 408 473 614 + 469 343 737 + 777 438 149 + 803 114 676 + 78 835 753 + 567 230 707 + 542 738 49 + 286 542 939 + 75 985 179 + 293 914 854 + 234 609 877 + 237 167 880 + 151 722 925 + 793 515 278 + 350 432 777 + 883 402 581 + 621 501 702 + 494 265 665 + 167 668 345 + 853 911 629 + 747 428 576 + 703 979 73 + 938 798 401 + 851 743 542 + 281 216 483 + 772 573 404 + 598 547 606 + 275 107 823 + 92 94 864 + 416 201 759 + 331 146 446 + 200 375 70 + 459 349 928 + 615 77 999 + 748 380 628 + 624 244 759 + 934 512 163 + 964 117 75 + 515 146 209 + 917 31 218 + 694 640 116 + 758 53 375 + 250 655 353 + 153 200 189 + 259 752 85 + 313 637 129 + 361 632 973 + 896 61 934 + 581 611 483 + 620 788 889 + 959 273 754 + 677 997 322 + 43 201 714 + 181 956 734 + 147 878 850 + 139 802 938 + 542 729 26 + 531 201 915 + 412 917 301 + 845 44 811 + 489 897 626 + 378 384 781 + 429 130 313 + 583 400 515 + 811 937 949 + 584 812 909 + 738 143 205 + 79 813 801 + 599 872 539 + 650 177 384 + 299 267 539 + 506 358 516 + 425 520 185 + 901 854 622 + 84 371 21 + 931 797 642 + 274 155 432 + 366 935 635 + 331 810 836 + 56 725 67 + 9 756 985 + 58 38 946 + 385 807 899 + 336 998 3 + 243 539 893 + 792 117 272 + 345 995 452 + 717 892 262 + 311 694 23 + 737 169 392 + 875 741 379 + 609 422 100 + 644 442 916 + 832 51 967 + 230 962 82 + 380 202 931 + 308 786 903 + 556 668 121 + 194 650 263 + 732 20 346 + 528 445 589 + 341 142 684 + 281 302 550 + 408 511 219 + 683 938 617 + 679 705 763 + 812 847 313 + 557 838 308 + 888 23 145 + 120 20 129 + 450 643 245 + 329 658 282 + 30 878 700 + 698 799 335 + 698 320 595 + 875 959 595 + 50 715 454 + 856 686 269 + 986 38 589 + 834 925 69 + 263 928 654 + 430 175 586 + 99 712 642 + 439 679 132 + 639 714 644 + 563 940 62 + 228 385 666 + 758 757 949 + 137 174 104 + 859 746 939 + 675 140 592 + 324 446 357 + 471 486 455 + 450 429 980 + 955 388 599 + 914 222 512 + 981 673 871 + 941 716 744 + 55 192 173 + 98 48 411 + 774 686 343 + 689 671 412 + 666 613 686 + 420 595 550 + 891 148 204 + 150 678 978 + 420 684 49 + 503 879 985 + 95 508 231 + 90 393 777 + 17 464 813 + 372 120 26 + 513 10 445 + 258 133 460 + 392 29 355 + 116 874 635 + 326 889 493 + 883 599 250 + 913 388 798 + 85 366 782 + 422 416 204 + 533 174 93 + 168 413 270 + 617 996 461 + 8 386 1 + 613 928 464 + 455 545 619 + 424 631 488 + 142 612 146 + 921 374 324 + 744 791 395 + 923 797 445 + 876 447 602 + 851 62 493 + 23 397 993 + 232 602 90 + 790 604 698 + 855 7 654 + 350 105 561 + 550 198 327 + 670 130 340 + 904 943 765 + 23 467 804 + 906 726 948 + 337 90 774 + 438 546 667 + 134 625 247 + 334 282 729 + 619 275 412 + 377 5 763 + 250 722 852 + 754 365 401 + 558 393 615 + 974 673 39 + 922 610 899 + 99 969 868 + 89 616 911 + 235 326 371 + 252 605 907 + 429 387 678 + 564 34 565 + 436 359 584 + 125 780 474 + 842 372 184 + 785 507 489 + 849 418 633 + 962 191 582 + 728 453 669 + 91 970 639 + 48 222 639 + 41 865 103 + 395 765 945 + 551 103 9 + 313 687 956 + 952 109 894 + 612 79 518 + 392 119 506 + 106 739 427 + 941 688 483 + 917 103 114 + 326 466 604 + 393 641 488 + 128 920 135 + 609 742 725 + 101 596 371 + 631 325 416 + 318 939 170 + 166 540 821 + 460 654 843 + 672 942 330 + 620 673 352 + 288 731 20 + 263 277 387 + 259 49 434 + 73 262 278 + 525 775 36 + 867 735 125 + 437 415 141 + 567 537 640 + 99 581 584 + 468 108 84 + 608 997 893 + 573 722 971 + 497 953 399 + 201 184 372 + 203 323 386 + 2 331 72 + 375 687 307 + 484 57 322 + 311 704 416 + 720 961 571 + 444 211 926 + 668 771 666 + 742 688 146 + 447 435 143 + 394 444 1 + 450 39 373 + 150 634 442 + 422 645 546 + 132 562 281 + 795 365 455 + 921 389 255 + 17 153 85 + 795 593 367 + 788 637 447 + 292 297 703 + 190 938 871 + 166 821 386 + 437 636 385 + 160 288 604 + 334 584 837 + 701 207 665 + 470 84 204 + 599 268 739 + 634 92 148 + 507 620 198 + 193 677 94 + 301 990 536 + 874 493 783 + 932 550 497 + 81 166 546 + 633 538 476 + 553 411 790 + 593 159 316 + 47 729 226 + 619 708 409 + 38 535 763 + 421 830 550 + 400 537 641 + 275 531 166 + 247 564 495 + 177 791 655 + 959 363 548 + 232 105 594 + 919 272 912 + 258 467 505 + 882 783 365 + 916 331 441 + 70 815 204 + 66 304 470 + 2 810 372 + 734 276 875 + 771 295 72 + 455 191 892 + 765 384 195 + 758 418 844 + 38 121 980 + 302 379 606 + 116 384 199 + 353 13 607 + 712 805 790 + 589 701 694 + 540 776 276 + 985 814 61 + 996 10 709 + 450 821 652 + 715 26 899 + 628 656 679 + 322 669 279 + 144 649 518 + 962 175 363 + 839 627 292 + 931 934 378 + 588 382 122 + 410 923 263 + 652 680 654 + 25 878 835 + 640 399 396 + 492 202 511 + 510 225 521 + 15 413 233 + 493 551 122 + 683 222 569 + 248 457 641 + 100 936 315 + 902 998 870 + 975 98 680 + 998 309 653 + 605 944 532 + 530 887 400 + 572 879 925 + 311 147 692 + 425 924 848 + 453 945 934 + 492 918 22 + 434 338 933 + 288 297 665 + 274 712 185 + 99 503 741 + 868 523 263 + 828 218 121 + 53 565 236 + 15 409 778 + 367 293 444 + 352 610 413 + 892 970 706 + 954 767 321 + 75 656 414 + 823 781 57 + 423 673 349 + 817 405 324 + 768 19 345 + 302 949 529 + 654 944 794 + 262 766 959 + 783 92 866 + 772 718 772 + 629 154 669 + 723 349 109 + 914 352 599 + 559 746 346 + 492 781 860 + 103 52 624 + 655 397 857 + 680 242 417 + 183 203 846 + 714 519 457 + 849 292 946 + 605 566 646 + 793 653 156 + 111 135 44 + 882 531 191 + 920 773 378 + 911 340 546 + 23 655 382 + 656 708 587 + 43 792 708 + 673 734 605 + 506 725 943 + 421 762 553 + 471 214 572 + 195 575 438 + 114 546 687 + 121 47 894 + 744 221 820 + 58 273 982 + 759 58 233 + 770 824 785 + 857 441 480 + 87 387 477 + 838 633 28 + 635 547 49 + 329 404 47 + 534 955 933 + 661 985 662 + 199 144 713 + 228 996 622 + 197 523 858 + 64 486 552 + 859 968 422 + 847 31 648 + 41 944 812 + 625 953 830 + 987 734 37 + 529 512 825 + 104 690 688 + 602 224 973 + 592 888 409 + 241 247 639 + 290 80 570 + 483 284 97 + 322 223 57 + 91 204 503 + 257 18 464 + 904 480 177 + 945 364 137 + 199 240 234 + 231 177 23 + 537 147 464 + 683 71 468 + 448 55 544 + 264 143 640 + 307 125 706 + 674 384 373 + 469 903 656 + 538 695 361 + 461 942 728 + 430 911 347 + 85 70 789 + 422 525 65 + 466 322 776 + 49 620 765 + 832 530 9 + 215 92 417 + 965 511 415 + 865 888 289 + 993 74 332 + 685 830 52 + 11 334 151 + 98 36 192 + 93 307 89 + 38 483 498 + 674 317 910 + 697 302 486 + 267 29 508 + 816 924 165 + 895 954 671 + 629 75 634 + 591 301 149 + 368 346 735 + 916 606 382 + 63 786 124 + 916 180 475 + 466 656 218 + 128 35 326 + 570 665 164 + 181 382 773 + 256 122 266 + 130 288 905 + 288 524 40 + 278 526 471 + 39 243 476 + 951 16 522 + 662 93 522 + 378 107 7 + 218 520 10 + 654 399 343 + 674 158 351 + 854 320 834 + 722 358 818 + 231 178 671 + 862 892 764 + 109 461 982 + 943 655 412 + 745 541 255 + 868 541 297 + 472 20 224 + 163 991 647 + 249 883 588 + 232 486 162 + 236 281 784 + 416 261 65 + 377 34 790 + 357 121 610 + 542 439 866 + 860 324 598 + 865 337 712 + 368 421 977 + 839 280 457 + 140 655 416 + 962 381 331 + 901 685 732 + 818 483 831 + 13 724 791 + 818 694 222 + 746 822 841 + 829 418 836 + 335 565 408 + 516 447 281 + 584 204 166 + 480 508 119 + 713 787 704 + 626 941 739 + 206 418 284 + 989 326 701 + 636 396 195 + 397 393 655 + 240 696 896 + 166 117 974 + 72 733 210 + 797 533 566 + 729 728 481 + 663 212 86 + 298 475 563 + 590 533 517 + 618 314 133 + 422 195 38 + 195 415 288 + 540 303 253 + 446 553 859 + 568 891 223 + 432 617 981 + 519 214 775 + 529 721 844 + 786 898 692 + 440 401 201 + 345 353 846 + 296 566 906 + 638 422 370 + 15 577 469 + 624 192 134 + 136 554 755 + 182 690 940 + 77 366 923 + 284 979 275 + 157 582 373 + 433 547 343 + 767 786 527 + 983 877 385 + 581 612 158 + 365 520 673 + 436 227 897 + 458 421 913 + 579 492 760 + 818 493 507 + 316 22 867 + 114 421 939 + 372 281 912 + 415 608 633 + 938 676 927 + 965 591 931 + 335 789 34 + 865 820 346 + 406 798 304 + 893 441 267 + 166 126 835 + 764 859 839 + 629 918 194 + 557 297 552 + 954 79 478 + 801 224 670 + 640 493 262 + 750 478 681 + 534 867 654 + 980 586 142 + 882 597 156 + 277 186 48 + 448 541 23 + 457 702 496 + 11 936 491 + 689 668 457 + 368 941 288 + 914 311 464 + 893 843 828 + 800 933 797 + 951 427 657 + 754 215 476 + 148 260 508 + 735 130 193 + 390 631 761 + 288 203 777 + 273 443 23 + 189 20 355 + 240 344 560 + 157 360 674 + 921 774 803 + 473 943 937 + 600 920 393 + 611 579 530 + 632 577 59 + 24 5 495 + 701 358 722 + 703 284 820 + 625 625 844 + 649 253 531 + 447 309 534 + 662 218 419 + 762 347 627 + 947 344 133 + 581 36 652 + 222 747 122 + 238 761 162 + 72 82 231 + 717 296 966 + 563 516 774 + 273 451 819 + 956 175 651 + 33 770 754 + 956 650 369 + 146 838 148 + 588 713 547 + 453 457 541 + 979 92 401 + 967 162 417 + 144 155 672 + 725 737 962 + 779 701 886 + 64 203 120 + 433 284 482 + 911 538 512 + 613 713 77 + 268 636 685 + 445 955 193 + 458 677 653 + 91 450 356 + 747 11 360 + 728 448 147 + 37 494 679 + 780 582 256 + 756 212 810 + 556 434 265 + 280 472 983 + 547 93 857 + 922 225 378 + 754 138 346 + 236 235 349 + 718 421 501 + 80 880 464 + 753 490 286 + 616 332 218 + 338 391 547 + 490 599 370 + 35 559 686 + 67 290 565 + 30 597 153 + 59 763 701 + 268 439 123 + 237 940 669 + 451 205 145 + 302 284 961 + 365 443 828 + 225 598 65 + 437 561 73 + 248 219 7 + 72 29 274 + 577 35 654 + 537 41 857 + 956 966 739 + 545 747 373 + 479 463 705 + 112 79 161 + 280 885 672 + 322 829 596 + 422 279 697 + 804 997 963 + 907 852 494 + 321 245 492 + 298 698 419 + 49 454 185 + 169 214 25 + 880 324 414 + 816 163 425 + 366 370 167 + 729 49 684 + 460 337 792 + 719 908 817 + 825 310 303 + 245 814 724 + 877 713 128 + 488 241 839 + 499 820 884 + 918 356 273 + 69 228 442 + 877 523 698 + 780 391 627 + 838 539 547 + 512 867 786 + 491 298 421 + 402 153 940 + 602 220 539 + 638 167 534 + 626 204 122 + 77 170 569 + 342 364 529 + 74 523 842 + 416 675 415 + 292 900 918 + 335 565 795 + 145 396 558 + 320 421 585 + 315 495 106 + 618 492 494 + 985 684 702 + 261 35 699 + 890 678 100 + 797 972 693 + 782 12 675 + 991 963 24 + 774 465 254 + 409 446 291 + 920 178 430 + 558 186 476 + 668 502 39 + 897 497 471 + 927 534 95 + 465 621 535 + 971 718 597 + 440 803 941 + 859 104 59 + 891 712 889 + 7 465 712 + 928 323 951 + 938 251 464 + 939 541 491 + 376 430 543 + 605 181 684 + 849 578 57 + 635 433 572 + 958 171 565 + 525 870 63 + 198 864 591 + 466 125 610 + 442 604 512 + 444 666 55 + 129 374 546 + 893 328 978 + 78 279 999 + 852 302 465 + 378 619 123 + 97 246 185 + 374 775 308 + 579 48 388 + 497 730 745 + 142 703 596 + 387 31 973 + 861 944 602 + 894 919 522 + 755 689 409 + 592 310 115 + 326 708 398 + 53 87 866 + 966 266 370 + 925 281 815 + 864 315 882 + 699 352 849 + 526 185 948 + 58 454 681 + 496 917 237 + 556 907 558 + 815 422 705 + 232 423 194 + 941 811 583 + 686 207 335 + 637 693 440 + 574 795 385 + 531 936 899 + 721 950 37 + 317 786 906 + 830 719 101 + 360 615 650 + 689 218 676 + 790 208 197 + 621 7 791 + 868 203 866 + 16 491 53 + 952 268 717 + 956 736 773 + 793 386 760 + 750 624 957 + 184 964 443 + 454 684 835 + 439 931 60 + 293 434 866 + 990 467 282 + 664 423 302 + 523 485 116 + 127 469 710 + 625 758 497 + 514 544 998 + 571 281 413 + 458 70 645 + 526 283 884 + 77 738 725 + 802 278 508 + 782 597 976 + 385 358 919 + 710 492 994 + 750 517 79 + 964 231 679 + 370 34 845 + 951 245 299 + 83 431 846 + 384 989 609 + 447 761 747 + 647 898 371 + 95 794 298 + 644 157 625 + 663 107 507 + 572 927 578 + 165 926 94 + 455 530 905 + 397 412 598 + 616 239 788 + 228 556 609 + 26 540 184 + 208 745 687 + 877 36 977 + 64 29 195 + 936 56 807 + 952 253 397 + 62 246 95 + 923 102 491 + 576 116 739 + 919 559 820 + 882 534 865 + 490 650 961 + 441 741 975 + 59 922 597 + 76 209 337 + 293 785 447 + 338 971 276 + 117 581 939 + 210 266 701 + 108 448 378 + 253 556 164 + 998 200 168 + 969 358 13 + 606 206 458 + 752 400 571 + 796 521 911 + 934 50 150 + 96 205 764 + 844 216 657 + 669 434 222 + 242 301 66 + 471 277 227 + 732 681 20 + 67 991 597 + 784 793 613 + 198 841 555 + 109 429 396 + 219 461 729 + 128 255 888 + 850 154 754 + 809 226 387 + 719 468 706 + 289 436 26 + 441 280 688 + 510 57 451 + 417 255 277 + 670 198 625 + 791 681 20 + 803 998 294 + 332 323 282 + 905 213 739 + 115 267 394 + 965 213 788 + 125 829 635 + 90 281 640 + 103 584 81 + 407 771 19 + 205 213 708 + 380 814 704 + 778 462 872 + 799 553 758 + 402 193 269 + 403 947 198 + 814 22 499 + 532 948 570 + 159 951 932 + 505 616 592 + 507 657 785 + 811 860 675 + 831 140 99 + 450 966 627 + 939 358 947 + 182 201 1 + 951 487 951 + 367 376 539 + 972 491 495 + 758 761 80 + 122 872 278 + 933 927 926 + 835 300 759 + 733 195 418 + 347 73 485 + 783 138 660 + 186 586 422 + 464 301 410 + 479 552 175 + 532 634 83 + 383 285 44 + 436 431 58 + 535 170 985 + 632 274 488 + 338 130 571 + 176 582 380 + 669 613 396 + 705 169 719 + 856 993 121 + 133 966 370 + 914 196 281 + 798 669 132 + 890 418 374 + 955 705 442 + 159 406 397 + 404 59 893 + 526 377 933 + 248 442 442 + 471 116 739 + 292 552 575 + 676 666 574 + 511 172 422 + 796 592 548 + 697 197 477 + 661 900 981 + 526 779 684 + 989 910 867 + 482 449 661 + 891 955 235 + 826 260 714 + 652 178 978 + 234 346 905 + 935 213 526 + 329 593 819 + 651 773 628 + 879 926 371 + 868 42 701 + 13 891 485 + 130 730 141 + 454 725 922 + 586 445 826 + 274 99 77 + 282 84 102 + 318 19 73 + 467 956 769 + 90 409 641 + 417 660 846 + 417 577 381 + 463 863 570 + 46 323 473 + 261 448 309 + 499 63 834 + 334 421 710 + 392 296 356 + 432 152 633 + 48 257 572 + 130 797 559 + 304 136 450 + 285 807 671 + 715 135 563 + 504 218 531 + 838 139 745 + 938 200 245 + 866 797 168 + 656 709 308 + 213 654 329 + 550 138 928 + 454 702 780 + 881 227 940 + 83 894 989 + 903 836 207 + 134 762 835 + 592 857 242 + 724 922 700 + 612 291 718 + 874 856 943 + 413 854 568 + 843 169 497 + 815 927 781 + 236 776 958 + 990 235 853 + 537 229 396 + 706 195 709 + 13 38 102 + 665 705 455 + 655 735 525 + 490 30 684 + 291 219 12 + 657 236 687 + 814 779 613 + 957 976 589 + 705 994 456 + 276 389 477 + 968 752 553 + 708 859 947 + 267 922 639 + 34 724 754 + 253 262 358 + 693 662 387 + 386 326 592 + 432 547 227 + 295 465 360 + 604 434 858 + 627 759 610 + 676 557 182 + 231 538 98 + 817 595 122 + 153 686 713 + 71 491 59 + 197 631 744 + 202 441 943 + 509 420 915 + 572 160 162 + 836 976 237 + 235 26 160 + 729 984 367 + 385 758 902 + 190 475 560 + 432 289 613 + 435 200 247 + 366 614 260 + 708 445 16 + 367 330 743 + 397 750 311 + 35 581 700 + 574 182 762 + 930 258 952 + 739 297 845 + 291 229 421 + 986 463 383 + 875 605 217 + 215 993 9 + 762 768 136 + 960 561 130 + 809 868 81 + 843 592 612 + 159 449 610 + 148 831 220 + 42 173 589 + 152 872 608 + 895 190 707 + 675 245 822 + 671 246 352 + 401 246 973 + 124 390 123 + 461 579 871 + 874 975 766 + 472 257 751 + 421 887 254 + 429 259 207 + 472 362 673 + 392 598 763 + 459 736 45 + 771 314 779 + 734 589 747 + 206 592 287 + 984 629 554 + 801 590 601 + 517 61 527 + 389 133 105 + 862 114 607 + 238 748 757 + 915 890 653 + 984 939 697 + 532 53 229 + 822 196 730 + 621 248 666 + 901 819 307 + 809 540 510 + 113 719 233 + 348 69 692 + 842 890 213 + 821 951 579 + 529 323 306 + 89 323 543 + 440 26 722 + 802 522 426 + 756 657 960 + 93 596 816 + 866 442 378 + 828 556 364 + 96 121 12 + 317 648 577 + 253 53 633 + 544 688 931 + 424 790 344 + 458 865 145 + 562 831 363 + 893 221 919 + 840 92 529 + 169 297 774 + 838 306 682 + 441 121 570 + 428 389 811 + 344 727 239 + 196 44 826 + 229 728 950 + 357 615 210 + 859 776 89 + 935 539 212 + 884 487 844 + 31 508 774 + 851 25 109 + 436 477 675 + 584 995 828 + 573 794 507 + 599 655 909 + 303 126 412 + 752 568 805 + 987 391 459 + 680 853 647 + 778 468 531 + 415 606 323 + 490 746 519 + 373 674 320 + 200 95 319 + 251 186 808 + 49 280 952 + 173 406 142 + 421 808 498 + 550 953 635 + 314 384 519 + 383 663 385 + 116 706 387 + 376 445 205 + 430 181 173 + 248 525 43 + 274 444 534 + 582 464 599 + 858 68 229 + 353 821 235 + 564 259 256 + 510 953 54 + 713 337 323 + 4 96 282 + 711 402 41 + 337 629 820 + 185 206 180 + 385 472 645 + 455 600 405 + 743 974 79 + 591 819 423 + 741 14 207 + 290 698 121 + 851 693 145 + 739 993 803 + 740 484 702 + 304 582 551 + 132 253 734 + 770 178 853 + 835 268 809 + 759 934 619 + 984 542 238 + 835 741 413 + 606 159 861 + 699 163 862 + 96 50 31 + 814 712 650 + 818 212 404 + 32 784 659 + 111 465 941 + 895 376 756 + 924 574 646 + 341 753 965 + 400 394 948 + 379 471 35 + 171 467 199 + 528 16 634 + 360 453 592 + 820 44 316 + 591 841 550 + 724 825 255 + 356 648 85 + 338 530 337 + 637 151 291 + 811 629 578 + 709 389 77 + 208 856 654 + 781 611 560 + 165 676 590 + 657 192 67 + 737 322 236 + 946 299 235 + 410 438 205 + 789 274 389 + 834 318 884 + 107 335 552 + 283 336 8 + 755 310 431 + 920 497 430 + 576 751 597 + 9 893 607 + 570 151 70 + 514 330 198 + 481 726 103 + 324 929 124 + 594 180 866 + 901 125 69 + 528 60 899 + 705 772 441 + 156 93 469 + 701 849 58 + 66 437 140 + 424 499 152 + 380 921 55 + 825 124 860 + 424 246 851 + 832 211 94 + 419 701 417 + 296 310 689 + 127 647 813 + 881 699 761 + 815 948 199 + 176 386 713 + 371 373 510 + 356 995 411 + 97 864 476 + 267 888 213 + 656 368 996 + 921 760 863 + 208 243 271 + 241 16 796 + 168 256 928 + 213 677 471 + 829 27 169 + 747 648 351 + 339 681 214 + 398 512 176 + 251 212 367 + 313 846 267 + 255 735 547 + 271 212 356 + 146 401 656 + 245 891 351 + 334 623 729 + 498 864 547 + 857 596 730 + 482 834 899 + 400 836 434 + 78 390 440 + 398 688 167 + 63 564 884 + 587 891 982 + 594 431 168 + 439 990 512 + 219 905 258 + 550 82 523 + 631 402 199 + 148 517 112 + 743 670 185 + 605 731 534 + 651 124 537 + 81 710 220 + 520 635 499 + 761 929 500 + 741 403 917 + 68 710 230 + 278 538 203 + 235 229 295 + 470 244 126 + 448 350 96 + 56 247 75 + 861 763 85 + 571 855 522 + 410 96 437 + 196 552 400 + 651 453 974 + 458 674 706 + 211 593 139 + 388 134 179 + 407 608 180 + 640 454 445 + 213 176 407 + 616 447 712 + 252 103 866 + 242 27 981 + 147 85 675 + 314 370 693 + 256 490 434 + 296 206 544 + 531 137 677 + 577 524 896 + 61 486 293 + 677 425 436 + 605 304 630 + 654 542 339 + 863 592 22 + 914 224 711 + 234 649 727 + 873 159 424 + 826 639 696 + 136 653 407 + 436 767 449 + 678 875 610 + 271 785 460 + 569 592 969 + 729 582 988 + 326 139 391 + 841 847 925 + 425 991 861 + 642 949 501 + 895 661 827 + 979 685 941 + 724 208 801 + 439 724 125 + 527 998 303 + 150 327 217 + 7 188 418 + 52 110 291 + 59 211 162 + 989 311 166 + 377 12 561 + 650 303 503 + 427 496 663 + 419 913 81 + 364 531 661 + 991 37 692 + 773 394 245 + 459 357 617 + 949 190 23 + 544 154 313 + 629 156 298 + 338 753 854 + 282 744 855 + 273 23 3 + 908 784 528 + 889 764 520 + 65 327 55 + 118 826 479 + 285 34 48 + 320 820 441 + 652 154 358 + 373 876 806 + 543 778 916 + 261 387 788 + 695 408 734 + 956 128 961 + 750 302 195 + 669 163 641 + 197 291 528 + 406 959 749 + 835 747 135 + 474 931 721 + 374 616 113 + 385 279 59 + 85 772 123 + 767 955 243 + 782 383 174 + 253 918 312 + 941 99 123 + 234 689 235 + 950 737 269 + 145 535 192 + 13 352 267 + 134 621 325 + 897 529 864 + 373 646 618 + 597 968 619 + 876 655 663 + 83 735 132 + 866 556 738 + 580 162 735 + 437 822 458 + 482 811 492 + 401 656 753 + 615 435 892 + 493 771 395 + 721 994 734 + 243 133 298 + 526 873 809 + 564 836 232 + 768 309 254 + 366 958 72 + 568 606 339 + 775 134 538 + 255 575 619 + 997 278 669 + 957 88 623 + 720 342 370 + 213 811 197 + 931 690 50 + 838 814 200 + 776 480 744 + 638 396 519 + 356 511 309 + 912 125 65 + 939 277 931 + 305 350 864 + 20 981 501 + 78 931 296 + 66 194 781 + 572 395 560 + 453 92 447 + 919 312 747 + 824 44 469 + 367 312 862 + 709 357 563 + 637 984 458 + 549 698 470 + 248 861 48 + 603 264 145 + 379 795 37 + 607 646 180 + 826 195 197 + 562 207 255 + 426 29 108 + 945 796 577 + 292 521 686 + 674 293 324 + 739 14 179 + 544 385 839 + 236 373 943 + 126 522 467 + 17 521 11 + 111 12 470 + 232 480 781 + 393 938 941 + 541 520 836 + 705 990 34 + 800 961 999 + 532 825 963 + 783 931 544 + 327 483 595 + 578 905 886 + 734 718 476 + 744 158 824 + 80 643 837 + 118 615 866 + 59 51 845 + 56 598 106 + 676 553 786 + 660 815 795 + 202 324 8 + 349 876 702 + 421 439 420 + 717 937 924 + 223 875 728 + 236 895 561 + 302 114 176 + 314 163 38 + 349 581 456 + 124 526 474 + 537 74 902 + 618 216 612 + 183 160 937 + 945 731 219 + 108 30 508 + 935 728 300 + 854 527 753 + 87 473 250 + 918 208 524 + 554 611 73 + 545 728 620 + 77 596 588 + 751 552 839 + 615 178 163 + 993 541 716 + 581 615 625 + 788 406 731 + 655 937 322 + 223 203 650 + 267 376 258 + 321 428 886 + 379 751 439 + 865 701 554 + 758 180 165 + 880 855 658 + 53 414 748 + 852 963 754 + 324 813 28 + 535 817 588 + 364 44 581 + 211 198 458 + 193 192 695 + 61 92 991 + 205 599 445 + 920 416 284 + 965 956 500 + 835 324 654 + 627 371 100 + 897 92 624 + 47 382 646 + 800 43 758 + 804 349 363 + 766 209 373 + 299 499 662 + 685 349 311 + 23 870 624 + 202 811 638 + 189 231 50 + 813 226 556 + 546 499 403 + 476 654 206 + 781 604 423 + 805 673 459 + 26 452 406 + 278 721 185 + 364 442 550 + 169 576 423 + 808 518 616 + 841 739 727 + 380 504 391 + 191 81 239 + 895 35 203 + 940 65 86 + 311 717 120 + 77 422 22 + 318 531 139 + 613 513 219 + 650 825 630 + 45 488 702 + 470 339 498 + 849 231 382 + 623 154 426 + 23 433 332 + 810 273 385 + 835 251 140 + 83 577 853 + 125 526 609 + 174 415 846 + 698 974 257 + 280 869 9 + 436 151 254 + 603 73 174 + 782 392 58 + 626 457 140 + 629 410 748 + 40 30 560 + 601 427 364 + 532 766 900 + 969 786 66 + 558 31 848 + 8 834 70 + 915 887 103 + 909 468 53 + 738 758 163 + 805 631 345 + 188 364 354 + 116 605 773 + 366 606 20 + 346 85 757 + 447 812 952 + 51 696 925 + 425 428 977 + 817 409 802 + 911 218 886 + 335 240 294 + 17 100 608 + 2 77 754 + 20 100 721 + 984 724 971 + 446 970 606 + 948 270 957 + 765 492 236 + 527 552 37 + 365 301 253 + 434 418 690 + 501 250 117 + 416 292 808 + 180 696 352 + 657 477 190 + 568 244 418 + 716 395 525 + 725 691 472 + 611 625 489 + 584 930 500 + 600 702 701 + 202 762 713 + 354 361 19 + 579 524 355 + 711 499 338 + 430 427 492 + 680 504 673 + 284 396 779 + 544 250 813 + 247 47 933 + 372 205 679 + 458 583 566 + 161 787 651 + 438 308 536 + 138 281 797 + 452 223 221 + 460 496 911 + 401 351 611 + 191 218 755 + 475 452 497 + 72 219 536 + 906 220 214 + 959 62 418 + 225 697 628 + 195 838 657 + 411 854 328 + 993 733 236 + 846 838 306 + 263 112 119 + 158 9 149 + 144 87 732 + 87 82 674 + 283 33 61 + 888 734 364 + 718 750 344 + 2 485 454 + 337 451 728 + 341 170 577 + 651 272 820 + 225 562 481 + 472 759 609 + 63 402 607 + 731 394 506 + 744 680 331 + 697 381 236 + 336 396 451 + 360 20 281 + 710 608 343 + 624 567 415 + 778 800 390 + 422 831 213 + 453 294 120 + 28 635 287 + 788 367 373 + 213 739 579 + 622 560 219 + 296 890 516 + 733 808 384 + 481 245 585 + 58 647 842 + 60 652 705 + 2 100 202 + 36 696 415 + 151 786 712 + 174 410 804 + 867 904 58 + 885 869 868 + 99 679 864 + 396 301 272 + 744 849 192 + 425 621 289 + 805 71 892 + 92 422 424 + 873 363 573 + 480 977 298 + 263 514 173 + 456 963 265 + 636 637 203 + 902 573 219 + 414 405 90 + 314 842 900 + 251 946 787 + 562 519 831 + 865 20 512 + 560 190 301 + 915 183 779 + 372 559 104 + 15 434 105 + 377 134 11 + 178 479 303 + 503 396 290 + 427 522 349 + 567 694 454 + 630 919 58 + 353 305 511 + 704 867 137 + 713 974 740 + 911 756 703 + 655 148 739 + 519 212 406 + 677 289 620 + 983 84 724 + 142 389 335 + 841 384 662 + 807 587 868 + 888 560 138 + 84 24 812 + 432 278 122 + 656 178 215 + 234 100 209 + 239 186 768 + 101 342 212 + 264 265 666 + 575 971 78 + 655 70 294 + 616 902 307 + 888 637 155 + 929 282 916 + 639 730 964 + 438 345 192 + 468 610 206 + 51 472 217 + 423 875 674 + 371 748 692 + 793 387 318 + 642 879 775 + 499 948 877 + 930 102 541 + 223 95 252 + 588 61 258 + 439 51 56 + 495 666 26 + 262 696 423 + 276 102 416 + 656 484 499 + 807 663 474 + 876 411 24 + 351 138 143 + 312 124 534 + 336 200 421 + 687 489 733 + 751 229 941 + 322 414 256 + 440 575 936 + 373 304 5 + 689 311 931 + 854 760 440 + 824 432 463 + 302 807 159 + 842 822 499 + 751 893 350 + 205 284 474 + 852 890 257 + 91 826 609 + 806 154 808 + 947 710 269 + 999 150 135 + 291 838 260 + 347 728 885 + 481 454 779 + 518 339 139 + 767 914 644 + 519 946 650 + 561 56 988 + 485 44 40 + 42 839 457 + 518 845 490 + 121 535 452 + 392 674 242 + 502 361 491 + 838 170 716 + 828 458 249 + 260 528 618 + 359 825 228 + 494 786 183 + 701 160 315 + 568 437 13 + 577 367 383 + 65 235 376 + 134 948 942 + 151 468 204 + 67 819 813 + 90 396 447 + 688 334 528 + 706 319 398 + 609 530 604 + 564 129 561 + 932 584 43 + 653 30 91 + 262 657 302 + 389 628 375 + 9 664 564 + 764 101 568 + 754 730 927 + 650 910 57 + 51 379 96 + 616 820 112 + 100 564 98 + 688 835 659 + 720 466 647 + 262 893 400 + 425 104 167 + 388 919 466 + 257 765 50 + 197 717 734 + 101 750 750 + 412 526 261 + 382 762 382 + 209 361 315 + 470 712 398 + 447 641 40 + 390 267 438 + 441 98 446 + 402 836 333 + 678 925 255 + 835 35 166 + 471 665 859 + 390 699 875 + 551 523 235 + 691 639 263 + 879 647 53 + 331 413 118 + 154 477 970 + 389 406 916 + 811 948 239 + 408 217 244 + 868 943 404 + 349 276 792 + 236 585 481 + 320 656 546 + 835 769 804 + 161 728 778 + 948 729 65 + 835 164 940 + 692 211 148 + 434 58 920 + 524 174 30 + 572 233 25 + 50 94 8 + 554 421 618 + 338 274 638 + 346 188 656 diff --git a/src/main/resources/2016/day4.txt b/src/main/resources/2016/day4.txt new file mode 100644 index 00000000..88596488 --- /dev/null +++ b/src/main/resources/2016/day4.txt @@ -0,0 +1,980 @@ +bkwzkqsxq-tovvilokx-nozvyiwoxd-172[fstek] +wifilzof-wbiwifuny-yhachyylcha-526[qrazx] +jvyyvzpcl-jhukf-shivyhavyf-487[zhtsi] +kwvacumz-ozilm-kivlg-kwvbiqvumvb-694[gknyw] +mvhkvbdib-kmjezxodgz-mvwwdo-omvdidib-837[dmvbi] +nzydfxpc-rclop-qwzhpc-lnbftdtetzy-171[cptzd] +vhehkyne-unggr-inkvatlbgz-813[gnehk] +tcorcikpi-hnqygt-octmgvkpi-570[nzewo] +xmtjbzidx-wvnfzo-jkzmvodjin-447[uyzlp] +willimcpy-mwupyhayl-bohn-mufym-734[stjoc] +sbejpbdujwf-cvooz-xpsltipq-961[azfnd] +jchipqat-qphzti-rjhidbtg-htgkxrt-271[thigj] +npmhcargjc-zsllw-pcqcypaf-158[mzwnx] +luxciuwncpy-jfumncw-alumm-qilembij-318[mucil] +bxaxipgn-vgpst-rpcsn-rdpixcv-htgkxrth-427[ywazt] +zekvierkzferc-tyftfcrkv-ivtvzmzex-295[evzfk] +enzcntvat-qlr-hfre-grfgvat-143[rtaef] +mvkccspson-bkllsd-nofovyzwoxd-224[oscdk] +enzcntvat-zvyvgnel-tenqr-pnaql-pbngvat-ratvarrevat-429[zymbs] +nwzekwypera-xwogap-pnwejejc-992[lkiwn] +ajmrxjlcren-ajkkrc-lxwcjrwvnwc-667[ezynd] +bxaxipgn-vgpst-hrpktcvtg-wjci-advxhixrh-661[lytku] +owshgfarwv-vqw-kzahhafy-190[ahwfv] +jqwpihizlwca-moo-twoqabqka-512[ncdyv] +apwmeclga-pyzzgr-rcaflmjmew-886[amceg] +tyepcyletzylw-ojp-wzrtdetnd-951[mxqsy] +dlhwvupglk-kfl-hjxbpzpapvu-773[nrotd] +fab-eqodqf-dmnnuf-bgdotmeuzs-612[dchyk] +qjopwxha-bhksan-skngodkl-940[kahno] +lsyrkjkbnyec-dyz-combod-cmkfoxqob-rexd-bomosfsxq-718[lktzs] +zixppfcfba-bdd-jxohbqfkd-939[sqtor] +vxupkizork-kmm-ktmotkkxotm-852[dsqjh] +excdklvo-mkxni-mykdsxq-nozkbdwoxd-952[zspmc] +bnqqnrhud-eknvdq-sqzhmhmf-391[qhndm] +gzefmnxq-otaoaxmfq-ogefayqd-eqdhuoq-716[zinwb] +qzoggwtwsr-qobrm-ghcfous-428[goqrs] +gpbepvxcv-ltpedcxots-qphzti-steadnbtci-193[ignjy] +hvbizodx-nxvqzibzm-cpio-hvmfzodib-265[hixfe] +wkqxodsm-lexxi-kxkvicsc-926[xkcis] +bknsykmdsfo-myxcewob-qbkno-oqq-zebmrkcsxq-380[utqrz] +lejkrscv-wcfnvi-kirzezex-711[ecikr] +htwwtxnaj-idj-btwpxmtu-255[itgmd] +zsxyfgqj-jll-ijufwyrjsy-931[wrpgt] +iuxxuyobk-yigbktmkx-natz-gtgreyoy-384[ygktx] +qjopwxha-xqjju-zalhkuiajp-628[esmxk] +lxaaxbren-ljwmh-anbnjalq-745[stjqy] +gokzyxsjon-zvkcdsm-qbkcc-dbksxsxq-380[tsyqk] +qzoggwtwsr-qobrm-qcohwbu-rsdofhasbh-168[obhqr] +pelbtravp-pnaql-fgbentr-325[pabel] +xzwrmkbqtm-akidmvomz-pcvb-mvoqvmmzqvo-122[mvoqz] +sbnqbhjoh-ezf-fohjoffsjoh-233[xskyb] +jyddc-yrwxefpi-fewoix-hiwmkr-412[pdekg] +fab-eqodqf-rxaiqd-xmnadmfadk-690[sicjl] +xcitgcpixdcpa-rpcsn-htgkxrth-427[stznv] +rflsjynh-rnqnyfwd-lwfij-jll-xytwflj-229[lfjnw] +zotts-wlsiayhcw-vumeyn-fuvilunils-500[ilsun] +odiih-yujbcrl-pajbb-dbna-cnbcrwp-147[bcadi] +udskkaxawv-tmffq-klgjsyw-996[tmnfc] +emixwvqhml-kpwkwtibm-wxmzibqwva-278[zomvn] +dfcxsqhwzs-dzoghwq-ufogg-zcuwghwqg-116[kmijn] +dwbcjkun-ouxfna-mnbrpw-745[nbuwa] +jchipqat-rwdrdapit-pcpanhxh-973[hglvu] +fkqbokxqflkxi-avb-zlkqxfkjbkq-861[wdnor] +wbhsfbohwcboz-foppwh-qighcasf-gsfjwqs-480[fhswb] +dzczkrip-xiruv-szfyrqriuflj-treup-kvtyefcfxp-451[rfipu] +fmsledevhsyw-fyrrc-eguymwmxmsr-698[yzoxu] +udskkaxawv-jsttal-wfyafwwjafy-840[nlkda] +sno-rdbqds-idkkxadzm-sqzhmhmf-287[lngzc] +crwwv-yxphbq-rpbo-qbpqfkd-341[bpqrw] +odiih-mhn-anjlzdrbrcrxw-563[xadcy] +jyddc-ikk-wlmttmrk-698[lmstk] +buzahisl-wshzapj-nyhzz-klzpnu-149[pjxor] +odkasqzuo-eomhqzsqd-tgzf-ymzmsqyqzf-560[frqmp] +gokzyxsjon-bkllsd-yzobkdsyxc-874[nbtmv] +excdklvo-pvygob-bocokbmr-952[tyzxa] +jvsvymbs-jovjvshal-aljouvsvnf-253[zgtdm] +hafgnoyr-qlr-erfrnepu-637[refna] +pelbtravp-sybjre-fnyrf-299[tjoim] +fodvvlilhg-gbh-vwrudjh-621[hvdgl] +kgjgrypw-epybc-bwc-bcnjmwkclr-678[smijy] +myxcewob-qbkno-mrymyvkdo-dbksxsxq-458[bkmox] +joufsobujpobm-fhh-dpoubjonfou-311[uvksy] +rflsjynh-ojqqdgjfs-ijajqturjsy-697[jqsfr] +vetllbybxw-vtgwr-kxtvjnblbmbhg-709[athym] +ajvyjprwp-ajmrxjlcren-kdwwh-lxwcjrwvnwc-433[qsaxt] +zbytomdsvo-mkxni-mykdsxq-myxdksxwoxd-952[xdmko] +esyfwlau-bwddqtwsf-suimakalagf-684[stvip] +jef-iushuj-fhezusjybu-fbqijys-whqii-huiuqhsx-582[uhijs] +tpspahyf-nyhkl-jovjvshal-bzly-alzapun-565[sdprn] +apwmeclga-hcjjwzcyl-umpiqfmn-132[shfrg] +kwtwznct-jcvvg-lmxizbumvb-148[vbcmt] +rmn-qcapcr-aylbw-umpiqfmn-366[juftv] +sorozgxe-mxgjk-hgyqkz-yzuxgmk-748[xuvst] +bkwzkqsxq-wsvsdkbi-qbkno-mkxni-mykdsxq-yzobkdsyxc-822[ksbqx] +ryexqpqhteki-vbemuh-skijecuh-iuhlysu-842[tszmj] +ikhcxvmbex-wrx-wxlbzg-501[zhqis] +lsyrkjkbnyec-mrymyvkdo-nozvyiwoxd-978[enkfi] +wdjcvuvmyjpn-mvhkvbdib-agjrzm-nojmvbz-395[tcxne] +uwtojhynqj-gfxpjy-fhvznxnynts-567[kqpvs] +iqmbazulqp-pkq-dqoquhuzs-534[ntpuq] +gntmfefwitzx-ojqqdgjfs-ijajqturjsy-385[jfqtg] +sebehvkb-fhezusjybu-zubboruqd-husuylydw-972[ytsim] +nzcczdtgp-nsznzwlep-hzcvdsza-405[yotgu] +joufsobujpobm-fhh-ufdiopmphz-675[tsymn] +cxy-bnlanc-snuuhknjw-anbnjalq-823[nabcj] +shoewudys-rkddo-huiuqhsx-374[dhsuo] +vagreangvbany-rtt-jbexfubc-403[ynepo] +aoubshwq-dzoghwq-ufogg-aobousasbh-714[oabgh] +njmjubsz-hsbef-dipdpmbuf-qvsdibtjoh-805[bdjsf] +zovldbkfz-gbiivybxk-lmboxqflkp-653[nyajo] +yknnkoera-xwogap-hkceopeyo-628[ybmzc] +nij-mywlyn-wbiwifuny-guleyncha-396[nyiwl] +ocipgvke-ecpfa-eqcvkpi-vgejpqnqia-258[jsiqz] +encuukhkgf-hnqygt-vgejpqnqia-882[dxzer] +odiih-ljwmh-anbnjalq-927[ahijl] +fkqbokxqflkxi-zxkav-ixyloxqlov-861[nxgja] +udskkaxawv-xmrrq-uzgugdslw-sfsdqkak-216[msfyx] +owshgfarwv-bwddqtwsf-kzahhafy-216[wafhd] +oaxadrgx-dmnnuf-ruzmzouzs-794[uqhse] +ziuxioqvo-akidmvomz-pcvb-zmikycqaqbqwv-616[iqvmo] +bqvvu-xqjju-opknwca-550[yzhum] +xgjougizobk-lruckx-gtgreyoy-670[nbfmk] +bxaxipgn-vgpst-uadltg-bpgztixcv-323[gptxa] +vcibutulxiom-jfumncw-alumm-nluchcha-448[ucmla] +irgyyolokj-xghhoz-uvkxgzouty-930[ogyhk] +kyelcrga-aylbw-amyrgle-umpiqfmn-782[almye] +jsvagsulanw-xdgowj-kzahhafy-138[dblcm] +ixccb-fkrfrodwh-uhdftxlvlwlrq-881[mblzw] +chnylhuncihuf-mwupyhayl-bohn-guleyncha-422[hnuyc] +irdgrxzex-treup-tfrkzex-uvgrikdvek-165[sjbnk] +xzwrmkbqtm-akidmvomz-pcvb-zmikycqaqbqwv-434[sanut] +ykhknbqh-zua-iwjwcaiajp-524[kjlio] +jlidywncfy-mwupyhayl-bohn-uwkocmcncih-916[cyhnw] +nuatmlmdpage-omzpk-eqdhuoqe-326[ljtsm] +xmrrq-kusnwfywj-zmfl-suimakalagf-684[afmkl] +foadouwbu-qvcqczohs-rsgwub-116[oubcq] +etyyx-bgnbnkzsd-kzanqzsnqx-391[pnmlv] +pinovwgz-wvnfzo-hvmfzodib-291[ovzfi] +qekrixmg-gsrwyqiv-kvehi-fewoix-ywiv-xiwxmrk-828[iwxek] +jqwpihizlwca-xtiabqk-oziaa-kcabwumz-amzdqkm-928[aizkm] +qekrixmg-jpsaiv-stivexmsrw-672[etmsq] +excdklvo-gokzyxsjon-mrymyvkdo-bomosfsxq-562[okmsx] +qczcftiz-pibbm-aobousasbh-532[zynvo] +wbhsfbohwcboz-suu-gsfjwqsg-506[bdhxv] +lxwbdvna-pajmn-ajkkrc-anlnrerwp-563[anrjk] +lsyrkjkbnyec-pvygob-cobfsmoc-900[uyrgf] +cqwdujys-sxesebqju-ixyffydw-374[nyjvi] +odiih-ouxfna-anlnrerwp-433[naior] +rzvkjiduzy-xviyt-xjvodib-vxlpdndodji-993[aousd] +ltpedcxots-qphzti-rjhidbtg-htgkxrt-453[rjlkn] +krxqjijamxdb-kdwwh-fxatbqxy-823[wctav] +froruixo-edvnhw-vwrudjh-829[rdhou] +jvyyvzpcl-jhukf-aljouvsvnf-201[uwkic] +nij-mywlyn-vumeyn-zchuhwcha-266[hnycm] +ydjuhdqjyedqb-zubboruqd-tufbeocudj-244[vmkln] +qlm-pbzobq-mixpqfz-doxpp-mrozexpfkd-575[zswni] +qvbmzvibqwvit-moo-tijwzibwzg-330[ibvwz] +pbeebfvir-fpniratre-uhag-freivprf-949[gvxlm] +wfummczcyx-jfumncw-alumm-uwkocmcncih-890[vturj] +dwbcjkun-npp-cajrwrwp-355[kstqo] +dpssptjwf-cbtlfu-vtfs-uftujoh-441[ftsuj] +vrurcjah-pajmn-npp-anbnjalq-303[tozvd] +wfruflnsl-ojqqdgjfs-xfqjx-775[fjqls] +pbafhzre-tenqr-qlr-qrirybczrag-897[yszub] +sehheiylu-rkddo-udwyduuhydw-322[qbyad] +upq-tfdsfu-cbtlfu-nbobhfnfou-103[vpxyh] +ajvyjprwp-npp-dbna-cnbcrwp-901[stevo] +bkzrrhehdc-bzmcx-bnzshmf-qdrdzqbg-833[msuya] +amlqskcp-epybc-aylbw-rcaflmjmew-730[arbyn] +wbhsfbohwcboz-dzoghwq-ufogg-gozsg-272[gobhw] +ksodcbwnsr-dfcxsqhwzs-gqojsbusf-vibh-obozmgwg-194[rwimn] +mfklstdw-usfvq-hmjuzskafy-424[ulgym] +wfruflnsl-ojqqdgjfs-qfgtwfytwd-177[xbofz] +sedikcuh-whqtu-isqludwuh-xkdj-jhqydydw-218[dhuqw] +ltpedcxots-raphhxuxts-qphzti-advxhixrh-765[jahpi] +zgmfyxypbmsq-djmucp-rcaflmjmew-548[aeoiv] +qspkfdujmf-ezf-nbobhfnfou-207[lnkrt] +fbebmtkr-zktwx-pxtihgbsxw-ietlmbv-zktll-kxlxtkva-943[hajmb] +apwmeclga-hcjjwzcyl-bctcjmnkclr-548[yxnzl] +rflsjynh-kqtbjw-btwpxmtu-177[tbjwf] +kfg-jvtivk-treup-uvgcfpdvek-373[vkefg] +upq-tfdsfu-kfmmzcfbo-nbobhfnfou-285[vsglz] +chnylhuncihuf-mwupyhayl-bohn-xypyfijgyhn-266[pwahm] +apwmeclga-zyqicr-dglylagle-886[lagce] +jlidywncfy-xsy-qilembij-188[uxjts] +jqwpihizlwca-lgm-lmaqov-954[laimq] +qcffcgwjs-foppwh-gozsg-246[fgcop] +bqxnfdmhb-rbzudmfdq-gtms-cdrhfm-287[dmbfh] +gifavtkzcv-wcfnvi-rthlzjzkzfe-763[tmniq] +uqtqbizg-ozilm-kivlg-kwibqvo-tijwzibwzg-720[qndzg] +sxdobxkdsyxkv-mkxni-bomosfsxq-848[zyubw] +qfmcusbwq-foppwh-kcfygvcd-662[cfpqw] +sehheiylu-fbqijys-whqii-skijecuh-iuhlysu-660[kdjyq] +sedikcuh-whqtu-uww-bqrehqjeho-660[dtawl] +veqtekmrk-wgezirkiv-lyrx-eguymwmxmsr-464[emrkg] +lqwhuqdwlrqdo-exqqb-uhdftxlvlwlrq-231[ydznk] +sno-rdbqds-bzmcx-otqbgzrhmf-183[gomah] +ujqgywfau-jsttal-hmjuzskafy-476[lghae] +yrwxefpi-jpsaiv-gsrxemrqirx-100[yazxo] +udglrdfwlyh-exqqb-sxufkdvlqj-569[dlqfu] +ugjjgkanw-uzgugdslw-esjcwlafy-736[rnxjs] +pdjqhwlf-sodvwlf-judvv-orjlvwlfv-673[vldfj] +xekdwvwnzkqo-fahhuxawj-ajcejaanejc-524[ajewc] +pwcvonofrcig-pibbm-fsqswjwbu-766[myazu] +tcrjjzwzvu-wcfnvi-glityrjzex-893[bkuyx] +lugjuacha-wbiwifuny-omyl-nymncha-448[mosph] +ckgvutofkj-inuiurgzk-jkvgxzsktz-228[kguzi] +ydjuhdqjyedqb-sqdto-ijehqwu-868[ozqsj] +sxdobxkdsyxkv-zvkcdsm-qbkcc-myxdksxwoxd-640[xdksc] +odkasqzuo-dmnnuf-dqmocgueufuaz-482[wfbke] +wpuvcdng-tcddkv-wugt-vguvkpi-414[hayjs] +lqwhuqdwlrqdo-edvnhw-uhfhlylqj-439[bjzye] +wpuvcdng-dwppa-ceswkukvkqp-674[mxnkj] +qzlozfhmf-bkzrrhehdc-okzrshb-fqzrr-zbpthrhshnm-365[hrzbf] +raphhxuxts-rpcsn-rdpixcv-rjhidbtg-htgkxrt-635[yozvr] +tfejldvi-xiruv-gcrjkzt-xirjj-tljkfdvi-jvimztv-321[veyxs] +ryexqpqhteki-sxesebqju-iqbui-868[qebar] +eqpuwogt-itcfg-hnqygt-tgegkxkpi-648[ywzjl] +uzfqdzmfuazmx-pkq-bgdotmeuzs-482[zmudf] +sbnqbhjoh-cbtlfu-bdrvjtjujpo-441[taquv] +gokzyxsjon-bkwzkqsxq-lexxi-bomosfsxq-354[xoskq] +oazegyqd-sdmpq-iqmbazulqp-dmnnuf-geqd-fqefuzs-456[qdefm] +dwbcjkun-ljwmh-lxjcrwp-anbnjalq-875[hoynm] +udskkaxawv-eadalsjq-yjsvw-xdgowj-klgjsyw-216[cnwyi] +surmhfwloh-exqqb-sxufkdvlqj-439[tspmq] +ksodcbwnsr-foppwh-zcuwghwqg-402[vopuk] +zsxyfgqj-hmthtqfyj-fhvznxnynts-697[fhnty] +yflexwxoalrp-yxphbq-bkdfkbbofkd-653[jzvpm] +ltpedcxots-tvv-rdcipxcbtci-557[ctdip] +slqryzjc-djmucp-qyjcq-756[cjqyd] +rgndvtcxr-qphzti-bpcpvtbtci-817[tcpbi] +ftzgxmbv-fbebmtkr-zktwx-vtgwr-vhtmbgz-lmhktzx-371[wzxvl] +htqtwkzq-hfsid-yjhmstqtld-463[rxszy] +rwcnawjcrxwju-yujbcrl-pajbb-mnenuxyvnwc-979[gkutb] +gokzyxsjon-tovvilokx-kmaescsdsyx-562[dwlah] +iutyaskx-mxgjk-lruckx-iayzuskx-ykxboik-826[kxiuy] +vhglnfxk-zktwx-yehpxk-hixktmbhgl-891[diznt] +sedikcuh-whqtu-kdijqrbu-sqdto-seqjydw-iuhlysui-790[lksjh] +jyfvnlupj-zjhclunly-obua-vwlyhapvuz-617[pirsw] +iuruxlar-sgmtkzoi-hgyqkz-zkinturume-670[qatsn] +wkqxodsm-mrymyvkdo-mecdywob-cobfsmo-250[hgarm] +odiih-kjbtnc-nwprwnnarwp-381[qpodn] +kfg-jvtivk-tyftfcrkv-kirzezex-373[srcvd] +gcfcnuls-aluxy-zotts-wuhxs-omyl-nymncha-552[clnsu] +xmtjbzidx-zbb-xpnojhzm-nzmqdxz-421[mnkio] +qjopwxha-acc-iwngapejc-160[jimst] +emixwvqhml-kivlg-kwibqvo-aitma-564[qspyb] +nvrgfezqvu-avccpsvre-cfxzjkztj-529[lmnsh] +emixwvqhml-ktiaaqnqml-xtiabqk-oziaa-ikycqaqbqwv-746[ozadu] +zhdsrqlchg-hjj-orjlvwlfv-751[hjlrv] +cybyjqho-whqtu-uww-qsgkyiyjyed-478[szxuo] +clxalrtyr-nsznzwlep-wzrtdetnd-405[lnrtz] +sgmtkzoi-yigbktmkx-natz-rghuxgzuxe-722[gktxz] +hjgbwuladw-tskcwl-sfsdqkak-502[txdsw] +yrwxefpi-hci-vigimzmrk-646[hdmzy] +hqcfqwydw-hqrryj-jusxdebewo-946[qwdeh] +wsvsdkbi-qbkno-cmkfoxqob-rexd-yzobkdsyxc-276[wptxs] +qfmcusbwq-qvcqczohs-zcuwghwqg-870[mnybx] +clxalrtyr-nsznzwlep-cpdplcns-743[rtycz] +fbebmtkr-zktwx-ktuubm-ybgtgvbgz-553[osmdy] +jvuzbtly-nyhkl-yhtwhnpun-jovjvshal-ylzlhyjo-773[hlyjn] +slqryzjc-aylbw-pcacgtgle-782[nxkri] +tfcfiwlc-wcfnvi-wzeretzex-971[smobe] +jef-iushuj-uww-qsgkyiyjyed-556[xzrwq] +crwwv-yxphbq-xkxivpfp-653[pxvwb] +hqcfqwydw-zubboruqd-husuylydw-244[lqeho] +oxmeeuruqp-qss-eqdhuoqe-534[equos] +qxdwpopgsdjh-rgndvtcxr-gpqqxi-gthtpgrw-687[gpdqr] +mybbycsfo-mrymyvkdo-bocokbmr-692[pymza] +myvybpev-oqq-yzobkdsyxc-250[sxytw] +fnjyxwrinm-kdwwh-uxprbcrlb-329[natqu] +aietsrmdih-nippcfier-gsrxemrqirx-958[iremp] +xmrrq-tmffq-vwhdgqewfl-138[fqmrw] +oqnidbshkd-bzmcx-sdbgmnknfx-599[nzdyx] +eqttqukxg-ecpfa-eqcvkpi-ewuvqogt-ugtxkeg-128[mytkp] +nchhg-ntwemz-amzdqkma-252[kmbop] +bjfutsneji-jll-zxjw-yjxynsl-775[ndbsw] +ktwbhtvmbox-lvtoxgzxk-angm-mxvaghehzr-319[ijqxb] +kyelcrga-afmamjyrc-pcqcypaf-210[acyfm] +myxcewob-qbkno-mkxni-oxqsxoobsxq-484[oxbqk] +esyfwlau-vqw-kzahhafy-788[jikae] +oqnidbshkd-eknvdq-btrsnldq-rdquhbd-391[njzml] +qjopwxha-bhksan-opknwca-888[ahkno] +udskkaxawv-jsttal-vwhdgqewfl-190[hqmnt] +excdklvo-lexxi-crszzsxq-458[uavnl] +frqvxphu-judgh-fdqgb-frdwlqj-wudlqlqj-179[bimaq] +iuruxlar-kmm-ykxboiky-852[tijpz] +tyepcyletzylw-mldvpe-lylwjdtd-509[lydet] +frqvxphu-judgh-gbh-whfkqrorjb-101[mhbes] +xqvwdeoh-edvnhw-zrunvkrs-699[zmudw] +irdgrxzex-treup-fgvirkzfej-893[fbsyn] +cxy-bnlanc-ljwmh-orwjwlrwp-771[ngpmz] +eqpuwogt-itcfg-gii-ucngu-388[hzgae] +ikhcxvmbex-cxeeruxtg-wxlbzg-553[mvnfs] +mrxivrexmsrep-fyrrc-asvowlst-854[codsq] +npmhcargjc-aylbw-qcptgacq-366[ditsg] +ftzgxmbv-ietlmbv-zktll-phkdlahi-241[ltbhi] +hqcfqwydw-tou-bewyijysi-270[hnvux] +emixwvqhml-kivlg-abwziom-590[imlvw] +pejji-nio-mecdywob-cobfsmo-926[wrjmp] +bknsykmdsfo-oqq-dbksxsxq-640[naysz] +gifavtkzcv-vxx-tfekrzedvek-789[cnwtp] +kmjezxodgz-diozmivodjivg-agjrzm-xjiovdihzio-915[yqktj] +shoewudys-vbemuh-qsgkyiyjyed-946[nqsjd] +htqtwkzq-ojqqdgjfs-rfwpjynsl-749[hryqo] +rmn-qcapcr-zyqicr-pcacgtgle-340[znstw] +bnqqnrhud-bzmcx-bnmszhmldms-729[yfetv] +surmhfwloh-gbh-rshudwlrqv-725[dsaym] +jchipqat-tvv-itrwcdadvn-505[povhu] +zgmfyxypbmsq-njyqrga-epyqq-rcaflmjmew-340[mqyae] +froruixo-exqqb-pdunhwlqj-283[nmuqd] +lnkfaypeha-xwogap-odellejc-784[ytrsz] +jlidywncfy-xsy-fuvilunils-864[ilyfn] +joufsobujpobm-dipdpmbuf-sftfbsdi-545[rwjnm] +tvsnigxmpi-gerhc-gsexmrk-eguymwmxmsr-932[pivem] +tfejldvi-xiruv-srjbvk-ivjvrity-815[vijrt] +zuv-ykixkz-yigbktmkx-natz-zkinturume-410[kzitu] +enzcntvat-pubpbyngr-qrcyblzrag-117[oywbs] +wsvsdkbi-qbkno-lkcuod-nofovyzwoxd-744[xnuqc] +wbhsfbohwcboz-foppwh-aobousasbh-246[nfsml] +uiovmbqk-jcvvg-abwziom-720[nbqaz] +etaqigpke-fag-fgrnqaogpv-674[gaefp] +ejpanjwpekjwh-nwxxep-hkceopeyo-238[bmscu] +qjopwxha-bhksan-wjwhuoeo-940[xenwh] +etyyx-bzmcx-bnzshmf-qdzbpthrhshnm-729[hbmzn] +uqtqbizg-ozilm-lgm-abwziom-356[tspmz] +excdklvo-mybbycsfo-tovvilokx-psxkxmsxq-874[axwon] +mvydjvxodqz-xviyt-xjvodib-pnzm-oznodib-187[nflym] +ixccb-zhdsrqlchg-edvnhw-xvhu-whvwlqj-465[hcvwd] +qspkfdujmf-votubcmf-tdbwfohfs-ivou-bdrvjtjujpo-181[esuzg] +fkqbokxqflkxi-qlm-pbzobq-bdd-jxohbqfkd-601[dcgym] +mtzslklcozfd-prr-nfdezxpc-dpcgtnp-301[tmnrk] +xekdwvwnzkqo-lhwopey-cnwoo-wymqeoepekj-290[rzsnk] +fubrjhqlf-sodvwlf-judvv-pdqdjhphqw-725[dfhjq] +shoewudys-zubboruqd-skijecuh-iuhlysu-608[ushbd] +zlkprjbo-doxab-zxkav-rpbo-qbpqfkd-679[bkopa] +nzcczdtgp-mldvpe-opawzjxpye-587[tkbms] +apuut-nxvqzibzm-cpio-yzkvmohzio-655[rsozd] +rgllk-ngzzk-ymdwqfuzs-300[yhzxu] +cvabijtm-jcvvg-uiviomumvb-538[ixajz] +oazegyqd-sdmpq-otaoaxmfq-pqbmdfyqzf-248[qadfm] +rtqlgevkng-fag-nqikuvkeu-960[nqdom] +bnknqetk-cxd-cdrhfm-183[mfpwa] +ohmnuvfy-wuhxs-wiuncha-lyuwkocmcncih-552[chunw] +hqtyeqsjylu-jef-iushuj-tou-fkhsxqiydw-296[isfmy] +kwtwznct-kwvacumz-ozilm-jiasmb-uiviomumvb-746[qmjyz] +qfmcusbwq-foppwh-twbobqwbu-298[bwqfo] +ykhknbqh-xqjju-owhao-472[hjtck] +dszphfojd-tdbwfohfs-ivou-mbcpsbupsz-103[sbdfo] +lahxpnwrl-ljwmh-nwprwnnarwp-641[srtpm] +ckgvutofkj-lruckx-jkvruesktz-878[zjlyk] +dyz-combod-zvkcdsm-qbkcc-nocsqx-926[yvute] +ktwbhtvmbox-wrx-nlxk-mxlmbgz-345[lsuwt] +nwilwcejc-nwxxep-zalhkuiajp-186[bznxr] +uzfqdzmfuazmx-otaoaxmfq-bgdotmeuzs-846[mzafo] +oxmeeuruqp-omzpk-oamfuzs-oazfmuzyqzf-352[ypdzg] +zhdsrqlchg-fdqgb-ghsduwphqw-361[hdgqs] +nchhg-jiasmb-amzdqkma-278[qklti] +tfiifjzmv-upv-wzeretzex-295[itvos] +eqttqukxg-ecpfa-ujkrrkpi-830[kepqr] +clotzlnetgp-mldvpe-nzyeltyxpye-145[xfpsy] +mbiyqoxsm-myvybpev-mkxni-mykdsxq-yzobkdsyxc-900[ymxbk] +plolwdub-judgh-vfdyhqjhu-kxqw-vhuylfhv-621[zqwmy] +atyzghrk-vxupkizork-jek-giwaoyozout-228[abrmv] +zotts-xsy-mufym-162[mstyf] +vhehkyne-ktuubm-mktbgbgz-293[qmytr] +kwvacumz-ozilm-zijjqb-ivitgaqa-616[fkoxt] +yaxsnlcrun-ajvyjprwp-snuuhknjw-anlnrerwp-771[zpyld] +raphhxuxts-bpvctixr-eaphixr-vgphh-bpcpvtbtci-115[phtxb] +nuatmlmdpage-odkasqzuo-qss-dqmocgueufuaz-768[umnqw] +yknnkoera-lhwopey-cnwoo-nawymqeoepekj-680[eonkw] +pybgmyargtc-aylbw-qyjcq-886[buzfp] +gzefmnxq-ngzzk-iadwetab-638[zaegn] +sbnqbhjoh-kfmmzcfbo-usbjojoh-129[acdkb] +lxaaxbren-lujbbrornm-ljwmh-lxjcrwp-mnyjacvnwc-355[yzsuk] +nchhg-lgm-nqvivkqvo-200[dystz] +plolwdub-judgh-udeelw-rshudwlrqv-335[sihdt] +wlsiayhcw-vumeyn-lymyulwb-292[zbrux] +ytu-xjhwjy-hfsid-htfynsl-qtlnxynhx-411[adxmu] +wkqxodsm-tovvilokx-ckvoc-822[uhgov] +chnylhuncihuf-vumeyn-nluchcha-500[rcbmn] +tfiifjzmv-lejkrscv-tyftfcrkv-jyzggzex-243[fjtvz] +eqpuwogt-itcfg-tcddkv-tgugctej-310[pyemh] +iuruxlar-xgsvgmotm-pkrrehkgt-xkykgxin-956[btwqp] +shoewudys-sxesebqju-qdqboiyi-894[seqbd] +zlkprjbo-doxab-gbiivybxk-pxibp-861[azyjx] +ckgvutofkj-inuiurgzk-lotgtiotm-982[qszly] +thnulapj-jshzzpmplk-jhukf-vwlyhapvuz-747[hpjlu] +pybgmyargtc-hcjjwzcyl-qcptgacq-782[bxsuc] +xgsvgmotm-vrgyzoi-mxgyy-iutzgotsktz-150[gtmoy] +laffe-yigbktmkx-natz-jkyomt-696[ktafm] +zvyvgnel-tenqr-pubpbyngr-znexrgvat-507[wfjhu] +pelbtravp-pnaql-znantrzrag-403[cbyja] +jqwpihizlwca-akidmvomz-pcvb-apqxxqvo-850[oxymv] +cvabijtm-ntwemz-twoqabqka-954[atbmq] +zixppfcfba-avb-zlkqxfkjbkq-809[zlmjc] +sebehvkb-zubboruqd-tufqhjcudj-556[budeh] +lqwhuqdwlrqdo-fdqgb-ghvljq-621[qdlgh] +qlm-pbzobq-crwwv-zxkav-zlxqfkd-rpbo-qbpqfkd-731[ciyxw] +pwcvonofrcig-gqojsbusf-vibh-qighcasf-gsfjwqs-740[csebm] +mvydjvxodqz-kmjezxodgz-kgvnodx-bmvnn-yzqzgjkhzio-239[zdovg] +kzgwomvqk-xtiabqk-oziaa-tijwzibwzg-564[menyj] +ksodcbwnsr-xszzmpsob-kcfygvcd-454[mbaod] +ejpanjwpekjwh-xwogap-hwxknwpknu-472[wpjkn] +mvydjvxodqz-hvbizodx-wpiit-hvivbzhzio-967[ivzdh] +mvydjvxodqz-mvwwdo-nzmqdxzn-681[jryzk] +enqvbnpgvir-rtt-freivprf-871[lgqrc] +hvbizodx-wpiit-kpmxcvndib-291[dyjmn] +molgbzqfib-mixpqfz-doxpp-xkxivpfp-965[pxfib] +fbebmtkr-zktwx-cxeeruxtg-nlxk-mxlmbgz-137[dckut] +luxciuwncpy-luvvcn-mbcjjcha-500[qsvzt] +apwmeclga-hcjjwzcyl-qyjcq-704[cjalq] +wpuvcdng-eqttqukxg-uecxgpigt-jwpv-cpcnauku-830[ucgpt] +iehepwnu-cnwza-fahhuxawj-pnwejejc-940[ewahj] +pbybeshy-pbeebfvir-pnaql-pbngvat-freivprf-715[uyzwp] +htsxzrjw-lwfij-ojqqdgjfs-zxjw-yjxynsl-957[iyonc] +sxdobxkdsyxkv-wsvsdkbi-qbkno-zvkcdsm-qbkcc-bomosfsxq-536[mbyan] +fruurvlyh-fkrfrodwh-uhdftxlvlwlrq-335[rflhu] +froruixo-hjj-orjlvwlfv-387[uyawn] +myvybpev-lexxi-vklybkdybi-978[ybvei] +chnylhuncihuf-vohhs-xymcah-240[yxnmh] +tagzsrsjvgmk-vqw-vwhsjlewfl-606[svwgj] +zbytomdsvo-lexxi-domrxyvyqi-250[oxydi] +qfkkj-clmmte-opgpwzaxpye-821[pekma] +lgh-kwujwl-udskkaxawv-jsttal-hmjuzskafy-320[axyrm] +irdgrxzex-nvrgfezqvu-avccpsvre-cfxzjkztj-191[sclzh] +mhi-lxvkxm-xzz-etuhktmhkr-319[rcomn] +lhkhszqx-fqzcd-dff-sdbgmnknfx-391[ugevx] +apwmeclga-aylbw-ylyjwqgq-314[izfye] +yflexwxoalrp-zlkprjbo-doxab-ciltbo-qbzeklildv-341[byclp] +cvabijtm-kwzzwaqdm-ntwemz-abwziom-252[rdmvn] +qfkkj-upwwjmply-epnsyzwzrj-899[okhgz] +jxdkbqfz-avb-zlkqxfkjbkq-861[wptxb] +gpsxdprixkt-qphzti-hwxeexcv-947[krgwe] +nij-mywlyn-wuhxs-wiuncha-lymyulwb-968[wylnu] +sbnqbhjoh-kfmmzcfbo-ufdiopmphz-987[bfhmo] +guahyncw-jfumncw-alumm-xyjfisgyhn-500[htamn] +ytu-xjhwjy-jll-ijxnls-879[duthg] +lgh-kwujwl-usfvq-ugslafy-esfsywewfl-944[ilszy] +tvsnigxmpi-tpewxmg-kveww-xiglrspskc-152[gipsw] +joufsobujpobm-cbtlfu-dvtupnfs-tfswjdf-129[fubjo] +rwcnawjcrxwju-bljenwpna-qdwc-mnyuxhvnwc-225[wncja] +qzchnzbshud-okzrshb-fqzrr-rzkdr-989[rzhbd] +qzoggwtwsr-pogysh-rsjszcdasbh-896[sghor] +gzefmnxq-dmnnuf-xmnadmfadk-326[tvuiw] +qzoggwtwsr-pibbm-zopcfohcfm-792[jsmfu] +mvydjvxodqz-xviyt-xjvodib-hvivbzhzio-369[iceny] +wkqxodsm-lkcuod-cdybkqo-224[dkocq] +veqtekmrk-ikk-wxsveki-542[keivm] +zlkprjbo-doxab-yxphbq-pqloxdb-419[ckdtm] +buzahisl-ibuuf-klzpnu-721[stjnm] +hwdtljsnh-kqtbjw-ijajqturjsy-515[plnqy] +luxciuwncpy-jfumncw-alumm-lyuwkocmcncih-474[lqpco] +tinnm-ibghopzs-rms-aobousasbh-506[sboah] +pbeebfvir-rtt-ratvarrevat-403[tdokj] +dmybmsuzs-pkq-efadmsq-300[msdqa] +ujqgywfau-tmffq-dgyaklauk-970[yxmid] +ovbunmneqbhf-enoovg-hfre-grfgvat-481[efgno] +hqfxxnknji-kzeed-uqfxynh-lwfxx-wjhjnansl-957[nxfhj] +plolwdub-judgh-edvnhw-pdqdjhphqw-985[dsxhg] +nwlddtqtpo-awldetn-rcldd-nfdezxpc-dpcgtnp-353[dnptc] +bwx-amkzmb-xzwrmkbqtm-ntwemz-amzdqkma-668[swmnl] +bqxnfdmhb-qzaahs-rdquhbdr-443[bdhqa] +egdytrixat-ide-htrgti-uadltg-steadnbtci-297[zampy] +gsrwyqiv-kvehi-gerhc-gsexmrk-erepcwmw-880[bkwts] +nsyjwsfyntsfq-gfxpjy-jslnsjjwnsl-749[lvzus] +dfcxsqhwzs-pibbm-gvwddwbu-246[dqbem] +mtzslklcozfd-ojp-fdpc-epdetyr-613[dpcef] +gbc-frperg-ohaal-erfrnepu-351[reafg] +gvaaz-cbtlfu-efqbsunfou-311[dvnmz] +ugdgjxmd-tskcwl-umklgewj-kwjnauw-892[wgjku] +iruzfrtkzmv-avccpsvre-nfibjyfg-243[jzoyc] +shoewudys-hqrryj-bqrehqjeho-296[heqrj] +hwdtljsnh-kqtbjw-htsyfnsrjsy-827[dntpc] +zilqwikbqdm-kivlg-uiviomumvb-902[imvbk] +rsvxltspi-sfnigx-wxsveki-984[sixve] +surmhfwloh-gbh-xvhu-whvwlqj-387[hwluv] +ubhatstkwhnl-yehpxk-wxlbzg-137[raqjb] +oknkvcta-itcfg-uecxgpigt-jwpv-ocpcigogpv-596[cgpio] +amjmpdsj-djmucp-nspafyqgle-470[ztpqn] +zixppfcfba-avb-abpfdk-471[abfpc] +owshgfarwv-jsttal-vwkayf-944[smcyx] +vjpwncrl-ljwmh-lxjcrwp-lxwcjrwvnwc-589[irbxq] +qvbmzvibqwvit-ziuxioqvo-lgm-amzdqkma-928[hgfln] +lxuxaodu-kjbtnc-jwjuhbrb-147[bjuxa] +etaqigpke-fag-yqtmujqr-440[qaegt] +zekvierkzferc-irdgrxzex-jtrmvexvi-ylek-rthlzjzkzfe-633[gkyzp] +mfklstdw-hdsklau-yjskk-kwjnauwk-762[vnfzg] +pkl-oaynap-fahhuxawj-oanreyao-706[mdfpn] +hwdtljsnh-hmthtqfyj-rfsfljrjsy-359[sxziu] +fab-eqodqf-ngzzk-bgdotmeuzs-144[kxags] +tagzsrsjvgmk-tskcwl-vwhsjlewfl-424[ejuah] +kzgwomvqk-jiasmb-uizsmbqvo-590[mbiko] +qjopwxha-xqjju-oanreyao-758[ubmon] +hvbizodx-xmtjbzidx-nxvqzibzm-cpio-yzkgjthzio-889[rmyqo] +iuruxlar-kmm-jkvruesktz-644[kruma] +ujqgywfau-jsttal-vwhdgqewfl-710[hbdlx] +jlidywncfy-wuhxs-wiuncha-yhachyylcha-630[hycaw] +lugjuacha-wlsiayhcw-dyffsvyuh-uhufsmcm-890[juefh] +hjgbwuladw-xdgowj-hmjuzskafy-398[wqigl] +yuxufmdk-sdmpq-pkq-etubbuzs-456[wldkg] +vcibutulxiom-dyffsvyuh-qilembij-110[jdnmz] +nzwzcqfw-clmmte-dpcgtnpd-509[cdmnp] +aczupnetwp-nlyoj-nzletyr-zapcletzyd-665[zelnp] +htsxzrjw-lwfij-wfintfhynaj-kqtbjw-knsfshnsl-983[kytzm] +enqvbnpgvir-onfxrg-qrirybczrag-611[rgnbi] +molgbzqfib-ciltbo-xkxivpfp-159[biflo] +plolwdub-judgh-fkrfrodwh-ghyhorsphqw-517[hdorw] +gzefmnxq-omzpk-oazfmuzyqzf-872[zkycu] +qjopwxha-lhwopey-cnwoo-naoawnyd-186[cvyno] +jyfvnlupj-ipvohghykvbz-jovjvshal-ylzlhyjo-435[xlenk] +ajmrxjlcren-kjbtnc-jwjuhbrb-329[klcuz] +wdjcvuvmyjpn-ezggtwzvi-jkzmvodjin-603[gmveh] +muqfedyput-fbqijys-whqii-bqrehqjeho-192[vdlge] +ktfitzbgz-xzz-ftgtzxfxgm-605[izfql] +bknsykmdsfo-oqq-wkbuodsxq-458[stifb] +slqryzjc-hcjjwzcyl-yaosgqgrgml-314[qymir] +gpewwmjmih-veffmx-xvemrmrk-126[itcvu] +rdadguja-gpqqxi-ldgzhwde-297[hnvso] +lxaaxbren-mhn-cnlqwxuxph-251[xvjuz] +xst-wigvix-fewoix-gsrxemrqirx-698[xireg] +iehepwnu-cnwza-zua-wymqeoepekj-108[sdnmj] +oknkvcta-itcfg-rncuvke-itcuu-hkpcpekpi-908[pgfbe] +enqvbnpgvir-ohaal-hfre-grfgvat-351[hsgdf] +ixccb-iorzhu-hqjlqhhulqj-647[hqcij] +apuut-agjrzm-jkzmvodjin-915[jamuz] +hqcfqwydw-rqiauj-ijehqwu-530[qwhij] +vhehkyne-ktwbhtvmbox-lvtoxgzxk-angm-kxvxbobgz-683[tsurp] +gntmfefwitzx-idj-knsfshnsl-723[fnsit] +ajvyjprwp-bljenwpna-qdwc-ujkxajcxah-563[yskxv] +joufsobujpobm-dboez-dpbujoh-mbcpsbupsz-259[bopuj] +xlrypetn-prr-nzyeltyxpye-847[yeprl] +zuv-ykixkz-xgsvgmotm-lruckx-jkvgxzsktz-696[ijlfz] +jqwpihizlwca-moo-lmxtwgumvb-798[nkzsr] +jsvagsulanw-kusnwfywj-zmfl-klgjsyw-736[ectrq] +ykhknbqh-nwxxep-nawymqeoepekj-758[cfvdy] +kzeed-gfxpjy-tujwfyntsx-385[aunmy] +slqryzjc-qaytclecp-fslr-dglylagle-184[lcyae] +laffe-vrgyzoi-mxgyy-iutzgotsktz-410[gtyzf] +gpbepvxcv-hrpktcvtg-wjci-stktadebtci-141[zoqhx] +yaxsnlcrun-lqxlxujcn-mnyuxhvnwc-641[nxclu] +tagzsrsjvgmk-kusnwfywj-zmfl-dstgjslgjq-294[gayon] +kwzzwaqdm-zijjqb-xczkpiaqvo-902[mkgjt] +mfklstdw-usfvq-ugslafy-xafsfuafy-684[fsaul] +zvyvgnel-tenqr-ovbunmneqbhf-sybjre-fgbentr-117[shfce] +emixwvqhml-akidmvomz-pcvb-amzdqkma-720[relbk] +rdggdhxkt-eaphixr-vgphh-hwxeexcv-973[xozyv] +bqvvu-zua-iwngapejc-992[nmdax] +bjfutsneji-kqtbjw-wjxjfwhm-203[irjmx] +bdavqofuxq-nmewqf-abqdmfuaze-976[vgzhc] +vdzonmhydc-okzrshb-fqzrr-rzkdr-313[rzdhk] +sawlkjevaz-oywrajcan-dqjp-wjwhuoeo-836[ajwoe] +fruurvlyh-gbh-sxufkdvlqj-413[kftmo] +fruurvlyh-sodvwlf-judvv-ghsorbphqw-569[tadzk] +sbejpbdujwf-tdbwfohfs-ivou-dpoubjonfou-103[rbqio] +oxmeeuruqp-otaoaxmfq-xasuefuoe-222[ozipy] +rdggdhxkt-qphzti-ejgrwphxcv-921[tusrb] +dkqjcbctfqwu-fag-yqtmujqr-882[kzvuf] +gzefmnxq-dmnnuf-mzmxkeue-248[menfu] +kgjgrypw-epybc-aylbw-kylyeckclr-314[mlvhs] +bwx-amkzmb-akidmvomz-pcvb-abwziom-148[nmtyw] +ckgvutofkj-sorozgxe-mxgjk-xghhoz-xkykgxin-670[gkxoh] +zhdsrqlchg-fkrfrodwh-ghsorbphqw-803[cjybd] +hvbizodx-wvnfzo-adivixdib-603[xwstz] +tvsnigxmpi-gerhc-hitpscqirx-204[icghp] +jrncbavmrq-cynfgvp-tenff-npdhvfvgvba-741[ybszn] +mbiyqoxsm-pvygob-psxkxmsxq-952[mjfnc] +gsrwyqiv-kvehi-veffmx-gywxsqiv-wivzmgi-282[bdrgj] +clxalrtyr-xtwtelcj-rclop-awldetn-rcldd-cpdplcns-847[lcdrt] +ahngzyzqcntr-bzmcx-sdbgmnknfx-287[fmyqt] +zgmfyxypbmsq-aylbw-amyrgle-bctcjmnkclr-340[mybcl] +fydelmwp-prr-nzyeltyxpye-717[gfjxa] +rnqnyfwd-lwfij-rflsjynh-wfggny-xfqjx-931[fnjwy] +zilqwikbqdm-xtiabqk-oziaa-twoqabqka-278[ftonr] +bjfutsneji-gzssd-uzwhmfxnsl-827[sfjnu] +ojk-nzxmzo-pinovwgz-agjrzm-jkzmvodjin-733[zjomn] +ygcrqpkbgf-dcumgv-fgukip-570[vmhxn] +dzczkrip-xiruv-srjbvk-jyzggzex-945[uzneh] +bkzrrhehdc-bzmcx-lzmzfdldms-287[eclvd] +ziuxioqvo-kpwkwtibm-lmxizbumvb-564[txsru] +kzgwomvqk-lgm-lmxizbumvb-122[mbgkl] +htsxzrjw-lwfij-idj-xjwanhjx-463[obdze] +gntmfefwitzx-kqtbjw-wjxjfwhm-749[qzutv] +htsxzrjw-lwfij-jll-tujwfyntsx-671[xugan] +ymszqfuo-rxaiqd-etubbuzs-118[ubqsz] +vdzonmhydc-azrjds-lzqjdshmf-989[dzhjm] +dyz-combod-bkllsd-oxqsxoobsxq-354[nrmkx] +pyknyegle-afmamjyrc-yaosgqgrgml-626[zdlfg] +oxmeeuruqp-vqxxknqmz-oazfmuzyqzf-352[rnsyt] +qjopwxha-xqjju-pnwejejc-654[jepqw] +wifilzof-jfumncw-alumm-xypyfijgyhn-604[fjerw] +vagreangvbany-enoovg-fuvccvat-533[gncot] +avw-zljyla-zjhclunly-obua-thuhnltlua-669[wathd] +ynssr-lvtoxgzxk-angm-mxvaghehzr-345[vopnm] +cvabijtm-uqtqbizg-ozilm-xtiabqk-oziaa-lmdmtwxumvb-928[imabt] +frqvxphu-judgh-sodvwlf-judvv-pdqdjhphqw-751[azovy] +qmpmxevc-kvehi-jyddc-fyrrc-qerekiqirx-282[ygmhv] +fodvvlilhg-udeelw-pdunhwlqj-153[sndmo] +gpsxdprixkt-ytaanqtpc-gthtpgrw-765[tpgar] +cvabijtm-kpwkwtibm-bmkpvwtwog-174[wbkmt] +vetllbybxw-yehpxk-wxlbzg-891[yekxl] +nzwzcqfw-nlyoj-dezclrp-275[zclnw] +qmpmxevc-kvehi-glsgspexi-gsrxemrqirx-828[exgim] +xtwtelcj-rclop-dnlgpyrpc-sfye-hzcvdsza-873[xmpon] +jrncbavmrq-pnaql-jbexfubc-793[bacjn] +ohmnuvfy-yaa-lymyulwb-266[yalmu] +nzwzcqfw-aczupnetwp-awldetn-rcldd-pyrtyppctyr-613[pctwd] +vqr-ugetgv-uecxgpigt-jwpv-rwtejcukpi-752[geptu] +tfcfiwlc-lejkrscv-upv-rthlzjzkzfe-607[tcfns] +hwdtljsnh-uqfxynh-lwfxx-knsfshnsl-229[xtngb] +iuruxlar-igtje-iayzuskx-ykxboik-930[kmghr] +xjgjmapg-ezggtwzvi-hvivbzhzio-421[gzivh] +gpbepvxcv-hrpktcvtg-wjci-hwxeexcv-349[xswrp] +tcorcikpi-eqttqukxg-gii-hkpcpekpi-622[ruxyk] +ygcrqpkbgf-ejqeqncvg-ucngu-440[gcqen] +etyyx-dff-qdbdhuhmf-729[wskto] +tfiifjzmv-upv-vexzevvizex-399[veizf] +houngfgxjuay-sorozgxe-mxgjk-jek-aykx-zkyzotm-566[aimhd] +hcd-gsqfsh-dzoghwq-ufogg-aobousasbh-714[ynfie] +foadouwbu-qobrm-qcohwbu-zopcfohcfm-792[obcfu] +ynukcajey-oywrajcan-dqjp-wjwhuoeo-680[jaowy] +rflsjynh-jll-rfsfljrjsy-489[jlfrs] +vkrhzxgbv-pxtihgbsxw-yehpxk-mktbgbgz-917[igtvy] +hjgbwuladw-tskcwl-dgyaklauk-294[aklwd] +cvabijtm-jcvvg-zmikycqaqbqwv-772[vcqab] +odiih-yujbcrl-pajbb-vjwjpnvnwc-849[jbcin] +tinnm-tzcksf-igsf-hsghwbu-220[bnamt] +pbeebfvir-wryylorna-jbexfubc-637[egouk] +xmtjbzidx-xviyt-yzqzgjkhzio-265[vxsry] +avw-zljyla-zjhclunly-obua-klwhyatlua-201[sjayl] +dfcxsqhwzs-qvcqczohs-fsgsofqv-246[dosrp] +rzvkjiduzy-xviyt-xjvodib-kpmxcvndib-291[cwzla] +gcfcnuls-aluxy-mwupyhayl-bohn-wihnuchgyhn-968[hnuyc] +dyz-combod-lsyrkjkbnyec-bkllsd-domrxyvyqi-328[vtxzd] +fruurvlyh-mhoobehdq-dftxlvlwlrq-907[jlves] +mrxivrexmsrep-gerhc-gsexmrk-tyvglewmrk-152[wzuly] +votubcmf-gmpxfs-pqfsbujpot-883[fpbmo] +bljenwpna-qdwc-anbnjalq-329[lcwmy] +xekdwvwnzkqo-ydkykhwpa-wjwhuoeo-550[toavy] +yhkpvhjapcl-yhiipa-jbzavtly-zlycpjl-201[lpyah] +xjinphzm-bmvyz-wvnfzo-nzmqdxzn-681[ykfxe] +pbeebfvir-rtt-ybtvfgvpf-507[bftve] +gvcskirmg-ikk-hizipstqirx-750[iyquj] +yhwooebeaz-lhwopey-cnwoo-oanreyao-108[tmuag] +wlqqp-jtrmvexvi-ylek-nfibjyfg-581[tnrhf] +tfiifjzmv-avccpsvre-jyzggzex-477[mvnjr] +xjmmjndqz-zbb-yzndbi-811[bzdjm] +qjopwxha-xwogap-nayaerejc-160[isjqz] +qzlozfhmf-azrjds-knfhrshbr-573[dfmys] +vhglnfxk-zktwx-vetllbybxw-vtgwr-vhtmbgz-ybgtgvbgz-761[gbtvl] +etaqigpke-ecpfa-eqcvkpi-cpcnauku-336[eyxtb] +lqwhuqdwlrqdo-fdqgb-frdwlqj-zrunvkrs-933[tvijl] +gvcskirmg-tvsnigxmpi-gerhc-gsexmrk-wlmttmrk-828[szawg] +irdgrxzex-kfg-jvtivk-wcfnvi-jyzggzex-269[givxz] +cqwdujys-sqdto-iqbui-270[siyeh] +bnqqnrhud-bgnbnkzsd-trdq-sdrshmf-807[dnbqr] +rgndvtcxr-hrpktcvtg-wjci-prfjxhxixdc-193[yjsht] +qekrixmg-hci-xvemrmrk-282[mreik] +xcitgcpixdcpa-snt-apqdgpidgn-349[mfywv] +wkqxodsm-pvygob-wkbuodsxq-978[ysamp] +aoubshwq-qvcqczohs-kcfygvcd-558[ytvls] +tyepcyletzylw-qwzhpc-opalcexpye-301[gamdn] +tfcfiwlc-treup-uvjzxe-607[nrthm] +ubhatstkwhnl-lvtoxgzxk-angm-inkvatlbgz-865[tagkl] +wihmogyl-aluxy-yaa-qilembij-890[emvct] +bxaxipgn-vgpst-ltpedcxots-gpqqxi-hidgpvt-245[pgtxi] +jfifqxov-doxab-mixpqfz-doxpp-obpbxoze-107[ghpyi] +gvaaz-dpssptjwf-sbccju-fohjoffsjoh-675[pfzwa] +gzefmnxq-eomhqzsqd-tgzf-efadmsq-378[qefmz] +emixwvqhml-kivlg-zmkmqdqvo-876[dcfin] +fodvvlilhg-fdqgb-frqwdlqphqw-725[qdflg] +laffe-pkrrehkgt-rumoyzoiy-670[dyjut] +egdytrixat-qphzti-tcvxcttgxcv-245[tcxgi] +htqtwkzq-wfintfhynaj-xhfajsljw-mzsy-jslnsjjwnsl-645[eynzi] +vrurcjah-pajmn-npp-mnyuxhvnwc-563[npach] +ejpanjwpekjwh-acc-klanwpekjo-576[jaekp] +kwvacumz-ozilm-kpwkwtibm-uizsmbqvo-876[mikwz] +hjgbwuladw-xdgowj-esfsywewfl-866[byzdm] +pbybeshy-wryylorna-npdhvfvgvba-351[stmxy] +qjopwxha-ywjzu-hkceopeyo-654[tysoa] +lhkhszqx-fqzcd-dff-vnqjrgno-417[fqdhn] +rgllk-otaoaxmfq-fdmuzuzs-768[vkqac] +ohmnuvfy-xsy-omyl-nymncha-214[hmtfs] +enzcntvat-cynfgvp-tenff-nanylfvf-455[cuimh] +sedikcuh-whqtu-sehheiylu-tou-bqrehqjeho-868[ydaux] +tyepcyletzylw-ojp-opalcexpye-145[wciks] +udpsdjlqj-hjj-frqwdlqphqw-309[gbpcz] +eqpuwogt-itcfg-lgnnadgcp-vtckpkpi-388[gpcti] +rkpqxyib-pzxsbkdbo-erkq-zrpqljbo-pbosfzb-133[bpkoq] +kdijqrbu-sxesebqju-tufqhjcudj-114[tdbva] +gsvvswmzi-wgezirkiv-lyrx-irkmriivmrk-412[twsrk] +ucynmlgxcb-qaytclecp-fslr-amlryglkclr-704[lcrya] +xst-wigvix-veffmx-wxsveki-100[ocvmr] +surmhfwloh-vfdyhqjhu-kxqw-frqwdlqphqw-829[hqwfd] +xmrrq-usfvq-esfsywewfl-528[alidm] +zhdsrqlchg-lqwhuqdwlrqdo-sodvwlf-judvv-ghsorbphqw-777[rtnmj] +egdytrixat-xcitgcpixdcpa-rwdrdapit-uxcpcrxcv-245[cdabn] +yrwxefpi-ikk-gywxsqiv-wivzmgi-152[iwgkv] +qcffcgwjs-foppwh-obozmgwg-558[zotsu] +veqtekmrk-gerhc-gsexmrk-hitpscqirx-568[nczdq] +gzefmnxq-pkq-pqbmdfyqzf-794[jxrmh] +eadalsjq-yjsvw-usfvq-ugslafy-ugflsafewfl-632[fsalu] +esyfwlau-usfvq-ugslafy-vwhdgqewfl-684[flsuw] +ktfitzbgz-fbebmtkr-zktwx-utldxm-wxlbzg-683[afwhg] +wihmogyl-aluxy-vohhs-uwkocmcncih-292[wzryd] +bkzrrhehdc-idkkxadzm-lzmzfdldms-677[oxwvn] +clxalrtyr-qwzhpc-lnbftdtetzy-249[zryvn] +rgllk-fab-eqodqf-vqxxknqmz-pqbxakyqzf-222[qfkxa] +xjinphzm-bmvyz-xviyt-mzxzdqdib-603[xnhfs] +htsxzrjw-lwfij-hmthtqfyj-wjfhvznxnynts-385[zreuy] +myvybpev-gokzyxsjon-oqq-nozvyiwoxd-692[iyzuj] +hcd-gsqfsh-pogysh-gvwddwbu-480[mysuk] +hcd-gsqfsh-foppwh-rsgwub-428[kvtfs] +frqvxphu-judgh-exqqb-uhvhdufk-621[wtgmn] +vhglnfxk-zktwx-vahvhetmx-vhgmtbgfxgm-345[hnamj] +tagzsrsjvgmk-usfvq-ugslafy-ugflsafewfl-892[yckbv] +joufsobujpobm-gmpxfs-vtfs-uftujoh-233[foujs] +zsxyfgqj-ojqqdgjfs-zxjw-yjxynsl-593[jqsxy] +bnknqetk-atmmx-qdzbpthrhshnm-131[ecnmt] +hmsdqmzshnmzk-dff-sqzhmhmf-859[dnxcz] +hqtyeqsjylu-tou-udwyduuhydw-348[uydhq] +ktiaaqnqml-kpwkwtibm-zmikycqaqbqwv-772[tlrsg] +nzydfxpc-rclop-mtzslklcozfd-mfyyj-nfdezxpc-dpcgtnp-951[cpdfz] +ckgvutofkj-hatte-gtgreyoy-644[tgeko] +iwcjapey-zua-paydjkhkcu-628[hntmg] +bnknqetk-okzrshb-fqzrr-trdq-sdrshmf-729[tuzoy] +qmpmxevc-kvehi-yrwxefpi-glsgspexi-wlmttmrk-828[hsyvf] +amjmpdsj-njyqrga-epyqq-qcptgacq-106[bhysd] +dwbcjkun-ljwmh-mnyuxhvnwc-641[wuyrz] +gspsvjyp-jpsaiv-hiwmkr-854[zthel] +gsrwyqiv-kvehi-gerhc-stivexmsrw-750[whgse] +xjgjmapg-wpiit-ozxcijgjbt-889[ytsop] +xgjougizobk-kmm-rghuxgzuxe-280[cwrty] +zovldbkfz-oxjmxdfkd-oxyyfq-ixyloxqlov-653[snkwb] +qczcftiz-qvcqczohs-gsfjwqsg-142[cqszf] +krxqjijamxdb-mhn-ldbcxvna-bnaerln-771[ravbt] +pybgmyargtc-bwc-bcqgel-860[bcgya] +wyvqljapsl-jovjvshal-shivyhavyf-773[vahjl] +pbafhzre-tenqr-onfxrg-bcrengvbaf-221[zyaro] +glrcplyrgmlyj-bwc-pcqcypaf-132[clpyg] +dpmpsgvm-dboez-dpbujoh-tfswjdft-545[bdmzf] +dkqjcbctfqwu-rncuvke-itcuu-cpcnauku-700[cuknq] +ajmrxjlcren-yujbcrl-pajbb-anbnjalq-459[yslvg] +oazegyqd-sdmpq-bxmefuo-sdmee-fqotzaxask-586[vfmnu] +ugdgjxmd-jsttal-ksdwk-632[hfjix] +aietsrmdih-gvcskirmg-tpewxmg-kveww-vigimzmrk-412[kfcim] +drxevkzt-jtrmvexvi-ylek-uvgcfpdvek-685[vekdr] +excdklvo-bkllsd-nozvyiwoxd-250[dlokv] +uwtojhynqj-hfsid-wjxjfwhm-281[fqsmx] +plolwdub-judgh-udeelw-uhfhlylqj-205[ludhe] +oqnidbshkd-dff-zmzkxrhr-729[cvlkx] +bknsykmdsfo-tovvilokx-bomosfsxq-328[boqly] +dpotvnfs-hsbef-qspkfdujmf-cvooz-tijqqjoh-961[zmnyi] +gspsvjyp-fyrrc-gsrxemrqirx-490[rsgpx] +gifavtkzcv-szfyrqriuflj-wcfnvi-uvmvcfgdvek-139[zadfj] +gsrwyqiv-kvehi-wgezirkiv-lyrx-wxsveki-490[alpzb] +ykhknbqh-ydkykhwpa-zalhkuiajp-862[khayp] +dmybmsuzs-yuxufmdk-sdmpq-bxmefuo-sdmee-fqotzaxask-586[nwikx] +nwzekwypera-bhksan-nayaerejc-940[xnmta] +wrs-vhfuhw-hjj-zrunvkrs-283[hrjsu] +ajyqqgdgcb-pyzzgr-amlryglkclr-782[lozts] +ohmnuvfy-jfumncw-alumm-womnigyl-mylpcwy-110[mqrgd] +foadouwbu-suu-obozmgwg-792[hgkuj] +wdjcvuvmyjpn-ytz-yzkgjthzio-109[jyztv] +ucynmlgxcb-pyzzgr-qfgnngle-210[iftry] +ymszqfuo-omzpk-oamfuzs-pqhqxabyqzf-872[qzfmo] +clotzlnetgp-ojp-opawzjxpye-769[pnhtz] +mhi-lxvkxm-yehpxk-ftgtzxfxgm-657[etajx] +surmhfwloh-fkrfrodwh-uhfhlylqj-699[rkslj] +iruzfrtkzmv-tyftfcrkv-kirzezex-841[emztq] +bdavqofuxq-nmewqf-ogefayqd-eqdhuoq-352[jpmyv] +bdavqofuxq-otaoaxmfq-xasuefuoe-326[aofqu] +gpsxdprixkt-tvv-ldgzhwde-219[dgptv] +pbeebfvir-rtt-bcrengvbaf-897[enlaq] +jchipqat-gpqqxi-bpgztixcv-375[cnqyt] +glrcplyrgmlyj-qaytclecp-fslr-pcqcypaf-574[clpyr] +pejji-oqq-vyqscdsmc-640[qcjsd] +houngfgxjuay-yigbktmkx-natz-xkykgxin-774[mszcw] +ltpedcxots-jchipqat-gpqqxi-bpcpvtbtci-219[isgfv] +gifavtkzcv-tyftfcrkv-drerxvdvek-659[vbdyz] +vjpwncrl-mhn-orwjwlrwp-641[wrjln] +vjpwncrl-ouxfna-bcxajpn-511[ydzfw] +rzvkjiduzy-xviyt-xjvodib-adivixdib-187[idvxb] +tinnm-suu-twbobqwbu-272[datjf] +apuut-xviyt-vxlpdndodji-941[zrtso] +jxdkbqfz-zixppfcfba-mixpqfz-doxpp-jxohbqfkd-705[fpxbd] +zilqwikbqdm-lgm-kwvbiqvumvb-876[bqpme] +jyddc-wgezirkiv-lyrx-wxsveki-256[sjntv] +ahngzyzqcntr-qzaahs-zbpthrhshnm-963[fzvai] +ksodcbwnsr-qfmcusbwq-suu-qighcasf-gsfjwqs-350[wyezk] +atyzghrk-igtje-iugzotm-jkyomt-462[ksuli] +dwbcjkun-ajmrxjlcren-yujbcrl-pajbb-nwprwnnarwp-563[tjsqg] +aoubshwq-dzoghwq-ufogg-aofyshwbu-896[hwcmz] +apwmeclga-npmhcargjc-njyqrga-epyqq-rpyglgle-340[dgtsc] +apwmeclga-aylbw-amyrgle-dglylagle-210[iumzy] +ydjuhdqjyedqb-rkddo-sedjqydcudj-738[ycbmx] +iuxxuyobk-xgjougizobk-pkrrehkgt-sgtgmksktz-644[pzsmw] +bnmrtldq-fqzcd-bgnbnkzsd-vnqjrgno-521[nbdqg] +wfruflnsl-gzssd-wjhjnansl-177[wtmsg] +yhwooebeaz-ywjzu-klanwpekjo-680[eowaj] +pynffvsvrq-cynfgvp-tenff-ernpdhvfvgvba-663[vbduy] +zilqwikbqdm-ntwemz-uizsmbqvo-356[yhenq] +jvsvymbs-zjhclunly-obua-jvuahputlua-721[uajlv] +fhezusjybu-rqiauj-tufbeocudj-400[ecamb] +ftzgxmbv-wrx-xgzbgxxkbgz-293[xgbzf] +chnylhuncihuf-xsy-xypyfijgyhn-578[jigcy] +vhkkhlbox-pxtihgbsxw-cxeeruxtg-wxlbzg-111[hsuty] +foadouwbu-tzcksf-gozsg-246[ofgsu] +xzwrmkbqtm-moo-nqvivkqvo-434[moqvk] +gvaaz-cvooz-dpoubjonfou-415[mcnzb] +pbafhzre-tenqr-enoovg-grpuabybtl-169[bktjl] +uwtojhynqj-gzssd-ywfnsnsl-723[phguv] +dlhwvupglk-zjhclunly-obua-klwhyatlua-227[luahk] +vhkkhlbox-vhehkyne-vahvhetmx-ybgtgvbgz-215[hvbeg] +qlm-pbzobq-gbiivybxk-lmboxqflkp-809[blqik] +forwcoqhwjs-qvcqczohs-ghcfous-792[mtuqn] +eqpuwogt-itcfg-dwppa-fgrnqaogpv-570[gpafo] +lxuxaodu-bljenwpna-qdwc-jwjuhbrb-121[rbqfd] +ykhknbqh-xqjju-oanreyao-680[ahjkn] +ugfkmewj-yjsvw-hdsklau-yjskk-kzahhafy-918[kahjs] +gbc-frperg-fpniratre-uhag-fnyrf-897[dskta] +myxcewob-qbkno-lexxi-wkxkqowoxd-770[spdoc] +cqwdujys-fbqijys-whqii-huiuqhsx-998[uhebs] +ckgvutofkj-igtje-iugzotm-rghuxgzuxe-774[gutei] +excdklvo-lexxi-psxkxmsxq-302[ypsmx] +mbiyqoxsm-dyz-combod-mkxni-mykdsxq-zebmrkcsxq-692[fnhpz] +zlkprjbo-doxab-gbiivybxk-xkxivpfp-809[ydtxn] +wdjcvuvmyjpn-ezggtwzvi-hvmfzodib-603[vzdgi] +njmjubsz-hsbef-fhh-bobmztjt-649[mxkjw] +wsvsdkbi-qbkno-oqq-ecob-docdsxq-796[rglok] +htsxzrjw-lwfij-gfxpjy-fsfqdxnx-307[uyteb] +wpuvcdng-ejqeqncvg-yqtmujqr-882[svamn] +tagzsrsjvgmk-hdsklau-yjskk-ugflsafewfl-606[tysrn] +kwtwznct-akidmvomz-pcvb-zmamizkp-200[skpom] +dpmpsgvm-dboez-dpbujoh-fohjoffsjoh-311[fknst] +rnqnyfwd-lwfij-hmthtqfyj-xytwflj-567[gzkol] +zntargvp-pnaql-hfre-grfgvat-923[yijbm] +dzczkrip-xiruv-treup-tfrkzex-drerxvdvek-347[vrmsu] +ajyqqgdgcb-afmamjyrc-sqcp-rcqrgle-522[cqagr] +pelbtravp-ohaal-erprvivat-715[jnbmz] +irdgrxzex-sleep-ivrthlzjzkzfe-113[bmsnw] +eqpuwogt-itcfg-tcddkv-fgxgnqrogpv-804[gtcdf] +cvabijtm-moo-ivitgaqa-226[darfu] +ytu-xjhwjy-xhfajsljw-mzsy-zxjw-yjxynsl-281[wzjeb] +fkqbokxqflkxi-yxphbq-obxznrfpfqflk-809[dcasb] +gokzyxsjon-sxdobxkdsyxkv-mkxni-ecob-docdsxq-276[zypso] +ibghopzs-suu-kcfygvcd-402[cgsub] +tfiifjzmv-srjbvk-uvjzxe-581[sovtj] +gntmfefwitzx-gfxpjy-xmnuunsl-619[fnxgm] +lgh-kwujwl-bwddqtwsf-vwhsjlewfl-788[tlejf] +hjgbwuladw-wyy-ghwjslagfk-164[wgahj] +nzwzcqfw-ojp-qtylyntyr-431[ynqtw] +sbejpbdujwf-sbccju-vtfs-uftujoh-909[kujit] +vhkkhlbox-wrx-ftkdxmbgz-241[uwzex] +lahxpnwrl-bljenwpna-qdwc-cajrwrwp-381[yjzno] +lugjuacha-jfumncw-alumm-jolwbumcha-838[uamcj] +gvcskirmg-glsgspexi-jmrergmrk-828[smeyi] +thnulapj-ihzrla-thyrlapun-955[ahlnp] +sno-rdbqds-bzmcx-btrsnldq-rdquhbd-937[dbqrs] +vdzonmhydc-eknvdq-dmfhmddqhmf-781[dmhfn] +iehepwnu-cnwza-xqjju-ykjpwejiajp-368[jepwa] +dfcxsqhwzs-dzoghwq-ufogg-cdsfohwcbg-974[gcdfh] +sbqiiyvyut-tou-jhqydydw-608[okbzs] +htsxzrjw-lwfij-gzssd-uzwhmfxnsl-801[nmtjq] +hvbizodx-rzvkjiduzy-xviyt-yzqzgjkhzio-213[zivyd] +ajmrxjlcren-ljwmh-lxjcrwp-bqryyrwp-745[kheat] +vkppo-shoewudys-tou-udwyduuhydw-556[udowy] +dpotvnfs-hsbef-dmbttjgjfe-gmpxfs-nbslfujoh-363[qapli] +glrcplyrgmlyj-djmucp-qrmpyec-158[clmpr] +emixwvqhml-xtiabqk-oziaa-wxmzibqwva-642[rkpba] +qczcftiz-dzoghwq-ufogg-aofyshwbu-298[lmcuy] +cvabijtm-zilqwikbqdm-akidmvomz-pcvb-nqvivkqvo-746[ynxzo] +pkl-oaynap-acc-wjwhuoeo-134[jxlai] +xjmmjndqz-kgvnodx-bmvnn-rjmfncjk-291[njmdk] +ejpanjwpekjwh-nwxxep-nayaerejc-550[lisvd] +htwwtxnaj-htsxzrjw-lwfij-hfsid-htfynsl-wjfhvznxnynts-541[hntwf] +mbiyqoxsm-mkxni-mykdsxq-crszzsxq-770[zhowm] +rmn-qcapcr-ucynmlgxcb-cee-pcqcypaf-886[cpaem] +rtqlgevkng-ejqeqncvg-fgxgnqrogpv-466[zktns] +fydelmwp-mfyyj-nfdezxpc-dpcgtnp-769[anfej] +yuxufmdk-sdmpq-otaoaxmfq-pqbxakyqzf-742[ohxti] +vxupkizork-igtje-xkgiwaoyozout-592[bmwjf] +veqtekmrk-tvsnigxmpi-gerhc-gsexmrk-gywxsqiv-wivzmgi-802[dglps] +nsyjwsfyntsfq-uqfxynh-lwfxx-ijuqtdrjsy-931[ymnhu] +gifavtkzcv-avccpsvre-fgvirkzfej-841[ypigz] +krxqjijamxdb-kdwwh-mnyjacvnwc-641[krnma] +dszphfojd-ezf-sftfbsdi-805[fdszb] +xmrrq-tmffq-lwuzfgdgyq-372[fqgmr] +tagzsrsjvgmk-xdgowj-vwhsjlewfl-788[gjswl] +lsyrkjkbnyec-mkxni-nofovyzwoxd-614[knoyx] +dwbcjkun-mhn-bjunb-173[mykra] +vhehkyne-vtgwr-nlxk-mxlmbgz-319[eghkl] +bkzrrhehdc-bnqqnrhud-bzmcx-bnzshmf-otqbgzrhmf-677[xaszn] +oxmeeuruqp-bxmefuo-sdmee-abqdmfuaze-248[udtec] +jlidywncfy-mwupyhayl-bohn-uhufsmcm-500[yhmuc] +xjmmjndqz-zbb-mzvxlpdndodji-239[djmzb] +yuxufmdk-sdmpq-omzpk-qzsuzqqduzs-534[ofrpg] +tfejldvi-xiruv-vxx-uvgrikdvek-659[cnesm] +yaxsnlcrun-ajkkrc-anbnjalq-979[nmivs] +tvsnigxmpi-ikk-wivzmgiw-880[agunv] +mrxivrexmsrep-tpewxmg-kveww-viwievgl-698[evwim] +nglmtuex-yehpxk-labiibgz-241[begil] +zuv-ykixkz-ixeumktoi-igtje-iugzotm-aykx-zkyzotm-670[pjybl] +forwcoqhwjs-dzoghwq-ufogg-difqvogwbu-272[xkwoz] +ajyqqgdgcb-qaytclecp-fslr-bcqgel-886[mkvsi] +myxcewob-qbkno-mkxni-mykdsxq-wkbuodsxq-770[zmijb] +uwtojhynqj-kqtbjw-yjhmstqtld-333[jtqhw] +wsvsdkbi-qbkno-lkcuod-dbksxsxq-406[biaoe] +gpbepvxcv-rpcsn-rdpixcv-advxhixrh-895[dcwgp] +muqfedyput-isqludwuh-xkdj-mehaixef-712[betdq] +ckgvutofkj-inuiurgzk-xkgiwaoyozout-956[sazyo] +wfruflnsl-uqfxynh-lwfxx-btwpxmtu-541[fxluw] +qfmcusbwq-rms-igsf-hsghwbu-246[sbfgh] +ynukcajey-nwxxep-qoan-paopejc-602[htmbv] +ujqgywfau-uzgugdslw-jwkwsjuz-138[newms] +yflexwxoalrp-zxkav-cfkxkzfkd-705[ctnsy] +vjpwncrl-lqxlxujcn-mnyuxhvnwc-953[nawmz] +willimcpy-wuhxs-lyuwkocmcncih-786[cilwh] +mtzslklcozfd-clmmte-cpnptgtyr-119[tjkgv] +xlrypetn-awldetn-rcldd-cplnbftdtetzy-795[tdlen] +vkppo-rqiauj-huqsgkyiyjyed-452[yijkp] +vxupkizork-lruckx-jkbkruvsktz-124[eumyz] +diozmivodjivg-agjrzm-nzmqdxzn-915[otpfl] +owshgfarwv-hdsklau-yjskk-klgjsyw-918[qcjim] +zuv-ykixkz-igtje-iugzotm-zkinturume-202[plvqf] +zlilocri-oxyyfq-bkdfkbbofkd-835[bswmn] +ziuxioqvo-lgm-amzdqkma-798[maioq] +xqvwdeoh-sodvwlf-judvv-ghyhorsphqw-517[hvdow] +ovbunmneqbhf-enqvbnpgvir-onfxrg-qrfvta-507[nvbfq] +gbc-frperg-pnaql-genvavat-351[pmzkq] +eadalsjq-yjsvw-jsttal-suimakalagf-580[zjghy] +rdadguja-rpcsn-rdpixcv-apqdgpidgn-245[dpagr] +tbxmlkfwba-pzxsbkdbo-erkq-abpfdk-523[vifrq] +ocipgvke-uecxgpigt-jwpv-ugtxkegu-544[abfsh] +ovbunmneqbhf-zvyvgnel-tenqr-wryylorna-ybtvfgvpf-481[hxymg] +pinovwgz-xjinphzm-bmvyz-agjrzm-ozxcijgjbt-681[cqlnu] +tinnm-qobrm-ghcfous-220[hyczt] +iuruxlar-yigbktmkx-natz-ykxboiky-748[kixya] +bkzrrhehdc-bzmcx-bnzshmf-cdrhfm-209[hbcmr] +gpsxdprixkt-tvv-uxcpcrxcv-973[xcpvr] +forwcoqhwjs-rms-hfowbwbu-974[stzrm] +zovldbkfz-fkqbokxqflkxi-mixpqfz-doxpp-cfkxkzfkd-705[tsmfo] +vetllbybxw-lvtoxgzxk-angm-ftgtzxfxgm-371[sbemy] +hwbba-ejqeqncvg-tgugctej-232[iyrqv] +vqr-ugetgv-lgnnadgcp-wugt-vguvkpi-596[gvunp] +xgvnndadzy-wpiit-yzndbi-343[rawyd] +jxdkbqfz-oxyyfq-qbzeklildv-107[qbdfk] +wlsiayhcw-luvvcn-mufym-656[jbvne] +surmhfwloh-fdqgb-ghvljq-621[ymnve] +mvkccspson-bkllsd-vklybkdybi-432[yscux] +dszphfojd-sbccju-dvtupnfs-tfswjdf-129[itbfs] +lsyrkjkbnyec-lexxi-crszzsxq-978[sxcek] +qlm-pbzobq-mixpqfz-doxpp-zlkqxfkjbkq-211[satyb] +bknsykmdsfo-nio-kmaescsdsyx-744[tspif] +bpvctixr-rpcsn-rjhidbtg-htgkxrt-713[rtbcg] +sebehvkb-rqiauj-udwyduuhydw-140[udbeh] +zhdsrqlchg-fdqgb-hqjlqhhulqj-387[zptrs] +qxdwpopgsdjh-rpcsn-sthxvc-635[nbixj] +pualyuhapvuhs-msvdly-klzpnu-721[ulpah] +sbqiiyvyut-shoewudys-isqludwuh-xkdj-jhqydydw-894[dysuh] +wsvsdkbi-qbkno-lexxi-dbksxsxq-614[onzwh] +ydjuhdqjyedqb-rqiauj-efuhqjyedi-894[ocdpe] +kwzzwaqdm-ntwemz-wxmzibqwva-434[nwzml] +qspkfdujmf-fhh-nbobhfnfou-571[zpyau] +bxaxipgn-vgpst-tvv-detgpixdch-583[xwiac] +qfmcusbwq-dfcxsqhwzs-xszzmpsob-fsqswjwbu-402[lstrx] +dpmpsgvm-dboez-sfdfjwjoh-337[dfjmo] +dzoghwq-ufogg-fsgsofqv-636[gfoqs] +nzwzcqfw-dnlgpyrpc-sfye-qtylyntyr-509[milhd] +xgsvgmotm-pkrrehkgt-vaxingyotm-176[jubcm] +xgsvgmotm-jek-cuxqynuv-644[soxwn] +cxy-bnlanc-lahxpnwrl-kdwwh-fxatbqxy-485[zamhj] +irgyyolokj-inuiurgzk-sgtgmksktz-982[vzkrq] +xgvnndadzy-xcjxjgvoz-xjiovdihzio-733[ozhyu] +gvcskirmg-nippcfier-xiglrspskc-334[bastq] +zlilocri-gbiivybxk-obxznrfpfqflk-367[ntyda] +pyknyegle-pyzzgr-pcqcypaf-886[nxvzy] +zhdsrqlchg-gbh-frqwdlqphqw-361[nqzts] +kyelcrga-cee-yaosgqgrgml-808[izdqr] +hplazytkpo-prr-cpnptgtyr-379[prtya] diff --git a/src/main/resources/2016/day5.txt b/src/main/resources/2016/day5.txt new file mode 100644 index 00000000..b003e0de --- /dev/null +++ b/src/main/resources/2016/day5.txt @@ -0,0 +1 @@ +abbhdwsy diff --git a/src/main/resources/2016/day6.txt b/src/main/resources/2016/day6.txt new file mode 100644 index 00000000..23a40593 --- /dev/null +++ b/src/main/resources/2016/day6.txt @@ -0,0 +1,572 @@ +blrqqadw +hxwteava +xtzzneor +ufydaiyx +hhvcoozu +nbbvuvmd +usvdcalw +rpntrbyo +kgjholvo +nlohafzu +gxmifiuy +xndolmhm +zmtsfmtq +wkdzmogx +aogqflji +uphmjtnl +jkqognlw +mdzsbrij +zyxolasw +kvdyikgy +xpxgmuqq +viuoqyap +simgbmca +qxcjewnz +ivwoedjr +mlmzozlr +jmyallmm +oeecmjte +miuvzeww +qtfsiigb +lstgpdfp +pevoamxy +mjtpbedv +ugbasbgg +idcnuhtx +wwhcrxdr +prrugmrq +npoiywvw +zpkohigv +wngoczfk +gxnmxano +cbacsmte +meclajtf +zhztflqy +grqqlecu +qjbzsptn +ebagoidi +egegrnyh +jccwkqle +ikkwrzqt +nedkjwhf +vildwwrp +ugrejotn +kdajfbqw +gyiwhxpd +eemhkuwh +jvfhoiqi +wsgyaiip +jzjvagvv +lqupczes +fetfptqt +msmlbgcf +iukfpgrm +ctymfjpj +rbrpmkvx +glooxgap +scctgiai +lakkjuyk +gaekimfl +bhfaybki +qaiazzpf +dwqkvsee +fuhbygkt +zhkggelc +haigokzn +jpuangaj +tpunltos +izqxnhhd +oeyxnqkn +vzvelmik +ddnaozap +mdlhkdlu +oglyexnm +mcgxswpe +jzkjknxc +gfqnuhfs +ztnxzwng +bnuxixlk +vmumdwec +kuxxbcbv +vdcfhyso +qtdesxqr +qciljohn +qqlluqzz +njhvvqbw +knakngrj +pradgsbt +koffjwwy +tvrkgjql +mqtxerte +smigupym +bxxvoskx +jerbindg +snlgnowp +qsuxtdsu +fnpexyoa +ffwifdad +mvgrpczm +oxszzrsb +pxefzlch +mcgbeauh +neseoapm +iwnulsrv +zhinoifi +lfmjmmtk +fsxcqurn +gmkkhfuh +nuqeimxo +uvjdgkdo +ohtmvkcu +albuiptc +piaihrgr +fjviblws +qotlvddl +gchijkjr +azzrnqhy +xrynrbck +pdvkcekk +thscvzai +eoapfznw +hpgoissz +ifnesaoy +eniqycje +hmjmghcp +sfyrvbbi +tuxcoidt +icysmkcf +ycagvtls +dohqfcgc +taitvkzk +bblnroyh +grdklrua +qpijbooa +pcwtjacj +mrvxbefl +oodwrtvj +xosqbcie +zbquakff +ypwpamng +rpfbkssq +fctgmcav +hdtcdfcf +ctboapkz +qypakerm +vebdtsmq +cyxqtbtt +dcnpkmnu +hnjppwfo +gqmfdahb +hxiqcrbe +rpxazkak +nmtraoky +sisqtogo +oycwooev +lmmitjey +rytzptco +waatgjdu +khsuxyse +cxjltfxn +eedsmcld +fngdicwe +lkomchdq +ulvabpoz +oyhjvimr +dpyexiwi +wjfzkbbv +ihohnaxx +ajxfefrv +bplrrpcz +rtamodoq +slwrcibk +sgwdtumz +vlemhplz +dnpkqvad +ytolejsa +ojevrxsc +bgbmnvyv +lmrousup +yyubvohm +bqaqltmt +vfbzzthz +ylehjmop +exddqqwo +xqfxejzq +myyuypku +zyvmvbla +cnpquvbp +yaxdddeq +cnrjqdra +lwphgfgf +zqdbcnmn +qelivdwx +wpnwomgu +xzephbpa +yghrabgr +pnjsyhth +okdznczw +urwcwwfm +hjrsrrzk +foklmzqs +mjldwaun +dabalbmb +jmtqvwst +uhtzixah +blclhmjf +wilsnjwb +qeeriszr +vbfagerv +afegxkkh +zwzausdd +ysfgzvbw +ymjlmnmz +rnrbxnij +ihvhqtvk +ofwrugbp +ontvlhfu +sfjgpqpx +oyzkaiyl +xfmvkfkh +pqpeeptl +jdyueahx +plghatyl +yrdizope +lrurgkqw +xdqtlmww +dkaiotxb +iegjcmln +iupoupxa +zrepcilx +tpewzoxi +munsmbpj +fvhsucvb +rlwchfml +kcmlbubj +jnhurapr +dflwxeii +wtypbujm +jivypmpr +argvlhnz +acyvvplf +naqafzfw +ngepfsju +xfpuwtji +pqgkxbmj +oeygjbxs +evoydkqq +nhuoohdi +wrznguek +ssirmkbq +ackhglvh +egszqozo +rhnhhxul +mqabqvun +yunlcuvd +zklsneau +itanrdqb +pvxbkwoc +rqbqjyuv +ioxjpvqd +pzkgsdej +yklripsi +iohazhoh +umxxpdaw +czfnfgxt +xaxvkjjc +qhgvdvaa +iobwhxjq +jwfwqqjs +cbrfgjpp +conpdlzv +wbcmssue +gyqkseid +ozrzahxt +rzowboce +lhntmyie +tlrcktzc +lxmzpvku +ckliqrdt +qlmalosg +ovvyxrnr +gctjwzrl +ooqvxzac +dbdqzzly +fpsjzuxx +njndzgel +hjfqofhh +txhcpktf +otceqnmc +dduyepiz +bsxdbzgs +zklbicun +rstnuwtg +tasiqsbs +wewnwuyn +zvgkuxxp +nxcmlrmx +mizqhlnv +xyxzfeca +qkeuwzgi +ajnzmfks +ejszlxyc +xzfggxpd +jbooydts +eisoqvuo +hdfpevns +alybbyrb +yvpylcnz +tdpcycrv +kwptuqyw +ncobyufk +fclvkbek +tgnfcfup +vbcuaudl +hublkdvy +aoetzcyl +fsiuwhbi +eyolgmxh +siptvnjn +shvycepr +ntrwmime +dbdnbfyt +bwluchce +uigenqhy +krxdyhap +avycqglh +gguniqpm +wcwzelyd +wzurdris +rmhstxuj +vuaozvvq +bsdgqrpx +twnvkunt +nqgqtugs +vzkvghwg +ypceflob +dsyzunmb +kvhacqqr +ozlfwkjl +pyznytxd +ykdkbfgf +eajwdyia +bhkxsxcc +vytpdoop +ibpypdrh +dkkjnwng +lxwkkldf +nbtckkoy +qtjyffvl +sbitpceb +sxmhbcuy +zorovlxd +bazreact +cwzggemu +uowhquji +eijszbmy +aarneovu +grhvjqyo +fzheiyvq +nzsdrlli +wfsdwsok +wrqjuygq +ggpffnri +wkycrfjm +drksyjxn +smuhwcxa +iabdvvyj +esidunjn +decnfzwl +ysihdzkf +zokmsjgk +pxuddjdo +uemyoegc +glqycmsw +fvfkqzdu +mhotjpqc +pfyuopbx +tibutsqb +krzcqnkv +djqpmsmb +vbufrshp +mmzsrikm +zkjbrtoo +uopielbd +jmketnly +raomwphg +uwocphkf +lvktwagm +lqmorzgf +rihrgrdp +cnbuplfg +hwfjvxcj +sfgptuic +ixkimxsx +kfpicnix +tvpybbrf +navehxpr +rwbcttbq +obqcxwjd +fuiskmfg +xcvfxoeh +tsmaaoyx +qjhiyeex +qwfxiyxq +ctkyxatm +hyxhsvmy +puknicfi +hbwzmyks +uczqlycu +wkywzgqs +kzfehffd +aoooehdc +lnijvgrg +aedbnxzk +lusvnger +ltpbpgiq +aypxjgwo +lgejygmw +auqexwja +fwszagnq +aiafpduf +lyltmest +agtasqwl +fqrlliiw +udarpyjv +kxotyded +aodevwdt +lmmfarbx +snjwogeo +ehfmpymn +yahfaxeo +xudbdnog +rrkxhhsy +hdxadfck +dmnujkng +cujvjtry +srwxylvi +dwohbywb +cvspfupf +czvvjhfw +wvyjwtzz +vfooqywj +bmulxlpz +hbukjylo +bdhsvgdg +vnrrqyue +hjveswxf +yxgzdjwn +byonsarh +edbmtqyz +owvunnfp +wfqqsuyj +cwckbkwt +plesmdky +pzatdacm +nqfyxhij +jjwqitsc +tejffykk +yllyznoo +kkqhuqlc +hxchsqos +buvmceha +kbzymzrl +kiemcigv +txmjfujf +vfnystic +kvaiybnq +ztrwxszz +wiyawlfm +sgedycpx +isafnieb +bpspuqvx +fqjtxrtb +bgjdrvhb +mnsbgbhe +jpsqcfzz +fpumugea +qqutezwg +eoabntsw +tupqchzt +ezwjasja +rsguwrqg +cqzcijqd +rhxlhksr +vcwlknrc +eiqbcafb +lwzbrrtr +aomiovcj +ujxshcar +fbpjehma +bgdphfwg +iukvlxvq +ptawvjzy +styyqrqd +itobtfvm +yqnpsyha +vkwfaykp +zwpoxkzx +uqwasoht +tkgfmnvj +xkilydvt +xlmkpdaz +xfvukjte +yyzpwped +xzxwnrlm +ausmhunn +qgiiljhq +njqhxprl +fgfxiphp +kkzjpuur +dcqixesl +tthldwgg +nkjxnttn +cjtiiltj +drlzddsv +xxluiael +kjjsewia +danhtpxa +edexzcqw +mrqewvuh +opwtwbbt +rdbsaeke +viistwnj +llcndvsm +jeejjqyb +hstekias +gmswtskg +qhdktszo +ptbryiff +jrtlgbag +gjbbbfnu +uirwdwzh +esmntxej +vdcmrenk +tagtsvaz +hnewrron +zydwkvuh +zscfhzxk +sazgunom +gqcxdowc +twmxtniu +wfblhfiv +barpdrob +jwjrnqhv +xvnysjvz +jvsftvqs +jivuhphv +grbezkpe +xuolyqis +smuxlqpu +rticwcrh +huzyzxul +pgqawldg +mdcgejab +rlrgwpfo +uqhvyglu +csinjsjy +ydorfrud +gmcnjnbr +qzvizjbt +vejkuvii +uhfrombz +clgrjlys diff --git a/src/main/resources/2016/day7.txt b/src/main/resources/2016/day7.txt new file mode 100644 index 00000000..fb0a6417 --- /dev/null +++ b/src/main/resources/2016/day7.txt @@ -0,0 +1,2000 @@ +dnwtsgywerfamfv[gwrhdujbiowtcirq]bjbhmuxdcasenlctwgh +rnqfzoisbqxbdlkgfh[lwlybvcsiupwnsyiljz]kmbgyaptjcsvwcltrdx[ntrpwgkrfeljpye]jxjdlgtntpljxaojufe +jgltdnjfjsbrffzwbv[nclpjchuobdjfrpavcq]sbzanvbimpahadkk[yyoasqmddrzunoyyk]knfdltzlirrbypa +vvrchszuidkhtwx[ebqaetowcthddea]cxgxbffcoudllbtxsa +olgvwasskryjoqpfyvr[hawojecuuzobgyinfi]iywikscwfnlhsgqon +jlzynnkpwqyjvqcmcbz[fdjxnwkoqiquvbvo]bgkxfhztgjyyrcquoiv[xetgnqvwtdiuyiyv]zyfprefpmvxzauur +vjqhodfzrrqjshbhx[lezezbbswydnjnz]ejcflwytgzvyigz[hjdilpgdyzfkloa]mxtkrysovvotkuyekba +xjmkkppyuxybkmzya[jbmofazcbdwzameos]skmpycixjqsagnzwmy +zeebynirxqrjbdqzjav[cawghcfvfeefkmx]xqcdkvawumyayfnq[qhhwzlwjvjpvyavtm]sbnvwssglfpyacfbua[wpbknuubmsjjbekkfy]icimffaoqghdpvsbx +enupgggxsmwvfdljoaj[qlfmrciiyljngimjh]qkjawvmtnvkidcclfay[bllphejvluylyfzyvli]heboydfsgafkqoi +ottpscfbgoiyfri[iwzhojzrpzuinumuwd]orfroqlcemumqbqqrea +zhrhvyfxxcsdpris[xdqecoqujrnqbgla]bpwibmrkcfbzigf[rlqtqykdltcpusvc]ybtsglkxrhucxwv +msaebhhuxyaevahov[skkhuecthcqtrvtunw]bzlvljpsapsezchptjs[lbcxoczqbyysmha]zdqlfydjdctfnuetghr[owwhfhnjmpekukafw]qqitepzwooogqifl +jhdfwesnofrkpse[mkruficpgplktbmoo]mnrjpuvsauanolvzhym +ucibfxxivatgxlupp[rxlbgrqostcioowo]faiimhdhgpockadenua[teomupxzwrernokhyud]ohsfljkyjvkfzwus +gzxcgjqdbyvfndfpw[ypfsapvecfqihnpuszq]mvwxgfkniekgqzqid +fipkggpfwvgrqiwosi[itadifxotejgzkt]szwurlcbvffhgse +ketltdpowbxcusrcua[oonjssgqvcgwvlz]otjxgpizqfpcriuco[mgtgmwcjecomtdkxdev]dnrecyeyhqcpausqzsw +lcototgbpkkoxhsg[erticxnxcjwypnunco]notoouvtmgqcfdupe[hubcmesmprktstzyae]unuquevgbpxqnrib[egalxegqwowylkdjkdg]spqmkzfjnzwcwgutl +nesmourutitzqtolwd[rurfefjvljejcufm]jagkqdwpkefkjdz[cctohikipqxxbdjxsg]badmffkslhmgsxqscf +vvbwenaczgfagvrv[dqjzprtikukbikojlgm]bkfrnbigwaitptbdcha[llnwgonsrsppphnnp]sqozspzzfbeigmw +jzkzjzzghblqqme[fsqzyykcotbavruyp]vjzohzsunrevhmpi +jlngucjirfgdgorbgb[nvvkvebcjahujrwjmy]cfnlrssuthgusytkqt +kegsdcxndhtlskseb[zbtcngduxclffzlw]wrdqbtrqbcpbeaiqvx[svsyqhkrryycnkceq]ztrawvffepndijceeih +imtafeyfivrcegpagsl[tjzsewuwboushjl]mtnyptormlwiijlds +sblhlpnuutqgtuvlc[jlkivbtbkivklrnr]zkzcykzkyjxarepzvrr +ojuqmcidxmsyjkhuh[gsegkxlimzuyceo]dlhjiensaurluhul +sxkxluastorxmnd[gwkeczwgmamhjquth]yvpdadteadabxgsplmr +cndxxzfcmwwtcibgktm[ntsvmiwosuvniztv]onnfaenxutizlbxdk +eqiwaqxxstamxgzc[vnomzylvfpmcscjar]rwdqevxpeqvrmvliu +tvzbzkhvpzedqtp[whzeqaisikjjbezzcow]hqbizwaaffwbtfglq +ajwpjiqawievazmipkw[mgfhwrppaxagfdgfsa]iaqcnovhgearcutadns[anaukyaljeflxdnucbn]bhqcwrkeolrhwdih +neakzsrjrhvixwp[ydbbvlckobfkgbandud]xdynfcpsooblftf[wzyquuvtwnjjrjbuhj]yxlpiloirianyrkzfqe +jugqswdvlbaorwk[dfqvlubdcigzpcz]aqhybhnoukoyxuiw +kkkfysfugyvqnfvj[ahhqkrufcvhfvapblc]jfincvlxbjivelqrs[mpoymhslpyekjmy]eicbqlzecwuugez[tsqmqvjiokqofbp]senbbdxrdigwcjwik +ogiiiqaxakiaucwa[ltdchlxwnzefocrw]koxethzfvlsewbqdt[qdfqgtzftqpaxuzcruo]fvkgjcglmmxqnifv +epmnxkubnsnyeeyubv[ydzhcoytayiqmxlv]edmbahbircojbkmrg[dlxyprugefqzkum]svdaxiwnnwlkrkukfg[eacekyzjchfpzghltn]ofwgevhoivrevueaj +vvwvubpdeogvuklsjy[psnqcfnqhxaibnij]fwzpkbdgmpocoqp +pjdxcbutwijvtoftvw[zkqtzecoenkibees]llfxdbldntlydpvvn[uaweaigkebxceixszbh]xxlipjtlogbnxse +zmnirrxetiwyese[cedxmaoadgjjvsesk]nuisspyclmncqlasmuy[zxwlwmbzbjmvubgcf]hfqniztoirmsdwz[zlffqhttbpehxoabzhx]upmydjqzzwefvgdpqu +lwvsssgvvylrvqh[duxjrrqkzchbpvnmm]pckmefvejytvzavgzgc[dcekfwnrzooigwio]pmutxfiwfowlfnnggl[lzytuzirtzgwhkz]yzgxtksuqrgvvgfefon +tpmyecqhqjjpertn[qomuwmxstmgzexds]ftvqqwsvsrnmvpg[vtpebuufpyieqbhuu]dorortnekxkwnploro[pzajzflqvbkhautupl]eowpcyzmyvnntvzmvx +foguzgeasrkncbny[tlyweucylxkswwxb]jtzjubgewwhlddar[dkddqrpwaqvlhdp]skkegnatbjubqglwu[pkwscrmgvjzarzb]ibaagrqwnxblvtkg +ejgpdxesfyoyaggmymi[axfkdoyoqkpkhusfwe]pnczsmszqevkqiwlfc[dqhzcqjzpgnoknmv]ldrjdhopfyctlqtn +gqhyasteoryuofc[bhblyxlbiqtzzyzvzqg]dtvxrlkyuwxttyw[qvvzvuzhkemwglh]bopvfttkwtaeckq[vvhkkgrddaoxnzctwar]gsscsjuictekguq +sviwnvbtrgyydtadhz[ipjrrywkoxwuzmlrzd]kcxruwyisqvokporkub[tvarlltnhjmcuvvcck]raafszljrhconjqsqi[snbxmvzrkojpjybkgpi]ekoeuottccqbxrvpkb +vtouviqjarqwnoexuy[lzxhegzxptktueqo]azfsikzbwiajcrhnas[hvqxgtffjyyfgsjowxy]ddbmpksrtghvvypev[eoepwehfavxzwgt]igsulpdhrevkghzh +fucimprxzsubuuzmk[umzezmmnkfzvjlela]qxzdlcryifsinmkgeha +kauzjbailyzpvtji[hgeslalzqgpdkpuvomw]utsywinellykvmuawwr +oacbdgfaszolybf[hsytrkjoylrkkduzfz]bmoelqhppaxshmfjl[cusgbbuydfqtbbmsju]mcftwalxlvfvvpeu +ybylybngqxxrmplf[mybpfztzwnisfpfgqmb]fsllclehoezgthek[ldxhvhwniqfpqbl]ebybalwrmrqldukb[okenxoqxjgrenrcjd]kluumgtqybryflqi +mufsafgfxiegfgf[ydibrbrmiaulexjek]ouwchrlvilmygbuppjl[imyaxsiodgjteppdyy]ugondbuqnhjrzzzn +idihouejjocbahe[mclnirhxghanatge]ubwhxskdzgkmyrp[vksyktucsyumvxoc]bregaefrdlrgmtwt +qnsqwkqttdevlnzg[noyxiueharjajsalnhu]heaxmujxhpgjddqur[xnqwujjeasceovnroiv]hnrnwuogebatnfsa +evruuxfhpivnmknolsj[itpsnnhbtrrbllsbo]gefodpceljlvwuahz +ebddlswrvbjohtnkyip[qkssdudizhcoaazvyow]xvnqicorrkjrnxixp +bbmmzbebuexzmtbr[tpzfxmwgamhaikfpaeu]kraaocehdtalyjrf[zzqqtjplepyidohpvx]kzehgejueimxlqglfj[zgysopfdgxtokkdxwk]gwcfaflybmhdgoxjq +xztpwfipuczrtoyt[uwnlokmtopkhdtemm]sdfmvgvctgwbdjpmvhh[ozjpkdigpjqzqgy]yrkwokmkrevauzroaqm[vctyupmildfnnjomue]cvagxsievhrukgyqzg +jpmvqhuabqsvroxgmyk[toieqxrazxhhsbrm]wdwhoqdddwdacuo +mlaqnefjmwbxeetyxz[sziklwesunikpiqjark]iltkcgfzmhvusdnlr[bmfprkswemctykvio]hhsmvppnztgipxij[kvlbovfklljaumwmy]mdpaiazrlputabj +czdgmoqwzhvfnulxo[mlbkytxjhscsxrgchri]veugcvavrzihzencp +rbjtyudgcswzezr[inlznakcutfnnequc]uhisbxotgqqtzionoq[hzlgqtkpeubvudi]qqsryagiowmcijbejhr +wkvwdohwocizssun[kimsjrwwfpilzpkf]ruqhrplgugwhmnn[iouhwbjnqzlqyewxof]exjuguxwmphfypvsivl +bcnuloxdfhnyesgtdky[hvmgfzcjhhiiqino]sfipughwbebgstwrua[behnamammdxrnnok]ttpbmbflilacfvwiwd[sosjbmmjygpbfetziv]qcosdgrbfdsgqqrlhym +fbmthzppxydfxiipo[zsyfzbueqoaoxeueado]santekllapuywlmwjkl[yfsonktbvuyilcxf]xjerezinsamruvn[cceqpogyrsztadfap]fiivtuyynltqoypypou +lfjigofbbnyrdlhxv[gfblbnmkfnpxbio]zeqevpmpjowrxtw[mofuoyllwekzcjtxjhp]lnzewigzwruzlbjh +xjgdfbtgqmgazgvtif[farekeencwufapef]dxjltmtfxuiydactuko +njaolcljynwvrwy[qplxbpadtyndosjcch]fscxierutuanappsqiy[jftravlojauqkmgludp]pkfwxpdfcrjrmbucf +iyotvokljqynxnpjsfs[lfwwocnwcwstidfpb]mutsdjbqfruxxprzrnk +kpvxcagazjsxgagg[sabugyxucglnvcjb]uvrdglycowrjddy +zclgitkurpfdspcbk[yedvkzgbawpthoyn]dhvnmtxbrpttrdrio[drdahsrphffqsigrlmk]ykghbvcdosmtcgxdeb +rkmajkdvlbqwtnuanue[brdlutivdnfekggixum]pbsgstnxgghrygqwpf[rlqzaflmkbvvefdoc]jhbtzkodsfglsaow[onlllmfziapizsd]usvejrxmziulunvjux +jqlketojwcgvuce[ftcxdqqebijrnfzjriq]ucwgiavuxrxokmvxgad[zmyusreluasvwgzngmx]semjnvafnqvwtvkimy[owvczdccmvfohtbijfu]dmhbiikbzcualbbs +roewzhbnwyvondnn[ejikyjgtzpmepihnnl]yurjuztavzqkxqlrle[mbjcyqrzfuhhsnipzx]fcrtuzhrqorxrdmrcn +ycznijylnnqwmqzdd[ycnztjgxgyapvafhwaa]pzdtesugxpchhdb[sdruhgxaqpitoxlncc]exnhjwmnvqmquvclhu +iufdjzqflteyvhrem[eqiluhtbfuegasby]ikqccaxrpnjjrevdsev[wfluwngzffaxhaflbf]wnlyrgvaxzsmqvc[smkdicgtwwwxmdizdi]joaqneodtgvioxzg +pddsupswtnzture[pehcqhpltqocptr]ymzrvibfbeasccxh[jwwhastouxzmyhh]xsllfxcuzbtciegzcd +rnnvfdyavlqnvwze[aistrderxrrojbsspnu]hfkzgodowrlajmmeq +qnebfycqdylighjpgo[ablnwbutiwhdcrmwbg]hnqeseogqdsdhith[nmrgaeenxhizhoqper]tjxbhutvqtjzpyzh +batsftctktgebkvzv[rovosiyqqpafttgdmoc]ynnztvhekfnexdcuq[lnevylboilqebnkf]udftgymwddomqmy +ybrcyivzafzoubcj[crhigqvjszwqflocc]aesdfdfgzcnyxsmzg +oskvnzcbuyaytyixp[ypctohskpfoxhpydwpf]kgkbxhyfncznsar[vulxrgolpxlqzkknzva]ightbuekpmjodxzfky[nyjpxhpycxjrqdno]jhvrgxgfjwarwzkmfj +relqdjmixussrbijgqj[mfsyrfbtjbojcesuyw]wsckbuhopguszeh[unyhvpqjxxgfbgyf]dddjalolfjwliasyezn +xahbldxnvsviywko[ucmjsyoejvcggbtx]prfpnzzlexpolsgsmsf[bgocwabottcqekxs]ijvpreqlfejnqhfbi +qtcopopjmmcjlyfrtot[dmnfjowrhqtqhevs]pfczfmefcnnfbxiovzj[exoentzecnbfjsy]comgdcvnlyaemmya +plhhfkjlotvzupi[ilbcfjbrxuildya]uuvdzteoijumhavq[tcuesohvzusidbgpw]hdsgdngmjtlybnas +yoifccopobbguvkytps[xhkzrdcfsyhpmuujbt]ocidhllwycinggwu[kouoyzxtwiwknduclv]wkokzcbbqvjxtubqg[plgujclgyfmafflyurt]rpjrpxriaxyinneajvy +jbmiqrqkpbjasqhvwcv[zlyzpnhzdtqiorod]dkigqgjtzmpleja[ijenfaygzeceopbmxks]iwzcpoekmitcckbxbzr +zixveaipmutzulr[awdlukrjbyxtssfksb]hreqwpgrawaqwtqpt[bykxrwwuypetebhs]xhtujigporvkxqot +cldscqwnyjkrzvyegsf[zwsvoudppoalxeja]dbqrfscekpmhmpoellj[xxxpuyedbyuihdzdf]bmtfdebklpxvuacq +ohdqlkppqasvyrkkjm[hevshusrmyhuyyo]qbmrotalialbvje +nvwdnytzqwrugam[pflhibktydncffbnlva]lguqdlkusqqwovr[bgufsrqjnngbwxnhuco]uanvcpxragayfoj +zkvrrzmgitfjnit[gezdzgcdvxdkxytcq]avznjhxyjldbqpfoua +mmyxbuoieontkaxvnk[lijzkcghkhiryhceqc]zuouxoicowwkhklyp[baqxxkavhepnpepnj]jcdekzxrpfucavdq[nxrhabcrumlshoitzba]httcbsbgoyhjpkv +hpzoxihsevceefdjv[nxgkyykcfpjwtlz]lkszzbxqdrwyktr +djqunzvzcyxmjqhy[qapfiyujulhgqipfm]htqbtlhlsqxnjyply +lilhndsdretyqjojrn[oxrhvlpgqiotmvruvh]hgdlazecfzdrmegmnw[alxxixmnnjkyhrqjgh]mpbjuwwcyhdfxynyk +fcrwgutcgcqizev[nwszwhfvqtdhrymgqf]iiahiososrpdafnt[gbkrardsossgcvu]fmudukrxbiqyrpi +xpcgsvaeydonptb[ewpsimxlttaeoth]gersjqmmdamhikqtv[sxyvukeegkkbbarjknr]sohijvshdnoawujw +vnjkhbmpsmvxkdt[yrpltayaihgspvnjxb]ivhwkahhjjlwzxfpz +ofoancxlupttxku[hkedaqsibrvtvqu]zkssllvuecmgtqvs[eklsqwgwuhucbxykl]ioompempaewmnco +nwviejwlkyokiqhuvo[csddbtlbfdwtakxlmss]fxdoqlbdjhoslraj[shasfhtvpcsajdsmxfp]errsdzqcqzbrfnkeux +gvmytvlyluvnmemhgjr[bvqbhytqwpyemefwo]sygljhpvyjnuxzjqy +zootaoveazcrmtbda[qlxlwntntbkjtkqve]vffdsbekufzemgwomh[vzllvqlmloffyyldfh]alltnttrzqrchacoiqm +ksbuxsjkmtzsfsy[shracmzkycsuqrei]qrmgsndwzkqhtojsn[innhjjhyfsffgsboglx]zhwuwgyrwmucjfii +dagldnrnugbavjwiiq[vrsiyprmsvuapxvn]piirprosbofdwzuuhn[epdsrdcpgzkkzdjle]jylrtjltlmvazfpmh[rqqteknolbyzykdysvr]ieejzvgtumekqapi +mtamroysxwglblwmjn[gmebbprtzaogucvyzv]tjzuzqyyfuihjubuzu +pcfbudkakpzlyou[zznswrvmytntytfkt]kvudoarqnyybzeddvn +moelqaykzlstyntby[qmpxihbeysykajdo]omqcjgdbuqvvydd +ddyczdjdwnoacci[wpgjlohduqnlrifih]dfwcghvsdezgdixnpxe[ohhccenoirazgekq]lqtssqpzgusrlvyrd +ewirhlfcfhkqbvmvi[ixrorekrimzzkckpel]ihyukzubvqdpnmqpgu[mbtybrusfomfdhlg]ucrcmbvpnjbghnxdo[lyajfieycgiubui]llelwgnuopqhjax +jpltuunwbrijwnudg[ejxyrxniclwnqxxnh]krckhlysnmqahsz +hkdpdpshmftvxob[fsdhonsqalgpydpub]dirxpfxsxhpxliqg[tvbhlcqkymtbnytjp]xuvawokttfililgwgue +mdnmunbnueofzddapl[wxfahokzfixiapig]wekvqzgvufgztlgldh[zwglgerouhvhtbrdib]xeogmvaqszvkdvxv +mbqnuqonmkxmczjo[ueqnkvfdskaqwesufs]zmoqtlzfcwqaxdnddkk +qoaqjkdsftjstyjyqd[fyvizziweplccjt]ryvpqznfcdvjxuu[syspurpgsonxbbdrcc]vvedpafqmoeugwuize +ctdgzypcrjqxirm[ouyjhaohcueqwdez]kroowbthpspnnzgzuau[pqijczlztofszvdzhx]iccbpchemtflqnhdrnw[esvbnyvlckqirev]psrquqfxaotuzsojbt +rgukaurlmsyzovie[noclopxqrusykxpix]zbbopbxzogbeppp[anouobvemneuuztti]rpnbuugshsxxbbkhauq[zpqywyyxjfabzyppw]ecdrhvipvzregbgl +vmbtrbtoajfkswgy[kailajjwltvmwasynoq]goxmpryedtsrgkx[hljqifnoadoljqtub]xucplzmspnbxvliaap[tfqpmrhbakiidoxwa]iceqprkydjgouemqsmf +cvpnedbnibipftign[cigxthfejgyjzvspaam]esifvgljjjbexwm[uspsplcqhomoszleq]qnogejwqjdiznyfellc[sszzsifsfavntyghfs]btswodsrhcrrbodmtz +lvxwpuujqxypkhqfymh[wtizujakvxzrqwpols]jffeswrfpnhhakyhwlz[lzyloeveicgwixnvdx]uvwhpnjlszclssbf +noblqdnmgtyjbxjq[chxjibegmcbmljibes]edtgpajthcmqgpz[qafbzkjfqbjzilzh]aorhwssnugyflolh +hunicsoijinxshpfskq[lniiseazhvpjiyg]wirqusdwvaiyatimhx[jntjijtppuekuvvzz]mxebkmgiqyfaglow +wvzgoeqwcuudhjlc[nsjqegpxfiwvbtyuo]hehqjsarzkbbidy +ncjcjhyagdubxcibe[qpddbjyualjarnnpkf]cizleaqaaewqysxwys +jqslpqaqntewoglud[xtzdawarqxbigpuf]qnxdyobxvfsrwoaz[snegbwbzchqcbavh]kipasixtzznhgkjskv +hptaschabsnqdgmuzoj[satvzxkqetnonungbjb]gqhigqimupvihhwy[nejqgulbxtzfjbjlya]jywahuqdzrufxenshjj +sjgpoxxqtfsltzk[jqwzhblplilweukbso]tgorxisfymrcgyr[tfbebfnnljlpcfeps]ahpjfbonoajtohthzri[tdgaokthtdhxpsg]ajcykosmkhftnrjqphg +tnwtnvvrpilvadiy[taucexvsohfmaxd]cfhrctuhgqwjgtll +xzzmvrhyhwvprzczwz[lnshilvbyfjqgff]qfkoodzijhqkpuob[iyyvvfibosnuwlov]fhbcvpuqvpxmlolhry[osdmjplktygtobvt]msazwlubhinqvyfh +wanhwievduqinfwlcou[uyalesnoaqmajcc]zbdddgzmqprwiia +dfovljmseevxcfarf[enpclythxgepfzqcw]wechankwzxxkkutq[mvzawbhttzrauulkxvd]emcdawwiunjraebra +sylgfxqcfrqgeeuh[dljwdydnbuddmtdgp]fhenkxvmwvdyaukaxa[xcdbxlqqfgqtjyhoi]tbnpjbnpoxxaxef[rlnmcnmntjlitsmn]vkculrpgrmqsrayre +xexefhsfpwtpxuygp[omxfywhnlcapmpalz]foblbhtxieggkgpcru[lscwcbkqvexwzzbri]ipjoiumgoyugfzq +hbeghglpgqnwpxqio[pcujpvhzhghnyjkmppe]jwcnwmqwctqgoxpj +apqmhkpxrtrfwulqbq[trthojavkcrlcgc]oikizlfqpukeudv[afgmhbusoqjubra]ajbuhxzuhecopcxm[lowqlmwiyvmdojjla]jrrhjmopywkqrhlgicl +dxrqnbrkijtvmkwq[dvtqzljjbreayipqgp]erhjjvypeyramuaab[cjedbzbceteuydrps]kolgelhdemrbeviu +gwjakwyuaxixflozol[omjuyjzbtditgoznip]nqybdawthoydext +lcdwaahhbhajoai[cszvgduipwduhgmo]vpsgnhmtypusbgmhwnb[qitqpalswmqvjiu]iyjenmmobfasnzqefci +tkxizzrgmsxvmrdawsx[edbhkciwrqmoflyang]nbuwbbspldrfhic[guhvpvocfyjpwwclv]olxhqqgrylvzzqxxd[cnhwdegsxurungopo]rdenofdlpgilpiuvmr +wkadrydzokfmuiah[mihkmnzzjladulkvb]weqzktdsbwalcdijda[rejzrqqdtbvrwgbgojt]ggruyvfdesfdwenyx[jjyyleykqeskpfmzl]ssqauxmvzygppvncz +djzzsqykcfbhgfoq[frykddayaohlxmkem]kawloxhrgcpronph[xxkgjvdfespwmnja]jddmrdznkctmsmaxih[uxotxlcobxfemckshh]irmewesnknuknipl +hzojrovrbmfobhsau[itboujfkrmpgjpsvsr]qgczawmbunmisxs[dtrvnzrayqlvdpyzbuy]wrcsquxgcxpvbwwzlqo[kqbfajfleopglhfui]bsoomwrdifoekal +cntxerwyrvbludhaa[fclfiyjfekdtavmgy]lnvvlflygrewrgswx[juijxzrpwfrmshbttg]yjeuhzyjbmbdslbdhf +gclzrtvgfbqqqcl[fdkwmnpoansxtklyusn]ywwzqahbabjbcbzd[kuiejkftwfuzmjbiify]tabpjhaiwzcdnzvof +hmshguykeqstxgzs[fsnsxtrvkdyrlek]rkzkooteryozbwmda[jyjzddadewtuaqulp]gtprcoocgdsfbtduekc[llfoixzevsmexhuitz]ppiutxxuvaxhzgiib +ouvpvcchazfdcljaux[kxqnkynylosbuekz]arsuffkkpzlwuibqd[lmmxhndkoldfbtyfpw]nvcrjoborzogjhgwn +ojesaevpprrzqaksixa[ykxbgapdjiulhmxgihm]nrxxnhdwodfgqoeproy +vzbltcugyxvtlxqnkxu[fcflcasuyaljgewcynf]azqaltkfsglwgkeh +urcslegrolaaalf[grobiijzrtgpntne]uhpzjqkslgahpkehix[prmevyrajmgfhsjpag]kwfhbrhzkojqazxjocg +zwfeopovkggasxxb[fadbebqmbxwktwfdeui]ftomtaogfvgkkdrkc[rdkdznntsigigjiv]warlzbzbnfbjjsh[etjzyzfdjztsfsyi]dulnqfxjoewssxgkfb +nvrsqzcyguparczn[ewfmgkjaibzjoiex]kpooaykofbtkpawayfh[ssuzuankcdhqvold]qaeuwxgakqvcugn +rnlhwrnjgxwleghohuz[nktpaaaciwyfagkpqw]yeyzojziajnryse[bmpxxtaljjigfiv]ojzukghfhfhykqrcdyy +doqbqcwjoldvwtws[qaxghysnphejfacrnkn]iqyhfkjogmrkjpk[hfjqxqeuzwywwmnzj]uzhpypjadzqcpeibcgc +kmcmhdptzlhgqui[cpluzrcwihnwxrsdoj]czbxutspkzdwesrc[fccnqmeaqfmxtqqng]fitsnmdmyzwsifevbat[fxhgcmqhxrudtnleoww]yhxgwphkxlzhxzjnvcp +tmjpplcwhmsaxav[epfnxqdzfpxmaztdqn]vwdoatnafiotogpsxk[lydghxujguhqcjqtbbk]mtvqsesoxvybfrxyoi +fslvgbiibdkhchajyb[zpbhqrokrbfuqrowop]gqqzoqvfsdfcjcdurrs[xhqfcfytbbekivnvod]jxjwuxivnyhppvfhaol[evfnrmrjnnhychtpv]emiyjcjsnojxexs +gqaygymjihevbsps[iepworrljuepufyvne]fzfjulzebpsphczby[kxaohggiqnjpdbf]bsjfluhncewudkumaxj +mvjlhovwivdanexv[iaphahshtwtnhoeoqsk]syolycabjeiwtwtec +ikhcujftlekmcnmcy[ubsoslmlaitakaqb]ruyiqnoobymxiim[ppxtpuphuisxnqumd]qxjhzfwvixjjmfgaqej[bdjpilcwzhqphfumpny]itvjttbjsbfmxppif +xhemwtnqvfankrccdtk[bbjzsytqxhxcgtedp]ksfozdggjvyvpoyw[tberajbwhcirnenwv]juojuogrifenjsbldn +bczvqdwkurvezjxgrg[yjvuwvfypobetomm]vtfujjaergrizoots[snwcbtqylvuhnxyvb]turadiqlfjvclpvbweg[mekdlejerxpllbf]bgkveafnrceyxufsqj +duqeascyrgxyhlspebo[kzimyrleaopbbwmbi]xsxqyleqvoscazopte[debdbibiuaosfdyioum]vjaptdzpitqctukwhf[jffyamdmvkrggbe]qrnqpwcdoditjixsc +cuxdugzthpcubgw[qjvtzbgagyebkobkhf]tsbcghahxswropcgj[yenmfdvoxlqekjsk]kjdmhdgepvdoovzvg[mafjriyxqtotmhxgvty]mdyayljihzqxhiga +ehkhfoqcdkpyxeum[xvjaglxwocodctbzj]osufidsaijsczhtfg[rvmapxxierwnjkc]pgshnzbphxdoaitou +wagqtjalswmbehwmuwm[oarjxyzwyhxzhpgilh]qapupwvuflcoryf[hmqhnrjiahzdfbaz]kuprvbaykjhqagnl[wfxatijeapdinkt]hadtvdjbkdduycdut +emfkovpbnkaxykrmwjg[otoxyqlkgczzivgdt]nsvpzdvcbsvrbpo[vdfxwihznfpxlbsju]xbcniikjhgzelav[opidnljejcjawbikt]gedgtkiksnpijteviu +fxbpujpvuboflfip[dogcwovzlakonhdyww]tkzftiqvyzumadasjtu +rqtkvmbmqtdrqsahsdy[dhaassflbjfdslopp]zetcyybbahysvheand[uncbkqyoidhvxjf]mxqjozeotsollwolhs +pxfqsysywqfsmername[yfcktnozutkhniqyp]tjzzakrnlxrtscena[bitenzjdqfopqevroqo]zujogbgemdxiaven[dtxlpfkysfcivyrxqt]fsgjjgzltbnlvdojqvk +guclyozvgpvbuhktwbh[qmueutcpmdebodbilp]vglsdvkxogzhzewjpl[guoovyobczavohc]jdguogegerfiwrxthui[hdcvpajqgpsoxuoawmz]ztwnqkdjnnwazrdzpc +llcocydhktglycn[aqvpbqqcyyjlfspio]bfwtqbvqbywnhvn[bdkrsfpiokzttiazuaw]kchhszhegdhxega[mgfuozyxaqcxmillwlx]mzcerkylhvawvyujx +jceiyppxbreywlqlc[fizmzubzyefdntbmd]bmholmqrninpjuux[wkbshvxwlfhlrpkbk]bnqhoqtiqqpsibgykwd[ajvhuevpxmsrjrdwt]ejcwhcsechltmxlycwv +lhzgbwzjykgdqwj[ksxhpuzyromwycwqtmi]fqkgkgvjfshsltg[ypmdudbfamagwadtia]nxqvzfdgxlwbbkrssc[zqmfrjzhsztnqbdgo]dvzoywqsqizywigsqsm +vvnbnhvgcpquhzbarub[ufazesxvliazvkcanib]agtuglmgoxupumcispr +mtpdvvydctgradgywc[mtpimzrgtmnlcge]vxbxcxjkpticzboc[ffiyihkovkviqjifrnt]yhxctiahahicybqti[latcrvinlucwkxhmc]ajivvpmxwiypcjtevwh +dpnjvkzcoyyzmgvvs[gtjdsruwdhyukkx]qndpbpmhkdngjmab +raugsxxkqxpsglitbj[ncskiewbnqnhxvojfx]qnqtemgvotsgnlgxyb[exshfmlaagkpxueykd]vgcwastyxsoddgu +vtmkqugezjlfpad[ljdytmxdmcfjvqus]zwkxtirtowwwoqybn[wwbggxlelxpmctsyio]ojizduyxsklhvogj[wkjkwbzdmusrmnwuq]dnvercuduocxwzzqvc +kcuaibmbtowdpkk[behnytmljmvkfzjzx]vwmeazoaavjnyopedp +jzmgdckgiwbhbits[qapkyzlxkcinhakr]zymyymfbxgiypcn +kbcfgsoqgqvurokxs[ygvbgzijbgfeylxvl]xsjucuevvfddgod +unfolwpdrbsrzgoo[xcskhiayzcpeegqfoe]sqhinsvvbcdboctc +yclpzeggejjnvkssg[jaxstjrzmutqmaqq]buvqcwkayhypitxnmp[hpxwubjyepaqhyhud]qhqlpdiqdhhgffsgtqw[ijhwhbvlbixaeywd]fwpyiwyrgoquoeuicxp +jwgenomewntwyxiawpa[eqcukoqwwwaruuaeoaz]przxcbqvsrozygtcyl[krwnmcxmgcgfbvkj]pcifuzymidokmsecl[wetuprgdinttljgam]wiiixvydbevhtscp +vzuukbqyqsivwpeeygi[bsfyvyrjgidexcfzq]wyfowikcidviqqnzcw +nsvfdglsbfbwlxfpfs[hdfyjgnwdgeropdfian]gznlvhnfjawhokhugz[klxeguqtsnydunmtj]gaauhesdugovoftjb[agqwktizuxyqgbvt]zhbzbgfwnkahvueja +xcnkdghtgpxbfefay[iekwzcvfquaynjpflf]rfmwtjyxputzpsgr[rxbiyhzboydmvufaz]vbibxkxeazvkbzpnrqv +efxnnxokdpeqbimle[sygsnwvurqpxovmfv]bfkvfubmjyasmvc +pvyunauqgvtigep[ypayrmkixxbagcbawlh]gsvqfsxbquttcaayobo[cwanbliqbdzlcur]ckdwzoeeeldqnmpnzta +uaxiegivsmmvixygiih[bwxhotmjiqmiffwt]ifggldhrjitovzh[wtrrvwjwudasapqdal]zegculmtzsyaxytuhih +hvikzocatynjoxxzjrr[yowwrajfokqlojraj]gvquwhdppqvtcvd[sqcangyggkdiljktl]fpjugbjlanzohbvfylb[fxdhqobssfucfmeaz]mzrtcejhidkqkpqc +lcgelocktqpqhjgon[vmfhipgnrbypfellki]bqgdqxjnlynzdjogpbk[ppgoudyairolaaomp]utxjqpmjzchqdhz +mtfryyrtmzzlooy[qltyhniowpskiqmolx]nuxblfnfrcqtjqfbzi[bdslgcpqyowecpp]vlxwrojvicfzzzfb +widpcxggzgbkofmmtkl[bhvmncpisdisugtk]azxcnslcqsbtyufnt[lqwxnibqiwuwzwkf]iqnupikuhmhvvhf +amceoqorrqtczywlb[znieihkpkxkvvqxk]rmoexicvufbvzrcxisb[nrrbalocuvporahypgm]sapytlndnufcmsmnl +ldbwysbqqkcizwlkqk[kxbcvzlolkrtyzou]zsqlgwgtcvtkmrc +bejhbhwlnmysyqgzk[gombhcspwwomoqoprog]zgwpzkhgbgaveqpe[kldisefosjggfqzo]eiyzwmdoqqsrpekrs[yoblfghskpxbimnq]ewghiykdpitzdsydl +uxdgjfelalnofqouoee[obhlfmbrcdwvtgs]hgtqhblpsfyxxdmruq[amhlljtgsqandpxg]uftttypexliymsri +xwcoczwpeprblqvdsze[fcqzupldpqdpibi]peaetflnafpkrqz[aibobqkhvfzpwaajxj]mzlrkrfslubibbu +fpofuivhqvybvczq[zbhaursvrqknspvj]zlovzphchihqwko[bxcpnqiijtjpypqk]hmdzgwlnervibxuz[hxskzadaiwuhkjrvia]fqtcewytffzarnbdid +kqzfapnhrgdwnrxtwcw[keiqggcxbtzwrcvrvl]itnkudvtbvfwlcvguev +folpqmauykgkbtb[sajzutpltmpwuvzu]qgkgeonxzucthfluwfz +qiniyhvlxrpcbscgf[mmjtkliysclrogfxsx]snxccrqkeuqchwfi[wbbptxydvrbgemquc]uyqttlcltqvqmhu[sawrjbeubszmuwsjuj]rowkyiykcizmcgha +xafcvdeuuhyxixxn[abpngbyvpnkmojksc]anahdcroysddmoxf[tasztimgjqwkkic]fiycikeddfoyafacbfl +fzmscbkkolwovgnjeb[qzholetigkxxmnmkoc]ffztdtemtdnustwuu[zjrqslegqkywtcaqod]qdtqbyfhwehdezedf[qqvslpytqtjuzrkc]knqvowafliildhqxgex +hicsgtpdpugetplbufu[lzlwcptzokxrsxtrl]smxnwfvtzttcsesdu[wmucgluptdavbca]xggqqcfaxxcagagkx +hwnfzlhdbchsmjwaytr[xfggqnxtnpdjzuyqm]efiweqzxmsxetmyjnhc[mgjnkbfmmvyrwyocr]jhviqqnrgzjsdmidsjs +nvouetegmutetgw[keqvyocxdetebkcgl]qfhnyfdnjqnklpad[swuvsfhrnzsnatb]zjwqmrmphlgwdnms[hdlfprihcbcemfn]lrraefojxvtpxljil +fowkqklueytawgdxklx[pmrpenfrmskqjttdqiw]ttqjijvoxxfxrrdve +nsyzzlnqjssmirvejh[gpqbubkrsqphkdjwg]gvzcxqgbvhopkgy[nzlfaemkjnuwvhul]vxdiuaimpogvtkx +pofmqefryoxboubl[neoxktodwrswfsxwruj]frlrumshrtcllqqf[erlodpkifgfpjlbl]bbfocfbyqjagesavoc[ajasttvajmlfwec]enqqcyveejcayzw +rqtdsfpdgwrlmfj[nmeovqshevzueyvd]ibiplfpvkyxvacl +wtvwzmpwviqbzol[oqlqunyszsyebxbm]ywqypuyvaiegekaok +ijcorxkdzocwisjb[qvcjrwytrzftjicua]buuniicmziszwzikph +pplaiaulcciebujjsx[hlyeskfzscwmeqss]tuuolvvbnyymfmo[trsqblvfyagxmgtwfk]kcigogbmkzsjlsrj +dbsqyxlovoghbra[lwqmeeclsvfsrezsed]odqamvyyhsmctpqegav[xxoamahurojgqse]tngvfzhoprhrxsccgnu[zwwglwyqrieusmlfmrv]tzfresqfmfspigfeo +tmnutczqpsydibk[skiokxeqdgilzjq]rfkxwumjpjulbkiz[folgircuujlcjhjqxa]snhsgynrkjecrsu[vukuvrankaiilqegzup]clzyhjlcbrfdbjrzlu +opgifufncugjrflllk[epkqgmpkzdijtdedk]xmvotyghoniyalmmg +ovtwjnqubjphsgapb[cnrcpnxrfclncasoeka]duqduyvmbzwdopyxp +imtmstorxxvbvmz[muklxeyazsgitgb]sjuudyrlbxgtlph +zbnvlmvzeitlrvclu[rwlyxjkxlvgeyfzdl]uzlfzyvmybjonpqay +cdxryezdoiyoopuzgl[rnmncixgvbxromitr]jgqlptcrlpzdrqh[sstvgpzcldcmoslnycc]cyrecvckpuyjqifsuil +acjvnpfqosyvnvzbjyv[tmnczokfkjaxcvwjo]cszegpeuzanwadl +knqqmdktrcvcikcfvcg[lnsoisfwtfpizbpo]xfxuxthdxsekjpi[qsroiaojvihodgq]jaamntgiaqvdasnz +mqefdyhtbqynychpbh[rrjozrtcexpbrpvfs]dotleanpfblcxfltod +coayqpuuvtnwmxzhgnu[fyjdjtselprfevq]elfqjzpryzqsyqykkb[utrizxtivhakgjoeryu]ozeuxjmcorkcejprcr +ybbgylmtmhxlhqizp[uvknavcimbacgtcaq]bcmdwwkdvfnmnunyp +xfdywwnnhzqqvuywq[drtdcfuoxvlflptlca]oimttatgiboynmu[sdgkeffjrteokyiby]tdiaadhkqdginrtqpq +fbpfhfecwfprygkwu[hvqikgwyrdwtieahmt]dvtcvnchfsienpasxw[ybkvqrxztwzpsnz]aecndxpzpamjkanchaa[gbjwjnipsmepfxpee]wqjnfjiezpzacmgf +adwjbyiantljqwsixso[wpjjoobofoumdxgrxv]rkvrcmmrlditmjtsh[vthldqtnlpjrqbobzs]efwiuqkqzfdxyhvgim +hbbvxnhhxsvghuh[fcrgvyndxojknfr]twczivatsbiynqjxeby[ckqrjoolqrxxjgejzua]omspfwphybvgiqpsc[hmnpdaumzrmqrti]sdysxoudxhpllkknvq +gfussckpoykcibjnoi[fqnfbkgojenspavpz]xqwvoktikoqyzpofg[xhdumbvmqllllthhsrv]vattqhipurbfvlk[hbebbjewrlmxdblgq]dmdhdbknmkouvie +tupwpbmrvffvqbfiw[rqpefvswlzjnphduk]mvafdoftaeiojrirv +bawbqabxqwpswzezv[cjmoppcjgifyfignuf]uawfxptpbgjnqbv +sekswalpvwmmczwdxbf[wmcngumevhrbffuzwp]tqwvmkfngyrhgknowv +dovrepylcvtomveqe[vzzskfllpjbvrvrkryl]byjsouhntlopqffti[lqxrgcqywryeexyao]qsukbxhzoifswmycw[rktzizqtdvetwyrchc]vtsdazzrpipfcrnxbk +ydnkchnxezkalny[wlfhmxcboamfrry]rmzprrgselhmfbeamf[dssnudvuvyhvzyacu]jyzdefurrnaqrfzq[rnndewpbutqgejcy]qxuganmeckxcpdtd +xhwdvxmfxmktgaz[qfzqjtuqokjeznwalq]ddgmotioparmkkudqef[pkgzogoaxvcwsao]cyebyhigpzgyclscf[qehxqzuztsluyweopsq]tikkkgtpkewkzzkdu +cygqebguktathghp[qlkscioiowgqftpd]ytftmijxsnhgacfmmf +ccuocdvpjktkdceebi[pshiishnrprqohwpt]bubrhtrzuabpzzvbwrv[msdeugbygsvewfxco]nzavazcgkniyxva +coscymyrfqgisrge[oggmfoqevlabvhm]xfyhzwpfzhhyhimqkhz[cybjjylavqoqjyyoy]igzwdivoxazgajmiy[kkxkhfunkpsgyvwp]isgotyzlmyzfqrij +vaezncmuzyyjpeomif[lyvwvohtlkcdyuxze]wzdkddeqkxmqbqet +yxcqysoxpbwjlqjdp[jinwxwcdeflygawd]hgdgruqilmuzuzhsg[ivpimcyrtifudwjgso]ostoopidgdzcrzzyzts[vvaiuzzuzywesuzk]ccmdnuyihasnldexf +jhpygjolrfstkxwt[krdivayaqwfuktykopv]dmposdxasvjkzjesg +lcprcppxkrnwuytdt[wysluivwtmytfgqpks]orlmxnkipofpsdteaa[vroskwwxeeylirbkna]zkeahngpukldeszwuk[harebfdcelqdbfemgo]usisvvczvasjomnjrip +eybojdjnfockfbsdjd[xjxxevnxuwjdamien]frogttytivtegcy +rezxczwcihbkywyq[sdzzflizzygfiovwyw]jhtiwvelkbaqhvnylca[xpnwnmqbaawlyqz]kftcwdejxaznztqsbhy +zitlyztihmeogushh[wpsygveulmddxdzvwvt]auvwghiyvkvfxyzf[ccnkvkboczqbgcmekt]hkqnuaoeffocspxkck +ucliphnwkaxtwgnma[wxkbcziemdvopzeq]nwxnkykbefamsdo[lveynsoldnjkcdn]kluaaaoiqsepyqfz[bgjuhrlfjgiyngwkwgj]ofjimzheftgbbyrugn +hshzrytllakuifsbuap[znsqxjzxbeewshkb]tdiohjkqimfsaijvmvf[wxvmhzzkjopfxhshsol]qgjutmxlputvudf[thwwxcavnensivbscm]dounftyvyaoguqzy +hktpfbzotlbrgddcff[adqmcoiraqbphjpag]fxxdcjqhwkftprk[lfeudfsbvnqjvywynfl]whirlnojvbkpyndhyv[xpypetlsykaucaibapl]gcpogvgqrgensxdeyh +afbiuqpasfjkniuw[bqclbergutdzfdqhdpm]gcgpimwjmvopfjhk[geztaacbsloyevwikqp]jjmlssrsuxmhbtnq +ojotaeydgumtjrfdtam[gpkjanckhqjvfjewt]zonzrwxnucpwtrmqyhv +llkryzvclmpozerpao[gfrhlpemunmdackfmp]fbntrvdilgbposhu[koksbsqnmtfdsyifpp]eswrneaxvurkzfs[ixjekbpjqsrhnpgw]pppbdmxsdflptotr +vbmibdiednxxbammtn[gqvlmbobpzpiuoda]agjiighkbopkxvwakva +fnlgxejzkpocaonnloc[ojrecrvcmirtehjfcvi]mrafnbifqfcqxpmqdrb[obuqfqpyrkeinweynd]qceebfqvcmnowjanh[ejpkcpwkjfbvyjmyzoo]hhjyeulunsuagwq +nubgjzyeuxvtwcc[vlpjhggsyeiulml]evysofvjmwxxazzr[tapuneqjkzgtblgy]gvbvijhcgtrdsybt[sdufwiyfojmptfruns]zqzvbotgmrcynfyq +ibcblmwnlhhftwfd[ajuhvgkyaqeikjgju]rvuwgrbnjxvbcgdpy +hizeoqbkkesksvtjotj[wkvmcgctdzwhzlubt]aegcgfmdneprdbw +lqyvebgqsrsfbcdccps[hygatrvziszspyihy]ratonoqinqfwcmm[pfieelpgzrfzhdffhx]zwaytmidpntpolajcg +admawesoilkvcfx[rqurmchqtkuifxm]tliyyitqauzegwst[zwpbngnlemkipcku]hpxfncvznjgfglvugk[ruinbrosnwmxdzav]adbvgjbxedbmxbkpxa +gpqgezsbrdmqmeihdr[etboranxahpniwzr]woeyirnlebizohoa[rufjzeicrsxgitspt]gltoxcqgcsnvlys[dcvxqvoivyuxxayd]zkxlasittnitmoisr +acoxthwyfwbhszfoz[wphyzlksmfenksfs]hpzmfaofkobjpcdxzs[sncrftlydahuqmuvoqq]ojvuhabayhrsynq +nxtmkatkddomlbnxs[qdqxrwoaamrztvkzq]ycyqxxaijhrpzamcbh[japizeqvlqsmdqygr]xhxvgqmbzgomhsm[kizldaqvytagvviondv]tidqihojfrzvyxy +lllcbzykxbdewnyff[iomemkjmyaqllvcx]vjvnigrbpnhdrbi[ukmffsdgnyqxafwstg]ralpevvmfxtqbzyii +vphviazdmmvtcyc[dcomcirqycymvqkm]meeikjmqliqraeqd +jcgueeliyoclqera[verzkovhghnquyndr]lptflbxptsugmbhvf +rcdghcuautflhme[zngtjffrvagsmdrxurj]mwsuxjbytlzyhinxyr[cibaxfqjdkmdwxr]yikrelnmbneqrsg +jyvaeqjealrbvbvekn[yharteswtwefyedz]wosalojtbxzaujpiba +cdfzjfycznejinx[uhnuxxhxgipoujnarw]bkwbisknvmurfnhp[jwbnvuvlvegrddzf]bkeykrhmjuphuvoza +aalmyxywwvbwwttad[daxeeneiiiupzvqz]cqcjxzindssjrqb[komptxyxwgtnuedefro]xfbjflfujclbqflke[fpatdmophhvpcmwfj]cqbuduaifbuhwiy +kogkhuakigjclxbjoi[yuidmmdeopwzvatxc]qdsbzscrwpmnloga[xsnwctwrdpgqvggoian]yayspjjhhpdsyzkkzx[qbttlvpkbplhagtb]ndnljzkxhgdvclz +rojijwgcylsaspmmrdy[jzptmasniljjjusl]fslcazgojebnrrrz[ybcsqnloovizrxiwal]ghjlkcnvkjjlqodusp +egzqbmomtlqvjfo[cdarustihbcqwpfpcv]fzxqpzavyniyjbfvc[wkmiofpbdcsnbtj]kmtvlxnlvdjflivtuge[jvlzovzdpwxwbcak]hwbtpuolbupvwfcbh +drzhzwluzurvcjogd[haakukjmwslumvgq]cmwkhsuahrqxfae[kugdxfrtkjmyyfheze]dyxxyffqsfctugyca +mlalvviidgseekfkqtk[rmltlzesxldtmsnyn]xdqfkftanryqfqrqkhc +vkajuyjjhekfhmwwek[uuanfibpmdbwxesfmsk]dxpsqnnmrnspifpcyts[ezmjkdjacskqhhbaupr]wkzxoqszqigbajudnq +wmpzatzujoibyjdle[awbuzjartnsdxfqtlh]votzdrynubyfrdip +tstuekiwimhtizzlky[trscvkeiiriseqj]glbwxwiwdqhndmnku +kjgjcnoipwnlqnk[hpukxdqokakrgjgjpk]nvinvznddzuhupepemb +vuawkeimjefqtywj[mgdvjppiouqnnyhzz]eeemepklcxhhfot[ktiuxquqhzrojqo]zcwlowvczfjucqeo +zatolywcfoplujidaz[avcmpullpablbdhusiu]bkwehsbzcysrauzz[tbgkmrwkzqfysfdh]anakunhzskapvmq[cqzomvulpzbizfuqug]untygoozordiywrnkm +ozynyagffvaeava[lvsgzdvrtdifdoxgvwy]pdkwomqrhfolkmj[fhemhaolmihgxlehn]huscypjzuujagfaqk[deqkgecbrdfhskujqg]grknbktwdyznqgrwm +mywakayudrxzofpri[qlywfoydoqmsmaoygp]xpwmtcqqfqsmsys +sdwltsgbumfnbqq[irstsqsogmppmlmkont]lrwnbdnpkxgfhjeo[eqstbbwumfepxoqaszs]fdrrfpfiotaugunbdrr +bappxujhicaqxhwiaoo[bjvhcmhrnldlwyrf]jdxfokaxlkbifuwyv +jlziyvwcuubpsziikv[mvkolefxtgoarsk]tpixifdoybzfwnwle[lpbkitwthyxdbvwflp]eyuzdxvhuukuiaqfp[xcwvlmoqpjnehwudh]sqxbifjmrgwknsno +rblicwlpfezecfhati[aqqhagfhathupym]vspyjiyytesirim[rqjyqiviftryoyychs]voksponpgjfuwsp[tmsccufpnvjdtgs]llptwgpugyjizqfch +admwljcwmrudrrph[rcxxxswmdlllfdwrk]etyjbtmryjxeajzccmq[nivhwmfzjwaspuon]tslmnzikhnbtqwkf[xnwykihihgkletgdy]mrtryzmlleorzwpi +ibgqtdglmjgcdfsycxt[ruddaxuheyvamwyi]neoneshgxmsbpydg[ytpshrjgditzqmjdlz]nlvhgtzsbzoskiva[asuilfpsgtgyftgtsho]xgoevzdtjemapbnady +appgubyezsrmwec[wbqyvobthbuperojt]gqxsjlchxpwvdfvdf[xlndklktmbpjkzuo]molwavhkvungdkvwywm +jusgjqhnjemncvbvy[voitjezdotclvwaggg]ffunuypbjmopbbvoh[lhufstqbkhqxqiworpi]gnhhneydiasvmbvbga +hvboappbxdqyjvxqyd[yukgymhpumetulsznf]hgiqjmlrezzsfndrx +jkovbtabgnbztjmzsoa[flxcmdoflhlgvaio]qjxscacvdykhkxclej[taocvcbcyfrjgcxlkm]aovpiymrcdmebktxwfa[coviwkpdmukcsixdob]trjjdhlgwwkwtegkqmp +ibnaxwwqjgtgxnlax[zozdkkwbccwdbvbpf]dwuzbcgeqfepczlvwo[pmlmuysuwyudzjam]pvhpqtcigtknoqxlib[kvwfykhxumzltcxidt]hybnroedkguawhgl +xqwhbiiflggraco[uwhisdtpaprjfji]dexzbtghefojvtt[nlhtexyhufqeneytdtu]fpskbqhfhavnbkjxwn[gtxmsoydrotriljoov]labmxjlalzgybpdjm +ibxakiwqconeyudxj[mwzjwhmnlaobsdy]gvxbmnzqbrzuorla[dvbreuhggwgdtbjet]hjrvpdrakncsfejis[tstdqmetsguihzdws]ukllrzriimevvsekrkv +ztiyqybtvliidsq[mvhqxpqunpsqouvgrbx]qmhkzbqhemycwxeq[cdadaodqyhjhelanr]rtrnroumhiwdadrbe +nswbgqjuxdygjrihvn[mkznbbryojdlhwee]kccwymwlzrsilyn +sebujequsxstufe[romzdeirdhctzkmemwt]vqcobpsqzelktljh[twewiabushguyyp]mktiojirfewuoacey[tgnliawsrpkhyko]kaytwdodmxqandynomu +qvfoyofzmhctntofr[xcokguepiaisrpwewng]lwwzyewekuamxxlepz[vybjmfsierveheb]bzvvxsdlcohnpmgir +txjecoixmxyskgactb[tvgiyxcbgzkdmgb]yvjfganhyoguuygau[vztmvqrrheqkzasss]mngxndysymgybqw +ptprazbzxzrjpnrcbko[qtdvwjwftefqzaw]ajavbdsfdjghhismds[vvouytxwsxpkttqr]kobwalobjsrwmxz +ucvupuxupiasbzxsuo[hnocitmtlqgttgdr]qghjdvyrttaklumszdi[oyeqkgycqizvaok]xpnaaapzbfqdzvcqhr +vvjibkoyadzluivaen[cesqlbhxmigdxphcr]ztmuzxnzeprichmdsc[daemwvspbbljrfc]jmqbyfpmjcddlepf +ztncnhqvomvfnkhca[ohbigcgrevrnpvuwgpv]lnjucgcpghvtzlrgkh +nsdamwafqwcjnslx[upwtncktpxkvkyhd]smtcegxuoakvjrl[dhvmeqrfgnbwqtd]zwlvwesmxdcnywjdb[whrrgcaujehwqcf]ayjiiktvzvxxquszmh +vnqareestxydfvuvj[psgzifyszldodtw]zkrympmklegtsstov[gblinnqlnfqargqx]hfcchypjbzvbleabbo[xvlxasumenqxcdgzqo]zyhgaickhrgscmo +jqaahcqcjjtinevp[kkntdvvdghnkloliin]zmrsdzabbeotokuz +vnrmthshyygudsrbu[yjvauysxhjhnmqenmkd]jbjlrunbjbzvilmyqf[gnoejrqddyzsdixecs]qipibwxkrnbmdgtevfx +uoqovspbksjvndhjz[gntlvpnmkbjcbsesyk]thzecqozlhmhrpm[ebvhbuhvuyfudyeyeey]zdlhgafvupyipekqoqt +hwilsmnzpcjvpyor[pmphksrtsuqgkdqfyx]psibvhgullieqqwyd[uqesmzorfwbvwgkiu]hlxqjuuflhxlgrub +dzxxmdpesgrpwhw[ohdfatbpppptmdyia]pqxvivkjxrisnmzbrl[iilqjrtayjrvxccs]gwfohsvsvsldpwaelep +vaenounqqmpnzww[duovdncntfceyoqojlv]qttmppevxurnlzde[jhwuqoqwdxjwilrgxil]ehuvfpawjlrzmssbzkm +wwxcidipvnqzxsvhaxw[oivkplzzdeoyqlemho]qthsqnpnbraqqkeyvk[pdkqargzfikxoxwsimn]biqpfsweppknwjvuwx +yefdguujlfuicqqiq[hqlabsggdampkda]tccxpvlmetflxhnd[oqnlgkzvzbhvnzzwz]rfugmbtihisgdklb +cmapvofvmxpioycw[wsmfasgncvdkvjnodyr]dkxkldjxlpdineg[omntdlldszepbdcynah]swcjxnbotrewahi +awbucpjznymkfhjaa[avrrlftouhjbnle]atvuoxpckhvplxm +wfrfilbmvnfdjycnlsf[thxhuqnznohekfern]ndjiygqshnkfehr[jpdgoiqcdevzyrywcp]iuqxgoskimjzasbvsct +crckwgzymgpzhckbgct[euhwrvuqcknwnfwokiu]muiqtteekeqzajvnuc +tljyrckyrcnheftu[xshakjmkjvzulic]mrloxmdpqnxcjhnwh[yyqdzldmfgsnmph]lwlpnskgxbkivqku[bwyxcdoyizqjmfvmc]reyetuasijwucrgylh +zkisfuqufwbhfklf[nicopfmlcpsvwfq]nmwkhlxmquqelszgbe +cqnuuhyddzalcxc[fjmqzkljrqjbexcxxf]pbjsvyixepnkthndhb[xztvuzlknucygyvegxp]nwxzswdvaspdufotcxs[bivsecxgawosnflmfd]bvdtxxionieorvecr +txqpvnrfxykothvao[uikgxsmnyxwlobod]tddprkiwjtdcwbobzrn +qjgftnxktteviik[hsnjrychdzepxamtfop]golzdtnptijzmpo[gfgevfrczlektwaohmu]vauncttcwnozkrwc[ljvbawzsqbknkuktnn]inwckpvsipmunmpo +kqxvmryochlslekzhl[ivuyfsoefnqqtwspxtu]bytaafalzlqvjumuleu[apezlzoaspstxvknv]mnkfbppakmectmiafs +vungsqgzakhfjlbuwig[cgydynonrrgfswomgev]lkyqpvlplfsmznc[kttzkoqpeplpfaoheek]ssijcynyhenhnwvd[hleabsbwqkqqnvdd]xbbxdphvgzmnauj +rxweekbgidxrpbcxk[zvguddibzffxqcmvq]edhnueezmvxinaxyo[mqhjuhujxklirvkm]eaozfcadmhsyfpoj +rcdwnquofraczluzh[gvtnjtocgohcsiswush]gnajmbxnrzppwobfjta[dckvvzvigupevbt]veqtchjayfclaltohjl[mkwsfnvdltripnzdkwr]jhdwksbflywaaul +iltlipfzwdrsmefm[brcprzzhfwsrzbk]dlegyxlpizwtlts[fcqadgpocjjnahyqm]htwrqtzfxoeamiqgeq[utrgqiasppoxrbhhv]hwkrxhaxxtltgbuvj +ljimkpaohzhoifdaiko[dkjxnandaghzxflymm]szzkmlubraphtnokpcj[irrxpfhtabogipufkev]bjucnqsbphjhekfvco[vejyxqrtfxuxeuelvmv]muygwodxspxrrijc +inovovgduyohxdw[tbzvjivtssmlxyc]pimyxafhdeyomgeu +ivahljnswgwewyhhn[jvfdvgftpukjcny]rtisgwgamadavuw[lmwlmlrkckbundmzjvo]eqjgikocnpbjpdh[mdpfdbxenzwycoou]uelglssvxdcxlwucz +zolsnrosfihzzhu[ravlcysbjoagcvaacmk]czfdqdbrlvweyyvbq +vktqafvmirobwwhtr[iqvczcryidfihypuz]adgkyomqrwfucufmm[ecbtnwriqiiaurzkn]vtyotrwlidvraksywke +oagqrhpfnkdvvsqemp[qsjyvadkirmihtfezev]vuuantqauwqrbyzxpev[mpaqvjcfntbdcpdi]ghgstpggptgbvwnmyiz[hghmuvsvhqxvxmmnx]owoulisjbqpndzgt +yyyrtktdrrprfdtbyli[tqbcxefwdtzllez]uaixdyuensmvobo +rginebxdxtfoudqwqx[bvnzfxfxsztzqyyq]dfvdsghoihksjcoccbe +avmokgrhvdnoptv[ngynfydflwspxifoi]lcdqccyarzcasxrbue[navvkjotgujkewhrx]ogzqcdvefknpghfjssj +sshuolwwobwchug[cwcurmfcxqblopvho]ghvtsqgltvvlsahwqpt[skxuphjregpzpqm]epmegfynfypbewftism[mwtakvgutsuppqz]tvapecuvnpedscjkfs +vsqfdssjnhoineb[tmcwmioejrnbdyrq]hlclokouzhvmmywskkk +zuxeupjvtrzzlwezm[gsptwvqfzpvkevapsvq]pvjuezgybonsblmmxdv +dsyuvmvaisuqxff[vmguqxuvvtbjrrva]ivytyfdovrfmzudyzcw[kwgjymkeadjgvdvxarz]rpizkvgpobjriqutyt +rpetcixepthhnydtsx[dvivlhhlgbxftlw]ensdqrwytpwniviwh[uierkmawdkijrbrbb]ywvqqtldiulgtft +iruarpzjrxupbdovqlk[cipcsklubepettbee]jfnvwjcgypepsbnauh[ncvfofkqfotujbat]moqzftmyjreztaugkij +uqqijwordoicegmn[ihceutxbgzatiwhtd]hxqgbplciimactv +kthovdomnavxzkrtg[utmtbhgqydotlxos]rtwopdppoocytum[ptdpdrndjiboffigipy]fwxyvpdnlhjofwjtwx +vitzjdhxjjossygyje[vzysmvvgddhvkufqb]fhwstpatifhmyespsay[mrpnqgygncsiwial]cwbbaisjnqrpuzca[taqkhmlvfdelcrzbryp]kwsdxlkmoplziobgct +iwybfvkucobqwagtdf[nafgfydrpzzdujp]nzdzwcpazorvzncb[niuturhwvakdywurves]txickuysfxeaamhlv[kpiwhdphpimfnmjinua]crunehowomfdmznrc +qololsmsdenfcxmtqxo[orjyxjutzakvhok]wgcgzavspuxtiyhdds +fvzbruyrecjzobgjfnv[tfnighcrmbgeklgaq]eanwrgtehcxvxow[hrmkbicsuekiicxw]pmyfavysbfzttzncxbm +frjvccazhabvndxri[wrmbltymeeoqpqtx]hbyuxmlxfrjrzifpj +nkasezsbfuldeolo[wshypstyfliqxplkh]nsoplkbnmiagngvusr[mwpwshlkyfrxlgcofiy]ycplnfgorpssaitngop[rtplyrqezwrwqhc]houlrclmoatskoufgti +cmsmitcywtmhtimj[pevbzyuhvaqftnugc]rjaxtggjpjvayzmhx[pvfplwswzpusjzhom]jmaurmlkkbusduxd +tshzomvzzouayvevgb[esegiphlwqwlkgt]letvbhxdhuzidevee[zngibooquknjqqxnxz]dtnugmifjztkwjpqd +uuzovqhxwovqeki[ddwwgejprtbquodnj]nafunjrpotozufcf[lqyfeicklrejcwwrvxu]kfxgdnpvqdmvvitzt +syawdtcaspkeubwty[vyxykmhcofzktwfex]fmevgmpetmzurpou[bgqqdkgrojeesxj]lhnvraueoksvtjz +hkyhsguxgsejarhub[kuluosrzpmogndwe]wzqvcpdculcwgqldxm[uybwzbsgzjqfspayk]nysymudwyxdocossgu[usnahkjspekuwvgtje]gtjxtcjsdvtzwmf +jiuygraiggbzoxz[wopmhgtzdwlkyzvfhs]kquojxccygvgujcopbq +rmdqmtbvzoocsjddyj[mmwewpzkjayrxkortj]cznmpvsiqtjdpbgbbf[dfgdncqhajjrohr]kjsivnolfcccyijyd[smuudgbnrfqkxzec]zukmasqygzxrjqoz +zvhafubtbxcnggnnec[khfuhiaikrpowmg]udtuciwamjspaojuks[wlzjqwtmrfrfxmxcfd]plaqjdorfrbkkppep[exrlzahsxksdqsllkn]fooqtqpmnglrwokq +rilxjscompommcmc[qpdxzxqycqutfyj]xvoufpojhanaloymvez +crvrlgjjpprknkurjq[tuvlylfiibnpkzmi]ghncayxzzrrhwfe[atnpozkssbyznplv]elzhtwbiernezqns +yvdbhamisqligavziqh[jcfjonwpgcszajk]xdszcpfvefvmlduoo[vqszbxqazfwgrfazh]geltrpsnlfyzzxjsg[usmmfawdtvkvkcm]wqimqpbsojuimmf +fsgjpguxmrmwxeymhjr[gsunymylqpnrbmiqyi]bwqcxjzweyndcslvxx[rhtvuzqaxazgzhhwp]lqiceppxpscreytystv +zdzsidcfertfbeifye[vdttvawxhnsjirsifn]abpddikgqtsqalilwl[mgqwvkdulrgdgni]bqjuliwrgnvycgnvcr +jrrmfvdpwdborgjxw[uqsuxsointqfsbunl]qosvmfqnyadjfhrc +huekbtocejhhjud[hzglqavqagcxaaksxp]afqncrfalluiiqzfo[mdgrvbtzxdzaztpeg]lsthchkkrvofbaa +lsehhfmwrfuqzewvxkv[rjrryjrjwhgtdifux]nnhqgwmoxdcixsna[wgburhmplkpkrgmpco]hrakazqqsstcrxupvv[mhacbkzqgskhorwf]fbobhetgehykvsbmb +cjmaltrbirusgyoirp[eipxzkuhukkdcdh]iqyymukrkwitywb[dcvtitgqvetxqip]sldydwlrcdcrljhzu +oqpgfzdkcrsrazei[geqerlvxxatddmn]igakhcntksmsttyqsv +tjhfyftjaclsdwzby[oiinbkqwzmhzxeic]ehyliwwisegufbhh[sqmpgxuqhsxnzdi]whwxlqgetakchwht +ukgmtuvowisscvp[nhzgobykdniheamz]ekflzosxwmggiuuudz +sqbsxlbyunhhepfx[okuhhqbyojpkahiz]hhywggdmcojawfpvkhx +xlqohzjcztxennv[cnbtlwijpkczgrk]pwxkxivbtxzovdn[bekntreckjtfkrsihm]ouowyjrzyjbgsygj[cbirdomndbelavpb]ujdrausbmqhnretkhtw +jaowfyulkleymkdpl[yxwftdgbtfzugqnnzwr]ztmzcodybfzmfrv[sttkedpckbjaxmqvhds]fidvanwfqvpywervo[jtludguqxuwucvzcjmv]mfnoqzvgatqhvteacyp +txyjtniwndqckudby[jbemysikizywlxbv]bezhcvssxmbmzgpo +gcxfeqprbvpwtdnrxcx[kvhziidtwrxlhejxm]kxzumooacujxvuwsiui +vvzhcfuecgfvrxrnquo[oqgutuxthxlcxhpke]liqjotlxzbmsassyxrf[colshvmiwbfjansdg]vggdkkyqrjvthtvp[dmozaqtceghrabasafj]lnsoewepnlbqvibyk +keehyqsqydfzlqrqqu[obaslijmtiakxkc]wmrxgysajmjymaqpas[tqwlwdqldidsapjtzct]mjeqlhemnwupulj[xdnkrxbbtlkzeapnat]btxcxfncwhdqlhmh +qwdiosimjitfulva[dhnypfmjunifrhopd]plrzlaakgfirzcccif[strfuwthjgfazeoq]lvhimnjpbpagrozczhn +adqktintsuslnns[mtlbicyrgqgnxuhqcd]mdadfpkvbkvkaimvghc[cvqgxjplvvqbato]lbskgsbvqnvndequq +brftuxdhebezivqio[yukrabpvgetpxpylxj]ldgifnehggvkdtq[pobhasghdmctwcgl]ccevtzwnziffjhqu +ibeocesspzaammu[twfeunwtyqohdtz]kiknftbdbkwrzhrdj[ywsjzyncsuyykqgu]yqbjeqoftsblixeozlz[mmcmncavhecsxbxi]aumsmhzrbxpjqrxllit +hieqiicvqswviniteuv[ubxwceioqqhagxybrl]kikxmdnftjiqazj[oyvdrxwqbljzkjbh]mejsqgnksglqmsfrlf +zjeouhblfsglaxzz[efenlnptrfbopulk]tbdiezqxnkiwmifiyy[pylvblxazwozkdv]guaxwfuktjlovasatlc[blnlcbxxlcgddfquwgx]jkemembgzzxssliiywp +juscmzarbykdkbcf[naosptvhazhfydzz]yflhbtlxgowuvmf[bdmledxprwnfcaflpf]fvjeubkojokjcfnzoo[bmmclnpuykellsdywvh]vibjnjgmtpoyvdw +kqmrdsifaonqprpach[chzxtugxvhbjujlzgq]ffbjsynmytyajcbsyn[jsondannallzwhz]gjrnybnhyxjismip[nocashryyqnbsszebpp]pbugutcxooiznkwwim +vfziparbxeibtccl[efwcwvbtlutmoltmrr]fjwkgsaambdhwvefs[nsrvprujruqdlxrls]ivmnrtvdbkumpiio +bjweouryhlzxnkfj[uuqptwyhasahjmkirh]rrxwiqmpcbwkhzr +bgdivzqqpztnswtd[xwfurbswsweduce]osimciokvwbydgqojkk[yyjvptlwdknyxnzpr]cqiztxdhugywyclvz +ftcvabkblehqjyqtl[txwnhqhrsrnengcl]skhszkrtpljsgiylab +ackokzybncuxpku[xzpocuamnohjypcdq]dwroulahreyhkraojf +hqlijbwudkycvijqs[buaclznmftiadyidde]jxhkyqsoqbpxcjgsus[atcehpnpgwuchfzekk]rvyzujpclugrfyksmk +hnrkcioqaeeqjrpg[cowbmmovdcsubwiltd]myuwiosvtmymgfyav[yvyjgtogmgxxnawpda]saqmtvyakacfwsvtxvd +tyanupyqajrxmuk[bkxkehodeqxpclfebq]kiupgpdlxfvzydgs[rvbbrqbdsolzrgse]srmrovuaxvxvzmrmev +pjbnyjsxcwyhjzpvqkl[qtgofokbciwsszwa]bwvnbcneuvipqaaiyjv +ecxbamdgtlfpmqhi[khvmvwiorzygnitsbb]znripfwspcqgsdzosv[nfhgdavrprmveeexppv]uhzugtmfmipmaznbby +jdoggfnexvkxovwiatd[xzxovisxynejpyxhfz]ciehyiyumbbwwxrc[nozxzgzvotunvgnhhjk]umzgdkvcwauvkzr +qhdaymaijahfkqzw[mbjhxuvbksqtvxwveau]rkvgvfqsehbynbom[keygsbhockgurps]nzmhlxxwjlpjhzbhw[ujitcxihwbjrmrep]cbfpxvdzbljvbfpzsw +wiuprpjfojcowmy[vmrpruwhtzbwyciid]ntbkrodejcrwavjfqfa +ctqdkuxwiricymu[wexourbkgedaqbybfj]revrxjgaoalievfbj[qtvcolrhwgqtjesuvkw]ozphhuwwzzguldf +bqpwrkyhlysqvwxga[ghyqnatqnccegjnkgw]pdgglsmagwkwemidd[fcddsukcrksifkv]cyutddgeoqcyopmm +mxmpasrqdexjpqfapbh[rqeoslcvcwqteki]zpervmncbpfbhwaxmd[rnljbhhtgiyluaaetx]aycxgjfqyxhgeraelo[fukyvtlgjzupjjrxvt]peumsiryqvhwcsutrj +nbdnniplhgrqkrcd[thcyuekybfqraxspek]rlwhyqiavfrfglg[luswlglyiuklvbuqe]mdgjepgjbhuyqkcs +lwueejoqpguiciw[kpbyblloubmxdhk]omjurxlkfpsdwdmbl[qnifmaxwapfvglrt]vssmqdzlxyyrdgkwh[ljslsxolkkivoakh]upwkosogsrzzuej +rfqbvdzxrnrbuhvw[wzurtnrnslhoqkdoaja]vuxsxofemkrjzqkk +pqslistydhvgulggwbi[nipdejpoxqfmbeft]frepgyumygqywwycjl +excgzlqtguboybi[guywktnzbmkwqrbp]qghuyihqlgjrdbuljs[zrkzhirafcadgqnifuz]medyulldvxdtpmqifpg[lsmokycxcicnxcyfpe]cobezkjtvpuqyqu +aajcheqlcfjvktswy[lsgbzwuxqcbgicd]skvwyyeawvlzzfp +afnnxrxdhbqqixcli[msrrsiakxynnwiard]tzanbapzvxtabeuz[rbyqhswrxrofedlykg]phyilynmscckkxgbhks[enrqxrwqiotksdor]phnmohcaqxspqhv +pjyiwunebggfgpgsk[ovrxnqwfhtrjoxwi]lmkquysxzdebvarwfxu +cdztgjverhjafgemi[aogtmpdwqhazrij]dmypauxszajopbp[sdsrejzmjvpjijq]okitpugefdhpbfnzs[jyospqqhusxbhfuuzp]btfwfpiblknocxncj +djgkwjxzxrgsncwd[iuaqmffmnfklkieaq]agtkftischmbszqpo[conozrxbpdsuonpvx]mflbagusvgzybhasrlf[ntidmtstsedfdbfwost]igffrxgipzxzzyjy +ahfhhpqofpjyshcus[lrxchnknzrjtzkgt]hvtqhnuzihgxovj[wbnqnjjnzltdyvxswv]bmppxzhzgwdsckuo +ghwlmylxxuybkpmo[bkxcurwihedpwjm]ypkvoiavnzgzlkahlp[lnxohqbghwsnbeqgk]vsegowbzcrqwcsgy +whzaoswycajecyuw[nwzgcizbidljdtoull]zfyczyjiqsqxgzsjm[nfkpyfcjwjijtnb]dabgzqajwpzsczrfzrl +sitsnxvhgjjnlitqs[vvlbonwoskugqxo]bqitwdmlvnlcziltj +avgdblmcidneynp[gkjdefhfakqungkij]eztuncfdkicjhaytdzw[dcfldbgzscsumjox]okqkplzsscszdsxejso[yihmpxvcbnsofchozr]easrxwgppwzqern +cvefvhycaorfsfbmi[fkvzdrremrlrvdl]cfcjirtcmdphvfircx +wegfumofnzigbnhy[oqkrudppjpvcuvr]fzyxsxrktwkgrvyiwz[jkporwybtotanposc]exmwkvygccdurwge +iqfavtweexjxhdkz[drnsnxjziacormb]yftyjvtetmuvwew[vlrdviggcdfnribze]xzykwuzopkedwfqjxo[vnadxonxshmwhvk]mqbtnfjmhjmfdftwm +odyopnscztauzvjvbfe[zpgqzgzcqclarhkkc]lfuvvhwhtlypbfv +ogaqzpgfwlmdrjgo[abvqsomptscdejeyfg]rukgbtpqwyyvnvrdz[bcvgngjhgitweuc]bljvftlzomvgvmlkzsd[yhpnqsmblsnfgfnyv]nvnkvwwllyygxcdnef +jlbnwewczmvtoshkwk[rmtpjyqhqxturbfc]ulsjqpziwqfjccmdpgy[neunvaltjjkcxvf]opuswwcrtqbkqyq[wzpxgeaohprbhvamaf]ybxisfhszawrtgsj +mmrbaaqjvgpshmn[exjdqzgpzdalrwmtha]qrxggoccbehivaiegs[udbyzlbkpvwfkaot]vfbmvytjziptkyv +pjtbkayljttjwyztu[clbiouysqsjbyjguhe]srltvgtetxcbkud[qnuhjnuziihtvqtbeyw]iccppmvrkzyehgiv[lldvqxdqvpcrizue]vpwqjhbktcmiyed +vxqpmalvgeaxtkpv[elquojhkjsxpmks]dqvuljielvjopjcuvsx[yoklegkajhhpatv]cnfivppgdnkjzmrr[vnjebiwfefjgqzle]aqkvijxvgljbxmm +lhkkzniihzzsqxdr[gvhbztmgmlicdoasdxn]fthfehxdcnyjhdwvsx +sthxexgjpexecjzr[semwlxfagpybhblcq]ztkmocjbxsqnwfs +tsswuaezqpzyevei[nolctgupccscwsj]serolamcjmqaawea[qgjyyldemhsqivwmvtn]rlmxvchrccptrgmmbko[qtiqgvilvevjvlkxc]jjcnzdjdxycczflslq +geiglvdxwpsdtyt[isbkywwxvuzljpnv]djxvppprsgjagqtfgl[wmhnkumvdpikdjhmt]snjqvydpmjqutduh +ksqeegpqcodzekvp[htprcliyvqdgjbqv]sqykqimpyqiwktnq[bfjsisougvnyjoyha]ixghemgcvicbedylz +mwomvddjcxrdzmqplow[fznhevtpwhldwpo]ygskvziyhzxmtbcikbl[tjhieqjuukoqmixm]mgzzrsccohxzfgak +xvdiafigrvgrckwol[gttxgvtlreruvonzl]fgwyzafvtwaqdwuo +siyvzqpzfobnlgtxn[zcgxyzgysabhpvsviup]xfdpicxyxyjgxyxd +tuyintcsfdyhfxofk[abiuiwquiscebxbk]zqazrpoxqqswycjwvk[hayvaaykkacbakpom]bwwhqzhuiitdaed +ckkmzdomnglfwcbeh[avqftwjqckajjqe]fkpgyrqzygfcheoctfy +teuvnsaipkrkmuu[rtiypvevtipwuelkzxf]xqywsffobbokraw[oonkmkqovksdycu]noxwpblcqqbikpbck +bwgmejgaihdorgcqq[djldztucejcjizv]nuuzvdhlgqscyrjmab[nwcglzehbfzzvgr]aybubdihvypmvqmpfhi +gxrmeqpjnbegqjeuui[iqpcaqmpavyeeqkye]etydxarxyxculok +wakuruxdmenhmcsgt[lndpybwsvzyibmd]tfabajlzuxwwhofz[msknqgraxzpzwytjx]lfoqigitqufmhfmgwgi +gpusiwyruzmkoluea[ofbgogetujmjnqv]dzmarlipdqkgwdzwzd[uhsfvlrawossxvxyk]yeseypubhoapfgdjom +rcmnwwzrimrifziyoyg[avrikteehxhxcqhsq]yklfcrtqwaxmoepr[lahpskzjdwrjonqg]wddynujhryzkunrokho[ixwzkdpcqefelgcoabt]arjhdevhgaqcohbut +zkcxzfkwxxdtbumymqv[qgaztskshqiukhwuelq]wxzpzaxuhdtfbimub +nlgurkzredyklilaicv[mtxzdczugdhoowtp]hnhcyeygqrbqdnsc +pbbcmecbydtmjigfn[giiambqbdgbgntq]zaaqvlpkysxuvbgbo +aqyxolkflikpaxr[iqrnhzdtynkqymz]rwmgahzmvwtfebyguxh +kcxhmwgrvommccee[oqvsuahbhwioqeunkz]mhcyripmlfivqsimnpk[zptnyqihvavtlxkq]guacutltkqoixskg +ldpiuuwsszyidqxqj[tsmectapcwuyhhy]slauiehtpaocaeqyd[wbhrligadmsgznlyvd]nyvfiipvkthxjuoubc[zplkhqbtciuqnhjhiwy]olcmrcsayukgcbf +tzcpkpyrdolcerqnwu[zqvhulfxfhgaehbwf]zaekvjegdligfrsh +ghellbvwbjaummjjoss[pevgyftbjzmlsryfzv]kjdgnwfofftlxbiabir +pidtrxbnvaobubqwah[nftxjicikdapqexh]mwssisitrwjgxhk[nghedqdzfdgxaqacas]hvehmhbxzfwylzdrjf[bisktoqalmaapoomzt]lwkkhvacvuqvmsv +bdqjqlmohbjvqlson[mupepkeeoofwydse]ekylhrfsudqdcvkv[joofkljfkmpknazry]anyojhejtzfofcg[zcvpdeswtvtngyqleri]seqoyrfsqawkrudmg +lmjegqfshvauxngz[ysmejumumaurgvgrsy]xrmslpnljfmaidojz[mtvwolafkcxlwjjthy]yjqsssxayanfdrel +qmmiampdlsscnqml[ymselibefbqnqakirdw]uzxhisxyqljsdvhfe[jhjnivjgqdfyeqcea]nxbqpgyhtqzcwoptq[frlnwadwwyfnndeqv]qcbefaxmhgspalprcdo +tavfmtbizkrpnerc[kmenfsatjafincrwrlk]pbbxvydrsqnfyap +hwrkfzaovfbmrqhff[qglmybgnoytlkma]ibbbvmtqegqqxdk[gquqtiaqekcwiudebb]ozhpyabnxipgwfs[xqcajsdxhwpkofa]ssaordrnwjyvmcmjtp +pkyhiseqcvejtkbqcgf[xvgqerenvyizecof]sflyqnazxuwbyexzwyq[zppuknfnnngpwihe]hacwithomkpaveqjrs[whsspxqxxqihxrmqxvn]ifsktqmduowpuhck +xqctscaefqpvqcrm[rqbjdsxwoynqeoubwz]zycfrxbkijaedhkr[rzzbvjmogwxgcqa]hpzjokedwwmsbcrggmd +hcbohuwdyeacvgmbmea[mmpvzmjiryorskh]tydknyaqhgcxafmqj[ejadhaojfjlsfxs]duohhgjdfjffvwzcgel +ltlddqcbkkayshw[qdedbdppzuqdhfaxt]doedeeehsibaylpsnk +bywykrbttmmpyacsoo[ghicjobuumyckupnmw]wzxuueyajmgprxe +gejngdvsephfgyawm[eahzdehzhyymhcwx]qejrbkjhhplzgbehwdw +hobcaacuxkoxnutlayu[yvsylobmhtczpxdhvh]qpwhgyojuomiubmahcd[pmspsmyxaqrdvcpwnwj]ghdvfbhifxhphkseh[ntyabnyuoadseevhvpf]opibtuiwjogylqzt +bbuecmhireivvxmtw[kkvuwrudhmpqpmqr]cqrzfeasrpqapvtjqnz +uxsiwqfamsnemtcqyym[wemijyiqgxbcsvdz]tdhlutowbxpxrkrlpx +tnnlwlvfrrluuxjnvx[fgijrjghghgrkfmfb]lslknlacvseuzwy[acexgqeksduhjpf]enxevtqjetnyftgrad +wiegevfedudnajr[uryivbxbutbhfuh]zrpurmrupgeggdyc[tfykavyeulosotky]ahsieiakxnitxhaa +cdymukpgwzamxpe[ihvwjlomeozhnxq]zqlglkiyekzhkesoyui[dqdkxlczjrxgbdfqf]pdipsbuxwhibjytdb[ngoqkjeboqlsuic]efcostvlclbxvzhloan +uuavzipkjlcgutoxrbc[orpbrqapdzdsagy]hbgwsmgmyowonxftjl[wrimpmzmwyjjtnkaf]qmlpvrkqhqbdswyyvpf[lpjhsulqumdzgjxuajn]yocpoqqrpuquduay +wivyimuplkhmmkxioub[vqfixqklclmrbume]trenzswrpqljwctfat[ulkqyvjjpchvkpd]mvlwfrclcfqziho[pbmrqudqsivfemt]osmrlwtwstidtwmbmzc +owpgvzzedsxwjjdeuz[kyqifdbwfxcphnb]kyeaxxmsplabrbd[gayquqvysxjwpckzlvj]tiuxhodkebirvmdb[zhnicexwwcgbbnfd]hcxwgyjpphxocggfl +vrjvymyzflpaqfy[fokfgiaiyyzruyt]yvfrfomlsjqkvtps[mprfrwzeokyjmdetnl]znjipokvzxljjgqaw +opczfzhpovblsevqcx[twcavjnyjerbqfqvooy]tmyyybovoyqcygzzyk +gpifunuvcpqjornc[wcenyqazsxzksun]dijyypqoxxmjiyi[kdzvguquhohgsghqqko]tzknqsgldnnbotqnocj +xtnewbseisluqott[ukktnadfrptzmvmnmwe]nfevmvifmaaubdrytcb +uvwgvqvzikkvvaltpbs[darnokckfpuiwvaq]qjgglscrdhximnfg[cplqfytiupsnlwjnz]tjjkzojxijhhghoo +mwvyjvnzfbptvndlui[dvpxdnwzdssddngva]nkvlbcdcwjumrqmjuw[xgrpriwhdpyxvakfpsu]jzugamflkelhfrzswca[hvdnwrkyrvcdkep]kqyiaalprdowzeudqvt +zahhurbvayisuhkxluc[dpkhtfqcplnlwkr]moobahksmsqtmxasrw[oyxemzzmvwvxrldebja]tqnquzqoslugwcqcwtr[vibjzqdbmsmtxckkkn]ylujuamatwbexgo +ffpiprpoymeaccwoun[avnvjzwvzowgthwymt]sakvpfnqtnzdyhodzud[egijncssvgvsofu]dplbxmzfihrpopurlvn[knjefyormeaeoni]ubcbldkemxgefbnjcbj +fpyokxpcrydmqzkgr[gprmekopimtigwz]fobjyaxokhstzjsgkw[njzhtjqrhoynlzpiw]svrqxlhgpckwoat +srrcdyevzyzhxnx[bbojuevgatiabjudws]zoxxvzrngllhtrtfm[rxoiyzmzwoenbodp]keodzdiobtdfgrxzgye[akofrgfwqtqblvntv]rfyrjcwbfblulkw +kxuswiaijpaejqzoxes[cgyhiwbpjrhaacwe]uqqocaxbsotoaei[runskhbiegmjwfyjv]qgnmhdcjcbgbsztap +kvzutkvgsyiyrab[zhbqkvgbyqzgwvfpbf]nhtaiwzmvrssvxsrdz +tncgsbkllaugseepp[axryamrptnzekcb]xcvqkfuggjcfqhb[mtmzyjnvrgyuwtev]xziofjwvnbsothqzdm +hmjthvqdelrmghgnvxg[cvfmsllxyxchaglntl]ikpeldmfhjdtnvaw +sdhirfhdcxlwhxevbv[rfktrkotbfwiolxd]bhbkmmbdisqlclttbi[ueaqlmpvdaoxhezzg]baphbkfivkwpmtj +crzkarxgbgpitxjeunw[xlonohiojoepwnuhd]kalfjqpazwmwruq[erssxjpfzosbcta]exvgtqljewfuwioyq[syaeqtgrgswbgbetkzw]ofnozzjtykajqcuc +xdojuclultxptlxgci[nkmxgmiyhrrfgoshmeg]zqxcexaabvdjcaiarw +rewjiwxykozqjzneh[tczrbiawzwtndtqnew]yxrgwvnswgyxjvnot[khomcpuiavkhwjsl]ksqiuqyarwwibcssseg[dsrplcalbjojxlecjdo]falbpuscbjsdxvyn +dusvvyynezzobcrt[yrikyxqxqreoqcyyq]vkjxvnlnmleqybmgt +qzmjfdvoruomeilaejd[ksrwqvmnyiessfejo]lvhmckdfwzoxwmydxm[icmiecrnoqepcuzctl]unxwrfwxgnijdxqjc[tuwcbylgfhpaveyak]qslgbtviucbmeluf +djblesvduxlxfxp[grmuswjaheivlqvtst]yrqstsaryoqejwkd +kpyoqmyglnrmxculu[tuyuqjronsgluls]whuymvpcdxvxrimvmow +lruqeoicrisykqejy[ruqwiitwyrsithkyo]hbgqgiywqwsclcsn +pkpmmddfcezjrrs[rbzbxotrbqlnmlpidpu]aakddaqjvbbafbnk[sendmtepxbcpttn]udnifsqhogqvszi +foqjzmqhghzmymeq[isvvkjfpmvmhquoidkk]tskrbirqdtjpxolwzw +pneojhviynihvnv[meuldylhohlfwsxp]nmdwxhxuexorktj +gpnxdnxmueucaawmctx[ggcizpwllvbffytwv]riqcitchmdekosocp +kcoafhejmqsopizo[lyoqftddzxuuerafco]zrvrzbmnzcawaydwg[bhnmhrnwpzmghrprzzw]qcrnkmyfcdoymceacg +chcabwcrpxqnelguile[ckxfqhnrwlulnfgxjb]toauhcbsxmeirtlyy[cfgmasaieapbabcgdd]ijenfrqiaeiehllwpvk[ciymykejvkzxsbxy]iiyypzaxohmykgbzej +yeqhlpncjcipsmtzpi[zoidbyeatjrlgmi]rcrhombxichyykncbwh[wtduqjwbefekhnwo]kqemsisbcrcjaqzdzw +nbxvvetblqcarlcku[njrccfhdvxtarpj]rhndgwlyfzaeubc[imtcezhovdlfyixzwm]dwughoowqyazwaziea[slarywwdukqwygnhre]efzdruetqfoqqxusb +vhvbnbyluqqaqzolkrs[fbfwkawbihbzwlrhd]npfzyqkoxlgkklgxz[zboinxtlzrqbwcqo]jqhvalbjqaogtyn[razwnxfkshezamemtr]nywqcxpvmuudyqo +jubvozjfmykufhrkk[qhbaxcvcpyzbrwjlrij]itseilbvjwvzlgqjfe[lgxynowzlpqgoyrk]inolsbnzxvdmvbrvwqu[hjzfopqwsuqvqhb]wffwgmhjubihiqkpuls +rqnjadbwfosviivshb[rutsuesebrktxitgy]abukeyordcrrqvrgf +bfveiveawwoqyluxwu[trxwkfvioqzltgafma]swkyqokgtrprzzit[kuziuekaorgdgqjgi]zudaehzrjfzogiwb[fyxwwswqrbwgomriqo]sqfjrdskmdvalkhchc +pnrvpotetwyvodue[xwkxyzxflrvxdfogk]kamxypekoelgwktq +etjkovmlbwryvhv[wvubzziqtxbjvua]hmrqokvqrctugqdazz[ykobpstcxdqweotsi]eiczvmdcfjpvhdyfnci[eeklndzunbzipcqubp]tjsktxuorvbnisy +fnexznsqqbhygrm[jgnmivchcvxgssjcm]klqcaszkwyzzecve +pdmzjundpcsxbgplk[lbdsyrmgxnatuwk]nwrhpgieqrtzpktaiqw[dcxtjtkzvlxpibanjma]djszxtofdcuyfpdr[kzblikjgqfiaykr]yhiqqurlkwlrrjo +bwtgmmjbtisnzbnyedf[iniovvuewpetwsg]dgvjyrzfrqcozekvp[xsulvxvvtwcxuvbxau]vvjyodjlbbjxigdxvxv +jcanelvhybigzhplc[lhgjkwbpdlcybzgacya]uwisdadjoniyerw[kzcrorifvylivkhs]ssicvecwpkxbdwq +tuxlnjuyudvhazlxdf[oknheznyzffrtcb]joozaraxuivijskxblf +rvfdfyaemhgyeynw[hmmkdfdhadrqkxzzmsj]ugfozgghllznjhdxw[ucrgusuuqthlgxx]ipiercifxtkghbkf +jgzrilirvzcocaphnz[gyrvhettmmhxaxbmyg]ecpwkoozcgtpoac[iretjtqyscaqfqziu]wqjckfkbfoqmmjkuhqe +pswuxyynrpckrquj[wfbedboaabsgnnzzzwl]wgfrecpfkvlvjzl +zkcihebtrfmiryqkd[ybedpynfafkkrbfdm]ovrsmnhexyqblafad +pbkoczqfumwdpfu[gtcvqjuwknlrfxre]crpyxhawudbilybaomf +pnagrmxhmjftwltxh[aqlhxdwuzrvnwjwl]xhmgrrajywnizazyrdc[hxdxewvthhrwhsva]ckluhnyewiiqazzmvd +amjksgqzgmoavvxtov[ekqixufaaepczzusfga]fvlmiilpsqsgfgg[gzcyehzgpujyquhrkm]caaocajhmhqzbacvpog +hitezskizncharbzyz[nbwuldsjxkjezjq]monndtwsxuikupvi[iardznrxkorquvyvwlk]etzyolkxhyqsdirbaj +ocsxlxpsgimcvori[gawgkxlilqzeakhzds]bodnyayaioozoeg[bmaukrfdlswrnvuwy]nafolaiqfeendahms +kseklqtakbkzzhfd[ghivxwcqlgfgxeot]levjimgmcfpgqrjjic[ixwevpbqkyzthafyj]azdxqlromttwteeqep[kxyiyoxyhvgqlmvscwz]zxdujwvngqyoabmrio +elgbshsnykhiyndouao[nhumkawagmrztsamd]fwqupmyuogneywsyhub[zzcemywfdswhvjpl]ockclifwawqsyzt +hyetqdpieicmycip[ciwciijtqspvydxsdu]zjrfhyctplqvypy[hdewteddlqfaoifgy]murcplulddvzheegmgd[rooqfiqsnkjeelfjcag]pdzzjacxzdzmmgmqwu +nufvveulfkudkrvskbg[cdrvqfofoxmqwtv]jzgfbywojzvwumo[vvshcsjnhobkayk]gkwnyerwhezneuze +qhmjnzcokmkmvclhfh[ywruoexbmjwuxvrk]lswliylmniqdgybtyx[yjrzasyfroiuaeps]xevbxtsyjknqmeuv +crwelvogceorioqm[xmduhdacxyzodslgtv]wilmwenmmnwgqteftrx[zonwpkkjimmmhbrtls]vfbovjoabzwjpxd[jjxievceapgflzeldwb]onucskcmpkgsryl +ujitrvtlzcrtazmghgm[mculcmczwibnuhtunnt]izqgurxwxhwboygvmf +lespfnkqubxfoqa[exmzkeazfrfrkhzufz]xpunddczqrkxtgorc[ymsbogpyjeimnuola]kufhnwzukrdayts +mitdlhggspwferwda[fcwhldszpyfznayp]rbfzewqihtcwtjznsp +wzhbemsmffcmcswdvp[jcbuktuymokdqfjj]zyhqthqbczupmcmkhi +qulvtldmhliyflccbyg[mqggwujrznjefvjw]sduatqntzkkvgfqel[fyxdewnrtlkkils]utxmideawxrzpewmee +ggpinoooeucoxmezfi[ovisfbmebypyafknejc]ccqkrmaimxmvxhtain +cqezdujipgzaara[afkpzozyzuitollf]srmeiyjzqjruima +ivbrwakbgkrxpilylu[eewfaajedkwjbdrk]stsichtqqsksydtubf[umxwxeikoyehrou]kwddyduytdhdgdbyn +vowwatzholrusydvmdb[jarugsbvowdtznwx]oofschlksdrodakrk +oruwtttstrcvcgxz[cvidyuxfxluddzxuz]jckmrrmvolclrbam[dqptqpdwkpewhmcax]rtfmeakahrcbazlzsju +vjrkcrzvefpxgardmqb[wxmurzwunsvjaxfhik]meiaafxurfgikqg[dkoextitsnfeorgoihc]diohmorpmlhisrs[ibtzwvoovjmdpfi]oelairhwcbbltmjcjdr +miafjehtxwnfqzxg[nlovpfjpeclnmlbm]rleupmgzewtvuewypt +osoaytxzfrkcljfjv[bbpjqntkuuwpgupxsy]bgryerdaukelujvayjt[gycrjaelxuemeosc]jgdfpdoltoqnmow[yfwoyzixdzamgqweb]lvmnjywqfjfvyxhb +oiksidcbtzhhtnegqa[vdxnacjfxbcsjzqdq]ixvwmdqdaleuzjniki +ngbyqfvobuxdnjeqia[ksktvzdyzkvyvjrgkos]xwuslzgntfwrnyqrod[cxmkhhwyremunrbc]hijkgxizhlyzqfaay[ljwayjqxyrduyoebm]ancrkgmzboqtwkjah +kxcifwahsdmqasrmwi[aqzdihesmgntomgmj]jkhmcqvxqxtshprsy[wgewbxfsobokszgsivz]zlpavaqlwvauvedwf +ibhzychwgtvobvws[qaestubbbtvyylbr]ovsxlggntxnneirtot[kgqrkbiqracxbnbi]lzpfersavecdddsytb +abjcqoeeqfhvqmo[eferwxtafaxzidjzbr]qztbvxsaiyqhcsdkj +uqqngbvhyfxovmdods[zwyybohwrhprvxaaaio]cgyaactenmhiokzh +hiqqvjquvdkfcjwmo[jzrxnmbrqfhjhvppdxm]mwvibfiltxmwroeruo[fasknewgpsmftnx]aubymogtwkseupwmr[xnyevhhalilxuxqqvya]mastwtyfihocpbjngaw +aqvkyxqnjtthgkjxr[ahvjgtzfqetvqhz]vcaijasfqaygnxmdba[loyjulxsgyldkotlefn]lnzykvlsbkyuvnqb[iqjxfxdmjgyxboyzr]zbfwxpxbthtwtnjdaw +iweumcmplhykolkazmb[zgzeryniuwebpka]hsuxltmwyxogseiogl[ogacxzbrbvopihzm]ipogfmqtohqqfvowzl +hlvbzegrmbrgoepemyh[luscnqomtcxbpxjmxvx]tipsuhgnhdavsubyqha[ozroemaxbdbcpnydjqs]xqdwngpkteoyyvkq +fgpmkosjnfnltkfy[sxqzypihbntsfnryubc]oygetjhbfvozerfzw[nwvofzjfuwdzxncwvo]nvbtoxgwkmhnyox +kbqkyxwacrffvkoxmb[tqfooaoggaauopcanz]ptiakppuyxzwzpua[tefuhyaqzyeteexrsj]hkuwublifohismiqg +pdbrixpmacobfnpg[mxmgtvdlsuyhjnjxz]ghuebmnxzqfljxyutl +ichijthjvilenbfg[zeibnuadotzachqyvej]qogvchvkfeskckvmxw[plyhbwjrhhnvdumajut]xazlyayoobgkmevrpho +cbkznopiuqsssvle[gecuynehzvcmfuzcaxz]qfihmsdjfsxymvesb[jtriyipbkkpfnazcj]wbcwllfdxxdzrimwues +ntxzlslwvxztbmola[duloarwqzkzxsfag]nzrsxasndnrktih +fvvowikdydblgts[xozwhuhhngdjqnbry]hkcwbqloymkqjyzpj[xfwuoehhuljposct]ashitwoprqcooweytiw +ynbifagloxgkzlydhk[qoxltvqdpmqhawcvef]wfnbtiyjafaqfujr[crcuopstahopywinvgc]ppxsgbvevlrkdgsv +tdgutgskbatswuizuv[zpmhakbnxnkehhf]ffuohvkaxpiptot[zlykjduigarhxygukw]bucqoskhlesclyzbpd[igdjnevmqlibrugc]seyjwcizckvbncjwon +holbjgzpvhqirwrxts[lpvaadhoqjjwvijk]etjusqwbrccaqea[livhtrfodwoxnkvk]dmprijbirsnzuptikc[icjaaepybpgnorie]imtoivdxpujjmlegqn +ljywtdshrtzqzrln[lqzqgywtrpgszaigfv]vjyyvrbkjdiiminfas +xfluerhpuqsqnrq[rtxglsxbetzajmo]bktotbhryqxdqfaf[cptmsctjrifdojglh]qzpxnniqwxlbvnexlg[vooexmzwbpulnxxv]eumwdzoixhfxkoavu +xmomvhstjavjyisvhs[suremlzhaiwhikzzojb]urbiiuvmveiapcybgz[botikbmkcfsghtgtcn]jbsrxdkpxnynfibgxyw[agdmtydfehaujynym]xfpytnqyoafnuott +xjzhgefdlodsdahv[ihwwnfbwhcjdbrdixy]kmsckqifucrgpocyvc[pudtuuaebkvsrflz]qjfwaaylzyhzerjbhyn[fsnmlxncwzsdsqp]edevlblbzmwkgkfluke +qxlppzrvoymnsiyb[ybyeqxwtoberzwvcdlk]zsofrmazkapwiuxwjjn +jbdmjeyxyksaonmswm[vhxyxtashfdrzjzytoq]jpkbmclxjtprrhmaz +vxishfigjpmdwufh[oykzgieieiypyrqaxdx]etgleieyrezvbcg[scrtyttykipejzmuhy]oxnektqrkndltaixnj +jnetcyoxmhjfyfjxm[dezndcwpoghexum]xloobrzxrvanbbh[gvcaufplrrstvrf]jgdhedqsxchoorlai +enbtwxacyokhcwyhxp[ahjgrmfhavhnhqoqsfs]ahdcbzojcfgzkjfe[gtjphvcbwzsiohlha]lwaphixwqbmbqhyoccv +arwtwiiowytbbjsumh[iwdhsnllysydgbcuxw]kummpwhpyydfdaf +laidhzhbdwoezqhi[eccvqcxwasyyzqvhrw]oobigxsojqsyijmjmu[kinacswultmqsxdhw]xlildtoykeuzgzl +fbwcshbijakfapcqzj[qktwqwrlnuktxjvuvn]nbzsrphskcxzuzho[lrbnsyzvrorznoq]ewytfrszdyhcrhpcx[bmzudjktpnqxqwmblf]xtwqqocsaxoluhsh +xgnhvwkwhfbprypnak[yuwpjkfdxygltniuepa]mmbkjavsboilcvpp +hprznssbfrukcvu[mojrsfuktavnbhzty]ipdxnxmtbvsazyx +tfdicuergiqhvie[wwpqnqkyfyhuqlb]wovoujvgcwuptcqhkd[whhyzgbflhplrff]kezriqiamcvkeifegv[kcbdxrvoharumkgzufn]xypaikbmpsjqcbxrrp +tkqpijxftrvwkam[yyajdcxgzrkhkroq]qfrbvprhxlpgunqqs +fvwgqznbhbrmcaubz[lgsawqyuhadojbqwrwt]gzbvdgpwjuwqsgokqy[zpzdukphcvdqgpdoex]atanoaretkhxbyzw +fispfedprcrygxs[xqiggqkjgjhaskp]thgqnbgscmrcfqjckbw[tvueixxvxlsnaupqed]lshjncmwxgzzczjssh +fplljoayuqmjtjs[vnlhbmvowousilhym]emygvrnfsofwobaducv[flrnwxzgkghpboubuh]sdndpovsuohytnq +utkqxfkbxtoudnbh[bjatbltbacnlwzlbjk]eunawwbizxdytndqc[arhtjgntcqetkeikojq]jfooeguervzgzgudb[nhifbismjhcwqyt]xwsxwzwwvtqoadmgvoe +bxbifxmedhwkesbmjff[ncfbdgsqfejalnqyar]oifushwlnfxghktjhtq[gnapwycvocshetc]zzslupkhadbieerb +rrotstdgmwqowfmf[zlddfgpxgucuestu]dvlbhinllnkxdybha[aovlzdyhamvvcgm]dzehxcilzoxrmcyhiwb[xkeszyasnqsumpx]bnrsppzfvjhiyafpk +qgpylzwwdjxmepsc[bumaitztsvayatapvl]gotathwcrjrsknrfuk +odbkgubddtpxdsgmhvh[mbgpgqafpcrymkkdpsd]ieabelyvewiypbkjm[psowbfplvsxifqwq]szgntjujujycbfy +urqwuzkruqfgejkdoh[qxxkamiyhedlffzg]hnfntvahsaivnzmawf[mxcrmrqtgmnplma]gxcsbxvqcoxpddj +qzkfvuxmfneyrpysh[clufxjecvedwwegflp]rcxzfazrzbgogna[ogoplmljfwvizwniudc]yewvacqgzcjgdnmasw +mgweqpewhvtdjnjdbu[pecantesazignmq]upotybqiovoujemqg[ipzggdcevkbkvpyz]wqtflwovevactij[ednlhfkzrtfwpuignhd]epfijiuwnczwxdmgvzd +lavqyaejctfofhdend[enxgzalvzelvvxdt]dkrlwjpuipwnqvuv[ishvyxwuhxdxujbgkev]euytwzxkpwccexc +haibamsiwfwmdvzu[aekmrvauzoxdbtury]tfgjabbgdrwbzde +gqoyggrpzhfgrkjjw[kwhwkctzmjdpdoeey]ngurqljoormcjarv[bmvadfmdgpwpzfiiv]fkfqchwhedeymsa[etqtnxepdmolklpa]tywoaqpoowybxcoqq +vnvmbxxccmctcba[ncggihzavxxxrhb]mblrxjgtypycewg[syiizsazwqrhsllezvs]tpzocblnycaokaphz +ffpbdxvenqkihvvsi[bbukwnounmzzxody]bzfefymopdtkpdm[sjbemcyhrspadzkuwi]xlhinxfjjeajzuqjkuo[zfpeikvvdfptpxe]dhsjhnwlzlcxbkz +gulvdtkcmjewjchf[auqodvrekgvzxzyiwee]rarumiavqvnbyqu[xywssgnmbeefrqgr]lyyjmkpmqxmjbughzta[avdsmuyfdwvzrzn]qvhfqmazlactaxtxi +vvqlvlsnrxwhoxfnac[sablzmrjccqvauyjfao]avdnqlseflqxtgb[masnpoqnvjtkreifrvy]lvtoftpiotxcstvu[vohbaippdypuwpkuip]kxffhmrvrbmvhecnui +kclmgqkaprofpmdm[bhbitgjmddxhbhu]hmasnpqsttrgtmuq +tvqcqkarkyqtpvea[fjqrifichijyykq]qqtmxszpmovzfvk[xrcoyhzyxwmqwujxp]nzlgwxpkuersepyhy +zalveeaqakqjhfl[uypjekwlbcplfcasa]sasiztlswzyhvpd[weglkkwlrrvdvfd]mvsdbveypnjsymtjka[kroszrkveyammdqqool]kgmxohwwgmvcdludvdl +xbroawhwunnamvnaogo[uzdvwckcbkaahqltp]bxudkhzxrykrkffaiiq[ljfeimkibushcpclbia]wztapafqrfdpwcwpyz[xwzhahnbnaxjorpkaj]glhfrkaiizzidtmfi +cycyarwdelrstoi[rivlkfszzvyljoa]hkjtyvycydwronsgyd +mbdqighfupmzacpi[keeoafjlwzqeoaryo]vjcwhcjkjkandqir[auactffhpuwzgzm]ybkwzkxyevwrphq +cpiuxmmwrsjzbyqkfms[buipqvxsetxzsgqi]tzwpfhknlpwmtxzggc[nidtlxvnowvutuqv]qsohatjnnizngzsqxxr[klnzvuognkllhhr]clpjgdupfpanyxwjg +hhtduiwmfhibnpmhjm[emakclmaqjnvjsjyt]ntebrhiztekglpmhsrg[rgehmkrotjobrtah]gzlybshvhkoznupnhr +hyzvardyeiddsgk[vszukhazfkwqsodz]psztzqehiwcpifdlna[igstccorevbmgfae]vdapqjiijwygxap +towtxxuitgwhddsua[bydcnwqycygmimbrut]cvnvgtuiuduzjod[gpazublcnojkfnnvn]rozlfkywwjelmry[wvtxeleixyqstxjqed]vsuvzaskgyooigoczd +uywuytlehdznyxr[goerwtisqdsinimd]abuktfxdobkfqabm +rolwzkzesawhyxddo[yuuvalxthkptulugzh]tagfpsdniekrekzkt +nstbvilzeselffses[cpgyssgpjimcevp]ehfkumlscjuocclfhel +idvdfrmadfyhafvyixs[igsqckpzuelddtl]eclbbakcdyttbtse[irchopmhiqbeloiqq]lwbecblskhopzyw[yjmdufblseluvukftkv]nnawapbepipwcsfz +thqwduckwmjtxwwmj[ppnucfmtpcsawxvkago]vojtdpukjwwlnirsvle[cscyjfrxjlgxhyu]fldolxqfbxhigdom[tgacpmzitahxucqpzke]copdqvctocklhvrq +maseolhlyrjuoqdazl[klgwgcdfwhpwmnlklcx]jycbhtwurlwwsjyuubt[cuabclvzukvmoiniql]pzockwxqjbtadsspl[izzcraalbnmcopcr]cqdxcrkdnwclxcitizq +ucyccfdgxaciwhx[txuygxhekywmyuaaina]szfdjuddiopneadpot[zpjsnpjtmicknxkybi]lfirzuldnatglheyhnw[rhgqfyfxlaunabfqxl]hplszylhorbrkuy +vmgeqazfjldqcfif[fuepxyjuuzxkect]ywoxrfdxbyjomjo +qacfshruytmlwyj[jpqmllbdypmnzqoe]sdhmtuefjbrmvmeby[xkyplnmmmcrcmixkls]motyvnyucleirbnmrys[zdopkcnnuvxmhrg]feeagfdkgorsubr +knlaaiwxponscqwtqla[jxilqsyolsnanzxvqi]itqqqbrfpcexbnecnkw[bpcxykvtdbxejlcda]mxodmdxzohrturffnwf +txvqlvddwpcysvkctlu[wvuoeprflcpycbghfv]ksbpnggnitrxkua[hqyiyucnvjqsceml]uwwwbxrjvodohwznlx +oebxtpwwjtewgkwjbv[omataxkuqenxmxolwe]aiepvclknbgapqh[wywlrbzliilwwvebxbl]ljsiuvllqbjrvqzh +jznegbplekeeohnf[hegaqbzbjwdhgkouzja]msaozvrtyshcajexwen[cnleoafnzyvbvdfndha]guawhzetoxlxmjwt +nytoqgolirudokcgok[qjtvenvrstrjjlsbvzq]mwhkktxfsokxxqb[pgswnhmmgzcrgjbqcx]amhrxgwmcnykgpuzfb[dnihosgggajabkoq]jtyxfrifreihydzwjdx +bxihyluintytvypxhl[kbnizownozfekbhmsp]sjgxqgjbhoftgmbck[knoibzmlipdnfca]ofyxruebaspanxxhakl +xhrlcwziflvahls[babpaszszfgfywj]gkquumhyqvozkgubcs[gkjczyujqykeifhsylz]fhmvopfsltpzijdw +ntyxwcfpdgnsyau[eqjxtsfneseakvrf]sbzesbxxrrmpmlazhi +lwakhsvcamfxiceusua[ymczlpqkoiophom]fiybjcxhftziivsrsok[sejyfiorjpptboakf]ipsamdcnfnlhger +ncgeewwfszytkag[kizbzwnxepsvdxsbzbm]fofhxxpymrbqvcco[swphuoqvhbpghtku]hvxqclwgtxxqywhhs[ibvpkuiylqazccin]oftqdvkbzdkmycntx +yhnhzwjjsiqngmhe[jtkcipgiclbqublpfs]glxyczwidjilkqoa[ytsphdvgnawjsctty]xdofsnhnpsylvmso[pmjrjgiwhqfegydcs]ylfcipikfzvmpjn +pwlhyvxnneepoqexj[jsnwzbjxibgqnpjgdf]qndnlnzxewcrjio[hccvunupvbcyptqdihc]rfhmapmentuhoiv[kohfhnoakeglvnasojm]oggzhzybuuupwdrjrtj +eyglfycgaoqwsqqnue[woaxqinxtvrhsbjjvnk]cfnkhvorifhxedbmbmq +nrqqggalpihpjyu[dqbqopedkxhoqqnp]qguazmdjtenlvzgoemw[ccjlmsdaajwghuikrnp]xrjcyfkrrfxddnjn +wkiymdlskwyjrft[ovucvqbenolfvvu]tzymrvmekxnlptynj[dupyullbzepmmrmgwe]fnjtcvrvzstijxq[elzfqhyjdyprzfxa]uszwjwzbbzgpcavynk +jrdliqwwffvgzpu[mxoivfuwuqvtxqmbbs]tvtlqzqgwzgshkpw[hspnaspqnjvwybzfzxd]clkhutlibvxzxfrgg[yujteartlwdhzfgsn]lyfrxjqcpkcvcsnsw +gtfhmxlpptgvgwob[xlzqaoawpmmjwszqmhm]xalfbbroilfuzzqm +gqxmhinpeppmdhbdt[cpoaeltrlzmfgsipvg]iqlrhncmkmjijjh[xsbdusetrksrxjiofj]zndjqyxwvmsnrbcyrmh[qnbxczovjlrrvilks]rfpihmkwzmgxcynu +abcncmuhelkxeph[crlbybjylvbgtsk]yvnbosicedmzurqcm +fbhtialrsrrtpwcxxh[pisambikwkesdtbsj]zcdseybwrdrkxeiylg +sehxfywgpznuuypj[upswvzwnkinocjk]nabhugsxhitlhis[ilrwksgypfqgfexvuhv]torregbntatolgchv[kkimpdkcxhsxyuczj]xpfacbmnrhcxnbgwis +hldgiynbgrfjcunattg[nwfovbxygpkwmxnulm]xleqlwcajqwnncww[waoaudnttcfdktcd]yikfvdmekcexcrhsi[sntclwlhouhyjrob]wqpclaistsngwfmf +izblnsxlmqjhxvx[qpmqqzakbjpbapwtlel]vmriwjoqlrttqpoxay[ylqzxxdpycurefadv]ftcuduceaycwejp +jqjtnshmtsvokhwnpr[bxprgnaltcsqdkceygx]udqckcknpvegeryj[zvjfvligrqxnpypoerp]zhzwojzkckjwgdyu +ohxpnvtduqvsihjt[eczkrdqlgyddymrdjfj]zzqhfijxsgoisbwpd[lysfkgekxvqspagq]kemxkdqxetnkyctjp[bknjdsvchfxflsrkuum]wmxncxrwwxxxgza +xnulgysrzxheppsiril[hdxgzhscbjhkcntrmsy]vhedyohrrqclnoe[nnuxdbtlbjvaddo]xivkwdwvmkplsvfaal[omihwmflpvrshkcoci]hekqpjtrjlsaomfd +hfyusspcypxdbgzb[cxbfccrumbqqqxb]ygsuxbxdfkisqwstqp[lqctoagvchrmggtmo]dgmcjusbvlmlvkdmnpu +vmpobkctlhdwqjyb[dxeinhrldspqhgeu]ndglldouuoawkiwtask[szkthuhxdkmfqoqwwgq]zwjhzselzvirjadzvr[rholepzsidriqmlepo]yhbxhcmbkvripyusams +mzscivdohxhfkdqet[imwvpkunuzbhbaj]tohxwppjtsjykxrj[nhonsbadufgsqiysn]cogovslrrwexgzujn +pzsteeyowqmhzaqao[qsbohgqamrksizzs]vscfiltkxbxwbdlold[psofpwfkxhsxllnz]odwbidqaqpuchaew[kruwykloeqpcrjzon]famaoipldevywnouele +tuqiapyobwqwpwbqqu[ycphsbdcwbmklro]medgafihivwegukhfof +lficcecamifbjwk[sdguwtafkigjiapxagj]hmeqrhxptojctevbdbu[zvxeefaytjajdpwi]uliqtzilzcnwmbfusnm +pvyzncrszmuienoptx[bigapupzitygcxstqx]rqikselsbelyfjdm[lyqmdmfyofksmecg]wjceogefnlgelpguu +hmddytvxqrazumnnr[hpeurkbdfejhlfvg]pedwizmuhmtpdwh[efikgkrhnagpmqypzx]ltlncfegswhwcxa[bakxhwhtvxcwcxtmofk]zwjvbxyvljlfaie +oxgoszggsifsgrck[gruwptjveewmfewguku]otchieijhojsyxi +kunxbbrdhibhtlknrq[tmtsuhwakksyets]xdugxmqcstdallfqgq[tticbbqirncbjtx]knkygxawcwdhefesu[rerbfffgddyehtvl]yasblwlhikbvjidgku +qoqnwslopcpytqy[zngrksptgviifcwbw]nuislpzizqikmgn +khmctigslwdgzghkbk[veaqghpizqwjxlwcf]aymehevjgpjgwruhyc[hzgzilbhyoazljsk]jocgjmooxqxayzsa +xodvowdhvnquwtma[kvlbfwwzeuucthg]djlyemkbpudpjlnrkv[cbaqlhuwfwwfvbdewx]vsjvsxsizgwsakpx[pzyowqndqdbkdakdney]eeylqpqpuqvdyyr +cmdykdqavxgeismtlua[iwviddbtauhirfcabh]fhpsinbnwrcpxdho[tdbgrmgscvzukjl]rxupjtwbwmtgnltbjp[vgzucvscpzgjnvg]zftzsshpmizeksiz +kfzmwzmzdpxabvi[ftkotbrorpkpfxzbg]hgbrsewdgnnqhxvueya[lkjknzgrbuzjqxwqseg]oyzaqahfuqtpbzi[yflzhfxwkugpetsqli]nowgjqaquqhrlxz +ktphtjqwsitgbaii[tjwcbyfrpupwkvzrol]smlczhhekwxtlvxdfn[mqfupholnlvfhuv]mvdhzncezgunydrk +lrvdftzasxbpfgb[pglmengmgfbnzxz]hbasbstksqkkqpwkcbp +siheyyvdmjiubhlapns[xfcaevnaoexubdar]pgbougfzkmlzjqygdta +tblrafqbjhwzbwbe[iefobcqdrypwnwidvm]olrzzrqgkwiefngf[asvmlckavcwtuosgkrm]esqsgwmiyxncjjqsqp +alvaycnbqdlvvnwcnq[jwxzjzgpnzmcampkye]hepmdlzjvxhboxh +mtfkavmnrxyfzvkes[gmwvavomsyolkahey]dnqosibjkplwzjojus +gbckujjuhwnvovpfqw[qwievsrrtusgzbscuf]bnrjcovodutibjtq[fxteivdfkpixonphrog]mnumbxikkkyeositn +remzamtzlhwpndrknl[xgrbcgdvlvrcdrpi]tnzimcpmxzaxsgpu[klvglrrepqxiiewn]lozcwxnclirneaky[nevhtplqsmuhykzqxf]fgmsbwdgfwjftndzi +aybmjypdrytigyyip[zafsvprjirkniuwr]wfdyfncywtdtzezdbtm[umbxrtflhquwdofgut]lyjixlycobwpwvhfp[xoxtkyhvwqgawmike]bfqtgcxvcfwtdpl +tugswvsgbsfbiyzcm[akmlddjckugylrea]fyzltfupxnvagbshlb +lcgvlozzzzpzxeoee[zsvjydznyoadkvyxlsq]wqmgagbkerqyxjnnx[isukybwewezizpll]odqwazjphoaqhzltms[gtqeysqpwuuohdbhcnx]yqtvojobgaluizidrbn +agnxxgirnprujhsk[hagcvuqcwyhmkdqmn]zehvuytegijhnfqnk[ytlokgpipjcviulp]hsomdskdngoysnbmg[wztsneomppnewhrl]gpkauttapxhcjrsicvy +cvnowinufvrjpiqtq[kuavqbtrcelpcuasmk]poksbapbwverccds[qdddbhewvxgfoldib]mthrvrsfygbhlwlkcs[zhivcpxibufugkpigzs]qffdjnrsoigwxqhaf +kovjiaxxjvzmzvmn[cmrbwjccgphtstvaiq]onqfbpryjertymd[sgmcnqbseodopnnd]gbgealygrgjnamdq[yrjuwjfvmsmgbur]ldiztdwrwmeqrohy +tluglhveqluxpiy[wrsgxdrzuigwzfsby]bmhqmnbecjnyutpwlbk[iifejjworkzrsaj]illltueflutteej[adfixnftjenvyrigmkv]zgsqagrctomzublltjm +fhcnrceynkcnnjxj[jrevstsodmhopao]zqapczirtxrunfhl +rzmxbxurpdmzgef[agevdburkuvnsrof]rhclixqpruwxuanwxct +vxejrazzpddvobzlq[dpspaddyabqzrjgvv]elcpgozzkqjsasufcv +iaodnwpcpresylkhyy[dltvlrxbvnqslzzyvox]qownkehbhjprbzf +kqbwgctrhxwrkkedau[occltggonhshykttsrr]snshslgqtlgejanlg +jpesfmiguicqdcnkm[oawppiwdsmoidvkcre]wfifgnhqeisplngcjkr[wevtsiuznmpapke]dqgxavmudniuaml +ddewtwhdfjatjlgrt[ceurnauksrgwzondnb]znsvkdkwsimbmdxfkh +hwjwuhdokecprunbju[jhftguwujsuetdriyu]vcgpesthcnwuwpwes +cgizaalsahfzkcxab[nehrqohgkmbxiufyco]xbnclpuepsanwrwjoo[kvdifptokbtlihgx]hgynbeebmdwbkwrfbh[rlypefyljzefnft]wwevofyexvbojyc +ckxkzlpwrfhwzuep[etqgjhcmexxvaccx]qqkhjttaudjpbjboeo[gihevbqqqumfythcfm]hraqbarwvqnmvtiy[cbnfqzxyjcpmwvu]lrugefybnoiopvzi +bbmhfnwnuhvdgmoibjq[eugipbrefcqiniulz]frkuvbhbdiaoaqdcaq[ksqqrrhjltlxvet]cdjhqazjzfrphjzjr[aspkvkpmwhkzxfeic]vkhbjolvoddtaasvs +rxkbkkhnaiudojzsr[ecdvrnjjyzyqjxf]uxctotuqtvambwea +saknwxxhcybeglwr[molhqlfbvopapnuco]hbbaomsdwcfwvoi[rlvhmvffqcyftricsyb]pkeuoigxjpwfbffif +pylywhhzktocomu[sehthaaqwkyerucg]cwfmpqudeylrtavze +vmawzgbfmmsivwfqclb[fpvwdbyrfjgmidxw]btatkdonphkxtprxfsj +kspofpgsttceoft[fcqagpbfoujjulhp]fkbxvsbuwioyngydy[hnoxyyuhdviahwsf]gustmoflyrtelseo +xyiofnffruqapvtgnr[wmigiedeszezgunm]vydqpobqqrisgtt[kolobhezpsiolofxrlq]abrzbbmtlqvuhxl +enzmvjyrzypbbtmbvx[izvhoqpjgqgmmvricf]dbghstbtqgqawqjr[irvprevogenchjy]gbiwvcxncbjjvwmshsx +uavpufepuqdbjedp[itqmeflkorinwdpjwp]hlrnsxymcnxwulsmfk[bayxjuxhtpcwafadefe]srrkibtivlskepjxamu +dlwhxttrwjlxlit[atmcusmqvonodkfwqvb]ilfdsqjtjbimpaqht[zsbqjwsrgxlxbjqmulb]feblytbapctmfuao +zfzicvjnuuugutgymp[owgyvyjfhrqpuukkgok]dfkfwodxgvrdqelliaa[xaumszuhzjjsxwe]ihaxfxpxjxcbhjg +gmsgnyadjfimoemyzt[fjtprppdzhkorpqoo]eyxayeizyntiumrgk +wvdatykekdfednl[kwpjrdcfjjklpdofpq]lidlhawqalcyigapvv[ukqjuzvvxehbwzhsci]rdrfhnobcwtvivgcc +wvqxpnxpjmzfnfy[xgtkzusumupupuqvn]vmxceafgkxhnosupdkj +ypfaupbycoerlpnhvk[pjrtdmwsmsckcfongoo]bjxlfxbekwvfruvy[uccfekaoczxlyigfs]gnvkjcwikenkmvgrpdj[yrtbyzxjkmpewjpbstp]nfwcwhereraqwxu +cqxbsrqdgqudcci[olptuqqvfgunmstjc]xnppdflvdcjfviaemlm +asywjbgrfvbfnkhnc[euubbvzujqjnsxtmel]gwxqasfbyjazgqodfh +gvnexriimytwvefmo[dtuxofcgyfnaiibqx]iaaodpjwjnkbrqsmdzp[nuvnumldfhglafg]dpcqqfdrekqdfyfe +hnwaqtrqgztvegfhj[mzqkcvhmqhzwmhlkc]kytpmyhzrvtytwvfkqk +latjxjyjkwwnvyrbl[bjnilknxprpwziowcjn]zpdvccsjiuhfwrkn +nowozzvrysgsfhxd[lhgxyitirlsyljl]nodxmmwtydaqkoxvu[vgbjtbbjqgfbssytsk]gpzprrvyvseifydxz +sjihqhaecgshhhdrbto[goawszmxrrdtoxq]qvywgrnewpsordounhw[oaxydcsvrzzunbizz]nzisqsdrmmsaqwt[nmyxmrkeainaqyfe]eacdicawhfuobezyao +oyztkiwsxqcufgqk[iyxqvktohfnoymgisag]acfhjawamdhawitvjg[npflzsugezpsmunukqa]vhhxnunvyxjtehyvv +jzfmuzdlemckyiccan[rykdnvtoavzjtjxtx]vcmkcuioriltvpzzxqb[jdgqayewkwcqpkg]ulsujrvqzsmnpqgvg[lshytukyfqhnjehk]cpwbeyiudngpkrl +uruvigtkkoqkfdbqkre[wyvcwnxixwkacuu]ajvziogdmzueetqzxxx[fyevgfzreomzjbsumi]ahbhcyjbadiacwjplq[quesxyjqfbckmnt]oqehbkjyoxsyczfta +xzqfptkjpiknvkyzzt[hklpsitbnhlozgp]pkbgrwmqrbhohay[mhphptvyseydwfq]ehswmqarsalmcatb +ohahitbjjxlnkyb[umyhhgtcasbfbxqx]dxyhbvpjjatkwvpkyry +bcixbnnzlqxkisv[tapovjggqzlwlmc]vwnosivvmdcfsor[uaapwzmzarenaplcjp]jdcpazyedcdkdinrrz +kdofbgwblzpnocgpq[scfdzdrueknbdud]axnfckaaghmrpfmk +fisxkiplryvtnrvm[sypuemhvxvohsapkccc]exrrwesixcvnhzpopk[hpsilxrztuukzksyax]lixfijobrlgmonzui +zjnlscyhmjmoofha[ezglbbmqulybnvf]qvbharzbfbbustsm[tdeqjfbfxeiknfr]chpwwntytidtnnjf +qildxsfzfukzbmre[jykfpbbfelicvkqov]pyemzfzobutliokrrox[uplajddwknupdnfje]vombwrjguiukbiwozj[kcutkvgruxqqcuykn]zsbonxyerpjkfpnxchj +pdmfyadwrblhcvecezb[fhqgurbenzitepyh]xhhtisxbusntgekaps[yefgbqwocpsexwq]emmlcuwjwvluecbfo[ohehzdjljocucatf]zmgbwenmeuiftywp +xhrulprzdnbbzenux[ptzrrcmdscsuryk]ognjzqtletsyrcy[snpqabmryhyvcyztmd]lhkwhjylportbbo +xphruwdeuqibzdss[ubuaiomstyuqgcgzyn]upkpgfqmamubaqhkao[ohjojarsqpjldirf]ianntdwcgclwmyzwjh[qqeajbudidxsqfw]nenqeljkdyjucrqnsgd +xuydzitbfqwpaafru[jasqmetengbkljylhse]wkqxkjwkoipjfhkafnt[uolbyhzhmtupebneng]pcjjrczeczmoenefu +ievtjpcjrlfqwisl[pzhzabrlrdeadbtpyec]sowfrknejwbuvgs +qcuiylijqwfcqwjisqr[icjobpbxzjzuaxc]pcrdpfgwajrudfhxb[oiqtbvhfvitjvuts]ctwyepzbqlrtwuclz[smugjsqssswocjyc]lhlncivlmhmoexsrd +yqmqbdhiciqlgdmf[rywqydtlwdocdih]ofxwyqckxktvcrlxsx[rxupkwzkvwrmhuiz]znbksfkkqxephhb +bgzhbpweidflkmmjc[gxozhwikjiygyrm]vykpmxdywyfummana[mcqteiumnmmoyiwtcqw]ntczagaqoprodvhxbl +gvtyicyxseltoqfgk[eozvokbnjytodemeo]ogofokdupjyhzdgrk[fucnzhyuqkcakflcky]zfgxqfofzfdxyzetc[kdgpxyithocprbr]rpqlihcmgthswhvz +svrwqsrlntabucyssj[trbqnxxvtfiatqd]isjqyfxsoarfetrtgmm[lnwqkkgqucipvocrk]cdcsuvgwvzurnxleuus[wqjewzmcvqhhgwawyo]arzledaetbnpjmwjrl +jttgsvurypqumflcm[ccznbkqklwsxmva]ooughikefyugfvz[rzsyqmtahohpmnq]kyotvedmsjfshan[bwadbneyfitukleqbyg]oyeonratlyvtfbcrs +rpbklfvsjmisbnowf[vupfpfstcrfdxipqi]wuftflxmtftrcrb +igqcfvsqbbvpmgflu[kremgawldkinlqnr]ogcijqlgvrvbloj +ncjbiybzlsophbdemtc[zszwhtluxpobqclp]unvkyqmemvucdtwt[bzmibpkgwokausrgo]btnixophsknmjrqozwt +gxapkeestvvhodxnp[xlvglgrlzjdrpjrps]sephfhztipqaftxnqp +zalwvceeodddhqqyrk[znydhdhxhprlmip]bjijtiotyvfgyiou[odtkdhdrwuzpgwkf]kldnjprzjewdeyzmdua[wsdyljqvdmfdenajaks]zcvlwqkrytjsryab +schsgvlniqevsrjfkxw[drtzpizdeopipceke]bduaeqelcxyvykt[vhoefhavfmuhjkgooub]tzgcfhwkfuvwcif +wocmjawhtyhxksjiktg[hftunpxmlvyxauvnfj]spefcqpimqgjhnou[gmzejgwtyavnatavwju]vccngpxjmmxlruac +igqxjgofompnnrsaxoh[lmmrwzhovfloeps]loixvtpiyzagyvgq[yaiiiuvpjpuldqk]jwpjsgmvglkzuiepr +jgvoejrytatxvfqwt[hinkejefiqlrpqy]cgmvjuyjejpinjunld[qcdmwbqbqusirlxh]udhmheqsvmqmczbbofh +qffigxgklwwslnts[gwhobujjovmwfmrg]menqzjmmxrgchttltek[fwegvyhranuutxgxec]fwzgoobvkjekogpfscr +qlphzfkuyrhvkmsfxmb[unvtasxalhelbiw]gwqjfeftpkxtfiru[dhkyfsvpktyrttk]mypdaocnergxlnbodpi +pxdqzshlqhkrhzwcqkb[tudazezhnktsxxexyq]ybzclsifzrgndcaxq[ewlslzvwnqqwvljgo]nwnyptvummeraaoow +ysivygqkobbtznpxy[ydbgipznapsnkzfq]upackoodqdqmpvbgc[qnzvzwnbwrvgvwn]imcsgjzzaeltfxyhbx +hcqlfxoahajthjesrdy[nammwfgfdqnjewunwz]pdzecgfgatymrrntt +vwpdygtfuvbryipr[ehziaqbphyzzdolbfsv]rqxvfvafrauzncapu[dvqlgdgkzgpbjuihbl]sdtldsvjvvtlvjdgd +rajovnvmoxozjldjd[czqnvirgxkydoaaxr]dejvwkgmpwqvnvnzzsb[zwxifotwvljvpkxae]taoulidxuvefjqxjdu +jywqykajspyzvcw[jkqxjzfmvcrsqszgim]fncjgfxwbvfdwujhooa[otrkhmvyonynxsyap]skgdhtgcwmzixpdgmjh +wbkndoivecgnkrid[tpdmkrufmawhpijryk]untkposunbiezua[njngjktbavkmsozyy]dqotrtnnoxxejcz[nyinrkqzxnsaahwa]zpdibcyegeumjjgowz +gexzzkajyulforpnmb[mwihfmwsdpjjsnaxmme]xavowvaqybvqcqescdq[hjymwnhorqcdkoxv]myycpwmcpxinhru[koqbxfaoankdcpi]hgdktcvvxvoolccqcy +alpcsvxjoouuhjrgzo[blnjpvnbtcufzsxqn]ipijmuwbljfwuxotk[sgpwkohrsfeypqc]vqlggpiytetmkifwc +ixbszxrkuuzvvstrn[kdgfwhiapjrtiervwi]iugjmuvqljcbnmumal[ajgjfwerxsqqyrxuvob]qcdagpdvlnicajqcooo[qtuiukkwxyevxmgijtm]bgfetysdwvceqjc +pdbbmswfeutwunlcm[ywbxptxhgqpjkpeenbx]wzzaxgyiztbdftpm[lbeexhgaqvezxfef]fqktklfxugwifcfaio[ucpewlhkqnbsigioumy]cawftwrwmbnfmzmhd +xmtduxirbkbxjrqkvg[ythlqfokwjfwowrq]dguxbidgwelcrbxahi[mdumdnvbcsicvki]yhdgylmjisngrkcnbne +yzilepuvsfipivcroyu[czocwppwvwxjadgqpc]uoypwqxrpcpdzmsyyqx[mzjaguojtnjobsvpdx]vnsywqfvrnpipenwka[dtiayvtdtuyeqlddh]wpxkwbagfqncorkomi +qyebzyuerdwfocyr[cayytpduwkezuatyb]nuazweyhjemncuqpp[gwadeldyzfsvyqyk]gqjdzsuylxshtoayat +eliktfnkrxvywmvr[tlnexbwvbbdeupd]gynrdmuppfbawfcb[dqsidilgsixsudputz]odwsmpcptosjdhrp[mumunqhddegofkrpabd]bnetmxiqkwhtcsgpuui +wuozzupdubqhnbm[siwvzeelxcodzissd]niswczzlnrokkhrnd +bjxpecnvcntfbqdyqy[hjawjkugajcwmouz]ipusnakbyyxmqhyislo[xcafwiwiabdlxpaqqo]vaemogopzemmnilw +dlczcabztkrsdznjlcd[atcfirjxoipnvnoobjr]ujnimmhscetvevwpj[vnbwetjzberefmavwuy]penzvgcewibypznzpv[rqsqdxopumiqfftcb]qrotltpgkmzcndx +juqqbnfozoikxscqata[cgretlqkyynhwhmk]yiehuxyidjlzpjs[jdnlbxkxvsufsduoulo]ymrfqienfjrrgraxfh[jlopugujyekjzrfet]hqlqjkulbfsnnxyksp +epcyjxlwzmxwlulhx[pxjecldoxjwjkrndmir]baneyblyinubutjdi[cufdnjpvlwbfqbulb]dbzgyztjopciduxuo[paqntbrciorikaw]jbpsfzmzxvxlrgj +euufrqxfhnfdzlawui[zwgpectzebtpxfwbym]btexmfeuilnoqsbgmz[hvnxaanolwzkygx]hurfyrjkanhjlaz[vdmsczzhobknlhoslpg]bgitrvjaildspbz +gaweiazdfuixwqo[qedebtjxaewtracsgk]qnmuhjsbvqvcnov[aabcxwfcazxjqajv]xlhkehyvjohrqkbzyow +uqxzgyclomagldxv[amcvkpboneuscronwcs]qbeqgbmrdcdtvsc +xgkenttkfbysllows[bamxgmibkgysryjebgr]dhfiqnlocykclbofdzj +ppyfzqrjpxgouxmsduv[euokodyohaiajyvsrz]xfxsvtjasezevkjwjk +vcsgnfhhjkjssirc[kfdwqpdjaejqbfaxu]riqzqfwmwnsiqgamwm +tvxtikdqugadgbux[niaxwpplrlwrnipcnnc]tcunnqamexertrdm[xkxjepysgqqdphb]vnxvtxntrsqrfjaz[akxkeqvlxgaorhqnd]sfhwarxbzfbtftuflr +lwklfaiawghiwljxxow[oqmepnydmfkjbgkrjaj]clhguzdrfrmcoslsghh +eqtzgxqoviujmxpg[pkkbcdmlkvbcppqrm]zjzmsjmxdkaknido[sellbmhvshvqdsslyq]xuokcgfaxstavgkni +gstjodvjotzmvnm[mfvosfrnlksillaqs]riecejrjvhdrjvdl[sznhzufedvbdhbeq]msgvdfzoxeykqyx +ivwoejkryedvxpi[autbisivgebnntgixu]papdjtvhwtxgipbhes +apzalddmyxxmfysm[cdzptytpjydinlfdxa]gnjxiwepetlucfl[izgqnvcdaqkzgtpvwvk]cdxqaizjmvdnxigkmvm[cdybhclfttdchsbnyzs]xlqahfrmgnowlgba +slubhmrmovzbgdw[dehwvsngduvcfkontgs]zeiqylnomqgevvikm[oubxjfwewqtdjwacb]mqjinmndnakfemp[mccapdxlrmrevbuaas]hcjdpjgnoguztrdjgbt +vqeogkqjnfuayfpioi[rnkeynfubkpmjalnz]ybrwpzhiscwtyue[vnhkeaqwzawibjnvnos]ctmmursouxvylixiqko[voqlscgdnaelsbxcshf]azssljeollyzjjwkxin +sanarwdtnkaemdsoj[ojswyaadxpnpzcm]acjrepbjwnnpncdf +uvankqvbgxtgignh[zaimktolqipleig]mobimtizmlgqetrxkft[kooknezmesqkqisip]jdpwwsisdorcrryvyjn +lkiqyvxlouvphqf[wiibwrighxagoiod]mavajklcesvhiytvcx[ntesmbqoxkadtth]kovhcrsmmtllhai +ilzqxrlibfavovp[hrdmyejnxrlntti]yqmycbqlyitgkumdm +oslndtyjgissmwhqbo[lguvaxjavhlklnqvd]cbmjzevkakhfauq[huujtqleuzhwcbpxjf]hiitxzclsgphiembgwx[ixccjsoybxmjmufm]knmagcfohytzcoq +eutljtdlueiugunxsy[bmbgyvpiruvvuezir]vksxzmgftqglhrowpk[wphxqgxjmzhuqrwhce]giazmdryyjldglcivd[nsicphjzfpfzlhfymh]pfpeazmsdcttsutbs +tmdniznfpsrdaivxpcp[nlebmzzfjfklqixhk]sbusrwexlbpswiyslbh[tuvimwrkchmarbvl]ykhoceojfjugoim +vjkixsnkgnhzcsj[eqauuxevvcbzmlrvxk]owiikpkahbpkpuhkmns +yiomyydjxljwyxoeh[rxyahvmloktamapez]ygtodyeyjtqusou[esemeduybcbngynmzl]rxszjfhelknuyjq +hayzvqcfdjowlfeavo[mmcaawmtqthurqvmlfq]kbdpwcduhsjfbskcin[sueeedwjrdazxpae]drtfzfbefgvneiiqtsn +lfsgnugdavjvstpk[usjflghmtbzdzavzgos]vajnuirkzezjgkst[ixiusdyawuqkbnacri]yfhtwiifnoltnygk +fqvyvpipisvelyjfa[xewusykjjogfsupar]icdydlsidbisscyn[bpibwwfzoqajtnxlad]potpbswobrhcyvy +wozhxjyiybczbhbqvd[kfsajcbxdespfdewbjw]afcsihkfitjosfwxb[fngvcuammwspeglx]xizamsngscxtprjwkq +kmakicivcpvmjokl[rnsobihgweztudwrql]wytavzsniyqrdrxu +nawqmyenftpbvxo[nsztprtyzoacbxy]jiwvrmgzztoisveafzh[kgpykqugwgvfkztnnz]qqmehjutfdzzowkof +mxddcacabljlmyxmpn[zdlffviwrbhbjhl]niubaphkzsiybwkmh[ysxwkjpjhpyjmosgeo]kkhqupjsegymyxfh[sxxdsrtuwgsznnvhuy]licmdzzrtcxkgce +hkvugidmuerakcmmsn[mkmrvpqxfoghbyxr]brkgsmexzyvqztplvgo +inbjfdjjfofwckfckfo[nhjqvxeoedsfzfpwt]snlalnxxyjihecmxl[qtoxbcyxxtvuliams]bijqmocptaquusurml +wmwfxoaocwtzuhvenl[yzpbmaoazbchjxozl]oulzkybjweqqzml[ydkamvkncxomqsibme]fcuomzdfejvijxeniaf +clyxvevuyzylpdud[jmwhfhkzrzzkawp]nwcvtlwlwnbebgdz[cbnfsolnppgafml]mxhbrzrialopbbk +ekyvudgmgzgiomwt[ebcbzzamsuhycbcvc]gzmmgrqbbuvbzfebh[lyuflvjhaxkfxkv]bvnmyumtjzismbtig[nqoxegjljmzarvyowo]rldakoyzzgansfefpwr +wjhfgmicaoysnhmcer[kocbthyqjwsefyepgqh]vvzlwheralmhnixsb[adysumyfpsahmkntv]bnzgyilfgsepwvrdbdo[yqcnxfvzlpjxnvv]syedcecdzbffhmpztd +qdmvnazvvyyxqjkm[lcmgrtbttzwijqf]gjacmuqivbcttnp[uduzbmcdayazzpr]vabqjkbgwnjophdxwvr[yyljnrcxwwcehamtg]psdjpizyavaebua +fzjlpppzspuaflfwtv[dqmrdnatqlqnvowh]bevfgmojlmxmvfqb[smrcvucejxdrppkldvg]nbagvxquhrilbzi[dtbbwkaqepopjtgsgnz]zebxmxzzszbxtqeyjmd +kipuoxmzbydfycmkxcx[bfmjtzvthijzhezx]aiwnfmjhetyrdahmi +hiekvarctkixnmypau[dafmuxavuaosooos]czvsosvafizsjiouwi +epzppyfkcwcqiirpm[drxvceywherxdpnxl]pzylclelnhztrgnqb[qrmfgrtyqmlnsggg]seaeqafycqwjfccuyhv[fnwvqeftfesdvyu]djdlucfogiqnrblz +ihjtuvxjkvzqdpepjd[xzmyhwkdjooosritpw]rsvwysjoukgevdeve +wdgepzzfwonrsxprc[oefuycfwngwkrgklo]fbckfdmwzzwfiinlfhw[mjebaresrtulcvkeb]aqxnxzpnqukspcol[hpfnupcjrkswiwlgzz]xbnwmtcsqwbpkxys +nbaxkwtbtodcuecg[xqoetzqgjhxmuvfvnoa]edvwhehydqhhfjm[xyepeppmsepsaixyisi]txxbbqwefwuffdztlnc +aqeknneydrvnameefot[dduhtgzqtjyggmr]ausnandgijmikvgd[jjvsfofhypkfrrc]rgzmkiqggfaesoznlxl[przqmabciaxkcunhy]cnntseafxmnjldcp +rxilrztnhgzclsgy[yaxsuppphljrtcxev]mqyqgjopdetsxzmutjk[adyfostrkvhuajndjaw]ikumnitoxctaqcpop +ntotlcdwgtsgotovhyj[wgduvgtqijgobem]hhdytbkiplykiejg[sntkfbyrzgguijtwmm]mpxnepfkhssujwhegbq[sxpsxodobizsvppqptl]uqlqlsopbfmgliw +wbyugpjhymzlgbl[zdoddxxbnxqimlo]tyaobecgkbvrmgajpga[asriovkglwqiukcxtjk]nvjqkrzxwicfzdr[vzqasgjrafilljt]eobbqeenineqwps +xbtwnvkwrlnwseaids[znlftryxezmidoc]suigxfrnxfzeudpi[ahlshriqmozkpiogtc]zpjiwsbdawhjynju +drjfebkgnrcuqyzpezw[hnweqviwyjtfrwpu]popubobnviqwkqfv[plaxjplhmhjqjmqjsh]idacejabrvhfteelbiu[hhxwpwgvjcncpjcovv]tqyykiwalnnkoniju +fwdnjlvptzmxpwvsli[eidmcurldxszfvvhjf]bshskptweuzuqtjym[dpwmmspdxpiqidrfz]bulnlyngfaybqfinqn +khvidctisgemoswq[vzknkycuuvznnjkzay]rvzkmucboqomxkmtuvv +ymfxlhojyjfqvctzue[sihfpembvmdtdda]wezkljquqtkcyiar +cgzdjkbnmhptcggqib[autoeqiibhxdief]zapmbimuvhywdtsbtm +gilwnvmvdyftcdmvaql[esmtawtmepovyih]quztpmdplotzlszav +sfsncarxehtgmutj[aqauaojoqabkguvan]olgokvyhpfjzyqgvbcy[fsfdkbxhstvxlkzb]ozwgbzlhrocqpjoseq +shzexlixgxazcobmdvz[bvrebdcpytgplvii]gxdgzyoqpmkqznz[wuywofxihsgxgpcksgh]lwqsslamcrmkobn +pkjlltvbsjnfarycgf[gwkayyieahfowbrgr]ccgyjvjbdeoilsznvbi[njniljtubngiuwlil]kosrulvapzdufvq +clhvakestwquwywsohs[ubwecsjptinhzngw]dvjcvukpkdrgpbeua[svetegijnnbtetpgfu]nfejtethkqavpol +vksryzexymetdykenw[etxzvunetbovrwttr]pnmwnldqzmxzjldnmh[vnskreneiwajgmd]rwbeletsldocxguy[agccpaxhrlfokpt]wembexaqbprlrzg +wrxyiatlpvvcuroguv[hfcsmxesvpwfgtpqip]jbspeicucxtbnti +gbxyskaitzeogoej[drokshekgcpxpgktoi]ivxtocmlrugoguf +sfzpstesdmegcuhn[drrpxmsfpcjvqerjb]jqcvoeifgceremgz[chsbisfayixexqer]qyhonslazxrkagpp +bfufgciknfkthfbr[tlfmuebscorrclekjfx]offqunmqlcetebpov[bsbmhnbmmqmdbpnt]knkjsvpmffjqvtqpk[bryxvufxbsocwnd]hkxplkqhsymumxarn +ftafmqgtmaazvmstfq[qxsvdxplpesqzqg]yrbkrhtzaqtygxjheuo +xqgmldfvsmitjzhbr[yrwujpzkzksxdbthk]jblnpmdcljgadym +ijtilnlhxlkhoaftet[rgzfrfsilxhwgpzx]gmdwwndlvtvvtdimd[wyghkhzahfwpaknrxiy]ekpkylqvvxypaszcozp[hjdwslazthbzhdimne]xuptxflgcjgdajfgqa +ceklxvygwnkfrqvwd[qxjqndmhxzvhicvcf]lvrzumjuaawtgviue[xdvdtoulmeaaiiuqa]xveikrwzicxctyy +pdvdkirojjubchc[iylcutkspnuquwdc]uzbtxemzazuwottv[sojezpwrsstkdwkses]laokggzzeaobwfus +ibuowtqicxqiifze[emohxvujvolopghkrgw]secpljnouzblzup[xvpvnqvnsgsnmhwdpbn]ykpvwjlhtpdjlflxvye +botbhhrfjqjqwdgmeu[itwjgbhzrqnnagvy]pzexftzhniligeyd[egtdkuktihxgmdd]cumzxbfgryzedtsc +dgvuwphikpupaovhovx[nbwxxhepxfzlxcoma]vypmvuopklupuzlk[plkvxscxriyzeln]sopaaxvckgcbiahm[gpafvifmxvjouczus]uyqhgsdxkcylwle +gufjlajgktlwahsa[kwtpvwbvjzpmpbstiyj]nqkkgajutaofdauzmfq[zihotkwlyixmfsp]fezlipznjthttsiwpj +lqriaqvyvawemnogd[gyqqrvivtuxxbzf]xqrrsgnxbpmjsgqqr[zfwpyfwojhemhmyoajq]pyninwzcjzypmygy[qzftysfhztknzjo]zyybzurfxiolsik +iojvqxazkhdwzed[jnnntfrduoxnyqpeszj]dpeducyducrsuwa[rnfiudvklwbdbho]lklubgxkqldqalvh[ogbeiwjdaeuwjyz]cvhoaaenmeuovocvog +kxtwtkvaixeisgzjky[cnzhhsipmfawaqzc]gjpptvjnwmbqqbuum[qryazcieexjwwsvfi]cysiabvuldrkvsxqgu[koflanzstuwaebjih]krzursoabnpundffqs +bzqcnugxfeixhnvk[sjyuxwjdceauputr]tcjsgbmvjklijlowud[mdmuqbpupxhndvfcd]ypgdbaxwopztyqelfis[bvpphfvdscmfbhynf]vjaytjezersopuqa +sceyeinwgkcccgn[sgxwelfgqimdwzlbj]uvyuazuplvkhpndc[etahwkowloxlylnp]hletqjpvxzicdrs[kyrfwcyoudjlueqrvr]kdqsjyoajsfenmrol +atkckckrgntchlets[tyebmdckmayofez]hryglgphkgeoswe[jeamxrrzxgyzvmuh]vcvejocdlauybbz[lnnricpcvqztoumc]uggeimsqrjnppskl +rutaemkjlwrslmsp[jwwgmphxqlggydlsh]xdudpbdjfqtcgrw +lwddwkagigyjsht[zpizzqoqkcbqmdqfqp]vbvigihfyemwjqusdh[kqgxbnysneqgxdwzkpp]issqguyhzmttxofz +zzxsolnnbmerygtvvk[bhfexiwvaohrbqbadi]zdsieuxicwijamvo +lbfovxmrghyzhfdybb[whedwghlrxnjtvqelzp]oezlanrknbaxtmo[jtrlurnbhmuymfwx]puvsiaizbjtqnot[rssajpiwyftzhoacoqh]ihmzohwlncqrfrjpbpn +mflsnlcufwvqbhye[lslradskdqrueaxvoez]iyrdzgwbghbrctrmdt[bqgxpsiwleisnru]sjwifvnufaaedueaag +rcdjaebyojixvatc[bjybjvqonbvdtyjwet]rnatoqmpxauyiezad[ltcfporqmmavmsjgmrb]sdiogziluykhmgcjf[bkkhyuslxlarrqbqe]zzsdsepgilymdpnhw +jikhvuzivjikuxkmlus[vsgrhafeosvtphzg]bjhxequjxbqorsnhx[pvkgxrttjofimfuq]cmrxlinhwqxhrkrdzpk[xugunnrtpxbnemj]hapjbouhnfydllttkdt +xsvwiruapkldajmkyx[iohclbiotvabvkhkngm]qfvbpipvniprtqjj[ehcphknxkybflhn]ackdoidsuczifwx[bdbekqnxcwwskgxp]ofvzsecshsgbqll +rnpjfqpbnpfqtlpkc[itzrqowsquwryisqywl]mrkjwermsejxwqubxwi[plxkhpuflnhspjficnt]djldgtkuzafchfwar[auijeassmbtfdsd]etfcwmifwixeffrtpco +nkqwqvkikgnmwcnos[nmvtwkyhwtwyrrupx]emdniphxpavkede +tkcdryrjllweves[pqdjnylpftbbktemtkl]qlykuckixcfhwuczikv +cfjwosfrfjwgwognyjc[jiwoynoxdngalmreoq]otqvhbkwlkpqatkx[wwgwguxuzwlorap]rjuopkpuaftnkdeg +icgtjqangadcebdax[wyosawgqnexwsdqq]ulyhqvrzrqhibudyu +mrrdimungjnszyr[quzeqzycxcsamewykb]vqrhnvflewxwzvxwxg +aciggfsvhpeaemh[xhizavbtwzpsxdkgzdl]dbqpkvkmrbwjcle +ctxwfkazxjvguatxus[hkcjonilmmvovjawir]ruwyywhbhkrheofbpr[qeknvkabxrdgfxgrp]hymknrdlgolmqrpklal[qbkzigpdxfcgnfhdrqr]hrutorkgyzxlqlujnv +ocyqsefzuzizjllui[ttpjltsmxnkavfbviwn]ccfanejrzrghpnb[ehkgwatoncpnwfpjc]qkwynkumqgvxuslirgg[vrnprgoivxrsqlpbmke]jdygjgsfkbhrbfc +necmpldghpppjggvw[vtantcichlsjgrzdxlo]bihypdunzshlhxktuk[iusfpqesheojjdmk]ycztqgqrqsuifzgnqvw[oyjhytgpicigpcf]ewrixdzorbmmxgywf +tsddziihnzqushtoeg[ldqhzxrgtfkcrhecrm]nnesvhwbrujwmon +rdapxiunwuijmxrqf[qvekjcwvibpucemj]uidzbyozcfnpempx +fdvouzrhnlgyemqqqa[rosijdvpwbgnxzzr]moxykttwbfixxvflpje[daadlshdcnrwftzxpjj]pgpphzgfkeapstad[rptqkhjmanvnfuj]drurgqqilijigaa +dcdcoboftwhtitlto[qdqpbbobdncixqwhmn]cdjrukqmcdbzwji +fsmzzqlggnjqunemec[oxrxnckqpvilfinnolv]mgpmmemxrkuonag[wsoiyculboqjnux]urwswywdpuesxaq +gpughkygfkxahewxsip[licxlfgczxcqejs]idnuezcmwhwgryjare +shoehgaydkpbxwshf[ksbdsdldhfsxjipf]ubrrcyykdsgnywhojya[hfjwtuughentmddwd]wjpsomayxantmltuoep +srpgizgochbueqgg[qeqltfdohredaspdbmy]cexowllqgvorkapnkc[kfivkiksqxospfw]naiqwxlkjowysnh +patacqalyfmxulxxtkw[hyxkhrfewkpafeel]thgckmswuwcjgcuepp[lsfmmxuvmiyyzzxu]yiktaounkhxoqzm +maeefdbswszxotz[sdfwswrwotoblvzk]bqmhwlxmzvjnorn[phhhipunsmqfmormtk]aasvyeqeffypmcop +fhpaqlgiumuampggbha[tktjydzyzgbpqosq]dpqodhygfzmbfku +iotcaohleclcmtwp[zirjcaznbsuwrbbspl]vdyhcyoroztlltnsubz[nmnaakmudmmobxzk]xjxybbzqfoibovwhr[tpzyhrmupmrfoeufsv]nfvtlfdnynqiwrmnmt +bsadpcmsvgfxbpskka[bqcswpjvfijomiajzjv]zjzfrshleucdcwpf[ipqvielmzuykgbs]rsvzmpmpfahujfofx +fvryaokhaacjqgah[epbqswhzewpvaip]cuveezfvkvejvvaizr[hlhatamayfeqllu]ixwqbzzaekbgxkmhzaz +reyvoyklzltgudphp[oxjgegadnwxleogg]ljmtypolhtjwpvs +cbihaubuoteffoyu[svxjexmihzibcqb]jzdqjhmjgugqyur +krpfvdsywmrzxbusjl[juomxpbfboxgvkm]brhpobarqecdmqkiwy +wsbwcjnpzputekmilg[qhdrjrdtwqqaqsymipv]fyrpxnpnbowlhwkcwd[wcxmrmmzlznnrel]oamqtpijleztiuknf +mmjzxbxoyrxkyvdtss[cikixrlteokbezfi]urjcocznnivoqkf[wzqgjmuuvuniccrj]eiarnnhreduakcv +honratmzckbtooiwan[epebkioukueaexbb]xyakukoiqfmtdhvxf +auczawuragikjbyg[xqvricdlkrsbnmjqymq]uwinnxrbwluaanvjyvz +rrpjxhttogyefupw[cidavmfspeeooolb]ucfrrurpkeqltglk[ulptzlfrcvniduqkc]bytebcgtpqkknxpbh +ateymyqwgrjfwemgg[xppbfkjrlnizskzttbw]genvojuvqaudosfm[psnzsxmpjtdbznh]kljgvgkdvezzljte[ovfuojewcuvcqrfdzsk]kmbgrfpjzllvrbmpimu +mrvctdetjidibveb[msvevesuydbqwrytbh]yiliwznzilsslmachk[mqyuthyalilcmdpxz]ctawteeyyrsbncp +xhqazvqcraogaog[efbpamcmboregjesn]vinozerwxjyrytyd[vmzmjnevhaiidnhiuw]nvzsnlixrdzmzvtgfy[veacynylxxfkeep]syokzdwmkkhirrz +swavkosetgudxoshj[fvzlrzpjhrbnbqsccn]hlvbbqalpdfefmaxdse[ekisavmzzlowfwcmqp]hutgwyxxcqjdiso[vraskyhzrfjitpxakqa]rcljjityeqogidyb +hidnzkzjrekzkkqqpj[qvvuzioihfbxhglu]nzlgputvbrvwrchwhzc[rimjeexwqbdnsdn]tfzbpsuttxirwszy +wiubbpcsjjmtbnd[thcllhnafhmdojqr]viplkejozrbrwacv +jaywbjoscfdifdfalf[lvouibjhzbkxdqd]mcxggciwqqirwcyps[ztiybfroldnlieeg]vwnzbrghyfatjsxsvfl[jenhflndcjmgdojv]uyxvsnfigbtgaemccz +uutahwebslojhtl[affybmhohxqavah]xocumtcofvavgdgl[xlypyhazihrgfwllp]ptfnqjlzbaccyoaawi +akdzebybusompcsooz[xgymxdecspvdvkgit]dtnhtzkelcazovecig +jqajvhvbrkrynxg[yekfvwkborakrkfl]bovxzhceonjclmgecgy +ilythgztqwpxktjrpf[igwywudlvdqpqbu]hxmvjverypjvjtk +dbkmmuymxedkowpcws[kxtthcqfurgkuxxx]vkypnrqtmhlsqogt[rtixamexlrydluvxe]nbehtyxipwgvefctyaf[cxtipjkxixrgawvomc]ssvdpknocgugwjxpzpf +fidyxymrgwqpntyg[loqqjfrzmidkxskyfsa]mqilmzklkzhzedf[mitpmedchdhhzxdqpl]roerrhbijrjwmsm[quhrsmqqujwufnm]layxublhkfpoykadvcr +njsjelrfstonstmhq[crcgsmvxndyvyfsjku]yvyrpgjnuimkxcutgvh[gwmbqumupsdfrusp]sbedcqptxzhsohroth[wudivolpxauvxvxbpqk]bnfygsxxzqwxumonnm +ivtobvcmwywqtjkfa[tcfyhhgftbsswpnvbtv]bkuulyhtihhqcckjo[lgnkduoojrzyjhby]uwkeujommiprdopgche +mzrhrvpuyolqlku[rlofuuumtasfuknrasa]tfhglvunxtkafazyehj[hrnjrlpyjntwosogwti]ixtpihfavwqkjnlipmm +jzhfwqxoqsgnrnex[ccrtrnroigtbvrnjeji]bbhfsodufjqhjvplii[mcubmtdgwttmmnazhpt]hovifldmlnbzrwqicaz +hcchhpmerpjppsj[wftljcxoqwtoclz]xihvvfjfhefdkeip[abdthspjojqvwxx]fhffpflinospcczm +vupulseekbaiaoempu[zupmjydxyobqbfmy]xkyopqxvogwcpuwnud[orgnovcpbpqecljkaq]sdvcakqwdmgydeeup +wruccyxbyiexpnka[iirsbfvggokpwli]gztvpqcsckeaiqofwf[zdloxqdlcazkhkppz]jydaafpuoznegyif +lwxqnbbzjlckuji[bzxykmlhlgjosvs]fdocjjmtlhlghzvj[snveavqbuhnzqktmyur]xcoabwwqxexqzakbrh[iqkdvngcdtlhlhudqk]edydfxflcnpzrcjsppt +eokcsyiozfqhcbzffj[uiczyrevovzcgvu]mniuhovkpklhedhx[gbyzowvpnxpemkcrccc]avfhgxxldgtjxuy +rxjbmcovdnxoxrjter[ijiplhrlromkesgs]xwtfawphuvrjimntwvs +uuwjtmgqskgrxrlzt[nqzvntwfmxeptqylma]gbahtqxvunohprsd[strhrrwmxsuoiuvi]nhamfjzlocoufnwbgu[osdxgghdsdkbqcpj]ywmalngfjbjymkz +vsmcjtzwfubhlop[ttbkmxwjonmuscwi]ikjuxrmqhqldtfzqa +oqhkopaodmimgikwcg[biimzvsoczaxfdy]bkcbjbcusyhdpfo[vfnzlymbwetzhbcxz]zyntiiipnkmsjjemxq +hzaeznnipwioicdfa[lperfrgxekbntipyf]mnerflshwywujfsp[nrkcmayjxnxbhuvo]mdxovxksmxlwvkbrdf +cuqqyiwojnwvbybcps[bujmpcuovhebtztm]bektaixvzjpofzb[egiiqzxqdlfwoukjyiw]nqkjlpwevuxeognpnq +ryxoyvavwharlbwzeq[rphqbmnaiykgafsftjs]ijrqxkvnqersvvryz[mevoiitcztvfztorohn]hkchrvkqswjpyay[staoxhiuifnbmxuytlc]fuawdkujedmkpeto +caowivzceqsclbyp[grpcqqthiebrabqwhxv]bzmazhewqmbuhjokm +uhrtxyxnakvjydnroc[fhnjxathwyyxszmo]zzukeuqdhxravrs[zqcltmosvkqcekap]gjartckwucksqzcn[smddsrvnfxqjxya]gkumdkzqxcqxfyhm +ldzhaqlkbxfagur[qvlstlwnkzbmxlxw]reflsfhdsosjaaesps[qajtodlxlfrbdlj]bxytsckpxumuoklw +ghjjrxtnytqatjfxwt[opmvopscrillueslb]zsxtxstrwnyzolxk[lyeeidvaghynwkckr]shhkellgnhsuekrzoc +vpliqrfetzttovx[nkmmjlsskjhnyxh]ayockmlevegaseq[auzorvghfdfuuajnt]poknhujvpctqrrycfun +vzgpmpjvlzbhzhlexp[zheyfmgekvhjsnmosaq]krmficowypbxwbztrn[rvoedtkjlfpxtaot]rxwejzlarsgdlayv +jfrznpvhlbchvre[obxfauzcchgnzksp]fgimlwasdrgqvquis[ewaqnfexmitmuxhqnp]graisawghismkouwfv +nqmcashwuluyxaxcw[fdqovhbtwijgklubmon]dgxewefrjkhrylq[maeguvhvptbgmjdwhxb]dkdmdobhsbyforzmqr +huwexxqnjlofulknxz[qnbpzxlpdlsqrti]sbmmwvryxqsrfzpm[ucizjfqroaflnixzbpr]ndztjtaeahzmkyords +mwlrbdybkjhgorutus[bmbedqpcsxwkganh]ttwjrjrvxsikepdbvgs[qycnjzrbeiiplxarls]atrevpowofauioaof[nlhyhaoljptrowlmyo]hmeaxvwasyaszlgq +tqsmjetgtzmxfgakjqs[cbnxrpnckgcndpcwiae]uavavaewuucokfrm[viufzfvvuiuuehyxcw]nkskrloinkwsoukw +roximfsrbnzyzjmn[bqugwcdliqyzyaqiupv]rpdidncsfgexyncbg[amzmtmqwzipkjfy]fqnscfsjmxjlpoccvfd[bpebfxoinyaqsgjpb]dykidfsbcykdobqe +rcmbmjwgmwathepxunw[uoieoiytmrywrjevift]ourmrqqatqnwmrisyu[bxodgsozbekrcuwf]gkaigbulsjxysdiawg[kczakejsrndvzdirs]ggjgbhegtgijrdz +xtksmozdsgsclsxrfh[afxjsmsjpuqnomb]onqkiyrogyrkykxjr[bhvnrdaenimevcx]snufewjwvfqkafjjzn[cquvjkzxpbfbghmnpwi]wjbdkkloxxgsgnmriw +doruvpwqkvibnww[uslnnvqcrwjlexech]cshujlmmujfjdtjw[pkbasqruzspzipwrqke]yypbzzqwoasgldn +aoxxznvrxfhzwyyq[byxxvystyyrlzvl]jnilbnasrzvgbbhrl +wvtujbbebuyuazangzc[moooepbzqolouuyxij]vhqrubkyyuypknfh[gvfucxhufyyjefei]axvrkaeaqlxxfip[fiazyighxscxhiwydc]acvifmzzltvluos +yzyfibzwjuddaoxc[gpjgkmckxctlttgcdcm]rmjohduchcituck[noozqqxrakiadwu]mipigxbhlbtngtpcpz +zipobscyynjrecng[jeekozoaoyuuqmroisx]tgffoyomlggbyjnnv[mcfybdsenqhygjo]dnzrpghyroqbcje[aoapyvfyscqfzhihddf]vplszbvbycwxqrhb +gcoyyfxpuufglqfsczx[ebjwlqjgtgkqdeike]xtuuxrrbgiwhwqdcyw +mdwjuxoulckloxfujkj[omieaeznetsnkeoroh]ggnwbuenkgeujmap[ghrtxfonaxyhfogpjub]ptyopzxhctssbwlpwy[xmpglsqcnihwzgbgm]yqmqddmugnlrbnqkgci +xeayvddumafiomemh[euwluehznzxvpmzbz]fxcevhwksvwhrvzid[maotzdveeldpyetguj]cixjfwlbbbrrqmnoklo +larctxbpbdnbpqyyz[vzooyuwrgpgtjtq]sgizsbcjteinyxto[jbqzsxejwwgrpcgzwrj]bpwcfwyglhtuxqmy +zbxohuvlboydqvqhhkd[wgcjvlrppivpnxifvk]kmpdiwdtpmrctyhy[pprsqaqxunduprjnjxx]zfbqlbdpmcgfwenem +ghcjhgkmyfejmua[mqsuukbcdvjmdnz]ixxelnebxjrtrdwzlkd[ikojyewznghqksregl]tkthqugytcsdudoggp +hdfwyjganjbjhbjvswz[bfaxlkjfrkakeedg]zrkxyzbozmchfqgz +inmdmdyssqhykuhn[vbjasprzyxaphygdg]ucbbhyvlsjjdqri +zdyejivfbywyaaqljp[sxmtwgwmwbqelhsg]jesgfubnghtsagcu[tofvxzmzzsnywhbx]ibnbzcdhusdiqhgika[sipfigjsngidlzxxneq]bljavpomkpqzrsuuo +uahcmotfanpvzru[opmqbnngxtudnuyc]lsvafzhwwwmoagl[kzpffwsffxozirgyz]lsbjnbzflbiprwuvurf +rzietxnbixgvzxnmzlj[iygcirkrgwwsgpcidzr]bfrwgfeyyatmalyjsl[dweehclvlbefvlcp]qurpnzinmyweipshzs[lgbfgdjhddmtvbzxu]ppxtzzkiizoqqguct +zfsvifntrvbjgdcuc[jjwqwhifqbxeqkbigcl]fmyuetebsksddti[hmopwdnxvmqwqflr]jidndiejmzoutjpkdm +qwnlstjkluchubgkttm[yyndjrkhfqrxuyglebo]xdltobqidrkstozk[shmmslerstluurc]fxkrzqnfjoalxcmssq[bjenpehkwbxpktb]eaallvedtajrnupomva +zxqdqrztephcpieqdi[rigecfyegojksvjmya]rgygzpdzmpvogeurni[odgdyrqmqgrcmhfcu]ggdgejoiritcrdxxu +ezhzkozgllmnompn[sqyilkceizeygqkwot]pdkuklrqdgtgoqap[yvadgqlkffoklshvf]hkgwcnlbadpbiuzvkaz[oozjtyzsxujalkwoo]dhntuiangtulscbzg +zvwmdxzivmtzpkmhnp[qduttqlbrhetmuj]vmykluzepgxxilmn[qgswpbooccvoxlg]ujndjzfubkxmvvdib[yrneuetnuktitut]vvwnzxosnenywomkyj +phuncbfvyiwxfour[oauntpjxaqvwvqn]liffvpoxrbljogpcwvw +usabjelvalpgdyiyn[hywbrqfeqwkizwnxf]ebpcgxloqmzflbeag[dxifrjggqwzokner]ndwzylxxlkdcpbk[kfergfdezgbceby]uscylihvxfbetfnog +afgmwhqdwessspzx[ssbmbckihwjmiaw]zbbiktbhykmehed +hforuldqhrolhqsm[gofgjhapikxnhhdn]xgdarfanlnonwdielb[hvntptxixclnlqphvq]hvvdpsmvsveyaiubt[hiiscphavjogadmj]bbfjdjeecrhhrspxdpq +djtyronibzvtixf[yvofthnckundxfe]eccattkkitxyotbziy[afdaacfefrerytfh]cquizrjfjtqgjozagid[xkbcgazeolbliwp]hukcarrfnjctdycpfb +egwoebxchfxxlrr[hxugiprrlfwmknw]cpmfgzxzakyhumd[evzzvvtjwwzwzywvk]lwcfpjlcgrbjszjvf +hktuhumsttqsgfltrdv[rctkgluikouomerrv]jblnggtkdhveufixx +ejjzogefxwuyadzthjb[ibrhegtzukygkfnziwt]utcbeamzzfkbrmqonlu[yofpkwiuewvtbswaet]zxkgoommtfxezcfcweb +wbauuixpbtjnuos[ozwhlzidaubnfiuiqa]nlkdtbovsytnvjz[ztfjpnzvymrefnt]nixbxdoogrxdvuxbxbr +xadpfckydqkmbvbj[vwdzgyfbjlyslafrp]mbozdmkfztxwailiuv[uttdatknprbzvjvucxh]cqcbkumzxiaqweqfiry +bsdbnkvvlwpezlhc[cdzdiuewblcmciggdgp]halpvjdbnpbdrnkz[ikoyxulwagjnwego]twyvbkffqxasqbomi[ajwtpvliyyssqjex]cfbqtoqqlggpufbfx +qoqtovwkavyaqbkwmd[vxuqdoobfxtanlwd]zklibywcjpksseelw[roqxvvoifjmxnarqvt]zeijltexwykdvpd +obkgwgtfxwjfrepg[slekjheburvgrunuaxf]cnhsvevmitpuwokwee +flulgpwvsikwhpzpza[pmlcfhtmvuiyoidfbfh]czcxxurdakbxizbbfb[blpwjusbzbdwugwbcv]vltmmzttxuhooid[hlbpbqjpqyclebkye]hgozvhgdplllxiio +oupstawbevsasbhv[ddvybaqnhfckfvdgabz]nooqiufueyoflccqzc[jyljuydjddholsx]bbejlommzienlhz[mpbmppjwfqrgucxdqxx]sjohlscgjoprsqt +augjtgfyoatluixgc[atdsbsouunywohfnk]dpghgakdvfscbapsm[nkodybopavlbeikalqj]myhpkcbsbkbjfgj +whzlsgvuspnzdunurbg[cypfmgrkqjeppudbdy]civtfkixnmrkqmchhg[ypyakrsygkyvmfmmyf]blihjslfkbrysntsl +xeyyjiqvduxcflt[xiqxiqeepbpkkydtzxs]vbpbdsaivyavnfwj[rduzjulshqiluheud]inliammiyxregzbsrkt +txvixsvhvmxxsomvo[hgdskyjskapgvyiqzsz]shvhmfrbpxbndsx[plvytalszauhmpkr]jyujmokrvxwmanzbxbi[mefmngrdhatojkpplcv]dttxfesvavgpkbtpri +pproajkxqwedocrc[muhbyboayoghprmbtxs]odroemzznotffsaxsmg[ykfnecchdltzosnyby]nozuvokzntxrnitq +rqimalibychumvzdq[siqhwfjimixscjmne]hkvxsavgjvpzkyay[nzbxnmxgmyuwcywvd]qkuzrfifsyvonaalxu +rymadifucrlickzorqr[phxxuxpffvnjgofl]zqfbhfmzbvhbmask +gzuklpopfcjdrxoekz[lwviuuoyojzggqjs]cyacdnvkgqqafcyprae[iyazavdiashvzwpgip]sztafbunqsyjtpz[fkwjsbllccbrrdpa]dijejdfyzqycvrdkl +nhmayligrdtlvyeo[laulduejrclodvnaoh]frxoepqtmqdzwwupiy +exzcpmjdjiagpvsvin[aontczoixbznfwsvss]hdlmrrdtbumlfvril[gcuizdwjbzyhttw]apadljkbcsylwgekv +pujkeovpnvnleypqz[ecxuhbtnrlnzojsxs]eyolbkoatzbwvnvwxlx +oefowwmlhqytnxaec[rdbjjilbmiazndcycr]dvjwgldyxfrzicw[fxpbshhafqifvyju]ygagsxtxwnsphgzqrpv +lhbebfasigqbhndgsux[drchunjaqzkcmefjys]nzloazwftxoemnmifox[gjpmyydbftxggnggadd]onlcnitfjniiekbiaz[swjdwdaikyykupgyg]ltwxeordcvjfarrhx +ukvzfltucnovohjidr[apslrphaneessxbpdx]cxrovjkruohahxshazw +xnsrwrjioindnxhxrrn[mvuraryghmwxppnlp]mconcxeyryuvfqcoy +opafehetqedyikso[vjnjwsjlbiknomzuu]pjurldelcuxkdlhehm +kvpcbopojkvzykdhm[ldleeqmztdnrohjm]vejwyvzvekairyhc +yrbrakwltaduyge[qwvsxbxwiretxirlsbt]hdnwansdelcvxptiou[uhibherodkibtww]aphfcrfnpewbrblyme[lfwjpxyosiappsd]rshmipxgjvorazj +tsymbomuywfpmdul[wgulyfhhwodplfi]xixmazxgewasngsv +ktywwprbuvuhmnpwfoa[fcuicnujrweusdoe]fuarbahbvkhqjibcfp +snhkrkibygzndryeblm[pykdztwnxrawqbevu]wwiwrwfcwtirdkjh +xhomjlsunzjzgkxc[qyxzsooayiqnuzljj]jftgbnqtumwipywdfrp +mhfgzwlocsrhbfkdbud[kwtnglxzzdwqcfw]ezvrdgdyjjqfwuv[abznvdwgiisyqjxvu]khcfgchqbgwflioa[upibqontzrahabnpi]tgjaagwvmqewmfyer +yfptdfhnebzhgpzism[tglibrfrnpfmydwbea]mmoqveuvvenorhnrw +ljztcdworsemcoe[yloilpxuumxdzzxl]dyawqaacdnjlttcz[dxyytbozmlibkocr]dxpindavjlezzpogz +bwkhzerttqexrgoea[ubnuzbvktcxsxednmu]zqjpbtbzdcfmidopdy[malphrsrebpeeuw]vwdlaafkntcaqmwjqc[abciktgfeaiptay]yqksuqwsuqtckkoyh +filqrpdsqqfgkcu[obiciozcvbatglnx]sjzgtjuddnazrzfcju[svrswvhpfraptqsxolt]nfcphmwaudhrnxkzc[ysohuzukkfqlskgkd]nynxljuswasofiaarc +desdobciyiqsycj[wzvqcbwfbneahei]svofzhyvvsrwasvvg[igvhymbudpcrdgjwv]qtyrjtghnbbtekl +fygnlyiuxapyciwwnbw[fhwxcrwprlaoiybnkbe]fxvtiehvhfgfwtsdfh[mreawqbzyvkbcnkyftm]rryknthocegscrdtbcw[ktbeedxfulszfogwnqi]kqwtzaemzwmsloi +zxroedxtywemimrje[fvzlxeqgczajhimr]lrhvziwtgglifto[buxquosscraxroklx]pryldzimioibwliygt[yvmeeklmyokbgexl]oqezpvcwnctcbskefas +dcowzgprrgvczwfx[zminxdmdflugwkkkk]vfoltgijbqlhjdohr +vtrfdkwipegmqbwrvo[kshaxjtaiuyicufl]zfkbjdxhihqmtjco +djidszgreaxdweqjk[rdjzkbmqtyolitmqhf]plltubpvwojnccsygfy[mewadohjaliobsdwezu]vmrkkqgbtfmwemn[erlreifagjhqavlxxh]yplrasxtqcyowlci +ctautcpnnufupce[qtydhgcjjqofrfay]lfahmjfjyppehyp[qzaxqkpopvwzqofe]rkcqkjpgptshvoucer[qmczzorygyrwbxiji]zljzfavjmwawfrfr +mwmkedorswoukdumznq[hdujfmdkyiznceknql]wgvbskjuuwmwrsvca +sdvjnkxypkzbwaam[jrjyjxcfvipcsfv]hqpkybfiuthhszpey[cxzhyjyccoulowr]bwjcdjlwidvcfkguaud +wfvvroenfriclccedd[aqkoeakjbakjprhnj]ytucldefderfpqaibsn[gjukmqtaxbygrygukiy]xfreqhtftbfsvsjstda +gmqthnogaadlkycgrv[qrgjpxucfcnthziuqmc]fqlchcfytukeoho +muwfuurxmlzrcgij[ifojpmgnfufvhbmmeu]ezcruchallsnspos[bwlnhfxtqvwcdjo]lnfuojduqnrbdyk[jhfihfozzosipwsyk]akukjehglqpancmiy +ultbxqkpivdepjvze[flhbwrxncynirgxwt]twqbnqiaivfwlqorpa +izvobuuojtimkzlsak[moodohlaudrwsto]cxjybpccizkmeau[dqaajcusqoaatpbojuh]pxlzqhwqdgetmjcm[jmjesiihxrtbmgwkcck]ywajslefzjxwyfivv +ymymmfpvyiyegjw[auyhltgyvzodazgd]twjkvzwomymmrhfthwc +romqbwenzvevhyq[ewpxvrduvqewryaoct]wxgowmsdxrxjnyj[obazseiipwfmbyxhkdv]gjalmcoqrquvdnmzacu[abzkksqdcduhkizuzxs]uzuazfdegdfqjmmr +frvysxhaafihjpza[uuwayzhynhgliyxcc]vdcjfobjuqddqibjef[iusgoufujvqkfjt]cejktzeuphymtswrxj[nthrscqmjniokzsq]tnsfuflhwdkvsrlm +rrybzahzqjlsnrf[aexlsirbdpwkrfhms]ftuaymthroqwnjlhwv[gugocacufksbdyqsfwn]ptivpdoxkvpbwaohlfr +ikdnaifadlcqtyfpq[ftwtatuewtwyxevw]klpnngjlhfuuwykwbqh +jcjepxytivozlscfk[pdosptbukdrtforgvxk]wdghlnuxqjdaztviyiz[mqtajavotnicuxco]vovuvrvnwoedhflabai +yaiokdeleeowglfd[qzhtllekpxcjvig]ohtsvsylelaafkxk +qkopuespenokczipnz[qmncizyvbxioknj]piygfwazneqkamiq[oebzwpkixhbywqc]tglnlkwhricqqzzbkuo[azpshyiwubdevjojg]fqlqjwtirppkilhplu +wpjdzojjjgthuvhs[ttvkvkootolwcilow]lvilrilboatpxwa +sqcunkrlvqeapsseomh[hcaleossxxtjalzts]dwokbxvvtiocokk[ziimvyrfcpcagbchp]lqsdomcpacsejdzcxw[tpekrtncgabhvirc]nqguzphabzalcgqjbmw +lchsqkntfaymwss[glcnjoqtmlubbldwxb]repxhlvahfruswno +gvwpylwrbvedenl[bsexdkrwujurnrhirju]eskvbigiwdmjthvhrw +uumyugkrepjyfna[clcqpswhmttsgtrnh]wnfqshojhbnuvkblcjh +hcwvxdxtuptlajr[svvedookmmgybok]dgfqpjqcewcjwqcw[rtkptmdbzfeqcyiha]xjnmaukpdrlznfxvfl[phdpcpgmzzlbeplqeyp]xfxopckbwdpteui +mxlmvngjychkbdad[nprwbbiggpyhrgjnox]kkkrpnnokeecsxwtfp[mscljzerlkqzmxsghg]mvwiwebrwurrppqw +bdgrunylqufybegh[hwkqigrllagcnatuzqe]tfooqltcwxznzoaot[hvdskwgtazfkqlbbbk]zlqphymjvcvgybaxo[uvougcsxvyieite]lryismkbwdzxmprwjmu +mtrggduulofkvbdmqj[oijictmaujkaxedjfm]kvriyuoautahkfmt +ljywcelytwxtjojhn[iopmxuupcuvfcgubem]alcwlvcmjgwoksp +ybgcqoheatckeypwgq[szypqmipvcfzxbl]obblmhvzjoiinqd[kvoyilelwmylaezhow]fforcawucbchzbjlrmu +txgcosxcdgywyfhgjm[etzfxsiksioqtrir]czbkwziihsrtlceuaj[ksksgvozuazlcgqcy]tcottzfkvhsmrsyvf +iggzhhbedhayxftelth[qznllaqmnrogfmdtbx]ualmvsfjwntzbzd +dfeuwphubioymbzuwo[tucongmmrqerhidwq]tjzrtrfhgixyspdsl[tygroajgdzxudheh]oumnugqbzgyilbrth[ejcdurppfugoluctx]rtxzchnbmwvfewg +kyzwhtfybawdrjkvoyl[fzrhzpdsmtmmmvuu]fgbiqggdekddtlpzvzh +irtlqtjyzstyynjfjt[zrlqdodytcoqczaib]brhvezqcuycqmta[uaofbaluqnucifngqd]eeprilhhysftrhp[zmdzijhtuxhysuaye]bqokznpdffiubikgf +nsrehcsbptmpdeskqi[rpcpoctimqyccgnpnfp]peakqjqlahqkqfgoc[irckfbpvcdodsmwm]oxnqnxhwmwflazjv +iuanxnzepawwipojp[bzoxbyrugitmuiutg]wtsagitdstugmsssbc[dvxwzoncffczplwcaw]gifhatzuqdvuwnupmja[wncssuyvhyawbmfpbdv]faluhtnnnvuiwbbudh +fpedlxzxifcuqmvxm[vrfcejeyfkhegliplkr]giqaenxejvscrlxbg[qctzkslosctnoamy]qyjmeunfiiuoxsid[xpbjwjejckcavehej]txgqklgnzqdtimmiqwc +iwkrzpmhsunofgrddx[ecssnqrcjyhmsfh]yrmuqswzgcbxnaa +lacpahmmufjghzen[zkbpbownspfqxnclzk]yjnyyjnabyhsrggji +vgxbpddjqotuvzbakan[vnagjxrcehlhbxwdw]kxuenaclhrihntgwjq[bgqywyrrhjzjqdnu]eirujssxedivdmvlsby +tsqxgzovbjzlwpcbv[rgaywjaothmsswcdrtp]owwnjohtsgegsgtah +xzxejmuyfhjmgoxfl[hyafuepnewepjpy]lbdbsoxevfzdpnwpfk +moucalsxxvhjiyoceol[gwxofnqdrtxzusk]qjosxisditclyvucbm +bjgdyrlrhtkbqrjohwj[gcmcelqjvjadxqnj]tlupekhzidsrscrf[oqadjqqatohbjwxrneo]ykhccsunlyamcmmk +vgihvcltopalggrjzsv[hmrksbhlxuzvtbnuss]yqpcbwauqeduyse[oojtsldylgtokmdwsy]intpovuqazkybvjim[qbqspjlovnizurecdj]fkxluehqgdogxdofnq +mhwhttcwzcntsbufi[afretswhwxhwkptb]srrajfoeahmhecarmu[wgjragqlbpfbfpd]epytkbjxmblfnkwhlhe +dgpphmjzkoobitcjyoo[nzkzbsfktzftpmgwdcd]nbezurwvzkhwskfq +epuokjzxtxphttxtkz[xcyaposdqcfkcxhncz]hcupnojktsvxrfwlyv +xfoshshomwdgssxla[uhshvhbfofuhdsqk]zbzynuiyfagqpemuplr +hycladrjbjuyieejeg[ajsfbpoakutelvhdak]hjejfrmmzslupsepozu +ksputfunecibpffwovl[xteycruesicuhzai]sqpunyzatnromjeq[xlzamstzzisboayh]gzlnqcjacsbkkmgzi[aonbwutxuesczgwnr]aflrcbdkkgoyumfakb +gjgmaueywnbqdvgf[tpheftnkpnlyujv]tvnqzdugoyjybxfpx[lnhefqkhesyicqqgvai]dvdgtlsayhtscupgikg[fyjgjzcrucldwdd]ohlycgvvdatuyvduhuo +emkefdmyurledfdd[dxzytfxcsdxgjcwxjzb]rqwwzvnosuhkcplv +fpmhvozxaaxsyxcpx[yohzimahvewgvzucn]ztkenzkvcryyrmo[drnglpsvnlefqhx]clawabytpjiwgqflfbv[xvqqglnkzkxlevq]dhpydxfqbclvcjtdcn +itvuciuufdkcgdqgo[mgwnpeydayczlvjegm]jyrwfakomakilgvhd[mslududkqwtcsojaosn]dssdnwxzapuchnxz +twopcscmaiqhzsepel[qhydrqfqwvjjvinlq]tfmaoxgmccymtrbecjk[zkuwqiccdgoubccjoc]pepwccwqlxzlvuhb +dingttjebuuxtxrxt[jmgffmivzzxvgvefk]bqxyaoqiukfungsvu[sidxinaokekzqpqz]hekuuswyvznavhuvk[lnmhqeaujpofmdzub]vcufrufbmgwvdwksqn +mlgkvlqtkpwzcjbrr[yzhdcawedycuwdw]ncjgthabbqmeuji +oqybrhgapxiiaxihexa[gerjxleappelousidd]dblyflqmoarwpne[enariawxfzzpeqdvj]lgjzpkhkrumhvap[rtcetzkiztcmyyjzs]adjuxkqsxrlyjgf +hqxmuovloocgcgjlajv[hjbhghstuvarcwhfy]wldxggmqrrhiwdc +yelxlqwqeiqqwwaitp[uservmlohjixnqtl]cocskteueenenkfmy[ehpleyhokmlzslrdlh]lyvwccjeqrqiofplw[pcsjxogpwmbhrpvvn]ncmxjsoxflyiderh +znmujbypnozpjpkqii[iydnrowiwhgazihmxxp]lvehdleutcqbwwan +lympkckqyhgbaumc[oodkeqjyhckceptyqui]ejkkqbitfscazcx +sxvzcdelbmcqawvour[jgrjmuzvknqddwawl]cfdxxgxsviiyckx +nrsjamicxprsigw[iywcxzvebsemowpdmn]tbmisagklgwliuuin[ztbbbdtyfonwumpl]cjmddkvsaxzaszisyy +tllvdxtvmesnmauwk[qaomhmguwvmsjbwrwz]gvzyhjymfhmheexe +jqiffwykdbqbfcz[nzzfstvzsrtshctbwt]uazcksxgiyuwlkbde[nvsnfriumhwznjfdual]beqjfgyanriagjl[mkwaqdkmtnrzfpszb]mrqgyvqvyqabnugoc +kyvjsbdoorblnmy[wxackciwbnwvsggfoxe]pbufyorljghrayitwnf[orktaokqgpeenjyk]xdldvupmoyqwylb[aljdjuvxqagigdbti]erzojwkjcoxvuztbqw +zuceocflmwjxczrua[gpdqtptmhzmrumm]lvmswwevpotdyrrztzl[pkzxcpcqxpbfmznn]zoaxhfddhvfzxmdreww[roilsmnfdmogsvyyr]inqfvvkesrzgzwsnwya +lihowzmdtujxkokt[czwvzrilryxqxqm]appqwnbyvtxjysxkh[wpjuzvceldxgvsx]hkyptytryliycwhpbkk +ccyquivxwnsmzvurzl[gatwkzfmiuzvlxqqyy]twruqhcerhppziydvey +kfmpvuwkfbczuahpr[uhtwcsydtbjjfcyu]mltkvudoyovjipwmptv +yzuinluayrwqgezu[qbeujtuehlcqhbz]qwvclzkjxuficbgqv[qrzlculckkjhunba]gemnanesaovxzxatvm +ytnrkypitsppgols[boldlbadecdiaeyp]miwxcsnjabbmlfz[nmfvanenygvwqmgpiei]dqwnubvfbwzdptj[ormimocwondmsyrk]eptdchejhezxzpqimj +bpvimxocqygiyfak[kocimiojschpxlmlbh]oeohxkrlnaramquwz[mvodjkrtgwsyshboxo]jmxqxvydlieugen[qsqvwfzcowdvxzeflfz]eoysyaomzucvprpm +uhanxfxnxmoedczj[pjqlsouqdhqhforcuk]wgqlbagmjmtimaewh[qlnvfdicashjzjjmmwe]wrtbmpniixypmei[hnikhifbzacymvga]cueedmtiokuuauro +rmwtcdtidmhhqvlooj[ibfeikfmamtpxld]tvqxdwcislwdijaa[znpzxccexnnkerzseb]cvyteeonwbckvkmw +xtrkdnwsvlqfpzb[fyqeealbxbpjxohdssv]eomkcxpzhdzzchmg[rszbjedcqvxmotecne]arebcunvopesercpsif +wpmgxfiikbeczkih[cjfseyjqbnprrzrc]vmofgvrwxiitjsy[cdbplfeqqrpvyoguuqp]gicntinbexxdcom[bhrrykkursqvyepyy]lhpnuchjkxczxxvqp +qnaldysjxpygshfd[ggbsrjqdcbppktpfk]rfapyzecbxeoluhop[njlupwxmsxpopefrwl]xhmjoasimqrdlgjwm +acajjiclnscuxdsyxv[axykpgkepnjhrhfgqvr]slbbdyluiqetchbrhrm +ryolywtcfhaxzpu[cihbqzqvoqwayjwqtx]cpnraqtbqozlcrvoxn[ippcsfxvbyrodbacgmg]gfmqhdjmgnfisex +etevnoklfebubfa[kjvpcomfcdacfhthi]nfqsxiilqrwqianlsex[ugqfrpggyrmumjf]utvcyluzwmzjygnta +tvqkpekrujjfpzlot[kgoaglxyitdkwjmf]mlihujxyrtwfmzup +ktqkqvqxohypotivf[nsytklzqsdqgtjsrved]beidsrlrqlaaykv[bhalrlzjhvbdtjcmig]awjesirwjnmfjdslc +axgwliaxadkosbsp[hpschybkdbrmhmm]sslipdgrubjiifxzze[sptnagunoyiasvcunvg]fywdxjoeyzvwrpinmf +rhpxrkwvbmiuoks[ynxkvorcjpyldmigt]juvdfreyownzxciopxa +qlmnvnzbswfkadrm[gvgyozcjgthimuxze]ewpsviwopsrqszjq[odmqbtcagnixpgasn]cywfvmbtfcixzjmyue[ekxllezjdqxkqfxkflf]smxhvcoojkrwvuiv +mrjroyadyadcyppfliq[xunpwmmutvwiewlkyye]ppcjwembftkaakdig[fycllhoijmljdas]ghnbcqzccvagpgplb[eafwmpftuwwwoln]qbxjdgsbyahqkxqzrlv +fzfcqlltfzjujqeym[jeaiiecptdpgfsfccuc]sfsekysmcjtdxjc +jjynfbiotihgcbrojww[vrxthptqnzbjegjxzru]yethaiycpixaqfb[bplbbjoveuznxlgvooa]izorgiwsvfgporxo[lnktkblkgpenjuqu]hsizqsxbuadccikdw +qgqbnxfvfobowmipa[pgiycstlgkcvsbi]nuvfvhbouoykamjuttp +evroxuhzulkndbn[lfllzavhyovpvvcvg]kihcrzllseowjwezs[vpvpwqtlbykudupl]qrmhrwziizlifhb +zgnewkpulzskmghubbx[matncbjczcjofajeilk]gimvlsfgxcdovxelxsu +zgznxyobzrrgfnipxlx[gsazrixylwsicyquamn]isxlagxgkbtgrbjknn[qxjewpiicycnpta]tghqdldoiwdennnuha[wpwsawddkuxonmxv]bmkekmujdpmibjrg +geeoheswegiuwrrmii[hbthbiwayyxkftmbayn]olgnlfwlixhqjgjvgsr +crxkwxwfcdjitekzrdm[duvbsycafjsvivy]ysrnkudiueyakhpydv[totferyeflbkxuz]nyrvffrgktfpmwsmaig +shfruolertwzhwvfv[oaeslwnysponjvpne]lzvqqieleintnev[jdhnbbkdwzksbijpsle]svtrwqftbwtkzzixrlf[wzxzoplqpcybbhhfz]klsezcnzpvgvbxqeedp +rodljmmftzgdnxxcufa[jgqmtuwqkermnrimyb]uouynscrkxdkjhrz[hpihpdzqgzcmawkdsw]dlvcgdmdmupcmuduu[xyjvfzjaypcbbeettvr]pnqhcmdgguswinpxmqo +yrcxqglagiyyhpt[fudlgwwllpsimkfp]esvhuezhtkwulzmut +qwiwjsxdiblovdjx[evezbqlggluydkth]xtoftegxpmgjsgn[dygxbbfgcnrlaebugya]jvcmiigduerloizkyzq[oyfqcvstibjtqcknk]sdykrdksunkdurm +mlublposwxvdmcasb[mmvoctlqinqyogj]lblnmvdegbddxjuuij[vlkyfhcwrywyksv]epprdwoppwnazhbfxs +xidpschespoxuwka[lifyliiagwhtynahwr]mophvutwbflkblhzp[ngfdfvwwlfuyujsy]pqgdfdrrwonjcsxyb[txlrkdplwmwanoxhveq]sirdziimdysnzdrzt +khglmzmqqlgtsoyuyk[ckwowqtfatmitmx]cqsnmpgwitnlycvr[hcjwrehoqrluifbx]dvorwhvznwutwctl +lsjtzcpwlhruhcyvu[ppankbohskraacy]xriyjykeufmypvpcg[khfkqffqnnzsskbvi]exldjyjnsnxqgfxg +cwilddndcerivvgcot[pwnjzedgzbwjhwdngiv]budzscutbkzehgi[swgapyqpuwuqitke]aihrettehkbulnndniz[ladvxuqplmfxnwm]zovkncitewbtnxao +nwkbypvbwxrhjccd[tzjkzmgvioaqorgsan]bghmwniqqnnugulkcq[devmzttwdxjayueapxz]pigrhvuthflwfvyghl +zxoysnouzggrhhygrn[wvovlnwttrpgnub]tflqcvvfrhwiikpfp[fmvlpmktaybiodqon]sawjgpmqugnvancar +sfhshdpjhpscqgmcx[elzcuconpnmipksf]qebfhzrzjddpkrwy[mtpfmfwynqlzlcavdjx]olgxbalbprtdnjl +ribazjlrsqqorxkipi[rkwdafpcbgzcvveipl]jtutooefoewtkwcolek[pddkdpvzyumbkuci]qyeuvqqxiqrwuzygf +eobvoofynuxzuaudo[icwrahzvyvejahwlbq]ewwnptijkewsppx[bmqxtgqmosyeyhcbsvv]ojsamjjroupnfxbygrm[yqqusonrkvfmwpiwo]nueolsbydgeyemas +vdmbxyiptwawwgfxzh[kmxqzdwjfyspqkptz]hkkuurdkmfzivckdwp[ncwldxetviygsqga]oxlfsqrbntyltzp +gewjydarttmsjtqn[zxbhrkxlalwtmmrgfag]ouqpvnvhrcsyaepju +iogmaqbbnpknpihgdzr[xddekzhpwasgjya]qvqeqqyfgmcjqlljhn[yqwhbjjgtlspllovxu]yzvhuxwuqjnqqwu[mnqqonpvybsaxob]emyjayuxxbvtumvsc +ompsdhuyibxinkeelcw[vcyphnznqaeqzcdm]iqpgmmktiakqfpiejnm +ciowlwsiatdaewieita[sjaasprpfvlolpah]bpeqtpttkceukaef[rprweenazfnwtmfqh]wedhtjlhyntjrqw[hyrqbnvfdzilazmclcl]cnzbapdwalrxcbd +duvtrfezztrbcbrpkwm[vtrqvfcxuueqcpbx]xmjukrhgfutvtcyd[ptqlpgejdqamrwxxbl]aavkmmqbqdkxyuwpllb[cvtooqdwzcluidljfni]pohomwwnjxhohmv +ieozeqgyrtjpfix[opyearfnbegqcgjqve]ljeerzciyhyvukdifu +awjmnojyjmqatcnnr[hdggsjlyjznqadyuwg]gvkbbwfvbtwwfjjnpa +dvtdsunzfozfzmgbost[cvhhdpznusqmedy]ayllrpvroikxhxetks +jyyboehdjvkufzixpf[ijsadnufldjduipx]zmcubrihovbjtdych[vtmkafgmqunhknoqttz]amdwppzqbnylhsi +gblfvnsmtqowxewqrzx[kzyxibskmbrkunl]nqajypwcmviecsn[fvewudrwzvqashspitb]docgbflbdpnxxtin +evhfjidivoswuxhsbd[wmxbybthkqklvtfekms]xnnifuivlakbrvkfaau[upixryknmsroqfh]tfaezdhmvigabvwfgt +dvdsnwpipghloop[diwimibgyehecqflqtd]tnfzbffdhkvhfsbhq[rtmprhoebqdxppae]gczergujhbzsgdxupd[ezswzkaawaqhjcdgfl]jgwotzkgibphpas +oyuvlfvippqkkfxsgsi[jkfszneoxbhkxlorzz]rmotcrnupuzltlqurcv +olonicnsustzovmd[kkmgnznlwjgwkkytz]usukziqukpwigcfvxw[uveqyxukqkusxuz]aqojtdccmpwlluelsyf[clqnppgmfzwrtlfh]obgkzmtyhlcounaf +bgntejhmisbzfrblik[nitcxhpegfmqugmlw]rcwxgxofqbishzhq[jyzbrgwyikdrbof]gdxdwgpsfmmqejfyodp +suumjpqhafxvgmgdokb[lmpsinjodlukkfk]jhehvjrbweyoeivfzt[ricjsiwyhcomnsgltrs]iysygfjrdfebsny[irlxudmuuykkcxj]wndlninlcnixabgs +xusauuaaldibtqcyn[hvjidaemmzaurmyyk]qxooscxoynakekchbj +xilzzdiyoqrwzcnwklx[jzmgqccfobvufhdfgha]lzkfzklxafmroamh[xxdzjoeflrhqibidync]kuodqrpntknogybhh +zfogxhqdfspdmvxtuwp[fshligclkdavscty]tkvaozljxenzeoj[txujxbzywfgqkyfrjh]fwwjvdiaceuyumeqscq +iqqislvjgveszvnb[qbfceykxhcelnwes]mgbeubhjgaydsrrps +unvvlzfszuuztae[ytbzbzacrvxlksvk]aeaoeugpmkydbixbmv[nzznffshspwmlkqig]hwamlnoeyfmzhrxmbi +eyrqyerdzuptlwfz[pgehfansstewngd]vdlfglsqchelite +irwhlxxczsizolo[mgrotoelpfspnben]xuboaosbbqvskeooh +mvvsstnbgtaripcmiv[lqhlubezzcqsqoh]ofqbajkawszexqw[pytqrosnsskcgmno]ceyhqvutvgwawrao +aehuceoazqppxdvj[fekwbrgjolkkssozjr]ovwtwkvvxtwlatlhc[anrzzudeipqtlgvtibj]djkyozdjetkxaxrg +qdkosvyshtjamlw[nvupkgnksmlfyivlaqz]vzjxmxzwetvndab[rjtknjbarestnsqar]emeeqkvpkwwwbpbyho[fxsxkmlskjyvniynt]yxdwuxqranfmwae +mpkajmbuiqyysjiqxg[gmhxmogelodamttt]aboupdcqcaggrmjwo[uqmzyshqeruzquxxez]agzfrbsajxlgzgfueb[dxxqiqrjkpgalcp]qcqyeyosztojwikdqo +cwzcxuvjuongdoellki[pqzhljdqxosuhdgqc]qqxxrckatnjwvmdjvty[qdlnrwhhbeldxrirock]kzsfmkvvjexhibpjfpv +xqxcttuxwhriomnnarc[hrkxvrjviqxxeih]ofnkwkzmwkwfbflu[bsjloysawmfoigzrsa]kjajcjknclhkjofvh[jtocrkwufebomaervq]hawuelpfzimwdnxens +axhzhgcgbqdeauomnjz[hbuvuiuidkykmvbd]yjddakntyygztrc[mgxbjwjbkzwnkybcgch]orbyhhpqxylsrzu[mygxsbzjoicfneimx]jddqvyyavgguqlqk +sstrdkfdyahmpmolvuh[nuhocbdkubnidqy]fnhfqdyorbtzefo +youjjtvznztbjozve[vcsiywlpdylxwpg]saiwvtogtdayorhni[bcbwjvcnlvrcqbeexf]cxmaphpnniedclqd[ilghtvdoebmgoykzmjc]gqxcmtfqougbpixu +jypsrripwfsirlizywh[qwqvrrfaltcifzgrzk]urwxtgxsivdxexc[hxqqrmnggugvdgdcle]sirkwolflgudrrwfvnr +jczbvdpvkmrklaxdh[iqwzvnjtjhmulvo]amkhoscjxrxkvtrlm[nlvnfnszosucrhvafm]dpkerwgcehqnmxmny[xabxqyrisiuhudad]egbjvaumucthookv +shephwsolmshfqhuslh[iqeoxejhscbjknjkgk]ytigxjcdexjgptz[mdcfmxfkyxnaaoixuv]ltysxdcxashhzrhfzcg[jrjzihjbmjzwwikgrj]zkrlixaauhydpmvpggc +hdwtqxvelsuakiujcgb[vrzoeqcoqwpdvdxrly]fieebtoboyeztrohbz[unoqhtonsyzptmpgo]bxsxkyquwwdwyhpxcan +wbxdrndbjpmgdewnt[hnmfgladivxjjrhgx]hhwhdeyhnhtngzasnm[eanqualmsluacqejow]wtycyvqujeitvrvtkhk[vfabcjjiloownkmsa]xqjgahkglpsjfcryzv +psxpjyoleoctcjgpwvw[qkiussudbvamcbw]hbauvxvnrwhyupg[jbuclksbbwmdnddkn]phqrldjcwlixcghiau +oeiqnisrrknnuqczk[qhtdnexhjbgdaplymaj]fqqywiecdftfcpfnkrd[lvlesddgirngtuo]mfvvfvlufkoqwpwl[hljsgiuexvjatvztcp]ixguvozijkebslzjaco +dktnilosvtkmvltdwd[vznigqxsgvlquhbquk]uinsbypzarhkgsgce +ljjdiiuiikwufjnnvjm[xjbujiikgaghrijcbsc]escofoimfyedoist[ltrrqmdcekykivhaz]xdiijidhpxdgqbtxue +lfwumqctskgwsfvhl[sgtnklskhazwypsys]bvjxbzrabgfrvyvyv[rlityjbenmcoigrfmfh]wczyjwqulaqxapozcnz[uqbunpfwhfrvgqcozw]ktvibesxhbrooqt +ammvknbggljpkwpr[vnrtrxiwcitskywiw]ubyickjafcfifgupssy[cbkzhebhjtdbsgct]cgefqdgpdpcjlzrz +wzpaqedqkmltsuij[jjuasmpwngjrynzettu]dtmgfvwtyxdfqce[usljscrncmnvrbb]tnevcveidnyskzs[ttmnmxqodycaikjio]qfhvrqvqpgjhkaaicj +apdywyijusgxzfj[sgbhrwbwywwisyg]ssiiosnfconncgiy +grownnednjxvuew[iniatygttcdaelocols]iyzwgdboxuadbrbooe[tojrecocburpdzi]oelyopkilwnsejur +hfdpohrtqqyfntpfk[trpnstnxymqupxjri]lheljryczqxgvqip +iielceqagqfksuqpzr[ollobpkbzanfxcjuhrz]jnxizyaoygzbzciu +njpftdmpmkjwcngeot[mocqjgcycgznvcqjv]aixpwfggjyqyemoz[fmklzletfvqdyvvg]mznoxpgwowvjjmus[prrehzdyfwwuxvhl]hqppujbqaizlzvv +vbjenrifdqsyzlwga[wmjenjnqufhqohvgc]uhrzouilmqjnjigwpa +vwooqueyzrusban[gjwcwiagfwpvrct]vfqlgxbhucjhvobi[bkbtechiapvschnh]vjzryzyisyzyzewdy +udumujkujngtkcfv[klinhdudyghspdsga]gxavvcsxqxvaziqrmsm[htseffbehxafyhoars]ghilivgeuuzjlmih[vtjpcrmvldjluqdazun]mebwzbxywmrfhet +cwkfdzyxoayxukcgdv[wamyytyfmfaucrko]dchdvtpdkeonmdqc +zklwcknfrvlblaamoo[ndrnobufquyjknl]dnxgeqvqwezfwky +zbqgtpvsqcteltrs[uwrmlyjkcidsfdpx]cgaobtbuuntwyuhxmjx +lbbyafbvhsilwmjivv[fkftqvaahnrokuhu]dvgaejsxgjuwiemu[yqopsyejqtvmlfxm]gzuulybydsrzhigldh +ficlcqjefsddeds[kfkmusacvnqualtppxh]drbsbqefpdoossbkyng[uvpyqnoidjnssjobt]gsheeufqtzrdsil[jbvevjzeugpmopo]nrgxwajuatycddzwr +xnhrhgadoziectoigmf[jwudbvxzwdfuubhjlt]lupnypmntyrvwqzlb[vvfvttkizuxshnhhw]lfdrjokdrbrcldjfs[wawjpqzozodmnmah]vdbjaoofkmhkjbphx +fsymutmdbqyguwut[qvxhywjtposhjgwuhxg]ftwhtxqxeicsrlfye +fglgkrjwulmkxbzolgn[vurpqcvuydmympiyofl]nbzudjasxeknjid +nbtrkgsywnudokk[vurfuvkjdvnsukh]vkmqsmcrotppqorkah +iqccpqvhiesnaohkhao[xykqfbmojjnscqhdv]aqlxkvudzlrncmpy +dtlwnznjqsixssrsaii[vkikcmtsepgtyqhica]ovcpoaucnwravbozsg +nobwzchgrycgkxc[tqoxhzxeorivdtdkde]ctdtkwzsvuxfgjtjg +zsknnbedctklyuxngn[jjzvkixpfmskcagh]fkvhsfuckghltyqk[hmygppkjpcdicxw]mnurqampwwoiiynr[jbkvqeqrhnksizlssff]xhkxiwlzgvjdfakjg +gqbxrvghncjdllxtge[bjuwjsvewzvrgcujf]tkrdrbempmwqujk[pmbtbgbrgzpxeoqsxw]nfvaaumgpjysgtvk +clfcvnwzcbfaqaj[prmpnpjwklodeukzznp]zukpytpqzgmlbvidv[qhfrkjlsbsqufgnet]pfhfcxzeiowmgiyksj +vogrpuzrevmatdbqqx[qolpybjnetsxcqfcvbc]ixxogojluwsdsldl[bztslfanuylwdld]xanhrzxetowrgift +dqrkbymiudzhkgf[spvsqvyntikovrefqc]bzltachhfylbrzl[znefllzixypjdkmfcxn]mtpikjxqsppxlal[oeyhdcnpxvhawqbmkzy]nxhshzdshsiercr +xmgedfiblpeazvgkss[cwbtqqjoaqbrgbptah]clzsinbtqsrkudymf +puwqcxmsuxnmneuzrhj[dbljkganxzmjvtxgr]ekmomoccimbpbieaf[khezmkkqdwkouzb]cpkfuyzfdfxhhhuhk +thfdbnkmqrektilpc[weshzvpsyofygysio]bffomelkkwvfsdxa[owhidyrjieeietzn]kmeqgnvyclngrcgquc[ieikyuuoliuiczq]nnqhogvlhwqipvpiao +zsdcvcbtwlzlzlmteky[nrqtpxoefofrjeaf]myjmnezlzkfcpmik +afyxnybelqewnebaai[ddjgeajpzswwdrg]qfwfqryofesysiuznz[ouajwvymsxmxzvgdx]ryuvawdhfmfvikye[kuovduidpcdyepuoq]didoelcmjebmytdyke +oopihddimztsopfcia[udmncuvhkvvbcmxzey]fpehwxjiczzhqcxxi[onmizmkoyhadrxpsemf]htycdbotvmomguwbttt[gjsdzuveiuvudbyakzw]ramxommwjmpkihl +bwlccfsaovlozdqpsv[dniiqfcldfhjiex]cdzbfrecwehrluxzprd[xpyzvlqwekcyglksq]dncoqoaakpgnbagf +uxoopzavjdqdkaz[exsbnpbaeuvusypih]qgojfhbprpoavcbxysa +mailxensjcsuodzpd[ftitdguigzeundytyp]fgoitzvujhkjynr[hnpcvussglqshxn]debsveizfcuroqrm[yeageekyjhilfwr]ozgpzusfpbyanxnzuak +vxjnjaguqlrwoxlhfbq[zlqpitkigwihrikvr]dysutdfrbljdzjgcw[eslbaxzslwoxscpgoy]sudodfmlfyuczzf[vsthktidtghtmazbip]jfyoxxiaowptvosevi +lgxmivlggzfdpductjg[qxgoioxsurcwayndy]uwlgoodqsjoxsjqqln +qognhfgzowjikeqz[nkwezojneylzwfdm]omduvysmcovvpvse[bwxvkzoqsykfils]jwgfmwxajhmggos +pvuwgxmpcrqknzpbkg[qbpmfthtmbkmljnsqs]zmplrxnulurhzvijupv[tgsommhtbbujbjpf]qaxqxdxmpqwduwwxpgg +lzlrgghqmetsmcxd[fjffxsqjqctkxnw]zlzlpvksrpnatxmh +ayirfkbsdyssjjpqmi[vpkvhbtreetyxstwcqp]rjbuxsgsrlqrdnpyg +ukqefgljywjmlce[nqjcndjjdwohtizoed]njfgjjqkdenohbwqm +kdwzhrslryuexdgbcr[hmbcvmrrmbsvyaii]bqprdkrgdlwjvoiyb[mqbaokwptkfmxzqr]wcauinrezkhduhcktrd +hbtuzqvyldtvwgyumzw[dibedlwdcjyfngungt]towfeyxyxixyxee[libuilcfsdkejjl]wzzxfhwcgawuhskreyh +oxjkoqahhqqcxcoxksg[bouywtiajyfmanxcx]xgqpjxtkaejvmqckkuf +prhqbaccndsoscdm[cuayhbnfywztddbvww]psgyhytgosopvbbp +dxdtcskiowtdomepjp[islofsowtuyqvcqwb]pjhyaudkqxxlwfoo +vdatepedgnvgpah[jbooucwxtveomnpmyx]ixgsuidbemgmahtlt +oncdjplunkvqphbyb[uvivlundxhdiwjncfq]dvhypguriulrangqwr +vipebvitwbccsnahjhu[kpwtbwddwqgyhnkjsv]acfaqhywmwbkmgh[nryplosnxtbkpwxtkfp]njzhnytzwlprvfcv +csvlzvkinldedsxt[dbxoceaaismltmspg]yomriudrxzmlbbbm[qilkpyxcxlvtfzqmw]rhwekeawwpyngqxzc[akqljrphobjicoco]utlunpkuptawrtfcccv +acfepkrkhnviixe[cvksybusnhacmfoy]tmqqmgfdharutrqvdpm +hjehtfbextjkaxilhaw[qvavsivlumfavaafhqz]ahdjvprlhlmuneewyxi[rzeuqtjkiuacirxsw]ucmfkrotfprypzuyqe[rutydtgtkppegdgjn]hmvzjyquxtydoujq +ntosjqtunrqfoboek[aogjyqyzxpdgopkpbx]sdvftoxtcjefotm[jivgsxjogxklwkhm]cahcjmgzepqebtn +omkznbrlrodmtmnhwsu[ysoinknpnzrjqkf]ybiqtlzoiohtldgoaud[fbzfiajeahzmiplcih]qimubctnnrmtwro +drdygweayxraomiblsc[oglpuxzweqpofwi]mbipxabkjqcdscltkh[axbvkumlaforzbqy]ircpsgstqyzpwnv +jefmuplsptisjqguywe[lkgtuysseapteszy]wzcehypttzjhjfp[nkwvzebjrydcwfkqne]tnmaxtrhvwvdnrhpxne +elfqfvbjutssktxpdo[paguttthfghhyktkjjy]wkpqdurcibsvviqfqpu +suzpbjqdiebctwhb[gwnbzgajwrorqcx]qoqdgemwbkdpsqgjds[qgozargzosdgbgo]hbsmqrwnlqsdans[vhppwpwwamtuurulc]ylczevsobuxtdhvyg +qfixarbnawmgjcga[dhgdmxcpwpvycmwl]mkqfghairqabhmokxk +srjvnnbutjaeikkbsd[flieajbdmghmuzp]ieimmehrnixqjynp[rjxiepmrhwrmrpi]yfrfmlgakaehvqm[hucfgczbwdpxxuhk]bvgmehildjqbjdu +qcmjtgmmgybxhde[fvpxdzdmzkhxdzjfkf]qfnaclxnryinmvpgr[pcsmctnmmrpxtfgi]oszbhmhynpzqvtxso[qhpljywydqpnksmwzdi]yqwxnvgcwsdwuluiouo +vhvuumgtzbrbgazpo[epktoekzvomswsqq]bbkntocwjpaxaoc[rnlzbqxqcuyltjxepz]iaelcpyexpoqavcbepy[azyksbvkvgmgimw]kvknvptkveiacqnzll +pkkcmeinlwpoupwpu[qtoyfabmibfrubvepwx]atgpzcehuidgikzn +srwntduyxjkpivzkgvl[hmenzrmnnisxgodof]lpuawirahbvibfki[gazzozitxhvxixvc]knbuydfpbjzupju[emzrzykcaeukvec]grtwlnuzmqivnvknug +vzlbpuiceftddittp[srespcesbfprkwuku]bslyxxcynfqywwu +icolypvmrgrhuvj[fgpeakrskxaljnakz]bqxravyjmdodsvhf[cjyehkcrdetiknsttv]dhoghrdxmmzxbjtbql +nowswrulawbgqkmcee[qsktncayiihoxiu]wtsjxnvcxdriviyn[tebqonpavhbfnwxvjc]tvpwgpgrozhtqtiy[lhagntjbctcsdejajh]aedpfftlvvtmaqneaxd +phiopnkoxulhkaddkxv[ueqfevwkcjwpcmsfspz]zkcoexersqysbtqdpc[nmcsonrswjxvdtuk]xdrsvfxrrdrfdbny +aosrkxvljnapvnux[ldzgwtxmjbynmlp]yrxxllppgosniqv[prtvqenfqapocxdrlst]gypcighnnppaytp[azueqhhtymzpujx]lsgvwvvgctkiyvlc +rketxmupdbmrircajep[xfmnkumekemjnwki]zurvxfxnrrvkmkrhbxh[lsrwyjtfjairiuwbaw]dyvmozkzkcvmunw +crxtvtdwdxejpebbv[xthcfmihpjqbhrvqfkd]hztqefpqdtgyhfzqsi[nlaeacaqscestvv]ylbteskdlwjfwru[morvntwyebnmswguff]othonakykxxajuj +zclhqcnlmxsurcrqaty[stohpulyrzcbabnydyp]veajkekzuxjmecdzym[ysujzinvkawzoqi]hfkcorxooelnfididyu +oejzfesyaxeittrdh[yziovimnkfkadiplm]arzmtikoiveyvlsdkwd +wvdwkqqmnretidj[smwnemzwzqhclpkud]yzguktkwahnuabs[bbyhgwmhhbpbwij]qstxwyfjjagyqvdaexg[nkerjbdjlikfgdv]qortpkyhpqvvebjdzw +apdkznwjfxwdrsm[fddlqepbyrbrfgmyeiy]fvymcxblcjkcvpcyup[szsfswjdzmcabwuz]hmutpmhknvwrlwbvs[vpfcztrelzjnqzq]gqbpttcrakuedsp +sujqaghlxszzfxf[jqybozaufdtanwa]rthiqanlennnowvdkm[elvfekcowitcout]ntjaqinnbwtqsctwrz[axpnqwfjmkocafoeadn]aplpjbnhkrcrbebmo +hzkbvadkdojwmdmdxq[ohmqkaainyaufipcso]zojzxelggufdascjz[zlxncckagxntpzqa]kindyikavjkmhopcnek +yjcsnegfsmmnfce[ueladqjdaqflfas]wcifctlledgnvodtlzw[zqswolvsfhpyrcivk]vemkuyjebqxyahb[ydjhmgjxmruwwmq]cufuqsyyytlgbpwrj +jkkrynqxqlgxukyfv[fugivxklerausdl]shcuiixkbmzymoxv[thtakgbdzvjsjsera]lmpwzqhthoottxvp +ncmijtczixmeyfuhspt[ixlxgrsyxrebpupt]sdoinvpfizdezpc[xckbxvncmseucrzjo]rzxfgqlionzaeocj +xmqnycsovydhyaqiv[iuvymmaguzbrtgs]zhvxodssnpnhajwzy +rqqzaaswdepcnnmqfif[pzkyyjprisjybnnjcq]kqpjhykszghcripq[vgdhuqujrkqljuc]qhtxqkqygazsvuh +qynvobsdeutfrvb[fddgwzhlhryauxzb]etznfbueibykerqfugr[rviezfaehsvigssm]nwhvctxhqvfdmgqe +ihonnjncwrkvglabk[pnjachlnpyonivmjtc]uoxellmcbixrdsisuhb[nkwsdmhisjdqurn]bowvauofupqfmxf[liiytxrcuwwnimdurys]acluoarkxopwppv +ipqsfckjkqxkxyuvxje[arswyomsnfueuwmcbev]mmlwwcviicdmllylq[jnqpolrlwmmccsd]nfobgtdlxveuuldt[uebjwwikiebtttgqss]ikdxnjdmzbrpqqvw +zhjywcsrtcadzdrby[ynasiklerbnlgidest]xhzwkwypktpkqgfyh[fuuxtaekwjpobdjfvdh]jcsrxmtbrqkerkrc +osahjtbzrqukvphpe[guutbgosbfkaurvuf]baiwluaouikebnlgf[cgssqcbscupvvadpbt]lxwmvxorsfcaorccxp[jcqzcrfdkncuoqj]gbgdolqdrauivfnsyti +vvqcdtcodesyomh[efjjzleahiejvczmsd]naeosnsaltqgjrk +yucpovujdwslgdczxzo[fbnfueoeatnphvv]gwegeafilsbwgor +thfmmzylspbxupt[asfhmdmkqwnqppnmu]awoxkgkgtrkdjzz +ghbifboivgelqxkfeo[gtpozhzqfntyyoodc]yjqcvpimanwiunamfh[aglylsuuakjkmqx]edfukuqcchtbhtblcf +qzonwqxjkpwqier[qmrnrkkwruteiijirkf]xhnrnahamaegfla[fzshmzjiczdyzqhwx]acjlrknukkbewao[afpeaepzoljqxcwvs]dlvdxhsoljmqgmvzf +mzibkpddgkilmcwcshm[sgpxutpcqniuckl]kqiwkwdgydpnjcj[exyhorurvawneziiy]njznkaphsmgisqyujms +xgzabblockmothpuxc[mhiwwhtpmtbxowbnp]aucpfqmnquiggenklcx +rnhfshqrlxczmrcz[agxxpteadztvdfeo]zogmjfpebldprrmqg[zppblhkevlkqlyie]mgovaojjsutbwtpzsm +kjgtqizmvuqerhb[dmhtzazyzqwjhpn]knmrbytrwrcsonmshb[oiazannnreojooa]hkhackgpdqgyqsgnb +orhnenfhsjyibqacq[tznvydkguvcwayiwmi]hejujxsitqcaabjwskl[qhpfmxgjdfgtgmy]ahilwlhjkfytezctsj[ewxepeeisacexgtc]paxwwhhpaukgjnafuwl +mhmfziehhppfqoocvju[hmfnlywpplffsxwzg]bkhkauhasnuoglve[oytxewvmknoqchvy]fyodxbpsytyeltnfsl[wojcbkfsswlcuqcz]izcrkyxzjclhkfuv +slabudcjhktddar[cvkvaakjffjjovgus]ahgxzdctihvboiarn +degyynefmxidnbw[zcfgkvupltxmbhroi]dbnaezqekcegyki[tjrnhpsmfftiscppybi]qgyifwlhvccshdiqfx +sxszfjmiathxoqnxg[smizlxpwmelqjlf]etoglecoddmflqma[hsggyxsxkhhshucgtnw]oqzadjxenphyexaqrb +kqwjndajvawmwxs[fskyhhktkilzwjtkt]ufpvkdnhygmuzfsfiso +iqdscwzpnnwehtqmwrd[fqbmsfrezrkhqcw]gqkpkiqhtrjpusoefg +bhwbuaqjofxcbuxrqub[aaanhuielrhxhlzscv]fkgimzkootysfzwcan[svktoznaqxkkibhigju]fmqhtjgxbrovymq +pjybsukpzvvyouum[rzeunjnideaseer]ltquzytuezonpowuhdn[wzwlbeegsgtwpzo]hqivrviswwfsdmpgnz[fhabjemewetsjrjhy]lgbwcozirgljoudhng +ampiucjqxwrzbdtcjnr[ufubjvykdfixyzqq]mcxabdvjzhohlcmcu[xihctxapmjpmrev]mggwuizzzxymhypmcw +pprbxhbjbnlqecvmu[ewuffgnuylwmrcvkbku]bntyrptthpmexiakh[lswyqkuxrfzokacp]rvkhcgbfnjivaagp[mnpbbcgrakjlmdqt]bujykhlbutiiqyke +xtcidzkptvkjakxl[kwjzzydtkvjmqdz]httbqtbiyxwryblrfd[cyjwthdmalqkqvso]knfncfebbbueoqze[zuruluaalfysbnmf]vodfiptptwqpnllvbdf +wtjthnkscjzzqrbpc[eirytrqekucxajz]ghycghnyntrthzkechc[eiylrukgxsqpetjfnv]xuiymnuzydlawjygi +rjrldatkdhvzvgcux[iuhectextisybzvz]vycerefkzhnmdyg +lqftkkvpvepilrmyty[uptcsbeqtmcljaziisb]himkwiqkrogoyhjpru[wxocqzrdgaclbeefd]mtytxwskqznxgpfex[whqbcssppfhqedhv]cbtiuzgbvptcticlbcg +pbotpqbiqdjzsmpbki[zqcshqinikcszjm]xjxijypculvuoavvg[nltkubwokrppvzifi]dmedgmkonytjzzk[obonilwwerhchueuf]mlfqiwmaicuecljj +exlndpqjplyfdbmvlji[fzzvnaszvmpwpdcovj]ymothxghgfddmzqtglj[wyfqyqwrhanponsr]ydpntagauckmdqpjb[icumanaybbefssdjnqz]owhsbdpufodsqezginf +ukfirftsouqdsgbgmht[nrkpwksebkijlha]zfkumnifusjysuzt +uyzxwkcgjfsekdhktx[qhgrmuyjmfmunghm]mgjbupndudwultdnnt[oczntpgnyanxxgdqx]oryrlqkmroilyca[xbevednhpnvzzwmrorm]bdozfrabvamfxae +toqvrteazudmppbrxct[cyiebroauwofshvceeo]fhoxdufwnvmlwhhp[xykvdatsfccxlfmn]zpqqflqttorrmjs +ltkcveeqyawjrryerqa[zxoihtpkswzjrhnbvz]cfpirvnjowhsnnbehd +gdiyzvnydjwhfzrimq[lvieihnyxtdrgrbs]kpotvolpjgjtfiqf[koloumkhoyktylql]cxgmdumzkygpppqe[aywuzxkrvrevgnnihh]uplcpitzxbcqkmfgsy +tskqojnfadpujfxym[xomwfoclpvyejczgyy]lkmawlhwgnpccotaetj[fvhbgpqqvasfykn]xfxmjfyoygcsbxl[ldveqjhkzxczzgxhbxh]tfpibohzhgrythjgqor +xkduagbswofivadpo[mxlqngyjwbqfsszj]xoxngqbxwsttknmtcyk +zvmlodxbacmwvdti[itdxiimzuvluomfxq]ymrkoyojdnsjqvl[dihqibcaznldgoteyx]thrrpohvatzogxrz +soetmauqgsswblf[hlkchnarzzrgjawosj]zsghpkoexwcujpakaou[wvfxggiskbpgntosh]zbohdymojoxhndfr[qhyzatgvedhoibktw]iggjhmravyoswvu +mwjmmmeiclpjmvishbx[dbmbrjcjcmbnqxq]mvhzexhgdmmnduc[yiccjcrvmzjvygs]uyvqfjmiyccasgzlz +dsfwjqahjoozkpei[olrrkslvxvijsyopa]jmzojmvqtzvkhaxukkv +kudhszsgsrenjqcrbp[ipvxqnbradyxoline]srcnihnhywqlietbgqv +eklfpuufieqqdfrgouk[ycxgdyairggpehtkim]sdfhxncpiqxguzlqw[ysjhhepmruqaegxp]wklvpveoxxfyizmf +apdypwjfmxhjgojtb[zojzoufhucunvjr]zjpuqiciaujfbjta[wlusnbuvcffrnac]ecaccicpvcmbomsvf +wenmnejyihmxaxdqwqw[rckytszqrgaxmjpbqh]pngxudjgdtbshebyv +ieyarudhbjrrevfodgm[grmjubbiqdodhae]mhzexlzijmzpltsxjfa +byfyxjxqlcpjxbpd[pdqkhutluqjoelb]pberlwpeqxmovie[zkholwknvgbfxcyymye]askmwovcktpqhcg +ccjcygsnanyvdss[frpxggwvfjuugdysypg]tuqczwtmobkusalqusm[ignjrlsysasfmzasa]nfpomrlygzjyylhvypi[lahpgasntfymdoub]rlvsrtudkvhtwhycf +omuyrkrubieiduzegr[gcigoszvylmdrlrc]jtlrlsgqxiqtciehh +hqeghunlieoqhetnh[unjtmdurovonejpsjtq]xtatdniykzzxpufps[ysaytzqvcxkvimhql]tyfkttaoythcttexrp +ciyuspkrywyyplmlro[myfyzvlzntivldrquq]eighmudngyiwlsme[eukgbrmtghntxpacth]pmvxbxswfexsnkxmm +gdbeqewbrhyfbfpeti[yvyiclmkwzelbqi]sktocytuvyvpcia +gnfkqxrtauwnkhfoyc[msfhopavdyhpvpttg]ewuyaxehxbyziwmxd[iyqrfiudsalpmpk]smpmubdejyevdggead +rqvcsivlxhfyboxj[flvvsnglektzosreb]yrfdzdgvkzgrxqoyv[rygmqeiccgtqqmni]frypfnzvhkzvlabrr +idyqowifirnwhkk[vloivxhtkdzjrbuuzmi]beozwodgehayklyr[cptxwcsgsapmprrp]hfrdeefhyehwwvghgdq[prcadfsulvamytpsfo]tyodjlxziwyqtqmi +tdwoqxlhhaqkdmv[cxayaazioswycmwj]pkenayaygxyrtqrqugi +vtqeqlrohgalpwrqig[bewbjgeryrvhzwetm]hpccsjcgunkysntpwp[yefsyqedopuhssgo]jjkkuwoyvhzzcmdlvv[uqczrglqumshdhkdkut]dlfilxdlomkvtjhv +fezgzsmmxdvhtmy[rrmbxexyopsrhxag]ezltorfyxclstzhp +ytcnqprainktcjei[phwarjaicrgistkt]qdtijjhbywixrie[llwwjrzrxhaqhie]ufaezqgmmdhhzjzrza +uyvaorvuqwbbexmafbj[tnpwadyyakeawtdextg]tiqechjccyyczpvbf[vaqfvvcbrowtjxyu]oqswjgtolyixytoj[ismczyxhizrzbbpscus]rtlaqgqrcxpjgmih +jzamkswiztvnelaqnqb[iptcqxmvbgyaeiwob]xnhehagwcwdgsvpomgt[jsasqvgectyfdja]dgjdtjlzbkyyckvy[fobafodakfhhiem]thozlpiakivgzzvemu +owfgxupnufaiuovcesw[jeskiymcmexnjbxrbp]obganlgvlqdczqrvwad +chsvqakwmnabitpotyv[eqeyowfftbjxdkpyf]cflqouimlafrxuqvh[vgjbvqafqyzexrzhr]mnywvcxtgsaifufkcu[rtjuztroxgmpkbnim]xsqyofncdrvdpin +kufzqdykjclolpveo[fopvuhisayecxlainzx]wvrhymidhtoldhb[vylhmdjqsdhokif]megnkxywjthliwepc +cqjpttuijfdzott[wubeiefulpuuhweqv]cqxbaudhnmrvrigogf +hkzaqueemmhessqjq[xofafbaefryhwyzzuoc]yyzaekuutvjrwnhonpk +zsgyhvutvjmrgnmar[kbxkhssdsmefafntsr]ocjxtkpqmugcvkopvsu[dsdwezhcblqssurfmlx]veiioiyfnncyfrdwyv +nsqgaufitxefakffd[brdfctppxqczvlohw]ntxmfmrsajxuqmo[pbalhistyzwnbfs]inapnupdvnwtlvvu +krtwywfktmbdobnq[msnsspogynsnwdb]efcftgrjdyygncnqdks +rrasplhwovftrffuw[txyylwsjezcxalx]voncsevbgofoiiolvk[axcouuspjtfzsekglc]qoutiffuqnorbpnlp +etyvjsjqwelcdzpnjxm[eetihszvjrmccshr]uskafocfyjorzhdx +rqfzvsuredndurz[ebgtddsixmgsugd]ilczpjzsukpyekhobu[eeciaduigoflustith]ohmscfdomzprzjncno +jjjarldpnxgwvlxve[yjoqlmnvtslexafgvbd]yngfttqfsebrcwtctf[bwevtymxqlrpqqaage]wdcaqtgkvmzesrjex[svnkfzogwcsyfxoxh]hvrsvxcpdxqmlfhb +ldwuplbjkimdskui[flisuphwbiqphsddaxk]eelzsgjnvecwedneyb +busmmdpbgxvdiytw[kwlhqlohknjgwfh]xgmkafonkyzffqtj +ngtpdikbtooilycy[dwpneelecozfzwwseg]kwkwssbtktxenqbnyfs[lekbaoqzpvjbnuvq]vhlbuorxxxxztocuiq[rscjyzvyznunxnun]jhipkmizwfpoxeuktk +leghszcprzadwpwlakv[cauvyhahnjycqgmslqr]pisyfnajcsrgnvkhcmj[ozrbuuodecumxzbsr]gtqbofuoteafyjk[sodglraziyxhcpm]lbzccqgejtsczvj +aiqnofheehbiqxqlg[wojpqldgrsrkqqpywb]dyxygexggvertuktz[iolnpmkijfefcsebi]okwjyjatnoyvlhe[zbfipzfoszigysxpwu]jitbvwjmknigdnlt +tvxhyndcnfrobfrdvo[vwbjbbozwjpolbmlkwd]kzsgbhkshipoxtfp[sylshvahmztsbngdl]emwcmnpjzydlvvknrhn[aarrocnhsmnzqgozo]uswudvvjntlhqjc +adbrrsdjlpyizfgvuc[qoimvkfjruwpheezeuk]gyjjepfgjpnyajypq +xgkzhzjlkwacqnihyns[bmprkvdabnasxzqzwg]hxwyywhnuntidvpg[mvqpemdfnvvdlpul]ttqocuncdebtomizabo +zztkzvwguaggryld[fgkabjmksknxlfhzpc]iysntrtaaweknzbxemc +ocwsupvhvpcgwehx[vnmhfmgubwbhhrmkp]hqpkkwxwwefzojltpph[bvsvcgwsztazzzjoxi]iasiueagvwjgmcugh +tkxywinosybkrutpu[eluxrinxkarduffy]brxgvdsoguiggjfemb[paaawmhcmdxneql]qtvmkmlldspsheyac +vzcnrbtoegbsuglk[rqhhdwpschucsvlnq]hzjzijxkcoxpwhi[glryptoeiosdosoj]fhduvpzlbptbehtt[yigihwrodvsulsrsh]numkgigkznkushjc +oexrobvxlwbqkrigz[nnbfhaheuublajo]pvlstoxdjdlbroezlbj[ykvlcsvqstxycpp]rxxgokhffgyioltc +cstzrhymnqxwtwpnvh[dzbyzhzvaooswlkdrof]dzxgsohzaxvkiwho +hftmeaqbiiefqtwklr[bmqfhgvsfrywauxq]brzoeoncrvljpjqxpjd +vbnuypzeryxltunvcb[ldnuxdvgfcbbysibhop]ejgwhaxwgnnbfide[okhykghpvystpufnxqr]umdmoixuvfqgecr[rkwsaizjzxjgmmftw]czzteyolfgwkrnkxid +nvflxkucsnbsltnp[iqhnmiyolnoxjzjzjvl]ctdsnjzjaflstsy +glmwwqvembkbsnvs[skbkkvnoycklltrnyrd]irlewhaeagdiojbr +gmzbjlrhyoqkiyrb[nezqwphjfpghjubnw]lflopkhihhamygznxv[zuecanynqmvceqxyy]kddyqjerkeuhuamjxcu +kwneigdpqhtznqaide[ncindqlugpdagtfzf]ctutcducslvhztsii +vhjlncnrshwikfm[amlxjsoevzrlkgoxnml]lztearcwiosrcmhfi[gkdbcfroyrgwylu]mwhzhimfdrflqqihaq +wlswesjcluvzurgrnul[iehnkjghqwvennpj]znqbjbnszpnklctx[pkxxihelrhfkiqizi]dlmwkrxyjxaumvtlbc[icgjedlkxpjwmauu]cpbstqjtdebbywkf +yxjwddyrzrzhqrarheo[dcayrrmkvazrzzlpqh]gkvbwuimfochtndis +cmqdgywvwqpfkixkga[zkcmkmqoxmpzued]iaerrfcfhcaidkkvwvm +uhwbwhbgkrzntdxrw[pchhzpiwclaasygyqn]oalmglktkidoijgyg[yugfmrxigwwqldfsfb]otdsjvxzdlsdhnyk +ctjuabhainyjydm[axxsgakjkreoeifx]qaphofrkpiflusbeecj +hdfthabpjjuxgoh[zskhkbvmwkfmqct]vmqfixzmyefzvza +wnihepbftegtdrtndsc[wtmfxwvxzxorhbj]oqlfpicrqpjgvmo[zyvhvkalgcwwjucnxq]ppatiiiatwbpyiwjr +ojaqpoarskgzmtrj[blfchukdercwzqa]anfsoaopkutqfqltry +ofijvkbfofbyadh[xmlicvxwtnufzpn]jetnmprdolywrbmjes +fosypykuipsqxaud[tbfwtcrdgvidqsg]tvmvfhrepppxxwme[qpmrvterftfxchiv]flnooydpykdzrtfck[omhwxcdomygkbaeqrfg]cwztbmysqwpqfuig +lvojllusjibvayrr[izfttqfhjethscsrghs]egzyjonmwdatznvzjw[mfxjaelqslyvkaqir]ckbkobhykxhocczot[oezwabicsuchjia]ivolkjcvilnlsdnk +acytktosnzjatmwue[medgjpfpvbiqgld]rjsbxcwqhrrklyfuu[xclxdxjcgjwkervy]mspnrnsznpccgcke[ptntxmnzdrorgoexbsg]bovvgignwezlpgoy +wdefvabtqsgstwhdxm[otahaybdinlnszsaan]xgjagsgrnziuqxjasw +cqkpuofhsousjfnlfxu[syvkhshtiyisqmrdp]vtvtzgdxigpsxcpdkt +qwagfdeyxorxoaphzt[kijseqropygskgre]tnpsgfihigocogn +nvppsgsgegzthtmpt[dsjjswqmzkoqtihud]toeoabpfknrnwqxk[hgyvhoktbvmdvwauue]pniilifxxtotvypye +noijjdbzbeowhtut[tlfprbqoqtftqnjjs]fwqyyfzzbzjeykhoje +rewfvmohscszlog[dwgnxketzlgefgf]fmvoxbzpxywaicq +pvtakzfeeithcogo[mbktbqqelkzddsmn]nuydimwmhdyhrls +qfzdrtjoipdlwkd[fsymmkclzvcdvqexr]yrhwcyjdzgwhmuijhth[zgturekjlobpmcje]eywzpwpfahsrwpwl[bgyprfkbmyaixrqj]fvhhmcltucokvqba +vbpnikyhvhqnemdo[lnyocyrozyteoxalil]phhqtzpbgpzrusr[yygaktzkmithtegl]cskivnspoecsaoi +obaxlisumjgehbkpea[ehzysfspgzssttpebuy]vwceybunjzvlqevd +fpanvbmzhlkcazo[wfnkxffkzmxnslov]gtifhhnlnnxkeaolr[pwkmfvowikzjctrje]anfzfrtlihlyutaq[vbujdswyelmwoudg]lckbqqgkglpkfnhu +ubsustsojocdyjv[obkxihfxtkbaeusurk]zmlqtgokothiokq +fpgjwchgmuuwpzquwf[xtluejeypvgynbsdgip]nyztcugwqufjpakuxkb[yanyavbmpeqlalnk]tknqteuqrnnorhcm[eshuljurljirasr]supqastijujykowxxhz +solyplfhwchyjtchjuk[wuwirpjuevkxulrs]axqqiqzteislutclbzo +oktlpryceitvhqqjqxq[ufupbpapoxovifhqp]xgrwutvfooowfaxs[yxoxzdoqyhxsiwcxrgm]swmalhlzrknfxgnamr +kmmguldgktbolgarsp[lxrqjtqbuhuthezfcfm]nhyafiyealodqrmagqq +jfowosecwpywmrwka[rlvhxlrwehljixaggho]tadphuxhvtyxkgvyru[kdwmctblkvpkral]ufydjpceosbxpcy[qkiwffygsjragvq]zlvqihgbbhdojkgjgj +fjnehklshlckrcdhxk[umipduxaengqrizo]obuxhxbrybwifedma +dzeftgulomkuwyrrm[aphjorxpuphqsqmp]nnslfcfiblaexsbftwi +eypbooqqyvqucqvyys[rcijvtatnyzpafpqhwi]jrpwrlhuiihzfwt +zikyfwsyxwrtrgdkjh[netvaemiverwhfctosi]xwdoncumksuzsryj +jxtpnxhjudmsotudd[lgvfscyjpngmela]wumifhvbwbmmticp[dvxmvcccimvvcrvpist]czyqdmwoqjgnfvjuxul +fvmjytywcfdqfmfvj[nhufehmupvzkcrtewz]hyxlzunwnjccnnphrsg[hrfqmrewnweuyulb]hmqxiwaqfebkvxhv +peqyzkuviznbwojhtys[svfilvdawzpmtygynd]fpfggygzketpcrrqx +ttcupspyysrbukznk[rpewzuewspsqthbqb]yszbsclsnmbgoazsfl +vwoufilgfhpaqfxt[dmlwugzgaywwzqb]rkwtuggupfsffridmux +faibpioziimdefafugx[unrfywlgqlxqmwtxrb]owzarstubtqbwwjlh +mvgbokjnhpcnsgcpm[vznublzcbsgzahkjprq]qdhqdlpftbetdzckvs +dgpkamepjkfizyaknmw[ctdimkbvwctjqcbl]euwsfdqpvfkrxuwr +rjcdwjzbrqqqqljqj[vsrppwgvlsokgpn]rxpddxouefplfnctudb +lhbnntitpjdtprbd[cctbkujpuoegzrijpus]xbkzdntmvzbzfxljvt[brlovkywclhnnoyrz]rhixzndklgudnxkr +byahaivirlqxulwdoe[otyasqivnfuwxmpn]vzsqfapigdecsmaqd +myozxxksdnucpxq[jgpjjngigboxsoy]tidzlszxsdbqxba[lctczcenpuntfjnf]hzdlcamkehorgpz +uoylyvyljpnzqimzgh[umieqlmcsmhnnxle]zvxwqjbaemhtoexyzr[gjyxtenkxacukadvhfh]kwagkgvaqklyfurjnar +rqzfgsolwpyfzeg[fqbhyjayacblhmm]egufazwxlncxundcyyw +eexntdgtjwjtizhlc[havetzocjnmfnpgzl]rmeusmuumcpbzodie[efuqzkuscnrbxwef]ehxrajahcfdggjyq +ozakiysvzkycefw[dcjsobqhxqyxnvwz]yuoszalpobgzxqk +pterhsdeyetokcbtzn[cdooadgsexdxfzjmo]xdxrkcynckoeirmjnlj[matsfmymdliwcqlqf]llnuahmiztvbbpise[egvzoittbupbbqrvd]bantcrmtkbvvbxi +tqpfhtrunndzpsd[zjzqvvckxscqzavcig]zquncdjejdyzegvcm[sxxdynlbdymictrfspg]smgkjimutkedknlppsa +byjykuzyigqofolpgf[cybrboapdfgimjwjm]oczicilrowczdlcy[tyaduotkhfvyatb]iklhgcjvfdyypdrdbz[dqkfqaadlcnxfofsvw]syuiaqaemufewlijxk +flbmovywhikcuedd[xyzunixgypmuhyj]loihlyylswpxtenh[jadvlnlzdpmoghiir]xbiwlfkwxtthlimngnl[vgtvhphgxfsshkgkb]vttcixaajhdcjnqx +xxxluypjxxutqoozzn[gufawigbmnhtmwhcgry]yaldvqcedheoocj +seczijwqqpigqcchnz[snihttcoqeotvsvxtsh]zzgbjkslldiespjeejy[dxpgxigvppgnnddyd]hcwgvtogqdyllyhkqj[hbkamssyyusrgbg]dnnseuhlwkwnycktlu +xeupsswdnrpzqvl[tmaszjcshsavymzuog]svjeaxmdkgbimlv +dktkcbqwdeomyrp[fqaiihosklfctvufhw]kscgwrylrgbrxjzogj[hqvwmstcpchcqkowtxp]xfooorpnwwfrqstxft[zclwozroattjxczqx]uwnclgxymympirm +yohglmwqjxpcgozvfc[ojnlrvpzwcwgnfbvf]uwjufnumsvqwxpg[wrfczzmahjdxdzhifs]psipfjeacaysvubcqqb[paeelhpmpjlvbal]buinqeedxmiijkxpcpk +ficdlwimcpzelkxcb[kyizgumxqprpckyyh]lcwwypjwqbzhtozovh +bycnifysnrtdseez[xombfbujijpsrccccl]tbvuubyduxnascxjkds[gteskflapsthkzigcet]otggllmgcgfgqloehf +wvrrowjovflnwpjhhrj[dqfmznuqmmttqtdqnp]wevjmhhfmorcrvxvw[cnjtxcdcketvdidcbu]icghhdkudxptbdcdhik +wquydkoyevtyfwqyimg[bhbhiqnxwfrcvqcsdq]hvcjbihyziwvmqr[phnejggzeulkkbdxb]uzpvcrhqhfkdkwvxcku[piqegxvplepyfjff]xqgfyfmlqqgcsnngmli +aiufvoznehafclsi[ynuiezokzxlhzsnlnmw]buhvbbmikiczqjlfhg[qfqcudscoobzjdwfyu]dcqxfcrpnhywlcabobo[piypuleecpciydz]xiendyljklimrwaexac +bmcenbqijebgornj[kskdxdmdlojqtjtw]kqpwfyitjbkfubsh +wjivpitbdiigvkhfpjf[ijhxqgwkoctfiyf]ezeuczihdpeegpnppj[rdcsrurelstudtzqv]afvyxjglfxybwff +rypyyznanxetdychyd[srdvpypvsmzquaeec]qzehxnsvvccjqbjres +disgynuubaeuiwg[qhmjwkqbmmjhjze]zgunyyctwtucdho[xljnbisahxahllyiob]astxdjwqultlphiijvh[zmhdobafwbzdndlrm]hwcwvfxwjynbaxidj +cdhvflnylxmmlsgo[oollmpblrqislxgmvvp]nivfytkylfpufcdxun[bocnmaazerwhgtzt]txxystvwvrsyoym[iafzkvskmhqjdtk]pgdgojbemypqbkofwf +sjtahdwpdhuosbqyss[lopwkbhedbpxtcw]bvtrmrjxtncfnrw +tdofrfbhpawcjokb[ynloiqgijuwanfekxsz]fdpwynqofzqumlrelfr[orxakqzzdjfnzlgywae]udzboibfngqztfguv +huwdaehvnyhbowsp[kbskeavlxslbvco]sekeunfcfnrsjqgqpcd[xrfzxupwqfrobegw]ndphbckizbunwqmykse[qyoqnkrhdydzuir]romctjjzwxjbxyqm +eyutpqnxiqygxwt[wxsiplbaidmlgph]vhlavtrefmbfpdfbju[owuuvbqjuailmgynkqa]setuzkegazwdjyzskty[oaqtnegjwglqnyw]pyizfgyjbebfacjexkh +bxpzupefyifcfhkv[fyllboalhcmvoctf]bvfifvthhaovzixpx[vtppcxdmlfbfgvgolil]gtyweatzcejbwtse[prplzrovjaeczsyxc]jkylsdulnhfilbsqh +eedtujnpvzzzdpgfrm[uopptnavfamhccc]qdnckczikmbwkxfmst +hzpjojvdukrnakxzkdv[gychyosqibeedkj]efhirtkgyzjnrqn[egmuiotfolnlyjg]nbleytvfmuvypkpabt +xadnnqlykhisnky[hvfudohkwpthdtyxe]xumogpuzbvdpbnapcw[gaavnafcpfbycdpvz]xlgtfefhzyskqazl +ohnpejtztddevoitaw[hoixesaghtpruyayyzu]ksyuxpootryqgsfctcx[yoazsorvwpkcrjqq]allrvqctxxhldwwzil[rxxioewpnqttrzaevnw]tjgvhfbpninpzwvxtl +qhapfqjbpzieybx[iobyolfvekomzeelsd]ygcprxtqzmwotja[pheachmbpziycyhykp]yhlmlzbdngqpvfcjt +egcxwspabytsgsbam[hewsugjwdvnywgjhrsb]gbxbpxonzzllmmkags[jylmvbwwjvmvkkgvusd]fxckijyjjwfrmlzp[eiohquiromkekgsbp]bpimyywlklqwdpfasc +iypuotjzbcsafzclwb[mudgawqgospvlepaexc]bsqftdoatnacbnpqk[bxaxwphnmcxlptaz]yhbsqduzzzkviyxmv[cfeyjhtefuxjqndg]rknngkyxrldxnqxfil +epqhofdmbeblgqjcpan[tuffplppwdkoimwbu]yiyfzqemymmtzevrvtb[vzuuiqvvudpedkbdgq]qzkbzuuvgzujipvh[etjfbbzkhkhvlslkjg]sqkdjmgjilbpvmr +cukbhochuhppwcuwwh[ziuieaxmtjrcovi]egmfefvbqztrinknvh[tcrdwnuqobusvhhhuw]llwltqrtuzujeuatp +uegokkxxfybcozva[hwnrfpsyzbclsubdc]kxssypkvfyghukcsted[uvtzwttuxxztqwwyjx]lhlyeezyttvgxgtz +vgriivdekqhhyzgmc[lkzxlushgdqezkwkbv]aqtzbkzcfxrkuwkw[aeubxxnhyhlolauhnu]qphfpphyptbmbvcyutk[xscabrjhmsfredzulrm]torgsvodiuuxkgcp +blygklicgpngtpgcldl[melaiuchcudinutcx]fldhqlhwyjqhgthjsrb[qnvfdzzszgaedjqky]amhauyjuhdistfgbipm[irrhdtrtvlhanuhfb]cszydrvyiahzwegkdiv +yrncnxrkuamoung[vteffidkspotxmwhna]lohvncugddeuevq[ueuixhkoouhzzfucs]xgwgddhczhiovgacg +gowzwidadczncgofqsa[gzkezmlagbaetlf]oochwgecelkuokyunem[slzawxgblqhorfpezd]chugkzdgaukccbeoi[apmckbkkvlblsel]tokgjnxyppksnep +zyqnagblhgoyiqihy[oisqkkmqfxdtvfx]qrpxcdxvmtlqbgvm[rsoqvutimhujjhbwaf]xtdayhoscopmejfxz[sqcpfrehprvngyagm]ecwgbravfceaajqg +nntkrxodbypdodgtj[lnlglurkrynztgae]twtxdcskknbsbinlnnu +meztofjunuxbkfx[cthbsibrfgxjyjawtv]ujhnboyhpoyjprrheg[qmjwvltvyjgntydrmeb]dsbnlksebapwyfrtr[aoyswieertsyvbfijuw]wfzftnldrfdpnmnn +aanwuubqnptyoryyrw[izbhposjoffhknmia]pmpudrwiwouwspqnozk[sojpnvluazibqcqkw]veawduaoceyxmzwbgd +aenjhairjysyrfylli[ksygiscororwmpcbpl]mdggayipjsxxfhz[zrovsdxuwyxjjbfm]vpmedxtfdporoono[zfnnenxocrbtapmnezl]odykztbwvuvlngxkwm +aetllelassgaxxhspd[knioznfojvtrwjtnvfj]zmdmmmgudgcrchsuufw[qowcvxqgjaoptskz]qyrfhavolkmidaul +gkevcmsegjotmpa[yjvykufplocymkaq]yhewirtmatswhjud +kaerzsgqzwhdrlzk[fgmfnhjaylhdvepgdr]smkwpurhnnhaqccuho[cznwafhuvozqolaruqx]ktiyadiryeclynr +qnfeguqpvoiadeipxs[tuodvfpmqdlndroq]ruumxxencwatfiv[otgvbhlyuhtbtyfews]swsjtpcysedmpsgwao +mpxuvhlsahhdmtwlhz[saxrupcdkcfpmpvzk]rctxchvmeqnqsxqizr[isqtziiuucctgioof]vdlchnruvtuupzvukfx +czxihwpinbwjaatnmx[quuiszmtsnqdsugbr]fhhhwhvrnenwekmyi[phwhrltyjkmdffqyu]woxrbiznmygdqbptf +qwqniztrmqkkiyg[yvknzntvwmikawjlgh]izdzijciztugcknoi[mqpjeordqprhefbbsdj]rtwjvqdagpycdsxtd +pyslrefucxvqpgtnfd[guaqdwpjlwhfmmyzxln]unlgsygdedtpfrpz[uxytlfxsaeouxxdpdb]ufpwpasnaiqyqnex[kiulyoykitwlllexti]cvxikzspuywpgaud +rbzuremuvpunjopiw[evldkwtjsfwgvdl]unsafmnksqehiore[ipvgyeheeuobibga]ohwjoehyibiihubwuo +zlxdszmzwikrjfjfh[rmzbjspugrnhysidi]impguvxjhbhtirmdihz[wlpaqqnimsearxzka]fftirrvfdqzoyusjucj +yvzxaecltitusbcfqv[witiggtqtgarfrq]bhnbijcfbhoqpojeuqw +peyeydbwowzleyebpqs[abxvydhobwmlksefjy]hntuuskjfvsfwnmh +gxdajcawzfzzhjbzpxm[nxdsexkhsbaviwzw]kojsiljoybqxuvi[razmescyfxecbmzc]fdayjgkrzsmzngiszt[sdqgfgolavfqmuzqag]uzbbbcwcizcmhntiom +gssllxegqicytbgko[imezntkypaaclprdo]hojadqftyszdiohirac[wcpiroednqmsrywvxsh]gkfmxwfuaykpwmdukm +iwdziuryoqkhqzukcbq[qdoppjrevjmjuod]jewewfyupjnuydkn[ysbuocvxflmhbdhlb]ggjdqbzqfekjbbf[ubywismzabwewsrl]fufmyromzqrxtxsijkl +tbmlgasrsqjxwto[mvoqzbghnwpunzvxu]wxnwrrzdalxjlflva +hlalpnzdmwlhuwewel[uqawlldafxwhejwbxj]vkktsmliwswarsq[isoseemfosjusoo]bjbjwogehxaqhasloxq[oktpqmpxmsnvbnsubz]ekgpiztxkkuvpszb +xfxkkivnffdwrqecja[lvgeafomwyqhlfd]uyvvthewoyqjyoo[dcoayhnhnhakcuv]sfucrodbqeqcqhpmc +iqfduwigwfxgkhbge[qojiewaocberonshm]toxtpcpkallieefn[swenxuejqehdfutw]oaiceeyuhhzpazuyaiw[gqbyuetdmvtttffowv]neqopgkvwqemnrmauc +bbwxyipchypnmsk[lefobpxeokqvfglny]rwdgvzdupkxjhppcqp[onrpulkcgonndkfq]eegboakcdoqrmdgfta +yxeegoeubfjhijn[pmdjdggehnbtvfqkdk]ofdoklopgeznrvssgdc[jidbyndormgpitjsl]ucucnufigpzjuuxdq[phajlefstzyysdkdrh]vziqmjzpeeqnqholz +pnlllqydepsbgkrhm[ltoscinqrrvkdyusds]qwwtxmmexgsfqgoh[uucslmiboquvlso]xmbeigfpdmodrodwbp +jatdtuzlcxvgwpryf[dvyuqxhxkurrpblehq]vowbsishfgkjtvicd[krvikdxyqlwdjjnd]mujppmtqzmeviflf[ihqppwgfywzrqyx]aobhudzykvgwwhirfiy +thmdermwtxojztany[xcohmubhlagpuew]lnlsiczemaohvjhhknx[spnegzrtgilojpnoxs]spnvmefqqzpdfzset +jccjsrpjiyokryde[gfwdanjjnbycygt]iqiuzghicmveelbxp[tzugzompmkteyydyeb]bkvntycebtvjlgour +rzskdzdoxsdqinbmjlv[fnwbduvtemtogsfi]oayebzmwazggkoo +hzpsgtucyxemkvmfxy[duxikzpqdgcmkbl]bluegvpkqmjiyzibglc[qruyknjgybyboyvmrsk]pqyrdevwrpeatgkyo +uubdyuzvtcfrrdl[stntntweakppdrbqk]yoiwxzsdefzihdnilx[vvvsontntjvgcvanni]sqdbtjoziwfolwbby +tdpetsinuufpbezbgpt[hpklzrbaryhnibm]ucetauqranqexnfdstk[sadfrrjazeweeec]jaozzdmvmylzatlon[gyrmfjwewarvlpsh]wfojorkgrvraihwpaf +sarrhlzjldgzhyuvefm[braqtukjacxtcbrgtx]rpfporiksxcacot[zezcjaonoyzxnbgd]jmrjkrugljonkzb +hclqtamrzmzkhhwcd[hcxqnplterhqgbude]kduskujldxotldizi[ashjjijtmbppyhgxo]ozdvjfhxmojeqagmoa[dppzupkveblwydh]qonltaesyzvczgyng +urvfscylyvpyvpqwl[akngblyladvcuwa]pauygcletxnisgriad[ovsqsgvuccmdzqcwn]jjugrvjyydebzrjghae +ohvihbfwdsvpzohtu[qsxghcyyscnxwgnspni]kxlgrkvsbjeomgckk +gzywjgljugwxnrv[mssfmontfbahkya]gfmnxglcggnbrpvuxv[poejydksxougrcw]tiqmbdmjniaqnqgptk +hillvlrgjsewmjkoha[iighatessfoqwexqdc]iqwztbnauifcazihogj[xgovsowyvdafqch]qfjgljkcgkdmrnlrrmv[hnjcrfgkftyitryole]muemrwwikauccsregut +vmdrttktgqkyovr[myycrednrrhozjdhiog]qrrfvxcqpthdfcls[nipthbalwkyqrmqy]xaprggoudqizdkqu +ofmohzqodnueziyemx[njkghrspckzhduwsrg]fxxnmxloclzfmlkebpl +naurkqfrkpbbfkmbe[cpttgjergcoemawxjtl]cdkngakkemsmtgtwyzn +xtwigprawkooqitoy[dzapkodeyqhkixy]zrtxkzjqgqeuagdie[vnieacbchbgexzaf]ezbpshpznqosvuk[mcmcfwuzlyodiqez]bojvjhtatwvmxsxhkbs +muiyjlnqtepriyly[cnrfxiwdlkrqsarpc]hdlysxsdtpqxquhnz +clmaeawlvsluxfrhl[rayxcpbervctzew]syqcakahftovtzcdl +ljjlywtzejfslouih[hmsyjqsqljnppyv]bxdissuzzauueguk[xhyiqeotzpbtzsrd]wapoxmkfmxhbykdv +duvdnbsaqzqemzc[kfefbyefuptincfaw]jhuvhgdqrnjwmlfrmr[niprevfcbwagwvewhj]hdhrwocbqysjstefldo[uelmkdqczcnlmaefjms]bwszcueianjsjhiywwh +yrfewhgpkihnhct[pxzsdirhdakahwdxteq]ygayoyiuikakdqo +wjrmypbsxqajzbtwl[pvltruknhkznchej]ypobvzyforzyiihvzq +pdchmvgzmxaspkcwkpp[kekolrkqgqcekeitv]xwpjbdcxgoelowm[wxdhdpqotthaeay]ovvuawitaqelckg +fcqvgochyglldipl[ryndsmjdhqvikwnexf]smwbuebgfzzmfftrdck[ynaegesquznhgmisvri]hwbktncquitjaqs +hcbbiznmlcfgdfjtgc[xqnepuustubktgck]jspcsloqtblxprd[mudjqeoagjqcfato]vgguzyxablhnrlye[rvzjejrpykdzzqcpgmc]okcylioamjhremephbh +ihlcdgalqwvznxl[afsqmxduvmdjftmrjeq]ekvaovqjvajxfdutwhv[zolonpiqednbtfpsrh]vurkbqdeglqdsml[jivoaiwnfpbgbzzc]neycassstykebswqao +bsgrhhzfgwsgzowrbj[mvkzjwkxsuwxnioolfq]yobngzosyzkmgrphxc +edoabezjjyzijqbgxup[lcxkqejwnnslgykokx]wihvmpynxyyhaysxvrq +wmbgvnekkdivugwirt[yuioeaoerarbpcmbwk]bdlohxkfgdbthtxlc[zqpipkuumpyyioewz]xssqnavbegcidoenex[xvcirztjwasastitiy]mmcxttawlbzdztesk +fmfwtjsguazrodvdy[uuzglafbhjlwujwr]rjttgtqakbrloqs +mjtlntwhjqjoxsbhk[adswsdpwqnvqtuj]uwzfdezklxcvhvhb[rzmgufbrcamkvsl]imtazflkqvdgqvfthc[pvktfhdynocqbhqb]qjtlmgsjspdfgoazn +hfeiexxrkdehqttaam[uinfvckvhatgmlblj]rhksgzqfcizyqqx[ofgjnqhqhveobpzva]qaxdjvvaibeenyuzpzl[ktwkynazrcnewdnb]yzmotgipaelgbsahicf +djhinybbfbbvidnyest[zougucdzxpenqpoi]vvxbocdotanwdrjks +poulgwkphlvqfjplgw[enhvwdoftxrnowdy]jfepitixnyjgvvl +agbtjztsonrgwzivf[igqgvjqttujviljk]pmqphqrfzfdiinxhy[hjpgkjjwxgfsiki]fqgfwrylhecwcoowxsi[fygonoznhkmzcjcpm]nwouwxzbpqmsxnfhedh +fnukiqycmrzcije[optroggxrsbsokabplj]vlepcfzbmvrqptyx +pdteouejbrhsicugggj[dipcyddhrktybch]rsynpfyiklwyhvlzoxz +yuxxurstojjfnoft[obornuhvvdtcyzj]kivbosojivpliva[twgyjecwqsxjmgi]hbphkpnfffzpbwjgf +iuauoxmsalkxobrgb[blehxxupivauaxkahxf]torbqoddhsksgtnps +sjgwxpuwloyujust[psqoquaifhrgmah]vpaddscloldhahh[hditsfewhihijrpf]ofjdasdbjvfrwefs +arpvdepqyadnevyphg[kbpdnghrphvogmn]wrzcskupnydzepdmxkp[beeaeyelchimtyrq]yppeqczzpjsntfytp[aofegesxpscjbehmcr]wkhyeeykbgemqgcynxs +ouluccjlcbcurdpkzg[flulmqooipvjzhip]qkxrrgvodksuivbspr +zfmcvmwchidwtgjmpoh[ecthaqwuytzvxcfk]pwvwrbzdjqdtxlq[fwbcqsvdosnolronvef]sbroultaoabvbtvh[ziihpfydzrkdqsz]uydoxylhbdlicydahf +wyvxswplnabvdoeshds[zhrpmmoiilsleemryd]pgkwuzialwbqkiw +ehkebgpllhheumhf[pfovxzqmiqoxdmywhc]qpzsvhisrjgjfqnliw +bzizropqhokoukoxz[ahvweuhqlrysrwu]sdmyzgqcevcixtomzch +kfyocamgrbgzslp[bclztdzvmbyetlgjk]llzxtjeauatwnnpkrvp[pxshjlevsleipkfkmf]xblovddfkfhviqulap[zhqfznscbngsaej]rjfncwzuuqwowdhfk +biaunelzsqaxohte[zyqygmhjmwigxsfi]lmdfmblocglcxaszya +ngxgqwjnobiygnm[jnhtcpyfpwpwkxapib]lyhgjgvcuwgbxgxwn[rovvgibkfcahiyn]dyojmojklujquiqfsj +tqdbdrqgfyumjwktbg[weesraucasfagyailb]ilhskphxtzaqesynmi[stfgxrouxicascniwpo]yfkxnhvrwkielncq +twgbfgwbpygvbfnyy[xhwmhyacxxleyadli]wffogpkjkmysxzlmpuv[qnjizoqydldcwubtux]askyjzovxsalrrgo +yunqqhjmfpqqycv[vamwyuzotttqgdzgj]lmuivwjmlbeqkay +qhquozlhiohsyzwv[utxfaionxyjgcnpulf]nkmfgjxfobxmrydyic +wehhwiznslzkyncnkc[dzxeftrnxfhrwprllke]imknddjnfrzanslzdz[dfqldjhkxhowubxs]ojzmgmludytadwespep +rbkqkcqoxrfczfwte[poemreldxewfaif]vehqkzgxcwmvocban[ffpechryektpzbdaivy]emfkcgsqpqkqxiitol +eidbkaxexnexudiembn[xyiztwlbqvoavomnlwv]rrfwfdixzpzvwkhwlw[kjinrqheqjsynha]pilasnmhghvvgaxor[nrgzhlsetahyskduscq]uazoholzvqjdaovgjr +ynlcechniybypvzubo[fupezmnrswguyjysfj]ckmilshpttvobgoux[hybhkdzvvhelhyvoynm]amrybybroexntrlcmvy +qpmlcmgstzjfincjh[axvarrnhwnkyucrz]wbbpucxtqbdjxsug[tutypessbhpshlyt]wwlkakvsggtbzcz[rypxpzrrmmohyowkja]aeuhylvosccpatslhp +hrdlnpgexbirsepd[waphktwkfccnylxg]hgukjgxutuzfovpazhx[jzgspycuftkivlpx]bhfazqqagtfpljr +ciyqjrkwqlwtuhh[lknvhwchhuntllyvjb]ontiepkrlphiydhyir[pdcojzrccoatarrqj]rwmyqonvfiexmbnjy[nhknsnxkwatatfhwa]qzlqiiovmuukmwypy +tjxbenxjlgozxrtqdp[fqimqatlktqjwjdzuoc]fedjvxnqivqaxkvcw[lskccrwcsxulkabzp]orszzlxhimwlzfawjw +yufbensvlqaxthui[vplidvdhajkxfkledbz]uposqezqxglywtlxgg +wacgjknueqomqccqnkf[erdhexyxtcmmvhums]bnywbavxkfzbqwlppv[bwdbqoqfxejqnsgjd]eafoepuyabzlznxw[etyfwvldfchsrdsjyec]apzomripffavakswd +conwdmtawpjnzrjlkrs[lfssaruafijkmgdp]izwehdqwarvfgxi[stkwrpsrwwucxlrpvd]sucqudlqvvklrfdgac[gelbgtycawlilemxamk]zmdjppqtsdlqfbhmm +ufwwjiajxhcorfa[hrdobejvqrdojftlnj]vamxyyehcgnupky +eonddfixsvjssautqun[kktlnrsxhmhwisd]drpflrvwelqqmdrcleu[vefzppqxcrtevyv]yeayirahatkufcjvax +gipuuaoxlxfkqld[kytubcrnjxvhdxjto]kwpqrvvtjopyigmq[urijeznvkopxtgkd]infdbnklnolvaqwwvo +bdqprkxthvsgqlp[qtcbdifrlnjdpxrb]xqmtwugptmssrivqb[zlkwptpsqnljxxod]esxomobcnfjuxxdmsmc[tifraqareavetzrpw]dlpsxjssqzyqwhd +ylwhvgowletbcqjgr[tnhoxqhrnytlbnwifx]pyzwjmotosezztkqd[ejfcslurfhiompqindp]kvbfdwfmwkiswfm +bqlhxpzchtvwcqc[jhpqckkyntskugvua]ylakfwmlerklrxq[wjrmeexzlljednrxho]rdobmdgxkucmdrk +ehtqwbiyigxjvkp[qujbspkhxogjrzskfm]qebesubhovwonqudy +sjqrkysnnbgtkhwe[ibgrjvqztrkknsr]mnbkbbxvfhsihzkbsqz[hxxhvxonqzrgcant]kbkvnbphoymseakbxjf[yjkdvhsscxggtyyk]tofzfukarcsahrmvs +ndepmgjnsgfsttp[rgrcqahcpnsyknjkd]uablhivltavxssnx[uwjmrokgisrjukeoh]wollclyotaektyjg[tzbziofnztlojbros]qvbgoapfzbecqwjsq +lspiukvizecamzh[vgaxbxgipyodtbxb]qpnkwuqxsgnihgd +khdzfhioeykvnvxuhic[lhfxiidbrwldhvfav]rwxsfwhshazzaxvk +coaljuoxfhvirzhedxp[femqrflktuakhveiiye]iabhkrebiawlktxmbr[pzvgzzcfzhswxitunrj]kqpbmoluwjetvhdcr[tyqdtrnkdmvdpuf]skrdeadiylehnbiyvws +qimxmesehwdrqskwitd[nvgxgwksihjcplpl]bxnyyafyzxludvyehd[hswtrhxmggpcpcvew]cucgudrfxfbietibgv +moiyvifvvucewfqu[wuzvazqcictmsbtq]nktfnkfjbsejorafo[vfreizeqljwshfafwdx]xrtbsdzcfkdmskiiuwj +kchuwlbokzivzlzvib[izbibinxysyjrvtapis]vugjoxtigdmbdqjn +xbclcahcqnbzwpvshao[qkamrpzzmssylpxb]tjsufvzaorutvdu +hraytavipeznkuoi[jmllyjddfakuxwfsx]ofoxhbhnucmiztrtcji[vebzprplbxwqnzllu]peaegqqeqbjikxff[jxzebruqgpoqmklz]liakpsmvutnpufovqlq +omtbdjlfagkxdlntz[mhwuaqvyldixapgoaec]aghmtjapinrxlvem +kbvvqlrdswbturvx[qpkrbbaxhpljnhlytou]xsogoxibyznqcpqgygn +orqcxbycauryvjxq[ijorpddboqkyznnnm]rvildjpthqvtdrzcq +hvttzyckbqjbyfdn[lzeulxlidymszjl]wbbmixifmqzkvypqola +eizqnqqixewedcvcit[ohtuntptfbovbsnl]uuswevyvyulevsfnw[etmfugdbznyzikdtx]euprxmmhcrdoefvfjg +pvxjhbwdlshqkth[gwmtamzhtucvbkmwacs]uyephbahzeptqmif +zitdlkpouvntzndz[iluwraejfdnwafe]fuevzmqlsflfcht[suumoqktussjsze]dawzltubgawnahpd +krskxctpuowviqiqxu[xunkhvqyyqiqhyx]rcdhdjoqrutobnjpimv +frsjlbcvuwydaobhii[bdatbysbolkcpzcxoyf]lwsfakbmjilithjrls[fhozecjhruquesmkca]oorqtbaamburjorhy[occzlzfhekgspeep]lilnnsqheytwakzah +ragajrztetigfkm[egetcjedsnrseahrxr]cblhtdmtcnoaank[fzhqephlcyygbwt]uyqlhhlhmnfyfcts +nklzxesmrrdlzyakdk[pfexuhulnvbmndvyat]xjvspjnesqugmkngn[vmzvdrheaknqmzyrc]xfncycggjiaqvirfvnn[aqeinzmbaijlafd]pjojbnvismokshrs +urteecaminrqiohs[rskgnsdfpksfznqpphc]yaxixbacbtysdrnwixf +ibvmhqpmnpzmghdtdpo[djdzntakacvezlr]jtdoweayvyiaskblc[qhwimwixemjmqsu]rzekezftftlqqovnq[hzeyrnhbrrducxz]ceiqewhcqqmqluro +joqwthpcrccoovxrvq[qjlcrltwaxkjenbbql]ovebjdqfnfkomjpswn[qhwrxhvbaattcrkvff]nmytfcchpqktagojhtf +jeeuutsrxjlqegcdlrm[chrtabpzdcoetzoopc]axdhgbwmwhhlrvc +djcujdyidkcgwygy[zfpuoobkfdetgiifrpf]uxzlkhxzqgiuyvuc[gboovijloiwizfuuye]wimticbreszjcpsls +ylpbdnvjaavulnhg[novahskycjcruokxbrc]gzsmxnvpupgxwhx +qdarjsoimlwxduyp[nghlzeghibocgcbhqb]vuoixghxxsxftuztlxs +ikdnbajyzpzbtzjdey[fiygpvlyluerdjvcdc]hheswtvpmtvjochdsih[kmjnhhmbpokaxsrf]byzdcdlvgyorjvkujyl[ttxlhbnifbfgmvs]onytmkodkklacgel +rcpgwlbaskiorvxhgsb[xikxwyiageqvilea]rhkkzuqtuxbhuygcxya[prteqotsqfyypus]mpdedamsijgmdktn[ptlcxgtlxfnvychnwe]mdjujbmrytfbzpslad +edjzqlaktolcrbwboup[bvmtkmfmidimoohq]kpsgyntrgidclnq[ohqjnvirkjlmztem]smtywugfaobbpvmzj[aksdrqczxftjrzuylmm]ffyrsvfwtqlmwbw +rkgutyhaonmyick[udryocpupaohqhrmmsk]lmusznhxbkbagotha +ebtiyamyxtfcakoku[tfggedpatfzjvirou]iwbguywvekoline +vjyzycrsfycfrookru[iszkkyvwngsskic]bnnqauaqcfxctnyofoi[tlegfofrqiuqlgkld]biryppugzufezftpjra +neipbfcjvrnrmpijwhq[eppjsmrnolpscnfowe]crsmezklwmkbysajb +quwdpyfsllgkwtj[ercxwsjcfkbpohokuc]isdjfklflnudrjetf[fuxsclqmfyplxxvao]xflfujjqnglxzxlxz +vfxrgmnvontljaodk[pwtwiqibbceehlnhf]lwzkbshrmagzhwqyq +ecfthornfevsngitzhb[pblbvztbbsbsxxuwec]jtjnnhwkekrgjanoxbe[osbstvuwyjietzx]xiordmxphcsjnzfnrwe +tcnlllsrvzoxupp[ficwiahpzqtauuk]whxfguillhkpxitoqq[ovsdwbddmfojvkqrxb]bfagfcimddodrtb[lghczsmdqufswoayezk]ctkmauzrnhgotbibbb +qahnaxgypnpjftgu[bghbgwqxwfnfrcybzd]qinmtddfxbpkhqnna[rheeshzhyxfbcfxkd]awwsrosrkyfqcvtx +siffwvlfljwbcndns[cawuqwatfhgwsphjn]twfwwneebgzxmqyrhbr[awxuvozbhlohuaxim]dykizkumcmmnwiwdx[dikxuxtmacvaxiwih]mscklmepmcgjemwtvv +nwnwxbeggraucwj[ygdjhwgskclfginltdy]ngfxeqsonadvobrnwne +ceulusceecbvzesfpia[etyucdrmmbsstudbfo]jjzwvaqsiovrgro[msadpldzcxurzije]mjrrrqwmyqxpdgmp +aiwctbwfathsnst[ymcmlyeojcaokgf]hchdxsyquapjjgncfq[adzpesdwzpvcksioys]rbfqvkxsicnkphd +hnbounecoxhinavuro[tdytxmzudgjmyxmm]fovpxazijvtvirqfrup[qbfsslqkpyioabrzhlz]htlcbtysbfxurnuqgs[nybjnpqgugmtfculk]zxdfwtbtbvhxyrtcodd +ecszlqenzswzeujn[aymhmhqkvzbuabtr]qasueshfbfducoit +bmvypnceplfbhhsko[eypvaebyvggpcmzum]ycwgnjvrjmdrkiao[hdkledypozrgbkexls]isuydppzigzqtfo[onvsgjzwozxcvgkukez]uhjisxtizfjiaebue +ljvtminczzipicxg[eqfvilzenlbztef]hpdptelqvvscyfqjbk +kofmsmvngqzdobeg[atcxvdptaufgfpec]rbyvvgagylqgryjmdz +qrqirixxxpivzyxidp[vanhxwefpeffrphvwm]awiajngjmxhscxctxt[hnmowanymdizdow]lqjbxcvbswqatxyp +baeknzdxlkxorrfi[tiqhvwvqoyavllfk]uqqdkslrjsueklu +usgfgiqvoudfsdyov[unqciexsmnreobavmoq]kcboezrfdmoqrgg +xrqjdugnwddstnr[gbnpzkldpjyfady]edvtrvipwheribydmaq[mwzdiuqdstogfjy]owanzbjqvaqgsgf +oumjseobbaxvipit[ukwqpfaqohsabpd]twomizennyccksgi[hszmrfksmdcycyda]connwmiollbtvgh +skyizttcnisqncq[lcxdhawnbdbcptj]ocvhdptvtfnwqcdmjff[sqbbfcaufseolqwcjt]xlnlzmuciirvedlni +nwlhzupppktailtktkb[bzdpulmwswdaqrv]kncfgfqmxoohevsxfp[vgabgahytpqzalhap]bbubtzxxzeysqyqp[nhpmkotpzfifrfpmk]fruxnzwuvonfoxc +yedymyfylbzvjfwst[woezxcgsurflqnrmvt]qsiblcwatgywwbktdmh +gnbeeaxxlvupyacdpl[dhgikxwvtnhllqs]dzsbgvmgvhcbygjkxz[qmayyikkpsqdoukt]kdfbifunpwlbhsh[qrqskqnysxtloxs]zudxossasajrdeanct +rhftgsygepdspzqbewd[lcmdbukbzwdesfroixj]oblwwxyfconxmhefjow[fvutwgcvuaemgzqanrz]xtiuegikggcimaobg[uhqwmtpowirexexim]txoyjvcawbfxprxf +viebpcquqeagmuavf[kxfkxsoijrjklkgtahh]gdxrwirjrvzjcykax +uptdisvspkluwgzkti[omvlmaxnyxyzwuian]pmieocovsvpfcveurx +ejmnzzuuduhzoze[xrdlxozvhgiofrc]sxtycslunhjmvejtkd[pakbfwkagujukiybe]adudpcxmlamtkwak +lqyqdhuldmtwbvydji[okhzffzbmlvqiko]wdcicvzpzkaowwqnztt +imnhospjiqsxihx[utoykmsvdetrkdxvzti]zgdfvtmfjggwyjef +lwsirsmcseswkfxh[izotdhmoodsvpsp]jivuksxahorpwcgxnn[plncjtzvyamfyxzst]nnpdtmoozfzuemdcenb +puavooykfwvhwzmkglt[xutftanpuhgsdznc]rvzdveoxydbctczqu[hetpqpdgohitmgtgyp]koiwybsyijhmmqxesqk +puivygxavmlrxwkst[qvtxsgezqcquyae]brdptsxbxnobkvcqclm[ibxfeuecufosgtzhxg]vziaqziqriftdfrpnll[bjfubyvxxrbsjbqvi]nnlbiuncvdtnnarm +tlzooyjugzfsomi[robsmcwkpeprtatddr]taktjvhztdlygkj[vbjvzeeznvmamus]sformulcgeirdihntt +zbcyicsjcmpicotmt[tbrfctpfnqspmvnv]edzcoymhzfqwbuyuyu[jhauxxgwnguurrviws]rfkagjqfdvhjiavoxtf[zdejarfvfodyslh]pzjedvtgzwflpduq +dhbhmlhsizoeldofqs[qcypvphfozxibpjdo]idntecorhucvlufrwu[naoixcxuqlgsytnt]ehsyusyugbmahyrn[djtckrolqitsztwtuq]urantneyeodhvorgsx +cnsrdanbfjubsdd[nwynwjxiyygvgdlx]gyyuqjjvumvquvzib +otivcdfzmsjivefwujc[yiveblxrayrkmfjwd]mbwaroznwihbnbmjp +fwanqgdmtlsezhtvat[bhxmmztvspchqvhovae]cnjyjntrcijkmnjwnlp[rziosbsufkiamqmqnmt]mvxhzoxxibbkezhzlks[hfessxjoefqfbgxhc]kdgmlomxtdfgdgku +ygxiiehdqiqtqjzj[cwbddmmlczrgdgpibge]tartaeajmndarksakye[qnurjchyeijxcsdpc]uguxoncwdrojsyszsib[mlwwasmjacumzfqr]sguglzsozcdjzlooexl +ytyzugjtaxtnwxkns[aclewmcdbbbwyyu]hlfhrgrigvwsdmdethb[osohbeuazmmffxyeq]ygmbsfwcmyqowdvh[pqpwyutdqwwunfqt]ppkundibovmqwjwyll +vcrftmfliijtpaqsoy[zcpypxlyshsruwbclj]mnwgypyvzdxnnie +fmfdmvxkdupjadbxh[tauggdjujfbeogtsgzs]pygzoyudakrlrlba +ysxiybmwpoygkyle[xaaughrlqulsertp]iukezabalczvwieegzj[wlycqpkbqptraajl]mjevizxosnolkxnfwxc[veialybabbpytrf]tpgpqighdqgphcwoysw +cnxnptbcjhgrxrtremt[tjguyerqizvuobq]honeukqpcsoiapswdgs[hcroutdslvvzypfklj]owxcxqehkqqyeflgi +ypgeqbggpntconrgr[fmsyjvaninmkfqekne]ykrmyjpfwlhnsvgehop[gvltviftpcixosamy]xlsyzevtwaokuvneo[nbfcynlfsbmmweiml]nxuzmhrwlucgvfy +zagsvkbkhcrkvnukl[pyfiiavqjgonrarga]antgzbmtohtndzgf[gkvovvdgppcnyjifrc]lxdhpometcwlkofze[fpxwacqdussynpwd]mymrmftjovoqtkuae +xrtjipuirgczdlrrlnu[xdczaqvzsfgavmzq]luocuzuztdgsyxbcy[agpcmbiyqxfntvnmzn]atjschwzmauidumzxru[gvmmftvwtfsvudtd]vhmononuocptbuvorau +fzozmcmcymohndlq[rnrgxsywctnmxxd]unfjafhfgeexfykym[xnldroqvnecyhhcwel]wagagwcqljxduzebjeb +efvejswssxdrqggx[iqwwyhgngmwzwsw]dlkdcjxurmpsoceomp[scbledaqpgsgynjo]rsdxazcyjgcubfxlbb +rlkrgjrxefztgtho[tphpsircgzsauqfew]ridnbmerksozxzwx[lcqwhfgiihdzgtgudp]whskzgdpjubkztb +qbtcopfgkbhzhhglhh[ostebaqylyggiyfptkw]bbuaatfqlpxstpgwg[nydgrdgyazzfwlagrz]fiiddplgxeyyntyeb +bogowskdtwkyhtdpzw[uxvrferconwfnnj]eukencoekwwahhefvs[xtrpjeahwpxbwgogfmh]axqvtgibzojnfcku[zhkpmdtwlogmypeqc]jzqywlhocshrdrlgd +rdmpdlidbkplejoikjc[iqzadghltpndooanzp]ltizdvolnhagtlvr[rqcrkoaqwfwjpsrj]rtlcwqisvkznpvrjrbi +ndbtkvzkgjsuyfibsn[gbfhvruiotbnbtvuxaa]xihrrhcnbnowthpdge +vxtgjsiuodbsuhg[updgogkqrntiedefvh]xwgrhmgmpzsxyen[tbhogopfepprmtewkm]fmrtnudhysikudz[rrdmqrctpwlcykzr]lpbvstnhcmvnfcpngja +eoaqeiqpsqdqkdvia[pdyuqgwuhxfiukmpvw]wsjyvdabhrdsxij[puikfklqhrmvfrwomu]zvbbuuromxgpnmpviw[fvfilnspmeoxozaba]yaouxfprxpkvkit +qpaksrcracxnyuozqc[evqvzzqomyzwufkvxx]vmbkqqkzjskcxbmbbp[alqaapbcvzuxchmaa]pzxrooiyfqprfaucxue +jmjvvyxljzznmaarmau[piytxuyakxaropkfnfb]txaaoeuvlqiwynhqlt +yrgxyekmldicpvo[wqcvsbptigcqvzoet]jjwvbjbshgmwttac[ymvjkuxxoojchqomnj]tsapoddljyrehrxrke[ajspkmvbrzxrxlpzw]hwymrguaqnefpsza +dmlshfvkrzncuuoo[fddyurlzqbpqdidtkrs]kcewmacglikdszapy[fltgxlltlvysvylrl]rgovwrvccixdullrof[bqkrpxjupbbrdnahf]ebmiiwmxkutltuxwrds +lzklscqfbovjmjbo[rhwheqhkaseohohelh]msyobgeiybsbyucus +olbjozztfeowxftbsx[oefyqpxsebyfawerwwb]uyfpnsvujqenwouagc +hwhbihujnzgayah[euifzicfxexpxir]lpgjmexgfyseevwjpqo[nniwslmnmrgybuelwb]khkudtujoigkyyjipu +okiwsdqqwbijptpjzl[ktibxjcdrjvsgxzlgg]cimquzswgbhabcf[gictypilnrboctfwls]oiofteanmgnauid +hdwokqbmfofrujxvf[gcrxxfsxmycedcfr]xwcmtasmlcvfmezvtk +gcxgyjgbqhtcqznfuoh[yitqnwqdcpkgwzayq]oqbiabducwietmxira[kuxdaeohprtnmpfniab]wddlljbeofkomijydzt +gnxobceomvkecom[oedsyavphnrvulwlqfk]klkcrpigniietqecrc +bgzhntrrxvjvhyqhf[tnyvbggtjvjfgratfo]hltqszvzgcutrdcvddq +sgzcemtrlzdjijht[wtvzogdoomtmhxcwckm]nmvftmtbucjnczm[hkqmnugntbrrsphbmn]yfvwwzebdqjkryhm[ydcjwepsqqrwnhkpup]tyssdovqgkhvvstvd +buhlborygnuuklh[haftitnpydnilqbqabe]gemzbfstwlhejmjoox[awjrajspxybgdkbl]nrkncxgvjhuwukw +suckcafpmeixlavp[ehmqotytcsxzagjq]vfwmytywcapfwlljl +vblctxriewmbbpxo[xsgdnvmcmfnuejlrtz]iltofzajbcezlpy[wnfixwfqqgseisa]buystfqzokvletbzv[woumxjkmiqqstnt]ciarbpnsahayntnv +cjsgiueunqlisps[zurvijydsqsdtktm]xhlpspwgqlwqfvx +bobcmszgphpejiwlwdm[wwjrxebfctqobojw]hyrcpguihwihhpmr +jlyvxnexbisiiwyjjf[pxpqjtfgwysrewmrv]xcfaninzgmdidqswt[spnysxcfdiwijvfqitl]wigmjtxvsmwlquxew +qqtluuthgrubwpqzr[kgebpbdpqekehnnuyuh]onnyuyxeqstunzueapk +sizavpqzmcfexfocoxn[dwcfbufvxxousaeah]hymczucocssffcj +ldupymvmttlywlxbbs[vsttjksdhwfdxclitx]hfvkvgmtmaxtifvo +tbgqiatbujypfbjha[catabtthtrydcjbt]aujolgbocqymyeqfr[apsuwlktuaukokmldw]qllsjhthoqdlpykgwz +zqtpkzchpnnmyzygsaf[zuokmkcncefsioenp]ynympbineurlgzkdys[nhrjzpmbwhwcsuowx]hzawgwukxrerbljm +navcmnriavzmexm[xdvtpfcjdxlbsyenvtx]byqzubujbhvpwfcme +kookhqsmbrpgpsbctfp[wlbmttbadvipoyrojd]cqmhhdfaunlqkre[gqmltgpxfyljdyo]zvzerdpqmktqmezf[npidrfvvtdeqgzhojn]hzehtqonmwoahdakvve +tanngpmswmpddgfpph[egmymqydmigpnpr]bymycsueiolsfyfey +uddmrzbeefaxbulsm[ieevtshivgygbvsiwpd]lbxhzadyduakugey[sqywcrjzoxbbgadoqne]xngapfdfzbwcrkd[gurtymibbzvsbxtpypw]elpexxrljomuxnybuxk +diqvdzizaoprrpzrovy[cbayiwiifklhjkw]somecbyhptpmhjvkrba[gczcezgzlsyowteraem]xkjkakyvwxbgmybzj[htxdiogfsahudae]hhbdrescqujtyeyo +kzrqpxxtetqkqqfxild[tenlubsvlvxwjgokm]zxfixurqybohvhfa +pjhbxnktknirbwjp[arlmosnekoqwtpysn]hexsbuespjgsrzbvpf[vaacxsepjnqxegwqq]owuxuohhzxqnoqepvha +pumaevegtbjlzsijtf[cjpsnszjnvoexufcgxy]dxngvevsnjzsbuask +azhhrcrptkuqsvxa[hwxldisbvxutspea]tiqwqugkmslokmixx[wzqlcgyfzacbyoguk]klpprvhtplelelsmx +dumehssexnwcppac[gucpccbmtrdgoee]zpcpjjuztjtgxxhzroz[iizviarbucshvccj]xlypepsxxhxphttgc +deujoayipwnugheu[nnyjneomcvpfrvfu]sfspbwylbnzbyqh[innsmlncnbxrbfuhu]tldwbficslnxpkzlrtw[kyfmnucfyrwlvbb]wedvxsifdxaysaw +lcvkjzckpkeyzyjgtwy[osncmhyofupofwscd]rysnhkmiqoqulyu[lqwjsxrgpkpkgxnvhf]ftmywmwfpckoadd +pixbxvhtlxjxzpm[nvmqocftgaxxgejke]npibmenishbqrxtavc[jzceumsoxcyqbfv]qcdqqbwcueyyqptc[egixgueerjonkmigr]teecwbxvwhgavdfjxi +vhtgslxovrpmlojcyiu[pngyxboltgfaskge]eawigmpxrezdxtau[osjcsdhppmqtqxixkg]gkxhhsphrnkjyxgmp[khnpkxghpkaxnvgxqe]zpedrsevlishcdbd +ixnbejxsfmcjmqh[pagzggnbjxxwktstf]hcjdsogfetpzoucuxg[gsnpjjdmrqzojcozi]csxsgebagjjgxqjx +mekdjtrwhgafduvnmwn[aaphpbnxrwwkhzxn]jqzcqvefysuegreqcw +wbpogjbyzelmxqeaazu[djdqdlmpfmezzehvjl]qdquppvgjweftqvph[equcifktaceuqwoakk]uxemheczqpboerwq +objhlxsujoqunmhip[bxpjvcdqedgvqrv]rvycwulyrrllbrxlbty +ckxcgnosnlskecyq[lcbisjdelotgldlea]edcebpmpxvvgktuxq[pewmfvnkiiulfehy]electgrfvkbxiic[emqhtmrsqfbebmykzv]jfdpefifxcptpfzvovc +leyueicungygchlce[fbclcyopnajqvxey]jcwvhehawbpflgddtn[xlozeiujqbiinjlvrt]ljmnnzlebbjbccao +mblrhofhihdiotvy[nfatavuoewnlsvc]gtuqdhyxielngaci +eyzlvgyolwwobcg[vaeslqvdrjthzho]zdakaychskakuufan +ukqgdhxdohzgrdfc[vfxeqopkydlzdehao]cormknsmtbidhgml[ceialgwruscjsapfc]erjsjeuxzxjokxct +szronkojjdgnfzkpqzq[xpzmblnarrtycgglkw]cixtddybdschdshenjl[gflkqtgzlxeesrfvx]erpfhhlwbsdasjljnqh +crndgetyvbvxhujqtu[svhcpjoxbaacvpqf]ohhkqbbwhtbcatwopz[nzfqzdbjhixrtpw]dpyfzrpxayfoglzji[aynmktzgxtegbucrw]igvfejgptghxddj +efswwtohurobgbpvlhr[sbgfgmsrjsrjblwr]xkswzbsgmboecxc[odmohossczkqjwtrdi]gvdjrovgilpgrdgt +qihgnzozzcedhgivz[wfzerbwlgrjbwolsz]ehnxlqolcgghtdfkeus[isyrflbjdelvbgz]eblyrmmkbobefzo[baowrnzmyctfmoylu]bzhtmcwxpcqhubyws +tjgkgtykbfdogfa[tixjoqenpxjbetz]oybvzsgugsucpvid[qukesagikwrrpuesq]xodwkyngdrxadgqz[sigwgfluzksbqqpvueq]rlgcptipyfrgihzn +tbilszajwwosrhs[rewcahkzssatddmv]wtusvesduewjvissr[efusbpnhwnrdjwgjthd]dunuqtpzocqwyqbysak +spvqcisucqxihmincf[csjfurernawvtia]vzarehconlkvnhbpsaa[mttsrsqoluowbizxrbk]pewqfgipuxqzsfj[qznswrhnuvmmqtbq]mbjqscwfpmkejjowy +eqeycwhpzzryclb[mvthqzizihyfvtdgon]maeannxtfakrfmg[xlxbqdqlglfspvyqrx]chjokbtqngjjsidqdyf[nnmqygvepumttyp]zipyquwulqtblevg +etutgnamoiukjadrf[phwftwicxcpgdegzkr]lafqcmydwbvsxlegc +kbwfmffiylhmwisrb[wvoulhoyvagzmgxmp]heupruovkypjtzkilqm +hjgmjhzizaeqewp[fepsjuqdjujbjpnooe]rnovsbmzwqtukgy +rlxvqkugtcovejm[vqlkivalxqfohnwz]afmwxjnymstqmem[ynyidmrgyujdkmjq]cliodisdvotckoatva[ysfxjtwokboitvhi]xfxomfghbnfnkobval +oxsmqxhljzdjqtx[eavkvuusdpcbrlwmr]kkpbxnnmuqigfvbrf[qrfzadqfcladouu]irmuceccvwsazcydh[kvkeafmibmbgpjoc]kgmkohjtzjqnfwxkv +hvvzujphepxjyypzp[isabpxdneywzpzr]rjbcrfhnidqlywbgvxf +ezfeilvlhanyhfvd[wgbqirhrycdzzbu]wpwvyghpwpfykgdt[drvcvbpndcvrcirig]qzcdvhfcxqdxubat +hjkktoruvvqmuauitf[dmygsosigufbzkm]rjbwsccifhzyhqk +zazrvwupbrzlepfcc[nzlsrlgeovdbndxwqv]yhjwjlnravqgraen +fqjubgphparanlll[avwevtaigfdxgjet]mgftlttzuhaqlvwqn[cnxupkaxahrlnjelty]yqgaieunjkxlhrha[xexqcuvkacjayozydc]blhjzcfcoyiozuajqxw +nacvyqozsyqgnvkvw[urqhhtybjqfpqqcrex]pxfufqzfghzxinnnlq[vbxhmpntjgivfgzgmq]vgsmxbkpphhjvzqdirx[mrnmmtbamdhoved]zziaxsjdqjfvqzq +hdrdsknkwrtejdgeqg[wbvycsdyecvuclhi]owhsjsujsqjachyh +jwfxtraepnpxwmziud[qhwoewcswwusdqcvfh]czaiemhwpbkflzqi[yntelahhkwcytedvpe]kpkuxgqygwicxoh[vuifmbkhbycxqiv]cfyzggvhpveafhduk +ngiytctkauehibctccr[coszigxgcttxzoqrhvn]hfrpsylypetiwrggzg[xwnfgwaxrjabzmsqquj]gxdqtprloqdojdthh +rhhicddiuxdobco[ihkmummwydkeoqp]seubufqphohblrkn +sgslfpeleveakroo[kgpoljsrrcfwlwyzb]zeacrfqqaortgdv[yoipuknesgpwoscvguw]ubrzxeqpijxuflgsgpt[allsdtgmdlnupofjb]brnjhlzxmijpicty +vbcaptabloujxkqwnsc[iujlwsczjefkoewao]yqwmtuetinhedenovhm +fcswktnxobrvovrjg[qsaxxwxgrenkdcpfvx]bmivhngglvcwxwgjz +nhmxhadaretplflb[eaaitxsycuqarue]zzdsqhjjnebzptm[znupjbepvjzujwj]djueiauiobywmclemio +lzgmurmbxidxqofgvy[nhpkiprmeusixtqhfid]zlpmcgmvjfsqhddfzu +aziympesgvakqhltci[qdofqedxvlvpyqat]txvwrspujxyuqsn +ezewtaywtinlcbrn[idtmhvforhdxgcdy]ohpcvnchsamehoewc +ayzzozmdklbhitpd[xwlznwdbvtciozoykoy]ainwvvxkreuvsgdatbm +kvacickhqbjjwkk[fryxetyntagtppzorb]gkqgbqhjykyewipbcj[zdaanxpihogooeeqby]lxdkkpostipynvh +nzngguddxyeihkkyt[wamdyvzgrnofprps]znzgitnmvvvrrzsb +vnbogcvphumewlx[cboxtlpwdmfbtfegkai]zlxznqxwahbghxz +stwxjgiqglghaaot[gdxpnepcgstafgt]psljddrwgewawdc[snbjvfbagexsbpyh]wqqhsxerdjilgln[jyqcqbxxikzmrguo]sophymnkilydvivcdk +kihnifnjfzhvlinqrqi[bcgxtjpdyxtgejzrdi]avzbrcqlbmaadrrvazb[ntmnrjhiklfwujlg]pifpvzbirqokamrmd[rbanfbdlrtmtkxca]udilckezqvrehkz +liradbqjmqeaifibll[yrfnryjrscfrxgazpzc]vxmlibidbmcwgoygn[ojkunzztsdudqhma]dvmtamzfaanvyivxqrq[yqypfcmwnezorcnbzy]wytsaklpzfftqat +fhaxbfjherqxbzbrtg[nabthakgwjarjsfhj]iokwyfrrjtwulhwi +asundudwctdvninxpag[opdvadcnjnbxptahj]scynlgwnmzdtmudu[bupcfcyqmmcwsqfffb]rjargbcgxvonfgjco +zwzcwjnudozdektxh[wesqhjkthgohlufhrf]mwqrvudkqiysxokugz[lcjiemidwqbdnohpd]psvhnbkuptpjicdmb[vfoerfpkymcjmhzicwm]pwykcpzewskfmho +zbhxhhqfeurqurm[buuctguwokorlkfq]extdceaqdkokhdaxzqj +qcrnmtdrftlnyciul[qvtjesglscjradq]tcoobnfosubnnrps[qafsnrpijrnjkemz]urgzkcxptagwndzug[olhgasghsicjvswx]higdtidzwjfzlfkmxbf +ymvlttwormrtliwoy[wrcafamahrcipugxxgy]mjzzpdkuowbrbqtmr +swwktdvpgkbbntq[jujwbyzbmzktmpag]uinhisqwpyszittfqe +qrlfgtcrpyanzwfeuhl[sstllbrafqeobsocmsc]gmfmnisxdoqqctof +znfoqfwiwmxdiixycul[tsxegdjmxscgpfllqvi]fhwwrpconfwceqv[gqpboszvyuduzehsun]hmydskzdmmifotkn[jurqmnkixknhmwj]vcjomeocgzfhftqq +wukfxspnkhedqdbtfti[cjcrwokxqxfqbvfatie]eaohmttcidinhxqtcu +usgxfhglhuknqauzic[jlhntqhcyjuoywthv]hbskrwccmtzgyby[pijipgraqquvxhso]hehkqohxirecivlxnvo[lawgvpbmozisammvpcx]vuchsyinsehynzm +dgnciyptfimtrbmfbcd[tedeoxadobgoobffh]iucidwknmfofwia[bbtbzcwjwiphlcruw]ukwczycabezutqdcc +huxitbsdoqaffnlyxyn[vzcnvdddtezaeymzrr]bmovgbcqswsdmjacezx[jjdtfpukrwhiafcy]fwlhrymiaolokojdkx[ftqdrarkfhfbelc]yfonqpoegjmmxkwhz +ldedcblvfbdacsy[rksxibwzdatluua]agxedenvctglzyvpu[qkwulxegyokwljso]akjfktolnkzwsnn[lfhdwjomyhroqkkzk]mtkhpnffxrrwipsrqet +ajwscynjeiagnubeew[ftyzkgsmsevmdkpyv]ufeszcwnhqpwsep[rinrtwoninoxbqvlgy]mzacylokxrhxtbyut +rdlragvdebqlteu[kitphkhhnrssleu]chisqrsnofxmmbegi +sjzglwvefnntfgofuax[htbkuezcjsfgohzynlp]wquzxtqerwxlperau[kqnbhymijqtvtzxbra]tcwbvbockcilgvn +bdqyqodloytjtcylu[xgwgnadrhxshcyhd]qshqmfdqpzbruygmmzc +pnwkymgknqqdwzmymmh[vcnetknxxjvihfrlvq]cujdvtwltkpkzwkc[owjyboqcsymigajgish]bdklpwzslsjvadacm[mmimdikciuetfjeece]dxwoxjenzguercr +vxgoxslogbrjaxbjg[qyyckvarfyidktepi]odfkcgodqdusnjs +nmumnqunfnuhvtucy[voatnmasscuvwjth]grckxjhdzzoqtpgwm[qwmgudaltzavyrchqy]bmxedeqkwkgoqyrmlx[uqzdpkjekjgfvlnfwh]tpsfewpellmljsakhea +dvvwqujegsgarow[rkjpzfvtrtlpcdlc]kvpqbvyshmoemkhvq[hzbtnbzhmgaufkfvwh]ipdgirduhpdkhcwzfid[jmxetzvqbkrhkices]yzrxhfcakriippr +xyijrstjowvehnp[ylbnnbclmipxjtxtbb]dtynyczfzgqozpa[rmontkapaesmlvuasig]qmuqzwqsoipzutdwz +bdwyvvnsxojfzifhkr[mfdopzhxfakffhoudpz]vqnrhwzqbahbztlynpi +hymeoolncfmkblqrd[ifbyrijjwxsjvmhql]vgybqqlmoilegcrcp +arqsuxhcivbxfiuf[jfqqzwkamooqvyj]awbpyjrtunzulggzmh[iipnlkhwzzmzcdi]ktvdnpdmzmkrqavxsxy[dnoqbxknjvouymfz]brcemvbpovqjdvps +sxhcuagminkkyodlma[zkcpbofatowxfdddhv]iydjxsbzyvvptmrivf[thuzxghsyyrkqbjozw]zicredtdvmavltqgeg +qgvauvsmewyfypvgx[bkzpxdkwztxbpak]ghwmldmcmotjcmun +ivnbdeggumwedodrru[ejwxagdnszmvpyxtsfv]eaabhawecgtctegy +nylnblglukusyetuly[annmbyywmkzxoxcubb]fwslxffcquyfzezst[exsgjgeufpzlscazuw]rebffdvzignmrpriw[qwsiovjdtaimkun]utobenmeyrtxlorxjx +eivxnczlgqbmybivjx[zrbbxnnjprbaknh]gtfbkkxqoowynpt +botxfdjpvcayvpxmf[jysydtitavnzahbeg]zwkgkehpvxtocktco[iodpobnripiqifmexh]zpnrcxntqwwwucz[nwrxbbqtsqmkaiysi]pecfziyavdcfehr +bmfbcrmibywamwmic[npcluivjtbtwmwxmx]mxyepxnjdabcuiexhwi +kezzmzrmfsmhwxfhy[euevwjfsullybtlul]edrcskoqqmtwbhhafnl +yywsnxvznbcockrn[fnmwrszfamgerfhocoa]uxfgnvtphthtmeuyy[houdomoboxleqhrf]zznqyqwslypolnqef[ttbcfuirmlnwevhzw]dmohemntzpwivaab +xfrmjbgozdwamlqe[rdrfdfobgryckvow]gzbnazpqaqxcjdro +vdxepylmqqekuqe[hagzuweczkaioxyz]sndgjumcegndnuwwukz[ymkpvinydrrvfare]oplwhupwenqwloy +paikbyhegnbvcqa[kawvebmxrhzszrncq]noltxgnszsqxfbxbrk +hwifnlppmjawmyb[gulsfllyemlqkcws]wfopsunpcakhzkz[fcpmxchdgicqido]tlvnxgdsecuxsux +yogujlygnpdyhkxpdf[bawcwagtpbuwaorpa]noyoqlkcbsytnzywva[zvdbrjsxhozvyrugdnr]yyehxcwcnepivtjntex +ukkuxsacdvwqkgwu[qfhnxatswcchleqaeg]qynrnkuwuynramm +srvnvdghsmgtyvvli[gujzqjtjtrdfeandy]rypduscceqqfodndh[bssbtbzcdoiygtdse]klhkfnjidkombeom +hrxpcidpccertdnde[iubpwxhlmbnofumjnk]tzjinnaqvzhuqmjgzqs[tbpdksrgbhbhscpnns]kgaslrsilgklgukanif +xhrwvvblyiyyjithaqj[nxzhuqjrftquwsq]juvsrstyudnsyjxqpko +qjjtuuqdjaovcgs[klwmohvmeyujgvauez]faqyixqvshgpkrgvac[hzjbtsvreecwygo]vluysvnbqjuroaondag[qqaysmxakrfjdrpvj]lteebmjrrlysmwocpg +fkemhtixlciygti[babpytzqdpoovfy]ptjooannebsdcfrs[ismooacbkqjciwrfw]wsawvmoxxzwzloxunq[wrjhadcbmeslujxk]zckevlidqnpsdordy +ikapdixlczlrtpab[xyfywwygclrvxmc]tugwitpyopgfhucrrp[zjnmpndgvwlqnsfnemv]xeahjahtuyjwjwxfdv +wjbljlhlkfhhkhrz[kfhvlihkiqprhjno]mhceaicjbnvajugy[rvkrsptmdupaylqsbv]nptyjetdstrwmqjav +nqcmyiscwhuiafdyg[njnrwedfdsnzkyg]rsxrirfayriqxvyqthn[alkdpteuyfothxvyeow]smfyaybytdibkus +msvwpibrptekclckgdd[gdowictxfvmjmdtyimm]nlrlpatlusnrqcydh[zqiivotvmzapjjdzhx]eqxxguxozcbzlfkktk[amsfzydattcuqolcoaw]exjpttscqgketzhe +uqiaugsvrqenozqcnry[hcmsmwdqjcoohwlu]morsyizcifxpoyzes[tdnfcmzkcxkltvom]jbkvbwcolkcpkxdlhy[joounotcqahwjvx]teeotmpwnuvnrgdxscb +xsejzfhwsziaedxovv[accbrvbghrsomiv]glmkioydimjfcneh[xejzphhekszjpec]qfetmjhsfagbzjurrr +qwmyiuonuwttopaz[esdvdnqxftkihzblcc]xxfxmkdxigfxfwadl +gnvhardsrapmlpmlg[gmliinpyvjenkrnnh]kovjprgbyfdknmnbfme[nhzmroniytmwwfp]falokmiuiibxhheszok +zcczeqrlhunbfsxu[ifzbbveczjlfwppp]pvtsdxzdoxrrlukmqmh +rbgkskquxcvswaf[xihgvfvaxkptizohvn]tbntgfbhclvkdael[zuxdeparbafjpwqvg]cpfuexhjmkrdurlbnis[vfmoasavisksmltggm]hsnrpmdkogfxnprmvxu +abttallvhutezhtr[beucmccowruviwqjxlo]slskvryjaodaowc[vqtmaqykahuvoqc]valnulizvgiciruetx[rbhcdafdupnswhn]bppfeuexkximknecfq +hlnjhkjucpmxmguhb[gtoyutdhjwfudqnra]pipjkprnypqtglf[phovsbawbyxsuwsyopo]phkewndekgucmrrbw +bikqggafubkrtyskep[eugvetcxkbfuajpuz]drgqdldmenwxyldlwd[klwzyogvokknfwdqw]ffojmxeeurqxasxgf[qdjndihaiuwjqie]uaatdignzrdeyjddxzg +ddjhxhnkcrmnaztvps[crzhufiibsjerulkslh]snirbjgmmerlrucjlv +ckxphmsmljtplee[mbrperwqumwnitb]aikxmbbxmgsmsfgeni +zwmouppnlfbatcigqkh[kahnxdhbhongbfgmtxy]kfictxvtzrwlzvxees +gfrgqbgweickiocqas[urgmzzgkrwpkfhpf]aazsfnctfvvdrrf +sgndtkclbxdovlte[ylbolooanippjrmyi]lfydwbjkfsgdrecxzn +gfypysbhqsgyoxrtxxp[vdfjphnhrphzphdia]ekhgpckheqjkjinexuu +tagvhpldzimodoca[odnlmmdinuwyazwif]hsresddnysmuldvv[zpnjyvabzrktghfvtfx]jbzsfhvzaglqkstj[leniqywipplvkues]zumzesiphmejqufbn +qhkrsmlwyoxfawk[egspgdlxbrdcwvoeje]pxuytqzjiabwebbmu +wsxvnbuosiwcutjct[nzthycbqcazrnqppb]keasqheprjcqwac +jyiifehztqkdshfuj[cddnloevonuheydyle]tftddpechuzfagnww +zyicuknwqxtzzzy[mqgzslkciigsugirbcu]vadteaxyvnpyhwbec[waifsdqtrcbdnvrl]dygogwgquwnouhc +jltdbxzvwoxlherhs[vuuwuslxdkthbcs]ujzniwntplzaaldguqb[zdcnhufvintzrxm]cunexbzfbuzomrv +huikyoqqhcabtgosej[tqbxkfxeqyclgcqqsu]thtunfddczjfocqmr[vddedigjifexfqgp]otvsknxemvtrpbxw +sgukpjkupqmgtmj[qmvzpbebkypfmje]howlgwptfegdnqp +wnomkfqdtyobjkmd[goockdzswfoumhiavf]noshgjhgufjxgxiro +ivzlyzlnqpslrbldxqw[qmlmhingxmcporfx]bccugkqyzoqaqbv[msgojkckxyuihysrhp]hdmzempetgwwycoy +xzyacqjyialgkmmcj[aqenwwtnrupdsmitna]bhbicwoaervlixo[cggrwmpqsyxfoidjm]yawyxhdkscodboohvvo +aoywrlzjkqkzcmmicvi[lhwojrkhqdearhac]zwhrxrrrmfpkjvrnd[zwdpqkomjgjvkcndhi]cxpctyvgnthrsarfhx[clnierazieohvgsy]eydbsvaautujuqqsr +zfozpdjsfxmbwyb[ignvlhfnrdhybkwhxq]qfxolqnfiyokzcbdy[ohvvpuipajnqwml]rybjvumgzqgzfveqjvy +gkvxesvhovzoekxbmgh[hjnizppxqxtlkdj]mqvvrcdepnalllarg[urffyistzzqlhimfhi]yhndztrezwcapskbkz +qbuqvobipnbazji[qypkenwigkvsjhfdhd]pafhisczyaozydialh +dkocroswvahrephwueh[qtiawejyhzlhsnlaxz]yyelniorfgcpgfxtle +uyuylzyqivmpinpi[nxooflqcmtftzosn]vwxiscnnmmujalwegzl +ewyjffqwxipurwkejav[yxcfacgyuuqpjqxgn]bsxufukndbljizkbo +lglancnskvgdozzuuy[eossyfcrfjnpqtim]mvjbtylaisjdcgyn +lxrbvlmepaibubsqlc[pnndwclekhualwxbpg]cxaynaselbcbisw[evtpqzovucquqbgg]lsscjpanobjuqlpkhtu +wqcqpnmdhfupmmaa[qawfetitfsotgsibhg]vanugoxziwlnbda[apowiuucwbqxkcxry]kithnvgmjbuevopx[okzohlobuxbbjxeul]wrcnqenrhpvmxzp +qwmlncrpjifxmtyxjil[evgtbhnhavfwyih]ganxbqprffolbtg[pxidrhwgdqsycynecqe]sukgwvxkhbzolomvx +vmgykxaeppaasupwolg[pqkilujgqcoxpzys]vtmypzwtqecvidu[nolweceicrhwtvov]uevlxruhysbiedfibc[ytdalspbuzpagzjr]yrkwrgdaptnoxcqqr +fgwnpezirnabdiwcknh[qnwczufxpwtomgr]umwdzmivstlmecryoh[ogyfrrqklslzcqoo]yohswnizpisqpvpyu[bmwnspsfofxvrvqkc]itdkhtuqsybuiom +ynbnpjgaoammxaoagp[xkivkmwwiejjbbgk]ongbnbtqtcxqipe +gxuxnshdgyttcjzvk[lsxpwpvsoquxuazidye]mfihmxgxumzfhnm +ngwlkbdsfkoopeugbf[zkcrhoyehnzszjl]jwkxolilixmiake[kcoazkmvlmmlxhlip]urmeqvldopqdrvrdd +hnlkmhqgkitizzp[dgtnogdyumxjgnh]gazsmgjzighgwpided[vaxfshfsqkmebtkceye]ndxcvfbzddvksncrr[clhmftvehwzwljbp]tooichznleiqlksnv +jgnvwreomaddorfbnna[oedwzjkpxolayry]wdkdtjlmdviveeog[tkbjzabxaqxvbnasst]lqttnyqfnirsajb +yiuwebgrrtctqhvq[dmddhqpukxspoiaua]egktbjgjcfzhltkjtyu +sbfvjniiethddwbjx[guajrdwgcphepysv]qntvmggllbcquzfu[qtlrmikwlmlzfpqufgk]tjwivdcycoacfcwwfyl +mxbvlmxjhiorcnni[ubvkvylqtxbchszgp]kzxkzbjtogzujapfq +aezkzdgfurigqcdxt[kkjkjuyowyhylcxzs]maogxmmqteaectjv[aocufmtewquabwa]wlidntwbxueqzbql +gngwphszdvmcnjj[qvbontopydlzjywvaiq]jbrgkevvbwzvkcpz +qtdsnkqlmcwenkzxodb[wqmskmdllfarzicsce]dmubpplnmipygwqjim[yejatlbffcwmlyrek]gsvwxfaeblczgpdvhhm +ktshrikjzljpacyux[omqqrcsqtbtdqsupfvm]bggungenwwenmztg[kacviemyqpqmwmiivp]petgeydeoygoknl +lvvozapyfvdohboxrt[sqedcfculzdrbsafvg]ioohxzwwppkserbkim[bytwtckhnlhtxgmes]uzwrmuczkofyfgv +ocskfzkwwmnkize[wnjrhvmcynlydnbvn]qbykllzinrgwfvod +eqnrivojtcjljsfcj[rlxxybjowtdptsg]rnnvkyrsxzytscf[mbykscjmwlryaiictd]gmfcxwtjljrpihljll[gxrwqhtelbnpguyvw]lpbbvcxyokowlqfih +sujejaymvqavyvhwpe[vzobezygmsxvqwnnu]dmuyhdixfuqfbnehqve[gwdapthzmbpwtui]hxhsorcfmtmrdqqrzf[dqrxkbkttpsjkqpbnl]qsmueuwxsrnejednm +vmqbwehpqesssnps[jkyzwrfofkfqkse]glwxlfrqaamjejrievu[jhbggigitejevdzgqsm]sqxbxgyvfpqtxrlbca +mlbhjbelhzgprdshat[zcytqxmfhuyriabyr]yzhvmpjfzkhgxavltdz +ctdohoakygysybf[loxbfdhctlnhggxpoq]bimosyslpbihbwqp[fahhvvdfkiiucdf]bbgugrcsmoasoxyymgz[wjhbkirawxanrqf]palckvdfnlhficazmwm +qoetptacgfcrdrstl[gpcfptpchpeiicbmfd]vsjqqgbwiqlndgmop +dmlzhkeleeqkgqvriu[qxzssbjfthbzhdf]inuernrmyomwyre +pcezyuyfhpyebmvanp[jccebfvhvicqksgwyqy]nssvudrlhkckath +mrpkkivxuuozfbxejfm[bkwbwzhwwkfqqlupltj]ngrlyucvbmdilkke[qlzntmxfkeapmlbumu]ynjqdpmonwypyjpalvh +tkqhdmjsbnhbvkdgo[jufmjoypjidudkbcvy]olrsjedkqdbeijypjp +brnhsqltbrizrohj[dlzumegwwcbonaa]llqtbxfulkgjeqw +vxjgwcccalsesmngkbk[owvdclfjsyhgchpt]zgqonnjsnsqxxvqzmqs[wsmtnxjpvzcdpobat]rkgwlaecswhucndgv +wkjmaneymsjdyjd[uvgaxovnqgsvamsbz]naumvynxlnbgksk[mmjeguwrwppdwmdjlm]puiytitjsyskwomrfqj +fquaiztteofhvsbcba[hvstcffflwbvchn]ntvqaedorhoikidi[cpypurqddikmaynmxzx]qkrvwfsppcglqejkn +cpjplvpmbumvgsduald[sowmjselnjpjwhav]flufpydujtzuzusyrr +jfhplkijkstxymvwgz[kbsytlilpsegzanvlee]ywcxnydvgcxzuibxvu[ayieqmzukhoxmcli]rsyubeqkgvobehe +ocsbswhjtvywugym[twhemgyfgdfegogpj]xamojomgxvyedia[rukhjizwdryazdtdsb]fdiecwglfmtfjqxocw +vywxxiyjfwsjhvjmk[mwjsyhoifeimjqtmx]ribwktjvuvxakqqznf[izcdtybzxfbyubfbckt]aocntguubagirsgvz +ursnbtivqkjfkcbls[ckjjoszuogsdnficmhy]wwzjkspwdvilshnzg[gzuoexgingreqktak]ywmfxtqooxdgqaa[bmucdllxdktiifoqp]pvxrfcknwxdjivyym +ebtozyepluaazxsuoi[mocwxdgmeyxmoulo]grazonsbnsnczptl[rusiwrrcbqpybtjfxt]ewazwwjculbvwjgc[jmoyjpbznvzlvnzu]ghwsmgrsqjgragu +cmbehdhyvukkufctwpl[toklbggcxvjerfqozbj]wqbacnegquxmszdul[ggzaznwywpswuxmlmg]swowxuqlmlfvxmznm +qbebmodvutfozxt[macysosjlpjhykkb]qdewwbokbiqofejcsj[ddzpouyuxgogajwmuk]iukkhkmjmrrkefycw +adaobhuodvmkfzrbk[ucroxtaavsmpvfd]nvrnzhxozidrgvf +yytzgmmuqrfqegalpow[eyefbjmsyximixd]sgxjxpfncigzmft[zuwduxnhjiidywvsm]qmdvambkreelttqmv[mqhlvabyxnmnjfpkigl]vuxmnunvxclyhkxi +qdgaknszcwxvyhlrfsr[kbbxnitytjopwtruar]ucanrksrycnoqlcvrd +nqwjdcnwfxkdglllft[gbawkxvzhyiprfenf]ysybkzwywpqwerm[cwsthmeytiuialllzxx]plcctxffnigyhdfmndc[kyyvjcfkxfofxfsrw]cwynasabqneione +kqthcqbvfsncuenmqx[rpokleyrpkohzefrw]txvckiapuezhimt[rrfglfzarznwgchlej]vpnrufinbaqrbjtu[hypcxgeuiotonfxvuf]cfpjwonfyqddtogr +aaxuojwascuilsqjt[aqpfsummtaolqpdi]qoqnuhfpinypgxiex[peasbtrzdkneuriyt]dbhohenosanaxkqqxq[fwvbczhithdxtbdpd]bmncqvxnaijxuexu +mgiepbqfrprbaqd[swsyfijoncrtrigly]bzdkfgrsmwamezhp[minqrxxklutrtrfxps]dacjpwxdrbxhumh +shdjdexuhgauroqwtmd[jpvifgjpgzmjlrnuyj]svvjpufybafcjsoppia[albycpxsvxdykattdos]ewhcfugwuovgnepvovv +ldwjwyzaqxwfrelh[rzkhymugnnpmowx]xufycgvikehdxxggp[mykgpsmatnpimovscqe]cpdwiemofukofnauyh[iicxbleijoxlvml]dxzlvafklkbfhqke +cqdtbwoinxghfrwulij[wwuuffpfxzcckuf]zeayaofaskxfueiq +odegrvwiwncavmxd[smgtzidklnmlnltytx]psknhjsrxwqdqlw[kmejoinwatytdkz]dfziwicdcmfwawwf +jzioqoutlwitjdcb[furuyivyebozkvcny]gfhakdfpfouliybsvk[vfrykghujsittpcxjnj]vjekmvdvwkaffrhhr +rclnyybawbizurp[cptbsqptpvcuchcyncy]rlqjeblagqogxwy[mwexxfjhkiyoihog]slgmmhvjhpomcvgabu[xgipgcmbydzmayywci]tptdbfqkemdnuzvuz +junsrcleteqbngabdh[loajbjvuielphzeel]yquxjlecdumepsr[lktbtwjmyeqrurys]ralurzrcthwtkenjtet +zgykbezaearyhzuxhta[pqtjhajbyttwqzfozi]dzodljvnchwsytat[wrdvidyboznzzbgvxc]fnpmjaiocpucgucwh[kiqymnngzdrlcncpw]xkjzheobflinqcxu +kbaghyebhrmquslcfc[ukdaffinqagmwhvhl]ruyaqrvavvfrzwiyit[jdhkzojqtxymxoaval]qfxsbqwjtsudcet +obscoqxaeartfjmeue[dtceaealpasuxsdoo]zhtpbqqfonksrcpu +bphcztpaoqfofau[wlhtxjzhyooevsax]pvktnvejsbjwsizugxj[aijfjqhoxneawmq]dlfbjynbvobrkyur[swgyiujwbafngtiql]nepaaduwebbpsrew +fsjxwoamqjhjvyyr[johjhabbsofojaxccga]tqcnhtvkimixbyiqt +lrasfxkclqtptlt[bmwhuwhzvfmwxxwla]xghbszjpdbdykjmfvhx[cerzilbrtilvfptwid]nkzdvndlbgkwkgzwatw[njpjupthwiwffesnct]cipyoqwmxtiugbyfmk +txfqpycfderhwnqtrp[cvtdbizqhlxikkw]nuxymppbyfdpayjxt[sfsnmgqrjqrlfxh]dgwdxoveamltzalgyw +ntfdficysbefpup[fvdhtaqmjosqoxosu]pwrbdoceiweqrfyrx[ftlwubetphczbxhx]jolpetpuszxjkxuupke[mbcbzrxeoqpibuyjsgg]cpdzzdzkwbucybc +pwwzjoakzydrvkyn[xisfgbgguunevtbg]ntzbwgeohmdvitrtdpj[fzkkujhplarmvzckn]whvdpxzietgdyfhok[hlmsjxrxxrdjfrzncyi]xvvkjroullhawqdj +pgazkqglbbjzrofkpy[mkeiyuwlxlmgmeugcbb]oguzgbkaasscxhict[lckibbhqnkatvzlqcw]ulilgiydzfsdwngr[qcrozfdctltxaatyajh]ojyzengehkhylgh +zdatmhxwkinjiumoy[qwhfmokowsvzgcngeax]uqebryzrbawakjz[ltilidihghatuhi]lljxtazlhxbrnvwsrc[updgoblisisvpdqngzo]tjvlrlfopjdoyoisim +tfguxgdgurymskwxk[ngtycndepeqrcif]gttrbjkhsbrfczdwxo[xulqdcmgztpjgiajnkn]pgwsbrzakmvblfsvlsd +lclevdvivjogclcmn[kpxlegarknivgdvfymk]kygexxjbzqppiywvxtz +zadpyjsswjcfimejbc[htbpkbzsmbkfeqww]ydwbivnpofvmzvw[archeurcpsapgylrf]teidjxdxdailsbb[nmoqxuhzymlxxqykol]zbesrnrszqdpsbchg +ykwptdjfydxfdue[svxdapsdzsvmsifz]omdvdqwkswiktcwkma[tprmxhwqpdycftzlsz]dyfcmpaaokppkzvoa +adfqjdussbzlxfvlg[hxktcqjmyqctyjnl]ouyrbuvumwwygdc +rrryoldbjkwnauaz[uarnttzxeuurzokpa]clkjazjocprwqti[krkcdnwldqexavrpo]fdegufvailefzfi[izadiszyerlbhwd]myayzynvrymyobbfdc +krttvoiaszqvnme[hlywolnuxbxjhzmnt]lwcvxyuuugaqribebi +yrznsouskotcing[jnttzbfwdrpszrcqr]dhxidpojntnwrrsjjc[dlvjkiqqyrrougz]bjhjvlhvrefihomycx[veomjtdhecgcvsshcwo]iboybnggfhdhymyukl +qtvgzpyhogqojzi[vtbmgswqkcpdzhxwzo]jsmnjadclhgsofgrq[lltxvswaeqdbvbyqj]gvrdvrgygzhbetbkjq +oqmbdnnrpqmjasc[hzdfeapdznngjzjchow]fdoxpevjbqngxrhhlhj +ujszwtyancoxbcga[qzpevsjkmozdbeqf]bdzegnfxtazxdna[wyinvjijbvudlvkwvg]mrgzfijgyouxyio[qehebkkwomsmozoojy]sqhbhyonrnjocbjzfl +hinhkyqfttbnnou[luuiucbkkrnwiuqbwb]ujfitmunviqwhkiziy[wqbetolmyaceofd]wbwbxudxttgmtuxjeo +schrxkylmxpwphllds[iijplekwtutqrdkmsrt]hvejiqeylhoxdpkxz[gbhczsfvoidbktsgbqu]rtfwgjnvhjhemkkvbm[lxojvsbvcnlbuofvwg]ruakyrabueflgsnict +fvqtupyapfmstztmbe[zxtzrmjxlmgshjlfywb]tdihozcziyvstvdtvd[ifzqxsyyhgstjwlr]xihkbuvismdtqtfm[xtxunrrzvtuhjlzoji]zotmlgbjircyvzgcxkd +shkjoyjuiufvxbluji[saofjqdwpwodltmra]xldohzmyameybbnw[zwaispolnanumhtz]hpobrxhytzqmkrkf +jgaozdtecqmpueg[bnfjhfyhdndzlkxrcb]esbfjomhfrfvzgm[wqvhdvpvrbsazqzgnw]lkmrymdcupndnoktuv +mehlgjudopvrolla[ghqzncojnxbdtupn]vacvkbpzsztmzhz[tcvqbgfvrehiycr]unpokrfctcwqexbgo[hbigocuneutkffaka]dwwclmxsripmvcluve +rkdurapdxvohktm[idaisubzmlljyfbblho]kkkxhnkaiaxxyivjsna +ujdjbvlqoavnuoeeilr[tpiehldutfyewbqv]crvmofwdjdesxrl +ptyvtwbbmoujjbvsf[avhpwnutnjkysjdubd]ysgpwvxugjswjzhw[fvgohaphbuqpbwzr]sqvpubqxxhmfxvlw +sslbaaxswqcqfln[nmdfjxyyrexvtxv]wavnexwpbgnrbrwyrf[deouszhzjkbxxrhvkn]xtfqfjexnqgdiddxh[tphqtpimimjxxkkndng]ncngkkzdnhmbqohupgr +kcowklgmyivdmreahg[nhhhjuxwoafzwur]jokzmfbbnzsobiahlhi[qgzkumabuuxqhki]ubnjasaqscrxdjy +ccofivnvzaxcise[erfolydklxltrildvth]sjprbxbfldbsozha[lrbdfwialwqinprra]wqresduonlpwaamhj[nmlgvtrcuqvsirfhwi]qjtgpekylrqmxxbm +fugomjlqyofxoij[prndifttmowgenapio]jpvcsgonnqmvqrxwo[yuioijkmnwkyiba]gtosuvsrcszwsotg[zvtndiccjofwagevdcb]qpdjgtopkcimpfyqw +zbzstwtngoozwdgtkme[mrcfdmgpywwvikyrto]ktlmqekphuekemo[wenupyuqahrgisu]wjyyqsuatrkzlohmo[judqmuzbdrqamof]qiovruvlcreoircteb +yyclnzxvjfymqgrzup[koyfzianzwtvdjga]jtfmxjxehvwejfl[xbebzfwcbmjrhka]oqnpqgevsokznwo[briagugdtzfswfbq]dmnccxrswiebtkwao +muxweanabaymbamknkz[abtqprtejlmchtpy]nmrtnrjxewbqynvbe[rtxnzbwcjbtmvob]segkftbvlvczkgubgp +hkihivjdrqvywhwt[xpciwwigazxeddp]vkaysmwlighihfka[lcyiuojfjmmhltubrj]spandymlggnmqiact[xizoxzguscxtsut]cmjecsmmjasgpvx +kasrdhbhmrlwiczlyp[sfvdefhihrtmmgele]voszgwzdjlvkejvrkn[ahwvipvknuyzrzbrmkk]yuhtxgfpaipuupqep[hezjazdypaguhxkwud]bsfgurgwdetewwg +mkxpacxlrpbfqio[axwgpntpusujnovkpxp]afzkmjvcysdkbfeli +mspmqxwmjhzxqmbhbj[zniufuwcidklzfpuoxs]uvlrvuhbhjhudvx +nrgtmsqbjxlnpsc[hpbskrvswufaucjmjv]pkuulesksyygynxyku +kmopgjfjwvvrfgvo[qsigvjyusqjqziiuwxf]ewkbjkiqfgdwhkot[tbrynegplyfllxcqaar]cybelgkyrndjodpf +wjzkfwmrsnyjitglauy[jnncpybddtktmehxz]hluaspiawjwywug[ujwjjttoevainaxqmer]gewchllvjclaahplb[haewxwlxjjnfggtg]uxmnawcpzfwhfiefo +jogfshkvmshdacro[anluswkewepuhbemk]rwfxbxtmtfgxatwj[lwqompcrkgqzkajgrqg]ckjftivpzkflgbifzx[autylalyokqqlxgu]chewqmwkwewmwoby +vhqxmrwadjsfoprv[imclvgvrtvqfbcllpr]kmgvgofdlkarrusoo +kwkqhpdsrkdlhuq[njldfvflplvygnihg]hikxtejykexrghupbqz[tanglgtyodyncabh]ennzrvfvgcnlehci +hmibwhrmzhcxvzgt[vrdwkryugziqxxfv]tcgmqhirboxwvyy[mjgojhlpjolsjtcu]tphrqucjxjpsdsi[ahqidqxdgeucevqinms]edzoyewnqweqkla +deizsskvkzcsohdf[plhmdlimpiduxfdyzv]iaodhxioxasudzv +aepgcwcwlpdqric[xyxiplpunvajsjk]dkragqziaqxgbwr +keocoxwzsscocdxcf[lvdnlggndlqzvxjo]cajmnvjxphmfopy[bxfnemakuysdjvhzv]ymuttirruskkndjlpw +rrfoglacqhfucnjkhsf[ejgwoteprdneomyqphi]gtsffeskyegnxzfkssz +awgoetenjdtwnpw[hflbiyqshareqvcc]qxwgczjnzceffwk[eumisjskpmnqfmox]dtsifzhnbdvlfaqdkwe +jezzkwqvkbbcskih[cxqpssjfttcropqrk]eqkohazzfagyqpjt[qveehpentvwwdazsmdc]enufhtsnszihemkf +zqokauntjcoqolc[kfjplmodgrkaeuuvq]fqicoryxfrkubee[fcncbrofqpyxdnejn]yebngpgxcbjnivisgza[bpwzrwupgpmtbhg]ufxyezblslkscovzaqd +vdrhbvkjchpslgpwwdt[cfslokjhwrpogwmf]qkxlvkrswbbbhudgk[ryazzfichahhigijhc]xbxrwruzjhyjlwxf[xlulxjmhxnhmkflqw]xtkuftnstlwxwiirwko +qwbqncrimtxfjspgyyn[ysolszsumngdzijn]stfhvhqwymtjpauip[lnucccqwwzenxlytrb]aumcvdswfuucagbkel[skoaaxgeqadxehwvjt]jrjzozvfrrjrsvmov +akweexwajqyahlpq[pjxilukjsvzjerrcdcb]qsptnuxrshmerfccxhb +xbnsmtgyhitmtounl[msqlrxysydxdydbtyho]varxjhsmmqlilsprkq +udmbexywtscnesd[azofuoboewwundyif]mykxybobvefathvqkfx +gjedwdykwqbxqpsb[nykqvlfsckqcgfhvbd]xdactphykfhbpjollax +tinuplnorykjcuete[qqwstzqrupgcliapi]durprlvdyucmbkhceq +zrfmusbfbogbrsin[gaayijtuqfbfnxb]cgjsibujnswdmuhfez[rhatyymizrxrqud]wpvajerbhxbtrva +tpjpjlmhvuorwnd[vnwdgopuigazzwytzbe]uaplhgdvedfaiboz[rqkafxfjjzjwbzwung]cqwjlakbfpqvxspia[chyrracxefgkuznb]chigmcxzjqnzsdn +badqhtkxeokdbres[wmdthitngyoujdumxfb]lnafdeqakaggcdttnq[acuhhjaemkakovqq]vfvloofttmvvolbpgb +myaunxirrlgywdtyrlp[nxinrircujeyezto]tdzynxmmbhjybgz[sxbjlwhbkhpplbveqk]oplketzgeeoczpadvhj +wtqjkfmtshufwfiux[njjvqujaetzgcihtxvi]fapfzhffwqovrvfpatr[hwjfoqsbiothjtrbg]sfwifkjkimjnyzaui +milzoncxkgtbsgtxgb[zvskfgfsgefelbjckwy]lrdralfxvtlupde[kvvibrstieyneglniu]pfyopkpteyovtkahwby +sjwqwumquvxpwokonnd[wooozqoxtlhwsfhtcic]tgzecomscwuxgazattf[dmaxzgxonbkehxgymq]xbqkxgbziuumwex[csesnsjiexhypqrxjj]dbscxozezqgzexrwci +yqgpqvteubzxsmjb[bntiezjqbiywrsq]nrgpewzpshvjwdx[qifsblzcgkiqfmele]oypyewwjmytlaujp +bxlsaiblatkrxpcr[xxnilxrehixaglra]apwnnbwgatzwgmr +rqsogjhjijafydmr[krhzamyodyfpbdv]jkjdjxgdszznhiv[ywihxdwlgdadayqm]cjvrvelwbegtiqswzqr[toujknandbegjga]wvdikqjnnxpuxtijios +dqlbbhlsllmcdejnme[fchpcehhwkjwkythfc]shnipixrreczdblufyb +pljkshxmvbpvswl[gbuflmmaywvbjwibfud]mexysgjrvoxovxtvici[svuosbkwxjzhvmztiq]cvfjfnisqtyomho[jvrshoymwbzcpgxtxl]ysdystgkeioszdbora +ooyljflrcdoujmfajfu[qvnbylveipljcmgrvl]cjfvbounfvjfpsxmbnj[mohdhwcdrykexihcgvb]gfzxjkkqdnspzbqb[jkoiqbqtbjxgezxvsgn]juvveztzrtcxhyp +ebfbaesgsxjbwhkmpxp[dzkhyyykwhayaztjt]xkxdjdlfvlzpqbb[tjdqvwygsgoldpffs]uwccbahfnjkhbfzcocf +uayfnudukxaldfgdvh[tshkbhbydlzzndsc]wtjmhgayuizllbngcr[tfglywxclqmgpeatsva]riocgxwsethrhbh[xnerbhkafskywvgxbdl]yzubvjedgzbpqqng +iensavdsekzfncu[frepnzfzbolseio]thbtyqsviqjozgq[mqobufwdnxkzqvqtgj]woxdzihysaypdxamitb[llqsjadcqlogalbice]xwrmwjiednucqqfuy +lgmcluvxcilrgacyc[ozvsjikotkgiepo]ximiftuuulbsghmm[ykwtdziaokecacpd]bvhsjkjycywcuitep +eoefpqghlbkskrhdhv[wkzmafhoocaswuz]iyiulabsaueugqys +noklaptafpgtvzb[hocgskfdbisxdlcdbq]sgwqzdhmwapbbjox[yyjutkzwybpoeea]xtnvxgftzjdwqhgh[nqgarhtwigpfriuq]etonjczcgfhclbf +tyqqeyfkxjcnjih[edtgzfrlpapwoyrnccx]fmsegnaucwnvsyrsj[lptzjaxumqhbwhmljyv]rugwpouagbvimws +enpywofbxruqkma[lesuqdferlsfxqis]tqkchirhakakvbgf[ytrxxjwygqwaauwjsg]ncrkbikcmvtbtrabvqb +nticpuumzthsihk[asrmrtlzizgsvnvcxny]wjntjizixwyedcrh +yjkotqgkximxcbpa[ttuenysknomggwwvvhe]htzkgoilhlqrpmbcvh[zucaclqaevmjqfuy]pfkvmsbcslkjxyydhk[obfcguogfxfimowk]eczitrwtnkfqyvxco +nbrsaktghjdxrhul[kmtgawzkmntyypqmw]jggmopgbovomadux[pkwngsqopjftulu]ymmfdmimjpxufntd[hnovhrnfsloivbbueip]oreyglwcjkylphqtwl +ufynjbkocygleqwskw[yuykssufmvmdkdntk]opbcqjxsioqpkzbtuhh +nkxtoheqxycxqbp[nmjgqytppiuscyylrm]ezhiobiihpmhkqjc[bewnvjufjzxgfwhy]hslvggdrixjquaigzp[dkaylzejrwivzcl]mxzgkigdgfhmczixkrq +fgcsqpmignjsbxxzt[zoatnmdxtjwltkazbep]wiadjhqakemepgfh[csuxhgjcqjsztsrwb]wdekgrxgngaaqcequ[kjlsrjjtidezpuitng]lhibpbcwjndstunhfff +ozgymklbikxnhme[bbbbemtxaxyxnnazaxm]jszcoclvxluigfgdlq[bkkxgjapnrpvovq]tdsakecfolgpiynztiu +tytomipjwhuqwshlvho[ewcfspufoolvxmeyodk]wrrxjaexfktctmwrkvc[fwdrputsdfepfvglfq]fqhmqffdtqahfpyelce[elfiaqrgaqxwpjbxcig]jmlxcfxgjkteodsufs +zdfxveufnuenptljiet[bxzgimeczdpygyen]ptmmjlitdsoncpjlwh +yfyzedhbbtpqiwmri[uqxjtkmjcivoqatycbc]etqdfgffuplikkgrug[ezipcwmudtfakrrif]kumvfsiqqyfrbcbvgf[upsfgrzgndzpzxhmx]aewrwjwdquhsagmgwah +tkhbexdnhdkmlogvk[rvuvfkiqrvxwewnhihc]yytysizvrtytoqznokd[cyxenputwxkuesw]qukaxyqfxbjvgdcy[rfvlqyyapixtzghha]sjazfjtokjizlxiim +ynwzzgtnjmfjhbys[enxaumsepjmyaapa]tctribvarqtdaceq[omcmnkckmzjjdhjiwvj]qlkbuktkubixegud[bbvvgpocsbliknv]nivyswbiijvnvvkuw +dwncikgxhzvktwgwa[nwmhqzwlvntxvjv]dmbsieiwdzgwecq[uvutvspxpxwfafv]vauzasizdqputolg[ncsglnqbwjshyxa]dtgwditcpcuncdcxn +kupmpwwjcwmmrhum[aakppoytxqucqfncv]gpuyruwkndprpqjqwup[lrcoaodsmpmlhnhnyq]zathwgfvwmumcjwaa +ivdparkbqlazewoujo[tzfulakdrwfncibtnza]titrajiplrfpbsar[rnjnbtkpwadofahdfvv]uwobxeoluadvnxyxwl +kkoyqwkjdgcvqaufnj[qucvzomguivuynsg]cbhahcwrhchflfuc[czlxnbidfvtovgdl]jmyougddwlejoyrfsfm[kcuqcjogcjrhvjpxx]khnizsdkqwzdzehlpe +wzeknwbkawxgvgtq[wmypojfjlgomvmk]tfwjzxvhrbxpkuyk +ivalkzrbqzhiqmjo[olluyctvwisrwwt]ndrunxditvvundvd +zezjmfpqesoftjufk[tdueprzpghkckpq]fnwlbwrhqmmayee +jpmhszgjuxnpjdsbtk[cpzosccgpfbvzuretl]nfpjzsqdvzkcszid[csygzwucakziegi]laqibhadzxurnulc[otxsegwpopkabmwbxzd]ymmsoiqsjnlnsvlsq +srgtzegqicrsutbpfsh[wfdoodrpmioayoa]kfqtpkwcfgyvjeyhvsj[yzcyshhziwjudxmm]xnmgrqxumondortjbye[nyajdyykzhnmolyv]zbdkvkbjavamxrafhbl +ifwabdpxckluvreesop[dsyliwtgkelyyam]hqwleigpcnogipr +bpaukztdyuwjkjrqj[dnslgwpwsanuxvtyn]fxkjtpifmtqzrlok[vfcgvkrunowkiilyok]ypgxcltrqbuzwiqom[ikzgjcafxhxmtgril]btdnvecxukjskjkndz +nghqjtbvhviyatzaz[guzxivxizjukrxwaf]vtggynfcmuttsnrvm[eqvzxmtlkaigaur]dmfhpohcbyjikjl[kxaapmbxolonwgbw]uektjdecblphouwitdv +fxefzaiaeclqyvka[srznplyazbvctgfdr]xakjubrnnbfykcep +rwlthwstbsaxphlsrz[ihywtcvcfdeczmy]lpxfewmiwnskbnv[ripgyxpgczfvxkzp]iltpwldaivxkwwcb[yiejtwqmnnnzywks]krnbkndouhoakztwzh +mwaxggiakwqnbihaaj[pxslpnutqpgdfvhvwgp]nhhnvftzfwdfnrqisfi[hgroxibwekbugif]btrhjqipvkpfvcf +xmxlpyuuqssmtmzqyb[ybwrbnrgkansaodfap]cihlwrfxgbaxddtja +fahbkbakvcwwazgioub[ouuvcmqsmykbkhfhj]gntumiippgacbcl +hqkuhmrurcqtkzusgu[drwgthikmebvdcjapw]vdxfpjwqlcvwpgsflb[mmaxekmyvkxfxye]nlusofrecbdvhbruu +tjyqhrxlyrubiuwl[voyszxwudonuwiptjoy]xggibveyrclwxsq[aolwexwhfxpwcuavvwr]bwkkcnpvsiynoeikmlb +cxpvpcjhfbokvuh[sdkkaewwgkvniqymkrl]emeetymmtcbrivitvn[bvyzmgaorsfbsmqoka]vodjpeovgjpofkq +nupojuxxbgjvlafg[uhfrugmmacqdsap]nxuunqzbasceyiz[ircwdmgmysazaya]qwsmsdywyhklvniiq +mxujioozxlybxvyjcmj[afimhsdzsmtxszd]fsckiqksntizegvxgz +htyhhcuqdfhhniloe[iqslmejacjbynzkw]nenyirdlormvppyym +jbphnkbvlextsaqnid[xdebmjhugwvnodt]spdqamgmvsuftfx +mpdupjaxozerpkit[pcivcugsbsqynoz]zrxxjvwswbpuylnxi[tjoxsullllulompfxhy]zobcdnaypuabmzfn[inubfyjlhoysdjath]vufswsypjkekcrb +qsbiexorinxuevkoad[tjzedsasyapfnvwa]qbfrkhbfmaxcgmovnif[evrexsygnumrldt]serpxomgczhbzjix +ukqzagjymparwzqvw[lnkduutsjulfxuqug]lvupmgsyiquqeepmgsv[ekenewopqmddlcqc]rhnwektxgccickla +ezrytvzepmzxbjapim[knaxuvqciriixgji]epksyimofrrkgawirz[tewvfyplzorvkyeog]bwnejljtelcigsqfx +fngkrmmwapuutwtn[pjrinpthoymdxemoe]qoxhlklweoscgcagw[pyrevdqrznakburr]fnsowwitbsxsdsdv[hzbrhpemwokvyhpohjw]jppmuxhrsdsmmprl +wfpphsvqgdaostxg[abwxepvuvujjmdbhees]uxitcdrdkyaqgtyrdr[rqdczpmmmisomtmop]lnqpzuqcyrdgzrcc[cvzwdsaeorgdzzklrx]ekwjqzkeolvlkkqtj +qzhiltifnugunsngzg[fxfhjhvijjnhnxkbl]bbaftchmgjrfuanns +isducdmcjzbiacltx[jvkepdvzknnyqegqte]zbuvzcrrsbjsqkf[dowjjsipssfisalqwmk]uzrmibeeevzeuxtb[ajzixsnzrxwpekzpy]weogtsmtsuxvjyhy +dnxhdwkvawccsfvncy[odsmukbcbpfyjqeau]ugusdxmjuxjosasg[ouwrwzplzttepynf]avhgcbmjesyqkzjgms +pwyizorvifedguhjqrg[zsafqttsqlygzwmqv]hxilzjvsuyfnyck[dnovwvccguuzizrjw]qgbluurgbxnollv +meqzvrprpthaebpd[htamsljskphtldx]riagbpmpasjnjefv[cvpfevyvpivbals]tgxiqxmhvqhhmrr[cgeamacqfrlrhaoz]vficakheeoprpbows +okkhpeexympjqvlamxu[mvjvngmxhkbiaygi]pnwoitpqlyqaiwdpf[ryfcbkcyzbvxuyngw]xxgknvjauivacqxr[tqmanixcxxbolxf]orhkvkwpyrwbymux +ipwcjobowzgrgzmnf[uahjinxxnmyyibzp]badwoisgtafnkgnp +bcbwbvyvqpozfig[twwsbwyhvfaddwo]jogvkczzowocmkwwlla[yedsazzkeklftvohfqz]tghtcjemmehumuyxar +bevtohpxkrlrjjen[jxnohlogvkugugmk]nrxomawkgbwlnqwb[rtjoeivssknwelkhv]dihcnpigtbnwfdlxhm +upuufvskhseazwfttq[kkipejrjmxwmqjsh]xquyqplziwgvkkiyv[iirqohxpmcxsjryb]ajblnptlfnukvae +sijztjuwnyftelgytm[mgirqlkcbaigiyx]wgbeoandnwaudhgvd[drhbrumogcajpxnvqov]vwandmoxgzsokgfs[xwgtfizcmyjrfzgejhv]nhckviycimfezwefw +gfgrgtizxajkaicjcc[mftrzuftzrgrwilsv]uckwgxywnamzjglbnts +znbgncjrhyxaxgd[xyyzkorhakwqubjzk]wrsdvjsrsdorwkgr[krrqukxrdobhkzmr]mdebvnlirbtdbavpj[adbczigmaoreudvgns]yqxeoeccdlpuwyvf +ymjcaobrviuqtvxjqq[jwpvalizcmbpfdjk]wmxpzhqvcavedvmhtn[llsefbpkphhetqhbj]qryznzcexwgvxni +ginmrsljkrcminltayt[iarzxlzixokzfxiazwl]aircthhepljgylm[wlorimkebaxcvcwanlh]bihvjtofcsnvuem +zdegfhthlaitfojyj[bltnoljmwcfdvle]gnadpzusiepwthtv[ieuoyrprfkwonhwjt]wwfphscvjchvrab +kdnddjueyrofzhjdzcs[asdqcpbunitvxrwi]usylnhwfapvczeb[ozrrpkegwtbkftyeusg]pncbcdrovovzozcazn +lkksyjqoayppxtvns[csiuzvhklkfijem]xpsmnkdmivkitka[djmnmzweqxrkfomzqhr]wkzmhoiasanmhez[wojpalkldcaopeg]murhvjrgpwxpbveekq +jawznxjorxwvflmkk[gafmrermlounwjqod]nalazknfqhepgnelal +wlszezwacdeehnlnoj[njlzbwkfnvnbwim]fydgpvvovkuardng[gqxvckevjodockykp]qsbtvwpwaaeatbd +bwwttxctuzuezxfdz[apvuanhzemgcupc]qcfxkvevimwvwpu[zhhorxgplrpuyabae]gzabsprhuhwrtkd[sqhumhfqwdgxthu]fyebhdninkahfyy +hhttjuhgvcgkisaqof[obpleewrfrrsgpumz]umcmeaytqjlqkyrawp[rhkhciyzmxciiysv]kszzqcmcylslhlpqjag +fnevugmjjescvvmbmt[bjzdquqohnusozz]fwlevkwzllmptbcelsh +hzqfveaxrqycvuolynx[ztsmaipixbuhbmv]ebvofyoeponbpip +utmnuyowmxipzhde[yuvqwfsuyhonciiepq]ynjvqvvifywnecwzdk[httqooeiilokkjghwjq]znixikpswkpgxcchuyg +goojhvcnizyiukzgmwb[euyvjdmnjjrkjwpu]puidllwqpsddlrhx +ysglduipsofxegb[kzrbdzimejxkyftyuz]aekosjomszyegyy[vpkwocloupebnjeo]ocdaynpnnytwrgkn +anheyoxddpkmqla[isqzqeuwwitvtqy]jnchwevvrgyznqsomum[kribzkkrxawjnfsmiux]mlerrnvwcydnfckydfm[hwouaafteeabtgflb]acwwvgztxwcanzizha +kaqernqhzefzthuc[tiuifctajhxawtoi]kyqdkeudzkihvfsn +vwwekuavrftztxb[aywyoempmajrdkxpsc]eibnjbszsfsapujqn[rxpcsihuzszefcdzl]gsahdvozzgxjhontxk +ymjyffbcgimsalujegr[dnppglortkqlowskj]wxwtxtdaaopcyvp[xfsnsdrlopdotuqx]sprrvphwennltlddiw +lguyxqxdnirprljpkec[gevtjwbiofgesdwil]phnydixjjjcprpxlpj +mgjnnftohavesepu[slwhvezajhvdukghl]hdhtlheqzqqrsqmfqyz +iapqmjgrjnecxylopbo[pnbvgmbhbcmcnpsf]opurzpqoyxdxfkud +efuoofbuyjoaqjd[achnmlslfvovmgt]xcuyvikslsewgqlx[gjxolnhgqhhglojjqhy]iarxidejlgphqwaei +uxpcurtzqgpgtzkvp[mibqtgwackcedfri]otnnsgolldyzdpbew[tmgiijgjuvjykwahml]xxgjgzmnicxmywdubrb[hwhcgbzhuoankdubft]rxqzywfyuliatahn +uhmufcxuptehmuf[sygthxldinztzudvs]bdxukzqaxeavvrbqmuz[wovugtpgwisttusjlet]tpfbcndafwhdnolv +kwknefvhmzbtjezkh[zcvncbptzekirhqo]qvgnyfkmrnxlgxzjjxl[twxzjkybjlrpurfmufa]lclhwuylibekjjxc +mspxottklkidvlomd[rhiachlbqgpdhfnxyc]ekkxgijnueonlkpfkm[dnwcjiihmpjqtmb]dkknlqniolowydd[dyqofryhvgracxeuivp]pbsgttbtgksqqevytrb +pjvdfpsdlampeztecfq[lpqshzeegwiouas]nwxqaoryigyvbby[iiddsczjoxentwv]weexunkmtaaufurjz[meywmosucyrxzlgxi]huqfmfpxdmcmqfk +abbhujqyoaphnruaih[yidrkxgrxeoarph]fvryghhzqrobkbsck[dnokdwmkbktlfoihxl]ttptfiadsswiwsfbvf +djwqivpbexyvdquh[qmmdydhjbmunyjixviv]nradabzesdavhasjbjs[lsabjblhocebvyhfee]hwbyvnzltgezasg +maxofygcnygnwefsb[gdfccusdbseqsqfwva]cxdmwhnjitaazhjftn[kcratndpffdnbopd]wocybndplnotqgctr[ymceqbtulsezvftsi]eggtzhqojksdjapnv +lzihlroqvmeohnun[wskcytlimfagjyd]tnehibbupupuhepqz[hschjdjtzbvavum]zstmglsltkovvckpmqr +syzoikkgzplleoaz[ccpsffhupzpuhjcw]kaswkcoyhlrayhikme[qnjnztjupvbwyns]ggmkqikeziailzpuv[ugqgbpunztgvsxsp]mntxaumliefzkpnia +dxnkgspqhyejogxstsk[jfgckouqypxttst]axtisjbtaviwafh +baxazxlkzlyzvbdvtlc[yhegkwrrluxcnaahyl]nyegiipdjrnjobyjp[ulhbizabyukfvhmdg]hgmxctzxzewckasi[fuvwuolxkcfdkmtcngk]xvmvoydeiuaeawcz +bkomgyefwkmwwpsayb[rozknmkljogphrqywyo]vlpasefojmrzbpox[epogjnrjrntbcnzha]okfkagkfyagcszueu[gjpfnuvnazbnqylfm]busunenasatqeieestf +dwlbzijjdujfhotvj[swplsznswlgnaud]bgedlfxgjbwxekq +ffjhdorivdezjdb[tqkfrzxthlxadqstmqe]ttmrscyvbrresartqnh[rfztsxgbedcdecgv]qxcsxdqhshsqtjtl +zwosebsoogknldkh[mkcucbphbvnaqyxjope]aibznttouadentsy[xfucuvnlnchuawcapcq]jqherkgzqodpzydtgu +xondkuknycfwyenkceu[ugjlxueqtcyhyhni]bbofydvkhtjgxxnyrc[gpnwoarvjltzyhhe]qebolgjnwnstokco +cygilweroxmbmbmx[hopxissehjarmezawol]exywzaffjuhehvmbm +nbndomwcaauiluzbg[qjxqxhccqsvtkwm]oazwbouchccdhtrbnbv[vetwfilwgnxxxrhxar]mrbcnwlpciwpizkxj +xuabbxdwkutpsogcfea[tgetfqpgstsxrokcemk]cbftstsldgcqbxf[vwjejomptmifhdulc]ejeroshnazbwjjzofbe diff --git a/src/main/resources/2016/day8.txt b/src/main/resources/2016/day8.txt new file mode 100644 index 00000000..d827762c --- /dev/null +++ b/src/main/resources/2016/day8.txt @@ -0,0 +1,194 @@ +rect 1x1 +rotate row y=0 by 7 +rect 1x1 +rotate row y=0 by 5 +rect 1x1 +rotate row y=0 by 5 +rect 1x1 +rotate row y=0 by 2 +rect 1x1 +rotate row y=0 by 3 +rect 1x1 +rotate row y=0 by 5 +rect 1x1 +rotate row y=0 by 3 +rect 1x1 +rotate row y=0 by 2 +rect 1x1 +rotate row y=0 by 3 +rect 2x1 +rotate row y=0 by 7 +rect 6x1 +rotate row y=0 by 3 +rect 2x1 +rotate row y=0 by 2 +rect 1x2 +rotate row y=1 by 10 +rotate row y=0 by 3 +rotate column x=0 by 1 +rect 2x1 +rotate column x=20 by 1 +rotate column x=15 by 1 +rotate column x=5 by 1 +rotate row y=1 by 5 +rotate row y=0 by 2 +rect 1x2 +rotate row y=0 by 5 +rotate column x=0 by 1 +rect 4x1 +rotate row y=2 by 15 +rotate row y=0 by 5 +rotate column x=0 by 1 +rect 4x1 +rotate row y=2 by 5 +rotate row y=0 by 5 +rotate column x=0 by 1 +rect 4x1 +rotate row y=2 by 10 +rotate row y=0 by 10 +rotate column x=8 by 1 +rotate column x=5 by 1 +rotate column x=0 by 1 +rect 9x1 +rotate column x=27 by 1 +rotate row y=0 by 5 +rotate column x=0 by 1 +rect 4x1 +rotate column x=42 by 1 +rotate column x=40 by 1 +rotate column x=22 by 1 +rotate column x=17 by 1 +rotate column x=12 by 1 +rotate column x=7 by 1 +rotate column x=2 by 1 +rotate row y=3 by 10 +rotate row y=2 by 5 +rotate row y=1 by 3 +rotate row y=0 by 10 +rect 1x4 +rotate column x=37 by 2 +rotate row y=3 by 18 +rotate row y=2 by 30 +rotate row y=1 by 7 +rotate row y=0 by 2 +rotate column x=13 by 3 +rotate column x=12 by 1 +rotate column x=10 by 1 +rotate column x=7 by 1 +rotate column x=6 by 3 +rotate column x=5 by 1 +rotate column x=3 by 3 +rotate column x=2 by 1 +rotate column x=0 by 1 +rect 14x1 +rotate column x=38 by 3 +rotate row y=3 by 12 +rotate row y=2 by 10 +rotate row y=0 by 10 +rotate column x=7 by 1 +rotate column x=5 by 1 +rotate column x=2 by 1 +rotate column x=0 by 1 +rect 9x1 +rotate row y=4 by 20 +rotate row y=3 by 25 +rotate row y=2 by 10 +rotate row y=0 by 15 +rotate column x=12 by 1 +rotate column x=10 by 1 +rotate column x=8 by 3 +rotate column x=7 by 1 +rotate column x=5 by 1 +rotate column x=3 by 3 +rotate column x=2 by 1 +rotate column x=0 by 1 +rect 14x1 +rotate column x=34 by 1 +rotate row y=1 by 45 +rotate column x=47 by 1 +rotate column x=42 by 1 +rotate column x=19 by 1 +rotate column x=9 by 2 +rotate row y=4 by 7 +rotate row y=3 by 20 +rotate row y=0 by 7 +rotate column x=5 by 1 +rotate column x=3 by 1 +rotate column x=2 by 1 +rotate column x=0 by 1 +rect 6x1 +rotate row y=4 by 8 +rotate row y=3 by 5 +rotate row y=1 by 5 +rotate column x=5 by 1 +rotate column x=4 by 1 +rotate column x=3 by 2 +rotate column x=2 by 1 +rotate column x=1 by 3 +rotate column x=0 by 1 +rect 6x1 +rotate column x=36 by 3 +rotate column x=25 by 3 +rotate column x=18 by 3 +rotate column x=11 by 3 +rotate column x=3 by 4 +rotate row y=4 by 5 +rotate row y=3 by 5 +rotate row y=2 by 8 +rotate row y=1 by 8 +rotate row y=0 by 3 +rotate column x=3 by 4 +rotate column x=0 by 4 +rect 4x4 +rotate row y=4 by 10 +rotate row y=3 by 20 +rotate row y=1 by 10 +rotate row y=0 by 10 +rotate column x=8 by 1 +rotate column x=7 by 1 +rotate column x=6 by 1 +rotate column x=5 by 1 +rotate column x=3 by 1 +rotate column x=2 by 1 +rotate column x=1 by 1 +rotate column x=0 by 1 +rect 9x1 +rotate row y=0 by 40 +rotate column x=44 by 1 +rotate column x=35 by 5 +rotate column x=18 by 5 +rotate column x=15 by 3 +rotate column x=10 by 5 +rotate row y=5 by 15 +rotate row y=4 by 10 +rotate row y=3 by 40 +rotate row y=2 by 20 +rotate row y=1 by 45 +rotate row y=0 by 35 +rotate column x=48 by 1 +rotate column x=47 by 5 +rotate column x=46 by 5 +rotate column x=45 by 1 +rotate column x=43 by 1 +rotate column x=40 by 1 +rotate column x=38 by 2 +rotate column x=37 by 3 +rotate column x=36 by 2 +rotate column x=32 by 2 +rotate column x=31 by 2 +rotate column x=28 by 1 +rotate column x=23 by 3 +rotate column x=22 by 3 +rotate column x=21 by 5 +rotate column x=20 by 1 +rotate column x=18 by 1 +rotate column x=17 by 3 +rotate column x=13 by 1 +rotate column x=10 by 1 +rotate column x=8 by 1 +rotate column x=7 by 5 +rotate column x=6 by 5 +rotate column x=5 by 1 +rotate column x=3 by 5 +rotate column x=2 by 5 +rotate column x=1 by 5 diff --git a/src/main/resources/2016/day9.txt b/src/main/resources/2016/day9.txt new file mode 100644 index 00000000..493df1bf --- /dev/null +++ b/src/main/resources/2016/day9.txt @@ -0,0 +1 @@ +EXGPFSKT(4275x11)(700x12)(33x7)(13x10)YMNCBPTTVSYJF(8x3)ZLNSMHML(654x8)(80x11)(73x12)(46x13)(6x2)GZBCMO(14x11)WSLOVGSEUQSCOU(9x5)PTZEOKTCV(14x9)(9x3)RWHPLNBSW(559x12)(7x6)ECGZJKJ(116x6)(3x6)QRI(10x7)ZELLLAFGTR(86x4)(2x12)JF(22x11)EGZDZZFDMNIPSTKFJPCAHC(7x12)FPOYHGL(2x1)NL(23x7)WXBBFTECULOIUVRQNSUEHCY(183x7)(74x3)(4x5)GYKH(8x13)TEHMVNOW(5x14)WYXEW(33x10)MMSQVRGIKPIKBMDVFYUIJVITMMRAOEBQO(18x14)(11x10)ZAJBGEUSGVC(58x6)(27x11)OQBORSQLXCJWWMQPXPRULKTXLIO(18x7)ALNIJHLTLOXUFGFADH(8x13)EJCAKUNR(81x14)(74x12)(7x8)WLDRUDW(4x13)ORTI(1x6)D(22x3)AZHREXMWYUDXGVONIIKQJD(12x1)FMCSOJICPMCX(139x2)(5x8)KBPOT(16x5)(10x2)ONBEZABRPW(13x14)(8x9)RCIWSSPW(46x13)(9x3)SVLAKYMSZ(12x7)LBZJIJKABYJW(9x7)XRMROBHUO(28x9)(21x10)HSBTOHZLXPXMDHKCLIZNO(28x15)(21x11)XPNWQSKYYKPCIBVXVGGEA(1646x5)(719x13)(75x3)(25x4)DFMNLGPWRZEPXIXVKMNOKOHLU(37x10)(31x2)(1x4)E(10x10)XDVOAGCQPS(3x2)WBY(194x1)(37x8)(30x11)(16x13)TJMYJWLNSVVTJIZU(1x11)J(46x10)(27x9)HUAFNEBKKXVZKXQZSRPPQPRHFER(8x2)(3x4)XLZ(32x12)(25x13)(18x13)HOQIRUQBNZIFGDEAZZ(3x7)HZP(45x5)IJOFPXBMNLEZMFFTIPCVTIMXWYPGWIIKHXUWQWTAJYKJA(61x10)(54x12)(15x12)LCIGFYOKGRQCMRR(26x1)RJHMEFCWCZATOWWSEAKJDBLRDW(361x14)(16x5)JKQPFKKPXYMLHMDS(5x6)BFPHP(102x12)(58x10)(1x12)O(1x15)P(26x4)OXPTIJMNDCIMDEIMJGEMCKOOXX(6x12)VRTINZ(30x15)(2x8)OH(7x10)JYAVMNQ(4x12)PWRQ(28x6)(11x5)TBFSTOREUDV(6x5)WIMHZH(178x4)(9x7)(4x9)BEBJ(9x7)(3x13)ZYT(79x1)(14x9)AFXRFZGFMAQAGK(12x1)RHKJWFDUOBZM(12x2)UUMDTFGWMSTI(16x11)MQYBNNSKVREPNFFH(15x7)PBLFBVHHLWUTZUL(38x2)(13x4)GRQKWRIHKSIUA(2x5)UX(6x13)OFCYUJ(912x3)(330x3)(4x6)CZOF(313x10)(72x13)(8x7)NQFXMGRF(18x4)YWVHOTNROCDFIBHUJC(28x12)MPOIGQVEYBGYMZHJZBQRQRTAGKEG(56x8)(2x10)QH(6x1)ERSBGM(24x6)CAPYVJCWPFTOWXGXGVAHLZKU(2x8)MF(82x7)(3x1)WFM(4x5)RWGJ(25x8)ZGYCHFCKSQTHQQYTCZACXIHBE(5x10)PXKMA(17x4)CRVDERSIDHWZMVUYA(34x8)(28x2)FNXLBLNQIAGFTPCMLYBVYRFEIPJG(37x10)(5x2)THXHX(14x15)XGPLXZGKZBXJPI(1x3)I(179x6)(6x6)HZSKYK(50x3)(32x13)(5x10)VZKDL(4x3)PRHF(7x1)PREOWOU(5x13)LVVJL(105x3)(11x7)XFLDVQDYPZN(63x6)(19x12)KIBXJQKQWQJBFDMNKRL(31x3)ZDTPHEXZUKFLYROFZIKOKDTEUWAFUBK(12x11)FEIOHBUHOQGL(19x15)(12x10)SEODPOPKDOZJ(4x4)JBPF(347x4)(131x14)(56x10)(14x11)ILUNXGLXEZYRYS(20x5)NKFKCYSSTFEHMUPJOIDG(3x13)TYL(62x2)(1x14)O(8x2)JBFPALMC(16x2)NWMKTVWTJWCUOMST(13x10)PCETXVEEISPXL(34x10)GBUSPXTCJGGSWKOGABZSDYTTVTCJNVDIDG(13x12)OFVRQHOMTZTRT(6x7)CZZKDI(129x6)(39x5)(23x5)HMGZFDKYHBVHRYEFDYQVRVT(5x6)ZZQTO(3x7)ZMT(4x3)HMXK(60x10)(7x4)TWQTPGY(41x15)YIVNPYAOROKEZWECJMMKRDJBBVIGZLLQMTBFMLGWY(4x8)ZYON(1860x12)(987x6)(592x10)(167x10)(104x4)(16x13)YLYAAFMPWUADLLAA(26x1)QGJCGUAESHZXRGDLVIMAJHJFEK(13x4)JZSTUHASJWQLF(24x8)XWHGLLMMJOPBDBNZIOWIPVOF(23x11)CSQLVALTRGFJTPQLDFLUHDL(9x5)(3x13)ATH(7x5)WFSADAG(130x9)(53x9)(9x10)FEMVPYZZE(21x10)MQQIROZEBCGCHUSXMDGWG(4x10)BVNJ(27x13)GBIEDUINCXYPVIBQMMZVOFINIAJ(31x2)(14x6)FCBZIDBBMKMNWC(6x7)OEEWAM(51x11)(2x15)TW(5x7)CXFTR(11x11)XBQRDAHLCLT(2x14)SH(1x11)C(83x2)(77x6)(1x13)A(17x6)EWLJMXWWHKCPXKXYX(15x12)SCGDQSHOUQJSUJW(10x9)XZKRTFCZGT(4x2)QSPO(126x7)(27x1)LSDKCBKMHTMTVMRDDCXJBEZWMZZ(13x10)UKSZQOQTTAFTF(10x3)(5x9)CTCXT(2x10)PQ(43x1)(37x9)XSLWUXQHTAEYPEAZHZRWHCSBATQYLNWAXIZFZ(1x5)R(374x7)(167x12)(54x6)XBMBHMJCDGMKJNQNVMTBYKJAKZSZUBGUXIOMUGOXLUAOTUZSLBAUUY(2x2)KD(28x8)(9x5)QJAGYOCIM(8x14)SLUYWRFK(60x5)(1x12)Y(33x6)HHIGXAQGEPVUEPNHKSSKUMONLYKELNLQI(8x13)CPKZBJXB(192x1)(46x3)(17x11)YRPCRLQDUGCUWSSXL(8x1)ZCUZOYJE(3x14)YPU(79x5)(33x10)MPUPPXIEFXGWMULKTYHDOAGDHLJHRRRCJ(1x12)E(7x1)TZOVONQ(14x3)KMXWRLKYTTVCWU(49x4)(8x10)VMPCJQXL(15x1)SKVVHKKMHDIQUQJ(2x3)HY(2x9)ZG(11x4)XFNOZSNBKRK(465x12)(18x5)GEXOEINBKUNFIOLURE(419x13)(119x4)(26x10)(4x2)UALR(10x12)SIIWBAUPWM(59x6)(43x5)SKTSLHJOATIMRUUTOKGTPUCWRWLEYEYDKVJBQOPMXTR(5x3)JFPZT(3x8)GXX(7x15)UVIQZJB(2x10)XJ(24x11)TPOQLQZKFCYXOXVFSLIJVECQ(246x12)(12x3)NZIQPEKTVARU(54x9)(3x9)NPB(11x10)AGJZXFHZLLH(7x12)LPQHVGY(2x11)AA(1x12)I(59x3)(1x1)S(19x7)WPUSQHIOZKQFOWHYDFA(14x3)URKCWDSQAEYPCI(2x14)NC(61x4)(5x7)TKVYH(4x2)PDVV(2x9)HG(17x6)GVOAMZYJQOXAQJGSQ(7x7)CLLMQWC(29x15)(16x1)GDUOOMNVGYUOSQYB(2x6)RU(8x15)EJYAJQGY(369x1)(361x14)(21x1)YJBFRFVNNZCCYFKRBYYVC(156x12)(7x14)YHUFOAM(2x11)XP(29x6)(8x4)CZSYISLG(4x10)HLDW(1x4)S(10x4)WNCMYPKQFT(77x15)(5x8)UGNME(18x12)URSWKSHFWAFOXIMZPB(5x7)QZERF(2x7)OV(19x1)NOLPFVRRIEVYQVSZDJS(150x8)(5x8)OIINF(12x8)KVCJZIRYKXUY(73x11)(2x7)LA(8x2)LMEXVNOI(10x1)NTMQYFFNBZ(4x7)WTDE(22x5)DXWNDKGMHYGACWOBAYJRNY(36x8)(4x10)FKHP(19x15)NEQXWUKWXWTTCCVQYYL(7x14)WSBOVTP(3038x7)(41x14)(22x12)ZWNVASWZGVOIKWCODFMDCI(6x15)YYYSHD(789x13)(13x1)(8x9)EVGUCHWQ(510x6)(119x13)(111x13)(6x11)QDRYAJ(16x5)RKAMGLXAVFFTPEBZ(20x2)QFUGELMPXRQDCWEHRJEY(44x15)(2x8)VK(2x2)HD(7x14)RWTSNSB(10x12)EWQQLCJCPC(6x3)AGWELW(364x14)(11x11)(5x11)DKNHQ(59x3)(19x9)OTEFEVUKQZGSTFRVYWP(9x2)LDGOBKPTQ(13x12)(7x14)ADLOZYC(137x8)(56x10)(2x6)RW(7x15)HUFOIGT(18x8)HARMVPJZRJXJNGZDPO(6x11)PCUKHL(67x10)(28x11)PCNQWAATCRKZFHVZNHXYUUPYFWVF(1x14)V(1x12)S(12x6)YQQZXVTFDVTJ(130x5)(8x12)WYIJMHHZ(3x6)SQB(14x3)(9x1)HGWVWOFXQ(10x7)QGKSPZKEXQ(66x2)(3x6)IND(7x3)TKRQCXL(18x1)MYODGXLSNEWKNSUZYX(10x4)MOKRMBZEHQ(1x3)Q(245x13)(230x14)(222x13)(19x4)(6x15)UBRZZX(2x8)TE(58x4)(4x9)DPLV(8x1)SIDQXUSD(1x10)X(23x4)HZYITSFYWXIORUCZZCMDSGL(91x9)(8x9)JNCNQVES(10x1)CLUYCEZAOA(3x3)XJO(20x14)BUZUTQDYTQXYAZYTJDQV(20x13)KOCADZBCUGHFESCAKGOK(16x13)AWJNJIZCSGXFBJXI(7x11)(1x13)F(2x1)BK(1711x14)(223x8)(215x15)(178x4)(29x9)MAGFORTGLLSMMWMJEUHFFNFBCRMSC(5x6)NFCYQ(16x13)QNCOOJIQIYABASQS(96x11)(2x15)EQ(43x13)GLKEUOLATIDSXLGUHFIORRWTRRINCFXLJATSVCJNNSO(17x15)HBCIUUHVYSZNVGMRN(8x10)GFVPTGYM(2x8)TE(1x12)N(17x1)EZTFYIDDINVGFYSEP(780x13)(353x15)(3x4)MGC(10x7)SCWQDZWYAB(92x14)(8x4)(2x15)NX(6x14)(1x8)C(60x14)(15x3)BRXCIFTLUEAIBRO(9x5)NOLTRVJOA(6x12)FMSVCV(7x14)DQAMZQX(215x3)(68x7)(8x14)TAXQBMFZ(21x15)OITWZKZBCMVBOYYFHNBPL(6x6)QEPQIC(3x2)SNT(1x12)B(55x7)(5x9)VKRLX(13x14)UDHUZCEUVBXJO(8x4)RJJKLLAH(6x14)OHIDTS(4x14)ITYG(21x5)(1x1)W(1x4)I(4x6)KILC(36x14)(11x14)RITTDRXXDLP(11x10)PRDGKVIFDUI(2x11)CM(182x8)(51x12)(7x2)BWELDSV(3x10)JEY(11x10)GVLHUJMDTVT(6x14)WACVKS(117x6)(63x10)(9x15)MKTMWEPXC(5x10)JABHS(24x9)MJJYMDBMKCASLIXDCGWSXUIN(2x6)SW(7x12)AMOCBKG(27x10)XDVHHIKNMPJXAIOREECWPNVMVKS(223x5)(99x1)(7x2)CBMGYMO(53x3)(15x6)BAAOTMWHHNHEZGJ(5x13)DUGTH(15x4)JAUKYJRIORHNRAB(6x11)MAPRYB(10x3)IAJYWAFXIM(111x3)(5x10)MCBCA(36x6)(6x4)LZEYPF(10x13)AQUBHKOLTE(2x13)AK(52x5)(7x14)DDRKRNY(10x5)VFHONXKURX(4x9)UKUY(8x15)NIYAUWGP(686x7)(61x8)(55x5)(8x13)(3x4)XJS(12x12)(6x10)WLUSDF(3x10)XKP(8x1)SFCVKSLY(2x3)CP(237x14)(229x11)(81x14)(7x8)UBVPDAG(13x8)MXAHYLCWDKPIH(17x5)SLTNXXKTFVARXXBGO(13x5)BDCRYEZKXFXEY(2x14)TA(58x11)(36x6)QVITJPANFEIDLDUEIBNICBSMEQZBSWQQVGCT(1x5)T(5x5)SFCVM(58x4)(16x1)MATNEXLFWYFTUWWR(8x3)RASBWVWX(3x14)XXY(8x11)XNLOMORW(1x9)Y(1x3)I(359x11)(89x4)(25x14)(1x12)O(11x11)SAQDRZJGAUU(8x11)CKZTLZUY(8x7)(3x2)DFZ(7x7)MOQCZTS(11x10)LHFKTDYZQSD(88x11)(53x4)(1x5)C(10x5)BERUOONCSJ(1x3)C(19x8)WBDYTHXMQQCLVSEISTT(23x5)LLZRCXQVHLWBCUKVQVFXBQY(162x5)(57x7)(4x10)XALW(9x9)QNJMMYHCM(12x15)BTRLEFIHQMRT(9x2)UPAWFPMKE(3x6)SCQ(3x15)YTZ(75x14)(16x11)SBPEWETWXGVTZUXO(4x5)HZQX(11x14)FZCDGEVIZEE(6x5)KVPGOQ(8x12)ONZPWNCS(51x13)(45x2)(39x7)(24x8)(17x11)(11x1)CHNDNHXBFHN(4x3)CXJB(407x13)(400x1)(132x8)(6x13)LKTZZI(9x2)YLBLZKYPS(99x13)(3x9)NOZ(17x12)(11x2)IATQCUARWUM(2x7)CK(43x12)(8x14)CMFYZEHC(7x5)YROKKKP(3x5)HQF(4x8)GNJK(4x10)PHJF(1x5)Z(54x2)(47x10)(18x10)ZCTVFHIVURCAJRKCDQ(15x11)HBIPKLREYNWUHMO(188x6)(79x3)(11x8)KZGMRZELKER(27x15)RYOMUMMRJVSQTHUKKLTAEYWAQTW(22x8)(1x6)V(3x5)EWY(3x9)FYV(9x11)DNKDAJFBY(70x15)(17x15)(11x1)DJXXFHRAKPL(26x6)(4x5)FAGX(10x11)EBFOAWIEQP(9x9)IJLKNETCB(5x15)ABQPQ(579x3)(29x7)(9x5)GTXCFXTKP(9x14)(3x14)VRS(537x7)(529x11)(344x2)(66x12)(7x9)(2x2)CT(21x13)(4x11)TTXD(6x1)OAFJIF(13x3)CBXPZYOGHJSWG(1x13)M(50x2)(14x15)(2x7)NL(2x1)XZ(23x6)(16x15)GTNPUPURKNMRRWQF(6x7)HWPRNW(197x5)(5x4)EYQWV(75x11)(8x15)UPJHYIQU(36x5)GWMIZBKNPLDITWVHWHXHJAUEEMCBGUWUMMHX(12x12)NPQXLMXAKXFJ(98x10)(1x13)W(10x6)LWLZRSBXOA(9x5)HQZGJGYGG(6x9)IFSNXI(44x3)UKFXTYRNYULHXGQPTKZDMTTSSNNBHVGXJLSMUPLGBVPN(170x14)(11x8)MGIYKALHMUW(146x8)(4x1)PMBT(12x14)(7x2)DPFEWXT(13x14)JMIYORYVYZJGS(39x3)NCXKUQBUBUPRPNGMBJULZJFRNHHZZPXPZHDQDBX(46x15)(6x10)RBICQU(6x5)LJUDIP(1x10)B(10x3)LMMIYYDXMV(24x6)(9x5)VDCHYSMAQ(4x10)XZGCLMPFRW diff --git a/src/main/resources/2017-examples/day10-1.txt b/src/main/resources/2017-examples/day10-1.txt new file mode 100644 index 00000000..f963bffc --- /dev/null +++ b/src/main/resources/2017-examples/day10-1.txt @@ -0,0 +1,5 @@ + 4--5 pinch 4 5 4 1 + / \ 5,0,1 / \/ \ twist / \ / \ +3 0 --> 3 0 --> 3 X 0 + \ / \ /\ / \ / \ / + 2--1 2 1 2 5 diff --git a/src/main/resources/2017-examples/day11-1.txt b/src/main/resources/2017-examples/day11-1.txt new file mode 100644 index 00000000..b14ec5a3 --- /dev/null +++ b/src/main/resources/2017-examples/day11-1.txt @@ -0,0 +1,7 @@ + \ n / +nw +--+ ne + / \ +-+ +- + \ / +sw +--+ se + / s \ diff --git a/src/main/resources/2017-examples/day12-1.txt b/src/main/resources/2017-examples/day12-1.txt new file mode 100644 index 00000000..ee108d80 --- /dev/null +++ b/src/main/resources/2017-examples/day12-1.txt @@ -0,0 +1,7 @@ +0 <-> 2 +1 <-> 1 +2 <-> 0, 3, 4 +3 <-> 2, 4 +4 <-> 2, 3, 6 +5 <-> 6 +6 <-> 4, 5 diff --git a/src/main/resources/2017-examples/day13-1.txt b/src/main/resources/2017-examples/day13-1.txt new file mode 100644 index 00000000..0239024d --- /dev/null +++ b/src/main/resources/2017-examples/day13-1.txt @@ -0,0 +1,4 @@ +0: 3 +1: 2 +4: 4 +6: 4 diff --git a/src/main/resources/2017-examples/day13-2.txt b/src/main/resources/2017-examples/day13-2.txt new file mode 100644 index 00000000..e7405beb --- /dev/null +++ b/src/main/resources/2017-examples/day13-2.txt @@ -0,0 +1,5 @@ + 0 1 2 3 4 5 6 +[ ] [ ] ... ... [ ] ... [ ] +[ ] [ ] [ ] [ ] +[ ] [ ] [ ] + [ ] [ ] diff --git a/src/main/resources/2017-examples/day13-3.txt b/src/main/resources/2017-examples/day13-3.txt new file mode 100644 index 00000000..fb52eee3 --- /dev/null +++ b/src/main/resources/2017-examples/day13-3.txt @@ -0,0 +1,28 @@ + +Picosecond 0: + 0 1 2 3 4 5 6 +[S] [S] ... ... [S] ... [S] +[ ] [ ] [ ] [ ] +[ ] [ ] [ ] + [ ] [ ] + +Picosecond 1: + 0 1 2 3 4 5 6 +[ ] [ ] ... ... [ ] ... [ ] +[S] [S] [S] [S] +[ ] [ ] [ ] + [ ] [ ] + +Picosecond 2: + 0 1 2 3 4 5 6 +[ ] [S] ... ... [ ] ... [ ] +[ ] [ ] [ ] [ ] +[S] [S] [S] + [ ] [ ] + +Picosecond 3: + 0 1 2 3 4 5 6 +[ ] [ ] ... ... [ ] ... [ ] +[S] [S] [ ] [ ] +[ ] [ ] [ ] + [S] [S] diff --git a/src/main/resources/2017-examples/day13-4.txt b/src/main/resources/2017-examples/day13-4.txt new file mode 100644 index 00000000..34dd9657 --- /dev/null +++ b/src/main/resources/2017-examples/day13-4.txt @@ -0,0 +1,103 @@ +Initial state: + 0 1 2 3 4 5 6 +[S] [S] ... ... [S] ... [S] +[ ] [ ] [ ] [ ] +[ ] [ ] [ ] + [ ] [ ] + +Picosecond 0: + 0 1 2 3 4 5 6 +(S) [S] ... ... [S] ... [S] +[ ] [ ] [ ] [ ] +[ ] [ ] [ ] + [ ] [ ] + + 0 1 2 3 4 5 6 +( ) [ ] ... ... [ ] ... [ ] +[S] [S] [S] [S] +[ ] [ ] [ ] + [ ] [ ] + + +Picosecond 1: + 0 1 2 3 4 5 6 +[ ] ( ) ... ... [ ] ... [ ] +[S] [S] [S] [S] +[ ] [ ] [ ] + [ ] [ ] + + 0 1 2 3 4 5 6 +[ ] (S) ... ... [ ] ... [ ] +[ ] [ ] [ ] [ ] +[S] [S] [S] + [ ] [ ] + + +Picosecond 2: + 0 1 2 3 4 5 6 +[ ] [S] (.) ... [ ] ... [ ] +[ ] [ ] [ ] [ ] +[S] [S] [S] + [ ] [ ] + + 0 1 2 3 4 5 6 +[ ] [ ] (.) ... [ ] ... [ ] +[S] [S] [ ] [ ] +[ ] [ ] [ ] + [S] [S] + + +Picosecond 3: + 0 1 2 3 4 5 6 +[ ] [ ] ... (.) [ ] ... [ ] +[S] [S] [ ] [ ] +[ ] [ ] [ ] + [S] [S] + + 0 1 2 3 4 5 6 +[S] [S] ... (.) [ ] ... [ ] +[ ] [ ] [ ] [ ] +[ ] [S] [S] + [ ] [ ] + + +Picosecond 4: + 0 1 2 3 4 5 6 +[S] [S] ... ... ( ) ... [ ] +[ ] [ ] [ ] [ ] +[ ] [S] [S] + [ ] [ ] + + 0 1 2 3 4 5 6 +[ ] [ ] ... ... ( ) ... [ ] +[S] [S] [S] [S] +[ ] [ ] [ ] + [ ] [ ] + + +Picosecond 5: + 0 1 2 3 4 5 6 +[ ] [ ] ... ... [ ] (.) [ ] +[S] [S] [S] [S] +[ ] [ ] [ ] + [ ] [ ] + + 0 1 2 3 4 5 6 +[ ] [S] ... ... [S] (.) [S] +[ ] [ ] [ ] [ ] +[S] [ ] [ ] + [ ] [ ] + + +Picosecond 6: + 0 1 2 3 4 5 6 +[ ] [S] ... ... [S] ... (S) +[ ] [ ] [ ] [ ] +[S] [ ] [ ] + [ ] [ ] + + 0 1 2 3 4 5 6 +[ ] [ ] ... ... [ ] ... ( ) +[S] [S] [S] [S] +[ ] [ ] [ ] + [ ] [ ] diff --git a/src/main/resources/2017-examples/day14-1.txt b/src/main/resources/2017-examples/day14-1.txt new file mode 100644 index 00000000..adbbbac8 --- /dev/null +++ b/src/main/resources/2017-examples/day14-1.txt @@ -0,0 +1,10 @@ +##.#.#..--> +.#.#.#.# +....#.#. +#.#.##.# +.##.#... +##..#..# +.#...#.. +##.#.##.--> +| | +V V diff --git a/src/main/resources/2017-examples/day15-1.txt b/src/main/resources/2017-examples/day15-1.txt new file mode 100644 index 00000000..ad72838c --- /dev/null +++ b/src/main/resources/2017-examples/day15-1.txt @@ -0,0 +1,6 @@ +--Gen. A-- --Gen. B-- + 1092455 430625591 +1181022009 1233683848 + 245556042 1431495498 +1744312007 137874439 +1352636452 285222916 diff --git a/src/main/resources/2017-examples/day15-2.txt b/src/main/resources/2017-examples/day15-2.txt new file mode 100644 index 00000000..e63f9d86 --- /dev/null +++ b/src/main/resources/2017-examples/day15-2.txt @@ -0,0 +1,14 @@ +00000000000100001010101101100111 +00011001101010101101001100110111 + +01000110011001001111011100111001 +01001001100010001000010110001000 + +00001110101000101110001101001010 +01010101010100101110001101001010 + +01100111111110000001011011000111 +00001000001101111100110000000111 + +01010000100111111001100000100100 +00010001000000000010100000000100 diff --git a/src/main/resources/2017-examples/day17-1.txt b/src/main/resources/2017-examples/day17-1.txt new file mode 100644 index 00000000..d39835d0 --- /dev/null +++ b/src/main/resources/2017-examples/day17-1.txt @@ -0,0 +1 @@ +1512 1134 151 (2017) 638 1513 851 \ No newline at end of file diff --git a/src/main/resources/2017-examples/day18-1.txt b/src/main/resources/2017-examples/day18-1.txt new file mode 100644 index 00000000..4e62dbd6 --- /dev/null +++ b/src/main/resources/2017-examples/day18-1.txt @@ -0,0 +1,10 @@ +set a 1 +add a 2 +mul a a +mod a 5 +snd a +set a 0 +rcv a +jgz a -1 +set a 1 +jgz a -2 diff --git a/src/main/resources/2017-examples/day19-1.txt b/src/main/resources/2017-examples/day19-1.txt new file mode 100644 index 00000000..6d29f434 --- /dev/null +++ b/src/main/resources/2017-examples/day19-1.txt @@ -0,0 +1,7 @@ + | + | +--+ + A | C + F---|----E|--+ + | | | D + +B-+ +--+ + diff --git a/src/main/resources/2017-examples/day2-1.txt b/src/main/resources/2017-examples/day2-1.txt new file mode 100644 index 00000000..ef932270 --- /dev/null +++ b/src/main/resources/2017-examples/day2-1.txt @@ -0,0 +1,3 @@ +5 1 9 5 +7 5 3 +2 4 6 8 \ No newline at end of file diff --git a/src/main/resources/2017-examples/day20-1.txt b/src/main/resources/2017-examples/day20-1.txt new file mode 100644 index 00000000..e16daf0e --- /dev/null +++ b/src/main/resources/2017-examples/day20-1.txt @@ -0,0 +1,11 @@ +p=< 3,0,0>, v=< 2,0,0>, a=<-1,0,0> -4 -3 -2 -1 0 1 2 3 4 +p=< 4,0,0>, v=< 0,0,0>, a=<-2,0,0> (0)(1) + +p=< 4,0,0>, v=< 1,0,0>, a=<-1,0,0> -4 -3 -2 -1 0 1 2 3 4 +p=< 2,0,0>, v=<-2,0,0>, a=<-2,0,0> (1) (0) + +p=< 4,0,0>, v=< 0,0,0>, a=<-1,0,0> -4 -3 -2 -1 0 1 2 3 4 +p=<-2,0,0>, v=<-4,0,0>, a=<-2,0,0> (1) (0) + +p=< 3,0,0>, v=<-1,0,0>, a=<-1,0,0> -4 -3 -2 -1 0 1 2 3 4 +p=<-8,0,0>, v=<-6,0,0>, a=<-2,0,0> (0) diff --git a/src/main/resources/2017-examples/day21-1.txt b/src/main/resources/2017-examples/day21-1.txt new file mode 100644 index 00000000..eedd3d21 --- /dev/null +++ b/src/main/resources/2017-examples/day21-1.txt @@ -0,0 +1,3 @@ +.#. +..# +### diff --git a/src/main/resources/2017-examples/day21-2.txt b/src/main/resources/2017-examples/day21-2.txt new file mode 100644 index 00000000..eba3e80d --- /dev/null +++ b/src/main/resources/2017-examples/day21-2.txt @@ -0,0 +1,11 @@ +../.# = .. + .# + + .#. +.#./..#/### = ..# + ### + + #..# +#..#/..../#..#/.##. = .... + #..# + .##. diff --git a/src/main/resources/2017-examples/day21-3.txt b/src/main/resources/2017-examples/day21-3.txt new file mode 100644 index 00000000..ebbddd45 --- /dev/null +++ b/src/main/resources/2017-examples/day21-3.txt @@ -0,0 +1,3 @@ +.#. .#. #.. ### +..# #.. #.# ..# +### ### ##. .#. diff --git a/src/main/resources/2017-examples/day21-4.txt b/src/main/resources/2017-examples/day21-4.txt new file mode 100644 index 00000000..33fc15e4 --- /dev/null +++ b/src/main/resources/2017-examples/day21-4.txt @@ -0,0 +1,2 @@ +../.# => ##./#../... +.#./..#/### => #..#/..../..../#..# diff --git a/src/main/resources/2017-examples/day21-5.txt b/src/main/resources/2017-examples/day21-5.txt new file mode 100644 index 00000000..eedd3d21 --- /dev/null +++ b/src/main/resources/2017-examples/day21-5.txt @@ -0,0 +1,3 @@ +.#. +..# +### diff --git a/src/main/resources/2017-examples/day21-6.txt b/src/main/resources/2017-examples/day21-6.txt new file mode 100644 index 00000000..b1016302 --- /dev/null +++ b/src/main/resources/2017-examples/day21-6.txt @@ -0,0 +1,4 @@ +#..# +.... +.... +#..# diff --git a/src/main/resources/2017-examples/day21-7.txt b/src/main/resources/2017-examples/day21-7.txt new file mode 100644 index 00000000..b90ea11c --- /dev/null +++ b/src/main/resources/2017-examples/day21-7.txt @@ -0,0 +1,5 @@ +#.|.# +..|.. +--+-- +..|.. +#.|.# diff --git a/src/main/resources/2017-examples/day21-8.txt b/src/main/resources/2017-examples/day21-8.txt new file mode 100644 index 00000000..0b25f6ee --- /dev/null +++ b/src/main/resources/2017-examples/day21-8.txt @@ -0,0 +1,7 @@ +##.|##. +#..|#.. +...|... +---+--- +##.|##. +#..|#.. +...|... diff --git a/src/main/resources/2017-examples/day21-9.txt b/src/main/resources/2017-examples/day21-9.txt new file mode 100644 index 00000000..f81f6b0c --- /dev/null +++ b/src/main/resources/2017-examples/day21-9.txt @@ -0,0 +1,6 @@ +##.##. +#..#.. +...... +##.##. +#..#.. +...... diff --git a/src/main/resources/2017-examples/day22-1.txt b/src/main/resources/2017-examples/day22-1.txt new file mode 100644 index 00000000..3105a0bb --- /dev/null +++ b/src/main/resources/2017-examples/day22-1.txt @@ -0,0 +1,3 @@ +..# +#.. +... diff --git a/src/main/resources/2017-examples/day22-2.txt b/src/main/resources/2017-examples/day22-2.txt new file mode 100644 index 00000000..4b92c988 --- /dev/null +++ b/src/main/resources/2017-examples/day22-2.txt @@ -0,0 +1,8 @@ +. . . . . . . . . +. . . . . . . . . +. . . . . . . . . +. . . . . # . . . +. . . #[.]. . . . +. . . . . . . . . +. . . . . . . . . +. . . . . . . . . diff --git a/src/main/resources/2017-examples/day22-3.txt b/src/main/resources/2017-examples/day22-3.txt new file mode 100644 index 00000000..ca8b9dbf --- /dev/null +++ b/src/main/resources/2017-examples/day22-3.txt @@ -0,0 +1,8 @@ +. . . . . . . . . +. . . . . . . . . +. . . . . . . . . +. . . . . # . . . +. . .[#]# . . . . +. . . . . . . . . +. . . . . . . . . +. . . . . . . . . diff --git a/src/main/resources/2017-examples/day22-4.txt b/src/main/resources/2017-examples/day22-4.txt new file mode 100644 index 00000000..accd5687 --- /dev/null +++ b/src/main/resources/2017-examples/day22-4.txt @@ -0,0 +1,8 @@ +. . . . . . . . . +. . . . . . . . . +. . . . . . . . . +. . .[.]. # . . . +. . . . # . . . . +. . . . . . . . . +. . . . . . . . . +. . . . . . . . . diff --git a/src/main/resources/2017-examples/day22-5.txt b/src/main/resources/2017-examples/day22-5.txt new file mode 100644 index 00000000..efa989dd --- /dev/null +++ b/src/main/resources/2017-examples/day22-5.txt @@ -0,0 +1,8 @@ +. . . . . . . . . +. . . . . . . . . +. . . . . . . . . +. . #[#]. # . . . +. . # # # . . . . +. . . . . . . . . +. . . . . . . . . +. . . . . . . . . diff --git a/src/main/resources/2017-examples/day22-6.txt b/src/main/resources/2017-examples/day22-6.txt new file mode 100644 index 00000000..726f188c --- /dev/null +++ b/src/main/resources/2017-examples/day22-6.txt @@ -0,0 +1,8 @@ +. . . . . . . . . +. . . . . . . . . +. . . . . . . . . +. . # .[.]# . . . +. . # # # . . . . +. . . . . . . . . +. . . . . . . . . +. . . . . . . . . diff --git a/src/main/resources/2017-examples/day22-7.txt b/src/main/resources/2017-examples/day22-7.txt new file mode 100644 index 00000000..ef39e728 --- /dev/null +++ b/src/main/resources/2017-examples/day22-7.txt @@ -0,0 +1,8 @@ +. . . . . # # . . +. . . . # . . # . +. . . # . . . . # +. . # . #[.]. . # +. . # . # . . # . +. . . . . # # . . +. . . . . . . . . +. . . . . . . . . diff --git a/src/main/resources/2017-examples/day24-1.txt b/src/main/resources/2017-examples/day24-1.txt new file mode 100644 index 00000000..f2c8f2ae --- /dev/null +++ b/src/main/resources/2017-examples/day24-1.txt @@ -0,0 +1,8 @@ +0/2 +2/2 +2/3 +3/4 +3/5 +0/1 +10/1 +9/10 diff --git a/src/main/resources/2017-examples/day25-1.txt b/src/main/resources/2017-examples/day25-1.txt new file mode 100644 index 00000000..3fab6c1e --- /dev/null +++ b/src/main/resources/2017-examples/day25-1.txt @@ -0,0 +1,22 @@ +Begin in state A. +Perform a diagnostic checksum after 6 steps. + +In state A: + If the current value is 0: + - Write the value 1. + - Move one slot to the right. + - Continue with state B. + If the current value is 1: + - Write the value 0. + - Move one slot to the left. + - Continue with state B. + +In state B: + If the current value is 0: + - Write the value 1. + - Move one slot to the left. + - Continue with state A. + If the current value is 1: + - Write the value 1. + - Move one slot to the right. + - Continue with state A. diff --git a/src/main/resources/2017-examples/day25-2.txt b/src/main/resources/2017-examples/day25-2.txt new file mode 100644 index 00000000..2fbe3a57 --- /dev/null +++ b/src/main/resources/2017-examples/day25-2.txt @@ -0,0 +1,7 @@ +... 0 0 0 [0] 0 0 ... (before any steps; about to run state A) +... 0 0 0 1 [0] 0 ... (after 1 step; about to run state B) +... 0 0 0 [1] 1 0 ... (after 2 steps; about to run state A) +... 0 0 [0] 0 1 0 ... (after 3 steps; about to run state B) +... 0 [0] 1 0 1 0 ... (after 4 steps; about to run state A) +... 0 1 [1] 0 1 0 ... (after 5 steps; about to run state B) +... 0 1 1 [0] 1 0 ... (after 6 steps; about to run state A) diff --git a/src/main/resources/2017-examples/day3-1.txt b/src/main/resources/2017-examples/day3-1.txt new file mode 100644 index 00000000..5752f9ba --- /dev/null +++ b/src/main/resources/2017-examples/day3-1.txt @@ -0,0 +1,5 @@ +17 16 15 14 13 +18 5 4 3 12 +19 6 1 2 11 +20 7 8 9 10 +21 22 23---> ... diff --git a/src/main/resources/2017-examples/day5-1.txt b/src/main/resources/2017-examples/day5-1.txt new file mode 100644 index 00000000..7a76cf7f --- /dev/null +++ b/src/main/resources/2017-examples/day5-1.txt @@ -0,0 +1,5 @@ +0 +3 +0 +1 +-3 diff --git a/src/main/resources/2017-examples/day7-1.txt b/src/main/resources/2017-examples/day7-1.txt new file mode 100644 index 00000000..1ac6b194 --- /dev/null +++ b/src/main/resources/2017-examples/day7-1.txt @@ -0,0 +1,13 @@ +pbga (66) +xhth (57) +ebii (61) +havc (66) +ktlj (57) +fwft (72) -> ktlj, cntj, xhth +qoyq (66) +padx (45) -> pbga, havc, qoyq +tknk (41) -> ugml, padx, fwft +jptl (61) +ugml (68) -> gyxo, ebii, jptl +gyxo (61) +cntj (57) diff --git a/src/main/resources/2017-examples/day7-2.txt b/src/main/resources/2017-examples/day7-2.txt new file mode 100644 index 00000000..9fc55724 --- /dev/null +++ b/src/main/resources/2017-examples/day7-2.txt @@ -0,0 +1,17 @@ + gyxo + / + ugml - ebii + / \ + | jptl + | + | pbga + / / +tknk --- padx - havc + \ \ + | qoyq + | + | ktlj + \ / + fwft - cntj + \ + xhth diff --git a/src/main/resources/2017-examples/day8-1.txt b/src/main/resources/2017-examples/day8-1.txt new file mode 100644 index 00000000..067c0c1e --- /dev/null +++ b/src/main/resources/2017-examples/day8-1.txt @@ -0,0 +1,4 @@ +b inc 5 if a > 1 +a inc 1 if b < 5 +c dec -10 if a >= 1 +c inc -20 if c == 10 diff --git a/src/main/resources/2017/day1.txt b/src/main/resources/2017/day1.txt new file mode 100644 index 00000000..8e3fcdbc --- /dev/null +++ b/src/main/resources/2017/day1.txt @@ -0,0 +1 @@ +823936645345581272695677318513459491834641129844393742672553544439126314399846773234845535593355348931499496184839582118817689171948635864427852215325421433717458975771369522138766248225963242168658975326354785415252974294317138511141826226866364555761117178764543435899886711426319675443679829181257496966219435831621565519667989898725836639626681645821714861443141893427672384716732765884844772433374798185955741311116365899659833634237938878181367317218635539667357364295754744829595842962773524584225427969467467611641591834876769829719248136613147351298534885563144114336211961674392912181735773851634298227454157885241769156811787611897349965331474217223461176896643242975397227859696554492996937235423272549348349528559432214521551656971136859972232854126262349381254424597348874447736545722261957871275935756764184378994167427983811716675476257858556464755677478725146588747147857375293675711575747132471727933773512571368467386151966568598964631331428869762151853634362356935751298121849281442128796517663482391226174256395515166361514442624944181255952124524815268864131969151433888721213595267927325759562132732586252438456569556992685896517565257787464673718221817783929691626876446423134331749327322367571432532857235214364221471769481667118117729326429556357572421333798517168997863151927281418238491791975399357393494751913155219862399959646993428921878798119215675548847845477994836744929918954159722827194721564121532315459611433157384994543332773796862165243183378464731546787498174844781781139571984272235872866886275879944921329959736315296733981313643956576956851762149275521949177991988236529475373595217665112434727744235789852852765675189342753695377219374791548554786671473733124951946779531847479755363363288448281622183736545494372344785112312749694167483996738384351293899149136857728545977442763489799693492319549773328626918874718387697878235744154491677922317518952687439655962477734559232755624943644966227973617788182213621899579391324399386146423427262874437992579573858589183571854577861459758534348533553925167947139351819511798829977371215856637215221838924612644785498936263849489519896548811254628976642391428413984281758771868781714266261781359762798 diff --git a/src/main/resources/2017/day10.txt b/src/main/resources/2017/day10.txt new file mode 100644 index 00000000..67cc6027 --- /dev/null +++ b/src/main/resources/2017/day10.txt @@ -0,0 +1 @@ +130,126,1,11,140,2,255,207,18,254,246,164,29,104,0,224 diff --git a/src/main/resources/2017/day11.txt b/src/main/resources/2017/day11.txt new file mode 100644 index 00000000..4d8c4a56 --- /dev/null +++ b/src/main/resources/2017/day11.txt @@ -0,0 +1 @@ +sw,nw,nw,se,ne,ne,n,ne,n,ne,ne,ne,se,se,se,se,ne,se,se,nw,se,sw,s,se,sw,s,se,s,s,se,s,s,s,n,s,s,s,ne,s,s,s,s,s,sw,sw,ne,n,sw,ne,sw,sw,sw,sw,sw,s,sw,sw,s,sw,sw,sw,sw,n,sw,nw,sw,sw,nw,s,sw,sw,s,nw,nw,nw,sw,nw,nw,nw,nw,nw,sw,sw,ne,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,s,nw,sw,nw,nw,se,nw,nw,nw,n,n,nw,nw,nw,nw,nw,nw,s,se,nw,nw,s,nw,se,n,n,n,nw,nw,nw,nw,n,se,nw,s,n,nw,n,n,ne,n,n,nw,n,n,n,n,se,n,ne,n,n,n,n,se,n,ne,n,n,n,n,n,n,sw,n,n,n,ne,n,ne,ne,nw,ne,ne,ne,n,ne,ne,n,se,ne,ne,ne,sw,n,sw,n,n,nw,n,ne,ne,se,ne,ne,nw,ne,n,s,ne,n,ne,n,ne,ne,n,ne,se,n,n,ne,ne,ne,ne,ne,ne,ne,ne,ne,n,ne,ne,ne,ne,ne,ne,ne,se,ne,ne,nw,ne,ne,nw,ne,ne,sw,nw,ne,ne,ne,sw,ne,ne,ne,ne,ne,se,s,ne,ne,se,se,ne,ne,se,se,ne,nw,ne,se,ne,ne,ne,ne,se,s,ne,ne,sw,ne,s,ne,ne,se,se,n,ne,se,ne,se,se,se,n,ne,se,ne,ne,se,ne,se,se,n,ne,sw,ne,se,se,n,se,ne,se,ne,se,nw,se,se,se,s,se,se,se,se,se,se,se,se,nw,ne,ne,s,se,se,se,se,se,se,se,se,n,ne,se,n,s,se,se,se,se,ne,se,nw,se,se,s,se,se,s,s,s,se,se,s,se,s,n,se,se,se,se,nw,se,se,se,sw,se,s,se,se,se,nw,s,se,s,se,se,se,ne,se,se,se,se,se,sw,n,s,s,sw,s,s,se,se,se,se,s,s,ne,s,nw,ne,se,se,se,s,s,s,sw,s,sw,ne,se,ne,s,s,se,se,se,s,se,se,n,s,n,se,se,se,se,s,se,se,se,n,n,se,s,s,ne,se,s,s,n,se,sw,s,s,s,ne,s,s,s,ne,s,s,s,s,nw,sw,ne,ne,sw,s,s,s,s,nw,s,s,n,s,s,s,s,s,nw,s,s,s,s,sw,s,s,s,s,sw,nw,s,s,s,ne,sw,se,s,se,sw,s,s,s,s,s,ne,s,sw,se,s,s,n,se,sw,s,sw,s,s,s,se,s,sw,s,s,s,s,s,s,s,s,sw,s,s,s,sw,s,s,s,s,s,sw,s,sw,s,s,se,s,sw,n,sw,s,sw,s,sw,sw,sw,s,sw,sw,sw,n,s,se,nw,ne,sw,se,sw,nw,sw,s,s,sw,s,n,sw,s,s,ne,sw,sw,s,s,s,s,sw,se,ne,sw,sw,sw,s,s,s,s,sw,s,n,sw,s,sw,s,sw,sw,sw,sw,sw,s,sw,sw,sw,sw,sw,ne,sw,se,s,sw,s,sw,sw,nw,sw,n,sw,sw,sw,sw,n,nw,s,ne,s,sw,sw,sw,sw,n,sw,ne,sw,se,s,sw,sw,sw,sw,s,sw,sw,sw,sw,n,ne,s,s,sw,sw,s,ne,sw,sw,s,sw,sw,se,sw,sw,sw,ne,sw,sw,sw,se,n,s,sw,s,sw,sw,sw,se,sw,sw,n,sw,sw,sw,sw,se,sw,sw,sw,n,ne,sw,sw,sw,s,sw,sw,sw,sw,sw,nw,sw,nw,sw,sw,sw,sw,sw,sw,sw,sw,n,nw,sw,sw,sw,ne,sw,se,sw,ne,nw,sw,sw,s,sw,sw,sw,nw,ne,sw,sw,sw,sw,se,sw,sw,sw,sw,nw,sw,ne,sw,sw,sw,sw,se,ne,sw,sw,sw,sw,sw,ne,nw,sw,nw,sw,sw,nw,nw,sw,sw,nw,sw,sw,nw,s,sw,se,sw,nw,sw,nw,sw,ne,sw,sw,s,sw,sw,nw,n,nw,n,sw,nw,sw,sw,n,sw,nw,sw,sw,nw,sw,nw,ne,nw,nw,ne,sw,n,nw,nw,sw,nw,sw,sw,sw,nw,s,nw,sw,nw,nw,sw,nw,ne,nw,sw,nw,sw,nw,nw,sw,sw,sw,sw,sw,sw,s,nw,sw,sw,nw,sw,nw,nw,sw,nw,ne,s,s,s,n,sw,sw,sw,nw,sw,sw,sw,sw,nw,nw,nw,sw,ne,sw,nw,sw,ne,sw,nw,se,nw,sw,nw,nw,nw,nw,nw,nw,nw,nw,nw,sw,nw,n,sw,nw,se,nw,se,n,sw,se,n,sw,nw,nw,s,nw,nw,nw,nw,ne,nw,nw,nw,sw,nw,nw,nw,nw,se,nw,sw,nw,sw,ne,se,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,s,se,nw,sw,nw,nw,se,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,s,nw,nw,nw,nw,nw,n,sw,nw,nw,ne,nw,nw,nw,nw,nw,nw,sw,ne,nw,nw,nw,nw,nw,ne,nw,nw,n,nw,ne,sw,nw,nw,nw,nw,nw,sw,s,nw,nw,nw,nw,se,nw,nw,nw,se,s,nw,se,nw,se,sw,n,nw,s,nw,n,nw,nw,nw,n,nw,ne,nw,nw,nw,s,n,nw,nw,se,nw,nw,n,nw,nw,nw,nw,sw,nw,nw,nw,ne,ne,n,n,nw,nw,nw,n,nw,nw,n,n,nw,sw,nw,nw,nw,nw,nw,ne,nw,nw,n,nw,nw,n,nw,nw,nw,n,n,ne,nw,nw,n,nw,nw,n,nw,nw,n,nw,nw,n,nw,nw,nw,nw,nw,nw,nw,nw,n,nw,nw,nw,nw,nw,nw,se,n,nw,nw,nw,n,n,nw,nw,n,n,n,nw,nw,n,nw,nw,nw,nw,nw,nw,nw,sw,n,nw,nw,nw,se,n,nw,nw,se,n,n,nw,n,n,n,nw,nw,nw,sw,n,nw,n,nw,n,nw,sw,nw,n,nw,nw,s,s,n,n,nw,nw,se,n,n,sw,n,n,sw,nw,nw,nw,n,s,ne,nw,nw,nw,sw,nw,ne,n,nw,n,n,n,nw,n,nw,nw,n,n,nw,n,nw,n,nw,nw,nw,ne,nw,nw,s,s,sw,se,n,n,nw,nw,ne,nw,nw,nw,n,nw,n,n,n,se,nw,n,n,n,n,ne,n,nw,nw,nw,n,n,sw,nw,n,sw,nw,n,n,n,nw,n,nw,nw,nw,nw,n,n,n,n,nw,nw,n,n,n,n,n,n,n,nw,nw,n,nw,n,n,nw,s,n,n,n,n,nw,nw,nw,n,se,nw,nw,n,n,n,n,n,n,nw,nw,n,nw,nw,n,n,n,nw,nw,n,n,nw,n,n,nw,n,n,sw,nw,se,n,ne,n,nw,ne,nw,n,n,n,n,n,n,n,ne,n,n,n,se,n,se,n,n,nw,n,n,sw,n,n,n,s,n,n,n,nw,nw,n,n,n,n,nw,nw,n,n,nw,n,n,n,n,n,n,n,n,nw,n,n,n,n,n,n,n,n,n,n,n,ne,n,n,n,n,n,n,n,n,n,ne,nw,nw,nw,n,n,se,n,n,n,n,n,n,n,n,n,se,s,n,n,n,n,nw,sw,n,n,n,n,n,n,n,n,n,nw,nw,n,n,ne,ne,n,n,n,n,n,n,n,s,s,n,n,n,s,ne,n,n,n,n,n,n,n,n,n,n,n,nw,n,n,n,n,ne,nw,n,n,ne,n,n,n,n,n,n,ne,n,n,n,n,ne,n,n,n,n,ne,n,ne,n,ne,n,n,ne,sw,n,nw,s,n,n,s,se,sw,n,ne,n,n,n,n,n,sw,n,sw,n,n,n,n,n,n,ne,n,sw,n,n,ne,n,ne,se,n,n,n,n,ne,n,n,n,ne,n,ne,ne,n,n,n,ne,sw,se,n,n,n,n,n,n,ne,ne,n,n,n,n,ne,s,ne,ne,n,n,n,n,n,n,n,ne,se,n,ne,nw,n,nw,se,n,n,ne,n,ne,n,n,sw,ne,n,n,ne,se,n,n,ne,n,n,n,n,n,n,n,n,n,sw,n,n,s,nw,n,se,ne,n,ne,ne,se,n,n,n,sw,sw,n,n,n,s,n,s,sw,n,n,n,n,n,n,n,se,ne,n,ne,n,ne,ne,nw,n,n,n,s,ne,n,se,se,ne,s,n,n,ne,nw,s,ne,se,n,n,sw,ne,s,n,ne,se,n,ne,n,ne,n,s,n,n,ne,ne,ne,se,se,ne,n,ne,n,n,n,s,n,sw,ne,ne,ne,nw,ne,ne,n,ne,n,ne,n,n,ne,sw,ne,ne,ne,sw,n,n,ne,ne,n,se,ne,n,ne,nw,ne,n,ne,s,n,n,se,n,ne,ne,n,sw,nw,ne,ne,n,ne,n,n,se,n,se,sw,sw,n,ne,ne,ne,nw,ne,ne,n,n,n,s,ne,s,n,n,s,sw,ne,ne,n,nw,n,ne,n,ne,ne,n,se,ne,n,ne,ne,n,ne,n,sw,n,n,n,se,ne,n,ne,ne,n,ne,nw,ne,sw,n,ne,nw,sw,n,n,ne,ne,n,ne,ne,ne,n,se,ne,ne,n,sw,ne,ne,se,ne,ne,ne,ne,ne,sw,ne,ne,ne,n,ne,sw,ne,nw,n,sw,ne,ne,n,ne,n,sw,n,ne,ne,nw,ne,ne,ne,n,n,n,ne,s,se,ne,nw,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,nw,n,ne,ne,n,n,ne,s,se,ne,ne,ne,s,ne,ne,ne,n,ne,ne,n,ne,ne,ne,ne,ne,ne,s,ne,se,ne,n,ne,n,ne,ne,ne,n,ne,ne,ne,s,ne,n,ne,ne,ne,n,ne,ne,ne,se,ne,ne,ne,ne,ne,n,ne,s,n,ne,ne,se,s,ne,ne,ne,ne,ne,ne,nw,sw,ne,ne,s,ne,nw,ne,ne,ne,n,n,ne,ne,ne,s,ne,n,ne,ne,ne,ne,n,ne,ne,ne,ne,ne,ne,ne,ne,sw,ne,s,ne,ne,ne,nw,ne,ne,ne,ne,ne,nw,n,sw,ne,se,ne,n,ne,ne,nw,s,ne,ne,ne,ne,n,se,ne,ne,n,ne,ne,s,ne,ne,s,ne,ne,ne,ne,nw,ne,ne,ne,ne,ne,ne,ne,nw,se,se,ne,ne,ne,ne,ne,ne,sw,ne,s,nw,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,nw,ne,ne,se,ne,ne,ne,ne,ne,ne,ne,sw,ne,ne,ne,ne,ne,ne,ne,se,se,ne,ne,ne,ne,ne,ne,ne,ne,ne,nw,ne,sw,ne,n,se,ne,ne,ne,nw,ne,se,ne,ne,n,ne,ne,ne,se,sw,ne,ne,se,n,ne,s,ne,ne,ne,sw,ne,s,se,ne,nw,ne,s,ne,ne,ne,ne,se,ne,ne,ne,ne,ne,se,ne,ne,ne,se,ne,ne,ne,sw,se,ne,ne,ne,ne,ne,se,ne,ne,ne,n,se,se,ne,ne,ne,se,ne,ne,ne,ne,se,se,ne,n,se,nw,ne,se,se,se,ne,se,n,ne,se,se,nw,se,ne,sw,se,se,ne,ne,ne,nw,se,ne,ne,ne,ne,ne,ne,ne,n,se,ne,ne,ne,nw,ne,se,ne,ne,se,ne,sw,ne,se,ne,ne,ne,se,se,ne,ne,se,se,ne,ne,se,ne,ne,ne,ne,nw,ne,ne,se,ne,ne,se,ne,se,ne,ne,ne,ne,ne,se,sw,ne,ne,ne,ne,se,se,ne,ne,ne,ne,ne,ne,se,ne,s,se,n,ne,ne,se,se,se,se,ne,s,ne,ne,se,se,s,ne,nw,ne,ne,ne,se,ne,ne,ne,ne,n,ne,ne,ne,se,ne,ne,ne,se,se,ne,ne,se,ne,ne,ne,ne,se,sw,nw,se,ne,ne,se,ne,s,se,sw,ne,se,ne,nw,ne,ne,s,se,ne,se,sw,ne,s,ne,ne,sw,se,se,ne,ne,se,ne,se,ne,ne,s,se,se,ne,se,ne,nw,se,sw,ne,ne,se,n,se,ne,ne,se,se,se,ne,se,se,se,ne,se,ne,se,ne,se,ne,s,n,ne,se,se,ne,sw,se,ne,se,ne,se,sw,se,nw,se,se,se,ne,se,se,se,ne,se,se,se,ne,nw,se,nw,se,nw,se,se,nw,se,s,ne,se,ne,n,se,ne,se,ne,se,se,ne,se,ne,ne,se,ne,ne,se,se,ne,se,ne,se,se,se,se,ne,nw,se,se,se,ne,se,sw,ne,se,nw,s,ne,se,se,ne,se,ne,se,se,se,sw,ne,se,ne,ne,se,s,ne,se,se,sw,se,ne,se,ne,ne,se,nw,se,se,ne,se,se,n,ne,ne,s,sw,se,se,se,ne,se,n,nw,se,ne,n,se,se,ne,se,se,se,se,se,nw,se,nw,se,se,ne,ne,n,ne,ne,se,se,sw,se,s,ne,se,ne,se,se,ne,ne,ne,ne,se,se,nw,se,se,ne,se,se,ne,se,se,se,ne,sw,se,ne,ne,nw,se,n,ne,se,se,ne,se,ne,n,se,se,se,ne,ne,se,nw,s,nw,se,se,s,s,ne,ne,ne,se,se,se,se,ne,se,ne,se,ne,se,sw,se,ne,se,ne,sw,se,se,se,ne,se,n,se,ne,ne,ne,se,nw,se,se,se,se,se,ne,se,ne,ne,ne,ne,ne,se,n,se,se,n,se,se,se,se,se,ne,ne,se,nw,se,ne,s,se,s,se,ne,n,s,se,se,se,ne,se,se,n,se,se,se,nw,ne,ne,ne,sw,se,ne,nw,se,se,ne,se,se,se,sw,se,se,se,n,nw,nw,se,n,sw,sw,se,ne,n,nw,n,se,se,se,s,ne,ne,se,se,se,se,ne,se,sw,se,se,se,se,s,ne,se,s,se,se,n,se,ne,se,ne,se,nw,se,se,nw,se,se,se,se,se,se,se,ne,se,se,se,se,se,se,se,se,se,ne,se,se,se,se,se,nw,se,se,se,se,n,se,se,se,se,n,s,se,se,se,se,ne,ne,se,n,se,n,sw,ne,s,se,ne,n,se,se,se,se,se,sw,se,se,se,ne,se,se,sw,se,se,s,se,ne,n,nw,se,se,ne,se,se,se,se,se,se,se,ne,sw,se,se,se,se,se,se,se,n,se,ne,nw,se,ne,se,se,se,nw,ne,n,se,se,se,se,se,se,ne,se,se,sw,s,se,se,se,se,se,ne,se,se,se,se,ne,se,s,se,se,nw,se,se,se,se,se,se,ne,se,n,nw,se,se,se,se,se,se,n,se,nw,nw,n,ne,se,se,nw,se,nw,s,se,s,se,se,sw,se,se,se,se,se,s,se,se,se,nw,se,n,se,se,se,se,se,se,se,se,se,se,se,se,se,se,se,se,se,se,se,se,nw,se,se,n,se,se,se,se,se,ne,se,se,se,se,se,se,s,se,ne,se,se,se,se,se,nw,se,se,se,se,se,se,se,se,sw,se,s,se,se,se,se,se,n,se,s,s,se,se,s,s,se,se,s,se,n,ne,nw,s,se,se,sw,se,ne,se,s,se,se,ne,se,se,sw,se,se,n,se,nw,s,se,se,se,s,se,sw,s,s,se,s,se,se,se,se,nw,se,se,se,s,se,se,s,se,s,ne,se,se,se,se,n,se,se,se,s,se,n,se,se,s,se,se,s,se,se,s,se,se,s,se,se,se,se,se,nw,se,nw,se,se,ne,se,s,sw,se,s,s,se,se,se,se,se,se,se,se,se,se,se,sw,se,se,se,se,s,se,se,se,s,ne,n,se,se,se,sw,se,se,n,s,se,se,se,se,se,se,se,ne,sw,s,s,s,se,nw,se,se,sw,se,s,s,se,se,nw,nw,se,nw,nw,s,se,n,ne,se,sw,se,se,se,ne,s,se,se,se,s,se,se,se,s,se,n,se,sw,se,se,se,se,se,se,s,se,se,sw,se,s,se,n,se,se,se,se,se,n,ne,s,s,se,nw,se,se,se,se,se,se,se,se,s,se,s,n,se,se,s,s,ne,sw,s,se,se,s,s,se,s,se,se,se,se,se,se,se,s,s,s,s,se,s,se,se,s,se,se,se,s,s,s,se,se,nw,se,ne,ne,se,nw,ne,se,ne,se,se,se,se,se,se,se,sw,sw,ne,se,s,se,se,s,s,s,s,s,s,nw,se,s,s,se,s,se,se,se,se,s,s,se,s,s,sw,s,s,se,n,se,s,se,n,s,se,se,se,se,ne,se,se,se,s,se,se,ne,s,s,ne,se,sw,sw,se,se,se,se,s,se,nw,s,s,s,s,se,se,se,se,sw,se,se,se,s,se,se,s,s,se,se,se,se,s,s,se,se,s,se,s,s,se,se,se,s,s,s,s,se,n,se,se,se,s,ne,s,n,se,s,ne,se,sw,se,se,sw,sw,s,s,nw,s,se,sw,se,nw,s,se,s,se,s,s,ne,se,n,se,s,se,nw,se,sw,s,se,s,se,s,se,se,se,s,s,sw,sw,s,ne,s,se,sw,se,se,s,s,s,n,se,se,s,s,s,nw,se,se,nw,s,s,s,s,n,s,s,s,n,se,se,se,s,s,se,s,se,s,n,n,sw,se,s,s,se,se,s,n,s,se,se,n,n,s,s,se,se,s,se,se,n,s,s,n,sw,ne,s,sw,s,se,s,nw,se,n,nw,s,s,s,se,ne,s,s,ne,s,sw,s,s,s,s,s,se,s,se,se,se,s,s,sw,s,s,se,se,se,s,se,s,ne,s,n,s,s,nw,se,s,s,s,nw,se,s,se,ne,s,s,ne,se,nw,se,s,n,s,n,se,se,se,s,s,sw,s,s,s,se,se,s,s,n,se,se,nw,n,n,s,s,s,ne,se,s,s,s,s,ne,n,s,s,s,s,se,se,se,se,se,s,nw,s,s,s,n,se,s,s,s,se,se,s,s,s,nw,s,s,se,se,s,s,s,s,s,s,s,s,sw,s,s,s,s,se,s,se,se,s,s,se,s,nw,se,s,ne,s,s,se,s,ne,se,s,s,ne,se,n,s,nw,se,ne,se,se,se,se,se,n,n,se,n,se,s,nw,s,s,s,s,s,ne,s,sw,s,s,s,se,s,nw,s,s,se,nw,s,se,s,s,se,s,se,sw,se,n,s,se,s,s,s,s,n,ne,s,se,n,s,se,s,se,se,n,s,se,s,s,s,sw,s,s,s,se,s,se,s,ne,se,nw,s,nw,s,sw,s,s,s,s,n,se,s,n,se,s,s,s,s,s,s,se,s,s,n,s,se,s,s,ne,s,s,se,se,se,se,s,s,s,se,s,s,n,s,s,s,s,se,se,n,n,s,se,s,s,s,s,n,s,s,se,se,s,s,s,s,s,n,n,ne,s,s,s,s,nw,s,s,s,s,s,s,n,s,s,se,s,se,s,s,se,s,s,s,sw,ne,s,sw,s,s,se,s,se,s,s,s,se,s,s,s,s,s,s,s,se,n,s,s,s,se,n,s,s,se,nw,s,s,n,s,s,ne,nw,s,s,s,se,s,s,s,s,s,s,se,s,s,s,se,se,se,s,s,s,s,s,se,nw,s,s,s,se,s,nw,s,s,s,s,s,s,ne,s,s,se,n,s,s,ne,s,s,s,s,s,s,s,s,se,s,s,s,sw,s,s,s,s,s,s,n,s,se,se,ne,s,s,s,s,ne,s,sw,s,s,sw,s,sw,s,s,s,s,s,s,ne,s,se,s,s,s,s,s,sw,s,s,s,s,s,s,s,se,n,s,se,s,s,s,s,s,s,s,s,s,s,s,nw,s,se,s,n,s,s,s,s,s,sw,nw,s,s,ne,n,n,s,s,n,s,s,s,s,s,s,s,s,se,sw,n,s,s,sw,s,s,s,s,s,ne,s,s,nw,s,s,ne,s,s,s,s,s,s,s,s,sw,s,s,s,s,s,s,s,s,sw,sw,s,s,s,s,s,s,sw,s,sw,s,s,s,ne,s,s,s,s,s,sw,s,s,sw,se,nw,s,s,s,s,s,s,s,s,se,sw,s,s,s,s,s,s,s,s,s,s,s,sw,s,s,s,s,s,s,s,s,s,s,s,nw,sw,s,s,ne,s,s,s,s,s,s,s,s,nw,nw,s,sw,sw,s,s,s,se,s,se,s,n,sw,s,ne,s,sw,s,n,s,s,n,s,s,s,s,s,s,s,s,sw,sw,s,s,s,s,sw,s,nw,s,s,se,sw,nw,s,s,s,n,s,s,s,sw,sw,s,s,s,nw,s,s,sw,s,s,sw,sw,s,s,s,nw,s,s,s,se,s,s,s,se,s,n,s,s,s,s,s,n,s,sw,s,s,s,s,s,sw,s,s,s,n,s,s,nw,s,se,ne,s,sw,s,nw,n,s,s,n,s,s,s,s,s,s,sw,s,s,s,sw,s,s,s,s,s,s,s,sw,sw,ne,s,s,n,s,ne,s,s,s,s,s,s,sw,s,sw,n,ne,s,sw,s,s,s,ne,s,s,s,s,s,s,ne,s,s,s,s,s,s,s,s,sw,s,s,s,ne,s,s,sw,nw,s,sw,s,sw,nw,s,s,s,s,s,se,s,n,s,sw,s,s,s,nw,sw,se,se,s,sw,s,sw,s,sw,s,sw,s,sw,s,sw,s,n,sw,s,nw,s,s,sw,s,s,sw,s,s,s,s,sw,s,s,s,s,se,se,s,n,n,n,sw,ne,s,s,s,s,sw,s,n,s,s,s,sw,s,s,ne,s,s,s,s,ne,s,s,s,s,se,s,s,s,nw,se,nw,s,s,s,s,sw,sw,s,s,s,sw,sw,sw,s,se,s,n,sw,s,sw,s,sw,n,s,s,sw,s,s,s,s,s,s,nw,s,s,s,se,s,s,se,sw,sw,n,sw,sw,n,sw,sw,s,s,sw,s,n,sw,s,s,sw,se,s,s,s,sw,s,s,s,s,s,s,sw,ne,sw,sw,s,s,se,sw,s,n,s,s,s,s,nw,s,s,s,s,sw,s,s,s,ne,sw,sw,se,s,s,s,s,sw,n,s,s,s,s,s,s,s,s,s,sw,s,sw,s,s,sw,s,n,sw,s,se,ne,s,s,s,s,sw,se,s,s,s,s,s,s,s,s,s,sw,s,s,s,sw,sw,s,s,s,s,sw,se,s,s,s,s,s,s,s,s,s,s,s,s,nw,nw,sw,nw,s,s,s,sw,s,sw,n,s,s,ne,sw,s,s,s,s,sw,s,nw,sw,sw,sw,sw,sw,sw,sw,s,sw,n,sw,s,s,sw,se,sw,s,s,s,se,se,sw,s,sw,s,se,s,s,s,nw,s,n,sw,s,s,sw,sw,sw,s,s,n,sw,s,sw,se,sw,sw,sw,ne,s,sw,sw,nw,s,se,ne,s,s,s,sw,sw,s,s,sw,s,sw,s,sw,s,s,s,nw,sw,s,n,sw,ne,sw,sw,sw,s,sw,s,se,ne,sw,s,sw,n,n,s,sw,ne,n,ne,sw,s,s,sw,s,nw,sw,sw,s,sw,ne,ne,s,sw,sw,s,sw,sw,s,ne,se,s,sw,se,nw,n,nw,ne,se,s,s,ne,n,ne,s,s,sw,nw,se,s,s,s,s,s,sw,s,ne,s,n,sw,s,n,sw,s,s,s,se,s,s,sw,s,sw,sw,s,s,sw,s,sw,s,s,s,s,s,sw,sw,sw,sw,s,s,s,s,se,ne,sw,s,ne,s,s,ne,s,sw,sw,sw,ne,sw,sw,s,s,nw,sw,sw,sw,s,nw,sw,sw,s,sw,sw,s,n,sw,ne,s,sw,s,s,n,sw,ne,sw,nw,sw,s,ne,s,s,n,s,sw,s,se,sw,s,s,sw,s,sw,s,s,nw,nw,sw,s,s,s,se,s,sw,sw,sw,n,s,nw,sw,n,s,s,s,s,sw,sw,s,s,sw,s,s,sw,se,sw,sw,s,s,s,sw,sw,nw,sw,se,s,sw,se,se,sw,sw,s,sw,s,s,ne,s,sw,sw,sw,sw,sw,sw,s,sw,s,sw,sw,s,sw,n,sw,sw,nw,sw,sw,s,s,s,se,nw,s,n,sw,s,s,se,sw,s,sw,sw,sw,sw,s,s,sw,s,sw,s,s,s,sw,s,s,nw,n,sw,sw,se,sw,ne,s,s,se,s,sw,s,sw,sw,s,s,ne,sw,sw,sw,ne,se,sw,sw,sw,n,s,s,sw,s,s,sw,sw,sw,s,s,sw,sw,n,sw,s,s,sw,sw,s,sw,sw,sw,s,n,ne,sw,ne,sw,sw,ne,sw,ne,s,sw,s,sw,s,sw,sw,n,sw,sw,s,se,sw,sw,ne,sw,s,sw,s,sw,se,s,s,se,s,sw,sw,s,sw,s,s,s,sw,sw,sw,s,s,s,sw,sw,s,sw,s,ne,nw,sw,sw,sw,s,sw,s,s,sw,sw,se,ne,s,sw,s,sw,sw,se,sw,s,sw,ne,sw,s,se,s,sw,s,s,sw,s,sw,s,sw,s,sw,sw,s,s,sw,s,sw,nw,ne,sw,s,sw,sw,n,ne,sw,se,sw,s,sw,n,sw,s,se,s,se,se,sw,sw,n,sw,sw,sw,sw,sw,s,sw,sw,sw,nw,s,n,se,sw,sw,sw,n,sw,sw,sw,n,sw,sw,sw,sw,sw,ne,sw,s,n,s,sw,sw,sw,nw,s,sw,n,s,s,s,s,n,n,sw,s,s,n,sw,sw,se,nw,sw,sw,n,sw,s,sw,sw,sw,sw,sw,nw,s,s,sw,n,s,s,sw,s,s,ne,s,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,se,s,s,s,n,sw,s,sw,sw,sw,sw,nw,s,s,se,sw,n,sw,sw,nw,sw,sw,sw,sw,sw,s,sw,s,s,sw,sw,s,s,s,s,sw,sw,sw,sw,sw,s,sw,sw,n,sw,s,sw,se,sw,sw,n,s,s,s,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,s,sw,s,sw,sw,s,s,s,ne,sw,sw,ne,sw,sw,sw,s,sw,sw,sw,sw,n,sw,s,ne,sw,sw,s,sw,sw,sw,s,sw,s,s,sw,sw,s,nw,se,s,sw,s,sw,sw,sw,sw,sw,sw,s,sw,sw,sw,sw,sw,sw,s,nw,s,sw,sw,sw,s,sw,sw,s,sw,n,sw,sw,nw,sw,sw,se,n,sw,sw,s,sw,s,sw,sw,ne,sw,sw,n,sw,se,sw,sw,s,sw,sw,sw,s,sw,sw,se,sw,sw,s,sw,sw,s,sw,sw,sw,sw,s,sw,sw,sw,sw,se,sw,s,sw,sw,sw,ne,sw,sw,sw,sw,sw,sw,sw,sw,s,s,ne,sw,s,s,sw,sw,s,se,sw,sw,sw,n,s,se,sw,sw,s,sw,s,s,ne,s,sw,sw,s,sw,s,sw,sw,sw,sw,sw,se,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,nw,sw,sw,sw,sw,sw,sw,nw,s,sw,sw,sw,nw,sw,sw,s,sw,se,s,sw,nw,n,s,sw,sw,nw,sw,sw,s,sw,ne,sw,sw,nw,sw,sw,sw,sw,ne,sw,ne,sw,sw,sw,sw,sw,n,sw,sw,sw,sw,sw,sw,sw,s,sw,sw,nw,sw,s,ne,sw,sw,sw,sw,sw,sw,se,s,sw,s,nw,sw,sw,sw,sw,se,sw,sw,se,sw,sw,ne,ne,sw,sw,sw,sw,sw,sw,s,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,nw,s,sw,sw,ne,sw,sw,sw,sw,sw,sw,sw,s,ne,sw,sw,sw,sw,sw,sw,sw,sw,s,sw,sw,ne,n,sw,sw,sw,sw,n,sw,sw,se,s,se,s,nw,s,sw,ne,se,sw,ne,sw,sw,se,sw,s,sw,sw,sw,sw,sw,sw,sw,sw,s,ne,sw,sw,sw,ne,sw,sw,sw,ne,sw,sw,sw,sw,nw,nw,s,sw,sw,sw,nw,sw,s,sw,s,sw,sw,sw,sw,n,sw,sw,ne,sw,sw,sw,sw,sw,s,s,sw,sw,sw,se,sw,sw,s,n,se,ne,ne,ne,ne,ne,n,n,n,nw,ne,sw,n,n,n,sw,nw,nw,nw,nw,nw,nw,n,sw,nw,nw,sw,sw,sw,nw,sw,sw,sw,nw,sw,sw,sw,sw,sw,n,sw,sw,sw,sw,sw,s,s,sw,sw,s,s,s,s,ne,s,s,nw,s,s,s,s,s,sw,s,s,s,s,ne,se,s,se,s,se,se,se,se,s,se,n,s,se,s,s,s,se,se,se,se,s,n,se,se,se,se,nw,se,nw,se,ne,se,se,se,se,se,se,se,nw,sw,se,se,se,ne,se,se,se,n,n,ne,se,ne,n,se,n,se,ne,ne,se,se,nw,ne,ne,ne,ne,ne,se,ne,se,ne,ne,ne,ne,ne,ne,se,ne,ne,ne,s,nw,ne,ne,n,ne,ne,ne,ne,s,sw,sw,ne,ne,ne,nw,n,ne,ne,n,s,n,ne,ne,ne,ne,se,s,n,ne,ne,ne,ne,ne,s,ne,n,n,ne,se,n,n,n,n,n,ne,n,n,n,n,sw,n,n,n,ne,nw,s,n,ne,n,n,n,se,s,sw,n,n,n,n,n,ne,n,n,n,sw,n,sw,n,n,n,n,n,n,n,sw,n,s,n,n,n,n,n,n,n,n,s,n,n,nw,se,n,n,se,n,n,n,nw,nw,n,n,nw,n,s,s,n,nw,n,ne,nw,n,n,n,nw,n,nw,sw,nw,n,nw,n,nw,n,n,nw,n,nw,s,n,n,n,nw,nw,nw,n,nw,n,nw,se,nw,nw,nw,s,n,nw,nw,nw,nw,se,ne,n,sw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,sw,nw,nw,nw,se,nw,nw,s,nw,nw,ne,sw,nw,nw,nw,nw,nw,ne,sw,nw,s,nw,nw,nw,nw,nw,nw,nw,se,nw,ne,nw,sw,sw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,ne,nw,sw,nw,nw,sw,nw,nw,sw,sw,nw,sw,nw,n,sw,nw,sw,nw,n,ne,sw,sw,nw,nw,nw,sw,nw,nw,sw,nw,sw,sw,nw,sw,sw,nw,nw,nw,sw,sw,sw,sw,ne,sw,sw,s,sw,sw,nw,nw,sw,nw,sw,nw,nw,sw,ne,ne,sw,sw,s,sw,sw,sw,sw,s,nw,nw,nw,nw,sw,sw,n,sw,sw,sw,nw,sw,sw,sw,se,sw,n,s,n,sw,se,sw,sw,sw,sw,sw,sw,sw,sw,sw,nw,n,sw,sw,sw,sw,sw,n,sw,sw,sw,sw,sw,sw,se,ne,sw,sw,sw,sw,sw,sw,sw,s,se,sw,sw,sw,sw,sw,sw,s,sw,sw,sw,sw,sw,s,sw,sw,s,sw,ne,sw,s,se,sw,ne,sw,sw,s,sw,sw,s,s,sw,s,sw,nw,n,sw,n,n,s,ne,s,sw,nw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,s,s,sw,s,sw,sw,sw,sw,nw,sw,se,s,nw,n,s,s,sw,s,sw,s,s,n,se,sw,sw,s,sw,s,s,sw,s,s,sw,s,sw,sw,s,s,sw,s,n,s,sw,s,s,s,se,sw,s,s,sw,sw,n,sw,sw,sw,sw,s,nw,se,nw,s,s,s,sw,sw,sw,s,s,sw,s,sw,s,sw,s,sw,s,s,n,sw,s,s,sw,s,s,s,sw,s,s,s,s,sw,s,s,sw,s,nw,s,s,s,s,s,s,ne,n,n,s,s,s,nw,s,n,s,s,s,s,s,s,sw,s,s,sw,s,s,s,s,s,s,se,se,s,s,s,s,s,s,s,s,s,s,s,s,s,n,s,s,se,sw,s,s,sw,s,s,n,s,s,s,n,se,s,n,s,s,se,s,n,s,s,s,s,s,s,s,s,s,s,s,sw,s,se,s,s,s,se,s,se,s,se,s,se,se,se,s,s,ne,s,s,s,s,s,s,nw,s,s,s,s,s,s,s,s,s,s,s,s,s,s,ne,ne,s,s,s,nw,s,s,sw,s,sw,se,s,s,s,se,ne,s,s,n,s,se,s,s,s,s,sw,s,se,se,se,s,se,s,nw,ne,se,nw,s,s,ne,se,nw,s,s,nw,s,se,se,s,se,s,s,s,se,s,s,se,se,s,se,nw,s,se,s,sw,s,se,s,n,se,s,ne,se,s,ne,se,se,se,s,s,se,s,s,se,s,n,s,se,s,se,se,se,se,s,se,se,se,ne,se,nw,se,se,se,s,s,se,se,s,sw,se,s,s,s,ne,s,ne,ne,se,se,se,s,se,se,se,nw,sw,se,se,se,se,se,se,s,se,se,se,n,n,se,sw,se,nw,se,s,s,nw,se,se,s,se,se,s,sw,se,s,se,se,se,se,se,se,nw,se,s,ne,se,s,se,ne,n,se,sw,se,se,nw,se,se,se,se,s,sw,se,se,se,se,se,se,se,se,se,s,se,sw,se,se,se,se,s,se,se,sw,se,se,se,se,se,nw,se,se,se,se,sw,se,se,nw,se,sw,se,sw,se,sw,se,sw,se,se,se,se,se,se,s,se,se,nw,se,se,se,se,se,ne,se,se,se,ne,se,se,ne,se,s,ne,se,se,se,ne,se,se,se,se,se,se,se,se,se,n,ne,sw,se,se,ne,se,se,se,se,s,se,se,se,se,se,ne,ne,s,se,se,se,se,se,se,s,sw,se,se,n,se,se,se,se,se,se,ne,n,nw,se,n,se,ne,se,se,ne,se,s,ne,se,se,se,se,se,s,s,ne,se,se,se,ne,se,se,se,se,n,se,se,nw,se,se,s,s,se,se,se,se,nw,se,n,se,nw,se,ne,se,se,se,ne,ne,n,sw,se,ne,ne,se,se,nw,se,ne,ne,se,se,se,sw,se,se,ne,ne,ne,se,ne,ne,ne,se,nw,ne,ne,s,ne,ne,sw,se,se,ne,se,se,ne,se,s,n,se,sw,se,ne,se,se,ne,s,ne,se,ne,ne,se,ne,ne,ne,ne,se,ne,se,s,ne,nw,ne,nw,ne,ne,ne,ne,ne,ne,s,ne,se,ne,ne,se,ne,ne,ne,ne,n,ne,sw,se,ne,s,ne,s,s,ne,nw,se,se,se,se,sw,se,s,se,ne,ne,se,se,n,se,se,sw,se,ne,nw,nw,se,se,nw,ne,se,ne,se,ne,ne,ne,ne,nw,ne,s,n,ne,ne,ne,ne,s,ne,ne,se,ne,ne,s,se,sw,ne,ne,ne,n,s,ne,se,nw,ne,ne,se,sw,nw,ne,ne,s,ne,ne,ne,ne,ne,ne,ne,ne,ne,se,ne,n,ne,ne,s,se,se,ne,sw,ne,ne,ne,nw,ne,ne,s,sw,nw,ne,ne,ne,ne,ne,ne,ne,se,s,ne,ne,ne,se,ne,sw,ne,ne,se,ne,ne,sw,ne,nw,nw,ne,ne,ne,ne,sw,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,se,ne,ne,ne,se,ne,ne,sw,ne,ne,ne,ne,se,ne,ne,ne,nw,ne,ne,ne,ne,ne,n,ne,nw,ne,ne,ne,s,ne,ne,ne,ne,sw,ne,s,se,ne,ne,s,n,ne,ne,ne,sw,ne,ne,ne,ne,nw,ne,ne,ne,ne,ne,n,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,sw,ne,ne,ne,sw,ne,nw,ne,se,se,ne,ne,ne,ne,ne,ne,n,ne,ne,ne,sw,ne,ne,ne,ne,ne,ne,ne,n,sw,ne,ne,ne,ne,ne,ne,ne,s,ne,ne,se,s,se,ne,sw,se,s,nw,ne,ne,ne,ne,se,ne,ne,ne,n,ne,n,n,ne,n,se,ne,sw,ne,ne,ne,ne,ne,n,se,ne,se,n,s,n,nw,ne,n,s,ne,ne,ne,ne,ne,n,ne,ne,nw,ne,ne,s,se,ne,n,ne,se,n,ne,ne,n,nw,sw,n,n,ne,ne,ne,s,ne,ne,nw,ne,n,nw,ne,s,n,ne,nw,n,se,n,ne,ne,se,ne,n,ne,ne,ne,nw,s,sw,ne,ne,sw,n,ne,ne,ne,n,sw,ne,ne,se,ne,n,n,ne,ne,se,nw,ne,ne,ne,ne,se,n,se,s,ne,ne,nw,se,n,nw,n,nw,ne,ne,ne,ne,ne,sw,ne,n,ne,n,ne,ne,se,n,se,ne,ne,ne,ne,n,ne,ne,ne,s,ne,ne,n,n,sw,ne,n,ne,ne,ne,n,se,nw,ne,n,ne,n,se,n,n,ne,n,ne,ne,ne,ne,n,n,ne,ne,se,ne,ne,n,n,ne,n,nw,ne,n,ne,ne,ne,ne,ne,n,ne,n,nw,ne,ne,s,n,n,ne,ne,n,nw,ne,n,sw,sw,ne,nw,ne,nw,n,n,n,n,se,n,sw,n,ne,ne,ne,nw,ne,n,s,ne,ne,n,ne,n,n,n,n,n,n,n,ne,ne,n,ne,n,n,n,n,n,ne,ne,ne,se,n,ne,n,s,n,se,n,ne,n,ne,sw,n,n,n,n,n,n,s,ne,n,n,se,n,nw,n,n,n,n,ne,s,n,n,n,n,ne,ne,ne,sw,n,n,n,n,ne,n,n,ne,nw,n,ne,n,ne,n,n,ne,ne,n,ne,se,n,ne,nw,ne,ne,sw,ne,ne,nw,ne,ne,ne,nw,n,sw,se,nw,n,n,sw,n,sw,sw,n,n,n,s,sw,s,n,se,ne,n,ne,n,n,n,n,ne,n,n,n,n,sw,sw,ne,ne,se,sw,s,n,n,n,ne,n,n,n,n,n,nw,n,n,n,ne,n,s,n,n,n,nw,n,n,ne,n,n,ne,n,sw,n,n,n,n,n,ne,n,nw,n,n,n,n,n,n,s,nw,n,ne,n,n,n,ne,n,n,ne,n,n,s,ne,ne,n,se,n,n,ne,se,n,n,n,n,ne,n,ne,n,n,n,n,se,n,ne,sw,n,s,s,n,sw,n,n,sw,nw,n,nw,n,n,n,n,n,n,n,nw,nw,n,sw,n,n,n,n,n,ne,n,s,n,n,s,n,n,n,ne,s,s,n,s,se,n,n,n,n,n,n,se,nw,sw,n,n,n,n,n,n,n,n,n,n,n,nw,sw,n,n,ne,n,n,n,n,n,n,n,n,n,n,n,n,se,s,n,s,n,s,n,nw,n,n,ne,n,ne,s,n,n,s,n,ne,ne,n,n,n,n,nw,ne,n,se,sw,n,n,sw,n,n,n,se,n,n,se,n,se,n,n,s,n,n,n,nw,ne,n,n,n,n,n,n,n,s,n,nw,n,n,n,se,n,n,n,n,n,n,n,n,n,s,n,n,n,se,sw,n,n,sw,n,s,nw,n,nw,n,n,se,n,sw,n,n,n,n,n,nw,n,n,n,n,s,n,n,n,n,nw,nw,n,n,n,se,nw,n,nw,se,n,n,n,n,ne,n,n,n,s,se,sw,sw,nw,s,nw,ne,n,n,nw,n,nw,n,n,ne,n,n,n,n,n,n,se,se,n,se,n,nw,n,n,n,n,nw,nw,nw,n,s,n,nw,n,n,n,ne,n,n,n,nw,nw,n,n,s,n,nw,n,n,n,n,n,nw,n,nw,n,n,n,s,se,n,n,n,nw,s,n,s,n,n,n,n,n,n,se,n,n,n,n,n,sw,n,nw,n,n,n,nw,n,n,se,s,n,nw,nw,n,n,n,n,se,n,n,n,n,ne,sw,nw,nw,se,n,nw,nw,nw,s,se,ne,nw,n,s,n,n,s,n,s,s,n,nw,n,ne,nw,n,se,n,nw,n,se,nw,nw,n,nw,n,s,nw,nw,nw,n,n,nw,n,ne,nw,se,n,n,n,nw,nw,n,s,n,n,nw,n,nw,s,nw,sw,nw,n,nw,se,n,n,n,ne,n,nw,n,ne,nw,n,nw,n,n,se,n,nw,nw,n,se,nw,se,se,nw,n,nw,nw,n,ne,sw,se,n,n,nw,s,n,nw,nw,n,nw,nw,n,nw,nw,nw,s,nw,n,se,nw,n,n,s,s,n,n,n,ne,n,nw,n,n,n,n,sw,n,n,se,ne,n,nw,nw,n,n,nw,sw,nw,ne,n,nw,n,n,se,se,n,n,nw,n,se,n,s,nw,n,n,n,n,nw,n,n,n,ne,nw,nw,nw,n,nw,n,n,n,nw,nw,nw,n,ne,nw,n,n,sw,n,n,n,nw,nw,s,n,nw,nw,sw,n,n,nw,n,n,n,n,nw,n,n,n,nw,nw,nw,nw,n,s,nw,nw,n,nw,se,n,nw,nw,n,n,nw,n,nw,n,nw,n,n,nw,n,nw,n,n,n,n,nw,nw,nw,nw,nw,n,n,n,sw,n,n,nw,nw,n,n,n,n,ne,n,sw,n,n,nw,n,nw,nw,nw,nw,nw,nw,nw,ne,nw,ne,n,n,nw,nw,nw,nw,nw,nw,nw,nw,se,nw,nw,nw,n,nw,ne,nw,se,nw,nw,nw,n,se,nw,n,se,nw,nw,nw,ne,n,n,sw,nw,n,ne,ne,nw,n,nw,sw,n,n,nw,nw,n,ne,nw,nw,nw,nw,nw,nw,s,nw,nw,nw,s,nw,nw,nw,n,nw,nw,sw,n,se,nw,nw,nw,nw,n,nw,s,n,nw,nw,n,nw,nw,nw,sw,nw,n,nw,nw,sw,n,nw,nw,nw,s,nw,nw,nw,nw,n,ne,nw,nw,nw,se,n,n,nw,nw,nw,n,nw,nw,s,nw,nw,n,nw,nw,nw,sw,se,nw,nw,nw,nw,n,s,nw,nw,nw,nw,ne,se,sw,nw,sw,nw,nw,n,n,n,nw,n,nw,nw,nw,nw,nw,nw,nw,n,nw,nw,nw,nw,se,se,se,n,sw,nw,s,ne,n,nw,nw,s,n,nw,s,n,ne,s,se,nw,nw,n,nw,nw,ne,nw,nw,nw,nw,nw,nw,ne,nw,n,nw,nw,nw,nw,n,nw,s,n,nw,nw,nw,nw,nw,nw,nw,n,nw,nw,n,nw,nw,nw,nw,nw,nw,nw,ne,nw,nw,nw,nw,nw,s,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,n,sw,nw,sw,nw,n,ne,nw,nw,nw,nw,nw,nw,nw,s,nw,nw,nw,nw,se,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,se,nw,nw,nw,n,nw,ne,nw,nw,ne,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,ne diff --git a/src/main/resources/2017/day12.txt b/src/main/resources/2017/day12.txt new file mode 100644 index 00000000..10550303 --- /dev/null +++ b/src/main/resources/2017/day12.txt @@ -0,0 +1,2000 @@ +0 <-> 1352, 1864 +1 <-> 430 +2 <-> 1202, 1416 +3 <-> 303, 363, 635 +4 <-> 1041, 1383 +5 <-> 143, 1513 +6 <-> 6 +7 <-> 619 +8 <-> 167, 1246, 1822 +9 <-> 577, 1274, 1347 +10 <-> 10, 899 +11 <-> 790 +12 <-> 606 +13 <-> 1134, 1894 +14 <-> 539, 1974 +15 <-> 683, 1783 +16 <-> 438, 1235 +17 <-> 17 +18 <-> 760, 1162 +19 <-> 1146 +20 <-> 678, 1235, 1397, 1911 +21 <-> 127, 615, 980 +22 <-> 22, 187 +23 <-> 192, 552 +24 <-> 169 +25 <-> 471 +26 <-> 1030, 1329, 1333 +27 <-> 1404 +28 <-> 1249 +29 <-> 1755 +30 <-> 198 +31 <-> 510, 1884 +32 <-> 1088 +33 <-> 54, 372, 616, 938, 1548 +34 <-> 1574 +35 <-> 238, 1411 +36 <-> 114 +37 <-> 1962 +38 <-> 1554, 1633 +39 <-> 72, 486, 1002 +40 <-> 40, 1224, 1342, 1511, 1886 +41 <-> 1244, 1644 +42 <-> 1784 +43 <-> 169, 1142 +44 <-> 96, 827 +45 <-> 842, 1512 +46 <-> 1248 +47 <-> 283, 1125, 1130 +48 <-> 212, 327, 1922 +49 <-> 490 +50 <-> 359, 1386 +51 <-> 1186 +52 <-> 414 +53 <-> 808 +54 <-> 33, 673 +55 <-> 614 +56 <-> 56 +57 <-> 257 +58 <-> 482, 701, 1702, 1921 +59 <-> 515, 695, 1073 +60 <-> 809 +61 <-> 865 +62 <-> 106, 764 +63 <-> 416, 1119, 1360 +64 <-> 552 +65 <-> 978, 1042 +66 <-> 97, 130, 168 +67 <-> 180, 339 +68 <-> 1076 +69 <-> 1550, 1621 +70 <-> 1163, 1574, 1834 +71 <-> 163, 1789 +72 <-> 39, 1461, 1693 +73 <-> 266, 652, 1612, 1877 +74 <-> 860, 936, 1685 +75 <-> 502, 768 +76 <-> 1064 +77 <-> 1685, 1967 +78 <-> 501 +79 <-> 743, 1261, 1608 +80 <-> 80, 1901 +81 <-> 1684 +82 <-> 82 +83 <-> 234, 504, 1159 +84 <-> 1529 +85 <-> 705 +86 <-> 362, 644 +87 <-> 223 +88 <-> 1870 +89 <-> 1412, 1633 +90 <-> 191, 1141, 1993, 1999 +91 <-> 588 +92 <-> 92 +93 <-> 918 +94 <-> 972, 1401 +95 <-> 1043, 1299 +96 <-> 44 +97 <-> 66, 1089 +98 <-> 1300 +99 <-> 243, 1220, 1957 +100 <-> 1327 +101 <-> 815, 1700, 1782 +102 <-> 427, 723, 780, 1033 +103 <-> 589, 1586 +104 <-> 486 +105 <-> 1296 +106 <-> 62, 1677 +107 <-> 1855 +108 <-> 174, 1792 +109 <-> 1518 +110 <-> 1943 +111 <-> 1799 +112 <-> 112, 845 +113 <-> 1189 +114 <-> 36, 1895 +115 <-> 775, 894, 987, 1832 +116 <-> 455, 1317 +117 <-> 436, 630, 944, 1229 +118 <-> 1316 +119 <-> 282 +120 <-> 1022 +121 <-> 446, 685 +122 <-> 908, 1189 +123 <-> 850, 1058, 1400 +124 <-> 124, 867 +125 <-> 316, 1198 +126 <-> 1938 +127 <-> 21 +128 <-> 514, 871 +129 <-> 597 +130 <-> 66, 187, 541, 952 +131 <-> 637, 728, 1951 +132 <-> 1480 +133 <-> 921, 1443 +134 <-> 506, 576 +135 <-> 1510 +136 <-> 755 +137 <-> 842 +138 <-> 1077, 1219 +139 <-> 1284, 1664 +140 <-> 403 +141 <-> 452, 1400 +142 <-> 142, 442, 1462, 1463 +143 <-> 5, 331, 492 +144 <-> 144 +145 <-> 844 +146 <-> 774, 1141 +147 <-> 351, 458 +148 <-> 1984 +149 <-> 499, 909, 935 +150 <-> 153, 1300 +151 <-> 151 +152 <-> 1331 +153 <-> 150 +154 <-> 783 +155 <-> 155, 1985 +156 <-> 1752 +157 <-> 716, 1144 +158 <-> 647, 750 +159 <-> 583 +160 <-> 493, 770, 1669, 1675 +161 <-> 161, 291, 1890 +162 <-> 744, 1088, 1250 +163 <-> 71, 803 +164 <-> 231 +165 <-> 1799 +166 <-> 1101 +167 <-> 8, 167 +168 <-> 66, 441 +169 <-> 24, 43, 1015 +170 <-> 414, 509, 1222, 1392, 1947 +171 <-> 180, 260, 1448 +172 <-> 1894 +173 <-> 585, 1662 +174 <-> 108, 1300, 1304, 1789 +175 <-> 574, 1245 +176 <-> 1776, 1809 +177 <-> 1625 +178 <-> 1463 +179 <-> 1469, 1648 +180 <-> 67, 171 +181 <-> 506, 1333 +182 <-> 1703 +183 <-> 370, 745, 816, 961 +184 <-> 1143, 1608, 1696 +185 <-> 431, 447, 633 +186 <-> 352, 752 +187 <-> 22, 130, 201, 232, 279 +188 <-> 921 +189 <-> 1460 +190 <-> 445, 891, 972 +191 <-> 90, 1078, 1383, 1957 +192 <-> 23, 1057 +193 <-> 1438 +194 <-> 196, 819, 873 +195 <-> 1403 +196 <-> 194, 508 +197 <-> 865, 1625 +198 <-> 30, 855, 1397 +199 <-> 399, 401 +200 <-> 458 +201 <-> 187, 457, 796 +202 <-> 754, 964, 1736, 1737 +203 <-> 937, 1890 +204 <-> 676, 1148, 1472 +205 <-> 205 +206 <-> 206, 872, 1504 +207 <-> 1575, 1717 +208 <-> 1349, 1582, 1619, 1952 +209 <-> 375, 523 +210 <-> 1029 +211 <-> 588, 623 +212 <-> 48, 404, 820 +213 <-> 213 +214 <-> 1370 +215 <-> 360, 412, 1507, 1800, 1874 +216 <-> 287, 634, 1023, 1986 +217 <-> 662, 1863 +218 <-> 417, 1154 +219 <-> 1250, 1442, 1962 +220 <-> 595, 935, 1153, 1181 +221 <-> 290 +222 <-> 1328, 1407 +223 <-> 87, 464, 925, 1131 +224 <-> 1398 +225 <-> 225, 768 +226 <-> 999 +227 <-> 311, 581, 697 +228 <-> 983, 1019 +229 <-> 719, 1469, 1820 +230 <-> 453, 806, 1205, 1449 +231 <-> 164, 451, 1741 +232 <-> 187 +233 <-> 664, 1419 +234 <-> 83, 295, 482, 1684 +235 <-> 622 +236 <-> 236, 1662 +237 <-> 287 +238 <-> 35, 1308, 1608, 1805 +239 <-> 1365 +240 <-> 1177 +241 <-> 387, 778, 1051 +242 <-> 1233 +243 <-> 99, 806, 1614 +244 <-> 609, 1468 +245 <-> 625, 1618 +246 <-> 841, 1835 +247 <-> 1720 +248 <-> 1382, 1859 +249 <-> 601, 1882 +250 <-> 250, 1189, 1603, 1673, 1793 +251 <-> 511 +252 <-> 627 +253 <-> 1195 +254 <-> 400, 1562, 1893, 1951 +255 <-> 285, 588, 1180 +256 <-> 1408, 1468 +257 <-> 57, 1211, 1940 +258 <-> 695, 1174 +259 <-> 610, 1176, 1516 +260 <-> 171 +261 <-> 268 +262 <-> 502, 837, 1963 +263 <-> 263 +264 <-> 622, 638, 1815, 1945 +265 <-> 570, 1590 +266 <-> 73 +267 <-> 336, 1040 +268 <-> 261, 1815 +269 <-> 652, 966, 1487 +270 <-> 508, 522 +271 <-> 1259, 1298, 1477, 1767 +272 <-> 553, 1103, 1982 +273 <-> 593, 1919 +274 <-> 934, 1361 +275 <-> 1839 +276 <-> 329 +277 <-> 1017, 1047 +278 <-> 671 +279 <-> 187, 853 +280 <-> 1097, 1370 +281 <-> 629 +282 <-> 119, 1431 +283 <-> 47, 974 +284 <-> 1359, 1471 +285 <-> 255 +286 <-> 321, 883 +287 <-> 216, 237 +288 <-> 630, 880 +289 <-> 289, 1853 +290 <-> 221, 1307 +291 <-> 161, 691, 1213 +292 <-> 808 +293 <-> 877, 1031, 1192 +294 <-> 294, 1935 +295 <-> 234 +296 <-> 520, 1725 +297 <-> 578, 702, 1184, 1209, 1431 +298 <-> 979 +299 <-> 1297, 1506 +300 <-> 540, 995, 1187, 1774 +301 <-> 675 +302 <-> 739, 842 +303 <-> 3, 1149, 1369, 1484 +304 <-> 690 +305 <-> 1306 +306 <-> 481 +307 <-> 474, 1723 +308 <-> 323 +309 <-> 995 +310 <-> 544, 797, 1000 +311 <-> 227, 927, 1127 +312 <-> 1519 +313 <-> 1989 +314 <-> 314 +315 <-> 536, 560, 1758 +316 <-> 125, 582, 679, 1362 +317 <-> 317, 510 +318 <-> 1382, 1678 +319 <-> 682 +320 <-> 1733 +321 <-> 286, 575 +322 <-> 905, 1898 +323 <-> 308, 366, 788, 1022, 1119, 1615 +324 <-> 1151, 1390, 1540 +325 <-> 1022 +326 <-> 335, 1858 +327 <-> 48 +328 <-> 1076, 1456 +329 <-> 276, 329, 1268 +330 <-> 796, 919, 1330, 1565, 1926 +331 <-> 143, 1522 +332 <-> 831 +333 <-> 1746 +334 <-> 1254, 1844 +335 <-> 326 +336 <-> 267, 913 +337 <-> 454, 1365, 1618 +338 <-> 1800 +339 <-> 67 +340 <-> 1061 +341 <-> 957 +342 <-> 1130, 1242 +343 <-> 782, 1629 +344 <-> 350, 1216 +345 <-> 898 +346 <-> 586, 1372 +347 <-> 1537 +348 <-> 1899 +349 <-> 378 +350 <-> 344 +351 <-> 147, 381, 993 +352 <-> 186 +353 <-> 353, 646, 913 +354 <-> 465 +355 <-> 1423, 1695 +356 <-> 573, 1241 +357 <-> 1695 +358 <-> 1100, 1271 +359 <-> 50, 1472, 1910 +360 <-> 215 +361 <-> 1512 +362 <-> 86, 1768, 1997 +363 <-> 3, 1731 +364 <-> 657, 1713, 1992 +365 <-> 475, 1490, 1968 +366 <-> 323, 1482, 1765 +367 <-> 831 +368 <-> 1393 +369 <-> 1135 +370 <-> 183, 592 +371 <-> 637, 1518 +372 <-> 33 +373 <-> 1494 +374 <-> 1761 +375 <-> 209 +376 <-> 1587 +377 <-> 1522 +378 <-> 349, 686, 1006, 1946 +379 <-> 379, 487 +380 <-> 1763 +381 <-> 351, 1048 +382 <-> 1895 +383 <-> 1623 +384 <-> 1423, 1450 +385 <-> 1350, 1770 +386 <-> 798, 890 +387 <-> 241, 894 +388 <-> 1756 +389 <-> 629 +390 <-> 507 +391 <-> 1780 +392 <-> 1144 +393 <-> 1240, 1279 +394 <-> 1227 +395 <-> 1361 +396 <-> 396 +397 <-> 397, 1228 +398 <-> 454 +399 <-> 199 +400 <-> 254, 1147 +401 <-> 199, 1068, 1445, 1918 +402 <-> 636, 1601, 1934 +403 <-> 140, 921 +404 <-> 212, 430, 468, 1064, 1346, 1434 +405 <-> 633 +406 <-> 949 +407 <-> 512, 951 +408 <-> 1900, 1908 +409 <-> 409 +410 <-> 1724 +411 <-> 624, 733 +412 <-> 215, 1455 +413 <-> 1612 +414 <-> 52, 170 +415 <-> 907, 1600 +416 <-> 63 +417 <-> 218, 835 +418 <-> 418, 1116 +419 <-> 1531 +420 <-> 1154, 1538 +421 <-> 485, 511 +422 <-> 422 +423 <-> 665 +424 <-> 1891 +425 <-> 1140 +426 <-> 1409 +427 <-> 102 +428 <-> 463 +429 <-> 575, 1432, 1779 +430 <-> 1, 404 +431 <-> 185, 1473 +432 <-> 1065, 1720 +433 <-> 1554 +434 <-> 965 +435 <-> 562, 1577 +436 <-> 117 +437 <-> 960 +438 <-> 16, 926, 1342 +439 <-> 1171 +440 <-> 1198, 1622 +441 <-> 168 +442 <-> 142 +443 <-> 443 +444 <-> 1399, 1836 +445 <-> 190 +446 <-> 121 +447 <-> 185, 1249 +448 <-> 1505 +449 <-> 542, 1433 +450 <-> 1859 +451 <-> 231, 590, 1641, 1651 +452 <-> 141, 452 +453 <-> 230 +454 <-> 337, 398, 511 +455 <-> 116, 455 +456 <-> 1231, 1368 +457 <-> 201, 1294 +458 <-> 147, 200, 1799 +459 <-> 1113 +460 <-> 1521, 1841 +461 <-> 882 +462 <-> 683, 1744, 1887 +463 <-> 428, 1221 +464 <-> 223, 1310 +465 <-> 354, 880 +466 <-> 960, 1216 +467 <-> 511, 1185 +468 <-> 404 +469 <-> 469 +470 <-> 470 +471 <-> 25, 494, 747, 1078 +472 <-> 855, 1358 +473 <-> 473 +474 <-> 307, 1288 +475 <-> 365, 688, 1881 +476 <-> 1129, 1496, 1753 +477 <-> 828, 1032, 1376 +478 <-> 1474, 1950 +479 <-> 479 +480 <-> 480, 1318 +481 <-> 306, 487 +482 <-> 58, 234, 902, 1003 +483 <-> 1681, 1730 +484 <-> 484, 1071 +485 <-> 421, 800, 975, 1124 +486 <-> 39, 104 +487 <-> 379, 481, 918 +488 <-> 488, 1297 +489 <-> 897, 1216, 1384 +490 <-> 49, 1286 +491 <-> 1283 +492 <-> 143, 1098 +493 <-> 160, 1120 +494 <-> 471, 1781 +495 <-> 495, 642, 714, 1004 +496 <-> 1227 +497 <-> 513, 1349, 1382 +498 <-> 1846 +499 <-> 149, 499 +500 <-> 621, 1005, 1640 +501 <-> 78, 1254 +502 <-> 75, 262, 1008, 1404, 1915 +503 <-> 1707 +504 <-> 83 +505 <-> 1809 +506 <-> 134, 181, 506 +507 <-> 390, 621, 1630 +508 <-> 196, 270 +509 <-> 170, 1819 +510 <-> 31, 317, 656 +511 <-> 251, 421, 454, 467, 1532 +512 <-> 407, 1258, 1430 +513 <-> 497 +514 <-> 128, 840 +515 <-> 59, 619, 662 +516 <-> 1649 +517 <-> 517 +518 <-> 731 +519 <-> 1522 +520 <-> 296, 847 +521 <-> 1667 +522 <-> 270, 690, 1047, 1246 +523 <-> 209, 1087 +524 <-> 1267 +525 <-> 714, 1126, 1896 +526 <-> 1788 +527 <-> 1660, 1733 +528 <-> 1309, 1955 +529 <-> 1912 +530 <-> 838 +531 <-> 1167, 1515 +532 <-> 532, 1128 +533 <-> 1602 +534 <-> 564, 1108 +535 <-> 535, 810 +536 <-> 315, 1842 +537 <-> 1947 +538 <-> 1208, 1445 +539 <-> 14, 825 +540 <-> 300 +541 <-> 130, 1188 +542 <-> 449, 1197 +543 <-> 1302 +544 <-> 310, 1131 +545 <-> 1409 +546 <-> 772 +547 <-> 1954 +548 <-> 1662 +549 <-> 1601 +550 <-> 875, 1899 +551 <-> 1208 +552 <-> 23, 64, 1140 +553 <-> 272, 1616, 1632, 1988 +554 <-> 554, 622, 1169 +555 <-> 555, 705, 772 +556 <-> 625 +557 <-> 867, 1210 +558 <-> 870, 1039, 1320, 1509, 1995 +559 <-> 835, 968 +560 <-> 315 +561 <-> 1335 +562 <-> 435 +563 <-> 658 +564 <-> 534, 640, 1456, 1610 +565 <-> 1130 +566 <-> 741 +567 <-> 1018 +568 <-> 839 +569 <-> 1544, 1767 +570 <-> 265 +571 <-> 1006, 1852 +572 <-> 1320 +573 <-> 356, 787, 816, 1947 +574 <-> 175, 1287, 1381, 1413 +575 <-> 321, 429 +576 <-> 134 +577 <-> 9, 668, 1979 +578 <-> 297, 1576 +579 <-> 1779 +580 <-> 798 +581 <-> 227, 832 +582 <-> 316, 1033 +583 <-> 159, 1550 +584 <-> 1988 +585 <-> 173, 1275 +586 <-> 346, 1343 +587 <-> 1499, 1911 +588 <-> 91, 211, 255 +589 <-> 103, 703 +590 <-> 451, 1686 +591 <-> 828, 1746 +592 <-> 370 +593 <-> 273 +594 <-> 1358, 1607 +595 <-> 220 +596 <-> 1050, 1375 +597 <-> 129, 1463 +598 <-> 598, 1804 +599 <-> 1606, 1671 +600 <-> 1930 +601 <-> 249, 869, 1233, 1336 +602 <-> 1150, 1203 +603 <-> 603 +604 <-> 604, 620 +605 <-> 835, 1556, 1770 +606 <-> 12, 696, 1634, 1897 +607 <-> 1629 +608 <-> 608 +609 <-> 244, 738 +610 <-> 259, 684, 1309 +611 <-> 1398 +612 <-> 612, 1178, 1808 +613 <-> 1245 +614 <-> 55, 1701, 1969 +615 <-> 21, 759 +616 <-> 33, 1160 +617 <-> 617, 824 +618 <-> 725, 840 +619 <-> 7, 515 +620 <-> 604, 1247 +621 <-> 500, 507, 1039 +622 <-> 235, 264, 554, 665, 1476 +623 <-> 211, 773, 1382, 1839 +624 <-> 411, 943 +625 <-> 245, 556, 794, 1277 +626 <-> 988, 1429, 1495 +627 <-> 252, 708, 1780 +628 <-> 981 +629 <-> 281, 389, 1132 +630 <-> 117, 288, 802, 1438, 1492 +631 <-> 753, 1279, 1716, 1843 +632 <-> 1715 +633 <-> 185, 405 +634 <-> 216 +635 <-> 3 +636 <-> 402, 1983 +637 <-> 131, 371 +638 <-> 264, 1157 +639 <-> 815 +640 <-> 564 +641 <-> 1473, 1727 +642 <-> 495 +643 <-> 967, 1996 +644 <-> 86, 1586 +645 <-> 1063, 1994 +646 <-> 353 +647 <-> 158, 1732 +648 <-> 910, 1758 +649 <-> 685, 704 +650 <-> 1443, 1490 +651 <-> 891 +652 <-> 73, 269, 1374 +653 <-> 756 +654 <-> 1026 +655 <-> 1177 +656 <-> 510 +657 <-> 364 +658 <-> 563, 1264, 1402, 1457, 1617 +659 <-> 899, 1543 +660 <-> 874, 1691 +661 <-> 1979 +662 <-> 217, 515 +663 <-> 953, 1147 +664 <-> 233, 820, 1152 +665 <-> 423, 622, 856 +666 <-> 1020 +667 <-> 1093, 1611 +668 <-> 577, 892 +669 <-> 1563 +670 <-> 984, 1927 +671 <-> 278, 803, 982 +672 <-> 1143 +673 <-> 54, 1650, 1902 +674 <-> 1624, 1694 +675 <-> 301, 1473 +676 <-> 204, 1726 +677 <-> 786, 1772 +678 <-> 20 +679 <-> 316 +680 <-> 722, 1885 +681 <-> 845 +682 <-> 319, 777, 1935 +683 <-> 15, 462 +684 <-> 610 +685 <-> 121, 649, 836, 1137 +686 <-> 378, 1709 +687 <-> 687 +688 <-> 475 +689 <-> 1950 +690 <-> 304, 522, 1357, 1814 +691 <-> 291 +692 <-> 838, 1183 +693 <-> 1298 +694 <-> 1493 +695 <-> 59, 258, 1529 +696 <-> 606 +697 <-> 227, 1590 +698 <-> 870 +699 <-> 1699 +700 <-> 1740 +701 <-> 58, 1535 +702 <-> 297 +703 <-> 589, 703 +704 <-> 649, 1289, 1652 +705 <-> 85, 555 +706 <-> 1523 +707 <-> 1606 +708 <-> 627, 710, 1498, 1598 +709 <-> 852, 1835 +710 <-> 708 +711 <-> 711 +712 <-> 1786 +713 <-> 991, 1558 +714 <-> 495, 525 +715 <-> 1185, 1473 +716 <-> 157 +717 <-> 1425 +718 <-> 718, 1316 +719 <-> 229, 1568 +720 <-> 1977 +721 <-> 721, 1272 +722 <-> 680, 734, 1547 +723 <-> 102 +724 <-> 1982 +725 <-> 618, 807 +726 <-> 1771 +727 <-> 1447 +728 <-> 131, 1232, 1972 +729 <-> 1345, 1875 +730 <-> 730, 991 +731 <-> 518, 1201, 1484 +732 <-> 1972 +733 <-> 411, 1596 +734 <-> 722 +735 <-> 1253 +736 <-> 936, 1160 +737 <-> 799, 865, 957, 1319 +738 <-> 609 +739 <-> 302, 1047 +740 <-> 1532 +741 <-> 566, 1226, 1395 +742 <-> 742, 1215 +743 <-> 79, 1552 +744 <-> 162, 1110 +745 <-> 183 +746 <-> 1861 +747 <-> 471 +748 <-> 1671 +749 <-> 1099, 1899 +750 <-> 158 +751 <-> 751 +752 <-> 186, 804, 1013, 1403 +753 <-> 631, 753 +754 <-> 202, 1423, 1670 +755 <-> 136, 803, 1343 +756 <-> 653, 756 +757 <-> 819 +758 <-> 758 +759 <-> 615 +760 <-> 18, 1044 +761 <-> 1636 +762 <-> 1184, 1251 +763 <-> 879, 1227 +764 <-> 62, 1486 +765 <-> 1993 +766 <-> 966, 1665 +767 <-> 773, 925, 1295 +768 <-> 75, 225 +769 <-> 1675 +770 <-> 160 +771 <-> 801, 916, 985, 996, 1984 +772 <-> 546, 555 +773 <-> 623, 767, 927, 1447 +774 <-> 146, 979, 1583 +775 <-> 115, 947 +776 <-> 1055 +777 <-> 682, 1114, 1480 +778 <-> 241 +779 <-> 1735 +780 <-> 102, 781, 1942 +781 <-> 780, 1062 +782 <-> 343, 809, 881, 1766 +783 <-> 154, 1389, 1763 +784 <-> 1168, 1935 +785 <-> 1286 +786 <-> 677, 833, 1140 +787 <-> 573, 1801 +788 <-> 323, 1036 +789 <-> 983, 1599 +790 <-> 11, 1322, 1503, 1667 +791 <-> 956 +792 <-> 1708 +793 <-> 1431 +794 <-> 625, 1842 +795 <-> 795 +796 <-> 201, 330 +797 <-> 310, 1425, 1749 +798 <-> 386, 580 +799 <-> 737, 1561, 1722 +800 <-> 485 +801 <-> 771 +802 <-> 630, 1363 +803 <-> 163, 671, 755, 1897, 1953 +804 <-> 752, 1356 +805 <-> 1459 +806 <-> 230, 243 +807 <-> 725, 855 +808 <-> 53, 292, 1303, 1494 +809 <-> 60, 782 +810 <-> 535, 1713 +811 <-> 1670 +812 <-> 1910 +813 <-> 1458 +814 <-> 896, 1098 +815 <-> 101, 639, 815, 898 +816 <-> 183, 573 +817 <-> 817, 1021, 1262 +818 <-> 818, 1077 +819 <-> 194, 757, 861 +820 <-> 212, 664, 1944 +821 <-> 1081, 1109 +822 <-> 1769 +823 <-> 1758 +824 <-> 617 +825 <-> 539 +826 <-> 1150, 1844 +827 <-> 44, 831 +828 <-> 477, 591 +829 <-> 1947 +830 <-> 1165, 1669 +831 <-> 332, 367, 827 +832 <-> 581 +833 <-> 786 +834 <-> 1022, 1530 +835 <-> 417, 559, 605 +836 <-> 685, 1647 +837 <-> 262, 1560, 1944 +838 <-> 530, 692, 1717 +839 <-> 568, 843, 1021, 1788 +840 <-> 514, 618, 1390 +841 <-> 246, 1190, 1646 +842 <-> 45, 137, 302, 1306 +843 <-> 839 +844 <-> 145, 1715, 1833 +845 <-> 112, 681 +846 <-> 1136, 1718 +847 <-> 520, 1818 +848 <-> 1916 +849 <-> 1641 +850 <-> 123 +851 <-> 1072 +852 <-> 709 +853 <-> 279, 941 +854 <-> 1188 +855 <-> 198, 472, 807, 1469 +856 <-> 665 +857 <-> 1318 +858 <-> 1608 +859 <-> 1901 +860 <-> 74 +861 <-> 819, 920 +862 <-> 1378 +863 <-> 1683 +864 <-> 1880 +865 <-> 61, 197, 737, 1289 +866 <-> 866, 1221 +867 <-> 124, 557 +868 <-> 1485 +869 <-> 601, 1029 +870 <-> 558, 698 +871 <-> 128, 1738 +872 <-> 206 +873 <-> 194 +874 <-> 660, 1100 +875 <-> 550, 900 +876 <-> 1029 +877 <-> 293, 1087, 1486 +878 <-> 1726 +879 <-> 763, 1252, 1597 +880 <-> 288, 465 +881 <-> 782 +882 <-> 461, 1223, 1252, 1585 +883 <-> 286, 954, 1046, 1491 +884 <-> 1184 +885 <-> 1393, 1487 +886 <-> 907, 995, 1123 +887 <-> 988, 997 +888 <-> 1218, 1679 +889 <-> 1544 +890 <-> 386, 1867 +891 <-> 190, 651, 917, 1593 +892 <-> 668 +893 <-> 893 +894 <-> 115, 387 +895 <-> 1378, 1857 +896 <-> 814 +897 <-> 489, 1829 +898 <-> 345, 815 +899 <-> 10, 659 +900 <-> 875 +901 <-> 901, 1132, 1550 +902 <-> 482 +903 <-> 1172, 1271, 1657 +904 <-> 1954 +905 <-> 322 +906 <-> 1716 +907 <-> 415, 886, 1929 +908 <-> 122 +909 <-> 149 +910 <-> 648 +911 <-> 911 +912 <-> 1292, 1962 +913 <-> 336, 353 +914 <-> 914 +915 <-> 1744 +916 <-> 771, 1421 +917 <-> 891, 1084, 1428 +918 <-> 93, 487 +919 <-> 330, 1672 +920 <-> 861 +921 <-> 133, 188, 403, 1418, 1921 +922 <-> 1020, 1515 +923 <-> 1597 +924 <-> 1102 +925 <-> 223, 767, 1175, 1920 +926 <-> 438 +927 <-> 311, 773 +928 <-> 1162, 1317, 1571 +929 <-> 929 +930 <-> 1485, 1875 +931 <-> 1809 +932 <-> 1130, 1190, 1553 +933 <-> 1303 +934 <-> 274 +935 <-> 149, 220 +936 <-> 74, 736, 1574 +937 <-> 203, 1942 +938 <-> 33 +939 <-> 1616 +940 <-> 940, 1577 +941 <-> 853 +942 <-> 1315, 1345 +943 <-> 624 +944 <-> 117, 1531 +945 <-> 1130 +946 <-> 1789 +947 <-> 775 +948 <-> 1275 +949 <-> 406, 1279, 1795 +950 <-> 1803 +951 <-> 407, 1440, 1785 +952 <-> 130 +953 <-> 663, 1460 +954 <-> 883 +955 <-> 1954 +956 <-> 791, 1625 +957 <-> 341, 737 +958 <-> 1932 +959 <-> 1624 +960 <-> 437, 466, 1501 +961 <-> 183, 994 +962 <-> 1663 +963 <-> 963, 1734 +964 <-> 202, 1784 +965 <-> 434, 1240 +966 <-> 269, 766, 1395 +967 <-> 643, 1414 +968 <-> 559, 1523 +969 <-> 1664 +970 <-> 1670 +971 <-> 1485 +972 <-> 94, 190 +973 <-> 984 +974 <-> 283 +975 <-> 485, 1584 +976 <-> 1835 +977 <-> 977 +978 <-> 65 +979 <-> 298, 774 +980 <-> 21, 1217, 1897 +981 <-> 628, 981 +982 <-> 671 +983 <-> 228, 789, 1321, 1933 +984 <-> 670, 973, 1105 +985 <-> 771, 1703 +986 <-> 1478 +987 <-> 115, 1725 +988 <-> 626, 887, 1266 +989 <-> 1366, 1601, 1964 +990 <-> 1990 +991 <-> 713, 730, 1932 +992 <-> 1183 +993 <-> 351 +994 <-> 961 +995 <-> 300, 309, 886, 995, 1305 +996 <-> 771, 1048, 1203 +997 <-> 887 +998 <-> 1787 +999 <-> 226, 1093, 1367 +1000 <-> 310 +1001 <-> 1468, 1913 +1002 <-> 39, 1718 +1003 <-> 482 +1004 <-> 495 +1005 <-> 500 +1006 <-> 378, 571 +1007 <-> 1256 +1008 <-> 502 +1009 <-> 1127 +1010 <-> 1567 +1011 <-> 1011, 1122, 1840 +1012 <-> 1012 +1013 <-> 752 +1014 <-> 1538, 1775 +1015 <-> 169, 1426 +1016 <-> 1016, 1960 +1017 <-> 277 +1018 <-> 567, 1619 +1019 <-> 228, 1495 +1020 <-> 666, 922 +1021 <-> 817, 839 +1022 <-> 120, 323, 325, 834 +1023 <-> 216, 1271 +1024 <-> 1502 +1025 <-> 1097 +1026 <-> 654, 1455, 1739 +1027 <-> 1823, 1906 +1028 <-> 1903 +1029 <-> 210, 869, 876, 1474, 1756 +1030 <-> 26 +1031 <-> 293, 1458 +1032 <-> 477 +1033 <-> 102, 582 +1034 <-> 1984 +1035 <-> 1977 +1036 <-> 788 +1037 <-> 1037 +1038 <-> 1312, 1796, 1855 +1039 <-> 558, 621, 1831 +1040 <-> 267, 1478, 1776 +1041 <-> 4 +1042 <-> 65, 1881 +1043 <-> 95, 1202, 1794 +1044 <-> 760 +1045 <-> 1426 +1046 <-> 883 +1047 <-> 277, 522, 739 +1048 <-> 381, 996, 1578 +1049 <-> 1554, 1779 +1050 <-> 596 +1051 <-> 241, 1117 +1052 <-> 1533, 1637 +1053 <-> 1797 +1054 <-> 1814 +1055 <-> 776, 1380 +1056 <-> 1732, 1965 +1057 <-> 192 +1058 <-> 123 +1059 <-> 1114 +1060 <-> 1282 +1061 <-> 340, 1325, 1517 +1062 <-> 781, 1810 +1063 <-> 645, 1567 +1064 <-> 76, 404 +1065 <-> 432 +1066 <-> 1081, 1384, 1592 +1067 <-> 1139 +1068 <-> 401 +1069 <-> 1327, 1873 +1070 <-> 1070 +1071 <-> 484, 1334 +1072 <-> 851, 1072 +1073 <-> 59 +1074 <-> 1948 +1075 <-> 1227 +1076 <-> 68, 328, 1076 +1077 <-> 138, 818, 1906 +1078 <-> 191, 471, 1966 +1079 <-> 1869 +1080 <-> 1735, 1811, 1855 +1081 <-> 821, 1066, 1895 +1082 <-> 1740 +1083 <-> 1083 +1084 <-> 917 +1085 <-> 1111 +1086 <-> 1440, 1916 +1087 <-> 523, 877 +1088 <-> 32, 162 +1089 <-> 97, 1854, 1948 +1090 <-> 1102, 1896 +1091 <-> 1466 +1092 <-> 1655 +1093 <-> 667, 999, 1159 +1094 <-> 1248, 1961 +1095 <-> 1243 +1096 <-> 1635 +1097 <-> 280, 1025 +1098 <-> 492, 814 +1099 <-> 749 +1100 <-> 358, 874 +1101 <-> 166, 1846 +1102 <-> 924, 1090 +1103 <-> 272, 1766 +1104 <-> 1712 +1105 <-> 984, 1105 +1106 <-> 1106, 1620 +1107 <-> 1107 +1108 <-> 534, 1529 +1109 <-> 821 +1110 <-> 744 +1111 <-> 1085, 1111, 1207 +1112 <-> 1373 +1113 <-> 459, 1430 +1114 <-> 777, 1059 +1115 <-> 1115 +1116 <-> 418 +1117 <-> 1051 +1118 <-> 1474, 1583 +1119 <-> 63, 323, 1194, 1302 +1120 <-> 493 +1121 <-> 1464 +1122 <-> 1011 +1123 <-> 886, 1848 +1124 <-> 485 +1125 <-> 47, 1705 +1126 <-> 525 +1127 <-> 311, 1009, 1566 +1128 <-> 532 +1129 <-> 476 +1130 <-> 47, 342, 565, 932, 945 +1131 <-> 223, 544 +1132 <-> 629, 901 +1133 <-> 1133, 1526 +1134 <-> 13, 1913 +1135 <-> 369, 1871 +1136 <-> 846, 1879 +1137 <-> 685 +1138 <-> 1752 +1139 <-> 1067, 1202 +1140 <-> 425, 552, 786 +1141 <-> 90, 146 +1142 <-> 43, 1818 +1143 <-> 184, 672, 1411 +1144 <-> 157, 392, 1851 +1145 <-> 1145, 1628 +1146 <-> 19, 1574 +1147 <-> 400, 663, 1265 +1148 <-> 204, 1289, 1499, 1899 +1149 <-> 303, 1797 +1150 <-> 602, 826 +1151 <-> 324 +1152 <-> 664, 1518 +1153 <-> 220, 1990 +1154 <-> 218, 420, 1811 +1155 <-> 1658 +1156 <-> 1581, 1778, 1865 +1157 <-> 638, 1849 +1158 <-> 1445 +1159 <-> 83, 1093, 1680 +1160 <-> 616, 736 +1161 <-> 1161 +1162 <-> 18, 928 +1163 <-> 70 +1164 <-> 1868 +1165 <-> 830, 1769 +1166 <-> 1687 +1167 <-> 531 +1168 <-> 784, 1761 +1169 <-> 554 +1170 <-> 1206, 1327, 1754 +1171 <-> 439, 1307, 1525 +1172 <-> 903, 1172, 1542 +1173 <-> 1173 +1174 <-> 258 +1175 <-> 925, 1869 +1176 <-> 259 +1177 <-> 240, 655, 1738 +1178 <-> 612 +1179 <-> 1537 +1180 <-> 255, 1675 +1181 <-> 220 +1182 <-> 1377, 1877 +1183 <-> 692, 992 +1184 <-> 297, 762, 884, 1718 +1185 <-> 467, 715, 1369 +1186 <-> 51, 1600 +1187 <-> 300 +1188 <-> 541, 854 +1189 <-> 113, 122, 250, 1653 +1190 <-> 841, 932, 1448 +1191 <-> 1225, 1345, 1427 +1192 <-> 293, 1927 +1193 <-> 1193, 1436 +1194 <-> 1119 +1195 <-> 253, 1864 +1196 <-> 1432 +1197 <-> 542, 1368, 1825 +1198 <-> 125, 440 +1199 <-> 1199, 1570, 1740 +1200 <-> 1565 +1201 <-> 731 +1202 <-> 2, 1043, 1139, 1303 +1203 <-> 602, 996, 1250 +1204 <-> 1204 +1205 <-> 230, 1514 +1206 <-> 1170 +1207 <-> 1111 +1208 <-> 538, 551, 1904 +1209 <-> 297 +1210 <-> 557 +1211 <-> 257, 1629 +1212 <-> 1999 +1213 <-> 291 +1214 <-> 1977 +1215 <-> 742, 1311, 1502, 1721 +1216 <-> 344, 466, 489, 1457, 1810 +1217 <-> 980 +1218 <-> 888, 1294 +1219 <-> 138 +1220 <-> 99 +1221 <-> 463, 866 +1222 <-> 170 +1223 <-> 882, 1817 +1224 <-> 40, 1267 +1225 <-> 1191, 1857 +1226 <-> 741, 1309 +1227 <-> 394, 496, 763, 1075, 1673 +1228 <-> 397 +1229 <-> 117, 1237 +1230 <-> 1435, 1551, 1555 +1231 <-> 456, 1885 +1232 <-> 728 +1233 <-> 242, 601 +1234 <-> 1699 +1235 <-> 16, 20, 1335 +1236 <-> 1417 +1237 <-> 1229, 1554 +1238 <-> 1561 +1239 <-> 1731, 1864 +1240 <-> 393, 965, 1624 +1241 <-> 356, 1241 +1242 <-> 342 +1243 <-> 1095, 1540 +1244 <-> 41, 1802 +1245 <-> 175, 613 +1246 <-> 8, 522 +1247 <-> 620 +1248 <-> 46, 1094, 1430 +1249 <-> 28, 447 +1250 <-> 162, 219, 1203 +1251 <-> 762 +1252 <-> 879, 882 +1253 <-> 735, 1867 +1254 <-> 334, 501 +1255 <-> 1396 +1256 <-> 1007, 1366, 1636 +1257 <-> 1257 +1258 <-> 512, 1488 +1259 <-> 271 +1260 <-> 1898, 1978 +1261 <-> 79 +1262 <-> 817 +1263 <-> 1387, 1405, 1580 +1264 <-> 658 +1265 <-> 1147, 1943 +1266 <-> 988 +1267 <-> 524, 1224 +1268 <-> 329 +1269 <-> 1537, 1608 +1270 <-> 1540 +1271 <-> 358, 903, 1023, 1398 +1272 <-> 721, 1410 +1273 <-> 1379 +1274 <-> 9 +1275 <-> 585, 948 +1276 <-> 1920 +1277 <-> 625 +1278 <-> 1483 +1279 <-> 393, 631, 949 +1280 <-> 1572, 1842 +1281 <-> 1281, 1833 +1282 <-> 1060, 1283, 1422 +1283 <-> 491, 1282 +1284 <-> 139 +1285 <-> 1893 +1286 <-> 490, 785, 1598, 1661 +1287 <-> 574 +1288 <-> 474, 1600, 1824 +1289 <-> 704, 865, 1148, 1681 +1290 <-> 1660 +1291 <-> 1291, 1301 +1292 <-> 912, 1416 +1293 <-> 1293, 1605 +1294 <-> 457, 1218 +1295 <-> 767 +1296 <-> 105, 1859 +1297 <-> 299, 488 +1298 <-> 271, 693 +1299 <-> 95, 1445 +1300 <-> 98, 150, 174, 1422 +1301 <-> 1291 +1302 <-> 543, 1119 +1303 <-> 808, 933, 1202, 1883 +1304 <-> 174 +1305 <-> 995 +1306 <-> 305, 842 +1307 <-> 290, 1171 +1308 <-> 238, 1385 +1309 <-> 528, 610, 1226 +1310 <-> 464, 1520 +1311 <-> 1215, 1830 +1312 <-> 1038 +1313 <-> 1835 +1314 <-> 1916 +1315 <-> 942 +1316 <-> 118, 718 +1317 <-> 116, 928 +1318 <-> 480, 857 +1319 <-> 737 +1320 <-> 558, 572 +1321 <-> 983 +1322 <-> 790, 1368 +1323 <-> 1846 +1324 <-> 1920 +1325 <-> 1061, 1409, 1459 +1326 <-> 1486 +1327 <-> 100, 1069, 1170, 1441, 1641 +1328 <-> 222, 1328 +1329 <-> 26 +1330 <-> 330 +1331 <-> 152, 1358, 1380, 1690, 1888 +1332 <-> 1776 +1333 <-> 26, 181 +1334 <-> 1071 +1335 <-> 561, 1235 +1336 <-> 601 +1337 <-> 1689 +1338 <-> 1528, 1689 +1339 <-> 1422, 1588 +1340 <-> 1911, 1964 +1341 <-> 1887 +1342 <-> 40, 438 +1343 <-> 586, 755, 1806, 1956 +1344 <-> 1344, 1354, 1623, 1923 +1345 <-> 729, 942, 1191 +1346 <-> 404 +1347 <-> 9, 1524, 1757, 1945, 1978 +1348 <-> 1828 +1349 <-> 208, 497 +1350 <-> 385 +1351 <-> 1399 +1352 <-> 0 +1353 <-> 1731 +1354 <-> 1344, 1587, 1870 +1355 <-> 1522, 1625 +1356 <-> 804, 1356 +1357 <-> 690 +1358 <-> 472, 594, 1331 +1359 <-> 284, 1934 +1360 <-> 63, 1403 +1361 <-> 274, 395, 1361 +1362 <-> 316 +1363 <-> 802, 1779, 1975 +1364 <-> 1377 +1365 <-> 239, 337 +1366 <-> 989, 1256, 1420 +1367 <-> 999, 1483 +1368 <-> 456, 1197, 1322 +1369 <-> 303, 1185 +1370 <-> 214, 280, 1747, 1764 +1371 <-> 1371 +1372 <-> 346, 1546 +1373 <-> 1112, 1665 +1374 <-> 652 +1375 <-> 596, 1375 +1376 <-> 477, 1730, 1807 +1377 <-> 1182, 1364 +1378 <-> 862, 895, 1378, 1391 +1379 <-> 1273, 1698, 1715 +1380 <-> 1055, 1331, 1847 +1381 <-> 574, 1654 +1382 <-> 248, 318, 497, 623 +1383 <-> 4, 191 +1384 <-> 489, 1066 +1385 <-> 1308 +1386 <-> 50 +1387 <-> 1263 +1388 <-> 1567 +1389 <-> 783 +1390 <-> 324, 840, 1772 +1391 <-> 1378 +1392 <-> 170, 1641 +1393 <-> 368, 885 +1394 <-> 1645, 1655 +1395 <-> 741, 966 +1396 <-> 1255, 1396, 1965 +1397 <-> 20, 198 +1398 <-> 224, 611, 1271, 1549 +1399 <-> 444, 1351, 1660 +1400 <-> 123, 141 +1401 <-> 94 +1402 <-> 658 +1403 <-> 195, 752, 1360 +1404 <-> 27, 502 +1405 <-> 1263 +1406 <-> 1514 +1407 <-> 222 +1408 <-> 256 +1409 <-> 426, 545, 1325, 1980, 1981 +1410 <-> 1272 +1411 <-> 35, 1143, 1444 +1412 <-> 89 +1413 <-> 574 +1414 <-> 967, 1680 +1415 <-> 1593 +1416 <-> 2, 1292 +1417 <-> 1236, 1599 +1418 <-> 921, 1464 +1419 <-> 233 +1420 <-> 1366, 1564 +1421 <-> 916 +1422 <-> 1282, 1300, 1339 +1423 <-> 355, 384, 754 +1424 <-> 1488 +1425 <-> 717, 797 +1426 <-> 1015, 1045 +1427 <-> 1191 +1428 <-> 917 +1429 <-> 626, 1911 +1430 <-> 512, 1113, 1248 +1431 <-> 282, 297, 793, 1663 +1432 <-> 429, 1196 +1433 <-> 449 +1434 <-> 404 +1435 <-> 1230 +1436 <-> 1193, 1827 +1437 <-> 1809 +1438 <-> 193, 630 +1439 <-> 1773 +1440 <-> 951, 1086 +1441 <-> 1327 +1442 <-> 219, 1808 +1443 <-> 133, 650 +1444 <-> 1411, 1527, 1689 +1445 <-> 401, 538, 1158, 1299 +1446 <-> 1831 +1447 <-> 727, 773 +1448 <-> 171, 1190 +1449 <-> 230, 1751 +1450 <-> 384 +1451 <-> 1451 +1452 <-> 1607 +1453 <-> 1453 +1454 <-> 1454 +1455 <-> 412, 1026 +1456 <-> 328, 564 +1457 <-> 658, 1216 +1458 <-> 813, 1031 +1459 <-> 805, 1325 +1460 <-> 189, 953 +1461 <-> 72, 1461, 1573 +1462 <-> 142 +1463 <-> 142, 178, 597 +1464 <-> 1121, 1418, 1905 +1465 <-> 1810 +1466 <-> 1091, 1751 +1467 <-> 1484, 1697 +1468 <-> 244, 256, 1001, 1503 +1469 <-> 179, 229, 855 +1470 <-> 1889 +1471 <-> 284 +1472 <-> 204, 359, 1748 +1473 <-> 431, 641, 675, 715, 1753 +1474 <-> 478, 1029, 1118 +1475 <-> 1475, 1595 +1476 <-> 622 +1477 <-> 271 +1478 <-> 986, 1040 +1479 <-> 1479 +1480 <-> 132, 777 +1481 <-> 1481 +1482 <-> 366 +1483 <-> 1278, 1367 +1484 <-> 303, 731, 1467, 1778 +1485 <-> 868, 930, 971 +1486 <-> 764, 877, 1326 +1487 <-> 269, 885 +1488 <-> 1258, 1424 +1489 <-> 1839 +1490 <-> 365, 650 +1491 <-> 883, 1655 +1492 <-> 630, 1505, 1710, 1866 +1493 <-> 694, 1785 +1494 <-> 373, 808, 1838 +1495 <-> 626, 1019 +1496 <-> 476, 1666 +1497 <-> 1916 +1498 <-> 708 +1499 <-> 587, 1148, 1596 +1500 <-> 1800, 1974 +1501 <-> 960 +1502 <-> 1024, 1215, 1676 +1503 <-> 790, 1468 +1504 <-> 206 +1505 <-> 448, 1492 +1506 <-> 299 +1507 <-> 215, 1579 +1508 <-> 1678 +1509 <-> 558 +1510 <-> 135, 1693 +1511 <-> 40 +1512 <-> 45, 361, 1635 +1513 <-> 5 +1514 <-> 1205, 1406 +1515 <-> 531, 922, 1730 +1516 <-> 259 +1517 <-> 1061 +1518 <-> 109, 371, 1152 +1519 <-> 312, 1835 +1520 <-> 1310 +1521 <-> 460 +1522 <-> 331, 377, 519, 1355, 1852, 1871 +1523 <-> 706, 968, 1607 +1524 <-> 1347 +1525 <-> 1171, 1728 +1526 <-> 1133 +1527 <-> 1444 +1528 <-> 1338 +1529 <-> 84, 695, 1108 +1530 <-> 834 +1531 <-> 419, 944 +1532 <-> 511, 740 +1533 <-> 1052 +1534 <-> 1572 +1535 <-> 701, 1606 +1536 <-> 1536 +1537 <-> 347, 1179, 1269 +1538 <-> 420, 1014 +1539 <-> 1648 +1540 <-> 324, 1243, 1270 +1541 <-> 1952 +1542 <-> 1172 +1543 <-> 659 +1544 <-> 569, 889 +1545 <-> 1545 +1546 <-> 1372 +1547 <-> 722 +1548 <-> 33 +1549 <-> 1398 +1550 <-> 69, 583, 901 +1551 <-> 1230, 1907 +1552 <-> 743, 1841 +1553 <-> 932 +1554 <-> 38, 433, 1049, 1237 +1555 <-> 1230 +1556 <-> 605 +1557 <-> 1728, 1980 +1558 <-> 713 +1559 <-> 1573 +1560 <-> 837, 1803 +1561 <-> 799, 1238, 1712 +1562 <-> 254 +1563 <-> 669, 1610 +1564 <-> 1420, 1832 +1565 <-> 330, 1200 +1566 <-> 1127 +1567 <-> 1010, 1063, 1388 +1568 <-> 719 +1569 <-> 1851 +1570 <-> 1199 +1571 <-> 928, 1752 +1572 <-> 1280, 1534 +1573 <-> 1461, 1559 +1574 <-> 34, 70, 936, 1146 +1575 <-> 207 +1576 <-> 578 +1577 <-> 435, 940 +1578 <-> 1048 +1579 <-> 1507 +1580 <-> 1263, 1610 +1581 <-> 1156 +1582 <-> 208, 1839 +1583 <-> 774, 1118, 1902 +1584 <-> 975 +1585 <-> 882 +1586 <-> 103, 644, 1637 +1587 <-> 376, 1354 +1588 <-> 1339, 1913 +1589 <-> 1791, 1855 +1590 <-> 265, 697 +1591 <-> 1631 +1592 <-> 1066, 1692, 1707 +1593 <-> 891, 1415, 1723 +1594 <-> 1594, 1959 +1595 <-> 1475 +1596 <-> 733, 1499 +1597 <-> 879, 923, 1991 +1598 <-> 708, 1286, 1965 +1599 <-> 789, 1417 +1600 <-> 415, 1186, 1288 +1601 <-> 402, 549, 989 +1602 <-> 533, 1602 +1603 <-> 250 +1604 <-> 1784 +1605 <-> 1293 +1606 <-> 599, 707, 1535 +1607 <-> 594, 1452, 1523 +1608 <-> 79, 184, 238, 858, 1269 +1609 <-> 1638 +1610 <-> 564, 1563, 1580 +1611 <-> 667 +1612 <-> 73, 413, 1612 +1613 <-> 1997 +1614 <-> 243 +1615 <-> 323 +1616 <-> 553, 939 +1617 <-> 658 +1618 <-> 245, 337, 1618 +1619 <-> 208, 1018 +1620 <-> 1106 +1621 <-> 69 +1622 <-> 440, 1876 +1623 <-> 383, 1344 +1624 <-> 674, 959, 1240 +1625 <-> 177, 197, 956, 1355 +1626 <-> 1626, 1790 +1627 <-> 1722 +1628 <-> 1145 +1629 <-> 343, 607, 1211 +1630 <-> 507 +1631 <-> 1591, 1886 +1632 <-> 553 +1633 <-> 38, 89 +1634 <-> 606 +1635 <-> 1096, 1512 +1636 <-> 761, 1256 +1637 <-> 1052, 1586 +1638 <-> 1609, 1638 +1639 <-> 1978 +1640 <-> 500, 1712 +1641 <-> 451, 849, 1327, 1392, 1994 +1642 <-> 1785 +1643 <-> 1960 +1644 <-> 41, 1644 +1645 <-> 1394 +1646 <-> 841, 1646, 1936 +1647 <-> 836 +1648 <-> 179, 1539 +1649 <-> 516, 1717 +1650 <-> 673 +1651 <-> 451 +1652 <-> 704 +1653 <-> 1189 +1654 <-> 1381, 1654, 1928 +1655 <-> 1092, 1394, 1491 +1656 <-> 1755, 1767 +1657 <-> 903 +1658 <-> 1155, 1658 +1659 <-> 1659, 1747 +1660 <-> 527, 1290, 1399 +1661 <-> 1286 +1662 <-> 173, 236, 548 +1663 <-> 962, 1431 +1664 <-> 139, 969, 1664 +1665 <-> 766, 1373 +1666 <-> 1496 +1667 <-> 521, 790, 1919 +1668 <-> 1668 +1669 <-> 160, 830 +1670 <-> 754, 811, 970 +1671 <-> 599, 748 +1672 <-> 919 +1673 <-> 250, 1227 +1674 <-> 1771, 1838 +1675 <-> 160, 769, 1180, 1729 +1676 <-> 1502 +1677 <-> 106 +1678 <-> 318, 1508 +1679 <-> 888 +1680 <-> 1159, 1414 +1681 <-> 483, 1289 +1682 <-> 1905 +1683 <-> 863, 1798, 1891 +1684 <-> 81, 234 +1685 <-> 74, 77 +1686 <-> 590 +1687 <-> 1166, 1709 +1688 <-> 1820 +1689 <-> 1337, 1338, 1444 +1690 <-> 1331 +1691 <-> 660 +1692 <-> 1592 +1693 <-> 72, 1510, 1957 +1694 <-> 674 +1695 <-> 355, 357, 1755 +1696 <-> 184, 1828 +1697 <-> 1467 +1698 <-> 1379 +1699 <-> 699, 1234, 1699, 1784 +1700 <-> 101 +1701 <-> 614, 1728, 1743 +1702 <-> 58 +1703 <-> 182, 985 +1704 <-> 1704 +1705 <-> 1125 +1706 <-> 1706 +1707 <-> 503, 1592 +1708 <-> 792, 1880, 1882 +1709 <-> 686, 1687 +1710 <-> 1492 +1711 <-> 1711 +1712 <-> 1104, 1561, 1640 +1713 <-> 364, 810 +1714 <-> 1714, 1845 +1715 <-> 632, 844, 1379 +1716 <-> 631, 906 +1717 <-> 207, 838, 1649, 1717 +1718 <-> 846, 1002, 1184 +1719 <-> 1719 +1720 <-> 247, 432, 1720, 1914 +1721 <-> 1215 +1722 <-> 799, 1627 +1723 <-> 307, 1593 +1724 <-> 410, 1756, 1887 +1725 <-> 296, 987 +1726 <-> 676, 878, 1837 +1727 <-> 641 +1728 <-> 1525, 1557, 1701, 1875 +1729 <-> 1675 +1730 <-> 483, 1376, 1515, 1916 +1731 <-> 363, 1239, 1353 +1732 <-> 647, 1056 +1733 <-> 320, 527, 1733 +1734 <-> 963 +1735 <-> 779, 1080 +1736 <-> 202 +1737 <-> 202 +1738 <-> 871, 1177 +1739 <-> 1026 +1740 <-> 700, 1082, 1199, 1941 +1741 <-> 231 +1742 <-> 1936 +1743 <-> 1701 +1744 <-> 462, 915 +1745 <-> 1798 +1746 <-> 333, 591 +1747 <-> 1370, 1659 +1748 <-> 1472, 1930 +1749 <-> 797 +1750 <-> 1949 +1751 <-> 1449, 1466 +1752 <-> 156, 1138, 1571 +1753 <-> 476, 1473 +1754 <-> 1170 +1755 <-> 29, 1656, 1695 +1756 <-> 388, 1029, 1724 +1757 <-> 1347 +1758 <-> 315, 648, 823, 1851 +1759 <-> 1759 +1760 <-> 1760, 1889 +1761 <-> 374, 1168 +1762 <-> 1814 +1763 <-> 380, 783, 1863 +1764 <-> 1370, 1949 +1765 <-> 366 +1766 <-> 782, 1103 +1767 <-> 271, 569, 1656 +1768 <-> 362 +1769 <-> 822, 1165 +1770 <-> 385, 605, 1800 +1771 <-> 726, 1674, 1907 +1772 <-> 677, 1390 +1773 <-> 1439, 1773 +1774 <-> 300 +1775 <-> 1014 +1776 <-> 176, 1040, 1332 +1777 <-> 1841 +1778 <-> 1156, 1484 +1779 <-> 429, 579, 1049, 1363 +1780 <-> 391, 627 +1781 <-> 494 +1782 <-> 101 +1783 <-> 15 +1784 <-> 42, 964, 1604, 1699, 1996 +1785 <-> 951, 1493, 1642 +1786 <-> 712, 1786 +1787 <-> 998, 1787 +1788 <-> 526, 839 +1789 <-> 71, 174, 946, 1973 +1790 <-> 1626 +1791 <-> 1589 +1792 <-> 108, 1842 +1793 <-> 250 +1794 <-> 1043 +1795 <-> 949 +1796 <-> 1038 +1797 <-> 1053, 1149 +1798 <-> 1683, 1745, 1830 +1799 <-> 111, 165, 458 +1800 <-> 215, 338, 1500, 1770 +1801 <-> 787 +1802 <-> 1244 +1803 <-> 950, 1560 +1804 <-> 598 +1805 <-> 238 +1806 <-> 1343 +1807 <-> 1376 +1808 <-> 612, 1442 +1809 <-> 176, 505, 931, 1437 +1810 <-> 1062, 1216, 1465 +1811 <-> 1080, 1154 +1812 <-> 1832, 1858 +1813 <-> 1813 +1814 <-> 690, 1054, 1762 +1815 <-> 264, 268 +1816 <-> 1816 +1817 <-> 1223 +1818 <-> 847, 1142 +1819 <-> 509 +1820 <-> 229, 1688 +1821 <-> 1976 +1822 <-> 8 +1823 <-> 1027 +1824 <-> 1288 +1825 <-> 1197 +1826 <-> 1894, 1977 +1827 <-> 1436 +1828 <-> 1348, 1696 +1829 <-> 897 +1830 <-> 1311, 1798 +1831 <-> 1039, 1446 +1832 <-> 115, 1564, 1812 +1833 <-> 844, 1281 +1834 <-> 70 +1835 <-> 246, 709, 976, 1313, 1519 +1836 <-> 444 +1837 <-> 1726 +1838 <-> 1494, 1674 +1839 <-> 275, 623, 1489, 1582 +1840 <-> 1011 +1841 <-> 460, 1552, 1777 +1842 <-> 536, 794, 1280, 1792 +1843 <-> 631 +1844 <-> 334, 826 +1845 <-> 1714 +1846 <-> 498, 1101, 1323, 1846 +1847 <-> 1380 +1848 <-> 1123 +1849 <-> 1157 +1850 <-> 1850 +1851 <-> 1144, 1569, 1758 +1852 <-> 571, 1522 +1853 <-> 289 +1854 <-> 1089 +1855 <-> 107, 1038, 1080, 1589 +1856 <-> 1947 +1857 <-> 895, 1225 +1858 <-> 326, 1812 +1859 <-> 248, 450, 1296 +1860 <-> 1860 +1861 <-> 746, 1861 +1862 <-> 1882 +1863 <-> 217, 1763 +1864 <-> 0, 1195, 1239 +1865 <-> 1156, 1925 +1866 <-> 1492 +1867 <-> 890, 1253, 1867 +1868 <-> 1164, 1893 +1869 <-> 1079, 1175 +1870 <-> 88, 1354 +1871 <-> 1135, 1522, 1940 +1872 <-> 1872 +1873 <-> 1069 +1874 <-> 215 +1875 <-> 729, 930, 1728 +1876 <-> 1622, 1903 +1877 <-> 73, 1182 +1878 <-> 1970 +1879 <-> 1136, 1912, 1958, 1989 +1880 <-> 864, 1708 +1881 <-> 475, 1042 +1882 <-> 249, 1708, 1862 +1883 <-> 1303 +1884 <-> 31 +1885 <-> 680, 1231 +1886 <-> 40, 1631 +1887 <-> 462, 1341, 1724 +1888 <-> 1331 +1889 <-> 1470, 1760 +1890 <-> 161, 203 +1891 <-> 424, 1683 +1892 <-> 1892 +1893 <-> 254, 1285, 1868 +1894 <-> 13, 172, 1826 +1895 <-> 114, 382, 1081 +1896 <-> 525, 1090 +1897 <-> 606, 803, 980 +1898 <-> 322, 1260 +1899 <-> 348, 550, 749, 1148 +1900 <-> 408, 1900 +1901 <-> 80, 859 +1902 <-> 673, 1583 +1903 <-> 1028, 1876 +1904 <-> 1208 +1905 <-> 1464, 1682 +1906 <-> 1027, 1077 +1907 <-> 1551, 1771 +1908 <-> 408 +1909 <-> 1909 +1910 <-> 359, 812 +1911 <-> 20, 587, 1340, 1429 +1912 <-> 529, 1879 +1913 <-> 1001, 1134, 1588 +1914 <-> 1720 +1915 <-> 502 +1916 <-> 848, 1086, 1314, 1497, 1730 +1917 <-> 1951 +1918 <-> 401 +1919 <-> 273, 1667 +1920 <-> 925, 1276, 1324 +1921 <-> 58, 921 +1922 <-> 48 +1923 <-> 1344 +1924 <-> 1993 +1925 <-> 1865 +1926 <-> 330 +1927 <-> 670, 1192 +1928 <-> 1654 +1929 <-> 907 +1930 <-> 600, 1748 +1931 <-> 1931 +1932 <-> 958, 991 +1933 <-> 983 +1934 <-> 402, 1359 +1935 <-> 294, 682, 784 +1936 <-> 1646, 1742 +1937 <-> 1937, 1971 +1938 <-> 126, 1938 +1939 <-> 1998 +1940 <-> 257, 1871 +1941 <-> 1740 +1942 <-> 780, 937 +1943 <-> 110, 1265 +1944 <-> 820, 837 +1945 <-> 264, 1347 +1946 <-> 378 +1947 <-> 170, 537, 573, 829, 1856 +1948 <-> 1074, 1089 +1949 <-> 1750, 1764 +1950 <-> 478, 689 +1951 <-> 131, 254, 1917 +1952 <-> 208, 1541 +1953 <-> 803 +1954 <-> 547, 904, 955, 1954 +1955 <-> 528 +1956 <-> 1343 +1957 <-> 99, 191, 1693 +1958 <-> 1879 +1959 <-> 1594 +1960 <-> 1016, 1643 +1961 <-> 1094 +1962 <-> 37, 219, 912 +1963 <-> 262 +1964 <-> 989, 1340 +1965 <-> 1056, 1396, 1598 +1966 <-> 1078 +1967 <-> 77 +1968 <-> 365 +1969 <-> 614 +1970 <-> 1878, 1970 +1971 <-> 1937 +1972 <-> 728, 732 +1973 <-> 1789 +1974 <-> 14, 1500 +1975 <-> 1363 +1976 <-> 1821, 1976 +1977 <-> 720, 1035, 1214, 1826 +1978 <-> 1260, 1347, 1639 +1979 <-> 577, 661 +1980 <-> 1409, 1557 +1981 <-> 1409 +1982 <-> 272, 724 +1983 <-> 636 +1984 <-> 148, 771, 1034 +1985 <-> 155 +1986 <-> 216 +1987 <-> 1987 +1988 <-> 553, 584 +1989 <-> 313, 1879 +1990 <-> 990, 1153 +1991 <-> 1597 +1992 <-> 364 +1993 <-> 90, 765, 1924 +1994 <-> 645, 1641 +1995 <-> 558 +1996 <-> 643, 1784 +1997 <-> 362, 1613 +1998 <-> 1939, 1998 +1999 <-> 90, 1212 diff --git a/src/main/resources/2017/day13.txt b/src/main/resources/2017/day13.txt new file mode 100644 index 00000000..a445f9fd --- /dev/null +++ b/src/main/resources/2017/day13.txt @@ -0,0 +1,43 @@ +0: 5 +1: 2 +2: 3 +4: 4 +6: 8 +8: 4 +10: 6 +12: 6 +14: 8 +16: 6 +18: 6 +20: 12 +22: 14 +24: 8 +26: 8 +28: 9 +30: 8 +32: 8 +34: 12 +36: 10 +38: 12 +40: 12 +44: 14 +46: 12 +48: 10 +50: 12 +52: 12 +54: 12 +56: 14 +58: 12 +60: 14 +62: 14 +64: 14 +66: 14 +68: 17 +70: 12 +72: 14 +76: 14 +78: 14 +80: 14 +82: 18 +84: 14 +88: 20 diff --git a/src/main/resources/2017/day14.txt b/src/main/resources/2017/day14.txt new file mode 100644 index 00000000..191abddf --- /dev/null +++ b/src/main/resources/2017/day14.txt @@ -0,0 +1 @@ +hxtvlmkl diff --git a/src/main/resources/2017/day15.txt b/src/main/resources/2017/day15.txt new file mode 100644 index 00000000..ffb6d14e --- /dev/null +++ b/src/main/resources/2017/day15.txt @@ -0,0 +1,2 @@ +Generator A starts with 591 +Generator B starts with 393 diff --git a/src/main/resources/2017/day16.txt b/src/main/resources/2017/day16.txt new file mode 100644 index 00000000..dcbcc4a6 --- /dev/null +++ b/src/main/resources/2017/day16.txt @@ -0,0 +1 @@ +x12/14,s11,x10/4,s7,pb/o,x12/7,s5,x3/10,s10,x6/4,pk/a,x14/8,s2,x10/5,s6,x9/6,s10,pm/b,x3/7,s1,x5/12,po/k,x1/13,pc/g,x9/11,pd/l,x12/7,s5,x11/3,s15,x2/5,pe/j,x10/15,s13,x8/7,pa/k,s5,x2/4,pl/d,x11/15,s1,x12/8,s4,x13/10,pk/j,x14/8,s8,x2/1,s4,x13/7,s7,x10/6,s9,x9/15,pf/p,x5/0,pg/a,s1,x10/11,pm/h,x5/7,s4,x8/13,s14,x11/7,s13,x4/9,s15,x7/2,s5,x10/11,s10,x2/5,s8,x3/14,s6,x13/12,s7,x7/8,s2,x14/4,pc/e,s13,x7/15,s14,x5/10,s15,x13/2,s8,pk/o,x6/10,s15,x13/12,pi/m,x0/1,s9,x13/8,pg/a,x5/0,s11,x13/4,pl/m,x15/8,pc/e,s3,x1/13,s3,x8/14,pp/k,x7/3,s11,x5/13,pb/h,x9/15,s5,pp/i,x11/12,pl/j,s12,ph/n,x4/1,pe/a,x9/10,pp/f,x4/5,pg/j,x10/3,s5,x7/0,s1,x4/8,s9,x1/3,pe/c,x9/10,pj/o,x14/12,s5,x3/6,s15,x0/4,s14,x10/6,s9,x15/2,s12,x8/0,pm/p,s7,x5/6,pa/c,x11/10,s2,x15/6,pg/l,x13/14,pd/j,x7/15,s12,x9/1,pi/m,x8/7,s5,x2/1,pj/o,x4/11,pb/i,s1,x8/3,s4,x11/5,pp/o,x15/13,pm/h,x6/14,s3,x5/11,s2,x14/6,pk/f,s13,x13/10,po/a,x9/15,s6,x0/5,s9,x2/10,pp/e,x0/14,pi/b,x13/7,s5,x14/0,s3,x5/3,s12,x7/14,pf/g,x8/5,pc/o,x11/6,s14,x3/13,pp/j,x12/7,s1,x9/11,pf/l,x4/12,s13,x2/6,s5,x1/8,pj/o,x10/2,s11,x7/11,pc/m,x13/10,s9,x0/9,pe/l,x8/12,s3,x11/9,s2,x0/12,pn/a,x7/6,pi/j,s7,x2/12,pl/e,x14/7,s3,x9/5,s11,x4/1,pc/k,x15/8,s14,x6/1,pf/h,x3/4,s12,x14/2,pl/c,x0/10,pj/p,x15/8,s1,x2/14,s10,x13/9,s3,x12/1,pe/g,x8/7,pd/n,x2/3,pc/i,x9/13,po/m,x12/15,ph/c,x0/1,pl/e,x7/11,po/j,x6/14,s5,x10/7,s12,x9/4,pm/e,x2/0,s4,x8/9,pa/l,s9,x3/6,s12,x14/11,s12,x13/9,s13,x14/3,s1,pc/o,x7/1,s1,x2/11,s14,x12/5,s11,x3/9,pp/a,x7/14,pi/l,x2/4,pb/d,x15/3,pc/e,x2/9,s5,x13/12,s4,x6/1,s7,x2/15,pj/k,x8/6,s15,x5/0,s4,x7/11,s12,x8/1,pf/d,x6/2,pl/b,x10/9,s10,x3/7,pd/f,x14/8,pa/b,x1/11,pj/h,x2/6,s14,x7/0,pn/a,x4/8,s2,ph/l,x11/0,pg/i,x9/15,pb/n,x12/7,s10,x9/6,pd/f,x15/2,s14,x14/10,s9,x13/0,po/l,x6/11,s14,x2/5,s11,x12/0,pj/b,s8,x4/6,s7,x1/7,s1,x11/8,s11,x1/15,pk/i,x9/5,pc/l,s7,x0/11,pp/a,s1,x8/9,pl/n,x0/11,s2,x10/13,s11,x0/6,pg/f,x1/7,pp/a,x8/3,s15,x0/11,s8,x15/3,s2,x0/8,pl/g,x12/9,s8,x8/5,s1,x2/9,s1,x6/8,s5,x12/11,pp/e,s6,x1/5,s8,x2/10,po/k,x3/11,s13,x4/6,pe/l,x14/5,s12,x8/10,s11,x5/4,pf/b,x10/14,po/j,s7,x9/7,s2,x15/6,s14,x14/1,pk/n,x13/9,pm/f,x4/14,s7,x13/9,pp/n,x11/14,pl/o,x4/2,s3,x11/13,s5,x8/6,s5,x9/4,s2,x1/7,pb/d,x2/4,pe/h,x0/3,po/g,x13/11,pl/c,s6,x3/15,pj/o,s15,x9/2,s5,x6/0,s1,x14/4,s6,x7/15,s7,x3/1,s6,x14/12,s3,x9/11,s8,x15/8,pd/f,x0/10,pm/j,x3/1,pf/a,x0/7,po/n,x15/11,pm/j,x7/13,s13,x1/3,s9,x2/7,s10,x1/13,s14,x11/14,s5,x6/2,po/d,x14/11,s1,x5/3,s2,x8/11,pk/b,s3,x14/12,pe/g,x10/15,s2,x14/6,s7,x3/15,s12,x4/7,s13,x1/2,s6,x11/14,s14,x7/9,s7,x1/13,pj/n,x7/4,s7,x10/0,s2,x15/11,pp/k,x9/6,pm/n,x11/5,pp/i,x13/1,s3,x15/11,pd/n,x2/0,pc/b,x11/5,pj/n,x3/14,pk/c,x0/1,pn/i,x2/7,ph/l,x12/8,pk/i,x11/15,s8,x4/13,s10,x11/3,s12,x2/6,pl/c,s9,pp/n,x14/7,s8,x11/9,pj/i,x7/12,s9,x8/9,pe/h,s7,x13/5,pm/p,x10/9,s13,x8/0,s4,x10/12,s7,x11/6,s4,pl/c,x14/4,pd/n,s7,x6/1,s7,x13/9,pp/f,x8/2,s2,x4/6,s11,x15/9,pg/e,x7/2,pn/f,x10/8,s10,ph/j,x14/7,s9,pk/i,x13/0,pb/g,x2/6,s9,x12/5,pc/a,x6/2,s4,pe/k,x5/12,s4,x0/10,pp/a,x15/4,s15,x11/14,pf/e,x8/6,s2,x1/3,pn/o,s10,x8/9,s12,x11/14,pk/a,x13/7,ph/b,x9/11,s5,x15/4,s4,x8/1,pg/p,x12/15,pn/c,x3/13,s15,x2/8,po/f,x15/9,s3,x3/12,s10,x13/6,pg/b,x1/3,s5,x5/10,s14,x12/7,s6,x1/4,s1,x10/8,s1,x2/15,s13,x7/14,pj/f,x3/13,s3,x2/14,pp/a,x9/4,pd/h,x15/5,s13,x3/6,pj/m,x10/14,s1,x4/6,s8,x5/11,po/h,x9/12,pc/n,x5/10,s10,pi/g,x7/8,pa/f,x9/13,s5,pp/k,x2/5,pc/d,x14/10,pg/k,x4/3,s15,x15/9,pf/n,x14/7,pi/b,x15/5,pm/f,x4/7,s14,x8/6,s3,pc/a,x11/2,s11,x12/5,pi/e,x6/11,s13,x9/12,pc/l,x0/10,s8,x2/5,s2,x15/11,pe/n,x14/2,pp/o,s12,x6/11,s4,x10/0,s6,x14/3,s5,pb/d,x9/8,ph/m,s10,x14/1,pl/f,x5/10,pc/p,x15/6,pk/b,x3/2,ph/e,x6/0,pm/l,x3/15,s8,x0/4,pd/c,x12/3,s5,x1/5,pa/f,x13/6,s10,x4/3,po/c,x7/13,s7,x14/2,s15,x3/6,pi/g,x1/2,s11,x6/15,s12,x9/1,s2,x2/12,s4,x7/6,s13,x13/9,s1,x6/10,pn/k,x3/1,pf/b,s12,x14/7,s10,x2/5,pp/l,x13/12,po/g,x9/5,pl/c,s15,x4/1,s9,x15/14,s13,x4/3,s6,pj/b,x10/9,s8,x8/5,s15,x15/13,s12,x2/4,pd/p,x9/11,s3,x13/7,s9,x11/10,s5,x2/6,s14,x8/12,ph/b,s4,x9/10,s4,x12/13,pe/a,x3/10,pb/m,x12/6,pk/o,x5/4,pb/h,x12/7,s9,x11/10,s5,x13/14,pe/i,x0/6,ph/k,x4/8,pj/c,s5,x7/11,pe/m,x14/15,s15,x2/1,ph/d,s13,x10/13,s3,x14/2,s3,x9/10,pj/o,x2/5,s6,x0/10,s8,x2/9,s9,x6/12,pl/m,x7/0,pf/c,x2/13,pl/g,x7/3,pf/e,x13/11,s4,x12/14,pn/j,x0/13,pm/a,s13,x9/2,pd/c,x7/3,s1,x6/4,s7,x3/9,s5,x13/7,ph/j,x15/14,pc/b,x8/10,s12,x7/11,s12,x14/9,s15,x15/6,po/p,x12/0,s15,x7/15,s9,x6/5,pf/i,x15/1,pc/e,x11/2,pf/i,s3,x5/0,pc/k,x6/14,pi/m,x11/4,po/a,x10/3,s15,x6/7,pg/c,x4/13,pe/i,x5/11,s12,x1/15,s13,x11/6,pk/l,x3/14,pm/e,x2/5,s13,x10/9,s3,x4/0,pa/h,x13/3,s5,x0/4,s7,x5/3,s5,x11/12,s6,x2/13,pc/n,x7/5,pg/p,x3/6,pc/j,x12/15,pa/d,x11/5,s9,x9/7,ph/j,x10/14,s7,x15/13,s15,x10/2,pc/e,x14/4,s1,x13/1,s9,x3/10,pk/n,x1/8,s15,x14/10,s2,x3/13,pl/c,x11/15,s13,x1/7,pa/m,x6/2,pf/o,x10/0,s10,x7/6,pk/c,x0/11,s12,x5/13,s12,x1/2,pf/p,x9/14,s12,x13/2,s12,x14/3,pb/a,x0/11,ph/g,x12/4,pj/k,x3/7,s6,x4/0,pn/h,s7,x6/10,pg/p,x12/9,ph/e,x13/4,pj/c,x14/15,pp/e,s9,x1/12,pf/l,x15/11,s8,x7/6,pp/c,x10/12,pd/o,x4/0,pf/b,s1,x13/2,pg/l,x15/6,pf/h,x3/8,pb/d,x11/15,s11,x3/12,s13,x9/11,pc/m,x3/4,ph/i,s12,x5/14,s8,x15/11,s3,x14/9,s15,x3/15,s9,x11/12,s13,x15/3,s12,x0/8,s12,x15/10,s9,x4/6,s14,x7/2,s4,x8/13,s11,x11/15,s14,x4/10,pk/n,s14,x2/6,s8,pl/p,s11,pc/i,x12/7,s1,x11/9,s5,x10/1,pj/f,x0/3,pd/m,s4,x7/13,pa/g,x12/5,s9,pe/n,x15/0,pg/d,x2/12,pf/p,x5/15,s7,x8/11,pj/k,x2/6,s5,x8/10,pa/l,x6/12,s14,x9/1,pp/g,x0/4,s4,x10/14,po/i,s2,x11/5,pd/h,x4/14,pg/a,x9/5,s14,x14/10,s9,x0/15,s11,x13/9,s7,x0/11,pf/l,x4/12,s3,x5/0,ph/a,x15/7,s11,x0/5,s11,x14/15,s10,x12/11,s10,x14/10,s15,x5/4,s5,x8/10,s14,x9/0,s4,x11/1,s2,x9/14,pe/c,x6/13,ph/a,x7/9,pi/l,x8/2,s9,x15/3,pn/h,x9/13,s9,x0/4,s6,x11/2,s7,x15/14,pm/l,s2,x0/7,pb/e,x15/4,pc/k,s1,x11/5,pg/e,x7/14,ph/f,x6/11,pd/a,x13/4,s11,x14/2,pn/l,x0/8,pe/g,x5/1,s5,x9/8,pd/j,x15/10,s10,x1/4,po/c,x6/2,pj/p,x5/7,s8,x9/10,pd/h,x5/11,s4,x13/7,pj/m,x6/1,pp/h,s3,x8/12,s14,pl/g,x10/14,pd/c,x0/8,pp/g,x10/7,s4,x1/3,s2,x6/0,pd/a,s1,x3/7,s12,x9/14,s15,x2/10,pp/k,s7,x11/1,s10,x10/15,pj/c,x11/14,pb/g,s8,x0/8,pj/f,x7/11,pp/d,s13,x3/10,s13,x1/15,pb/k,x3/6,pg/e,x7/12,s6,x6/13,s11,x9/8,pj/p,x3/10,s6,x13/11,s11,x14/7,s12,x3/13,s9,x7/11,s2,pd/a,x4/0,s5,x2/14,po/n,x15/10,s14,x9/4,pb/p,x12/5,s10,x13/4,s15,x14/8,s7,x1/9,s3,x15/5,pf/j,x7/14,s11,x5/1,s6,x8/15,po/c,x6/5,s8,x1/12,s7,x2/9,s9,x4/8,pa/f,s4,pe/b,x5/1,s9,x15/7,s11,x5/2,pm/i,s3,x9/7,s10,x2/10,pg/h,x11/5,pf/i,x14/1,pd/k,s4,x8/11,s10,x7/12,s6,x4/2,pp/j,x6/8,pd/l,x4/13,s4,x1/12,pf/o,x6/0,s4,x4/14,pm/l,x2/10,s11,x4/11,pa/i,x7/2,pd/f,x1/10,po/a,x12/0,s2,x9/13,pb/n,x5/10,s4,x6/3,s9,pa/c,x15/7,pl/k,s9,x12/1,s5,po/a,x5/7,ph/f,x6/14,s1,x11/13,s1,x0/3,s9,x2/9,pc/e,s14,x15/11,s2,x5/10,pp/i,s7,x7/13,pe/h,x4/6,pc/l,s2,x1/0,pn/b,s12,x10/12,po/a,s7,x13/5,s5,x12/6,pp/f,x2/8,s12,x4/9,s2,x11/8,s5,x13/2,pd/c,x14/4,pa/e,x8/1,s12,po/p,s13,x7/6,pb/l,x0/2,pf/o,x4/3,s4,x8/0,ph/e,s15,x5/2,po/c,x7/1,s7,x2/9,pl/h,x11/5,s8,x6/4,s6,x15/0,s5,x11/13,s2,x14/0,pm/g,x13/2,pa/p,x11/0,s6,x5/9,s14,x3/1,s8,x8/14,s1,x10/13,pl/i,x12/6,s12,x11/13,pd/k,s1,x15/8,s2,x13/5,s7,pm/i,x1/14,s7,x3/9,pe/b,x0/5,pg/n,x4/6,s13,x7/12,pj/l,x3/13,s1,x11/2,s2,x15/7,s12,x4/11,s6,x3/7,pn/c,x0/1,pa/e,x10/13,s10,x15/11,pd/k,x4/13,s11,x0/15,s4,x3/12,s7,x15/1,s12,x8/7,s12,x13/14,s2,x5/3,pl/i,s9,x14/6,pg/j,x0/1,s2,x5/14,s15,x15/9,s15,x0/2,s1,x11/8,s4,x5/3,pc/b,x12/1,s5,x2/5,s6,pj/m,x3/7,pp/c,x13/4,s9,x5/3,s14,x4/7,s14,x0/12,s1,pm/l,x4/3,s4,x12/15,s2,x6/5,s12,x10/14,s11,x1/7,pb/o,x6/4,pa/d,x8/14,s14,x11/3,s13,x13/5,pk/j,x8/15,pp/h,x9/1,s5,x12/0,s6,x3/11,po/c,x2/10,s2,x3/13,pf/d,x11/4,s14,x8/15,pl/h,x4/10,s9,x13/9,s10,x1/11,pk/m,x15/12,pj/l,x1/10,pa/o,x4/13,s3,x11/6,s14,x8/7,pf/m,x14/1,pk/d,x10/8,pj/h,x13/7,pf/b,x8/6,pp/e,x11/3,s5,x2/12,s14,x4/8,s13,x11/7,s5,x0/2,pl/b,s8,x14/4,s2,x8/12,s2,x1/13,pp/g,x14/10,pk/n,x13/0,s3,x8/5,pc/e,x7/15,s15,pb/a,s5,x10/3,po/j,x1/11,s15,x13/2,s15,x12/7,pg/m,x15/0,s6,po/p,x8/2,s13,x3/6,s2,x11/4,pi/l,x15/2,s10,pf/p,s3,x7/4,s8,x6/0,pk/e,x15/4,pl/i,x2/3,s6,x11/1,s9,x12/5,s7,x4/10,pd/p,x2/13,pj/n,x1/3,s2,x6/14,pk/l,s13,x9/5,s2,x6/3,s12,x10/15,s11,x5/2,pf/g,x7/1,s11,x13/8,pp/o,x3/6,s3,x14/2,s4,x7/9,s5,x0/5,s1,x6/12,pa/l,x4/3,pf/b,s13,x9/15,pp/n,x8/6,s14,x15/3,pb/c,x2/7,pi/k,x15/4,pf/o,s11,x7/2,ph/g,s6,x14/15,pd/m,x8/4,s15,x0/1,pb/i,x13/4,pl/n,x5/9,s10,x2/1,s10,x15/13,s8,x9/14,pm/a,x15/0,s5,x4/9,s2,x14/11,ph/c,x5/10,s12,x4/0,pa/k,x15/7,s15,x3/0,s6,x9/13,pg/e,x7/12,s2,x3/13,pc/m,x4/2,s11,pg/d,x8/11,s4,x5/13,s15,x1/7,s5,x3/15,s9,x1/10,s12,pk/j,x6/5,pi/e,x13/12,s7,x14/4,pf/n,x7/0,pi/p,x4/11,pe/j,x2/0,s9,x5/14,pg/o,x4/15,pk/m,x9/12,pn/e,x14/5,s2,x11/2,s6,x1/5,s1,x4/2,s1,x11/8,s3,x10/7,s1,x13/6,s13,x3/12,ph/o,x6/7,s11,x5/2,pj/l,x9/3,ph/f,s5,x7/0,s14,x11/9,pk/l,x4/2,s14,x10/0,s3,x11/13,s13,x7/1,ph/p,x3/8,s1,x14/7,s8,x12/2,s10,pe/d,x8/13,s5,x5/12,pc/p,x1/0,s12,x12/14,s13,x9/11,s10,x8/13,s7,x3/2,s10,pk/h,x7/9,s14,po/f,x0/5,pi/m,s6,x6/7,pd/h,x9/2,s10,x11/6,pf/b,x10/14,s3,x9/8,pd/j,s15,x12/6,s1,x13/8,s15,x12/15,s2,x4/9,pa/l,x14/1,s1,x4/7,s5,x11/5,s1,x2/6,s7,x4/0,ph/n,x6/15,s15,x10/14,s2,x1/6,pf/j,x12/5,s12,pc/a,x4/10,pb/m,x2/7,s11,x14/6,pg/i,x11/0,pm/h,x7/6,s10,pe/b,s9,pd/f,x15/3,pk/n,x14/8,s5,x6/15,pd/c,x10/9,pp/i,x0/2,pg/j,x4/8,s7,x1/10,pf/h,x15/9,s8,x12/13,pg/a,x10/3,s5,x9/2,s11,pm/l,x8/1,pk/n,x5/10,pp/i,x2/15,ph/g,x6/4,pf/m,s1,x8/2,po/d,x7/10,pi/k,x1/14,s5,x15/4,s11,x1/11,pg/f,x5/6,s3,x7/1,po/l,x10/6,s13,x9/2,s4,x5/14,pd/j,x15/6,pp/i,x12/0,s15,x9/11,ph/a,x7/0,s6,x15/5,pd/p,x12/13,s1,x2/1,s10,x4/3,pa/k,x9/13,s11,x11/14,s3,x5/12,pm/i,s13,x13/7,s2,x2/3,pd/e,x5/14,s10,x4/13,s5,x6/5,s2,pp/b,x2/3,s8,x9/15,pn/c,x10/12,pf/p,s3,x1/8,pg/i,x5/0,s12,x10/3,s11,x4/11,s11,x5/12,s8,x7/15,s13,x5/12,s6,x15/14,s3,x4/3,pf/h,x0/12,s6,x13/8,s8,x6/0,pk/i,x8/10,s14,x7/11,s11,x3/6,s5,x10/15,pf/b,x7/3,s13,x14/8,s1,x12/6,pd/i,x3/11,pk/h,x0/7,s3,pc/l,x5/13,s10,x11/15,s12,x5/10,pg/k,x12/9,pe/d,x1/0,s11,x8/3,pb/n,x14/0,pc/h,x4/2,po/p,x1/8,s11,x5/0,s10,x7/2,s11,x12/3,s9,x5/14,pk/i,s6,x8/4,s7,x0/7,s10,x9/14,pg/h,x6/3,s1,x12/5,s4,x3/2,s13,x0/5,s14,x4/2,pd/a,x10/13,s6,x4/2,pb/l,x11/1,pd/g,x5/4,s8,x9/14,s3,x6/15,s8,x10/5,pj/k,s11,x14/0,s4,x9/3,s7,x4/15,s5,x10/11,pm/o,x4/7,pk/h,x14/3,pi/g,x7/4,pk/b,s15,x8/12,s3,x7/13,pd/p,x0/11,s11,x9/15,s1,x1/2,pe/k,x10/15,s10,x2/3,s2,x1/5,s12,x14/4,s3,x11/12,pd/l,x8/14,s1,x11/15,pn/k,x2/14,s12,ph/p,s10,x15/3,s6,x1/10,s11,x15/11,s15,x10/0,po/i,s3,x15/2,pd/j,x11/12,s11,x10/8,ph/k,x14/15,pe/l,x13/11,pa/f,x15/12,s8,x5/6,pc/g,x2/15,pp/o,x3/12,pm/d,x2/11,s9,x15/5,pl/h,s5,x1/2,s13,x7/9,s14,x5/12,s3,pa/k,x1/2,s5,x11/12,s7,x8/9,s13,x12/1,s4,x2/7,s13,x5/9,s11,ph/o,x3/14,s15,x10/7,s5,x11/4,s6,x0/6,s10,x15/14,pc/m,x11/3,s6,x4/1,pf/d,s4,x9/10,s13,x4/6,s7,x15/7,pj/b,x4/11,pf/a,x7/2,pi/m,x12/14,pk/d,x2/5,s15,x8/13,pm/o,x14/9,s11,pn/k,x2/4,s6,x14/9,pd/f,x1/10,pi/m,x13/15,s5,x5/8,pa/g,x11/2,s13,x5/14,s5,x3/12,s2,x9/10,s13,x3/7,s8,x9/1,s3,pc/p,x13/8,s10,x12/9,po/e,x11/4,pc/i,x3/1,s14,x0/6,pe/d,x15/11,pa/k,x2/7,s8,x0/6,s11,x10/8,pj/c,x4/15,ph/b,x13/10,s2,x6/2,pf/p,x9/10,pe/o,x3/15,pf/l,s15,x14/11,s14,x3/12,s4,x10/6,s10,x14/4,s1,x5/6,s6,pp/b,x2/3,pj/d,s14,x10/12,pi/a,x8/5,s4,x10/12,s8,x0/11,s2,x8/7,s6,x15/9,s10,x6/5,pn/m,x12/0,pj/i,x8/10,pk/b,x9/5,ph/a,x8/4,s5,x7/1,s2,x6/13,s14,x10/0,s7,x13/14,s3,x6/0,pi/m,s8,x9/14,s1,x13/0,pc/p,x9/14,s5,x2/4,s1,x8/6,s12,x10/5,s6,x1/6,s7,x9/14,s12,x1/7,ph/k,x6/8,pp/l,x15/0,s4,x5/3,pi/j,x6/2,s4,x11/10,pp/g,x8/6,s14,x13/9,pe/f,s7,x6/14,pp/b,x15/7,s8,x4/8,s4,x15/11,pl/o,x1/5,s1,x8/11,s3,x1/5,pm/a,s5,x15/14,s9,x12/7,s8,po/i,s5,x14/8,s10,x10/11,pb/d,x6/13,s2,x3/12,s9,x4/9,s13,x12/13,s5,x7/10,pn/a,x12/1,pi/j,x0/15,s1,x8/11,pl/a,x9/7,s14,x13/11,s14,x4/5,s11,x14/11,pn/g,s5,x8/6,pl/d,x11/4,pg/c,x15/8,pi/n,x2/4,s10,x1/3,s13,pa/k,x4/13,pm/c,x10/6,pe/j,x9/12,s8,x5/2,pn/o,s13,x7/13,s10,pa/p,x5/10,pg/e,x9/2,pn/p,x11/5,s10,x0/4,pb/a,x1/5,pl/i,x11/14,s5,x6/8,s4,x14/2,pb/o,x7/9,s9,x12/5,s15,pe/c,s7,x0/6,s3,x5/4,s14,pj/m,x13/12,pi/p,x10/7,s7,x9/15,s5,x1/4,s6,x12/7,pf/l,x0/10,s15,x9/6,s14,x7/10,pk/h,x13/12,s15,x6/9,s9,x7/8,s10,x3/9,s13,x13/7,s1,x14/1,pl/p,x10/15,pj/o,x12/6,pm/e,x1/15,pl/n,x7/9,s9,x12/14,pj/f,x3/9,s6,pc/a,x10/7,pi/h,s13,x11/4,s10,x3/7,pb/k,x9/15,s1,x1/14,s9,x11/5,s2,x9/15,pa/g,x14/8,s9,x6/1,pe/k,x5/4,pm/h,s12,x8/1,pc/e,x3/5,pk/i,s15,x2/6,pm/l,x10/7,pe/o,x1/14,s15,x8/11,s2,x14/1,pj/b,x10/2,pa/o,x14/5,s14,x11/6,s3,x1/12,s1,x9/6,s7,x0/5,pe/c,x10/11,pg/p,x1/9,s11,x7/10,s13,x15/5,s15,x13/8,ph/a,s15,x7/5,pc/o,x9/4,s12,x1/3,s8,x15/9,s2,x8/6,pk/j,x2/7,pm/b,s2,x15/9,pp/j,x8/11,s2,x7/13,pb/f,x5/9,pj/a,x15/8,s11,x14/6,pg/p,x9/15,s10,x13/10,pb/d,x9/0,pa/k,x15/13,s14,x6/8,s9,x1/2,s10,x14/4,s9,x8/13,s15,x4/15,s3,x1/14,pg/p,x8/3,s7,x1/0,s2,x9/6,s11,x3/2,s5,x0/4,pd/b,s10,pe/h,x3/14,s2,x15/9,po/c,x0/10,s11,x9/2,s1,pg/d,x6/1,s5,x5/10,ph/f,x15/3,s7,x10/2,s11,x3/15,pd/o,x14/1,pi/j,x6/11,s13,x14/1,s7,pg/p,s9,x8/13,s1,x12/7,s2,x14/9,pf/k,x2/7,s3,x6/1,pe/m,x12/4,s10,x5/0,s7,x14/4,pk/l,x1/8,s7,x12/13,pn/p,x0/15,s10,x5/7,s2,x11/14,pk/f,x13/6,po/a,x1/11,s3,x13/5,s9,x3/7,s10,x6/12,s1,x3/14,s2,x1/7,s4,x3/12,pl/b,x4/8,s11,x12/15,s5,x8/4,s14,x10/1,pi/d,x6/13,pb/g,s11,x10/8,ph/j,x7/15,s7,x2/13,s9,x8/5,s5,x7/14,s14,x3/11,s6,x8/4,pe/p,x6/13,pl/o,x0/9,s6,x2/7,s6,x0/12,s4,pe/p,x15/11,s10,pa/l,x5/8,pc/h,s11,pf/o,x12/6,ph/g,x11/4,s8,x3/10,pb/a,x7/4,pg/m,x5/2,s1,x7/9,pk/o,x8/1,pn/m,x3/11,pg/c,x9/7,pp/f,x2/8,pg/l,x4/5,pk/b,x0/2,s12,x7/13,s2,pj/e,x0/6,s3,x8/5,s9,x12/1,s14,x7/8,s6,x15/6,s6,x7/8,pn/c,x15/14,s2,x0/11,s8,x4/9,s5,x12/10,pp/i,x7/15,pn/o,x6/4,s1,x15/1,pk/h,x6/8,pg/c,x10/14,s1,x5/11,s7,x2/15,pm/b,x13/5,pd/j,s2,x4/7,pf/i,x11/9,s11,x13/7,s5,x9/6,s6,x10/2,pp/j,x9/11,s5,x12/13,pa/g,x7/8,s12,x1/10,s7,x7/12,pb/k,x9/8,pm/e,x15/2,s12,x9/1,pk/b,x11/10,s11,pe/f,x0/1,s12,x14/13,pi/g,x2/5,s3,x13/9,s2,x5/8,s4,x3/0,s1,x4/14,s1,x15/10,s13,x8/6,s4,x7/5,s7,x15/6,s8,x7/1,s13,x6/13,s5,x0/5,pf/h,x9/8,pn/i,s14,x4/5,po/g,x2/14,s15,x3/5,s2,pk/a,x12/13,pf/b,x1/10,pc/j,x9/2,s15,x15/4,s5,pf/o,x9/1,s6,x4/2,s7,x7/15,s7,x12/0,pl/d,s10,x10/4,s11,x3/11,pa/c,x14/15,pe/g,x2/6,pn/h,x12/1,pg/f,x2/10,s14,pc/k,x11/4,pa/j,s7,x5/10,s11,x4/12,s1,x8/14,s2,x10/6,pk/m,x0/7,s5,x11/14,s8,x15/6,s2,x1/3,pe/a,x10/0,s3,x3/13,s15,x4/9,s6,x13/7,pm/l,x5/10,pg/k,x14/9,s10,x13/10,s1,x6/7,s5,x12/14,s14,x0/13,s1,x7/14,s3,x1/11,s15,x13/2,s1,x10/12,pi/n,x0/15,pl/c,x6/11,s1,x7/4,pd/i,x2/13,pa/e,x11/10,s5,x2/6,s9,x1/3,pg/f,x15/0,s14,x1/12,pa/h,x9/8,pg/c,x5/1,pd/j,x13/10,s4,x11/14,pm/h,x13/7,s15,x0/15,pj/e,x7/11,s1,x9/3,s13,x15/6,s9,x2/13,pk/c,x10/6,pm/a,x5/1,s13,pd/o,s11,x7/9,s11,pa/c,x4/13,s4,x1/9,pl/d,x0/3,pk/p,x2/11,s10,x15/9,s4,x1/8,pl/m,x9/2,s5,x13/3,s2,x12/2,pe/c,x8/14,po/k,x11/4,s11,x1/12,s10,x15/4,pn/m,x3/8,po/d,x13/5,s9,x8/7,pf/k,s15,x6/13,s11,x4/0,pp/b,s3,x11/10,pk/g,x5/6,s7,x13/0,pc/p,x12/14,pj/e,x3/11,s12,x0/7,s5,x10/8,s11,x14/11,s10,x5/7,s12,x12/13,pi/h,x14/1,s2,x12/2,pk/g,x3/13,s5,pf/d,x9/7,pc/g,x11/0,s9,x8/12,s1,x15/9,s10,x6/7,s4,x8/4,pd/h,x6/7,s7,x2/3,s5,x7/11,s4,x9/2,pi/o,x4/3,s4,x8/2,pe/f,x7/4,s4,x9/8,pi/b,x14/11,ph/o,x2/13,s1,x3/12,pj/f,s14,pa/d,x13/10,pi/h,x6/15,pa/e,x0/2,s8,x10/6,s10,po/m,x2/0,pk/h,x9/15,pf/a,x13/4,s15,x2/9,s9,x6/3,s4,x0/4,pg/j,x10/1,pn/o,s9,x15/9,pl/k,x14/11,s3,pd/g,x10/4,s10,x7/3,s4,x15/9,s12,x12/4,s5,x7/0,pa/i,x10/3,pf/p,x2/13,ph/o,x3/9,s4,x11/0,s10,x2/10,pp/i,s11,x9/6,s7,x5/3,pg/o,x11/12,s15,x1/4,s12,ph/e,x15/8,s13,x3/11,s10,x10/13,s12,x0/1,s13,pk/c,x15/9,pl/m,x0/1,s2,x7/12,s1,x11/2,ph/e,x15/0,s7,x13/6,s15,x0/10,pj/f,x8/2,s8,x0/5,s8,pk/a,x11/9,pp/o,x5/7,s13,x1/11,s1,x0/9,pl/m,x3/15,s15,x2/11,s4,x13/1,pc/j,x2/4,pg/m,x1/9,pi/j,x4/2,pm/f,x10/8,pl/p,x7/5,s3,x15/14,pe/c,s4,x8/10,pp/j,x3/1,s6,x10/13,s7,x12/1,s6,x0/9,s1,x4/7,pb/i,x12/5,s10,pd/c,x11/9,s12,x8/4,s3,x13/9,po/b,s5,x12/1,pe/k,x13/3,s1,x7/2,s14,x12/14,s11,x11/7,s11,x3/10,pa/m,x13/11,s2,x9/10,pd/k,x8/7,ph/b,s11,x6/12,pg/k,x10/14,s10,pc/d,x8/1,s8,x10/2,s8,x6/12,s6,x2/0,s15,x5/11,pb/a,s12,pn/i,x0/6,s14,x3/4,s7,x1/6,pl/m,x5/9,s5,x7/10,s13,x15/8,pg/k,x7/11,s14,x9/1,s12,x5/12,s3,x7/10,pc/a,x9/15,s7,x3/5,s13,x1/13,pf/m,x9/10,pa/e,x11/5,ph/l,x3/9,s12,x13/10,s8,x2/7,s11,pi/g,x14/5,pp/m,x1/7,s15,x9/11,pj/k,x0/5,pl/d,x13/2,s9,x14/8,s7,x15/3,s8,x10/11,s6,x12/1,pp/c,x10/6,ph/a,x14/9,pf/m,x15/8,s14,x7/4,pa/c,s9,x12/2,s14,x14/7,s14,x5/4,s1,pi/m,s15,x9/0,pd/l,x1/5,s14,pf/o,x4/14,s9,x11/5,s1,x1/6,pg/m,x5/14,pl/j,x9/10,pa/i,x8/7,s1,x4/2,s7,pg/f,x6/1,s14,x14/5,s5,x0/12,s10,x2/5,po/e,x12/8,pn/a,s15,x13/11,pp/k,x3/14,s14,x9/11,s14,x3/4,s12,x10/12,s1,x2/3,s11,x14/5,pm/d,x10/1,s15,x13/15,pl/f,x14/6,s4,x10/8,pj/b,x2/7,pm/f,x14/6,pp/g,x9/10,pi/n,x11/1,s9,x2/12,pb/c,x7/11,pf/h,x3/4,s11,x10/11,pa/o,x15/7,s6,x1/5,ph/i,x11/4,s8,x7/3,pe/p,x0/2,s5,x13/11,s9,x7/15,s10,x14/6,pd/i,x10/2,s2,pe/n,s4,x9/5,pk/m,s9,x7/3,pf/i,x10/8,pd/b,x12/7,s2,x4/3,s9,x14/2,ph/m,x0/9,s1,x1/5,s7,x7/10,s6,x9/2,s2,x6/1,s4,x4/9,s1,x3/7,pf/i,x14/12,s4,x11/13,pn/k,x15/4,po/a,x9/3,s15,x11/5,pi/d,x2/13,pn/b,x7/11,s14,x10/5,po/p,s3,pb/a,s7,x12/14,s8,x9/13,pc/k,x0/1,s12,x5/8,s11,x2/13,pf/l,x14/15,pc/m,x7/0,pd/e,x13/2,pc/h,x7/9,s3,x6/0,pp/a,x5/8,pd/h,x9/0,s11,x15/4,s4,x13/5,s14,x6/1,s11,x3/13,pb/g,s14,x11/8,pa/l,x15/14,s4,x5/2,pn/m,x7/15,s8,x11/6,pf/o,x12/8,pi/b,x13/1,pp/m,x5/11,pi/n,x3/12,s1,x4/14,s7,pk/m,x0/1,s9,x10/6,pl/b,s5,x5/12,s11,x13/6,s15,x10/4,s9,x5/7,s10,x12/4,s3,x6/10,s8,x7/13,s13,x11/0,s8,x13/14,s2,x15/9,s11,x1/13,s9,x10/7,pm/f,x15/11,s12,x14/13,pj/o,s13,x12/6,pn/l,s10,x13/9,ph/d,x3/1,pn/p,x0/14,s9,x8/13,s8,ph/a,x2/4,s7,x0/5,s11,x3/10,pe/k,x8/1,s14,x7/3,pb/a,x14/9,pn/g,x6/3,s1,x1/14,s14,x15/0,s6,x9/7,s3,x2/5,s12,x1/11,s15,pm/b,x14/4,s9,pi/p,s2,x15/3,s1,x11/1,s13,x7/6,s6,x5/2,s7,x10/13,s10,x0/15,pa/d,x10/11,ph/n,x12/14,s12,x15/0,s10,x3/8,s5,pl/c,x12/11,s12,pd/f,x9/14,ph/m,s11,x5/2,pk/c,x4/8,s14,x5/6,s13,x3/9,pa/h,x15/11,s14,x3/6,s11,x8/2,s13,x14/7,pe/p,x11/5,pc/d,x1/2,s10,x13/6,pe/g,x4/8,pm/l,s3,x1/12,pb/f,x9/7,s15,x1/4,s11,x14/0,s5,x4/3,s3,x5/0,s15,x14/12,s5,x8/7,s10,x4/14,s13,x8/5,pn/a,x11/15,s11,x0/6,s10,x7/13,po/p,x4/10,s10,x13/9,s9,x5/3,s1,x11/15,s11,x0/3,s14,x8/12,pg/c,x5/11,s11,x15/6,pa/i,x3/8,s12,x9/15,pg/l,x0/6,pe/f,x4/5,s5,x14/9,pg/l,x1/4,pc/o,s14,x2/6,s6,x14/8,pm/k,x4/6,s11,x7/12,pf/c,x14/2,s12,x3/11,pb/l,x13/5,s5,x8/6,s11,x0/5,s15,x1/13,s7,x15/11,s14,x10/13,s5,x5/2,s10,x0/7,pn/p,x5/10,s9,x12/11,s3,x0/4,pg/f,x14/7,pk/d,x0/10,s9,pc/j,x7/11,s5,x15/9,s5,x12/14,s10,x0/13,s6,x1/11,po/n,x4/8,s15,x7/12,s6,x5/0,pi/c,x15/1,po/m,x2/0,s2,x3/7,s12,x9/13,s14,x6/15,s10,x8/10,pl/c,x1/6,pm/p,x9/5,po/f,x11/12,pb/n,x4/9,pc/l,x13/1,pa/g,x3/11,s13,x4/14,s14,x3/10,s3,x2/7,s10,x15/3,pl/e,x0/11,s5,x1/6,s12,x9/14,pm/o,x2/7,pk/f,s2,x14/0,s7,x4/6,pc/j,x1/5,s14,x3/0,pd/f,x8/5,pm/p,x1/0,pb/d,x6/14,s4,x2/13,pa/k,x7/11,s5,x10/5,s13,x11/3,s14,x6/4,s10,x13/1,s11,x0/7,s7,x13/8,s6,x3/12,po/d,x14/13,s15,x6/7,pg/b,x12/10,s8,x8/2,s5,x13/10,s4,pm/d,x8/14,po/p,x13/7,s11,x4/6,s15,x5/15,s2,x2/10,s3,x8/1,pe/l,x11/0,pn/f,x8/7,s3,x5/11,s15,pi/j,x1/2,s12,x14/9,s15,x15/11,pm/g,x13/3,s3,x10/15,s7,x6/2,pi/k,s7,x12/1,pd/a,x2/15,s9,x4/6,s7,x10/8,pl/k,s11,x0/6,s3,x4/2,s12,x10/8,pa/f,s7,x11/14,s6,x3/12,ph/i,x1/8,s1,x14/5,pf/n,x0/11,pk/i,x4/5,s9,ph/g,x1/3,pn/e,x12/9,pl/i,s5,x3/11,s15,x4/5,s13,x11/0,s4,x4/12,pj/k,x3/11,pc/f,x2/12,s8,x15/14,s10,x5/7,s8,x2/11,s12,x14/9,s15,x2/4,s8,x0/6,pa/j,x10/2,pb/h,x6/11,pf/l,x10/13,s1,x3/5,po/e,x8/10,pi/p,x6/7,pa/j,x10/9,s14,x11/12,s9,x7/1,s10,x3/13,s15,x12/9,pb/e,x8/7,s5,x1/10,s12,x6/0,s10,x12/7,s15,x14/9,s12,pp/n,x8/4,s11,pm/c,x1/5,s7,x4/12,s10,x5/14,s6,x10/2,s2,x1/9,s12,x5/4,s13,x6/13,s10,x12/5,pd/o,s5,x10/13,pc/p,x4/3,pf/b,x8/14,s13,pj/k,x4/13,pn/i,x11/6,s12,x8/9,s5,x12/7,pg/p,x3/11,s6,x4/2,s7,x10/13,pk/h,x11/9,s10,x4/5,pl/m,x2/3,s5,pp/b,x0/5,s12,x10/4,s8,x1/6,s5,x4/8,s11,x1/10,s13,x9/7,s12,pc/a,x15/3,s14,x4/5,pm/b,x7/1,pn/k,x3/10,pc/b,x15/13,ph/i,x12/6,pm/f,x8/9,pl/n,x7/2,pk/e,x5/3,s10,x4/13,pd/p,x2/12,pk/b,x1/8,s9,x14/10,s5,x4/8,pg/a,x7/3,s7,x13/8,pb/e,x7/1,pl/h,x9/3,s13,x10/11,s5,x1/13,s12,x4/14,pg/a,x1/0,s6,x5/10,s4,x2/4,pl/b,x1/14,pa/c,s10,x10/5,pl/b,x9/1,s5,x6/2,s15,x11/5,pc/k,s1,x1/0,pa/b,x7/2,ph/j,x1/0,s13,x7/13,pc/f,x14/3,pp/n,x4/9,s15,x7/10,s14,x8/13,s13,x9/10,s5,pl/i,x1/12,s6,x9/7,s3,x13/12,ph/j,x5/6,s13,x2/4,s6,x15/8,s4,x2/4,po/k,x1/14,pc/d,x15/2,pb/l,x1/10,s4,x11/2,s8,x13/0,s12,x12/1,po/a,x2/10,s8,x7/12,pf/h,x2/4,s4,x11/15,s4,x8/7,pe/b,x10/11,s10,x13/3,s14,x4/1,s14,x9/3,pl/c,s11,x1/6,s5,x0/2,s14,x1/9,s7,pe/o,x12/6,pj/d,x14/2,pg/o,x4/12,s5,x15/11,s14,x1/9,s13,x13/2,s10,x10/9,s13,x5/2,s8,x14/7,s2,x6/13,pi/b,x3/11,ph/m,s7,x12/10,pd/i,x2/11,pa/f,x7/10,pg/h,x5/13,s4,x10/7,s15,x5/6,pj/c,x3/2,pe/d,x0/7,pp/j,x9/6,s4,x1/7,po/h,x2/6,s4,x7/5,s12,x2/9,pm/g,x7/12,pi/n,s2,pb/p,s13,pn/i,x4/9,pe/h,x8/1,s1,x3/14,s2,x4/5,s15,x8/6,pc/f,x5/12,s14,x0/8,s8,x11/7,s12,pn/l,x14/3,s12,x11/1,pc/g,x0/8,ph/b,x13/5,pk/j,x14/4,pl/f,x3/7,pc/e,x5/12,ph/i,x8/1,s3,x2/3,s11,x7/15,s11,pn/g,x12/14,s11,x2/7,s15,x8/13,pj/h,x3/14,s2,x10/12,pe/l,x2/8,s3,x9/13,pm/h,x14/15,s4,x2/11,s10,x8/4,s13,x12/0,s8,x10/4,s12,x1/2,s8,x0/10,s4,pg/l,x15/1,pj/d,x4/9,s15,x0/7,s8,x15/3,pg/l,x5/6,s12,x12/3,pk/h,x15/6,s9,x11/8,s10,x13/7,pe/a,x8/15,s6,x10/13,s12,x1/5,s3,x14/9,pl/b,x11/8,pa/p,x14/7,s12,x10/9,s2,x4/14,pg/e,x8/3,pl/p,x0/1,s13,x13/11,s3,x7/4,s3,x9/12,pa/c,x5/6,s4,x8/14,pf/e,x2/13,pk/g,x7/4,po/h,x8/10,s1,x5/3,pd/j,x10/14,s4,x4/12,s11,x7/10,s10,pb/g,s13,pp/e,x11/9,pd/b,x8/10,s13,x12/13,s7,x15/14,s15,x12/5,s7,x8/10,s7,x2/6,s10,x14/0,pj/k,x12/10,s14,x3/13,s11,x9/0,pm/i,s9,pc/g,x1/6,s12,x0/8,s13,x12/7,s6,x1/0,pb/e,x13/15,s13,x3/9,s13,x13/14,po/h,x15/2,pa/k,x9/14,s9,x11/6,pg/p,x9/4,s9,x14/1,pl/d,x2/9,pk/p,x0/4,pl/j,x2/3,s13,x14/15,pd/m,x2/13,s13,x4/5,pj/l,x7/9,s6,x10/13,pc/n,x7/12,s3,x9/1,s1,x5/8,s13,x14/11,s2,x13/9,s8,x4/3,s3,x10/12,pp/a,x3/13,s4,x8/7,s10,x9/11,s15,x3/0,pc/m,s5,pf/h,x8/4,s7,pn/m,x0/10,pk/g,x6/5,pb/j,x8/14,pd/c,x7/0,pe/i,s2,x3/4,s14,x2/10,pd/c,x6/0,pl/b,x4/11,pn/g,x6/2,s1,pc/m,s7,x15/4,ph/n,x6/3,pd/p,x7/12,s11,x6/10,s10,x4/11,pf/l,s15,x9/10,pg/o,s7,x8/14,s7,x13/15,s7,x12/2,pp/k,x0/4,pg/n,x2/9,s12,x7/3,pk/f,x13/6,pj/a,x5/7,s12,x14/12,s7,x1/0,pl/e,x9/2,s14,x10/0,s4,x7/11,s8,x14/2,pm/o,s4,x15/12,pc/l,x0/2,s11,x4/14,s15,pa/i,x8/2,s11,x0/3,s8,x13/6,s7,x12/4,pl/k,x3/0,pb/o,x5/12,pe/f,x6/13,s10,x14/10,s11,x15/6,s7,x12/11,pp/b,x2/4,s12,x10/14,s1,x1/15,s15,x5/11,pi/j,x3/6,pe/o,x10/4,ph/f,x6/0,pj/n,x4/2,pi/g,x14/13,pc/p,s1,x2/3,s8,x6/13,pn/f,x9/15,s6,x14/13,pb/h,x2/4,s1,pg/j,x11/0,s10,x15/12,s6,x3/10,s15,x5/2,pn/f,x1/3,s15,x6/12,pj/d,x8/9,s6,x7/14,s5,x11/5,s1,x3/1,pn/c,x11/4,s12,pi/g,x13/6,s1,x9/4,s3,x3/13,s15,x15/2,s7,x12/1,s14,x3/14,pe/d,x0/7,s2,x15/5,pp/m,x2/9,s3,x12/5,s12,x15/6,pf/n,x5/12,s15,x7/2,s4,x1/3,s15,x13/4,s2,x7/8,pk/j,x4/14,s11,x12/0,s15,x1/7,ph/d,x0/2,s4,pi/e,x7/10,s14,x0/1,s1,x5/14,s13,x4/3,po/a,x8/12,pf/j,x10/5,s15,x1/3,pe/l,x9/15,s10,x6/11,s13,pc/m,x15/9,s10,pa/b,x8/2,s2,x10/1,s5,x15/3,s15,x7/9,pf/n,x10/4,pj/b,x6/1,pa/d,x9/3,s14,x6/14,pb/c,x15/10,s15,x0/6,pg/p,x5/12,s1,x9/15,s7,x8/2,s1,x9/3,pd/a,x15/5,s12,x11/9,s11,pm/b,x15/5,s14,x3/0,s15,x14/2,po/d,x3/7,pe/a,s15,x2/14,s3,x8/5,s6,x14/7,pg/o,x13/5,s2,x14/7,pf/h,x2/9,s14,x10/8,pm/g,x2/5,s7,x13/12,s15,x0/14,pk/f,x7/8,s13,x4/15,s15,po/g,x6/12,s12,x7/1,pl/n,x12/2,pk/i,x3/11,s8,x5/12,po/p,x9/14,pg/l,s14,pj/i,x13/15,s11,x6/1,s11,pe/d,x10/0,s6,x2/13,s15,x6/4,pc/k,x8/9,s10,x4/12,s4,pa/e,x0/11,s13,x9/5,s5,x1/13,pn/p,x7/3,pg/h,x15/0,s10,x1/3,s13,x11/14,s3,x6/15,s3,x9/4,s1,x10/14,pe/p,x2/11,s7,x4/13,s4,x11/9,s1,x8/6,s3,x13/2,pb/c,x11/15,s3,x9/4,s7,x1/3,s9,x6/4,ph/f,x12/11,s7,x15/5,pj/l,x10/9,s7,x14/6,s6,x8/7,ph/g,x6/1,pc/n,x2/15,pl/g,x10/13,s1,x5/14,pk/m,x8/2,s10,x15/7,s11,x12/10,pc/j,x14/6,pe/l,x0/12,s8,x8/4,pn/k,x13/6,s14,x4/9,s15,pi/f,x7/8,s14,x2/3,s5,x9/15,s5,x1/6,s1,x3/13,pp/g,x5/12,pj/h,s13,x15/7,s5,x11/8,s9,x6/12,s14,x13/0,pb/n,x14/15,s15,x10/4,s11,x5/7,s11,x4/0,s6,x14/6,s14,x10/5,s3,x3/4,s9,x11/2,s10,x8/10,s2,x6/15,s9,x8/11,s5,x6/10,s9,x1/7,pe/l,x0/12,pn/c,x5/15,s4,x10/13,pp/g,x1/4,pd/a,x8/10,s6,x9/5,s1,x3/1,s12,x8/9,pf/c,x6/13,pi/m,s1,x10/9,s15,x5/6,po/g,x15/9,s4,x1/10,pf/b,s3,x8/0,s6,x10/2,pm/h,x7/9,po/n,x15/14,s11,x9/3,pc/f,x5/11,s3,x3/15,s4,x10/1,pd/n,x11/7,pg/c,x10/6,pe/i,x15/5,s8,x1/2,s12,x8/0,pf/n,x11/4,s2,x10/2,pa/j,x7/4,pf/h,x9/12,pl/a,x7/1,s9,x14/0,s4,pd/b,x6/3,ph/i,x10/7,pa/b,x13/8,s3,x12/6,ph/l,x4/1,s12,x3/11,pg/c,x6/7,s8,ph/n,s4,x2/12,s14,x14/1,s10,x5/11,s15,x1/12,pk/l,x9/5,pj/p,s4,pn/b,s11,x2/15,s15,x11/4,po/j,x8/7,s8,x1/2,s4,x7/14,pm/a,x13/15,s2,x10/11,pl/k,x13/0,s14,x5/1,pj/e,s11,x9/6,s12,x5/1,po/g,x14/8,pj/k,x5/10,po/f,x4/1,pb/e,x5/14,s5,x0/9,pf/a,x10/6,pm/k,x2/9,pl/p,x6/8,pm/i,x5/10,pl/k,x14/8,ph/b,x7/1,s1,x15/13,s11,x9/6,s14,x3/1,pg/n,x14/2,pe/l,x3/6,s11,x9/7,s11,pf/p,x14/6,pd/l,s9,x4/9,s5,pe/a,x5/6,s11,x14/13,pg/o,x15/11,s6,x1/6,s3,x10/7,pp/l,x1/14,s6,x11/3,s5,x13/1,s12,x2/4,s2,x0/1,s11,x11/10,pj/a,x1/8,s15,x11/0,s6,x4/7,s3,x8/2,s7,x15/4,s5,x7/9,s11,x11/10,pp/i,x13/3,pl/f,x10/5,s14,x1/11,s2,x10/2,s13,x13/4,s12,x6/12,pj/b,x14/0,s11,x8/9,s1,x0/11,s6,x10/15,s10,x6/9,pm/e,x0/8,s4,x13/12,s11,x14/4,pf/g,s5,x6/11,pa/h,x9/7,pn/f,s6,x1/8,pa/g,x4/7,s8,x14/10,s10,x3/9,s4,x0/7,s14,x10/11,s9,x4/0,po/i,x13/14,pg/c,s12,x2/1,pj/o,x13/15,s15,x14/11,ph/i,x9/12,s3,x6/8,pg/o,s4,pd/f,s15,x3/4,s12,x1/0,s2,x9/15,pc/m,x5/0,s9,x3/11,pa/g,x2/13,s3,x12/15,s1,x14/6,s15,pi/b,x2/12,s8,x1/4,s15,x15/3,s7,x14/9,s15,x6/15,s7,pl/n,x8/9,s2,x3/13,s13,x7/11,pg/j,x5/15,pf/b,x2/4,pk/d,x7/15,s5,x1/8,s10,x0/5,s5,x15/7,pm/e,x0/5,pg/i,x2/6,s1,x9/3,s1,pk/j,x7/4,s14,x12/9,ph/p,x8/0,s14,x6/5,s7,x11/8,s3,pa/m,x15/13,s6,x14/4,pc/o,x15/6,s4,x2/4,s7,x11/10,pn/g,x15/2,pk/d,x7/0,ph/c,x3/2,s12,x4/5,pf/g,s8,x14/12,s4,x13/3,pc/i,x2/5,s14,x8/6,pm/d,x15/14,pp/c,s7,x6/13,pj/e,x14/15,s15,x12/1,s9,x15/6,pg/i,x12/11,ph/n,x4/5,s7,x10/8,po/k,x14/1,s11,x4/6,pj/i,x0/1,pf/h,x12/4,s14,x0/10,s7,x14/3,pd/l,x2/11,s7,x6/15,s11,x14/1,s15,x9/15,s3,x7/5,s7,x15/2,s5,x10/11,s6,x0/7,pb/e,x6/2,s14,x15/14,s7,x13/5,s2,x10/3,pk/l,x0/14,s3,x4/6,pj/f,x10/1,po/d,s6,x9/15,s1,x11/4,pk/f,x9/14,pi/d,x6/7,s6,pp/b,x11/1,s5,x0/7,pd/j,x3/1,pm/a,x15/11,pe/p,x4/3,s3,x1/14,s4,x8/12,pm/g,x11/6,pl/o,x7/9,s7,x3/12,s2,x5/14,s1,pp/b,x7/4,pf/a,x8/10,pb/o,x12/7,s6,x10/2,pm/j,x12/1,s10,x4/14,s2,x15/11,s15,x13/7,pk/e,x9/0,pb/m,x3/1,s8,ph/p,x5/8,pi/o,s15,x13/12,s14,x10/15,s5,x12/8,s5,x6/1,s14,x10/15,s1,x1/5,ph/a,x9/15,pg/d,x12/8,pn/k,x14/5,pi/b,s5,x0/7,s14,x2/5,pj/m,x9/3,pi/c,x1/13,s5,x6/9,s13,x2/1,s12,pj/p,x13/6,s11,x0/3,pd/o,s1,x11/15,s2,x5/4,pa/f,s15,x7/13,s14,x8/14,pb/i,x3/0,s6,x14/8,s2,x10/3,pm/j,x14/5,s4,ph/e,x10/9,pd/m,x11/14,s7,x5/6,pj/l,x14/12,s13,x15/1,s10,pi/c,x4/9,s4,x14/7,s9,x3/9,pd/f,x0/10,pb/k,x1/2,s15,x5/8,pd/c,x11/14,s5,x1/13,pf/g,s12,x9/6,pj/p,s9,x11/8,pf/o,x0/13,s9,x2/8,s5,x0/9,pd/p,x8/14,s3,x12/13,pn/k,x11/7,pm/o,x3/10,pd/p,s13,x11/0,po/b,x9/1,pp/e,x14/10,s7,x2/3,s7,x1/14,s14,x8/11,s6,x4/6,s5,x1/15,pb/a,x13/9,s9,x2/10,s7,x13/9,pe/p,x3/15,s12,x6/8,s5,x13/11,s4,x6/0,s10,x2/13,pb/a,x9/3,s9,x0/11,s2,x1/4,s8,x2/9,s13,x11/13,pn/o,x0/9,s6,x13/12,pd/p,x0/10,pm/b,x8/2,pi/c,x10/0,s8,x1/11,ph/k,x8/5,s2,x12/1,s13,x8/15,s9,x14/6,s14,x5/0,pd/f,s9,x1/9,pi/b,x6/8,s7,x12/11,s13,x0/10,s15,x12/7,pf/a,x4/11,ph/d,s10,x2/10,pm/k,x8/15,s10,po/l,x14/11,pn/i,x7/12,pc/f,x11/10,s11,pj/a,x13/5,s6,x8/15,s11,x3/4,s9,x7/9,pe/n,x15/12,s9,x8/3,s10,x7/4,s3,x14/9,pi/o,x7/10,s9,x1/5,s8,x6/13,pj/e,x1/14,pd/p,x10/5,s5,x3/15,s13,x6/14,pe/c,x15/2,ph/k,x9/5,s5,x0/7,s11,x12/9,pl/e,x13/0,pa/b,x14/4,pd/f,x0/15,po/k,x2/4,s15,x7/15,s13,pl/p,x12/8,s14,x2/13,s2,x5/12,pc/j,x4/14,ph/k,x0/3,pm/j,x4/13,s13,pd/e,x5/2,s3,x7/8,pn/b,x15/10,s12,x13/1,s6,x15/14,s3,x10/7,s15,x11/8,ph/f,x9/4,s1,x14/12,pn/k,s12,x11/10,s7,x8/9,s14,x10/2,s10,x8/6,s9,x2/5,pg/d,x11/4,s2,x3/9,s6,x13/15,s7,x5/1,s4,x11/6,s7,x9/5,s3,x14/1,s6,x3/11,s5,x15/4,s10,x3/8,s7,x4/15,s12,x0/14,pl/m,x9/12,pg/p,x1/2,pl/d,x5/10,s15,x12/7,s2,x2/1,pa/m,x5/3,s7,x4/11,s12,x9/12,pc/g,x3/13,s5,x15/11,pp/d,x4/13,pn/c,x15/2,pl/j,x1/6,pb/e,s4,x4/12,s5,x0/7,s9,x1/11,s8,x13/3,pg/m,x4/11,s6,x3/8,s1,x14/4,pc/n,x3/1,s11,x8/15,ph/j,s2,pm/f,x14/11,pp/j,x3/1,pn/h,x0/14,s5,x11/15,s11,x12/10,pa/b,x1/5,pn/m,x10/11,s5,pd/g,x8/0,pj/p,x4/14,pm/f,x7/11,pn/d,x5/6,pj/i,x7/12,pm/h,s8,x3/6,s6,x0/13,s5,x6/10,s13,pb/p,s6,x1/9,pe/h,x0/10,pf/n,x13/11,s1,x12/4,pj/m,x0/1,ph/k,s1,x3/14,pn/f,x12/2,s14,pd/l,x15/8,s11,x7/6,pf/k,x12/15,pn/m,x3/11,s3,x1/2,pp/g,x5/12,s2,x4/14,pl/f,x9/8,pg/o,x12/13,s5,x7/6,pn/e,x1/8,pi/j,x14/4,ph/a,x3/6,s12,x9/2,s2,x7/1,s4,x9/5,s14,x8/4,pd/m,x11/13,s15,x4/9,ph/p,x1/13,pj/i,x11/10,s14,x13/3,s15,x4/14,pb/g,x11/12,s3,x8/0,ph/m,x11/15,s14,x12/1,s12,x14/5,s9,x6/8,s12,x10/13,s15,x15/7,pj/i,x12/9,s4,x4/8,s13,pf/n,x14/10,s15,pk/p,s11,x15/9,pl/b,x4/11,s12,x2/5,s14,x10/8,s6,x11/7,pf/p,x13/14,s13,x12/2,pc/l,x13/6,s11,x9/11,s9,x3/7,s1,x4/1,s3,x14/15,s2,x4/2,pm/i,x3/8,s1,x9/14,pd/b,x13/11,s5,x3/8,s4,x2/9,pi/p,x12/13,pe/k,x5/8,s7,x3/14,pf/h,x10/7,s4,x15/8,s4,x3/6,s13,x9/12,s9,x11/15,s12,x8/12,s14,x13/6,s10,x11/15,s5,x1/12,s2,x3/7,pp/m,x12/1,s1,x5/4,s2,x7/9,po/e,x15/2,pa/b,x5/11,s4,po/f,x7/1,s14,x6/13,s8,x14/2,s11,x3/1,s1,x11/8,pa/n,x2/9,s9,x1/15,s4,x5/12,s9,x1/3,pe/k,x7/6,s15,x3/2,pi/d,x11/12,s7,x6/15,pb/h,x4/14,pe/l,x9/6,pi/j,s6,x7/14,s9,x3/1,s5,x15/14,pe/g,x9/1,s8,x8/7,s13,x14/0,pk/d,x13/7,s9,x1/14,s6,x13/15,pp/o,x4/7,pe/i,s15,x2/14,s4,x10/0,pc/l,x2/14,s12,x1/15,s3,x3/4,s5,x14/8,s6,x1/12,s12,x13/10,pa/j,x3/4,s2,x5/2,s9,x13/0,pp/c,x3/6,s8,x4/5,pb/h,x10/15,s12,x7/1,s10,x10/14,pi/l,x8/15,pn/d,x9/1,pf/b,s4,x15/14,pn/p,x12/4,s9,x11/5,s9,pf/o,x3/7,s3,x10/6,s3,x3/13,s3,x2/4,pc/b,x9/8,s5,x7/3,pf/a,x1/9,pi/l,x10/8,s3,pd/b,x11/14,s5,x10/6,s12,ph/k,x2/7,s3,pb/e,x15/1,s2,x14/8,pg/n,x9/0,pm/o,s12,pk/n,x12/14,s13,x13/15,pi/l,x4/2,s12,x0/14,ph/b,s9,x6/11,pe/j,x8/14,s2,x13/4,s11,x8/14,s4,x2/6,s12,x13/11,po/l,s2,x7/14,pc/m,x11/6,pi/f,x3/13,s8,x8/9,pc/g,x4/1,s3,x5/7,s10,x11/9,pk/f,s6,x14/4,s4,x15/9,s4,x4/1,pm/o,s15,pc/l,s9,pm/k,x9/14,s12,x8/4,pj/c,x9/1,s2,x2/7,pn/m,s4,x1/8,s1,pc/e,s8,x3/7,pg/m,x6/0,s9,pe/k,x3/9,pi/n,x10/2,pc/j,x8/9,pl/o,x10/13,s9,x6/8,pn/e,x13/10,pp/g,x8/3,s11,pi/m,x0/11,s12,x9/12,s3,pg/e,x1/14,s11,x9/3,s5,x2/11,s11,x9/6,s13,x7/14,s14,x2/4,pm/b,x7/10,s13,x14/6,pg/h,x2/12,pp/i,x5/10,s11,x6/7,s12,x13/8,s13,x15/6,s10,x0/4,s11,x9/15,s10,x14/11,ph/b,x0/15,pk/f,s9,x2/3,s6,x6/4,s4,x3/2,pi/c,x10/8,s2,x5/12,pj/k,x4/8,pl/m,x13/9,pd/i,x3/12,s4,x0/9,s3,x14/2,s6,x7/11,pa/h,x3/0,pj/c,x8/10,s6,x0/9,pk/g,x15/5,po/h,x9/4,s2,x15/10,s12,x0/4,pi/n,s5,x1/5,s9,x15/2,ph/c,x9/5,po/e,x0/6,ph/d,x14/9,s5,x5/15,pm/j,s6,x6/9,s5,x4/5,s5,x8/13,pb/l,x2/11,ph/e,x15/4,s13,x11/3,s1,x0/15,s15,x8/11,pn/o,x13/12,s11,x9/6,s10,x8/11,s13,x5/0,s1,pg/f,x4/1,pa/o,x13/14,pp/h,x0/9,pc/l,x6/7,s11,x11/5,s10,x1/0,s10,x7/3,s7,x9/0,s9,x8/2,pm/a,x12/15,s1,x9/13,pp/j,x10/5,s3,x2/14,s1,x3/6,s7,x8/2,s5,x5/10,s14,x2/1,s4,x10/0,pm/o,x11/15,pj/l,x14/5,s13,x0/4,pg/n,x8/7,ph/a,x2/14,s7,pl/n,x8/4,pf/c,x7/11,s5,x12/10,pd/m,x2/8,s7,x0/1,s4,x6/9,ph/i,x13/8,pl/o,x11/10,s14,x13/6,s9,x15/10,pn/m,x4/9,pp/b,x13/0,s3,x7/1,pa/i,x11/9,pl/p,x15/13,s11,po/e,x7/4,s15,pc/i,x13/5,pm/h,x8/11,s8,x4/12,pd/o,x7/10,ph/a,x2/5,pf/b,x14/0,pk/h,x4/15,s7,x6/0,pa/i,x15/4,pc/f,s13,x3/9,s14,x0/8,s15,x14/15,pg/m,x6/0,s7,x7/10,pk/p,x4/11,ph/n,x2/0,s2,x7/4,s11,x8/13,s14,x11/14,s14,pa/k,x10/15,s12,x13/6,s12,x1/2,s8,x12/3,s6,x11/15,pm/l,x7/6,s14,x15/3,s2,x9/1,s9,x8/11,pk/d,x6/2,s11,x11/1,s14,x2/0,pe/c,x13/7,pn/m,x5/6,s12,x8/4,s9,x7/13,s7,x9/11,s13,pi/a,x10/6,pl/b,x12/13,pm/n,x6/11,s7,x2/12,s7,x10/15,s13,x14/4,po/f,x13/6,pe/b,x15/2,s6,x14/7,s7,x4/3,pm/i,x12/8,s5,pg/o,x5/13,s12,x0/9,s7,x13/4,s15,x10/7,pn/j,x11/5,pp/m,x6/15,s5,x5/14,s1,x10/0,ph/k,x1/7,pd/g,x3/5,pl/o,x15/0,s9,x6/12,pj/h,s14,x9/3,s15,x15/0,s13,x2/8,s15,x1/7,s15,x15/5,pe/o,x2/6,ph/a,x15/13,s3,x4/6,pm/p,x10/1,s4,x7/11,pc/l,x0/5,s9,pa/i,s3,x1/12,pd/e,x13/11,s2,x8/12,pk/f,x4/13,s11,x3/7,pd/n,s8,x12/0,s3,x14/9,pm/o,x12/10,pn/l,x11/4,pm/o,x10/8,s1,x7/5,s6,x9/2,pe/d,x8/1,s2,x3/7,s2,x12/15,s15,x6/5,s5,x0/12,pf/a,x7/11,pm/c,x14/1,po/b,x8/15,s7,x5/1,pi/g,x0/12,pb/l,s11,x10/7,s2,x14/4,s4,x12/5,s10,x0/1,s5,x10/9,pc/j,x7/14,s13,x3/8,s1,x7/2,s5,x5/11,s15,x2/9,pf/o,x15/14,pj/c,x0/8,pa/o,x10/5,s2,x8/7,pf/h,x6/15,po/c,s3,x14/8,s12,x7/12,s15,x14/10,s6,x2/9,s5,x0/4,pj/h,x1/8,pm/k,x13/15,pi/e,x0/7,s2,x11/2,s3,x9/12,s12,x2/11,s8,x3/0,s12,x14/5,s1,x7/2,pp/b,x12/5,pl/d,x10/9,s10,x2/4,s13,pn/m,x13/1,s15,pp/g,x15/6,pa/h,x12/9,s8,x3/11,s15,x1/9,pk/p,x11/13,s12,x8/12,s10,x4/14,s13,ph/m,s1,x11/1,s9,x12/0,s15,x3/13,s7,x4/14,s13,x11/2,pg/i,x12/10,s14,x3/0,s9,x13/5,pj/l,x3/6,s1,x9/11,pi/a,x6/4,s10,x8/1,pk/l,x10/11,pd/p,x13/4,s13,x8/2,s1,x7/4,s13,x9/1,pj/f,x8/11,s7,x7/4,s6,pn/g,x1/3,pb/o,s13,pn/c,x11/13,pf/g,x12/4,s12,x11/2,pa/d,s1,x8/5,pc/k,x10/1,s1,x7/3,s14,x5/13,s9,x4/14,s8,x5/10,pl/d,x6/15,s6,x10/13,s10,x7/14,s9,x4/11,po/m,x1/15,s13,x3/12,pi/p,x10/15,s15,x12/4,pj/m,x3/0,s6,x8/12,s15,x3/9,s8,x12/5,po/p,x7/14,pn/i,x8/2,s11,x4/15,s9,x12/7,s9,po/c,x9/6,pl/g,x2/8,s14,x10/14,s8,x0/12,s1,x9/1,s11,x0/11,po/b,x1/9,s3,x15/4,pn/h,x13/3,s2,x12/2,s15,x4/3,s15,x0/1,po/d,x10/12,pi/g,x5/3,s3,x6/1,ph/l,s3,x5/2,s3,pg/n,s8,x14/8,pa/k,x12/3,s3,x4/1,s7,x9/14,s8,x13/6,pf/i,x1/14,pn/p,x8/7,s2,x0/3,s6,x11/7,pf/a,x8/2,s8,x0/1,s1,x2/15,pm/p,x5/9,s13,x2/14,s6,x9/11,s8,x1/10,s11,pe/a,x0/8,pn/c,s10,po/d,x9/3,pl/m,x8/4,s15,x2/14,s15,x15/10,s3,x12/1,s9,x14/8,s2,x15/10,s4,pk/f,x9/1,pl/c,x11/4,pd/h,x14/8,pb/m,x13/10,ph/p,x6/0,s11,x2/9,pe/b,s2,pc/f,x7/6,s14,x15/10,ph/b,x1/4,s14,x13/15,s5,x9/10,s5,x11/7,s1,x4/0,pg/k,x1/5,s12,po/l,s8,x3/0,s7,x11/14,s13,x10/12,pk/i,x3/5,pm/p,x0/6,s1,x7/9,pn/b,x0/11,s11,x4/15,s10,x5/2,pp/a,x9/8,po/n,x15/0,s4,x10/9,s1,pp/b,s3,x0/15,pc/e,x3/6,s10,x4/14,s11,ph/j,x3/13,s12,x11/8,s5,x10/14,pl/m,s3,x4/0,ph/o,s6,x12/13,pe/p,x5/6,pm/k,x9/13,s15,x12/8,s15,x2/1,s7,x6/11,pc/j,x9/14,s14,x11/12,s8,x1/7,s7,x8/3,s1,x14/0,s6,x7/15,s6,x11/4,s3,x6/13,s6,x5/15,pe/l,x9/4,s7,x7/3,pi/b,x0/15,pd/l,x12/14,s12,x10/4,pm/i,x7/8,pj/n,x9/0,pi/b,x14/1,ph/f,x8/13,pa/d,x1/4,pi/g,x0/11,s15,x1/14,s6,x5/3,s12,x13/1,s6,x15/4,pa/n,x12/8,pk/j,x0/13,s9,x5/4,pf/c,x9/1,pp/d,s7,pl/f,x8/14,s4,x12/7,po/g,x14/5,s4,x10/11,s12,x3/14,pj/f,x12/15,ph/b,x10/0,s9,x3/13,pa/m,x15/7,s1,x1/3,s13,x0/9,s7,x10/5,s11,x12/4,s7,x10/13,pe/d,x3/14,s14,x9/7,s15,x2/10,pj/c,x5/4,s8,x15/2,s10,pp/l,x14/7,pe/f,s5,x2/10,s6,x15/5,s1,x9/13,s5,pc/j,x6/12,s2,x13/1,pi/e,x2/9,pm/p,x8/4,s11,x10/15,s12,x9/3,s6,x5/1,s6,x6/9,pn/o,x7/15,pb/f,s4,x4/8,s3,x9/0,ph/l,x13/7,pp/f,x3/4,s7,x1/0,s10,x3/12,s11,x14/0,s15,x1/11,s10,x6/0,s3,x3/7,s15,pa/i,x1/15,pn/j,s8,x13/9,pa/b,x1/3,pi/j,x4/14,s12,x0/1,pk/b,x12/3,pf/j,x6/7,pi/c,x2/5,s13,x11/12,s10,x3/8,s14,x13/1,s12,x4/12,s4,x8/13,s11,pm/b,s1,x5/4,po/i,x7/2,ph/p,x1/9,s5,x13/3,s11,pl/e,x5/11,ph/k,x12/6,s12,x9/15,pf/n,x7/3,pc/a,x1/2,s7,pe/n,x9/4,pc/h,x6/2,s14,x8/15,po/g,x1/5,s8,x15/11,pj/m,x4/0,pp/k,x5/8,ph/i,x13/0,pe/n,x1/2,s10,x3/7,pg/b,x1/11,s11,x12/7,ph/j,x1/3,pb/n,x12/11,s15,x3/13,pk/j,s6,x1/6,s14,x15/9,pd/h,x4/11,s8,x9/14,pe/l,s11,x7/4,pd/k,s2,x9/10,pb/a,x6/15,s1,x11/9,s15,x6/2,s3,x13/0,pg/e,x7/11,pc/a,x6/0,s9,x3/4,s15,x1/7,s2,x9/11,s5,x4/3,s4,x7/0,s3,x12/2,pp/f,x9/3,pl/n,x2/12,s3,x10/15,s13,x9/12,pj/f,x10/7,s11,x0/4,pl/p,s1,x15/1,s9,pk/o,x13/7,s8,x9/5,s11,x6/0,s4,x2/1,pi/n,x10/14,s9,pk/c,x6/8,pm/a,x9/10,pc/p,x6/7,s2,x8/2,s7,x9/10,s13,x15/12,s7,x14/4,pg/b,x3/0,pl/h,x5/1,s4,x3/7,s11,x11/2,s4,pc/o,x0/8,s10,x6/11,s1,x3/13,s2,x2/9,s13,x1/14,s5,x7/9,pd/p,x12/3,pg/c,x6/14,s6,x11/7,pb/l,x3/2,pe/g,x9/8,pm/f,x11/6,s5,x8/7,s6,x5/6,s10,x2/8,s8,x5/3,pg/l,x10/0,s1,x15/5,pj/b,x12/4,s8,x1/15,pd/o,x5/10,pk/i,x8/9,pg/l,x7/13,pk/m,x9/15,s2,x13/12,s9,pi/a,x6/1,s1,ph/l,x10/9,s5,x14/5,s10,x4/11,pe/f,x12/15,pk/i,x10/2,s3,x4/11,s11,x12/9,pl/h,x11/4,s7,x3/8,s5,x9/0,s4,x8/13,pi/c,x6/7,pg/p,x10/9,s1,x13/15,pd/m,x10/4,pl/c,x13/7,pn/o,x0/9,pf/k,x4/14,s3,x3/13,s11,x10/11,s1,x2/7,pl/p,x6/9,pm/c,s7,x11/2,s6,x12/3,s10,x1/5,s2,x3/0,s5,x14/6,pp/f,x9/0,s5,x13/11,s8,x8/7,s5,x9/6,s8,x2/0,pi/m,x5/10,s5,x4/12,pc/p,x8/0,pb/h,x2/5,pf/j,x3/0,pe/h,x4/14,s5,x11/15,po/g,s5,x13/3,pl/c,x8/9,s13,x0/1,s6,x15/12,s14,x8/11,s11,x13/4,s11,x11/14,s3,x4/0,pa/i,x8/11,s12,x14/13,ph/c,x12/11,s14,x3/2,pe/k,x13/5,pi/a,x0/7,s2,x3/11,pk/b,s15,x0/14,s1,x12/5,s13,x1/9,pf/i,x10/6,s13,x12/3,s6,x6/1,s11,x13/8,s11,x5/10,pb/h,x7/4,pc/g,x1/6,pp/i,x7/4,pa/d,s14,x0/6,pm/b,x5/12,s9,x1/10,s5,x13/9,pk/j,x8/3,pn/d,x7/6,po/g,x8/14,s8,x2/11,s6,x7/13,s10,x1/4,pp/h,x5/13,pb/j,x15/3,s9,x10/8,s12,x5/11,pe/c,x7/12,pn/m,s8,x13/4,s10,x7/1,s13,pj/k,x6/3,pg/d,x12/15,pm/i,x3/5,pe/b,x7/15,s14,x2/12,s11,x10/1,pm/h,x4/11,s1,x6/2,s12,x1/7,pa/b,x10/4,pk/c,x12/0,pp/d,x8/4,pi/b,x3/6,s10,x10/11,pd/l,x14/0,pc/e,x13/11,ph/i,s6,x3/12,s9,x7/1,s10,x2/5,s11,x11/8,pj/b,x5/7,pn/l,x3/9,s4,x13/11,pa/b,x0/12,s7,x7/1,s11,x3/15,pd/k,x2/14,ph/n,x0/9,pd/e,x14/8,s2,x2/1,pp/h,s12,x7/3,s10,x9/8,s6,pl/k,s13,x10/15,s14,pb/e,x7/8,pp/l,x5/15,s8,x11/4,s12,x14/8,ph/j,x12/11,s11,x9/3,s8,pb/m,x14/2,pi/n,x15/4,s9,x12/3,s12,x1/10,pa/g,x15/7,s4,ph/f,s4,x11/5,pl/p,x2/10,s11,x15/0,pb/i,x4/6,pn/p,x12/13,s11,x11/10,s2,x8/2,s12,x1/3,s4,x8/13,s9,x4/2,s3,pe/m,x1/15,s11,x2/0,s10,x10/6,s9,x15/8,pa/b,x13/2,pl/f,s8,x10/5,s3,x4/8,pc/m,x0/9,s4,x3/5,s7,x10/7,pb/h,x11/1,pd/e,x0/5,pb/j,x1/8,s13,x12/3,s7,pl/f,s15,x2/4,pb/p,s2,x0/7,s7,x13/12,pj/h,s10,x15/6,s5,x3/4,s5,x6/8,s7,x7/0,pi/d,s8,pg/j,x15/1,pi/e,x10/13,pj/p,x7/1,s7,x2/3,pl/n,x14/10,s3,x9/2,s4,x13/6,pf/i,x3/10,pj/n,x12/9,pk/i,x6/13,s14,x14/4,pg/b,x11/9,s10,x5/13,s15,x2/0,s5,x5/14,pi/j,x3/9,pg/b,s2,x4/0,s9,x12/13,s4,x9/3,po/l,x14/0,pe/c,x6/7,pn/k,s1,x3/13,s3,x12/0,pm/i,x2/6,s13,x7/3,s7,x15/5,pb/a,x1/13,s10,x12/14,pn/p,s5,x3/5,s8,x0/13,pm/b,x2/4,s11,x11/0,s6,x13/4,s10,x10/6,pi/f,s1,pl/e,s1,x3/2,s11,x13/11,s3,x15/8,po/g,x2/1,pf/k,x13/10,s14,x1/8,s12,x10/13,po/l,x3/8,s13,x13/1,pg/d,x3/11,pj/n,x5/0,pl/o,x8/4,s8,x12/15,pm/c,x9/6,pk/o,x14/1,s14,x8/12,pn/l,x6/13,s3,x7/2,pj/d,x13/14,s9,x10/9,s1,ph/m,x11/7,s4,x6/0,s6,x7/15,s4,x10/3,pa/o,s8,x9/5,s12,x2/8,pi/m,s5,x7/12,pe/l,x4/13,pd/p,x11/8,pk/a,x6/0,s6,x2/12,s15,x14/5,pb/p,x12/15,pk/n,x10/0,pc/i,x6/9,s12,x2/4,s10,x8/1,s13,x3/12,s13,x15/14,s13,x11/5,s13,x6/4,pk/a,x14/11,s5,x6/12,s10,x2/13,s3,x3/12,s11,x14/7,pe/c,x15/8,s13,x3/4,s9,x5/8,s4,x3/2,s3,x11/13,pl/i,x4/7,pk/b,x3/13,s7,x7/10,pn/e,x3/11,pd/b,x1/13,s9,po/n,x6/12,s14,x0/14,pe/l,x3/12,ph/a,x8/14,s14,pk/n,x11/4,s8,x10/12,s2,x15/11,s10,x10/0,s10,x5/2,s9,x6/3,pa/p,x15/5,s13,x14/6,s14,x1/8,s14,x12/4,s6,x14/7,pd/h,x2/3,s2,x9/12,s1,x10/15,s5,pg/j,x7/4,pp/a,x10/1,s9,x6/8,pf/d,x7/13,s7,x2/4,s10,x8/0,ph/e,x12/1,pd/f,x3/5,pj/i,x6/14,s15,x10/8,s15,pn/p,x1/3,pl/j,x12/8,pe/g,x2/14,s5,x6/7,s5,x14/5,pc/p,x12/0,s1,x2/11,pm/i,x12/8,s1,x9/4,s10,x13/11,s6,x5/7,s13,x11/9,s12,x5/2,s8,x3/7,s15,x10/2,s6,x6/7,s3,x3/8,pf/g,s9,x1/5,s3,x11/12,s4,x7/0,pi/j,s3,x15/3,s3,pc/n,s12,x14/13,pa/b,x4/11,pg/j,x1/14,s8,x4/12,pb/o,s2,x0/6,s8,x13/7,s7,x0/8,pl/g,s9,ph/b,x11/7,s10,x9/3,pi/m,x13/7,s9,x10/9,pf/a,x12/13,pp/j,x14/3,pi/h,x0/4,s2,x8/13,pf/d,x12/9,s4,x5/13,pb/o,x3/1,s7,x8/0,s4,x2/7,pa/n,x15/5,pe/m,x13/3,pp/g,x2/11,s13,x9/8,s14,x15/6,pc/j,s14,x10/13,pg/e,x8/9,s8,x10/2,s5,x3/0,pp/m,x10/2,pe/k,s15,x15/6,s10,x4/14,pa/p,x6/9,s13,x4/10,s11,x6/7,s12,x15/4,ph/d,x6/7,s13,x11/15,s15,x6/2,s11,x12/7,pb/i,s13,x6/5,pa/d,x13/12,s7,x9/10,pm/h,x12/4,s7,x2/14,s2,x15/11,pl/o,s7,x13/9,s6,x3/2,s12,x11/12,ph/d,x1/15,s11,x4/11,s10,x13/7,pg/e,x15/4,ph/a,x6/13,s2,x5/14,s2,x3/9,s14,x13/4,pc/d,x2/8,s14,pb/a,x11/14,s13,x15/4,s7,pi/f,s14,x0/3,pa/d,x14/7,s10,x3/4,pj/h,x9/7,pm/k,x5/1,s14,x14/3,s2,x11/10,s13,x5/3,pf/n,x4/12,s10,x7/8,s2,x10/3,s10,x15/1,pk/a,x9/11,s13,x0/5,s14,x4/3,s8,x14/5,s12,x11/6,pc/h,x12/3,pi/p,x1/0,s15,pd/l,x6/14,s12,x2/1,s6,x4/3,s8,x2/12,s9,x1/11,s3,x4/15,s3,x2/12,s5,x3/6,pa/e,x8/14,pb/j,x1/5,s9,x6/9,s2,x1/7,s9,x3/0,pn/k,x7/2,s12,x3/4,pp/e,s10,x9/2,s12,x0/10,pc/n,x5/3,ph/d,x2/12,pa/o,x11/4,pg/m,x5/15,pc/o,x8/11,s14,x6/5,pb/a,x2/11,pk/g,x13/7,s5,x0/8,s6,x3/2,pn/j,x15/7,s14,x9/0,s12,x8/13,s10,x14/12,pa/k,s7,x8/1,s4,x10/2,pn/c,s8,pe/o,x9/5,s8,x13/10,s10,x1/4,s5,x10/15,pd/j,x11/3,pc/o,x10/13,pe/i,x0/1,s5,x5/12,s1,x10/14,s11,x4/8,s2,x6/9,s10,x4/11,s8,x13/2,s7,x1/12,s1,x14/15,s5,x4/2,s10,x13/11,po/c,x2/14,pp/f,x5/1,s2,x15/7,s14,x12/2,s1,x5/4,pj/g,x15/11,s9,x2/4,s4,x7/11,pe/i,x8/15,s15,x11/6,s13,x7/12,pm/a,x3/13,s6,pd/l,x15/7,pn/f,x11/4,s11,x14/12,pd/b,x3/4,s1,x11/15,pj/p,x3/6,s14,x7/14,s8,x1/12,s5,x11/3,po/c,x14/0,ph/a,x10/6,s10,x4/14,pd/l,x3/11,pc/g,x13/8,s10,x5/6,s1,x14/13,s13,x8/4,s11,x6/2,s4,x13/11,pj/h,x14/10,s11,x9/12,s15,pm/g,x13/5,pb/j,x2/7,s13,pf/k,x15/12,s14,x13/6,s8,x12/9,s13,x11/4,s5,pn/o,x6/10,s1,x3/4,s3,x15/11,s12,pk/p,x12/6,pe/j,x11/5,s12,x4/15,pp/h,s6,x9/5,s11,x13/15,pb/i,x7/5,s7,x6/15,s1,x2/1,pk/o,x7/0,s10,x12/4,s6,x14/15,pf/g,x3/12,pl/n,x0/5,s5,x12/14,pe/h,x7/13,s5,x0/3,pm/c,x2/1,s6,x6/13,pp/f,s8,pb/n,s12,x11/12,s11,x3/6,pm/a,s4,x13/4,s12,x10/14,pp/n,s6,x3/11,pj/c,x6/5,pd/m,x11/13,s14,x12/9,pg/a,x8/11,pl/m,x3/0,ph/j,x4/7,pg/d,s8,x12/5,pe/a,s2,x15/6,s15,x5/1,s4,x14/9,pc/b,x1/3,s4,x5/10,s8,x3/2,pl/m,s6,x10/5,pf/b,x9/2,po/e,x1/3,s13,x12/4,s13,pb/h,x5/1,pi/j,x7/3,s7,x0/9,s11,x10/8,s7,x2/14,pg/o,s14,x4/3,pc/k,x14/12,s1,x9/7,pd/p,x4/11,s13,x3/13,s1,x6/9,pe/n,x2/15,s15,x10/1,s14,x2/11,s7,x13/6,pi/j,x0/2,pc/o,x5/1,s7,x6/2,pg/h,x9/5,pk/c,x14/7,pb/h,x12/6,pc/m,x13/15,s11,x2/0,pl/b,x4/9,pp/k,x8/1,s7,x13/5,s12,x3/14,pl/b,x6/11,pp/k,x10/15,s10,x2/0,pm/g,x4/3,s12,x9/5,pe/n,x8/0,s12,x3/10,s6,x9/0,s7,x4/7,pi/d,x14/13,s3,x11/15,s1,ph/f,x4/9,s8,x12/3,pp/m,x7/1,s15,x0/4,pl/k,x14/5,s13,x0/1,s4,x13/10,s9,x14/1,ph/j,x2/7,s2,x11/5,pf/a,x7/10,s6,x11/3,s1,x7/10,pn/o,x13/9,pe/m,x12/11,pb/c,x4/1,s6,x12/5,s6,pp/f,x7/0,pd/o,x14/2,pc/b,x15/9,s10,x1/3,s5,x15/0,pe/p,x10/2,s3,x14/3,pc/g,x12/11,s5,x7/5,s4,x13/2,po/j,s10,pp/m,x11/10,pg/k,s14,x4/7,pp/b,x9/11,ph/a,x5/4,po/e,x10/0,s14,x8/15,pd/f,x3/12,s11,x4/13,ph/e,x7/1,pp/c,x6/13,s1,x10/5,s3,x1/8,s2,x15/3,pd/k,x1/0,s13,x13/9,s2,x4/10,s13,x12/14,s11,x8/6,s12,x2/4,s13,x9/8,po/l,x10/15,s8,x7/1,s2,x13/11,s3,pn/b,s11,x2/4,s3,x5/6,s7,x8/11,pm/j,x0/7,s5,x9/11,s10,x1/4,pg/d,x13/2,s10,pf/k,x14/1,s7,x11/4,s9,x5/9,s6,x1/13,s4,x6/10,s10,x5/9,s5,x3/1,s12,pm/c,x13/12,s10,x6/11,s5,x12/8,s1,x1/7,s3,x11/12,s3,x6/3,s14,x4/13,s2,x14/0,pp/a,x2/9,pe/k,x10/1,pj/l,x5/8,s2,x15/7,s10,x3/11,s15,x7/6,pg/o,x14/11,pp/l,x3/12,s5,x8/6,s10,x12/11,pg/b,s14,pk/a,x1/14,s4,x9/3,s10,x12/2,pp/o,x1/6,s2,x5/10,s10,x0/1,s11,x14/11,pe/a,x10/15,ph/n,x3/7,pj/m,x15/9,s3,x2/1,s10,x13/12,pd/o,s3,x8/14,s15,x6/2,s12,x14/9,s2,x3/1,s4,pa/k,x12/0,s1,x9/10,s6,pj/c,s5,x8/4,pg/e,x13/12,ph/a,x0/7,s13,x8/3,s4,x14/10,s5,x3/2,pi/o,x6/14,pj/e,x13/9,s2,x6/0,s1,x15/4,pi/h,x5/11,pg/m,x2/12,s11,x13/6,s5,x4/3,s1,x5/1,pc/l,s14,x14/8,pf/h,x9/12,pj/d,x6/8,s15,x13/7,s15,x11/14,pb/f,x5/7,s10,x2/10,s3,x14/4,ph/j,x11/10,s14,x6/3,s13,x1/10,s14,x0/3,s7,x11/10,s15,x8/6,s6,x10/13,pb/l,x3/6,s4,x10/11,s15,x13/12,po/k,x14/2,pb/e,x0/10,s13,x3/14,s6,x0/11,s5,x5/13,po/d,x2/0,pe/g,x3/5,s9,x15/7,pn/i,x12/10,pk/e,x5/6,po/m,x8/13,pl/n,x14/1,s9,x9/6,s3,x2/4,s5,x1/10,s12,x13/2,s11,x1/3,s14,x4/9,pk/p,x5/12,s13,x7/14,s8,x8/6,pm/l,x11/15,s9,x3/4,s6,x10/5,s15,x15/9,pk/o,x1/10,pc/b,x15/11,pe/k,s15,x12/7,s14,x2/6,s7,x4/3,s12,x13/6,s3,x1/11,pj/h,x8/10,s14,x1/5,po/k,x8/2,pa/l,x5/15,pg/n,x6/3,s2,x0/8,pe/d,x6/3,pf/k,x7/15,pc/e,x9/3,s8,x12/15,s10,pf/g,x10/1,pa/n,x6/8,pb/m,x11/1,pf/p,x6/9,s4,x13/2,s11,pg/i,x15/5,s5,x11/13,s14,pm/k,x14/8,s10,x4/10,s6,x15/7,s14,x10/3,s1,x1/4,s12,x11/15,s8,x8/10,s9,x9/11,s8,x8/2,s14,x4/0,s6,x1/11,pc/d,x12/6,pn/a,x10/0,s3,x12/9,s2,x6/13,pm/i,x8/15,s2,x1/10,pb/l,x12/15,s5,x2/7,s6,x10/0,s8,x1/4,s13,x11/15,s3,x0/10,s12,x8/1,s3,x2/5,pg/o,x8/12,pb/e,x1/6,s11,x8/10,pp/f,x11/13,s8,pa/h,x3/6,pk/c,s13,x7/2,s4,x3/10,pj/i,x13/7,s12,x10/9,s15,x7/3,po/c,x6/13,s2,x7/10,s4,x1/9,pb/l,x5/14,s4,x10/3,pk/d,x15/13,s6,x4/9,s11,x6/12,s8,x10/5,s7,x0/6,s3,x4/11,pf/n,x9/10,s5,x13/7,pm/l,x2/12,pe/a,x14/4,s8,x15/8,s14,x14/10,s14,x9/13,s1,x14/4,s6,x8/7,pg/c,x10/12,s6,x7/14,s10,x9/1,pf/m,x6/11,s10,x0/15,s9,x13/4,s3,x7/10,pn/h,x1/6,pd/g,x10/8,pm/k,x11/5,s12,x3/10,s12,x2/0,s13,x8/6,s7,x0/7,pa/j,x1/14,s12,x0/10,pn/g,x2/1,po/d,x13/12,s15,x11/7,s13,x12/0,s3,x14/10,pl/a,x0/9,s6,pm/c,s6,x11/14,s1,x6/0,s1,x9/1,s12,x13/12,s13,x14/3,s7,x8/12,s2,x14/1,s9,x12/15,pp/b,x7/9,s12,x14/3,s6,x10/5,s15,x4/0,s2,x3/11,s8,x0/15,s7,x7/4,pe/j,x1/12,pl/k,x5/4,pe/f,s2,x9/2,s10,x15/12,pm/n,x9/5,pi/h,x4/12,pe/m,x5/2,pj/c,x3/7,s14,x10/12,s8,x13/5,pn/b,x15/11,s3,x1/8,po/m,x12/15,s15,x1/5,pg/d,x9/10,s3,x4/12,s5,x9/15,s13,x14/7,po/k,x2/9,pa/p,x4/6,pk/f,s13,x15/13,s5,pi/l,s11,x1/5,s9,x6/2,pp/f,x9/11,pj/k,x15/1,s2,x2/7,s15,x15/4,s9,pg/b,x11/12,s6,x7/0,s10,x2/8,s12,x5/13,s8,x10/1,pk/m,s6,x4/13,pl/g,x10/0,s4,x12/13,s12,x3/10,pa/h,x5/1,s7,x7/9,s4,x0/8,s4,x3/13,pl/k,x0/2,s6,x4/1,s15,x15/3,s11,x14/0,pd/o,x4/3,pc/a,x14/9,s3,x2/6,pj/f,x10/1,pp/m,s7,x6/5,pg/k,x11/4,s11,x0/1,s13,x3/11,pl/o,x15/5,pb/e,x9/6,s14,x8/4,pa/p,x10/6,pn/j,x9/1,s10,x0/6,pk/m,s8,x15/13,pb/l,x3/12,pp/k,x8/2,pn/l,s6,pd/j,x5/6,pc/a,x1/11,po/l,s7,x10/4,pb/i,x13/2,s1,x9/8,s1,x3/0,ph/c,s15,x4/8,pm/i,x5/2,pa/e,x15/10,s3,x11/9,pk/o,x3/10,s7,x6/12,s10,x0/1,s8,x11/13,s8,x9/12,s8,x0/8,s8,x10/6,pi/p,x14/3,pb/c,x2/0,s4,x7/9,s15,x8/3,pj/p,x12/0,s6,x1/10,s10,x8/12,pm/d,x11/5,s3,x12/3,s4,x1/14,s3,x13/3,pj/l,x6/9,pb/k,x15/11,s13,x13/6,s5,x11/3,s10,x0/6,po/j,s13,x1/9,pi/g,x6/14,pl/h,x13/10,s5,pi/c,s3,x1/14,pl/b,s5,x6/5,s1,x4/9,s7,x3/10,s9,x2/0,s3,x5/14,s10,pj/c,x3/11,s9,x15/10,pl/n,x9/3,s14,x13/8,pb/d,x15/11,pp/f,x13/5,pl/j,x6/8,s14,x4/9,s7,x0/15,pp/i,x13/2,s4,x8/14,s14,x1/0,pf/n,x2/6,pj/b,x1/3,pm/p,x0/9,s2,x12/2,pc/d,x10/9,pi/f,x2/6,s5,x9/14,pp/h,x15/3,pf/n,x0/11,pl/j,x9/14,s8,x5/8,pd/g,s2,x12/15,s2,x5/4,s13,po/k,s1,x3/9,s11,x4/14,s8,pi/m,s12,x15/10,s7,x7/12,s9,x2/8,s13,x7/6,pn/e,x10/13,s3,x11/5,s4,x12/13,s6,x2/1,s1,pj/g,s2,x5/8,s7,x14/0,s13,x4/1,s10,x3/11,s9,pp/f,x1/12,pj/l,s8,x5/7,s2,x9/4,s1,x7/11,s13,x4/8,pe/m,x2/15,s13,x14/1,po/c,x9/3,s11,x7/0,s15,x2/11,s7,x1/7,s7,x3/15,s14,x10/6,s1,x15/0,s9,x12/11,pm/b,x2/7,pa/e,x4/11,s8,x15/2,pn/g,x14/0,s8,x12/13,s2,x10/4,pf/i,x11/0,s8,po/p,x7/9,pd/b,s10,pa/g,x2/15,s11,x7/5,s4,x3/11,pp/b,x5/15,pg/j,x13/14,s15,x2/0,s10,x14/3,pd/a,x13/6,s14,x11/7,s15,x8/5,s15,x4/12,pl/p,x11/2,s12,x15/6,s6,x9/12,s13,x13/3,s11,x2/8,s14,x1/10,pf/n,x3/4,s5,x14/15,pa/c,x3/4,s6,x14/15,s11,x2/11,pl/d,x4/6,s6,x12/9,pk/a,x3/4,pf/i,x5/15,s10,x2/10,pj/c,x5/12,s8,po/e,x14/1,pg/a,x10/2,s8,x14/0,pk/d,x9/7,s6,x1/14,s9,x3/9,s7,x2/13,pm/o,x12/0,s12,x7/14,pg/k,x1/10,pp/o,x2/6,pb/l,s5,x5/13,pc/g,x8/11,s5,pl/m,x13/6,pf/c,x0/9,s1,x11/8,s9,x2/14,pi/a,x8/1,s4,x11/7,pp/j,s7,x4/12,s2,x3/6,s11,x13/8,s11,x1/3,s15,x2/9,pg/l,x6/0,pm/f,x3/12,s4,pp/g,x14/15,pm/a,s4,x0/13,pp/n,x3/12,s6,x0/2,s4,x4/8,po/b,x15/5,s5,ph/d,x9/2,pm/b,x4/11,s10,pj/h,s5,x15/3,pi/c,x12/6,s5,x13/3,s8,pe/b,x8/7,ph/a,x13/4,pl/o,x2/8,pk/j,x14/4,pb/m,s6,x1/3,pn/k,s12,x4/9,pj/i,x15/14,s14,x0/11,s15,x6/13,s1,x14/8,s1,x6/12,s15,pe/n,x0/3,s7,x1/9,s9,x15/13,s4,x4/2,pi/a,x1/12,pc/j,x2/15,s4,x13/9,pm/k,x0/3,pl/a,x6/4,pd/e,x2/12,s3,x13/4,s2,x2/11,s5,x13/12,ph/k,x4/14,pa/b,s14,x15/2,po/k,x12/3,s4,x5/4,s10,x12/6,s4,ph/c,x1/15,pd/p,x0/13,s13,x15/1,pb/n,x0/14,s2,x1/15,s10,x11/10,s2,x15/14,s13,x8/1,pf/h,x0/15,s10,x7/3,s7,x10/13,s1,x15/3,pl/o,x13/7,pj/h,x4/14,pl/n,s8,x8/6,pa/d,x2/15,s13,x7/3,pe/i,x0/14,s9,x9/12,s13,x6/7,s12,pm/a,x15/13,s2,x9/8,pd/n,s1,x3/1,s9,x5/9,s4,x12/4,s2,x15/8,s6,x11/6,pg/i,x9/7,s14,x14/4,pp/o,x0/3,s1,x1/9,pj/b,x6/7,pd/f,x5/10,pg/m,x11/2,s11,x0/14,s15,x13/15,s14,x12/9,pf/c,s5,x0/6,s6,x14/11,ph/g,s11,x3/4,pl/k,x10/12,s8,x15/5,s11,x12/9,pi/h,s1,x3/14,pg/p,x6/5,s10,x3/4,s11,x1/10,pk/d,s10,x5/9,pe/p,x14/6,s10,pb/m,x0/10,s3,x6/7,pf/o,x9/3,s14,ph/m,s2,x15/6,pn/a,x4/13,pc/l,x14/2,s14,x3/13,s9,x8/0,po/m,x7/6,pp/j,x12/15,s3,x1/9,s10,x5/8,s6,x6/13,s5,x5/1,pd/a,x2/12,s11,x8/3,s8,pp/m,x11/0,s6,x2/14,s15,x12/13,s15,x9/8,s13,x15/12,s6,x14/8,s9,x9/2,s3,x14/7,s12,x1/11,s4,x13/2,s5,x12/10,s14,x1/8,pe/a,x0/4,pi/o,x5/10,s2,x0/3,pd/f,x1/14,pb/c,x10/2,s3,x0/13,s14,x14/2,s7,x13/7,s13,x12/11,pf/a,x14/1,ph/m,x8/11,s12,x13/5,pn/p,x1/8,s7,pd/l,x12/4,s4,x10/6,s3,x7/5,s6,pn/j,x12/13,pe/f,x4/10,pd/g,x6/14,ph/p,x5/13,s3,x15/1,s14,x7/2,pb/a,x4/13,pc/o,x5/6,s10,x12/15,pe/j,x4/6,s15,x9/13,s10,pg/h,x3/11,s8,x9/6,s11,x0/12,pm/a,s2,x2/7,s13,x11/12,s5,x2/13,s8,x5/14,s3,x3/13,s6,x4/6,pe/o,x3/10,pm/g,x0/12,s8,x8/9,s9,x13/14,s5,x8/3,s11,x5/7,pk/d,x14/6,s10,x4/1,s9,x7/12,s9,x9/3,pm/p,x15/10,s11,x6/0,s3,x8/2,pg/l,x6/7,pf/a,s10,pi/e,s3,x4/0,s12,x13/3,s1,x2/5,pm/b,x0/9,s8,x15/4,s9,x11/3,pe/j,x7/2,s4,x13/0,s10,x11/6,pa/p,x3/4,pf/o,x10/1,s2,x12/6,pd/a,x9/1,pg/e,x0/13,s4,x14/10,s12,x13/1,pk/p,s11,x6/9,s9,x12/11,pf/e,x3/0,ph/g,x12/2,pf/m,x3/15,pk/n,x1/10,pc/d,s13,x7/3,s11,x2/8,s2,x1/12,pg/n,x14/9,pm/h,x6/1,s11,pk/p,x5/3,s13,x8/10,s10,x9/5,s2,x3/15,s9,x8/9,s12,x4/10,s1,x2/8,s1,x12/3,pl/g,x5/7,pa/j,x3/4,s12,x8/2,s2,x0/4,pk/d,s9,x8/12,po/f,x7/3,pi/p,x15/1,s10,x14/2,s9,x13/12,s11,x9/7,s7,x1/3,pj/a,x8/14,s15,x10/12,pg/f,x9/11,s9,x7/3,pp/c,x2/1,pm/l,x9/14,po/k,x12/8,s11,x1/15,s6,x8/12,pl/m,x6/3,s2,x2/0,s7,x4/9,s9,x1/10,pj/n,x11/13,pd/b,x9/8,s12,pc/m,x14/15,pf/p,x8/11,s14,x3/13,s12,x6/2,s15,x7/13,pm/j,x3/6,s9,x10/5,s7,x2/4,s12,x14/9,po/d,x8/10,s12,x14/4,s10,x7/13,s10,x1/8,s4,x10/4,pa/g,x2/14,s8,x6/11,pi/d,x3/0,s13,x5/10,pj/l,x15/13,s10,pa/f,x1/2,pb/e,s10,x14/6,s5,x3/5,pm/g,x4/1,pn/p,x2/14,s4,x12/15,s12,x7/13,s1,x11/3,pg/l,x8/1,s8,x7/6,pk/d,s11,x5/11,s14,x10/2,pp/e,x6/4,pd/m,x0/15,pj/o,x4/7,s2,x10/8,s1,x14/2,s10,x11/12,s9,x6/4,s9,x9/15,s4,x10/13,ph/p,x0/1,pa/g,s3,x4/3,pf/k,x14/0,pe/j,x10/13,s7,x9/2,s4,x3/5,s8,x12/1,pa/p,x10/2,pn/d,x8/5,s13,x13/4,s7,x2/3,pi/b,x8/4,pp/k,s1,x9/2,pd/e,s5,x8/7,s3,x11/12,po/j,x0/15,pk/m,x1/6,po/f,x11/3,s1,x8/9,pa/j,x12/5,pb/k,s9,x14/15,s6,x6/12,s8,x1/11,s6,x3/12,pd/e,x5/0,po/h,x11/4,s13,x14/7,s11,x5/3,s8,x12/2,s10,x15/5,s13,x3/14,s1,x11/1,s3,x13/5,s7,x8/0,s13,x4/6,s15,x7/11,s1,x15/3,s13,x4/7,pe/k,s3,x11/6,pn/j,x10/0,pp/l,s13,x7/1,s1,x0/11,pb/g,x1/8,s3,x15/3,s5,x2/13,pf/m,x15/1,s13,x0/13,pd/i,s4,x10/4,pa/n,s6 diff --git a/src/main/resources/2017/day17.txt b/src/main/resources/2017/day17.txt new file mode 100644 index 00000000..9346fabb --- /dev/null +++ b/src/main/resources/2017/day17.txt @@ -0,0 +1 @@ +314 diff --git a/src/main/resources/2017/day18.txt b/src/main/resources/2017/day18.txt new file mode 100644 index 00000000..20386caa --- /dev/null +++ b/src/main/resources/2017/day18.txt @@ -0,0 +1,41 @@ +set i 31 +set a 1 +mul p 17 +jgz p p +mul a 2 +add i -1 +jgz i -2 +add a -1 +set i 127 +set p 464 +mul p 8505 +mod p a +mul p 129749 +add p 12345 +mod p a +set b p +mod b 10000 +snd b +add i -1 +jgz i -9 +jgz a 3 +rcv b +jgz b -1 +set f 0 +set i 126 +rcv a +rcv b +set p a +mul p -1 +add p b +jgz p 4 +snd a +set a b +jgz 1 3 +snd b +set f 1 +add i -1 +jgz i -11 +snd a +jgz f -16 +jgz a -19 diff --git a/src/main/resources/2017/day19.txt b/src/main/resources/2017/day19.txt new file mode 100644 index 00000000..925ae881 --- /dev/null +++ b/src/main/resources/2017/day19.txt @@ -0,0 +1,201 @@ + | + +-+ +---+ +---+ +-----------------------------------------|---+ +---+ +-------------------------------------+ +-------------------+ + | | | | | | | | | | | | | | | + +-------------------|-------|-------------+ +---|-------------------------------+ | +---------------------------------+ | | | + | | | | | | | | | | | | | | | | | | | + | | | | +---|---|---|---------|---------------------+ | | | | | | +---+ | | | | + D | | | | | | | | | | | | | | | | | | | | + | | | | +---|---+ | +---|-------------+ | +-+ +-|---|---------------------------|---------------------+ | | | | | | +---------+ | + | | | | | | | | | | | | | | | | | | | | | | | | | | | + | +-|---------|---|-------+ | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | + | +-|---------|---------------|-----|---|---------------------|---|-----|---|--------------------F------------------------------+ +-----------------+ | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | + | +-|-----+ | | +-|---|---|-----|---|---------------------|-------|---------------------------------------------+ | | | | | | | +-+ +---------+ | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | +-|-------------------------|---------+ | +-------------------|-----------|-----|---+ +-------------+ +-+ | | +-----------+ | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | +---|---|-----|-----------------------------+ | | | | | | | +-|---|-+ | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | +-------|-|-------|---|-|---|-------------|-----------|---------|---------------------------|---------+ | +---+ | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | +---------|-|-|-------+ | | | | | +-------|-----------------|-------------------|---------|-|-----------------|-|---------|-|---|-----------------+ | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | +---------------|-----------------------+ | | | | | | | | | | +-|---|-|-----------|-|-------|-------|---------|-+ + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | +-----+ | | | +-----------|-----------------|---|-|-----------------------|-----------------------------|-------------------|-------------|-------------------|-------|-----+ | | +-+ + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | +-----------------------------------|-|---+ +-+ +-----|---------------------------|-----------|-----------------|-|-----------------------------|-|-|-----------|-|-------|-+ | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | +-+ | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | +-|-------------------------|-|-------+ | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | +-------|-|-|-----------|-----|-+ | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | +-+ | | | +-----+ | +---|---|-----------------|-|---|---|-------|-------|-------------------|---------------------------+ | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | +-----------------------+ | | +---------|-----------|---------+ | | | | +---|---------+ | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | J | | | | | | | | | + | +---|-|-----|-------+ | | | | | | | +-+ | | | | | | | +-|-----------|---------------|---------------|-----------------------------|-------+ | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | +-------|-------------------------+ | | | | | | | | | | | | | | | +---+ +-----|-|-----+ | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | +---|---+ +---------------------------------+ +-----|---|-------|---|-------------------|-|---|-----+ | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | +---|-------|-|---|-|-------|-------|---|-----------------------|-------------------|-----------|-----------------|-----------------|---------------|---|-----------------|-----------+ | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-------------|-----|-------------------|-----+ | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-----|---|-|-----------|-+ | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | +---------------|-|-------------------|-------------------|-------|-|-----------------------------------|---|---+ | | +-|---------------------|---|-+ | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | +---+ | | | | | | | | | | | | | | | | | | | | | | +-|-|---|---|-----|-------|---|-------------+ | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | +-|---------|---|---------+ | | | | +---------|-----------|-------------------|-|-----------------------|-----------|-------|-|-------|---|-------|-------+ | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | +---------|-|-------------+ | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | +---------|---------------------|-------------------|---------|-----------|-------|-|---------|-------------------|-----|---+ +---|-----|-|-|-+ +-------+ | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | +---------|-|-------|-|-----------------|-----------|---------|---------------------------------------------|-----------|-----------|-----+ | | | +-|-+ | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | +-------------|-----+ | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +---------------+ | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | +-|-----+ +-------|-|-|-|-----|-----|-------|---|---------------------+ | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | +-------------|-|---------------------------|-|-----|-----|-----|-----+ | | | | +-|-+ | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | +-------|-------------------|-|-----------------------|---|-|-----|-------------------|-------|-------------------|---|---------------+ | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | +---------------|-------------------------|---|-|-----|-----------|-------|-|-|-+ | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | +-|---|-----------|-|---|-----------|---|-|-----------|-|-------|-----|-----|-------|-|---------|-----------------|-|-----|-----|-------------|-----------|---|-------|-+ | | +---------+ | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | +-----|-------------------------------|-|---------+ | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | +-------------|-------------------------|-----|-----|-----|---------------|-|-|-|---|---|-------|---|---|-----------+ | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | +-|-------|-|---|---|-----------+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | +-----|---|-----------|-|---------|---|-------|---------------------------------|-----|-------------------------|-|-|-|-|---|---|---------|-----|-----------|-----+ | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +-----|-|-----|-----------------------|-----|---|-----|-|-|-------------------|-------|-------------------------|---|-|-----------|-----|---+ | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | +---------|---|-|-+ | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +---|-----------|-|-|-------|---+ | | | +-------|-+ | | | | | | | | | | | | | | +---|-|---|---|---|-----+ | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +---+ | | | | | | | | | +-+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | +---+ | +-|-----|---|-|-----|---------------------|-|---------------------|---------|-----------------------|---|-------|-----------|-------|-|---------|-----------|-------|-------+ | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | +---|-----|-|-------|-|---------------|-|-----------|---------+ | +-------|-|-------------|-------------|-------|-----|-----|-+ | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | +-----------|---+ | | | | | | | | | | | +-|---------|---|-------|-----|-----|-|---|-|-|---|-------------------|-|-------------+ | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | +-------|---------|-------------|-----------------------------|---------------|---------------------|-----------|-|-|-|-|-|-|-----------|-|-----|-----------+ +-|-+ | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | +---|---------------------|-|-------------|---------------+ +-----------|-----------|---|-|-|---|-----|---------|-|-|-|-|-|---------------+ | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +-|-----|-----|-----------|---------------|-|---------|-|-------------|---------+ +-----------|-|---------|-----|-|---------|-----|-|---|-------|-|-----------------|-----|-----------|-|-+ | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | +-------|---------|-|-------------|-----------------------------|---+ | +-|-|---------------|-----|-------|-|---+ | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | +-|-----+ | | | | | | | | | +---|-----------------------------|-----------------|-|---------------|---------------------+ | | | | | | | | | +-+ | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-----+ | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | +-|---------|-----+ | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | +-----------+ | | | | | | | | | | | | | | | | | | | +-|-------+ | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | +---+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | +-------|-------------|--------------O----|-|---------------------------|-------|-|---|-|-|-------+ | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | +-|-+ | | | | | +-----|-------+ | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | +-|-----------------------|---------+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | +---|-------------------------------+ | | +-----|-----------|-----------------|-----|-+ | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | +---|-------------------------------------|---|-----|---|---|-|-|-----------+ | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | +-----------|---------|---|-------|-------------|---------------|---|---|-------|-------|---------|-----------|-|---|---|-|-|-+ | | | | +-|-----------|-+ | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | +-|-------------------------|---------------|-------|---------------|-------+ | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | +---------|---------|---------|-+ | | | | | +-|-------------------|-----------|-------|-------|-|-------|---|---|-|---|---|---+ | | | | | | | | | | | + | | | | | | U | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +-|---+ | | +---------|---|---------|-------+ | | | | | | | | +-----------+ +---|---------------------------------|-----|-----------------|-----------------|-----------|-+ | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | +-|-------|-------------|-|---+ | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | +-------------------|-----|-|-------|-|---|-------------------|-|---------------|-|---------------------|---|-------------+ | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | +-----------|---------+ | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | +-|-|-|-------|-----|---+ +---|-+ +---|-----|-----------------------|---|-------------------------|-----------|---|-|-----------|-|-------|-+ | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | +---+ | | | +-|-----------|-------------|---------------|-|-------------|---------------|-----------+ | | +-+ | +-------|-------------+ | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +-|-----|-|---|-----------|---------|-|---|-----------|---|-------|-------------|---------------|-----+ | | | | +-|-+ | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | +-----|-------|---|---|-----+ | | | | +-|---|---------------------------|-----------+ | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | +-------|-----|-----|---|---------|-------------|-----------|-|-|---|---------|-----|---------|---------+ | | | | | | | | | +-----------------------------+ | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | +---|---------|-----|---------+ | +-|--------------T------|-|---|---------|-----+ +-------|-----------|---|-----------|-----------|-+ | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +-|---|-------|-----------|---------|-----------------|-----------|---------------|---|-------------------------|-------|-----|---|-----------+ | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | +-|-|-------------|-----+ +---|-------+ +-+ | | | +-------|-----------|---------|-------|---------|---------|-+ | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +---------+ | | | | | | | | | | | | | | | | | | +-----------|-------------|-+ | | +-------|-------|-------------------------|-+ + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +-+ | | | | | | | | | | | | | | | | | | | | +---------|---|---|---------|-|-|-----------------------+ | +-------|-+ +-+ + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | +---+ | | | | +-|---------------------|-|-------------|-----|-----------------------|-----|---------------------|-------+ | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | +-|---------|---------------|-----+ | | | +-------------------|-----|-----+ +-------|---|---|-|---------|---------|---------------|-|-+ | | + | | | | | | | | | | | | | | | R | | | | | | | | | | | | | | | | | + | | | | | | | | +---------------------------|-----|-------------|-----------|-----------------|-|---|-----------|-------|-----------------|-|---------------|---------+ + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | +-|-------|---------|---------------------------|---|-------|-------------------|---------|-------------------------+ +---|-+ +---|-+ | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +-------|-------|---------|---------------------------------------|---------|-----|-------------------|-+ | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | +-------------------------------------------|-+ +-----+ | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | +-----------------------------+ | +-------+ +-|---+ | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | + | +-------|---------|-----------|---------+ +---|---+ | | | | +-------+ | | +-------|---+ | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | + +---------------|-------------------------|-------|---|---|---------------------|-|---+ +-----------|A------------------------------|-----------+ | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | + | | | +-|-----------------------+ | +-----------------|---+ +---------------------------------------+ | | +-+ +-------------------------+ | | | | + | | | | | | | | | | | | | | | | | + +---+ +---+ | | | +-------------------|---------------------------------------------------------------------------+ | | | | | | | + | | | | | | | | | | | | | | | | | + +-----------+ | | | | | | | +-----------------------------------------+ | +-|-------------------------------------------+ + | | | | | | | | | | | | | | | | | + +-+ | +---------|-------+ | | +---------------------------------------------------------------+ +-----------------------------------------------------------------+ + | | | | | | | | | | | + Q-+ +---------------+ +-----------+ +---------------------------------------------------------------------------------------------------------------+ +-+ +---------------+ + diff --git a/src/main/resources/2017/day2.txt b/src/main/resources/2017/day2.txt new file mode 100644 index 00000000..ce281f3c --- /dev/null +++ b/src/main/resources/2017/day2.txt @@ -0,0 +1,16 @@ +5806 6444 1281 38 267 1835 223 4912 5995 230 4395 2986 6048 4719 216 1201 +74 127 226 84 174 280 94 159 198 305 124 106 205 99 177 294 +1332 52 54 655 56 170 843 707 1273 1163 89 23 43 1300 1383 1229 +5653 236 1944 3807 5356 246 222 1999 4872 206 5265 5397 5220 5538 286 917 +3512 3132 2826 3664 2814 549 3408 3384 142 120 160 114 1395 2074 1816 2357 +100 2000 112 103 2122 113 92 522 1650 929 1281 2286 2259 1068 1089 651 +646 490 297 60 424 234 48 491 245 523 229 189 174 627 441 598 +2321 555 2413 2378 157 27 194 2512 117 140 2287 277 2635 1374 1496 1698 +101 1177 104 89 542 2033 1724 1197 474 1041 1803 770 87 1869 1183 553 +1393 92 105 1395 1000 85 391 1360 1529 1367 1063 688 642 102 999 638 +4627 223 188 5529 2406 4980 2384 2024 4610 279 249 2331 4660 4350 3264 242 +769 779 502 75 1105 53 55 931 1056 1195 65 292 1234 1164 678 1032 +2554 75 4406 484 2285 226 5666 245 4972 3739 5185 1543 230 236 3621 5387 +826 4028 4274 163 5303 4610 145 5779 157 4994 5053 186 5060 3082 2186 4882 +588 345 67 286 743 54 802 776 29 44 107 63 303 372 41 810 +128 2088 3422 111 3312 740 3024 1946 920 131 112 477 3386 2392 1108 2741 diff --git a/src/main/resources/2017/day20.txt b/src/main/resources/2017/day20.txt new file mode 100644 index 00000000..6f99fed7 --- /dev/null +++ b/src/main/resources/2017/day20.txt @@ -0,0 +1,1000 @@ +p=<-1021,-2406,1428>, v=<11,24,-73>, a=<4,9,0> +p=<-181,-26,548>, v=<11,73,-8>, a=<0,-7,-2> +p=<-2101,-2706,-1112>, v=<-19,-66,75>, a=<12,19,-2> +p=<-1221,-16,-1412>, v=<0,-1,-15>, a=<6,0,8> +p=<1009,-716,-1062>, v=<-164,55,125>, a=<11,-2,-7> +p=<-671,1794,-1062>, v=<46,87,41>, a=<-1,-17,1> +p=<255,-544,641>, v=<-21,93,-83>, a=<-1,-7,4> +p=<-945,-1004,-29>, v=<88,106,-38>, a=<1,-1,8> +p=<-1045,-644,-949>, v=<76,114,98>, a=<5,-9,0> +p=<640,956,741>, v=<-21,-79,-49>, a=<-8,-3,-4> +p=<230,461,-54>, v=<-35,-46,-8>, a=<2,0,3> +p=<-250,596,-354>, v=<-31,-87,-22>, a=<10,5,11> +p=<815,-779,-1364>, v=<-22,78,134>, a=<-11,0,1> +p=<-175,841,-459>, v=<55,-84,93>, a=<-7,0,-8> +p=<349,-2471,-1471>, v=<-29,111,4>, a=<1,3,8> +p=<-443,2236,5>, v=<53,-46,17>, a=<-3,-8,-2> +p=<-1658,634,20>, v=<149,5,-92>, a=<-3,-8,13> +p=<786,-822,-175>, v=<17,131,-7>, a=<-11,-10,3> +p=<-1151,1323,-84>, v=<-9,-118,35>, a=<14,2,-4> +p=<1163,-237,-578>, v=<-117,93,24>, a=<4,-11,3> +p=<1273,28,-590>, v=<-105,-68,57>, a=<-2,11,0> +p=<-1400,-170,-678>, v=<108,52,35>, a=<3,-6,5> +p=<1504,-720,-1767>, v=<-144,0,80>, a=<1,11,14> +p=<624,622,-1206>, v=<-64,-20,59>, a=<1,-6,9> +p=<-102,-412,1258>, v=<14,38,-63>, a=<-1,0,-8> +p=<-1477,-390,488>, v=<79,102,31>, a=<9,-11,-12> +p=<5988,-431,13>, v=<-177,-45,62>, a=<-6,5,-5> +p=<4236,853,1285>, v=<-54,-11,109>, a=<-10,-2,-13> +p=<1248,-755,1921>, v=<-42,81,-30>, a=<-1,-4,-4> +p=<-3756,-1103,-1391>, v=<54,-17,58>, a=<8,5,0> +p=<-4296,-215,1249>, v=<-36,-29,-2>, a=<17,3,-4> +p=<-2088,-2183,2257>, v=<72,3,-44>, a=<1,7,-4> +p=<348,3397,-3599>, v=<-42,-117,0>, a=<2,-2,12> +p=<-1416,4645,-407>, v=<44,-44,-83>, a=<1,-12,8> +p=<-2700,2065,-11>, v=<85,26,88>, a=<2,-9,-7> +p=<4572,4273,601>, v=<-93,-91,-50>, a=<-8,-7,2> +p=<6937,1685,-3884>, v=<-121,-76,16>, a=<-17,0,14> +p=<722,288,-2267>, v=<-34,-93,92>, a=<0,7,1> +p=<5001,112,3310>, v=<-102,53,-58>, a=<-11,-5,-8> +p=<-686,-4882,76>, v=<7,96,20>, a=<2,11,-2> +p=<-3260,-3958,384>, v=<32,54,-132>, a=<10,11,10> +p=<84,1894,3046>, v=<110,-28,-92>, a=<-10,-5,-4> +p=<2592,-2814,1946>, v=<-50,48,-88>, a=<-6,7,0> +p=<-213,-1571,-3257>, v=<43,-43,-1>, a=<-3,10,13> +p=<524,2169,1462>, v=<-2,-98,-66>, a=<-2,0,0> +p=<-1885,-2781,1506>, v=<73,127,-45>, a=<1,0,-2> +p=<-996,3744,-5856>, v=<-150,-41,96>, a=<9,-3,3> +p=<-1794,1483,13030>, v=<-12,-40,-128>, a=<3,0,-11> +p=<-10230,4485,5848>, v=<93,-2,-17>, a=<9,-6,-7> +p=<420,1686,-809>, v=<-23,-136,93>, a=<0,4,-5> +p=<-2351,-4485,-2475>, v=<131,164,110>, a=<1,11,4> +p=<2392,-2853,3985>, v=<-121,86,-126>, a=<-2,9,-12> +p=<437,632,-2356>, v=<-186,-2,85>, a=<18,-4,6> +p=<2817,-2054,1129>, v=<-83,12,-48>, a=<-9,12,-2> +p=<-1122,1614,2284>, v=<108,-33,-86>, a=<-5,-6,-4> +p=<-1140,-4209,295>, v=<-5,167,34>, a=<7,7,-5> +p=<-1671,-2589,-3872>, v=<34,39,142>, a=<6,11,8> +p=<-708,-1725,-38>, v=<-10,-9,-33>, a=<5,11,4> +p=<147,399,3715>, v=<9,-32,-118>, a=<-2,1,-9> +p=<1785,-384,997>, v=<-63,97,-43>, a=<-4,-8,-1> +p=<-1302,-132,1996>, v=<99,-12,44>, a=<-3,2,-16> +p=<2541,-1203,1069>, v=<66,0,-66>, a=<-22,7,1> +p=<435,1713,1771>, v=<-7,-124,-10>, a=<-2,3,-9> +p=<-2698,-5379,-1198>, v=<35,70,-43>, a=<2,4,4> +p=<-7619,-717,3279>, v=<73,39,83>, a=<7,-1,-9> +p=<-484,-2306,-875>, v=<-43,65,6>, a=<8,8,5> +p=<-1147,1383,-2388>, v=<-4,-80,23>, a=<8,0,13> +p=<-212,-4618,2848>, v=<49,147,-15>, a=<-4,14,-17> +p=<2151,-402,4089>, v=<-72,70,-97>, a=<-6,-5,-16> +p=<2695,3661,1998>, v=<-86,-133,-82>, a=<-8,-9,-4> +p=<1981,992,1284>, v=<19,-48,-49>, a=<-15,-1,-3> +p=<2151,1740,366>, v=<-54,-38,-103>, a=<-8,-7,9> +p=<2661,1961,-824>, v=<-111,-6,-24>, a=<-5,-12,8> +p=<-1167,977,-542>, v=<-13,-25,-43>, a=<8,-3,8> +p=<660,950,-605>, v=<-86,-71,27>, a=<5,2,1> +p=<-1419,1229,-1244>, v=<20,-115,91>, a=<6,5,-2> +p=<-1851,-85,2518>, v=<44,91,-61>, a=<6,-9,-8> +p=<-1261,4127,-1342>, v=<-43,-148,-12>, a=<6,0,4> +p=<-323,-8711,-1202>, v=<-4,122,-17>, a=<1,13,4> +p=<-4355,3693,2732>, v=<24,-60,-85>, a=<9,-5,-1> +p=<1553,-2551,-376>, v=<-71,18,55>, a=<1,5,-3> +p=<1175,1621,3054>, v=<15,-44,5>, a=<-4,-1,-8> +p=<-771,-3783,72>, v=<41,4,-48>, a=<-1,9,3> +p=<-561,-2929,-992>, v=<19,-12,-10>, a=<0,8,3> +p=<-5321,81,618>, v=<44,98,-53>, a=<10,-7,2> +p=<-1361,-1168,-1743>, v=<106,60,62>, a=<0,4,10> +p=<-438,-1051,-1028>, v=<0,72,42>, a=<5,1,5> +p=<-1348,41,-1>, v=<91,-75,19>, a=<2,10,-3> +p=<-477,769,1052>, v=<24,-47,-69>, a=<2,-2,-2> +p=<-919,-388,-781>, v=<72,7,30>, a=<0,3,4> +p=<-633,-336,675>, v=<106,-18,-19>, a=<-8,6,-5> +p=<-230,-271,259>, v=<5,19,-29>, a=<2,0,1> +p=<1408,-349,-612>, v=<-44,46,-32>, a=<-9,-3,11> +p=<-1452,847,-1262>, v=<113,-18,46>, a=<0,-7,7> +p=<91,-1183,-4776>, v=<15,-69,89>, a=<-1,6,3> +p=<-7763,5209,2551>, v=<106,-82,-74>, a=<7,-4,0> +p=<-3275,4903,-1614>, v=<79,67,-144>, a=<1,-12,11> +p=<-1388,-3495,-2617>, v=<-134,104,78>, a=<10,0,0> +p=<-5672,-3801,-662>, v=<62,8,3>, a=<6,6,1> +p=<1035,-5126,-1612>, v=<-67,50,-126>, a=<2,11,14> +p=<580,-615,1924>, v=<-63,-83,-46>, a=<3,8,-2> +p=<2049,1101,3055>, v=<-25,13,-49>, a=<-4,-4,-5> +p=<5091,-1187,-156>, v=<-115,-7,7>, a=<-6,4,0> +p=<-18,-4398,-2821>, v=<-40,-5,96>, a=<3,13,1> +p=<-486,3285,-5473>, v=<59,-44,144>, a=<-3,-6,5> +p=<-2462,1309,923>, v=<-54,-49,6>, a=<11,0,-3> +p=<320,4533,-3913>, v=<-53,-65,84>, a=<3,-8,5> +p=<3180,1153,6487>, v=<26,-16,-100>, a=<-11,-2,-11> +p=<-581,-3794,236>, v=<-43,72,19>, a=<7,11,-3> +p=<-1231,-2234,1536>, v=<-126,36,-25>, a=<18,7,-5> +p=<-2001,2066,1196>, v=<112,-95,-71>, a=<-1,-1,1> +p=<1719,-2804,3646>, v=<-32,33,-36>, a=<-5,10,-14> +p=<-41,1856,866>, v=<14,31,40>, a=<-1,-12,-8> +p=<-3241,-354,-3044>, v=<111,26,183>, a=<5,-1,-3> +p=<549,-1024,-2094>, v=<-110,49,146>, a=<8,0,-4> +p=<6554,-2720,-1361>, v=<-73,-47,28>, a=<-8,8,1> +p=<-2966,1552,4415>, v=<43,-98,95>, a=<3,3,-14> +p=<-870,-1840,-10081>, v=<-105,8,119>, a=<8,3,12> +p=<-118,1168,863>, v=<-13,46,-25>, a=<1,-5,0> +p=<-12374,1200,4303>, v=<106,12,82>, a=<17,-3,-13> +p=<-5974,-3440,10463>, v=<-28,58,-94>, a=<13,3,-14> +p=<3418,4384,-2673>, v=<-74,28,36>, a=<-2,-10,3> +p=<1322,2208,-1889>, v=<-25,-3,61>, a=<-1,-4,0> +p=<3114,6272,-3569>, v=<18,2,64>, a=<-7,-12,3> +p=<-2617,-3668,-2074>, v=<205,-99,-101>, a=<-7,10,8> +p=<-4707,1120,12290>, v=<65,9,-11>, a=<3,-2,-16> +p=<-7500,-11211,-6729>, v=<-37,41,119>, a=<12,13,3> +p=<4014,-11021,5602>, v=<11,153,48>, a=<-6,7,-10> +p=<1354,-1578,-3423>, v=<81,2,-85>, a=<-6,2,9> +p=<9714,-2167,-1770>, v=<-22,-41,8>, a=<-12,5,2> +p=<-6265,-2376,9022>, v=<67,23,-42>, a=<5,2,-10> +p=<4432,-115,-6938>, v=<-117,-95,-51>, a=<0,5,12> +p=<394,4626,3880>, v=<1,-184,-16>, a=<-1,1,-9> +p=<6847,1062,-2654>, v=<-196,46,-68>, a=<-4,-6,12> +p=<637,2034,-3113>, v=<-50,-172,117>, a=<2,7,0> +p=<-6049,-10384,-3497>, v=<46,69,-38>, a=<10,18,10> +p=<-8554,6566,88>, v=<21,-217,-49>, a=<17,0,3> +p=<-5239,-1084,-1997>, v=<-74,69,5>, a=<16,-2,4> +p=<1301,-3604,-3527>, v=<-106,-33,-37>, a=<4,10,10> +p=<-379,5021,943>, v=<12,5,62>, a=<0,-11,-6> +p=<-319,2486,1423>, v=<10,12,-47>, a=<0,-6,0> +p=<-3034,1346,-1607>, v=<-70,-43,23>, a=<11,0,2> +p=<-3004,-1063,-3803>, v=<7,110,-8>, a=<7,-5,10> +p=<5172,2423,-1535>, v=<-24,0,-2>, a=<-11,-6,4> +p=<-4502,71,-1437>, v=<162,-3,38>, a=<0,0,1> +p=<-6952,687,-1871>, v=<32,-83,-48>, a=<15,4,8> +p=<4000,4104,-2139>, v=<129,-58,-99>, a=<-17,-5,11> +p=<8065,-9456,-8259>, v=<-22,84,-19>, a=<-16,15,19> +p=<-10007,-68,2480>, v=<34,-45,32>, a=<18,3,-7> +p=<1866,10937,7440>, v=<-61,-96,48>, a=<0,-16,-18> +p=<595,3001,6510>, v=<-148,32,-34>, a=<8,-8,-11> +p=<6020,-5710,5022>, v=<-3,41,-98>, a=<-12,9,-4> +p=<1618,-6175,930>, v=<-69,24,-30>, a=<1,11,0> +p=<694,-14199,-2624>, v=<37,135,-93>, a=<-3,14,9> +p=<-5948,-2787,-5324>, v=<18,3,-18>, a=<8,4,9> +p=<6922,-4911,2704>, v=<-62,-86,55>, a=<-7,12,-7> +p=<289,-1614,2216>, v=<-15,125,-79>, a=<0,-3,-7> +p=<665,-750,-32>, v=<-13,71,-15>, a=<-3,-3,2> +p=<206,596,-89>, v=<-3,-38,26>, a=<-3,-3,-3> +p=<1207,420,395>, v=<-88,-22,0>, a=<-4,-3,-6> +p=<-377,123,417>, v=<2,23,-14>, a=<5,-6,-4> +p=<-190,-867,21>, v=<9,71,-50>, a=<1,1,8> +p=<894,-3318,-9396>, v=<-25,33,44>, a=<0,3,11> +p=<-4767,-10459,-6695>, v=<14,169,9>, a=<6,6,9> +p=<-2954,-8239,1260>, v=<41,128,41>, a=<2,5,-4> +p=<4113,715,-3513>, v=<59,-95,-1>, a=<-9,4,5> +p=<103,9579,2043>, v=<-3,47,54>, a=<0,-17,-6> +p=<1309,6033,-1179>, v=<56,53,88>, a=<-5,-12,-3> +p=<4623,-4737,-3090>, v=<-172,73,86>, a=<-1,9,3> +p=<-1677,-412,4135>, v=<67,17,-73>, a=<0,0,-7> +p=<723,563,410>, v=<-42,-22,50>, a=<1,0,-5> +p=<-2327,-912,-3365>, v=<2,37,-33>, a=<7,0,13> +p=<3598,1138,-3740>, v=<-53,20,86>, a=<-7,-5,5> +p=<323,-2587,-2915>, v=<39,0,66>, a=<-4,8,4> +p=<1448,3513,2235>, v=<-32,-75,-88>, a=<-2,-5,0> +p=<-4527,-2412,-2690>, v=<64,-7,31>, a=<9,8,6> +p=<-327,-2162,-6040>, v=<-78,22,35>, a=<7,5,16> +p=<-4527,2863,3385>, v=<51,-101,22>, a=<10,-1,-12> +p=<-693,-661,-821>, v=<-97,-44,21>, a=<20,12,5> +p=<728,816,-1108>, v=<4,-67,124>, a=<-7,1,-6> +p=<1470,2447,1090>, v=<-64,-101,-78>, a=<-5,-10,0> +p=<1015,431,1818>, v=<-24,-32,-145>, a=<-6,0,2> +p=<511,2068,-2125>, v=<-28,-34,17>, a=<0,-10,12> +p=<-322,-3474,-1683>, v=<120,148,81>, a=<-11,6,2> +p=<18,2102,-323>, v=<-8,-45,10>, a=<1,-9,1> +p=<-1597,912,-357>, v=<132,16,-24>, a=<-4,-8,5> +p=<1225,3122,-918>, v=<-88,-69,54>, a=<2,-13,0> +p=<-1121,1184,1615>, v=<59,-9,-14>, a=<1,-7,-9> +p=<-2807,-2982,46>, v=<78,2,49>, a=<6,14,-5> +p=<83,138,826>, v=<49,-7,-95>, a=<-5,0,5> +p=<-3337,-4542,16>, v=<31,59,-2>, a=<13,16,0> +p=<1083,-562,1226>, v=<-106,28,-31>, a=<5,0,-3> +p=<-1637,-1712,-1284>, v=<-54,180,0>, a=<13,-9,6> +p=<2683,308,3386>, v=<24,-26,-55>, a=<-15,1,-11> +p=<1053,778,-114>, v=<-94,45,36>, a=<4,-8,-3> +p=<-1777,-1532,-2384>, v=<58,108,34>, a=<3,-3,8> +p=<3985,-31,-2486>, v=<-47,-127,0>, a=<-5,8,5> +p=<6465,372,6039>, v=<-63,-44,-67>, a=<-9,2,-8> +p=<5163,1550,3249>, v=<-5,-50,-105>, a=<-10,0,0> +p=<-1688,-3410,-347>, v=<8,30,-5>, a=<3,5,1> +p=<544,-5177,11185>, v=<48,71,-137>, a=<-4,6,-14> +p=<-641,-708,2>, v=<55,38,96>, a=<-2,1,-11> +p=<-521,924,2762>, v=<-29,-47,-119>, a=<7,-1,-6> +p=<9928,-5087,261>, v=<-95,-29,73>, a=<-8,8,-4> +p=<-173,-10469,-6798>, v=<-16,89,134>, a=<1,9,2> +p=<1317,-593,485>, v=<-96,31,7>, a=<1,1,-5> +p=<3012,22,-1435>, v=<-137,30,71>, a=<-8,-4,3> +p=<-873,-758,500>, v=<58,178,-42>, a=<0,-16,1> +p=<-678,-2498,-40>, v=<37,54,-62>, a=<1,14,8> +p=<177,-8,-1150>, v=<-100,24,52>, a=<11,-3,3> +p=<-453,1687,-25>, v=<30,-25,33>, a=<0,-11,-4> +p=<222,-1043,2180>, v=<-39,13,-74>, a=<3,7,-9> +p=<1047,187,2645>, v=<-6,-45,-97>, a=<-8,4,-10> +p=<777,-1403,-1000>, v=<-52,53,66>, a=<0,5,0> +p=<324,780,1066>, v=<-20,-32,-7>, a=<0,-2,-7> +p=<148,196,1450>, v=<-9,-72,-82>, a=<0,7,-1> +p=<1484,1868,466>, v=<-101,-117,39>, a=<1,0,-8> +p=<196,-740,-894>, v=<-46,46,22>, a=<4,0,4> +p=<812,-1660,-1846>, v=<-8,163,107>, a=<-5,-7,1> +p=<412,-1492,186>, v=<-17,93,48>, a=<-1,0,-7> +p=<-308,-1276,914>, v=<62,20,11>, a=<-5,7,-8> +p=<1492,142,-249>, v=<28,5,65>, a=<-16,-2,-6> +p=<1867,-728,-9>, v=<-109,-25,73>, a=<-2,9,-9> +p=<1687,1297,21>, v=<-33,24,-1>, a=<-10,-14,0> +p=<1057,-23,1521>, v=<-79,0,51>, a=<1,0,-19> +p=<2092,442,-1449>, v=<-116,-47,25>, a=<-3,2,9> +p=<2572,922,-3804>, v=<-84,-23,150>, a=<-11,-5,13> +p=<2197,832,306>, v=<-91,-81,12>, a=<-7,3,-4> +p=<919,1669,-1409>, v=<-40,-69,27>, a=<-3,-7,10> +p=<2060,-1313,180>, v=<-99,9,-19>, a=<-6,11,1> +p=<548,1270,-2851>, v=<-21,-108,160>, a=<-2,2,6> +p=<1395,-718,-730>, v=<16,49,31>, a=<-15,0,3> +p=<-36,1770,1658>, v=<-2,-31,-92>, a=<0,-11,-2> +p=<-2616,315,-262>, v=<170,34,76>, a=<0,-7,-7> +p=<-771,-285,443>, v=<23,-22,-27>, a=<3,5,0> +p=<-276,-1095,83>, v=<-2,48,-91>, a=<2,3,11> +p=<1503,1767,-7081>, v=<51,-21,155>, a=<-6,-2,4> +p=<-2897,279,855>, v=<40,108,72>, a=<3,-7,-6> +p=<-3547,-7946,5832>, v=<6,-20,42>, a=<5,13,-11> +p=<5579,5266,2214>, v=<-81,-91,-24>, a=<-4,-3,-2> +p=<-452,181,-8175>, v=<13,-23,154>, a=<0,1,5> +p=<-5858,-10478,4031>, v=<172,133,145>, a=<0,10,-15> +p=<-1064,4210,-2565>, v=<-4,-19,-11>, a=<2,-6,5> +p=<2676,-2845,3674>, v=<26,-39,-107>, a=<-6,7,0> +p=<9000,62,6309>, v=<-90,-72,8>, a=<-10,4,-11> +p=<-3597,5876,-5744>, v=<123,2,-40>, a=<-1,-10,12> +p=<6161,-1655,-7784>, v=<11,-109,20>, a=<-11,9,12> +p=<925,-584,-1528>, v=<-45,52,46>, a=<1,-2,0> +p=<5396,-5548,4660>, v=<-54,58,-66>, a=<-6,6,-4> +p=<1796,-8375,-1230>, v=<-81,83,44>, a=<1,15,0> +p=<1012,-8683,5350>, v=<-53,123,12>, a=<1,13,-14> +p=<1796,2125,2928>, v=<-110,56,26>, a=<3,-9,-9> +p=<632,-10146,994>, v=<50,73,7>, a=<-5,20,-3> +p=<-124,298,-1568>, v=<19,-10,84>, a=<-1,0,-2> +p=<-4464,1880,308>, v=<58,-23,17>, a=<7,-3,-2> +p=<58,-2838,8988>, v=<-118,44,-177>, a=<8,4,-10> +p=<5956,-490,530>, v=<-152,-15,-96>, a=<-3,2,5> +p=<841,-3805,1550>, v=<96,-13,25>, a=<-8,9,-5> +p=<-3569,1355,2105>, v=<-98,32,-71>, a=<14,-5,0> +p=<2431,1610,1265>, v=<-81,-54,81>, a=<0,0,-8> +p=<646,-6310,-7000>, v=<-68,24,0>, a=<3,12,15> +p=<-734,815,3095>, v=<71,50,-42>, a=<-3,-5,-4> +p=<1311,-524,1013>, v=<-19,26,-99>, a=<-17,4,1> +p=<1377,15,177>, v=<-73,-5,-5>, a=<-9,1,-2> +p=<970,-172,991>, v=<-90,-18,-91>, a=<0,6,0> +p=<-1109,103,408>, v=<51,-73,-38>, a=<8,11,0> +p=<-218,-7,397>, v=<36,-9,-31>, a=<-3,2,-1> +p=<1465,-821,-593>, v=<-63,35,83>, a=<-12,7,-5> +p=<64,-474,785>, v=<-62,51,-69>, a=<8,-2,1> +p=<-1288,-851,-1438>, v=<119,3,102>, a=<-3,9,1> +p=<-937,1203,-1139>, v=<-13,-22,37>, a=<12,-10,7> +p=<129,436,-853>, v=<-123,-33,-6>, a=<16,0,10> +p=<1403,-1644,408>, v=<-60,127,2>, a=<-7,0,-5> +p=<-313,-1306,-723>, v=<-103,94,54>, a=<18,1,0> +p=<-14,371,629>, v=<14,-7,-22>, a=<-2,-3,-4> +p=<-2,1154,-6362>, v=<-78,86,148>, a=<4,-6,1> +p=<1480,1439,-6457>, v=<39,-97,14>, a=<-4,3,8> +p=<-3285,-3050,1237>, v=<139,125,0>, a=<0,0,-4> +p=<5475,2230,3001>, v=<-51,-120,-111>, a=<-14,2,-1> +p=<-1197,-3626,373>, v=<2,49,-64>, a=<4,8,4> +p=<-1617,190,-5975>, v=<82,-10,88>, a=<-1,0,13> +p=<675,3898,-6179>, v=<-1,-102,84>, a=<-2,-5,14> +p=<617,2333,2796>, v=<-72,-24,-158>, a=<4,-11,0> +p=<329,-763,3363>, v=<-18,110,-180>, a=<0,-7,-1> +p=<338,677,654>, v=<-28,-8,37>, a=<1,-3,-8> +p=<-2551,-313,-1767>, v=<28,-48,86>, a=<12,7,1> +p=<-3154,452,-1596>, v=<147,33,86>, a=<3,-6,0> +p=<104,1226,906>, v=<118,-29,-34>, a=<-13,-4,-2> +p=<-895,4691,753>, v=<-26,-98,41>, a=<8,-17,-9> +p=<320,-466,-507>, v=<68,27,-3>, a=<-9,0,3> +p=<-1102,-1618,-1965>, v=<-62,91,97>, a=<13,0,1> +p=<2849,1037,4587>, v=<-101,29,-210>, a=<-6,-9,-5> +p=<3362,-144,329>, v=<-126,-53,14>, a=<-8,7,-4> +p=<421,2372,-2391>, v=<-70,-66,66>, a=<5,-8,8> +p=<1781,-858,1417>, v=<-15,61,-95>, a=<-10,-1,1> +p=<319,-586,-1286>, v=<-100,63,91>, a=<9,-3,-2> +p=<829,859,-623>, v=<-49,59,-65>, a=<0,-12,11> +p=<-786,672,-1065>, v=<82,43,69>, a=<-4,-9,-1> +p=<115,-671,-317>, v=<2,41,25>, a=<-1,0,-1> +p=<591,-1385,3355>, v=<-35,47,-146>, a=<0,4,-6> +p=<438,-2881,-164>, v=<-44,0,7>, a=<2,19,0> +p=<-2622,757,1077>, v=<46,-16,15>, a=<12,-3,-9> +p=<-286,-626,-748>, v=<27,-25,-1>, a=<-1,2,1> +p=<3029,-9791,-3361>, v=<-58,-90,26>, a=<-1,17,3> +p=<-5356,6160,-14437>, v=<57,-39,30>, a=<4,-6,17> +p=<6050,3006,2925>, v=<-112,-144,-25>, a=<-10,2,-7> +p=<4250,2331,3475>, v=<-66,91,-47>, a=<-8,-14,-7> +p=<4064,-4572,1529>, v=<-58,-20,12>, a=<-3,8,-3> +p=<-76,5814,13697>, v=<-91,6,-67>, a=<5,-9,-17> +p=<-152,-192,662>, v=<-84,-59,85>, a=<11,8,-15> +p=<552,128,-1570>, v=<25,-28,46>, a=<-7,2,6> +p=<-2264,-304,4334>, v=<99,16,-221>, a=<5,0,-6> +p=<136,640,1454>, v=<17,-43,10>, a=<-3,0,-12> +p=<-1528,1152,-2378>, v=<70,-160,88>, a=<3,10,7> +p=<-728,1432,-18>, v=<37,-67,0>, a=<1,-3,0> +p=<1724,-224,-2735>, v=<-104,45,71>, a=<3,-2,0> +p=<-1164,-509,-132>, v=<-106,33,-56>, a=<7,-1,3> +p=<-1449,-4233,-3514>, v=<-1,-64,72>, a=<2,9,1> +p=<8127,-2219,4713>, v=<-19,0,31>, a=<-10,3,-8> +p=<-7054,3443,3345>, v=<127,-32,28>, a=<3,-3,-6> +p=<-4394,-14759,8437>, v=<-60,96,-106>, a=<9,15,-6> +p=<-2779,2075,-3913>, v=<73,-35,24>, a=<0,-1,4> +p=<-2141,-6916,851>, v=<88,27,40>, a=<0,21,-6> +p=<3139,3848,3671>, v=<-82,-134,-115>, a=<-4,-2,-3> +p=<1327,-2536,107>, v=<6,32,21>, a=<-5,6,-2> +p=<-3389,-1612,959>, v=<65,6,-27>, a=<6,5,-1> +p=<-1229,-244,3167>, v=<0,-26,-44>, a=<4,3,-7> +p=<1447,-1384,3911>, v=<26,34,-25>, a=<-7,2,-11> +p=<475,860,-1777>, v=<129,78,87>, a=<-12,-9,-1> +p=<1627,-2428,359>, v=<-119,40,-27>, a=<4,5,1> +p=<3211,488,-445>, v=<-60,-19,-31>, a=<-6,0,4> +p=<-1937,824,-2473>, v=<-33,-33,16>, a=<9,0,7> +p=<292,-3241,2398>, v=<-8,108,93>, a=<0,0,-11> +p=<-1568,5159,808>, v=<54,-110,-40>, a=<0,-4,1> +p=<4687,4169,3058>, v=<-46,-108,40>, a=<-7,-2,-9> +p=<7282,-961,-2897>, v=<-148,32,99>, a=<-6,0,0> +p=<-2205,1288,-648>, v=<57,-58,52>, a=<1,1,-2> +p=<-3810,-5357,-2283>, v=<-60,24,29>, a=<12,10,3> +p=<-4485,-3332,4107>, v=<40,3,-60>, a=<7,7,-5> +p=<-570,-4637,-3948>, v=<-13,31,-24>, a=<2,8,10> +p=<7155,673,822>, v=<24,133,-28>, a=<-17,-10,0> +p=<1305,-4037,-1368>, v=<-122,-51,45>, a=<5,12,0> +p=<1200,2773,-633>, v=<-10,-92,5>, a=<-2,0,1> +p=<4155,5713,3492>, v=<0,-4,-86>, a=<-9,-12,-2> +p=<845,-4997,2504>, v=<15,-6,35>, a=<-3,12,-8> +p=<-1185,281,3287>, v=<-35,7,-22>, a=<5,-1,-6> +p=<-2635,2572,561>, v=<90,-42,12>, a=<0,-3,-2> +p=<-2925,1006,1634>, v=<40,-33,-55>, a=<4,0,0> +p=<1381,3639,6097>, v=<-37,21,-5>, a=<0,-6,-8> +p=<89,-5709,-9692>, v=<-42,-6,40>, a=<2,8,11> +p=<12952,3240,-1522>, v=<-166,12,59>, a=<-9,-5,-1> +p=<12458,694,16110>, v=<-75,-116,-93>, a=<-13,5,-17> +p=<-1531,-2207,4330>, v=<97,-46,63>, a=<-3,7,-12> +p=<-3643,-1487,8010>, v=<31,-85,-19>, a=<5,8,-14> +p=<-75,-13119,3066>, v=<68,163,86>, a=<-4,15,-11> +p=<-411,-3647,-86>, v=<29,65,-63>, a=<-1,3,4> +p=<5093,-3807,3370>, v=<-11,-62,27>, a=<-9,11,-8> +p=<-424,633,-2094>, v=<89,-67,115>, a=<-7,3,1> +p=<-2362,-1815,-1414>, v=<104,77,3>, a=<4,3,9> +p=<-1002,2554,-1159>, v=<-30,-63,69>, a=<10,-10,0> +p=<936,-115,-1839>, v=<-54,-23,1>, a=<0,3,12> +p=<-2294,1211,82>, v=<19,-29,-13>, a=<13,-5,1> +p=<1633,-710,626>, v=<-32,3,-27>, a=<-7,4,-1> +p=<-2073,-1628,3261>, v=<123,120,-110>, a=<0,-3,-9> +p=<129,105,1073>, v=<-3,26,-119>, a=<-1,-5,5> +p=<-1623,-1077,-151>, v=<91,92,-43>, a=<7,0,9> +p=<-459,-1413,-2851>, v=<-19,55,182>, a=<9,10,9> +p=<-933,2439,1211>, v=<92,-123,-85>, a=<-2,-12,-2> +p=<-33,63,23>, v=<30,-3,-77>, a=<-4,0,12> +p=<-141,1275,11>, v=<13,-91,-11>, a=<0,-2,2> +p=<-579,-1785,-733>, v=<17,86,64>, a=<5,10,0> +p=<-405,189,-403>, v=<48,58,17>, a=<-2,-11,3> +p=<687,579,185>, v=<-30,-20,7>, a=<-4,-4,-3> +p=<-105,-489,2315>, v=<-16,4,-164>, a=<4,6,-4> +p=<5019,2191,-1557>, v=<-134,-9,25>, a=<-5,-6,3> +p=<2844,1491,1193>, v=<-8,-46,-85>, a=<-8,-1,3> +p=<619,3541,-2282>, v=<29,-76,28>, a=<-4,-5,5> +p=<435,137,1248>, v=<64,-37,-76>, a=<-9,3,1> +p=<-1626,-1609,-120>, v=<-21,3,38>, a=<12,9,-3> +p=<-429,56,726>, v=<55,-4,-9>, a=<-3,0,-3> +p=<-1572,-61,159>, v=<-62,-26,13>, a=<16,3,-2> +p=<-402,848,-498>, v=<-70,-48,97>, a=<10,0,-7> +p=<3278,-120,1704>, v=<26,66,24>, a=<-14,-5,-8> +p=<1185,-4812,1750>, v=<-111,90,58>, a=<5,10,-11> +p=<-4907,-1991,-6006>, v=<29,94,114>, a=<7,-2,4> +p=<-7085,814,4455>, v=<146,-8,-33>, a=<4,-1,-6> +p=<-815,-6446,132>, v=<-44,8,-55>, a=<4,11,3> +p=<-584,2530,-4521>, v=<17,-60,-50>, a=<0,-1,11> +p=<-1630,229,-1067>, v=<105,46,90>, a=<3,-9,-1> +p=<762,-876,-14>, v=<33,61,16>, a=<-13,1,-2> +p=<1269,879,948>, v=<15,10,-128>, a=<-16,-11,8> +p=<6413,-3286,-3895>, v=<-111,76,58>, a=<-4,1,3> +p=<6448,2524,-4105>, v=<68,-90,64>, a=<-14,1,3> +p=<-10562,-6331,-1095>, v=<32,181,-76>, a=<15,0,6> +p=<-6327,7599,3035>, v=<-107,17,-14>, a=<16,-13,-4> +p=<-1672,7809,-2355>, v=<84,-79,-22>, a=<-2,-8,5> +p=<6028,-2551,-6765>, v=<-28,-53,68>, a=<-8,7,7> +p=<-692,-3181,5520>, v=<20,73,77>, a=<0,1,-13> +p=<-1077,482,-1703>, v=<-17,56,80>, a=<10,-10,3> +p=<35,-1510,-4519>, v=<126,70,188>, a=<-15,3,11> +p=<1347,610,-287>, v=<-41,-105,17>, a=<-5,8,0> +p=<5512,5313,6606>, v=<-42,-96,-190>, a=<-5,-2,1> +p=<-1937,-3774,-1701>, v=<-11,17,43>, a=<3,4,0> +p=<-1079,1296,6801>, v=<27,-153,5>, a=<0,6,-9> +p=<1807,-2760,3564>, v=<-47,51,-32>, a=<0,1,-3> +p=<8398,1374,-2598>, v=<-16,-95,46>, a=<-10,3,1> +p=<-1469,3402,1458>, v=<-43,13,2>, a=<4,-5,-2> +p=<3367,8277,11520>, v=<-107,-52,-156>, a=<1,-8,-7> +p=<9607,8160,3018>, v=<-87,71,-78>, a=<-8,-14,0> +p=<884,505,-1467>, v=<-45,95,101>, a=<-2,-17,0> +p=<324,2157,-1264>, v=<-20,-53,34>, a=<0,-13,7> +p=<2361,-1938,-557>, v=<-113,112,21>, a=<-7,4,2> +p=<555,-657,1536>, v=<31,28,-91>, a=<-9,3,-3> +p=<646,988,178>, v=<-58,-67,6>, a=<2,0,-3> +p=<373,-2274,1914>, v=<29,136,-28>, a=<-7,4,-15> +p=<44,1793,262>, v=<45,-117,-15>, a=<-6,-1,-1> +p=<-1620,592,-839>, v=<31,-101,7>, a=<6,7,4> +p=<-1287,1510,-956>, v=<98,-19,137>, a=<-3,-7,-9> +p=<-45,2257,-1730>, v=<-28,-127,-48>, a=<3,0,15> +p=<734,490,2595>, v=<-18,-58,-115>, a=<-4,3,-9> +p=<-582,693,2532>, v=<16,-20,-43>, a=<4,-4,-18> +p=<-463,2387,-100>, v=<45,-126,55>, a=<-1,-6,-6> +p=<-1058,-700,894>, v=<95,12,-61>, a=<-2,5,0> +p=<-78,-2107,-1843>, v=<10,210,82>, a=<0,-8,7> +p=<-302,-1393,257>, v=<26,24,-53>, a=<0,10,5> +p=<776,-2030,54>, v=<-51,62,-1>, a=<0,11,0> +p=<-274,-329,1965>, v=<24,-7,-70>, a=<0,4,-9> +p=<426,189,264>, v=<-11,-89,-16>, a=<-2,10,0> +p=<2505,-742,880>, v=<-62,15,0>, a=<-15,5,-8> +p=<-2983,-3194,-209>, v=<8,-53,50>, a=<8,13,-3> +p=<2984,-4559,-1821>, v=<-100,13,4>, a=<-1,12,5> +p=<-2385,732,-105>, v=<147,-15,-116>, a=<-4,-1,9> +p=<1539,-193,-2637>, v=<-21,53,18>, a=<-6,-4,12> +p=<-969,-1656,-2067>, v=<21,30,-12>, a=<3,6,12> +p=<323,-2435,2170>, v=<-87,81,-105>, a=<7,5,-1> +p=<6722,-1881,6800>, v=<-51,23,-36>, a=<-9,2,-10> +p=<2960,990,2576>, v=<46,-30,-44>, a=<-8,0,-2> +p=<1640,-2310,-1879>, v=<-16,36,108>, a=<-2,2,-3> +p=<1904,-13365,7427>, v=<61,14,-72>, a=<-7,23,-9> +p=<254,-3762,2972>, v=<-93,-5,-158>, a=<5,7,4> +p=<1186,738,-74>, v=<-79,-95,71>, a=<-3,5,-10> +p=<-668,954,-1496>, v=<69,4,66>, a=<-2,-13,9> +p=<2080,366,1786>, v=<-69,-12,-149>, a=<-16,-3,0> +p=<-872,-630,-2924>, v=<21,71,211>, a=<8,-3,5> +p=<-1112,204,-86>, v=<119,34,20>, a=<-4,-8,-2> +p=<652,-510,-962>, v=<-80,113,41>, a=<4,-11,6> +p=<28,-846,-1340>, v=<63,128,92>, a=<-10,-9,3> +p=<802,-2301,-981>, v=<102,41,-112>, a=<-8,2,9> +p=<7622,2163,-4732>, v=<-6,25,57>, a=<-15,-6,6> +p=<-4190,2922,2674>, v=<132,-56,-84>, a=<15,-15,-10> +p=<210,634,-262>, v=<-24,-66,40>, a=<1,3,-3> +p=<1002,-502,186>, v=<-150,-12,12>, a=<10,5,-3> +p=<1582,-7,-39>, v=<-79,12,55>, a=<-6,-2,-7> +p=<-134,890,1287>, v=<46,-57,-33>, a=<-5,-2,-9> +p=<1361,-670,-754>, v=<-76,77,40>, a=<-4,-4,3> +p=<1556,1735,-949>, v=<-14,-73,34>, a=<-15,-9,6> +p=<-56,-891,2080>, v=<40,73,-87>, a=<-5,-1,-10> +p=<191,357,-533>, v=<21,26,9>, a=<-5,-8,5> +p=<1699,-1580,-117>, v=<-137,28,-58>, a=<1,13,10> +p=<-966,695,-1118>, v=<26,-63,54>, a=<7,1,5> +p=<-943,-389,98>, v=<2,141,-84>, a=<5,-12,8> +p=<1584,3867,364>, v=<-11,-93,-38>, a=<-7,-11,2> +p=<-521,-279,62>, v=<57,-41,-18>, a=<-1,11,2> +p=<-488,227,-213>, v=<78,-39,-59>, a=<-5,3,13> +p=<2697,157,659>, v=<-88,110,-41>, a=<-8,-13,0> +p=<-499,-812,-4203>, v=<55,23,155>, a=<-3,3,10> +p=<-482,752,-123>, v=<36,48,5>, a=<-1,-10,0> +p=<300,531,829>, v=<-19,43,-33>, a=<0,-8,-2> +p=<-1230,1704,-786>, v=<62,-134,-55>, a=<1,4,11> +p=<-1689,-251,251>, v=<71,-19,10>, a=<3,4,-3> +p=<1473,-1186,47>, v=<-70,27,-41>, a=<-2,5,4> +p=<-2148,-13,-718>, v=<17,-24,76>, a=<12,3,-4> +p=<-652,2469,-701>, v=<-44,-134,75>, a=<9,-1,-4> +p=<3519,1232,7089>, v=<-56,-102,-81>, a=<-4,4,-10> +p=<-651,4187,1299>, v=<-103,-61,-43>, a=<8,-5,0> +p=<-2491,-2393,2721>, v=<101,62,14>, a=<1,4,-12> +p=<6243,-1854,1137>, v=<-112,-43,-98>, a=<-15,11,4> +p=<-478,4691,-29>, v=<-25,-53,-45>, a=<4,-14,4> +p=<-1611,-534,-458>, v=<-31,35,-37>, a=<9,-1,5> +p=<-3129,-3493,-2207>, v=<61,66,-15>, a=<7,8,10> +p=<798,-2085,-326>, v=<-37,25,26>, a=<0,6,-1> +p=<-1622,3327,-425>, v=<27,-175,19>, a=<4,2,0> +p=<28,148,-2075>, v=<-2,96,94>, a=<0,-9,0> +p=<1544,6146,-1718>, v=<-39,143,44>, a=<0,-15,0> +p=<13010,1310,3469>, v=<-93,27,-129>, a=<-12,-3,2> +p=<-6295,-2824,-4409>, v=<-38,33,-167>, a=<10,2,14> +p=<-6334,6887,3391>, v=<23,4,-87>, a=<7,-9,0> +p=<-2707,-7153,-2693>, v=<110,84,-51>, a=<-2,5,6> +p=<3572,-4111,-1562>, v=<9,126,40>, a=<-5,-1,0> +p=<4462,-2550,-1370>, v=<-8,113,-23>, a=<-8,-2,4> +p=<-2754,-5894,-3082>, v=<3,3,80>, a=<5,11,1> +p=<-5170,-6022,-2090>, v=<95,73,16>, a=<4,7,3> +p=<-6370,-3782,-7594>, v=<83,36,56>, a=<7,5,11> +p=<-82,-598,1126>, v=<-64,-47,-35>, a=<4,4,0> +p=<5198,-502,-746>, v=<-97,16,-92>, a=<-4,0,7> +p=<14,-3830,-890>, v=<-1,21,61>, a=<0,6,-2> +p=<-3362,-1270,566>, v=<22,73,-34>, a=<5,-2,1> +p=<4998,5749,-1919>, v=<-132,6,12>, a=<0,-8,2> +p=<-9423,-8843,-12274>, v=<-45,39,109>, a=<15,10,11> +p=<-5623,-4093,-4465>, v=<-106,-47,40>, a=<13,8,4> +p=<-2868,-6905,703>, v=<75,66,-18>, a=<0,6,0> +p=<3839,-4207,-190>, v=<74,-83,-170>, a=<-9,10,9> +p=<-5768,7005,2433>, v=<-80,-103,-50>, a=<13,-5,-1> +p=<820,-4083,3477>, v=<-115,20,-42>, a=<5,5,-3> +p=<3459,-1784,-608>, v=<-8,78,-21>, a=<-12,0,4> +p=<2194,-3601,-2655>, v=<47,121,32>, a=<-12,3,7> +p=<216,3437,3624>, v=<157,-149,11>, a=<-14,0,-14> +p=<-14,-4498,1600>, v=<11,40,-9>, a=<-1,13,-5> +p=<-3947,4748,-4173>, v=<86,10,26>, a=<7,-18,13> +p=<4379,2540,4820>, v=<-48,34,-113>, a=<-12,-12,-8> +p=<-819,-1692,1738>, v=<10,2,57>, a=<2,6,-11> +p=<-1785,171,2497>, v=<-32,41,36>, a=<9,-4,-12> +p=<-5786,-3541,4522>, v=<147,-29,-75>, a=<0,6,-2> +p=<7279,8393,6784>, v=<32,-15,-53>, a=<-11,-10,-6> +p=<-7892,-2293,-4877>, v=<81,-1,26>, a=<6,3,5> +p=<-5786,203,-3629>, v=<47,-65,-66>, a=<5,3,8> +p=<-5942,-3307,-14744>, v=<71,-55,-21>, a=<4,7,20> +p=<9892,-2332,-8660>, v=<-55,160,43>, a=<-10,-5,9> +p=<-8087,-1045,-6359>, v=<46,87,-16>, a=<8,-3,9> +p=<10675,-4517,-152>, v=<1,-32,4>, a=<-17,9,0> +p=<-1960,-11377,6848>, v=<38,56,-124>, a=<1,15,-4> +p=<3675,2133,-8622>, v=<-195,-114,48>, a=<5,3,11> +p=<945,-1577,5798>, v=<-63,46,-4>, a=<2,0,-9> +p=<1624,-2462,-468>, v=<235,-355,-66>, a=<-10,30,7> +p=<811,628,3099>, v=<109,87,442>, a=<-8,-6,-33> +p=<-2613,-1644,-44>, v=<-377,-233,-11>, a=<22,19,2> +p=<2665,1031,1462>, v=<380,152,214>, a=<-27,-15,-13> +p=<-1167,2956,-837>, v=<-167,423,-119>, a=<11,-29,7> +p=<-500,-1627,2542>, v=<-71,-233,361>, a=<6,15,-24> +p=<2759,-228,330>, v=<393,-38,47>, a=<-32,1,-7> +p=<-1933,385,-1305>, v=<-277,56,-185>, a=<18,-2,10> +p=<-740,-3178,0>, v=<-107,-453,-2>, a=<14,28,3> +p=<837,2734,1599>, v=<119,385,227>, a=<-8,-24,-18> +p=<2029,-2022,2099>, v=<288,-287,299>, a=<-20,22,-19> +p=<1362,530,-2350>, v=<197,80,-335>, a=<-13,-5,21> +p=<35,1448,-2444>, v=<5,205,-349>, a=<5,-12,30> +p=<2512,-2034,-1044>, v=<355,-291,-148>, a=<-25,24,12> +p=<96,2593,1687>, v=<10,372,246>, a=<0,-24,-10> +p=<1697,-1020,-899>, v=<245,-145,-122>, a=<-21,10,13> +p=<322,-1743,1920>, v=<46,-248,279>, a=<-7,16,-17> +p=<462,44,3385>, v=<65,5,483>, a=<-1,-1,-33> +p=<2308,-1372,400>, v=<329,-191,60>, a=<-24,13,-2> +p=<993,-539,2957>, v=<140,-76,423>, a=<-8,7,-28> +p=<-894,-2502,-1769>, v=<-127,-359,-249>, a=<8,25,18> +p=<-1533,1125,-2885>, v=<-219,157,-418>, a=<19,-12,28> +p=<-1714,2565,204>, v=<-248,361,28>, a=<17,-24,-5> +p=<50,2129,1755>, v=<3,299,252>, a=<0,-18,-22> +p=<1377,-2722,-155>, v=<202,-392,-22>, a=<-9,29,-1> +p=<-2051,-135,2402>, v=<-295,-24,342>, a=<21,1,-28> +p=<1690,-2279,794>, v=<240,-322,113>, a=<-13,22,-7> +p=<1765,-1008,2234>, v=<251,-140,319>, a=<-20,9,-21> +p=<-944,201,2749>, v=<-135,25,393>, a=<8,0,-32> +p=<1277,1073,2254>, v=<181,153,325>, a=<-15,-15,-22> +p=<-1068,-1656,2795>, v=<-149,-236,395>, a=<5,19,-26> +p=<2481,-1470,-1338>, v=<355,-210,-193>, a=<-24,16,11> +p=<-448,2393,-837>, v=<-61,342,-119>, a=<3,-22,11> +p=<-2560,643,563>, v=<-366,89,77>, a=<26,-5,-8> +p=<3211,344,1361>, v=<460,46,194>, a=<-29,-6,-15> +p=<-510,-2939,993>, v=<-73,-418,141>, a=<4,32,-13> +p=<3090,1341,-594>, v=<441,191,-82>, a=<-24,-11,7> +p=<-2650,-1076,1037>, v=<-377,-153,150>, a=<26,6,-9> +p=<-2076,-1191,1581>, v=<-296,-162,228>, a=<25,11,-15> +p=<475,162,3389>, v=<66,25,487>, a=<-3,0,-35> +p=<378,1697,-2105>, v=<55,242,-299>, a=<-7,-18,19> +p=<245,608,2984>, v=<34,83,425>, a=<-3,-6,-29> +p=<1522,256,-1893>, v=<216,33,-273>, a=<-17,-1,19> +p=<-2367,902,1555>, v=<-333,128,223>, a=<20,-7,-15> +p=<389,-2674,-1034>, v=<55,-378,-141>, a=<-8,22,13> +p=<-2530,1332,773>, v=<-358,189,105>, a=<29,-18,-14> +p=<-960,-1666,-1362>, v=<-135,-241,-199>, a=<12,15,12> +p=<-1847,-2094,2325>, v=<-265,-303,333>, a=<21,20,-23> +p=<-119,-1836,2646>, v=<-14,-262,381>, a=<1,17,-26> +p=<2251,1198,990>, v=<323,171,145>, a=<-22,-11,-9> +p=<-464,-1556,-2369>, v=<-70,-222,-339>, a=<4,20,19> +p=<1703,745,2520>, v=<238,104,358>, a=<-16,-7,-23> +p=<-1691,1716,-2618>, v=<-246,244,-374>, a=<16,-18,30> +p=<1472,-2238,853>, v=<210,-315,118>, a=<-15,26,-8> +p=<-1947,2351,-1449>, v=<-286,338,-205>, a=<18,-27,12> +p=<-2815,1474,650>, v=<-404,209,86>, a=<29,-13,-3> +p=<1434,-1949,1020>, v=<208,-277,148>, a=<-20,18,-11> +p=<2722,1173,-256>, v=<390,166,-33>, a=<-25,-11,5> +p=<3026,-916,18>, v=<430,-130,-2>, a=<-28,8,3> +p=<1336,1272,-1884>, v=<188,185,-265>, a=<-15,-16,13> +p=<-562,-2147,-1631>, v=<-83,-310,-235>, a=<2,24,17> +p=<2473,-660,-62>, v=<350,-96,-12>, a=<-23,2,0> +p=<-1360,-1074,-2694>, v=<-194,-149,-380>, a=<13,11,31> +p=<-2791,-1608,-902>, v=<-395,-230,-128>, a=<27,14,9> +p=<811,282,2237>, v=<113,38,316>, a=<-8,-10,-20> +p=<-2080,-1126,-1316>, v=<-293,-163,-191>, a=<20,6,7> +p=<1893,-617,2345>, v=<267,-88,338>, a=<-19,6,-20> +p=<-2131,-721,-1427>, v=<-306,-101,-206>, a=<18,7,11> +p=<-2635,49,615>, v=<-377,7,86>, a=<25,1,-11> +p=<1224,3029,-1172>, v=<172,429,-161>, a=<-16,-31,6> +p=<67,-301,3085>, v=<11,-43,440>, a=<0,7,-30> +p=<1224,1528,-2785>, v=<177,216,-397>, a=<-12,-11,25> +p=<-863,2724,381>, v=<-126,391,52>, a=<5,-24,-2> +p=<-1288,-1610,2625>, v=<-184,-226,375>, a=<12,19,-25> +p=<-269,2017,-2101>, v=<-39,283,-300>, a=<2,-24,24> +p=<1950,1442,-103>, v=<278,203,-13>, a=<-20,-12,2> +p=<352,247,-2877>, v=<55,32,-410>, a=<-4,-6,26> +p=<1809,2045,-1944>, v=<259,292,-276>, a=<-14,-20,20> +p=<-21,-2189,988>, v=<-1,-313,141>, a=<-3,21,-9> +p=<-1001,-2217,1954>, v=<-140,-315,281>, a=<3,22,-21> +p=<2373,951,1447>, v=<340,139,206>, a=<-24,-11,-12> +p=<2379,1655,509>, v=<336,233,77>, a=<-23,-19,-5> +p=<884,-1431,-2145>, v=<125,-206,-306>, a=<-10,14,22> +p=<-372,-2465,658>, v=<-56,-346,93>, a=<0,29,-10> +p=<1671,2547,-1793>, v=<233,362,-252>, a=<-19,-28,11> +p=<326,736,-2726>, v=<46,105,-385>, a=<-6,-7,23> +p=<2241,-739,-1255>, v=<318,-105,-176>, a=<-19,6,12> +p=<1853,-1037,-1564>, v=<263,-148,-219>, a=<-15,9,20> +p=<-1518,-1071,2789>, v=<-218,-157,399>, a=<19,8,-30> +p=<1045,1858,1247>, v=<152,265,178>, a=<-11,-21,-13> +p=<281,-1098,3271>, v=<40,-161,468>, a=<-6,8,-31> +p=<1122,-2393,-122>, v=<158,-337,-17>, a=<-8,22,2> +p=<-727,1445,2272>, v=<-100,209,327>, a=<7,-14,-20> +p=<1448,2165,-1632>, v=<206,309,-239>, a=<-14,-23,16> +p=<2453,-1690,-1411>, v=<351,-245,-201>, a=<-27,16,15> +p=<1030,515,3122>, v=<147,72,446>, a=<-8,-6,-32> +p=<-589,-2972,1141>, v=<-79,-431,167>, a=<9,26,-9> +p=<1558,-2331,1268>, v=<224,-333,181>, a=<-14,15,-14> +p=<-1156,-1848,-1958>, v=<-165,-268,-279>, a=<9,18,17> +p=<-328,2409,-1728>, v=<-47,346,-252>, a=<3,-20,11> +p=<-2236,745,2041>, v=<-319,101,291>, a=<22,-8,-18> +p=<-2618,-1525,492>, v=<-380,-216,72>, a=<26,15,-11> +p=<-2468,166,-2092>, v=<-352,24,-296>, a=<28,-2,23> +p=<1132,2952,1200>, v=<164,419,170>, a=<-11,-29,-10> +p=<-929,-715,-2801>, v=<-132,-104,-401>, a=<6,2,23> +p=<150,-2148,-1598>, v=<12,-300,-225>, a=<-4,22,5> +p=<-3006,323,-1215>, v=<-429,51,-173>, a=<26,-1,8> +p=<-1606,-1914,962>, v=<-233,-271,135>, a=<15,18,-10> +p=<2816,-397,-1439>, v=<403,-54,-205>, a=<-29,1,14> +p=<-2638,684,-1710>, v=<-376,98,-244>, a=<26,-3,19> +p=<896,-1998,1773>, v=<131,-285,255>, a=<-14,19,-20> +p=<617,-1910,2135>, v=<88,-272,304>, a=<-8,21,-19> +p=<-1155,30,3112>, v=<-165,1,441>, a=<10,-3,-31> +p=<-685,-434,2700>, v=<-95,-63,385>, a=<11,4,-27> +p=<-1309,-2857,-1754>, v=<-191,-406,-250>, a=<17,29,15> +p=<1804,-461,-2272>, v=<257,-64,-323>, a=<-18,1,18> +p=<-2916,837,-229>, v=<-418,116,-31>, a=<27,-13,-2> +p=<-2396,-750,-958>, v=<-340,-112,-139>, a=<19,7,12> +p=<-1035,-2366,-1895>, v=<-147,-341,-274>, a=<12,23,16> +p=<-3113,-1407,191>, v=<-445,-198,26>, a=<30,11,7> +p=<-1076,2730,802>, v=<-153,390,114>, a=<10,-26,-4> +p=<2033,1679,1326>, v=<292,246,187>, a=<-18,-19,-5> +p=<2560,-2091,-1321>, v=<364,-295,-188>, a=<-28,21,12> +p=<684,-59,2815>, v=<95,-8,401>, a=<-7,1,-31> +p=<-1564,2964,-405>, v=<-223,425,-57>, a=<15,-26,-1> +p=<-2485,-1814,1918>, v=<-353,-256,274>, a=<25,23,-16> +p=<655,-984,2797>, v=<97,-140,395>, a=<-4,11,-24> +p=<1926,-2137,-790>, v=<276,-302,-110>, a=<-13,18,7> +p=<-540,46,2356>, v=<-79,6,338>, a=<3,1,-24> +p=<-2129,617,-2410>, v=<-306,85,-346>, a=<21,-8,26> +p=<2362,846,-1443>, v=<333,118,-204>, a=<-27,-9,11> +p=<557,-708,-2693>, v=<71,-100,-386>, a=<2,11,26> +p=<-3162,548,714>, v=<-451,73,102>, a=<38,-5,-6> +p=<2359,862,1641>, v=<339,116,235>, a=<-22,-5,-19> +p=<-2245,-1426,1021>, v=<-314,-201,142>, a=<26,9,-9> +p=<-1787,1609,-651>, v=<-253,228,-86>, a=<14,-12,7> +p=<-2046,-2176,675>, v=<-295,-314,98>, a=<20,21,-2> +p=<92,1224,2925>, v=<15,174,419>, a=<3,-13,-35> +p=<-2676,1132,792>, v=<-383,167,110>, a=<26,-11,-6> +p=<-2747,44,530>, v=<-392,6,75>, a=<31,-1,-10> +p=<1635,2416,-694>, v=<231,341,-96>, a=<-19,-30,9> +p=<2566,1397,141>, v=<365,201,25>, a=<-25,-13,-2> +p=<-2687,1625,156>, v=<-381,228,24>, a=<26,-19,1> +p=<1187,2782,593>, v=<166,400,84>, a=<-14,-27,-8> +p=<12,-1995,2377>, v=<-2,-282,339>, a=<0,22,-17> +p=<-3012,-360,-1500>, v=<-432,-48,-218>, a=<29,2,19> +p=<-2365,1525,199>, v=<-332,215,31>, a=<24,-17,-1> +p=<-254,1669,2513>, v=<-31,237,359>, a=<4,-16,-23> +p=<-1071,2203,1517>, v=<-154,320,216>, a=<12,-23,-17> +p=<2195,231,1764>, v=<310,33,253>, a=<-22,-1,-19> +p=<-765,-2729,630>, v=<-112,-390,93>, a=<5,24,-8> +p=<2437,-1776,-1403>, v=<349,-251,-197>, a=<-23,18,14> +p=<793,1403,2970>, v=<111,201,419>, a=<-6,-14,-29> +p=<1594,-2749,-1482>, v=<227,-396,-207>, a=<-16,27,11> +p=<1418,1864,1818>, v=<200,265,261>, a=<-16,-19,-17> +p=<-942,-1572,2134>, v=<-137,-226,308>, a=<7,13,-20> +p=<-2352,1032,1986>, v=<-334,151,285>, a=<27,-7,-26> +p=<-2238,-1898,1513>, v=<-319,-271,222>, a=<22,19,-14> +p=<144,-741,2701>, v=<23,-101,385>, a=<3,8,-27> +p=<2485,-1973,846>, v=<350,-277,114>, a=<-21,18,-1> +p=<-103,100,-2421>, v=<-14,12,-349>, a=<1,-5,30> +p=<-51,-2900,-418>, v=<-7,-416,-59>, a=<-4,33,2> +p=<-2342,-1431,-1158>, v=<-332,-199,-162>, a=<25,13,11> +p=<3047,-188,-482>, v=<441,-26,-68>, a=<-31,-3,2> +p=<-302,3019,-1359>, v=<-44,433,-192>, a=<5,-29,18> +p=<-2582,-1307,936>, v=<-366,-182,132>, a=<20,15,-3> +p=<-1140,-2503,-1090>, v=<-164,-357,-154>, a=<11,25,8> +p=<-1908,-1869,1747>, v=<-266,-266,249>, a=<18,18,-19> +p=<-569,183,2831>, v=<-78,30,403>, a=<5,-1,-27> +p=<-1931,-2513,927>, v=<-275,-358,132>, a=<19,23,-12> +p=<-502,2000,2056>, v=<-74,286,294>, a=<5,-20,-18> +p=<-2656,269,1039>, v=<-375,45,146>, a=<27,0,-8> +p=<-1126,1513,-2691>, v=<-159,215,-381>, a=<10,-20,26> +p=<-823,1328,-2091>, v=<-119,189,-296>, a=<8,-16,24> +p=<-2693,-978,580>, v=<-389,-142,84>, a=<23,12,2> +p=<-878,-277,-3355>, v=<-123,-40,-478>, a=<9,2,33> +p=<240,-2544,282>, v=<33,-367,36>, a=<-5,23,-2> +p=<-59,-572,3078>, v=<-5,-78,444>, a=<-1,3,-30> +p=<2532,832,2194>, v=<361,118,312>, a=<-28,-8,-21> +p=<748,2769,-376>, v=<100,390,-56>, a=<-6,-27,3> +p=<1468,175,2378>, v=<209,25,340>, a=<-16,2,-28> +p=<2324,1671,-2021>, v=<336,243,-286>, a=<-23,-17,20> +p=<-2635,-888,-467>, v=<-376,-124,-72>, a=<26,9,4> +p=<-118,2602,-2121>, v=<-15,374,-304>, a=<5,-23,15> +p=<1240,1379,2572>, v=<179,201,362>, a=<-13,-11,-26> +p=<-1191,406,-2299>, v=<-173,58,-333>, a=<11,-11,22> +p=<-2652,1550,299>, v=<-380,221,42>, a=<27,-15,0> +p=<-2310,-2072,226>, v=<-328,-298,30>, a=<24,20,-2> +p=<1112,2562,1028>, v=<156,361,138>, a=<-11,-26,-14> +p=<-1282,205,3040>, v=<-187,35,438>, a=<10,-2,-30> +p=<-2655,-409,816>, v=<-381,-58,116>, a=<29,4,-8> +p=<-595,-2598,562>, v=<-87,-371,76>, a=<2,30,-1> +p=<-1080,-1161,-2609>, v=<-155,-165,-374>, a=<8,14,26> +p=<129,-2416,1481>, v=<23,-342,211>, a=<-1,26,-13> +p=<-1290,531,-1895>, v=<-182,77,-267>, a=<9,-4,18> +p=<542,-3071,-1074>, v=<82,-443,-155>, a=<-6,30,7> +p=<-1564,1953,-842>, v=<-223,280,-125>, a=<12,-14,10> +p=<-2106,2188,-1213>, v=<-299,312,-175>, a=<19,-24,11> +p=<2634,198,708>, v=<374,26,101>, a=<-26,-2,-4> +p=<533,-2693,-1322>, v=<76,-381,-186>, a=<-7,27,10> +p=<-1197,-2782,19>, v=<-171,-397,3>, a=<9,24,0> +p=<3042,1356,22>, v=<435,193,3>, a=<-33,-18,2> +p=<-542,1215,2351>, v=<-79,169,335>, a=<6,-12,-25> +p=<-2630,-699,-1044>, v=<-376,-101,-150>, a=<22,8,8> +p=<-3027,-359,-1400>, v=<-434,-47,-198>, a=<30,9,11> +p=<1135,-753,2936>, v=<161,-107,418>, a=<-18,10,-26> +p=<-42,2063,-1784>, v=<-1,291,-254>, a=<-4,-24,16> +p=<-1999,1276,-2642>, v=<-283,184,-376>, a=<21,-9,25> +p=<120,1838,-2283>, v=<12,259,-326>, a=<-4,-16,22> +p=<-1024,-1742,2584>, v=<-142,-251,369>, a=<10,12,-28> +p=<721,-2855,641>, v=<101,-409,93>, a=<-8,32,-8> +p=<1490,2720,-427>, v=<214,389,-62>, a=<-15,-31,5> +p=<1421,-2724,-181>, v=<204,-389,-28>, a=<-11,27,2> +p=<-2360,582,-1120>, v=<-338,83,-165>, a=<22,-10,13> +p=<269,1999,2898>, v=<38,283,412>, a=<1,-18,-24> +p=<1655,2601,-1260>, v=<235,376,-180>, a=<-19,-25,18> +p=<1942,480,-1689>, v=<277,66,-242>, a=<-17,-3,16> +p=<2661,-338,-795>, v=<379,-48,-117>, a=<-24,0,13> +p=<-2134,1862,151>, v=<-307,261,26>, a=<24,-18,-1> +p=<395,2238,1976>, v=<54,319,279>, a=<-5,-19,-19> +p=<-1141,2540,821>, v=<-162,361,117>, a=<10,-27,-7> +p=<308,1830,2034>, v=<45,268,288>, a=<-6,-14,-22> +p=<1793,-260,2231>, v=<260,-39,320>, a=<-18,1,-21> +p=<1849,-611,-1885>, v=<262,-87,-265>, a=<-17,4,18> +p=<-1380,1752,1205>, v=<-196,253,172>, a=<4,-19,-12> +p=<2708,897,-747>, v=<386,121,-102>, a=<-30,-6,8> +p=<2889,-1381,-891>, v=<411,-191,-129>, a=<-26,12,8> +p=<-324,-1067,-2585>, v=<-45,-150,-371>, a=<11,16,25> +p=<1961,564,2554>, v=<280,79,365>, a=<-20,-2,-28> +p=<698,-2610,-474>, v=<99,-373,-74>, a=<-3,26,4> +p=<-1090,-2386,-377>, v=<-157,-335,-54>, a=<14,23,7> +p=<806,1740,-2303>, v=<116,246,-328>, a=<-6,-17,20> +p=<-505,-2361,-842>, v=<-76,-341,-122>, a=<4,28,7> +p=<2614,-396,-1722>, v=<371,-56,-248>, a=<-26,3,17> +p=<1756,-1364,1108>, v=<250,-192,160>, a=<-13,10,-11> +p=<335,-2431,1555>, v=<48,-346,217>, a=<0,26,-15> +p=<-726,1196,2161>, v=<-100,163,308>, a=<9,-7,-21> +p=<-601,-1618,-2643>, v=<-85,-233,-381>, a=<3,18,26> +p=<-393,2630,547>, v=<-58,375,79>, a=<-1,-24,-2> +p=<-1361,-2031,1574>, v=<-198,-293,224>, a=<13,21,-10> +p=<-2160,1193,-1156>, v=<-308,172,-166>, a=<23,-11,11> +p=<-445,2972,-226>, v=<-65,421,-36>, a=<11,-29,0> +p=<-1198,-46,-2987>, v=<-168,-8,-427>, a=<7,0,29> +p=<-2653,-381,1831>, v=<-376,-57,266>, a=<24,3,-18> +p=<1327,1037,1965>, v=<189,148,285>, a=<-13,-10,-19> +p=<2148,-1555,1233>, v=<306,-222,176>, a=<-19,12,-13> +p=<-1982,-576,2273>, v=<-279,-82,322>, a=<17,6,-22> +p=<2224,-1197,2241>, v=<313,-170,320>, a=<-22,13,-26> +p=<2010,-929,2125>, v=<287,-129,303>, a=<-19,11,-22> +p=<-2360,2080,-414>, v=<-328,299,-56>, a=<30,-19,7> +p=<-595,-1253,2351>, v=<-85,-184,333>, a=<6,11,-16> +p=<-2267,-2244,1322>, v=<-324,-320,187>, a=<20,23,-8> +p=<-2046,1657,1637>, v=<-297,235,235>, a=<20,-8,-14> +p=<-756,-1657,-2373>, v=<-108,-232,-340>, a=<4,15,26> +p=<2756,412,1668>, v=<392,59,234>, a=<-30,-5,-21> +p=<2758,-798,762>, v=<390,-114,110>, a=<-29,8,-11> +p=<-1593,617,2060>, v=<-227,91,293>, a=<13,-7,-22> +p=<491,-2699,835>, v=<71,-386,119>, a=<-5,24,-11> +p=<890,2658,-262>, v=<126,383,-36>, a=<-8,-24,2> +p=<1795,-2852,130>, v=<257,-408,12>, a=<-21,27,6> +p=<-2725,-1481,765>, v=<-391,-208,114>, a=<27,19,-7> +p=<-2723,2258,1012>, v=<-389,322,142>, a=<25,-22,-6> +p=<2522,1827,447>, v=<360,261,58>, a=<-25,-18,-4> +p=<-1683,2548,682>, v=<-240,364,94>, a=<18,-24,-2> +p=<384,569,-3079>, v=<53,84,-439>, a=<0,-3,28> +p=<-1861,1920,1736>, v=<-262,273,248>, a=<15,-22,-17> +p=<-169,-1604,2028>, v=<-27,-224,285>, a=<-2,16,-20> +p=<-662,-2466,-822>, v=<-94,-349,-117>, a=<6,24,2> +p=<1706,-389,-2530>, v=<241,-58,-361>, a=<-14,3,22> +p=<2714,156,1611>, v=<385,30,228>, a=<-27,1,-18> +p=<1490,2184,280>, v=<212,314,45>, a=<-12,-21,-1> +p=<-1244,1802,1193>, v=<-177,259,172>, a=<14,-17,-11> +p=<1919,1888,-1698>, v=<274,273,-242>, a=<-12,-16,18> +p=<241,3194,375>, v=<33,451,52>, a=<-4,-33,-3> +p=<-1884,-964,-2394>, v=<-270,-134,-336>, a=<17,10,22> +p=<2568,-1502,-54>, v=<368,-214,-9>, a=<-28,15,-2> +p=<-886,-718,-2639>, v=<-126,-101,-378>, a=<1,5,22> +p=<-1945,-900,-2633>, v=<-280,-130,-373>, a=<13,9,26> +p=<-239,-556,2764>, v=<-31,-78,396>, a=<-2,-2,-28> +p=<-2138,-218,2748>, v=<-298,-25,392>, a=<23,1,-29> +p=<-1637,-2820,378>, v=<-233,-398,53>, a=<20,33,2> +p=<193,-575,2576>, v=<25,-80,370>, a=<1,8,-26> +p=<605,2629,1304>, v=<89,378,190>, a=<-6,-29,-16> +p=<836,852,2538>, v=<119,117,360>, a=<-8,-9,-22> +p=<-1333,-2240,-1051>, v=<-192,-324,-150>, a=<11,22,10> +p=<18,-2875,-335>, v=<4,-408,-50>, a=<0,33,-1> +p=<-918,-1709,-2115>, v=<-137,-244,-303>, a=<13,12,21> +p=<85,-2882,613>, v=<8,-410,82>, a=<0,27,-10> +p=<-639,-2216,-1903>, v=<-94,-316,-274>, a=<6,25,18> +p=<2782,142,-550>, v=<397,23,-79>, a=<-25,3,5> +p=<1602,1495,-1811>, v=<227,212,-259>, a=<-20,-17,18> +p=<-620,1564,-2076>, v=<-90,223,-297>, a=<11,-17,19> +p=<-2278,-1759,2266>, v=<-325,-253,326>, a=<21,17,-23> +p=<-586,2535,-445>, v=<-82,355,-70>, a=<6,-23,0> +p=<-104,-235,2787>, v=<-15,-35,400>, a=<3,2,-26> +p=<2921,-472,1807>, v=<420,-63,263>, a=<-26,6,-19> +p=<-1991,-813,-2235>, v=<-287,-111,-317>, a=<20,8,22> +p=<1441,2300,19>, v=<203,326,-2>, a=<-20,-17,4> +p=<-1473,1810,-2502>, v=<-210,258,-358>, a=<14,-18,24> +p=<908,-1484,2373>, v=<129,-208,339>, a=<-9,17,-22> +p=<2873,672,-91>, v=<415,101,-9>, a=<-29,-6,0> +p=<1096,-140,-2284>, v=<161,-20,-324>, a=<-15,-6,20> +p=<-2830,528,-828>, v=<-404,78,-120>, a=<32,-5,9> +p=<114,-1499,-1649>, v=<15,-212,-234>, a=<4,14,11> +p=<3081,468,338>, v=<440,66,48>, a=<-31,-3,-1> +p=<-2575,1783,-922>, v=<-366,254,-133>, a=<25,-16,7> +p=<2457,-1530,-1409>, v=<351,-220,-202>, a=<-25,15,19> +p=<930,-955,2829>, v=<131,-142,405>, a=<-6,9,-28> +p=<1024,268,2510>, v=<146,38,357>, a=<-11,3,-25> +p=<-2613,783,-255>, v=<-373,112,-37>, a=<24,-3,3> +p=<2409,579,133>, v=<345,79,24>, a=<-26,-7,-2> +p=<-965,-2692,2075>, v=<-133,-383,293>, a=<9,31,-18> +p=<-3,-2099,2393>, v=<-4,-299,343>, a=<-1,19,-23> +p=<1736,671,2334>, v=<248,95,337>, a=<-24,-4,-28> +p=<1147,-2922,-452>, v=<163,-415,-62>, a=<-6,29,6> +p=<1640,-2525,-622>, v=<242,-361,-88>, a=<-14,23,6> +p=<540,2258,1727>, v=<74,320,251>, a=<-1,-19,-16> +p=<1303,-449,2867>, v=<186,-62,413>, a=<-16,2,-21> +p=<-2721,1071,1253>, v=<-389,149,178>, a=<27,-13,-18> +p=<416,1877,1908>, v=<58,268,278>, a=<-1,-19,-19> +p=<-847,2302,1418>, v=<-120,327,202>, a=<8,-24,-8> +p=<-749,3158,-182>, v=<-104,452,-27>, a=<3,-33,-7> +p=<-833,151,2877>, v=<-113,24,410>, a=<8,-2,-28> +p=<2416,-32,-522>, v=<345,-4,-71>, a=<-26,1,5> +p=<1538,-2361,1077>, v=<221,-336,154>, a=<-14,22,-9> +p=<183,-2061,2457>, v=<23,-294,349>, a=<-1,23,-27> +p=<294,-739,-2874>, v=<44,-109,-411>, a=<-1,10,29> +p=<219,888,-3099>, v=<31,129,-439>, a=<-5,-4,31> +p=<-2714,1712,-703>, v=<-387,241,-98>, a=<23,-14,6> +p=<580,-2685,329>, v=<83,-385,50>, a=<-6,27,-9> +p=<1602,-2225,594>, v=<225,-312,82>, a=<-15,22,-6> +p=<-2216,2293,-6>, v=<-316,325,5>, a=<25,-26,2> +p=<566,-333,-3381>, v=<80,-44,-485>, a=<-14,3,33> +p=<778,2937,764>, v=<113,413,113>, a=<-8,-25,-1> +p=<-1579,2289,684>, v=<-227,330,97>, a=<12,-21,-6> +p=<-311,-1348,2861>, v=<-42,-188,406>, a=<1,11,-24> +p=<1454,2941,792>, v=<206,416,110>, a=<-18,-27,-12> +p=<-3130,484,262>, v=<-447,66,37>, a=<27,-1,-1> +p=<-134,1496,-3097>, v=<-24,216,-442>, a=<3,-15,26> +p=<-2050,-2080,-233>, v=<-291,-294,-33>, a=<22,21,0> +p=<2036,-2084,1404>, v=<294,-295,194>, a=<-22,19,-15> +p=<2424,1709,603>, v=<346,244,88>, a=<-24,-17,-4> +p=<-317,2401,-1590>, v=<-44,341,-226>, a=<7,-22,16> +p=<-1625,2183,-583>, v=<-228,308,-78>, a=<13,-20,4> +p=<-1738,812,2472>, v=<-246,119,353>, a=<17,-13,-24> +p=<-2533,1137,-2055>, v=<-360,166,-293>, a=<26,-6,20> +p=<2673,824,-1584>, v=<383,117,-228>, a=<-28,-9,14> +p=<-1366,-850,-2087>, v=<-193,-117,-301>, a=<10,8,20> +p=<-825,2218,-1454>, v=<-119,318,-202>, a=<3,-22,19> +p=<1155,2901,-761>, v=<162,415,-106>, a=<-11,-28,14> +p=<2150,14,-1951>, v=<307,2,-276>, a=<-23,4,21> +p=<-2778,391,421>, v=<-394,58,57>, a=<27,1,-3> +p=<-1369,1076,-2495>, v=<-192,155,-362>, a=<15,-5,20> +p=<-3039,703,-75>, v=<-439,100,-10>, a=<32,-12,1> +p=<-1660,1972,-1387>, v=<-235,281,-199>, a=<18,-16,11> +p=<-2951,-94,-1146>, v=<-419,-12,-164>, a=<34,-2,8> +p=<1062,176,2808>, v=<151,26,403>, a=<-6,3,-32> +p=<1345,1285,-2594>, v=<190,183,-370>, a=<-10,-10,28> +p=<1831,261,1743>, v=<265,34,253>, a=<-19,0,-16> +p=<2280,1868,-1042>, v=<329,270,-150>, a=<-26,-19,10> +p=<-1024,2588,1616>, v=<-146,372,232>, a=<12,-28,-19> +p=<2381,1809,-161>, v=<342,258,-23>, a=<-19,-24,3> +p=<1334,-2983,743>, v=<184,-426,105>, a=<-18,31,-12> +p=<-396,2571,-747>, v=<-51,368,-106>, a=<2,-26,11> +p=<963,2288,930>, v=<142,325,132>, a=<-9,-29,-8> +p=<-928,-2396,1354>, v=<-135,-341,195>, a=<9,30,-11> +p=<146,796,-2515>, v=<23,111,-361>, a=<4,0,24> +p=<958,630,2955>, v=<144,93,422>, a=<-6,-3,-32> +p=<601,-1734,-2450>, v=<87,-247,-350>, a=<-6,18,25> +p=<2599,-616,1270>, v=<378,-91,185>, a=<-26,6,-9> +p=<199,-2036,-2354>, v=<29,-290,-343>, a=<3,20,23> +p=<247,772,2206>, v=<37,111,315>, a=<-1,-8,-18> +p=<-2228,1569,969>, v=<-322,227,140>, a=<22,-15,-9> +p=<-1749,-939,-1821>, v=<-249,-134,-262>, a=<18,8,18> +p=<-1860,-3024,-265>, v=<-266,-427,-39>, a=<20,28,1> +p=<1522,1810,1745>, v=<216,264,250>, a=<-11,-19,-17> +p=<1842,511,-2521>, v=<262,73,-353>, a=<-23,0,23> +p=<-1619,-2370,-589>, v=<-235,-344,-83>, a=<16,23,6> +p=<-1794,1706,-796>, v=<-258,237,-116>, a=<19,-17,8> +p=<88,22,-2919>, v=<6,5,-416>, a=<0,1,31> +p=<2649,611,1019>, v=<376,88,142>, a=<-22,-4,-11> +p=<1339,-2121,2155>, v=<186,-307,305>, a=<-13,21,-17> +p=<2271,1004,1369>, v=<328,141,197>, a=<-17,-14,-18> +p=<-1214,-1374,2161>, v=<-168,-190,308>, a=<10,12,-22> +p=<3088,337,-1749>, v=<443,45,-252>, a=<-26,-3,19> +p=<45,-1088,2359>, v=<5,-155,335>, a=<2,6,-23> +p=<1236,-967,-2901>, v=<171,-138,-413>, a=<-13,3,31> +p=<-1861,2148,557>, v=<-268,310,79>, a=<18,-20,-2> +p=<2559,1712,1910>, v=<362,245,270>, a=<-27,-16,-12> +p=<360,-2737,-63>, v=<48,-389,-7>, a=<-8,26,5> +p=<-2342,344,-639>, v=<-331,48,-91>, a=<22,-4,6> +p=<-1927,1718,-363>, v=<-280,245,-52>, a=<13,-20,-4> +p=<-709,135,2956>, v=<-102,18,425>, a=<14,-2,-25> +p=<-1172,-247,-2787>, v=<-167,-31,-398>, a=<9,2,28> +p=<-1765,-2164,249>, v=<-249,-304,35>, a=<21,21,-2> +p=<-1650,-274,-2505>, v=<-238,-36,-351>, a=<15,2,19> +p=<-2000,1250,1355>, v=<-287,184,194>, a=<20,-11,-14> +p=<2935,-445,167>, v=<421,-61,20>, a=<-29,4,-1> +p=<1991,-2237,-145>, v=<284,-313,-17>, a=<-19,19,2> +p=<-1051,-2065,1870>, v=<-154,-294,267>, a=<5,17,-15> +p=<-1045,2303,1779>, v=<-146,331,254>, a=<5,-25,-16> +p=<-1391,1424,-2606>, v=<-196,202,-375>, a=<9,-14,26> +p=<-449,-2757,482>, v=<-66,-394,63>, a=<4,25,-8> +p=<0,-1817,-2332>, v=<0,-261,-340>, a=<4,21,26> +p=<1435,599,2138>, v=<206,90,305>, a=<-14,-11,-17> +p=<-333,-2904,512>, v=<-46,-413,69>, a=<3,27,0> +p=<-1300,-2501,974>, v=<-185,-356,141>, a=<15,20,-7> +p=<-1152,1985,-1339>, v=<-167,285,-189>, a=<10,-15,10> +p=<-2231,-1654,-73>, v=<-315,-237,-10>, a=<24,16,4> +p=<1000,1712,2282>, v=<143,249,330>, a=<-15,-17,-22> +p=<-3328,362,-738>, v=<-477,56,-107>, a=<30,-3,7> +p=<2125,1946,1266>, v=<308,281,172>, a=<-18,-22,-10> +p=<584,1286,2843>, v=<81,178,401>, a=<-4,-14,-29> +p=<3430,-271,802>, v=<494,-38,118>, a=<-36,-1,-7> +p=<-2158,-405,2248>, v=<-308,-55,326>, a=<22,4,-22> +p=<-1612,-2558,132>, v=<-228,-365,18>, a=<21,29,0> +p=<-489,2723,-1390>, v=<-64,390,-198>, a=<1,-24,11> +p=<3076,1529,326>, v=<441,216,45>, a=<-24,-17,-1> +p=<1698,1152,2581>, v=<243,167,370>, a=<-20,-9,-25> +p=<-2453,80,-872>, v=<-348,14,-123>, a=<24,2,8> +p=<-2106,-1936,523>, v=<-303,-276,77>, a=<21,17,-5> +p=<-2612,-1675,657>, v=<-373,-244,93>, a=<22,18,-4> +p=<-1482,-1967,-1702>, v=<-207,-283,-245>, a=<14,16,17> +p=<-2518,1724,-814>, v=<-358,248,-115>, a=<24,-14,8> +p=<-2594,1458,-618>, v=<-374,214,-89>, a=<28,-15,7> +p=<-2498,1382,-322>, v=<-355,203,-48>, a=<27,-12,2> +p=<1526,-471,-2412>, v=<219,-70,-343>, a=<-11,4,25> +p=<-818,-1187,-2436>, v=<-111,-169,-348>, a=<10,6,25> +p=<1285,1242,-1814>, v=<179,177,-258>, a=<-12,-15,20> +p=<-2778,-1519,388>, v=<-395,-221,54>, a=<26,15,-4> +p=<-1778,-2274,-445>, v=<-256,-320,-63>, a=<17,18,2> +p=<1465,2951,-1028>, v=<214,421,-146>, a=<-10,-29,12> +p=<-2586,-2176,882>, v=<-367,-310,125>, a=<27,15,-11> +p=<-1800,-2702,-158>, v=<-255,-382,-20>, a=<20,24,1> +p=<-1488,-2830,-496>, v=<-212,-404,-70>, a=<14,27,4> +p=<2028,2471,-471>, v=<291,358,-66>, a=<-15,-21,0> +p=<1151,-79,2727>, v=<164,-8,390>, a=<-11,1,-26> +p=<-2620,-2745,-61>, v=<-373,-394,-8>, a=<31,27,0> +p=<231,-1223,2860>, v=<33,-170,409>, a=<-1,10,-26> +p=<2302,-656,-944>, v=<325,-88,-133>, a=<-21,6,15> +p=<-1157,-1411,2594>, v=<-170,-201,370>, a=<14,15,-31> +p=<-2064,-2094,1251>, v=<-294,-299,178>, a=<20,18,-11> +p=<2100,-2124,-488>, v=<295,-307,-70>, a=<-25,20,1> +p=<-1825,-2378,459>, v=<-263,-339,72>, a=<19,23,-6> +p=<-1205,1830,984>, v=<-173,261,132>, a=<12,-20,-9> +p=<3020,-168,-204>, v=<431,-24,-25>, a=<-32,2,5> +p=<1518,-1957,-2681>, v=<215,-278,-381>, a=<-19,19,27> +p=<-1734,-1066,2148>, v=<-249,-149,306>, a=<20,10,-23> +p=<-153,-2000,1830>, v=<-21,-283,264>, a=<-5,15,-14> +p=<-2504,-1384,1088>, v=<-356,-198,149>, a=<25,11,-14> +p=<1669,881,2447>, v=<236,118,352>, a=<-15,-6,-21> +p=<1535,-853,2618>, v=<221,-121,379>, a=<-17,11,-29> +p=<-2917,54,1511>, v=<-414,6,215>, a=<29,0,-12> +p=<-1106,-180,-2705>, v=<-156,-25,-386>, a=<7,0,21> +p=<-59,336,-2881>, v=<-9,51,-407>, a=<0,-2,29> +p=<-2210,1011,-845>, v=<-322,146,-120>, a=<19,-7,0> +p=<2826,-524,2237>, v=<403,-72,319>, a=<-22,5,-22> +p=<-1208,-2358,645>, v=<-171,-343,89>, a=<5,29,-1> +p=<-2048,2314,800>, v=<-293,334,112>, a=<22,-25,-1> +p=<-2149,5,-1355>, v=<-306,-3,-196>, a=<21,4,18> +p=<1284,662,-2593>, v=<184,94,-374>, a=<-12,-6,32> +p=<-1874,-2537,450>, v=<-267,-361,60>, a=<20,19,-5> +p=<2705,530,-198>, v=<387,75,-20>, a=<-29,2,1> +p=<-2624,-954,-1520>, v=<-377,-134,-220>, a=<23,12,22> +p=<-695,-376,-2690>, v=<-99,-52,-384>, a=<4,3,30> +p=<2412,-1747,-1046>, v=<339,-246,-151>, a=<-21,12,10> +p=<-1279,-2107,-1243>, v=<-180,-304,-177>, a=<12,22,14> +p=<337,-1405,2548>, v=<49,-203,364>, a=<-5,18,-27> +p=<1135,-2203,1556>, v=<161,-315,220>, a=<-14,27,-15> +p=<-754,2322,-1334>, v=<-107,331,-189>, a=<4,-24,11> +p=<-1854,-529,-2664>, v=<-261,-72,-378>, a=<16,8,28> +p=<2070,2256,-1296>, v=<290,326,-182>, a=<-15,-23,11> +p=<-1011,2553,1237>, v=<-149,365,177>, a=<9,-25,-14> +p=<-1374,-2495,412>, v=<-196,-353,61>, a=<12,24,-4> +p=<172,-2059,2245>, v=<24,-295,318>, a=<0,21,-24> +p=<88,1541,-2567>, v=<12,220,-369>, a=<-3,-15,29> +p=<-886,2415,982>, v=<-129,344,142>, a=<9,-29,-12> diff --git a/src/main/resources/2017/day21.txt b/src/main/resources/2017/day21.txt new file mode 100644 index 00000000..e805ea98 --- /dev/null +++ b/src/main/resources/2017/day21.txt @@ -0,0 +1,108 @@ +../.. => .../.##/##. +#./.. => .##/.##/#.. +##/.. => ..#/.../### +.#/#. => #.#/..#/##. +##/#. => .#./.#./..# +##/## => #.#/#../### +.../.../... => ..../#.../.##./..#. +#../.../... => ####/#.##/##.#/..#. +.#./.../... => ..##/..##/..##/..## +##./.../... => ..../..#./##../##.# +#.#/.../... => ##.#/..../####/...# +###/.../... => .#.#/.###/.#../.#.# +.#./#../... => .###/#.#./...#/##.. +##./#../... => #.##/#.../####/###. +..#/#../... => ####/...#/...#/#.## +#.#/#../... => .#../##../..##/..#. +.##/#../... => .#../..##/..../.##. +###/#../... => #.../..#./.#.#/#..# +.../.#./... => #.#./.#.#/.###/...# +#../.#./... => ###./.#../...#/.#.. +.#./.#./... => ##.#/.#../#..#/##.. +##./.#./... => #..#/...#/.#.#/###. +#.#/.#./... => .##./#.../#..#/.### +###/.#./... => .#.#/##.#/..../##.# +.#./##./... => ##.#/#.##/.#.#/#.## +##./##./... => #.##/..#./..#./.##. +..#/##./... => ..../#.../..#./..## +#.#/##./... => .##./####/####/#### +.##/##./... => #.##/####/#.##/#..# +###/##./... => .#../.###/##../...# +.../#.#/... => ...#/...#/#.##/#### +#../#.#/... => ..#./..#./###./.##. +.#./#.#/... => .##./##../.###/.#.# +##./#.#/... => #.#./.#../.##./...# +#.#/#.#/... => ##.#/..##/#.../##.# +###/#.#/... => ..##/##../.#.#/..## +.../###/... => .#../#.../.##./.... +#../###/... => ..##/..##/...#/.##. +.#./###/... => #..#/..#./#.#./..## +##./###/... => #.##/.#../##.#/##.# +#.#/###/... => ####/###./.##./...# +###/###/... => #..#/#.##/..../.##. +..#/.../#.. => #.#./.#../##../..#. +#.#/.../#.. => ##.#/####/##../.#.# +.##/.../#.. => ####/##../#..#/..#. +###/.../#.. => ##../..#./####/##.# +.##/#../#.. => ##../#.#./###./..## +###/#../#.. => ..../.#../#..#/...# +..#/.#./#.. => ..#./...#/.###/.#.# +#.#/.#./#.. => ###./..../#.#./###. +.##/.#./#.. => ####/#.##/.#.#/.#.. +###/.#./#.. => ###./#.##/##../#### +.##/##./#.. => ##.#/..##/..#./.#.. +###/##./#.. => ##.#/.##./.###/.##. +#../..#/#.. => #.../###./##.#/#..# +.#./..#/#.. => ..##/.###/...#/..#. +##./..#/#.. => ##../#.#./...#/.#.. +#.#/..#/#.. => ..#./###./##../.### +.##/..#/#.. => #.../.##./..../#.#. +###/..#/#.. => .#.#/#.##/#.##/..#. +#../#.#/#.. => ..##/..##/#.../#### +.#./#.#/#.. => #.../...#/..../..## +##./#.#/#.. => ###./..##/.#../.##. +..#/#.#/#.. => ...#/..##/..#./.#.. +#.#/#.#/#.. => #.#./.#../..../##.. +.##/#.#/#.. => ..#./.###/##.#/.... +###/#.#/#.. => #.##/..##/...#/##.. +#../.##/#.. => #.#./##../###./.#.# +.#./.##/#.. => .###/#..#/.##./.... +##./.##/#.. => .#.#/.#../.###/.##. +#.#/.##/#.. => .#../..##/###./#.## +.##/.##/#.. => ##../.##./..#./.#.. +###/.##/#.. => .#.#/..#./#..#/.### +#../###/#.. => #.##/#..#/.#.#/#.#. +.#./###/#.. => #.../#..#/#.../.#.# +##./###/#.. => ##../####/##../.### +..#/###/#.. => #.../..../####/##.# +#.#/###/#.. => ...#/..../...#/..## +.##/###/#.. => .#../####/#.##/.#.. +###/###/#.. => ###./.#.#/#.../##.. +.#./#.#/.#. => ...#/##../####/...# +##./#.#/.#. => ####/#..#/###./#.## +#.#/#.#/.#. => .###/#..#/..#./...# +###/#.#/.#. => ###./.###/##.#/###. +.#./###/.#. => #..#/#.../..#./#### +##./###/.#. => #.../..../#..#/..## +#.#/###/.#. => #..#/.#.#/#.../##.. +###/###/.#. => .#.#/..../.#.#/#.## +#.#/..#/##. => .#../..##/...#/###. +###/..#/##. => .###/..#./##.#/##.# +.##/#.#/##. => ####/#.##/.##./##.. +###/#.#/##. => #..#/#..#/####/#.## +#.#/.##/##. => .###/#.#./#..#/.#.# +###/.##/##. => #.#./#.#./#.##/..## +.##/###/##. => ####/###./##.#/##.# +###/###/##. => ##../..##/#.#./#... +#.#/.../#.# => .#../###./.###/##.# +###/.../#.# => ..../.#.#/#..#/##.. +###/#../#.# => ..#./#.../.##./...# +#.#/.#./#.# => ...#/#.../##.#/.##. +###/.#./#.# => ..../..../#.#./##.# +###/##./#.# => .#../...#/...#/###. +#.#/#.#/#.# => ...#/#.../##../.### +###/#.#/#.# => #.../...#/.#../#.## +#.#/###/#.# => ..../.##./..../##.. +###/###/#.# => .##./.#.#/#.##/.##. +###/#.#/### => #.#./####/.##./.##. +###/###/### => .#.#/..##/#.##/.##. diff --git a/src/main/resources/2017/day22.txt b/src/main/resources/2017/day22.txt new file mode 100644 index 00000000..0ffb8656 --- /dev/null +++ b/src/main/resources/2017/day22.txt @@ -0,0 +1,25 @@ +#.###...#..#..#...##.#### +##.##.#..##.#..#.#..##### +.####..###.#.#####.#.##.# +##..#.##.#.#.#...#..##..# +..#...####.#.###.###...#. +#..###.##.###.....#....#. +.#..#.##.##....##...####. +###.##....#...#.##....##. +..#.###..######.#.####... +.#.###..#.##.#..##.###### +###.####.#####.####....#. +#...####.#.##...##..#.#.. +##.######.#....##.#.####. +.#.#..#...##....#....#... +.####.##.#..##...#..####. +.#.####.##..###..###..##. +...#...####...#.#.#.###.# +#.##.####.#..##.###.####. +.#.#...####....##..####.# +##.###.##..####..#.###### +#.#...#.#.##.####........ +.......#..##..#.#..###... +.#..###.###........##.#.. +.######.......#.#.##.#.#. +.##..#.###.....##.#.#...# diff --git a/src/main/resources/2017/day23.txt b/src/main/resources/2017/day23.txt new file mode 100644 index 00000000..8155688d --- /dev/null +++ b/src/main/resources/2017/day23.txt @@ -0,0 +1,32 @@ +set b 67 +set c b +jnz a 2 +jnz 1 5 +mul b 100 +sub b -100000 +set c b +sub c -17000 +set f 1 +set d 2 +set e 2 +set g d +mul g e +sub g b +jnz g 2 +set f 0 +sub e -1 +set g e +sub g b +jnz g -8 +sub d -1 +set g d +sub g b +jnz g -13 +jnz f 2 +sub h -1 +set g b +sub g c +jnz g 2 +jnz 1 3 +sub b -17 +jnz 1 -23 diff --git a/src/main/resources/2017/day24.txt b/src/main/resources/2017/day24.txt new file mode 100644 index 00000000..d990a343 --- /dev/null +++ b/src/main/resources/2017/day24.txt @@ -0,0 +1,57 @@ +24/14 +30/24 +29/44 +47/37 +6/14 +20/37 +14/45 +5/5 +26/44 +2/31 +19/40 +47/11 +0/45 +36/31 +3/32 +30/35 +32/41 +39/30 +46/50 +33/33 +0/39 +44/30 +49/4 +41/50 +50/36 +5/31 +49/41 +20/24 +38/23 +4/30 +40/44 +44/5 +0/43 +38/20 +20/16 +34/38 +5/37 +40/24 +22/17 +17/3 +9/11 +41/35 +42/7 +22/48 +47/45 +6/28 +23/40 +15/15 +29/12 +45/11 +21/31 +27/8 +18/44 +2/17 +46/17 +29/29 +45/50 diff --git a/src/main/resources/2017/day25.txt b/src/main/resources/2017/day25.txt new file mode 100644 index 00000000..76a29e20 --- /dev/null +++ b/src/main/resources/2017/day25.txt @@ -0,0 +1,62 @@ +Begin in state A. +Perform a diagnostic checksum after 12481997 steps. + +In state A: + If the current value is 0: + - Write the value 1. + - Move one slot to the right. + - Continue with state B. + If the current value is 1: + - Write the value 0. + - Move one slot to the left. + - Continue with state C. + +In state B: + If the current value is 0: + - Write the value 1. + - Move one slot to the left. + - Continue with state A. + If the current value is 1: + - Write the value 1. + - Move one slot to the right. + - Continue with state D. + +In state C: + If the current value is 0: + - Write the value 0. + - Move one slot to the left. + - Continue with state B. + If the current value is 1: + - Write the value 0. + - Move one slot to the left. + - Continue with state E. + +In state D: + If the current value is 0: + - Write the value 1. + - Move one slot to the right. + - Continue with state A. + If the current value is 1: + - Write the value 0. + - Move one slot to the right. + - Continue with state B. + +In state E: + If the current value is 0: + - Write the value 1. + - Move one slot to the left. + - Continue with state F. + If the current value is 1: + - Write the value 1. + - Move one slot to the left. + - Continue with state C. + +In state F: + If the current value is 0: + - Write the value 1. + - Move one slot to the right. + - Continue with state D. + If the current value is 1: + - Write the value 1. + - Move one slot to the right. + - Continue with state A. diff --git a/src/main/resources/2017/day3.txt b/src/main/resources/2017/day3.txt new file mode 100644 index 00000000..6cd3b5b8 --- /dev/null +++ b/src/main/resources/2017/day3.txt @@ -0,0 +1 @@ +361527 diff --git a/src/main/resources/2017/day4.txt b/src/main/resources/2017/day4.txt new file mode 100644 index 00000000..cef14656 --- /dev/null +++ b/src/main/resources/2017/day4.txt @@ -0,0 +1,512 @@ +una bokpr ftz ryw nau yknf fguaczl anu +tvay wvco bcoblpt fwzg sfsys zvuqll mcbhwz ovcw fgdy +ynsocz vid rfmsy essqt fpbjvvq sldje qfpvjvb +yvh nxc kla vhy vkbq cxfzgr +kljv ymobo jlvk ebst cse cmlub tavputz omoby psif +ebfuvvu paqgzri uvvubef hglk jvn gzeln bdl ziqgpra bzcfa +tclq ytw tclq tezcqys +qae eofr yzwcwqf wqm ytcdnc pxnmkw +krryi irykr ycp lbeed ykrir lhq rdd tyujwd +hms pii lxoa dchsvz bepjwst bllxkqg hsm yrdj myzvju msh lwnnc +yxqh hqxy xkn ljjsqjh jjljshq +mhgsehj urbvnvf gbz ykxsd hsmgehj wtoc ujpfaos eir vifog tsy kdo +wfruf wwijme pxbbsvf asmgs ccbn vwtc mkhah oxxfh +lxqy jzvcvd cfgg uahxrwr dqmaqr bwzm wruxhra lrb lmk +jspgxo yuhgni njzqtn zglkzz ybc itj orqr zgqwuoo mjagh erll srqrk +cbrtnbx ukblei ienmdm sinzq lytyliz mma lizylty zeumwgu +aeggz eljcry buqdeog dvjzn ilvw arz vep kxdzm mvh szkf +imn sfty ugg flqq nydky mni bkqzlok wye lehwlmp xeyfmj +beyv oamrpkc tebdkwv zlq jes mqvif sej qpsnmjz edvtbkw +hylmacl wwlra xntnvg ppvb bzof cymllha +qktxomf ngfpuz qqz malc zxuqz szg zis vzro rfpgk +phru sxlg qzqlw uej vmd omzga jue +drzgojf ttqdqar weikik wvrjtxi gbj jramqh nlwoj drzgojf bgabmn xqlaeun +aiuohu pca apkmv cpa kmvpa nmdn +gelymv eto itcnuhn ote teo +oxiz xzio kqu wwgow +picoyb coibpy acsw ehlirq deyz gymqvz opicyb vuet lrl +zerg rezg miwtjgw gezr cui +mlh qlu ktil tnlgnrk bfqbk pgg qxeyd noadmjo nonlsh eqxdy +yqqaq yqqqa xod oss +mkotw bznvs xowoofq sebp wsgpsmn fytcpc vvmzr vmzrv xwtxz zrvvm +dvs twhz teqmlow oqg sjetxd aku cwl qfvrkex mndsio hfg +itdl qwdagkk wli tdil vlgur dyl xvfm +wlmyd dwmlx zhmqd zqmhd edzsvmz yclg umpq +petva gazw byrca pvaet epkoqh nlp vqfl vatpe +rykn ckr dijkme kmiedj ozlh deikmj +kuecjh sfqv pojfzf fjopzf fjpfzo amxtc +hri gglmial lrwbyc memgszu hir cfwlg ylcrwb +rxrfbtv pwpra fngt auh rapwp zrruuq uah +cevc utfd ysrfcw nnlg fnqtx aua htteunu mrjhhj +tvnxznj mvpagt nqmxvnl mutn ntmu eybh vkqeaj frayclp +ygktzxo lzwwy qsipu nwb jdmw pahao paow mwjd uivqbnj woap nyyogcc +log zihz rsmx ixfr xwvd osg zxc gol ufnbig +dogve cnb osa xbafl vefr nxlw yjgquui +ucyl aaoae ktjvi fyps xvjhpbh iiur tuc +pqt jasxg ehhs lzjzzzl sqmmj vwyva eklbtv hksanb fuesnd oyw fuesdn +uankv wesi frhpau qiucu lim uzbdapf ciwjd tifbqxh tfbtsdi +vgjd izpofu fqjpcct phuz +cfg cfg rgahl frm emn pbfsmgy frm jemwqgn sfpm azunntj igl +daps hpe fqg err sapd dci vbzlqx gsigq eyp rre +iuqyqdy djprdj mgtkdxr pwmkzv wmkvzp hppisd pidphs +rlr rrl vhevh cucprc xki urte lrr zfc xrqydzk ipjkyxj kytul +jwbkaee rgyjl rjljbwe ppq plp pfts ijd ckpvmw mbdrqh zolt lzmr +alw law awl wknavtb esklsbj wvssyai +aqy ldf qdht soxkg qtfipe nsdm aqe rtlc fbqrk ius gybbhxr +xteov wgqoqim nlz szlj oxevt xwb +tmgdst fyn oul tsohzbq ltmxji fgops gatssx zxdzfc talb +zkvjpu jnhtc nxs jqv pyoqz zsj ckwd xot ykai +fxfarre yjbxvj lqfaglo mbxuv bmuxv bxumv +yrhi uosldj hryi fwres ycygw ycvxze zevxyc iyk +yphev xisbai xdb hzrbg ayxbhdx qnvbus pwc +wytqraw yvurj erqckl rvrvda xsh gsd bxtm acxle gpndk +kpvjtu vacggk oabcuoq qusf zitqpgn pbyq ocabouq ntpgizq gaiiry dke +frz ceozajo ljltawq tjepzp iflv +zntejm dkfgc ysno noys sony muy +qdnyvvw oykq bnmldt zjgauw pviurd cbcnl tnkhq ebsey bccln arvwe +iqazt xidjgom wcrdz itht lfh ifzwkj rwqxhy ervcgmt vojg lzntz ezg +tlcxioh qvvkan wpi ody +mhsy dwm hyms yegvvc +hbkvi wvemc uwxgqf pwrgu wcy wxqfgu qkzppc vxcwdwd rcgp ivjd wmevc +upc ucp cpu unmr pyod +bqfew ebwfq paccwh phgc fchhr jrnio +abh bjalls bdtac zzvt totdlc yptqmgu rpcin bch cqklqly +bsnss qcsgi tegyz lqoqkpf qvatlyu ibza mzfotsk lye oqqf mnor +lzrxca stkbn axhr wckbip bsntk ahrx +oricdw cnpte dbz nqx xloxc bdz fdsl uyvgi nvoy ezbi +nlcqye ofta jcvqvtg yxduyh btawc tjgvqvc tcvqjvg +nji znctdfm kkmp pmt ikhl jjoubc xnp zdctnmf covvmsh ydh ircplcm +yafkuk yasqsyt ytqayss nusgb ukfyka +yogcf emg jlkd blupemf axg wihhrb ysernt yznhz +gmc yyqtgp use lohoit +lclwa ojjkm rxr rrx +punyfv iphw ddbc jghx lrssszc bepexv sicpy syicp lszrscs vrqjb +rjanra juh hljdmad scu usc baifu ijs suc bgdbbv +ogs hehi lgiwowc wwezznc ogs lorcl naunpll wlmal ajcbj ciujw +slenm xxod vhf amhts +mrrduda mrrduda lwecwjv lwecwjv vvzmjla cjipv +ixnv invx inmzz aoxghpv +ulyvfrf zsup zfryjy xoo agdsd giw papa ljtu rzbjiq wrex +bzpv svpuyov mklrct uzox +fxs iypd uaqch kxazj ksjyv +uxaommf xtq uubbfk bmlq kdhgjzg oxwpag itfij irmkjx ggod sddcyo bopn +lch plmvfni qbjr dnu zjcod qlwax gejmyj gxjqm mfzkb gejmyj +yoa thrfbto wposvrm amulogu mcqzfax fjquli oay +kywj kqqhney ozuljxz wqwfte ubo mjj anhhg aphy ocfnef yhin ywnx +vxuledm wllj obqtsrr jwll uvmelxd xvj gbwte +hevc bitwu ydw ywd btiwu iuether gfe +dzn ssmfpel wbbdeyt xge hrfi +zebz ifhq euto ppfnrwc winkkj +utuly wtdt iahpe ihtxwmh zxun bqluj hsaxgcs ytluu jlfnnuv drxlctr myhp +kwxgy hreul rsnh wdmsx kkajywb +bond djq kccazc zvzcie hndm myx cmhyhkc ove ord dqj +zcong tekgn pbzs ywqgqgu eizrx ypydeku yqyjdjp dwsu zxire zcgon iggnvf +tkioh hflkm fsjz gisjbi otikh +ccdqqm fdabbne fyd lbyqm cyzgtd puitvjz nluf hirrpxd tgxrg vvl +hjnygbz fnu twwbp xqw pfdlt uoalyme rsd muayeol ezcq +kubeooi bxgwoun paogjs twvwlji opsajg higbdfi aazo evmj +sfipxe mqbkmrn plwqd zvq nmvom fyfbs nbs qkrbmmn eym kqnrmbm +ruhsp hurps mqws umm sphru +ksjs pgpxh qozg enplxbn oqzg rvjnaje sjsk +rbwbvog mhgtgg uld twrqz rbf kpop +lwho lohw ylhd dej lydh vsfffsm +icljgu gluijc vthqx orynv xhvqt +biav elxkct mtaw nlafk snyr cbqdwim blim rtrqmc wze cxktel +fgpeia ebkhga azlfsr bsj pipvwsd nry bayrjzl ftth ynr mfhd +ymlowur nighqgk yjv pyxf nan xamb ohm jvy owrxbg icbz +iyyt linaqu httt zyfeo udap mllq pdxo lpl djhqaou zkit llp +dxspk yge kcqjqpz ulb hoe mfx nwayo +rdnmmh gyqd qhxrzj dgizu lyittbv txngpdg fiu mwd ndp oks vxnxybi +eul ztpe evnz yxx iuwon rkbbsw liy mqhxt +qahp zwn ualtk txbt cbthj xchqy pirucp povdwq +mqwu mwww muiafa miaafu hzripx wmww +auw hyyi ylewfi ihva jknbrry voxzooq xaos xymv qzzjw hjc +enpb jqa ajciy cbeopfs tqrlqj ecudb gso cyjai gxoet +yohkjj yohjjk xapawgo rtgnjj +lnlxxn nxllnx vhjrev uoew zts smkd kynlrg +bkblpr vgafcy alju aiyqe eebtsyu buve hdesodl pspbohw +aacmw qpndwo tcwsfqy qecnms wondpq sto +wdsyxe edsxyw jnzruiw pfqdrhi +pfgxekl vswgxhb qyn mykn jimiatq zkcz jimiatq kaexgxm mykn +xegwn upudt dew uqjrcl abyof hbtiko wxgne sorgno etm +xzojs zxsjo szjox gumjtwi +gttngkk bwdgce bhuw fgo rcbf byw +ngtzwqx ptx xodmy ctmtf oioahmm qajlhje jzilpk cvypp ijaefz +arlx slcugvm hyuo zoptsh emyr tndx rroecp tdnx xea rtkpd +sfckdx ktyrjju ruwjtp zhqznj vncun +oqqh xpc itrdg gtrid hoqq tuo yijh ncp suvck jic +brrlqu twdt urblrq twtd +brfuh arwtkpu mzlj wdyqk +pmag dtwnva nect azld axqrwy apgm xbv gdq ienubsy andvwt +hqb qbh gxdl mwjn cmfsmik +yiwma utlor qxjfjsn aomlvu gxp ryj rfkdsw kuguhyi qxxpg +ifq wcvcgly jdalgzx lgcycwv rajmnqw +latakk yxxbw evy vey +odkvw ojgveb jhg qwhkyoh btvu qbfot nouv owgtsi pdwbmfn pmvcv dnqbo +tmka qqnty knz swi fyvmt ikcdu jfjzsfu dshgi cosacuj szjjuff +eanet uua fbztk bzkft +jepi hyo jgzplr jyqk zzcs iepj hfamvu bfgbz sjsnf lprgzj +mlca ywko mtg vkfv ojka zbelq qkaujs simt kafq qtycfzo +sqh omv llvra ecvxmtx dpnafv llvszx xzlsvl quj ufnhvod faraf fivmnl +pvxlls fzeoav ahgv uhq nodcr cohy vqisgaj jsfcyur dbohh +ztccbwk okv vok kov ywel +xyu cmaikc jgqu ozccdzk ybn yoeq fky aetrkj eyoyvla laiu cermo +sssnb kxly mgvaz jpffkq bysbwwu rfnkm eycp ipyd hyi wjew +obdfqmh flkm semednj iafewg lvh uwa ciepe +zmldp ykffe gtehz qlmvule edrtzg prund oagwto qia bvyxur +kjok neno qbxh wqgkkt ympclso poyclsm cajgnnn +paqili kur sfit jbqchzx bhjqzxc +fhghm ubtaana qbn autnaab aaaunbt vmz +exlrl hfnpq zgdwx smix nyg ogccrhj iimhhwc uhcldo oydwxp kqc jxxpycv +wtdqjfh ialoqr zeej ipoh qtjdwhf wdhqftj +jcgug cmtvmu ynhnilj txlv uemowyu cvrool oolcvr njr cxqntdh +uhtwtp tgnc jmmjl utiu jfxtsoz cxwqcz +qntxl lyownp tsp tps mixyge rqfqumc bxjiry zmaj azjm +abt bat tftvm nyjs jyns +hzsdh pwthfvm cedg hzsdh rsxtehn owh cedg +hcoiny aqbeme eeuigt pocpvox tiugee rwb tvgmyc ojg hgdaf +mzlwcfc uoobo bouoo tvgvmiu evsfkm popgm evmfsk ehxvits vebxbmd qhmz jzj +mypgg jbpx vgeb ahvjl zbm ancdzfy wytkcq +bivscw zmzmjxu jzm fwb ujefxp jzsiskp cgx atcj sszikjp cxg nqvxga +vvurbxp iry zlz gfnlpuy npyugfl +fpmee mhj iul lui liu +xjoesn ggsdc vnisnmw kyxmmv xphfq +zcsml ngzlpy udaoab eotbv ylca bfmums izx +pdi bpyoep cofsy qazl oaovek fvfbe sotc lfdmaea smvs +zajm bskaqhj qxyiptb bdyeuqr dqjrekn iywj +hzhky hukvpve iqcbwju nyiwb rvutxlb hyuah urnhxg savicaw hexr ptedk +qndji wrr sin ljogf ncrb zvt tvz +kvfke tjpzhrl zvd doq kxyw fdgr oqd egkybdh rqpfxks nja +escstpv ccc ryzdv gxkjuyt gkhw jxnfda awpzg csestpv +cpcd onxeae nimbrpt zyji qnuo ktxgwbj vtjfglz skcozd zgii zgii nimbrpt +lwq iue hfbv hgbg aeqc +vzgbod yjkoc ckt bpiaz +eyco ecoy uzousjp faxj utu yoec +fhqdi myd tvex bzizkcx pifcfhz fczhpif eofzv bqzd knbhbgj dok ffcizhp +qlqlgmz hofmnc cwtk ahgnpne acn prwdh hwdrp rfofhl atavrf afkcbk +sgl apyfr pwxzptv osuwy vmqqh soyuw lqilked oinhh +eglqdox gcxfxql ejtnwu wvho can eyu uetwnj elgdxqo atvpkk eailsnn cwosyn +mylxhuj kbc apnllw qbmtj sqy hxtnvoe ins iyudo aagezrq nsi ikvn +lpmzo tkdeg zilkm vdkmtf yulbdd dkfmtv +fzrv grq zfvr ychga gqr +vdjxx wew pdxgp cjywsc meoffrj pgpdx chxmw eizgz ruea +iaklyhx btqqik tbiqqk ynmq laxykhi qatrnsh lnmtm plz +sfogup jtdsx tsxjd wwzkyy wzywky vgdsgr +paupqb kyy bccklmr vopviup lctcxza yyk yky +gduuia doek hqcr upvb szeewnu rrrdz +lhnsaf lut kzf allu dvj tyngx zkf aqsgz rtkzzdz +xxqj msg xxqj ezmm tmyji msg cco tain ctpel +pvcfzv rhn hlhxyu bghzzpx dlhvr hrvdl lhuxhy +npzhkp voghdv rvezqff hvgvdo jndf gpa wevrwpu +faixq aecax hxdouer yqlngzd grf wid iwd cce xnmmr +ifqwiah dib ibd dtvkwqj mpn dtwjkqv kyntq xwlv +rwoiz dja cvv lvza kfdblq bgtwgh ongdub wggthb lvaz +xajf eyasx rupsyqx wubjwx bsrqi ripghci sbzxp sbz dhooax +ydnv tvhwgp uvrh yryhl yxdlwa ladwxy awi mkwyn ghvpwt +qrl vwdvwic ocbhpi bcmz dor lrq hokg gokh +adz echnlju ebnmw twjl cfw loq fqklyyq clgqq jtgpsu wltj +vwlgisb murtsw ldkacqv wxfcke vcqkald ldhh gsl kpzn +itnvo lyddd saewfse spnri vtmst iblx +qsgv qni wvqiih mneg lkpb quhbkyi +efwaaa huu fslzwpc uuh szflwpc +sgmj ajh vcwpcua enltaks aquooh bwoda txbuve +vbe astgezx xqbxkdj evb bev yuuesdc fvohzq +gpn oqxfz pbwibjw gljdbf gbldfj sis dpk iss +pha ebybvye ntxhs wcuce +odnnywv qpcjll aslxqjm injfs vkbturz atxi +zzncfj kbhk jzzvnwf kqipx qkxpi rzb czfnzj +ygu vqpnxkw trdtv rrte +hrutley ljxuuq yonbpmk hmpc etyrhlu +odxp fpvizzx dxop jjbr skhxq mpzawhe zptdxuu erxk adbbuk zfzipvx +qjovasi yutjpg rcp bykpctm fqmmg pckbymt hqj +ssqc cype tkowxb fbh rsluu zjk scrukwv pkuexk qlgjtdq oulrke +bkcd nnf hdj sdlweyr uyf kmvzq +sgeg moy png blv bblree ufe uqknuqd lnjwbh +snpex hrbcfok pffv cwrvhcs fpk uprhn gbpy zkxyi esug ccnnj +bmwue dugcrdu uifiy clid rdmodec jodp hti xptj tpopl vuwhdyi hnoq +cwlkg qsz nnp lfyk pwn dpe oeuzp jusxxkq qlnchc +tsmkvge pxauyc cxypua boi hybq rzf iioyi rtedkc gjmk iob mqb +cvip wgbjhe ulwg jckkwd gdu bmaoisp +drpl xbliszf rpld ngnvgxl xnrd xsmd oetrcmn xvfohp mtocren +habmf dmfxq qitw xxtybla cxvb colcvpj sowoeuh bhmfa plccvjo naftjgw +cix soo icx ahx cdrjyxe htcnp +acoksaf cgahlg tdj euchwnj bdn lunouq aewrk uktre kklwqy lnouuq +ibsel hwjbah vxuk bjxa dvzbpq tffqvo bjax qfoftv +iynms tzv jakuuw cmz cjnyr ddibtd gcb +tmgerk pvwizc lxoma ergmtk xmg loaxm +ajazon yjwt viyemnk wobzwwm jcucn nopymyq znaajo qcjtmlq ccjun ywvt oqczod +kdhgnv kdnvgh rpyrxx xpyrxr +qftmshx hrbr kcggxw jwtuk qxbzkn +ddi fjekwxs xxua cmmkrso +ptrsv favvfh innnnx nninnx +kzsnd pnf evtazgw wmjk gvxp bslajo +nphqtka umlxu ymw whqiab whqiab vwigkz pevtps +vhje cnu uzfzum rwucy mxr wyrdqfi gnkuwz dkrwc otfc vbfc +ubtzio vlijsst anruj qyntadb fnic klz ywqq fnic vlijsst +rprj ybyqawb tgeieih nzcr rjpr bjfpozh tpevsx flvjdq +kvqqzvm cfdm wzjmkq sbcfx vzmkvqq +zqtt elpg eglp uoe glep +lqv madhtch xevl fal ijmx chcpra lzl afl cndbvnq +yjx jyx xjy otwklfj +cur egsdzaz ocbx wvky coxb pgiysbh lclhvy gfu oxbc vqyjvhh +gtd pytdaz kecsku nkiud ytt bmgobx tyt pfleji ebqlifv lqp ytzadp +bopfdvy eovszvw krgu jhuhyqi kaczafr krgu zlfxtl +yixprs zqai oprgw vcsjoc pgorw ypx ijo urjcjqv +estg oqnhw xgwajp mpbsag ibzi +zggbt jmmtkru sye ybd ztggb +tzryuqb blyxnnu sjpmf yxe zimf uyzqtbr qbyrtzu +rzivz rxn invxqd nazw efzun bwnw ywx rfuda jhnoww mketav +zxfw zcaqi qaciz ktefiwk xwzf +ntougl fvyaxfr obml obml bjkm lgsqj yfcggdu rqcpgt ntougl nveto +rma dakifg pvfc ticvff iffctv difkga +wpnt eclov vmmoqh qvw mljlvnj hxrx +ijnpo uhgxrfe xxopw xuzwyd powlpo ctduj eepw gubnepv +rxcmve myxckxk ecid nxe xevrmc juzaonr ilkx zpb pbz mvgos yzr +yfecm wqkh defqqa mnzgx nwe ixxg rjdhe new +awztgx vqgnfd iwcakr ajaiwn jiwnaa uqfrim wrgbjon ufqrmi vdu yjwy gwkdc +vrqf yzmvnr jkjji ghya pdlye ygha qlcm twmkex frqv +hjb xgypw vtr mgj asa owcuks fnllp ommrhng senv iix +usw iyuatv ondiwh neac ttge tzw bvjkfe neac usw +qwehwhj idrwo vex zopkjd lrcc sfqyz smte qrfh lccr qwjhewh vlb +efnlhsj ltm xirn nctwio cin +zocc cpfo czoc oiz tftk +rlzvqe inivone kptyumn eatw urjxc aetw +qavvqa jvvc yux cvvj +bfr fcpc xpkphcf irak bfr nuhsooj nniugf bfr gllq ipo +ekd dydxs rnmgb dek yowk +ipdll wdgx gjiigd uleiwg buvv vdhuzg gigidj gkyigmx lpdli lzyode fqdpvms +ycna rhyz bsipz lit rmc mrofb cyan mrc wujk +tjrk cwdsvf srkdjy lsyvryj nko syjvlry fgqq srdykj pgb koh dyle +sflcxt wmgdgej akllaoa bbsvve nsxnt nsxnt kgm akllaoa btqbez +bzmoci agemx mdtiol pyohvf zwtx aqblx oibmcz ypcmz lfg ckssn ozx +cuojke joekcu eusr dxqk xxwob klpsm +byspz lyunt eojrx ubh rjxoe ypzsb +ibok bkrtut wzcdk ppm qekhvy aupaic vswwul lmlxrv ainigy sasurbx +jeigcyc cycgjie resio ncz +xvxr lmlaje ebmtn cvms xrvx vsmc +cfjbffj xvo hpsbu nfm jhlsk mnf fmn +xncxo iwuon voj aebv jks nynzl hwjwo womejo ugzmr tdfaep olpdiaf +jlnusc hgpprf nulcjs kwiwypu kitjjbj snlcju +buqzm kpuoxel ajlqke qqdur jecuibn leajqk qudrq usi +ahbnjf uuzecdv yfyrsxv eoqey oonue vyyrxfs jixmvao +wjdi cfgurdl usdnlk jmao qnus cicxnux vtdxxkx nusq +mlvfz twu unj mar qpiz fhjczpz ytl npwjys ppq koa +ippdky pvwthzj qlkhl pvwthzj +kfm lcedomr xgdkrzo hfxyoe rafcby uwe pzjyuja weu nso erdwc fjvc +peep oufzlb fsgn kxj uge xvufb zsnrxss lere gfsn gvwajkj fmh +mexvi kgkktz kgkktz auyln ghvqc mexvi +wit qxtewrk qdaz oljeb wowb suergyt hxq pfnfbei rdu qrxkwte fyw +qjjzkd oxedeu uoxbehs zder vvjnn ocxkiz wkblzy eyzksc waiiqo fut raak +dhojys qkusuxs kzicui dcsxo +hsnexb yoz inza gqxtbc rya jqfe ufzlqva +scpquf gbloz ceol eclo qpvzavo rwfnxa +jyg edqf vdpsihl edqf +mbyjg yjgbm mgybj mhgi grw +ler oxssrel jhw jwh sfa hdhlo gng auzoan +hmkuis iaxf muhisk ikshum +eodbpo prajasi zsu hyb npr tbcntup uzs bxchne +zpyr kxmvz frlzwnb tzqrw vdh ndbwqmu cadwsv adq bzfnrwl qfgf +dybnn dmarc mknr fovokgj ukrp cuwag +khweq eljs rllijp pizevm lwws kehqw mkjcu otqodz +fvsrb kzbjbcc kzbjbcc mee dhyedb kzbjbcc +cnlmjd dvnd vhlvsa rsrtc scrrt tqhx vke jqmxpd udkjqc qxriw pfqpk +tyureg urteyg rutyge rmoihs +pccxeak tkmyane qqggpr tbdmpi ieb +wjucbi wjm hais pcxjd kkzh qns hmf mhf mnsv ifigsc +lqeyr pnopcig cpgoinp pncpigo mjfkjus cko zedvvyq +ofsnspv goj wqm ynolb qczly brl lrupzg buof zladwte +xzn zxn yaseulw qwhxb easyluw vvlmh +aiybip ydfczwh wkl rjsu xreokl qov mko pna fkfu +zjlwozs nxke ozwlzjs jybx jpsxp qtkll idsrad savpoe +xph lpvkmvy afq uqhg qqjgm smg tmhem mxdyqx bvhot lpvmkyv +jxkkzil pkjheow fewr ggbfy fuol cuzud wnx fxujfwh srjsmic +lzbjx vfx sncis xuv unoa nlgs stdhf oibxsgk uhogsb +hfqzkms bzyfnz npcd yhfdo myqukug pjq adle sqkfhmz +czhainb iazcnhb hhaqr cyrwj zzow luuvt zdyhnh uppysr +fyw dulbxa drewqsr tldlaac kyaw datclal ylplup hdzbj +kiiv tly gua lfg +gphbvwc lqdd jqja ffpkz hafal eiapksw wsikpea vphgbcw lkcpm zjxcx +viapp rxt vdgbm ezphp pcqr bll mklgx epzhp +favz bwmczgg zoyns pens wpgi mrwxel +ozwjjn kbzaozc cuaa igbfyq swi uypx bczaozk pyux odvawqx +npnpw nwppn egnpj fkzh wppnn +asu mlqmwa npewa cjluw qmalmw newpa fznx dzypi yiy +hleh usw bgmgscg cqc fijfuw idtyh cgmsbgg zjhr wus hymbju +tmre fvm cgowgb eduyfla ttez vdzp vtmtaog ezxsfi gyxgzi pvzd +acvarlu hkmfzdg jsnil hpv wjj rljpk pygl wjhhohk rkplj spvgx psgvx +wyz rvuobq kbmhaf bec bec +zosyz psuo lgihdo mjtftk fjkttm ddmcd +pqm qpswpb opviwxg ppqsbw waco jpx +yzgumgq kqv hqjghnl jixhoyg ufer kvq lzi rojm gbhvsd urd tuy +sxc jndqc ozpex wkchpu tmwv utcxzd piecpma cmppeia +ifjc lttj tltj rxmgxqa jcif lzhxkg zqb mdq kbjavv +isyxn zjbj uiw avziqxf zpezazx iuw +rjaudu amtpuk gufogys xiqs +gau sndrkv cmiolti cdxm ikkcisu xusnfbp jxffy ffcizj psye sgd +mvx onzmy oynzm mwfgvs +mrdg roanty dljs jlil gzcj dqitnfb gxb vzzqf ooweeh pgs oyntra +yna xgok fvbdl xgko udqp sorfo hmhl yan +kycl ule blupejp kycl fhpkoe pqkptw cfzpv nkncl +snugkyw zfdbsfs aehb olq kkoi xpsvy jqcspf lajjyu jtm +hifhfa mii clukcbc fhhifa wcts tgai vvqsyr kclcbcu +ordjftj dokk hdhytwc fjodrtj ojrjfdt san ajxrwy ked jfrqc +eylx cohd biswq xgiibz gzcptbf eylx icunv bfg jqanbv rntp sbfkiey +kub gdpbdms qnnto bit visqop +tywk clicj daics cbuewkx yyjjjka vxzk afsdyqg +bmxzll wqjnyr mxlzbl yutkaa qmpz hiqkf lqqqle jagj qlqelq +jgdeatg qubj jsu bhgbm swmgy lwgnuh qjbu dqwiikp mgwys +ryisldg asrrhz vxvrnk ibjr kebyx dwbx qdrpa tgakt +dfvgzk hifan dpjdnqc ncnvf xmqjjao npjq vobt evtaety kvufds pcugx oyjo +ezionjg ioznegj cykxy igeojzn ezm +dkv dkv vfqyl dkv dtjhrem +xfgh brsjcdw auvq fibb gcbecl +eet qdnrymr ndqmyrr tpfqxoi kbkxw +qhmaj maukf uygg hqmaj tfmtv irao wsari +ofoywus wxs leemkn wfko dwzqv txg qsiiiss aiiffe fadmdq zjtaovt +fgfms oazi sam msgff qif evxca reho +gpzhy qxh sco qeax wtabxwv sjd oev +xsmpi wskvku xspmi smipx +ghgf tbpeun qdivuvq dump umdp khxcxtx laljpv lownp egovve +vhmu eziabt hnz neko nkz hfmizn +vqhb lax zzyf lxa lik jrqynr rgcos +zjgbfzv ieufyz kjxad qxeuewx +ufl drkaac hoyic pqutop wqzdk eewabsr mqspcr ewarbse dzqkw +bgatanj xmddwv mwlmw scgzboo myignm lkfl fsqr +xkrx otjzfk wek dpbwk cromg fclmhg pkvw wsln +yyqjs lifg gifl cfv lfig fycza +dfup fkfeiqq rcmuv dly iforzi lngkjc rzifio oiifrz mlhor puwm qrthoa +nzfaeto punt rtmlg dwdk hyig +mds ueoyclh lxb axgea wqt wwqqglf tqw yvzji ryr dst bojf +ayoj yzj lyctgnc woxz gqltw lkzkwte wysb mjyeu hrwso +gymmvtt lhskza lsb nhlijnt men zphurrw oftksy zxs ykerwue hnijltn iknqyz +xuaxkc lgzeef fwb nlzzhjj lsieg qdr ews rue rdq +xnf lljcmod kyuercp kvlvd lkvh ncn afaq +bjytofa ltz mkyy bwt uxca somiz rhgdg keaqu ybr +aipljn qpq nilajp udgkchc dirvxg rrbmi mxfxkk kmfxkx +sfzjemk hjsvnmb hfd hprfmvg pbhkc +cvxi srj ucy yuc euswuns jpox +tajlnn ivuecv fdfce rakjq bfuxirh eibde tajnln nlajtn +ndvm mlnhy bfqlzn nmdv ohto +jysyvwy xbcyt lbbm osoye swwtwa emfznci qnzc qsgk +xcm jbqsuo xmc mtrk bojuqs +ukshrrh xhfl ooxgq vadlcrg ydva hugplg mnqbd wkyouq +mnmqys bhws megar krgoke modxe krgoke clovh dlo +ejl qzc agxph jcn zcq zqc +jgh yhh hjg jhg +tarm jboyg gbyjo pgalg xugzt bph mart +yur wrrahr fnnfqu rwhrar cdq +mukod gueg guge epalg xjkctt +hub hbu hbzul buh sqfl +xyrly lvpitr xfzn jjcl uvcnz dnpdyzq ifaiwe zlvzcx +wxzsf tgd khvwp cmd mzv bsvjvjm wvhpk ublnqyz mvbjvjs peishcb +zunmk hxpney nphxey znmku +bfxlgur wftcw xfkf fsik xkff ffxk +sxyjzr ugcscx uiovqx ldzhord xgxbfph ldzhord prdhg rhdhzd ugcscx +udg drb apyjq dgyevo fuxjhg +qshbe aigfdp wyvz xfcos wve dgfrufw dwimmb jfh wfrjbzk nwgrigr sbrpbb +ahpn xnzeof wxbv chxpcu jmso age ojsm bqonfki hqhrkw +mfupm vvig ndqbbm jlw +ejqh ebcrytj zpiqtpp ogznd +wkwkae odq rsrnqk nslczz hiyyhur kuw mjbuwll vduvod ryhuhiy swo tsos +znkufyx jejrdno knr wkx ikrlly tnxtj +iizdiw iizdiw hukep rwj eaq ptm klta rwj onaz +znb egqy qqnc igqr ikza ojgzkr xaen kurb pyckxvt wqx +pbohpw bphowp dajwdpp kotevs +hmuvxu zdnguk jhcmj gccyxiu cxgiycu uyxcgic akxi demeff +zjr lupzwcy puva rzj +cdn wee iqkbhl jwxo nhl cqd mqgqf ltdfg +phwco ggcj cggj ergpqmc kcz +aryjl wqwmkc aklktpz kptnroc mckqww +jadydt atjdyd tajdyd owswsgm +dshqt kacoge sdqth ylobih +kdnik knkdi dinkk xwvqa gvii +cifbkpt zye xhwnrhm fctibpk sbn pdqry emkye kzyjpa plzkc btkfcip gcchi +kekfr fufp dfy eqebgko obbn nuh +zixfbus skuf bea gimbqq caubhto eba uvkovz xisfzub peukmyn +okihcgh gazrc slee vlnwyg geviex eesl nmnvk rcbv ycupyw +tcvlgqs wxe lusvwzy unr yzluwvs wsylvzu zkwth qdykv +hyenkj ugao vlwgb putcepr lyeccs fqdotx burf aqew fje rfbu +uhmnc zgnkarz gylqawm abl zimcz qbs zzmic +pxkbpn zuxlwtt rlbhegv zlxuwtt ooxpr pgjx +leg wavgps fcplfpc xvxih ueskmi dvu wbiq nvtia pwjojw usiemk ojwwjp +zmrpknx xrfpq avque tvoyqp +lyposyj mckyoub sqbl olpsjyy hjafzi wmojb nvezofd +yflxrg egi aij qvc yflxrg typbs yflxrg kliexy eqnj jqrr +gggt sht kdajvz sht gkqwaot sht vout +ahl aucpih feig man umtchcv ceqabr tfptb +ftlywun voaorf kde ilwt hlpoe pksqxyh vpg cxo xgq fdkkl sgxhnq +zzekhfi akb lupta sgtd qapznzf lgidsx lidsgx akgmq ettuwjq xyumf +dxhpku lwoxpim gwb lhjmoh gxqapd ntmvc rvwwszg pvin lwoxpim coubc +qia bxmremo rjf vaeio eqexwz wuoz sguf bsbusof xqeewz +iczzz krf hbq tsgrih mzjabrt sfnwrm djignf zwac cwaz dgc nsrfmw +yvarsva zzpbp yai und kkbinr zlyj nyxxof ggrgu vyk eib +nepzm yrrgr vrlhbv hykmiog natrqx jvpq nbyhe zuo grx nwl +cfboeev hcn yfobyx cqvlo obctww xxaux ofybxy wouguq avuztl xmgqq xyofby +tikv uvzp oxopqy reh uzvp wefka vli kied gngks vbz thfsxyt +exxvknp pucbdyl dboto tzat qze xyinygz mhzl ubahr ekxbtk +jcz ufszbi pknsfgb ivok ijau okxolj etecn aurun zsa gbxs uryx +ypnb ousd osg mvset ipffzdn dfinfpz ltescx +taeoct aoetct aocett ttda fcdqnxv +bimtlk ssax bmrifkr vfxdmq hglp rgzr zpvk zhxtq rndwy mmr arkr +bwvdb axxbhzk nwfmbbu kzuc sahv cvas wdac acsv +xavkwou yvx ouwkxva otbe uzr mmw atq yiy ghavd qta pqlhv +omzht vsdsc zhtmo hmotz +eqt wtveez syift shtfnc hmckjxa apwbvn yme okdl hbihdtv hxahns eetvwz +rokdg ndjw hprxjc viys mbcctod dbvd +lhzb fyxf xaslmi sjd vqp grxhmfe snetfv mgivd uaknj givkdi +gxkxl kqcdnl rna jhcuepd npiedg djcpheu huce njryw bjluhq bvedvl kqxu +sogh uym atpzuwx vjgbe xgrvkg thgbyn mptcebt rkro +tnpxw uxrqxd lajmsmr tnnlt vrvbf deret hkmvrs eubvkn kks hjq +rcdoa zfja vod supip dvo +zbxdo xglqv how mgoq jqrdou pwrminc lidi nfs xglqv lidi +ldmnp dnqn ahhr tha mvsbsfh rpm rgus faf tjash +ewrdol jqhfpf rckj mrxlwj redjg bmxprx grla +rhr jksebwa vtu skwaejb vut +wrx iqvrjh atrt xrw vtqo tkcasd xedjh zkqrh vvhj +owc qlzygar uajwwe obzl inxawur +crbtrf phvy nzipo rctbfr trrcbf +vwuun wcfhhzo vxxjdt fbf bqtmmhs bffqcna +wkxfxmv zmrkyh sggw whwcw zukynw +lsdiy lnbn kblxi qfyib irfl mymrr zqbl +gwdkeu ghn afry zxoz fary uzntlnk kee xtnop ptnox zngoran +lgs lsg sgeseiz gsl +erpoqpi svtnv vsogl uym amzxbs +jtmodqx yjcsfcl zosugm jrekfdw xxbdqnx fcha +vio tlfxokx xaoq pydeiq glxsuzm honifvf maiuzsy uizsyam eco +ophcui saka qyt ltti syw +qff qff sde ryv +eiii jazx nlehtx tnhvxl rzvsjo qkupif feypppe tefxr wdjmlc +pdrr mwuy wccd rxla drpr enbbap +pclml ubwdbz hfudj gdpujfm ovabv +uink ffebi wdvhqzs qiympf lqxihty vnsp wdvhqzs hutxkcs lxfuos hutxkcs +fycoaw palkpz yrkg kappzl ncjym mergg kryg +eqy npvgh ghafkro piqnogb polacs qye hnvpg +dxyy udhmz jij tqsuic qxz erctv +urum nmbr cgek eetmhj gxr oxgukf wzdmvi oibzt fxkoug rcrywcr rglx +jkp ofej waibl opqhmww ifnczcg jdtkbc lil isc ill mylvuv +vqbcosk yhhsy gasmj bspx peakt cjtekw hvzo ywe qcvbosk ohzv qddt +edq llbvsx vedyvlm gou wkecank rkgf ziyrr belgo tbz +wbome vhzf ztk zaxiu ywjb supuf beq sxq spuuf pufus +femu ymkdoew kjynct aia +yjymr orovqj aremii licw bdtnc +uyade fbx duaye ujtvpn +yzvp pvzgjp yofcvya gvkkoh cafyvoy mhsm okhkvg +xuh qkaf dmi imd tzmlce mqkxj qilrc dim cadotvy +azpqgb kyc aflgyaf laagffy kesmk jzyzaer taf bpkbzdg +ogd dbdlh dqt zaaloh +exal vgnfx omu omepvwf szcwq snz bptite bzqyxl khmblyc sse emg +yqcbwsn aihhf tqck tcqk wqwqy cfez xahpn +qqbuf lil ies tqu pyxhqp mnfuk azj +vwma rzdtgl mxbasw nwgjav mwav +itpjfq rrgyt hralwm fqrig btwcod +ydjd kmk fvwr wrfv yvhw mkk +xbsxub yhsj xzbuf ace xubbsx fzuxb vxk +ttsist vubpf mhwkmtx vlj hdsva kmmhtwx ukxr upfvb tbma fxsrnxl hzwufho +wckjvz unmtev egxts ihw topvw ptowv rnihhmq +gpdtl kcric nwg ssbs qah aarp ydsdty ngw +lzhxbbq oktvcw xbasqe owtmwgp koa gumjie sodwrp hqsw aqh dtgsbb +xjbyy mxfxa ogvk nqiy qyni ldqwryj niyq jjixc +uhbul daccgva xtiz dim uhbul yjmakv yjmakv +huo esajup ouj oju ujo +eeeu hwvsk jfkmds okhi pogskfm itdlbll +lpyubo dylpfb iehwug decj ntidy cuygyg lalkb iutu oxgm imn diff --git a/src/main/resources/2017/day5.txt b/src/main/resources/2017/day5.txt new file mode 100644 index 00000000..30fa4278 --- /dev/null +++ b/src/main/resources/2017/day5.txt @@ -0,0 +1,1092 @@ +0 +0 +0 +2 +2 +-1 +-3 +-3 +0 +-6 +-9 +0 +-1 +-12 +-9 +-2 +0 +-14 +-6 +-2 +-10 +-12 +-10 +-13 +-2 +1 +-6 +-14 +-2 +-11 +-7 +-9 +-15 +-22 +-25 +-26 +-19 +-28 +1 +-2 +-38 +-39 +-30 +-18 +0 +-26 +-1 +-24 +-1 +-30 +-44 +-35 +-9 +-32 +-5 +-34 +-4 +-15 +-21 +-30 +-10 +-32 +-19 +-40 +-12 +-49 +-58 +-2 +-14 +-51 +-37 +-9 +-4 +-48 +-64 +-37 +-55 +-40 +-37 +2 +-22 +-68 +-57 +-57 +-83 +-65 +-38 +-22 +-20 +-78 +-27 +-40 +-4 +-83 +-33 +-47 +-74 +-41 +-74 +-68 +-18 +-8 +-27 +-23 +-53 +-70 +-43 +-99 +-48 +-90 +1 +-74 +-9 +-80 +-96 +-33 +-7 +-53 +-98 +-54 +-47 +-84 +-81 +-79 +-86 +-14 +-115 +-121 +-30 +-28 +-13 +-113 +-41 +-20 +-34 +-19 +-71 +-39 +-17 +-91 +-115 +-108 +-74 +-134 +-12 +-91 +-27 +-59 +-27 +-132 +-34 +-8 +-52 +-93 +-17 +-151 +-93 +-102 +-62 +-62 +-120 +-25 +-75 +-35 +-162 +-61 +-107 +-83 +-106 +-23 +-168 +-42 +-13 +-74 +-52 +-169 +-123 +-95 +-174 +-56 +-43 +-84 +-21 +-5 +-120 +-130 +-55 +-3 +-93 +-158 +-61 +-4 +-74 +-65 +-157 +-112 +-147 +-24 +-23 +-155 +-82 +-73 +-25 +-82 +-42 +-200 +-120 +-57 +-96 +-38 +-121 +-25 +-211 +-117 +-42 +-181 +-56 +-204 +-193 +-88 +-143 +-167 +-42 +-178 +-204 +-57 +-120 +-33 +-164 +-122 +-219 +-136 +-174 +0 +-36 +-64 +-77 +-34 +-158 +-163 +-194 +-212 +-101 +-48 +-216 +-141 +-142 +-189 +-101 +-144 +-158 +-114 +-88 +-251 +-172 +-173 +-94 +-89 +-12 +-188 +-218 +-130 +-33 +-117 +-39 +-245 +-195 +-20 +-37 +-183 +-24 +-48 +-159 +-36 +-68 +-96 +-215 +-127 +-241 +-171 +-44 +-2 +-203 +-27 +-37 +-241 +-173 +-193 +-143 +-52 +-187 +-54 +-236 +-219 +-71 +-197 +-162 +-245 +-133 +-153 +-240 +-250 +-91 +-128 +-20 +-263 +-124 +-46 +-290 +-194 +-191 +-60 +-92 +-97 +-284 +-60 +-44 +-208 +-59 +-6 +-40 +-292 +-1 +-14 +-27 +-71 +-144 +-289 +-16 +-266 +-80 +-138 +-215 +-249 +-104 +-29 +-260 +-124 +-178 +-331 +-283 +-47 +-253 +-80 +-316 +-62 +-15 +-327 +-64 +-201 +-26 +-60 +-110 +-117 +-13 +-99 +-139 +-124 +-25 +-242 +-92 +-10 +-322 +-110 +-169 +-26 +-353 +-284 +-234 +-361 +-95 +-37 +-93 +-186 +-90 +-26 +-90 +-268 +-179 +-305 +-378 +-145 +-238 +-358 +-186 +-108 +-120 +-75 +-109 +-279 +-192 +-308 +-197 +-373 +-19 +-38 +-238 +-133 +-60 +-334 +-45 +-169 +-167 +-257 +-107 +-222 +-380 +-321 +-99 +-177 +-268 +-224 +-45 +-323 +-407 +-167 +-125 +-243 +-331 +-268 +-132 +-254 +-204 +-191 +-280 +-242 +-223 +-313 +-237 +-234 +-274 +-327 +-271 +-362 +-39 +-194 +-184 +-16 +-214 +-46 +-199 +-108 +-332 +-316 +-29 +-327 +-200 +-52 +-260 +-128 +-103 +-67 +-109 +-432 +-399 +-153 +-403 +-176 +-434 +1 +-225 +-286 +-375 +-206 +-395 +-275 +-120 +-404 +-381 +-156 +-215 +-350 +-257 +-293 +-231 +-114 +-52 +-149 +-296 +-440 +-413 +-285 +-400 +-265 +-378 +-75 +-381 +-281 +-436 +-137 +-335 +-111 +-92 +-12 +-27 +-20 +-208 +-322 +-151 +-264 +-207 +-361 +-314 +-258 +-81 +-327 +-440 +-286 +-108 +-272 +-392 +-17 +-40 +-486 +-287 +-205 +-211 +-160 +1 +-216 +-114 +-32 +-143 +-113 +-489 +-109 +-56 +-371 +-258 +-430 +-29 +-475 +-141 +-477 +-169 +-473 +-264 +-225 +-123 +-412 +-395 +-391 +-28 +-527 +-493 +-471 +-401 +-510 +-430 +-154 +-34 +-533 +-544 +-39 +-535 +-553 +-447 +-144 +-517 +-482 +-362 +-265 +-434 +-504 +-526 +-31 +-53 +-170 +-44 +-126 +-75 +-163 +-136 +-508 +-564 +-289 +-68 +-541 +-165 +-496 +-78 +-117 +-268 +-326 +-361 +-194 +-483 +-495 +-560 +-215 +-363 +-275 +-426 +-160 +-333 +-182 +-457 +-96 +-200 +-569 +-236 +-31 +-365 +-419 +-43 +-366 +-385 +-322 +-430 +-334 +-156 +-377 +-184 +-522 +-289 +-129 +-87 +-501 +-606 +-84 +-163 +-318 +-552 +-442 +-590 +-137 +-517 +-161 +-333 +-497 +-150 +-188 +-401 +-613 +-131 +-595 +-18 +-591 +-134 +-44 +-637 +-500 +0 +-349 +-483 +-258 +-124 +-449 +-260 +-150 +-269 +-305 +-650 +-619 +-328 +-478 +-5 +-514 +-73 +-261 +-503 +-101 +-480 +-37 +-192 +-497 +-298 +-464 +-514 +-515 +-203 +-17 +-302 +-9 +-409 +-285 +-140 +-46 +-136 +-470 +-544 +-666 +-590 +-382 +-546 +-619 +-194 +-543 +-323 +-264 +-673 +-177 +-342 +-539 +-507 +-660 +-655 +-272 +-28 +-181 +-266 +-242 +-337 +-116 +-421 +-537 +-24 +-6 +-241 +-110 +-255 +-429 +-31 +-380 +-214 +-337 +-514 +-68 +-102 +-320 +-12 +-648 +-180 +-192 +-554 +-182 +-303 +-623 +-583 +-686 +-367 +-325 +-488 +-71 +-466 +-625 +-402 +-104 +-348 +-690 +-714 +-708 +-212 +-302 +-286 +-44 +-386 +-455 +-456 +-353 +-469 +-145 +-116 +-412 +-273 +-705 +-331 +-519 +-592 +-630 +-396 +-82 +-434 +-35 +-436 +-490 +-471 +-738 +-488 +-476 +-295 +-399 +-262 +-44 +-761 +-121 +-643 +-383 +-221 +-11 +-380 +-555 +-382 +-68 +-554 +-621 +-27 +-549 +-661 +-197 +-116 +-339 +-577 +-206 +-790 +-283 +-248 +-163 +-503 +-481 +-573 +-308 +-650 +-42 +-23 +-451 +-72 +-470 +-709 +-589 +-495 +-377 +-246 +-5 +-667 +-697 +-585 +-511 +0 +-787 +-559 +-320 +-81 +-782 +-660 +-153 +-111 +-162 +-584 +-103 +-774 +-827 +-453 +-815 +-290 +-794 +-667 +-524 +-281 +-230 +-205 +-333 +-495 +-705 +-568 +-519 +-132 +-819 +-190 +-736 +-135 +-649 +-712 +-126 +-233 +-827 +-353 +-197 +-803 +-19 +-124 +-691 +-234 +-96 +-690 +-500 +-321 +-277 +-56 +-838 +-512 +-6 +-70 +-611 +-285 +-253 +-14 +-545 +-143 +-193 +-352 +-755 +-634 +-572 +-320 +-132 +-522 +-688 +-273 +-194 +-613 +-492 +-715 +-624 +-581 +-505 +-185 +-468 +-853 +-445 +-407 +-605 +-86 +-583 +-160 +-746 +-436 +-673 +-597 +-479 +-278 +-259 +-503 +-121 +-710 +-169 +-363 +-639 +-325 +-146 +-760 +-673 +-177 +-400 +-431 +-782 +-756 +-166 +-300 +-461 +-917 +-872 +-786 +-921 +-346 +-137 +-638 +-396 +-812 +-107 +-303 +-55 +-70 +-675 +-477 +-520 +-843 +-632 +-290 +-497 +-758 +-20 +-636 +-166 +-681 +-459 +-591 +-332 +-65 +-814 +-373 +-909 +-72 +-71 +-513 +-387 +-209 +-199 +-777 +-663 +-635 +-874 +-596 +-733 +-226 +-950 +-845 +-321 +-94 +-450 +-672 +-665 +-469 +-369 +-415 +-210 +-290 +-911 +-140 +-413 +-823 +-74 +-833 +-163 +-577 +-576 +-926 +-683 +-417 +-970 +-11 +-460 +-689 +-493 +-879 +-797 +-578 +-918 +-633 +-591 +-915 +-550 +-646 +-33 +-122 +-184 +-324 +-1006 +-937 +-215 +-253 +-420 +-495 +-797 +-950 +-631 +-409 +-528 +-312 +-282 +-594 +-377 +-258 +-1017 +-354 +-871 +-25 +-650 +-765 +-246 +-710 +-815 +-772 +-733 +-920 +-1001 +-355 +-581 +-782 +-711 +-1044 +-922 +-74 +-391 +-3 +-847 +-1020 +-963 +-1036 +-1007 +-123 +-605 +-642 +-591 +-648 +-688 +-555 +-937 +-862 +-885 +-553 +-509 +-723 +-696 +-406 +-960 +-160 +-633 +-823 +-874 +-1076 +-962 +-736 +-984 +-486 +-645 +-932 +-734 +-744 +-21 +-20 +-506 diff --git a/src/main/resources/2017/day6.txt b/src/main/resources/2017/day6.txt new file mode 100644 index 00000000..d3697028 --- /dev/null +++ b/src/main/resources/2017/day6.txt @@ -0,0 +1 @@ +2 8 8 5 4 2 3 1 5 5 1 2 15 13 5 14 diff --git a/src/main/resources/2017/day7.txt b/src/main/resources/2017/day7.txt new file mode 100644 index 00000000..1c58260b --- /dev/null +++ b/src/main/resources/2017/day7.txt @@ -0,0 +1,1512 @@ +qgcmjz (87) -> skzkx, pzkofch +remwlv (18) +ngrmq (80) -> cluej, ywrxbgi, saznyj +omqech (119) -> asqih, chotekn +xekwze (70) +qzjln (86) -> gstsuq, hwbzs +hpltlm (94) +diwnw (43) +losei (80) +xkzbkz (16) +rzzcyrh (7) +xkkyybu (7) +gcricg (135) -> oowec, vfsonrs, fcszioo +ikkvv (12) +ugdngw (79) +dotrpsi (42) +xxemgkm (34) +zfcck (18) +haumg (7) +knlyr (51) +nzeiwlc (51) +cuoso (35) +diphdjt (44) +pcafsei (61) -> aenhbm, urjmc, ckarib +cnaxol (35) +ydsxmg (40) +kmybac (1311) -> sjlax, cyvwqu, siiztl +lpano (18) +idgqyfk (12) +fqxtra (261) -> aclfkav, aaovpqz +erqjic (5) +ikmaui (13) +myxnc (14) +imzgw (120) -> gyprs, dxswnz, xxzms +uckfdi (25) +fcphzy (27) +bnyaw (30) +iujsypy (34) +nrkpq (96) +iylhfc (27) +fkxei (241) +rmxzhgl (39) +xxwpir (94) +rfvjk (49) +zdkvsp (65) +dqiievh (63) -> oemva, cnaxol, lsmev +aivrgc (50) +gvrkyb (12) +seasb (34) +qjnqrxg (91) +zlunbf (67) +rqpripo (1383) -> aergp, jhubo, yfznza +kutjx (19) +wrntht (12) +vjdkx (90) +uzxcmdh (7) +exlobhb (80) -> fuixzt, lbhoabl, actgtp, cdfdg +sxjxk (21) +bebmszs (75) +wvghqb (60) -> qvqwp, jafchi +ieqcv (245) -> areod, lrsaprr +mupmhq (77) -> iavoj, tnlit +urvmk (26) -> hpltlm, odyxpkn, owwucfr +zhmjupz (1101) -> lafvy, jzczzhm, cytrtqs +udjtzas (92) +nuxmb (97) +zaqhiy (30) +slijas (78) +vbkifa (32) +ginnjra (67) +blsrmal (20) +xdjqk (48) +fuixzt (45) +eczncbr (92) +hzlhf (323) -> fgvyiz, pjssop, yffeaia +urmzp (297) -> gfodmz, mixlrfs +ypixztf (80) +deuia (2103) -> xpcyuu, bjgwnd +akkjr (12) +rupuyo (31) +fotck (62) +gnkzi (8441) -> cqcmf, bhsmhi, lkisrer, wkwylw, xunaojn +aokaek (55) -> hqzsf, iraqghm +kfwcftc (66) +iefrt (81) +kcehqft (92) +qqfrfmp (114) -> rwzuaru, ypixztf, wvxne +qgxkjj (70) +ffxfi (81) +aecfqhz (35) +jyhalw (92) +ijymh (94) +rfprjll (81) +brbnff (942) -> rlyuhm, duqiho, opsqo +iouzaj (198) +udmpb (19) +gavjcu (24) +npqgif (21) +vwjmeq (12) +nlxvg (32) +shorw (163) -> rdlqapx, dzkxl +exmqzmu (226) -> ssqlqmn, jfwnt +vsznmk (94) +bfkxr (226) -> qurkt, egfqvs +gyuxgla (48) +cuanrjw (120) -> rtdsov, ypbvxys, gzlbsml +llzufnq (456) +kzvxp (67) -> amomsn, ucocpbv, vlmua, zigfqp, exmqzmu, batiqxv +vptuwar (181) -> zdkvsp, bdank +jywenab (449) -> uvdikh, kdamqdd, pksdzch +minal (8) -> shwec, ltkwjkw, koyyc +zsdbkwn (90) +gsbka (18) +rpvpz (132) -> xvikaq, efiio +bbrmw (1738) -> eimqx, mvrpacv, grmzk +xciyqzi (27) +cmxxnel (223) -> vwjmeq, afowbn +vedvg (63) +jxwep (642) -> pnygn, ufjyqh, svouyu, eqkks, tdkdi +tysfacj (14) +eoqoqq (94) -> emuzuk, cmcjml +rllanu (38) -> kgxms, cguyudo, cdvkhp +xlafbbu (99) +agnojmu (54) +lhdtxwa (79) +cnmtugy (23) -> blrmjo, blkwmr +zvwli (233) +bdank (65) +eebealj (7) +ugeuc (67) +vybcj (166) -> fknwa, aecfqhz, cuoso, okcpk +ewlzxp (284) +iystzy (35) -> xiqdw, ecxsy, kikilp, ozsipa +vumoui (25) +dahxznk (74) -> munngu, erpdbe +hkbpff (94) +nkiyss (97) +mlouksr (16) -> qmuueat, owmxj, uhnaw, dazqtu +wtjxdv (10) +mixlrfs (35) +vvcwap (1351) -> ltcqa, ieaho, apdrocp +afazbmw (74) +kskmlk (31) +xvanyc (65) -> tqpztin, nrkpq +fgvyiz (83) -> cyzdj, zmmze +rxkiw (153) -> aamnwt, ttqxk +vqhncp (107) -> agoptjb, qyeifkn +uvwbxrr (83) -> ghmke, bkzek, dpyrzzy, gcricg, pwxkp, nawqww, cfgjwaj +fszyth (30900) -> agvbghb, xopcltl, ifdqaup +ufaji (64) +xgxzul (18) +peokst (5) +xinic (215) -> cboxdc, atvmevd +ydkppqv (10) -> jqers, rllanu, ifztqrk, urvmk +srsjjft (52) +fwnnw (22) -> vyilf, wycodto, rmxzhgl +afowbn (12) +hwyjqlo (23) +qyjvqwn (270) -> xmrocio, pojbfof +riaadk (72) +pydqh (93) +mngflny (91) +fuwwn (50) -> rgxjg, pvuyft, yqsufra +cypafs (209) -> uloaqjr, yvlzlnd, wydgy, uquuws +pnnbt (40) +vtodml (176) -> rfvjk, njfxxqe +fqjafn (172) -> ebmdbz, utltope +eibjdy (12) -> idgwugs, cbazit, rmungsh +uapkd (91) +apdrocp (5) -> uhzdjta, icaiy, wfchmxn, rnsmk +skcmm (30) +pkoykgl (23) +oyatmo (21) +nhgqoun (67) +qaslzm (95) +agoptjb (56) +tqdtgzi (751) -> fxplut, ablnk, citooti +chcuadg (67) +cdvkhp (90) +nsbse (99) +gwbbe (12) +qcytpf (58) +vxxmj (113) -> kcehqft, pgzmhg +kylrxvv (153) -> ktoxzno, vfjmx +kcfvm (433) -> kvfus, vmkyxsn, dclvnt, yvkzq +lwqwrpg (90) +yixuf (120) -> rkjzfmm, kcxjnz +vqrzfp (164) -> ekmhno, smyqf, wzecczv +enuyf (54) +pczzyg (55) +gugquvb (72) +dnojir (83) +hsronxu (235) -> pgbhv, ottdek, jumdiue, xsrrz +ffkubc (60) +spzex (20) +naifqx (55) -> dzsqc, fzluu, pncikdq +yipippp (86) +ofegal (85) +doqco (155) -> apmra, xsrotj +rdlqapx (34) +lopis (245) -> hfwmhrn, wbugpb +azwmgvy (63) +apmra (53) +yxikq (95) -> jsilno, uyzvco +ietzw (733) -> fylsk, bqedfkt, hmpstv +xopcltl (69) -> cadju, zndcv, shxnlm, kmybac, sjaufyu, aluvk, zhmjupz +nsronp (38) -> xpulso, rxsllr, liatu, wvltmyv +qjcjey (93) +raopje (31) +gtbbe (466) -> jxfhkc, cugcfjb, lmijj, vqhncp, xbmjza, uekierg, xwsxb +keazs (49) -> qphnx, bdrjupf +rkjzfmm (10) +fhtyxty (65) +ejfvc (78) +mhotdh (237) -> udmpb, kutjx +swrda (16) +pcdwwsx (92) -> tyujzc, lghlhb +ygjfl (80) -> toarg, odiiboe, kqlidl, vjcjl +yimhrw (373) -> wewaq, woiffy +iysaej (30) +cguyudo (90) +uohzm (150) -> aozkpqv, ugvump +hpyjk (69) +hmpstv (205) -> isbsl, zfvrxs, gjmiong +seygrud (79) +nvdacd (48) +zzffzbm (24) +lgfhkns (23) +cyvwqu (40) -> cbgrkw, qancsuo, ppwjh +gbloa (78) +vtvhz (98) -> whpko, yvxlc +jcrbv (79) +ucalkgd (21) +ruvqq (33) +wbugpb (6) +jkenxh (178) -> flahmx, pjmvysc, ujfkgpk +yanech (194) +nvncoj (624) -> quvvrml, nilbqer, liwvo, rxkiw, cvzubu, gonle, tyannz +fqrqvhm (500) -> pcdwwsx, iouzaj, frdln +ydtamvm (94) +xsrrz (31) +wdclggm (81) -> szqbyiy, ngrmq, bfkxr, bvmnols +kndlm (86) +hxlom (8) +wwniofg (7) +gvwdr (12) +nhitw (66) +tnbuu (957) -> bpdjd, zmxnypj, sjldep +lynlnjr (7) +csbdis (99) -> utiueqf, gsbka +skzjwi (56) +agvbghb (3128) -> tfpggg, ugnsbfr, aidxe, djihb, otzlwo, nkhrpg, qctjxs +jsilno (31) +cqmdp (76) +aenhbm (278) +jturbxp (50) +iewhsnf (81) -> gilke, ohedu, grzkzam, dzino, ockea, seddq, hzggfe +gyprs (29) +yvkzq (111) -> gjoof, bqile +ukvepc (94) +ihdujet (23) +vncffh (13) +wtwmmmy (66) +pwydd (89) +jjkkl (195) -> lgfhkns, pkoykgl +aclfkav (18) +ggqyz (10) +eyekgw (95) +nafqfvw (94) +yocxio (62) +vvvvgzx (40) +sfbfkb (1699) -> fzhiga, jpjufo, wvpln +ufnshbq (82) -> ipkqb, rnllfw, vjdkx +ouciqi (45) +isbsl (16) +hdgar (23) -> deuia, wkfpb, yqdhlr, qojdy, uvwbxrr, njtrh +rmvsw (48) +vpicsc (61) +qeenjrf (96) +rhygakw (83) +soyuwm (52) +unknkby (96) +rjppftm (64) +frdln (30) -> tqyhzm, fpfvv, hltmydl +cbbyjs (8) +wrkgz (168) -> iylhfc, fcphzy +cdwtclt (151) -> thkezk, zzffzbm, lluabe, cyjex +qyguegc (38) +vdzxo (227) -> coyodgw, qgxkjj +rtkjnq (55) +pkikya (9) -> wcdiup, maajj, qfqhlzi +tjxtjg (7196) -> yhqov, kzvxp, nvncoj +owsfeci (227) -> juogz, sqzyu, pxyfbvy, csbxo, sbpdtfq +ogljepx (8) +ssufgph (237) -> vxgadew, iujsypy +ikkvmpl (21) +ohyndb (98) +eoqzo (51) +krodu (33) +hflxhw (50) +ouvco (90) +kktaa (309) -> ofvivee, vumoui +ipqrsx (18) -> kxvmq, cdgxjqk +hfwsmrn (12) +rlyuhm (103) -> igorbc, tnagy +duqiho (5) -> zuuor, lwqwrpg +lubvf (38) +aozkpqv (24) +bdnbvsc (60) +fuclj (51) +cwzgcb (72) -> eweeq, kmvor +yodjjz (51) +pbngkw (7) +wjuxxef (62) +mggnu (63) +lcwnle (94) +zcdwm (26) +aajog (52) +mwcqrpu (55) -> yocxio, fotck, qdchc +jlenggo (94) +rgljpm (67) +vvenem (59) +shkxavi (58) +tdxow (7867) -> mrxqlw, htzrkz, ghwgd +cqgfeau (90) +cyjex (24) +xhtqxz (40) +dzkxl (34) +sknyb (76) +aqgnukp (72) +ucqqqi (143) -> zojod, eijqpl +fwyuklw (39) -> axzwwto, ufaji, hxrppz, izfjh +fmtjcxp (94) +vcwxkxy (18) +thkezk (24) +aidxe (118) -> xzaleu, pwyqnm, zfnpy, cjowcmb, rzgwqq +ctjkvre (95) +lxsycwm (215) -> aqtupw, ogffnth +otrpt (59) +yhqov (1441) -> xzhdixq, rxctq, arajafq +zmtzdj (216) -> vweupv, ktmepg +tuxbrfu (52) +ehpsber (92) +qsxpo (1427) -> mlouksr, zcqzjv, fxejcg +msmar (58) +qhehe (1428) -> junno, hhugr, yixuf +azsjzcr (75) +aabivaf (7) +ktpudp (81) -> jczjrin, tdsznt +mlgxkzg (43) +yobqdj (111) -> gmkrufv, puvkwv +fvvsis (97) +nqctxw (98) +uxczdzb (6693) -> gcaev, bqruuvx, pcafsei, ubahwni, kgqfw +gbsjs (69) +bllys (18) +klzefiz (28) +gkejxoc (78) +vtifny (42) +lsvrn (408) +ebknkgh (75) +bvntvu (170) -> ynybi, nxweh, oyatmo +hwkly (43) +ggqznq (69) -> qnywf, kndlm +jafchi (73) +bhnnrnz (7) +moolvq (69) +qdnqx (83) +vyilf (39) +shmrpov (257) +yvusemj (63) +cboxdc (9) +vfjmx (61) +ycbet (188) -> runmsjd, jzgllr +rxgbyox (82) +oufdzsi (30) +hpoeayk (72) +vchyhs (102) -> unuscm, dmuhap +wpawu (65) +pwvjth (69) +cxgcf (102) -> moolvq, vskve +kxvmq (71) +feqwmhy (9) +pgiixde (59) +llhhjb (68) +kyktl (123) -> ednxkm, hbdvy +hrdvgwl (27) +xxmermc (22) +vuvsu (7) +grmzk (251) -> kzwvmh, kwxkc, zoyfhq, xccabhd +kmvor (75) +rnnoy (99) -> ihekxpi, bhbwz +zlekeh (18) +lxbgm (52) -> vxudcio, pwydd, rjncwf, kdhwxo +ciigv (90) +axcqrvp (59) +ixzpx (85) +sqqrkn (12) +ikygytk (205) -> iriwf, lpano +fjuytze (90) -> ucapgv, riaadk, tczoglq +jrwycer (31) +xewyur (190) -> iigqx, zzbbtqs +ldbfz (94) +pigll (57) -> rpjxbhc, ilbhxw, jjrqd, rgfhr +tcuxy (211) -> vbkifa, qecdd +jscxey (12) +pjmvysc (39) +nzoczg (15) +actgtp (45) +sgoep (81) +wfchmxn (40) +isnxyg (67) +jouzv (48) +xpulso (78) -> pydqh, qjcjey +ivlvuhq (73) -> gvrkyb, qnuhxta +fvaiqyr (634) -> ufnshbq, uuskq, qyjvqwn +gopevi (67) +qojdy (1003) -> hxxhe, jkenxh, kyktl, fwyuklw +ntozie (48) +gjmiong (16) +idrncu (73) +txoamw (96) -> iefrt, sgoep, skaiivy, gqdwda +kawbxw (123) -> pmuxnac, wndlhkf, qhcuolm +kdvfpg (68) +bfqjth (80) -> kcentfc, wxftfvc, bqnykil +mebzrnn (32) +yojkhdg (33) +uscpxzv (39) -> ntozie, jouzv +gcaev (43) -> ewlzxp, azreib, bkzadqb +cadju (633) -> kktaa, bfqjth, hsronxu +xbaebbl (43) +vlzkjc (47) -> cyygfy, bebmszs +vlxxwu (70) +znxhe (79) +sqnpby (45) +emacdc (42) +nzznh (36) +idbik (65) +zrxjkr (653) -> fpffxl, ekgfr, txoamw +jfwnt (46) +hjiiezg (44) -> yvusemj, azwmgvy +kcxjnz (10) +hxrppz (64) +wcdiup (63) +stoosc (55) +xhbqmie (68) +lmijj (103) -> txgxosp, gzjkmy +uinplcz (405) -> vpuqipd, csisv, shmrpov, zvscftj, lopis +uekierg (153) -> ruvqq, acgyx +fiazqvj (51) +znfoyv (25) -> bzgeoqg, ftvwc +cybok (31) +gilke (96) -> hlchui, utzqyl +gtlmfhu (36) +dqukfsg (37) +dlyei (87) +tngwf (68) -> txodvj, xkjagrq, qgcmjz, imzgw +wzzdih (79) +vginql (139) +kmheqrj (185) +hycppt (310) -> wupzqha, dmyewr +bwefj (31) +twvwpd (7577) -> skiyk, qhehe, cpjawpx +zuevpk (79) +sbvhk (30) +vrzzc (59) +ejbtd (41) +acilnmg (83) -> ciigv, kqxsjt, bpnbtab, pumgsq +yufve (8) +hcktpld (61) +ygprn (49) +quvvrml (105) -> wruwjn, qqskz +fknwa (35) +wydgy (11) +yrrds (65) +gzbnkz (12) +asqih (57) +fvcfdo (27) -> cdaccdo, hlrknn +dqntfx (281) -> lsvrn, suhmny, kawbxw, lxbgm +waewrc (92) +tqoul (17) +dxvyfrf (31) +qdcyv (125) -> hvptp, abzahfo +tsoub (222) -> akkjr, ikkvv +ufdpy (44) -> qaslzm, eyekgw +zgigo (8) +csbxo (153) -> gfqcad, ftuet +nxweh (21) +yujxzit (69) +ybddxou (33) +ygara (10729) -> fqrqvhm, nsronp, qbbsz +dmobyt (11) +anmam (66) +qayqkk (9) +icbkonc (23) +npkvkpu (1870) -> fkpxwb, shorw, tibqjki +loziss (59) +qnywf (86) +xbmjza (135) -> kspoovz, qwezgho +ixbgkw (20) +xwsxb (83) -> pbrsgs, rxzgrn +dclips (49) +uypdm (94) -> iaphph, ukvepc, nafqfvw, xgnrwy +xxzms (29) +lkisrer (129) -> aywhbw, qdcyv, vlzkjc, tihtr, okzwi +ieaho (31) -> tzitsb, etlto +vvsvez (57) -> utlqx, xzhdy, tlmvaep, nbyij, fszyth, zimrf +obvji (37) +luewm (195) -> mlgxkzg, hlbdk +efavpu (210) -> xklqajg, vtqjrpy +sqkepae (177) -> ksuqm, ygxgxmd +sfdsda (81) +cluej (84) +zssmks (57) +wcqclc (99) +xmuewfv (191) -> vhldh, ppbsza +ahbqrkw (20) -> gjimeu, mbvkb, ipuzdkg, hsycxw +bvmnols (220) -> pminuvd, omxbi +farimk (5992) -> wbqbr, igvsrs, ofauy, kbskq +kzwvmh (6) +uotii (191) -> emacdc, cedwljx +uyzvco (31) +susvwaq (21) +emlmom (62) +cytrtqs (59) -> aqgnukp, ekfimhl +rhutj (82) +fcdmywz (170) +xzaleu (109) -> hcktpld, beqrsjx +jczjrin (42) +pyvfqx (64) +ezgozo (141) -> gopevi, fmvboqy +dazqtu (35) +eotjep (37) +oujeg (25) +kuplqir (89) +lmzoi (647) -> wnryzjo, kykmrh, hjiiezg, huhjt, fcdmywz +ynybi (21) +bfweit (631) -> smryqv, llzufnq, temngvm +mhzsyy (97) +uavous (100) -> pnnbt, qafsun, ydsxmg, vvvvgzx +tipds (347) -> hxlom, gfopy +wmvdmad (39) +drooh (20) +bajystl (23) +tqppbf (73) -> nkiyss, tbbpr, odzlc +czvcms (1990) -> hefdj, ntmyjat, roxewb +rnllfw (90) +saznyj (84) +jtrpn (58) +ccmobzb (49) +kyigxxe (50) +hzhtm (71) +wnryzjo (20) -> azsjzcr, pkggwf +kyijav (48) +zmucrfa (71) +jzclx (86) -> iysaej, zaqhiy, skcmm, wuglbn +puvkwv (74) +orhboz (64) +mcpjzd (261) +ockea (220) -> zwzrlp, cdrivrb +urjmc (32) -> gnjdzkp, qyptue, opkqf +wazmp (50) -> tslnnk, hepcmft, gkejxoc +tibqjki (73) -> zuevpk, josri +hozmnv (75) +wgetx (165) -> enwcj, cqkxj +ybauin (97) +sgdaxgh (167) -> xkzbkz, mohfmrr +atvmevd (9) +wubtbdp (171) -> rupuyo, jrwycer +lmsrcz (113) -> fqxtra, iyhif, nwnfwyw, ssewuyv, vxxmj, eibjdy +oqnerup (998) -> jhsnju, ssufgph, rcrlwms +zimrf (1412) -> twvwpd, agtwdyf, lsuiiih, hdgar, tjxtjg +rkdhv (50) +vkdfymy (132) -> acjnfd, isnxyg +rcrjah (57) +qqskz (44) +txgxosp (58) +ctbne (70) +xegbm (58) +mrxqlw (566) -> xewyur, jzclx, nweseg +inovvz (87) +qbmqlty (1099) -> ruuad, equpkvw, wwzreqg, sgdaxgh +dzsck (90) +vxudcio (89) +dqeoi (25) +njfxxqe (49) +jjrqd (50) +ekqlbr (18) -> wclwqix, bfweit, iewhsnf, veriopw, gtbbe, ftgff, nscyh +eweeq (75) +xzhdixq (34) -> nvdacd, kyijav, miymqw +qekcxr (49) -> cwlwzhy, ircgvnq, qsxpo, lmsrcz, qbmqlty, uizzbd +kdamqdd (119) -> kacgf, yynsrtq +rlals (13) +pbrsgs (68) +icblguo (82) +odzlc (97) +xjicbre (91) +hokdx (48) +xaacva (72) +yagku (31) -> xihae, vlxxwu, xekwze, jqeuxjc +hpiil (54) +tetnp (50) +tdsfl (93) +xkjagrq (41) -> rfbgops, qdnqx +acrpk (24) +ynevzr (9) +elxtgq (345) -> ybddxou, cuuuxw +wclwqix (963) -> nqswhd, mpxji, sqkepae, yobqdj +ghwgd (370) -> vtodml, nvxdw, eoqoqq +jybokd (61) +svouyu (225) -> ntkgyj, dvmpj, bnyaw +ofvivee (25) +ftvwc (80) +xdilahf (27) +qwcnhxs (19) -> ybauin, rftle +hxxhe (169) -> acfgtnp, xnniv +gmkrufv (74) +qafsun (40) +slthtvl (7) +tcsisyq (42) +pdclutm (86) +gvdqk (228) -> dnwfv, orhboz +wewaq (35) +bzhsmk (29) -> mqkpcxq, qzxdbvb, rxgbyox +dzqvp (67) +bkaowc (99) +xvikaq (54) +wtyeqkr (81) +efiio (54) +scpwjv (37) -> dvtfl, btvche, cvdfmn +fzluu (14) +orohja (48) +ksuqm (41) +ssewuyv (24) -> wtdgjd, dowcukk, qoyyyzt +vlqciig (49) +enwcj (34) +qdpcofy (763) -> nmgoh, wvghqb, gfiogpk, qzjln, pjdxt, qsatxh +hbmcb (160) -> lduyqm, npqgif, rsiom, ucalkgd +fumrjy (113) -> ugtwn, mgybe +ueyfa (117) -> ecdmtkz, ivibm +lbhoabl (45) +vrdezgb (83) +xytanzt (246) -> lhqqfh, giwrnux +lsmev (35) +hefdj (191) +lluoxxt (83) +tyujzc (53) +hbdvy (86) +wwzreqg (46) -> eoqzo, wzahu, quzew +qwnxufh (33) +zhzkbp (88) +zqxrmoi (23) +cfgjwaj (248) -> ikmaui, gmsrhnn, eatuwzc, rlals +rgqyd (259) -> ufdpy, zmtzdj, stxzzh, aikjla, hmbxr +xgnrwy (94) +siiztl (133) +vtqjrpy (8) +fyopf (27) +ckarib (232) -> sqqvakc, icbkonc +jjgevqi (60) -> jttvktl, wkuajq +ppbsza (28) +elkot (264) -> atzvica, rkdhv +mxtwfot (8) +oyxhn (90) +mxvto (86) +hwbzs (60) +dtmeth (112) -> klzefiz, nvmabz +jhfos (6318) -> dovmewj, qytejsk, kcfvm, nuiiywb, rgqyd +jtikqy (27) +gfqcad (25) +dxswnz (29) +vfsxpt (15) -> ezjxspt, mntzj, rnnoy, cmxxnel, jdhjjhc, xmuewfv +ujttt (30) +gqtmcy (26) +nbiyql (25) -> jcrbv, wzzdih +wftvt (90) +quzew (51) +gjimeu (84) +junno (14) -> chvgdm, vtifny, xhdds +gstsuq (60) +usogal (98) +iwqsdq (40) -> uotii, mhotdh, fvajjc, ezgozo, ajnqxgs, fumrjy +sqzyu (7) -> usogal, ohyndb +hzggfe (73) -> rgljpm, zlunbf, nhgqoun +oneomye (96) +rwpoq (22) +pdqzeg (158) -> wedvahi, vedvg +trkbjbk (52) +ndjwipm (89) -> dfmrj, uhlnlw, gyuxgla +wgsgkq (59) +wkwylw (74) -> pqpekm, exlobhb, ywarcbi, uavous +nwnfwyw (60) -> olmnek, ugdngw, shfeab +mteeayt (5630) -> zcykfzl, sfbfkb, vvcwap +pttbcl (7) +jqbxuq (31) +zelmrru (94) +wtdgjd (91) +fkkxcix (288) -> khhatd, qwnxufh +vklogmf (1412) -> sszzsjd, ucqqqi, lfztken +iigqx (8) +wkfpb (1892) -> naifqx, tieyaxc, ivlvuhq +toamjok (279) -> feqwmhy, qayqkk, tzaid +nltbv (82) +pnkitlq (75) +jqeuxjc (70) +kbjmz (85) +ifztqrk (232) -> kdcvok, aslbzb +koyyc (92) +ubahwni (415) -> ipqrsx, yptpysa, dkeamn +qdchc (62) +wsotig (50) +wxzcum (95) +jhsnju (143) -> sfdsda, lbuolhp +hexej (8) +ucapgv (72) +misjfqx (275) +hlrknn (54) +uloaqjr (11) +batiqxv (252) -> cipzul, yojkhdg +lduyqm (21) +dyfcem (10775) -> jywenab, hzlhf, tngwf +kbskq (54) -> bbbfnkl, duilfrb, fqjafn, dvvvpt, fuwwn +lluabe (24) +uuvzvmg (54) +fzhiga (49) +gzjkmy (58) +pjslph (41) +wvmctd (88) -> pdapop, gvwdr +oqhtqmi (1485) -> mnogvuo, nbiyql, dbulh, rxdfefu +hsidbv (246) +sosvey (48) +jttvktl (83) +gcjpmr (18) +dryio (99) +yqsufra (66) +rudbse (32) +ggypng (84) +cpjawpx (1750) -> dclips, eobrn +izfjh (64) +yfznza (200) -> zcdwm, fzjpfb, gqtmcy +bdojny (81) +ipkqb (90) +kwxkc (6) +iiena (67) +zojod (12) +aaovpqz (18) +bcyanf (60) +fxytl (66) +jdtauge (27) +vvqzxz (98) -> crjir, unbny +wkuajq (83) +zuuor (90) +oemva (35) +wndlhkf (95) +zcykfzl (11) -> pyxmwku, aqkvjip, vdzxo, urmzp, iystzy +lirus (30) +otzlwo (868) -> csbdis, fvcfdo, uscpxzv +nnamrm (68) +kgobcze (23) +urbny (156) -> wsotig, aivrgc, hxrif, yipmpvi +hvptp (36) +hlchui (89) +cyygfy (75) +lqmiv (74) +lvkwwuz (128) -> jybokd, wjivis, uacplos +ecdmtkz (65) +lgusee (16) +yadsolh (37) +uhwcb (3172) -> qiaaqj, unecu, sdjzoik, qdpcofy +aqkvjip (367) +pqniaz (53) +pmuxnac (95) +coruedm (31) -> iiena, htozjym +qbbsz (170) -> gtycci, xnuirq, sppbjqu +hnowl (61) +zvscftj (93) -> wuqaqh, nbiacm +jdhjjhc (121) -> mggnu, kdyjdi +ppwjh (31) +dlbakk (82) -> uckfdi, oujeg, orirs +sjgdfv (21) +wxwvh (99) +ezjxspt (105) -> djjagoc, hzhtm +xougi (97) +runmsjd (29) +zigfqp (66) -> czzfhvy, gkakcm, ggypng +smryqv (392) -> mebzrnn, rudbse +zfvrxs (16) +jrdlhg (40) +qancsuo (31) +rkkgpaw (3708) -> dxagp, ygjfl, tqdtgzi, jkilh, ietzw +kdhwxo (89) +ktygd (24) +odiiboe (253) -> tetnp, hflxhw +wedvahi (63) +pumgsq (90) +hqzsf (89) +pgzmhg (92) +bdrjupf (99) +uoturc (50) +ewgmy (60) +wvltmyv (204) -> lirus, ujttt +swgte (84) -> ouvco, oyxhn, rahcz +owwucfr (94) +xhdds (42) +optwjd (55) +bbufm (50) +kykmrh (41) -> diwnw, xbaebbl, pvxboe +nmgoh (152) -> xciyqzi, xdilahf +sjaufyu (79) -> aokaek, xeylx, omqech, zvwli, bvntvu, flimltt, ndjwipm +yynsrtq (15) +ofauy (823) -> yxikq, pajwswk, dlbakk +cduoay (91) +afqqpy (7) +cmcjml (90) +emadjac (75) +bqruuvx (571) -> nyzee, ykble, jdpmxgj, wtyeqkr +lsuiiih (8630) -> brbnff, vfsxpt, lmzoi +munngu (60) +bhqrhda (198) -> hfwsmrn, gwbbe, cemrson, idgqyfk +ircgvnq (1400) -> ktpudp, coruedm, dwpvwz +dnwfv (64) +lkqitr (57) +oowec (55) +tbbpr (97) +yvtrb (78) +eytlyat (51) +fydwas (58) +ugtwn (81) +zmmze (54) +crzaveq (85) +zmxnypj (95) +ntxgz (85) +ipuzdkg (84) +lbuolhp (81) +tczoglq (72) +xeylx (207) -> vncffh, thcgrv +ergsxv (99) +rcrlwms (8) -> ergsxv, xlafbbu, bmgddk +cjuyp (9) +utiueqf (18) +ajdhm (68) +grxap (96) +ogffnth (13) +txodvj (97) -> rtkjnq, optwjd +mzaane (98) -> afazbmw, mbdfm +acfgtnp (63) +tlmvaep (24984) -> gnkzi, ygara, ekqlbr +cdfdg (45) +qwdbvr (2969) -> nogrr, jdxxshy, fvaiqyr, uinplcz, iwqsdq +ottdek (31) +mntzj (157) -> sqnpby, jlcod +cjkhs (39) -> zerav, kskmlk, cybok, jqbxuq +bcwwbdp (76) +wxftfvc (93) +vxgadew (34) +rxctq (40) -> yujxzit, gbsjs +zadepxs (31) +fitvk (7) +vwobzsl (15) -> lqmiv, adkuh +ntmyjat (123) -> xxemgkm, havvqw +nqswhd (87) -> mxvto, yipippp +vfsonrs (55) +zhujwor (38) +ugvump (24) +pdapop (12) +rhxwwg (98) -> pqniaz, acqzje, btqdqx +hsycxw (84) +shxnlm (934) -> lzqin, vdycf, dahxznk, yanech +pjdxt (128) -> sfhnsel, wmvdmad +saome (163) +uuskq (328) -> ctycwjv, gzbnkz +jygig (88) +toarg (77) -> udjtzas, muymzj, ehpsber +atzvica (50) +iaphph (94) +wvnelsw (62) +ohlnw (24) +ghmke (108) -> unknkby, qeenjrf +tzitsb (67) +ozsipa (83) +ekfimhl (72) +qphnx (99) +bqnykil (93) +jkilh (68) -> urbny, ahbqrkw, gvdqk, hcmunl +vmkyxsn (51) -> wxwvh, bkaowc +ypbvxys (16) +yxhcygc (80) -> wdvfpay, chcuadg, dzqvp +sfhnsel (39) +kqxsjt (90) +qctjxs (421) -> jizwj, qwcnhxs, zcrsj, cwfgc +ijdjfr (58) +djihb (988) -> wxzcum, ctjkvre, vrjgl +tieyaxc (97) +hlbdk (43) +amrdo (41) +dmuhap (82) +dvvvpt (84) -> ethprq, rhutj +sjldep (81) -> wwniofg, afqqpy +btxsnrj (22) +kvfus (72) -> rrgsu, vrzzc, axcqrvp +upybuz (89) -> uhuhant, dqeoi +tivyb (5) +gmsrhnn (13) +mvrpacv (38) -> seygrud, lhdtxwa, znxhe +hltmydl (56) +vuahzfe (12) +omxbi (56) +ufjyqh (213) -> yodjjz, eytlyat +ugnsbfr (163) -> hzexlou, cwzgcb, crzrj, crnnojj, wrkgz +nscyh (1327) -> dqiievh, ykwyv, dtmeth, cuanrjw +ebedhd (72) +zlhwvo (55) +dvmpj (30) +pgdkb (60) +tfpggg (574) -> nteowjj, mupmhq, leyrvh +tqyhzm (56) +citooti (53) -> zdhuaa, nuxmb +ywvsf (61) -> hzjpu, pdclutm +ouchsl (91) +vdsxce (311) +areod (59) +nyzee (81) +rxsllr (166) -> dzgdexe, duozw +cwfgc (159) -> jtikqy, jdtauge +xihae (70) +eqkks (95) -> pczzyg, pnjhr, uhhgvga, mjwry +zfnpy (185) -> uffjcpm, enmfum +hzjpu (86) +wjivis (61) +vdyit (92) +jumdiue (31) +wupzqha (52) +cvdfmn (63) +miymqw (48) +rzgwqq (61) -> vgknyq, scbgse +dfmrj (48) +jcffy (291) +bpnbtab (90) +rgxjg (66) +cbazit (95) +tyannz (193) +ykble (81) +rrgsu (59) +qgjhab (87) -> dksoeb, ezdusg, pwvjth, mdlfse +enmfum (23) +ekgfr (392) -> aabivaf, rzzcyrh, jbwibse, bhnnrnz +shfeab (79) +pncikdq (14) +sppbjqu (138) -> kbjmz, ntxgz +jlcod (45) +jolfxq (35) +mgybe (81) +qyhyr (70) +jtzqhn (183) -> bcwwbdp, cqmdp, bercxo +awvths (33) -> rvhfdxw, mjzfv, uypdm, rroehj +xrnukee (93) +cemrson (12) +abzahfo (36) +pzkofch (60) +gtycci (294) -> xkkyybu, slthtvl +wwoii (125) -> jtrpn, msmar +jzgllr (29) +xnniv (63) +vgknyq (85) +qfqhlzi (63) +muymzj (92) +vsrrjw (63) -> kyigxxe, jturbxp +vzheyuj (92) +kgxms (90) +mnogvuo (23) -> ezxtmg, losei +ktoxzno (61) +dkeamn (118) -> susvwaq, ikkvmpl +aywhbw (197) +vggzc (83) -> bonch, cgfkphb, rqpripo, jxwep, oqhtqmi +rmfrx (90) +hmbxr (40) -> xougi, fvvsis +blrmjo (70) +azreib (86) -> wcqclc, nsbse +kyvgzk (38) +okcpk (35) +ednxkm (86) +orirs (25) +eiuijrv (99) +scbpz (59) +ivibm (65) +rjrtpwq (66) +nrestbe (77) -> ikeoki, eggqth +wkdyv (12) +mtmritp (182) -> pgkir, shkxavi, ijdjfr, xegbm +mqkpcxq (82) +iribjrc (36) +iuufms (103) -> hpoeayk, ebedhd +pjssop (45) -> lszon, idrncu +kdfxz (250) -> ulgkks, qaxbdi +cipzul (33) +mjwry (55) +vpuqipd (171) -> wpyaqv, hwkly +uelpws (287) -> hnlcfix, vnofuwc, cbbyjs +xunaojn (559) -> iovdh, znfoyv, kmheqrj +thxmp (72) +ctycwjv (12) +lrhseuy (748) -> xinic, wzimpmr, wubtbdp, ywvsf, wgetx +qytejsk (417) -> olhcanq, pydacw, cypafs, idzrtvp +ehiqt (38) +ndevzln (23) +sqqvakc (23) +crzrj (152) -> inkckep, jolfxq +xsrotj (53) +qzxdbvb (82) +lafvy (203) +cwlwzhy (75) -> xytanzt, tqppbf, awzfel, elkot, kdfxz +rftkw (10) +qecdd (32) +leyrvh (215) -> ynevzr, cjuyp +vhldh (28) +xklqajg (8) +xmrocio (41) +vskve (69) +ablnk (67) -> pgdkb, bcyanf, mqjxhhh +beqrsjx (61) +nilbqer (161) -> lgusee, swrda +kspoovz (42) +mbvkb (84) +kidyka (38) +gonle (23) -> qbovld, crzaveq +przui (83) +thvlvgt (10) +uffjcpm (23) +rpjxbhc (50) +egfqvs (53) +iszlpa (91) +ekmhno (37) +kqlidl (305) -> csfsklt, acrpk +uhnaw (35) +jdxxshy (226) -> wnvhd, ddzkbox, hbmcb, cgzumy, kggsq, godbrn +aslbzb (38) +kggsq (100) -> thxmp, gugquvb +utlqx (13165) -> dyfcem, icubrz, okuup, jhfos +wuglbn (30) +dxagp (769) -> wwoii, vvmay, mwcqrpu +nawqww (126) -> inovvz, dlyei +pyxmwku (95) -> xhbqmie, kypfh, sjkmq, ajdhm +chvgdm (42) +wzecczv (37) +qbovld (85) +wpyaqv (43) +uquuws (11) +inkckep (35) +dowcukk (91) +lhqqfh (59) +nvmabz (28) +dovmewj (99) -> vchyhs, vkdfymy, dwtvr, qvqdwx, wixuzd +dfxhfex (280) -> eqrcoq, dqukfsg +jdpmxgj (81) +urzurmc (89) +kuojws (97) +rroehj (342) -> rjppftm, pyvfqx +qvqdwx (78) -> fmtjcxp, lcwnle +pqpekm (260) +xccabhd (6) +agtwdyf (8894) -> ppodfft, wdclggm, yiyld +bbfkxd (10) +nteowjj (141) -> bajystl, pdlkc, ihdujet, kgobcze +kdcvok (38) +mjzfv (374) -> hokdx, sosvey +epbdtie (40) +hhugr (84) -> myxnc, tysfacj, bbbtpgn, yllqo +pgbhv (31) +ltkwjkw (92) +utzqyl (89) +wdvfpay (67) +sjlax (17) -> qcytpf, mgxbrrh +jhubo (248) -> bbfkxd, rftkw, ggqyz +nbiacm (82) +szqbyiy (146) -> wjuxxef, wvnelsw, emlmom +hzexlou (222) +rvhfdxw (336) -> ugeuc, ginnjra +adhga (7) +hepcmft (78) +lmdmcw (170) -> cduoay, iszlpa, mngflny +vuounm (208) -> vlqciig, ccmobzb +bpdjd (73) -> hsqujmf, awjacds +bhbwz (74) +rsffyjw (70) +uhtbx (93) +godbrn (140) -> tuxbrfu, poezvkv +ohtefz (24) +ajnqxgs (87) -> ldbfz, vsznmk +hxrif (50) +fmqozb (157) -> bwefj, zadepxs, dxvyfrf, raopje +awzfel (202) -> rfprjll, bdojny +lovrin (144) -> yufve, zgigo, evhuki, hexej +tqpztin (96) +hnlcfix (8) +jqers (248) -> jpjqz, ixbgkw, spzex +mohfmrr (16) +odflw (118) -> ejbtd, pjslph, amrdo +dbulh (183) +rahcz (90) +aikjla (234) +leavyf (69) +pydacw (117) -> bbvdc, nnamrm +flimltt (103) -> yrrds, wpawu +cbgrkw (31) +nkhrpg (43) -> bhqrhda, mzaane, hsidbv, tsoub, ycbet +rsiom (21) +yipmpvi (50) +dfodke (281) -> kdavcr, nzoczg +lrsaprr (59) +rprkjk (225) -> rjzjdh, krodu +ruxkyn (471) -> rhxwwg, pigll, xvanyc +skaiivy (81) +qyeifkn (56) +xugpwfp (311) +acgyx (33) +seddq (90) -> mewbsd, eczncbr +czzfhvy (84) +pwxkp (18) -> gtcmb, hkbpff, jlenggo +mqjxhhh (60) +qaxbdi (57) +iovdh (69) -> loceai, fydwas +kcentfc (93) +uuanft (81) +ftuet (25) +xzhdy (9) -> vggzc, mteeayt, uhwcb, farimk, uxczdzb, rkkgpaw +tihtr (109) -> xbypaw, diphdjt +pwyqnm (37) -> mhzsyy, kuojws +vxnfqtl (51) +olmnek (79) +tzaid (9) +yqekzzg (34) +ucocpbv (180) -> hpyjk, krltz +ulgkks (57) +hglgopo (17) +fuognlx (75) +ntvcnae (68) +llufp (306) +vvmay (169) -> remwlv, gcjpmr, zlekeh, zfcck +dmyewr (52) +igvsrs (1132) -> jvchu, muckfu, uuvzvmg +cqcmf (910) -> llhhjb, kdvfpg, ntvcnae +rbcqg (23) +pvuyft (66) +sdjzoik (1184) -> cnmtugy, saome, cjkhs, vwobzsl, vsrrjw +wzpfe (16) +cqkxj (34) +limohv (36) -> lubvf, zhujwor +rfbgops (83) +xotwwe (85) +xbypaw (44) +qokvy (226) -> lynlnjr, pbngkw +uhzdjta (40) +csisv (32) -> fuognlx, ebknkgh, eqoiqq +cyzdj (54) +gzlbsml (16) +btvche (63) +dvtfl (63) +ikeoki (85) +cgfkphb (1881) -> wvmctd, limohv, kewktnf +pnjhr (55) +bbvdc (68) +nogrr (448) -> pdhmo, hycppt, mtmritp +utltope (38) +pkggwf (75) +icubrz (72) -> dqntfx, lrhseuy, oqnerup, jaizfy, awvths, zrxjkr, vklogmf +temngvm (88) -> vzheyuj, waewrc, vdyit, jyhalw +awjacds (11) +kypfh (68) +oehtgj (24) +ohedu (109) -> grpvwt, xqbglc, xbhqpqp +aagqoya (55) -> zpgcqq, fpcqopg, enuyf +rxzgrn (68) +hcavfz (149) -> bbhrg, ndevzln, rbcqg, zqxrmoi +cedwljx (42) +cgjzvr (224) -> fhtyxty, idbik +fpcqopg (54) +xqzaqn (23) +suhmny (360) -> sqqrkn, tmvvgp, jscxey, vuahzfe +ttqxk (20) +icaiy (40) +dwtvr (72) -> ikwfxuh, rqxyfp +uhuhant (25) +qhcuolm (95) +gfdae (22) +flahmx (39) +grpvwt (55) +pdhmo (74) -> mxnrle, ixzpx, xotwwe, ofegal +xpcyuu (40) +ywarcbi (218) -> sxjxk, sjgdfv +zcrsj (57) -> ejfvc, slijas +cvzubu (43) -> gepvnm, xitkni +vjcjl (231) -> vpicsc, hnowl +cdaccdo (54) +zzbbtqs (8) +rkhbff (55) -> hpiil, agnojmu, zrwaek +ltcqa (117) -> sicsb, wzpfe, eowhrxj +liatu (98) -> xynwm, pxnhs +mxnrle (85) +uvdikh (128) -> fitvk, haumg, eebealj +eqrcoq (37) +mbdfm (74) +mewbsd (92) +gfopy (8) +ebmdbz (38) +xitkni (75) +uacplos (61) +aqtupw (13) +skzkx (60) +kdyjdi (63) +giwrnux (59) +ggampur (75) +xfgqwg (27) +cdrivrb (27) +zrwaek (54) +jizwj (57) -> yvtrb, gbloa +coyodgw (70) +grzkzam (274) +bbhrg (23) +zndcv (990) -> cxgcf, ogchry, xbddnc +skiyk (12) -> toamjok, fjuytze, llufp, vybcj, orcobz, vuounm +jaizfy (141) -> yimhrw, ltlss, lmdmcw, acilnmg +xynwm (83) +hauoc (90) +feoaqz (98) +mdlfse (69) +fxejcg (102) -> vcwxkxy, xgxzul, bllys +qvqwp (73) +maajj (63) +xnuirq (92) -> oozsasi, ojktrz, xaacva +emuzuk (90) +iraqghm (89) +hsifio (75) +mgxbrrh (58) +szsnk (55) +zdhuaa (97) +tslnnk (78) +zoyfhq (6) +gtcmb (94) +jzczzhm (173) -> dzydw, wtjxdv, thvlvgt +nffqvwl (32) +qoyyyzt (91) +ktmepg (9) +qyptue (82) +bercxo (76) +ndpeic (83) +ikwfxuh (97) +fzjpfb (26) +ddzkbox (58) -> tdsfl, xrnukee +jfblzs (217) +vxxftx (71) +ilbhxw (50) +akwhbb (90) -> ggampur, hozmnv +nuiiywb (340) -> tipds, ieqcv, qgjhab +ppodfft (419) -> gvuocj, vtvhz, uohzm, vvqzxz, pkikya +vweupv (9) +xfclvc (80) +rtemycc (58) +woiffy (35) +nftkch (335) -> kidyka, qyguegc +duilfrb (226) -> pqfijv, dmobyt +okzwi (77) -> ewgmy, ffkubc +jpjqz (20) +whpko (50) +rgfhr (50) +liwvo (97) -> orohja, rmvsw +eobrn (49) +hcmunl (240) -> dbedpz, rtemycc +yffeaia (11) -> wftvt, cqgfeau +ptakb (40) +unecu (74) -> gjljql, kylrxvv, vqrzfp, misjfqx, bzhsmk, zlaps, tcuxy +fkpxwb (215) -> ogljepx, mxtwfot +olhcanq (55) -> eiuijrv, dryio +wuqaqh (82) +sicsb (16) +yptpysa (84) -> kyvgzk, ehiqt +huhjt (56) -> lkqitr, rcrjah +oedpdc (48) +iriwf (18) +uhhgvga (55) +yiyld (689) -> rpvpz, akwhbb, qokvy +gfodmz (35) +ftgff (764) -> nrestbe, keazs, cdwtclt, ueyfa, iuufms +aluvk (1182) -> lovrin, batqran, zexqvx +eijqpl (12) +wzahu (51) +crjir (50) +ecxsy (83) +aamnwt (20) +etlto (67) +wixuzd (220) -> hwyjqlo, xqzaqn +rwzuaru (80) +ujfkgpk (39) +zexqvx (176) +yllqo (14) +xbhqpqp (55) +jvchu (54) +usgap (71) +cgzumy (223) -> vuvsu, adhga, mygwo +unbny (50) +kdavcr (15) +tnlit (78) +ehamxte (97) -> jtzqhn, ukbby, tivtbk, nftkch, dbvkk, elxtgq +muckfu (54) +gjljql (275) +eimqx (275) +dbvkk (315) -> nlxvg, nffqvwl, azcfch +pajwswk (55) -> fiazqvj, knlyr +hxvnrl (73) -> xxwpir, zelmrru +ntkgyj (30) +acqzje (53) +eatuwzc (13) +equpkvw (101) -> ygprn, fcyxxfb +wvxne (80) +kuhkj (69) +jpjufo (49) +shiyju (59) +pojbfof (41) +nvxdw (142) -> nhitw, fxytl +rjncwf (89) +duozw (49) +cdgxjqk (71) +idzrtvp (71) -> xjicbre, uapkd +sjkmq (68) +yvxlc (50) +okuup (648) -> bbrmw, ehamxte, eqsowyp, npkvkpu, czvcms +fwmiit (83) +ebyuo (51) +zcqzjv (66) -> ouciqi, lvwcbl +glbaiy (106) -> obvji, eotjep, yadsolh +lzqin (76) -> loziss, otrpt +qurkt (53) +qtwrr (93) +hydzhez (57) +xiqdw (83) +acjnfd (67) +yvlzlnd (11) +pminuvd (56) +tdsznt (42) +gfiogpk (10) -> feoaqz, nqctxw +nweseg (104) -> fuclj, vxnfqtl +htzrkz (99) -> rkhbff, jfblzs, glbaiy, aagqoya, lcfsvbf +khhatd (33) +gjoof (69) +amomsn (230) -> xxmermc, btxsnrj, rwpoq, gfdae +tivtbk (377) -> tqoul, hglgopo +kgqfw (682) -> usgap, zmucrfa, vxxftx +mrvqj (82) +acqqab (5) +vdycf (56) -> leavyf, kuhkj +htozjym (67) +fpffxl (302) -> scbpz, shiyju +eggqth (85) +fmvboqy (67) +dzino (114) -> xfclvc, shjzwy +evhuki (8) +smyqf (37) +qmuueat (35) +hsqujmf (11) +juogz (71) -> rjrtpwq, kfwcftc +pdlkc (23) +ygxgxmd (41) +vgszctg (59) +bbbtpgn (14) +xqbglc (55) +bzgeoqg (80) +gepvnm (75) +uizzbd (1052) -> yxhcygc, luewm, fmqozb +pqfijv (11) +krltz (69) +rftle (97) +dzydw (10) +havvqw (34) +orcobz (204) -> ebyuo, nzeiwlc +shjzwy (80) +cuuuxw (33) +tnagy (41) +ihekxpi (74) +dwpvwz (141) -> wkdyv, wrntht +batqran (14) -> uuanft, ffxfi +veriopw (1835) -> mrvqj, nltbv +aergp (96) -> qjnqrxg, ouchsl +pnygn (149) -> rhygakw, ndpeic +crnnojj (57) -> zlhwvo, szsnk, stoosc +ezdusg (69) +unuscm (82) +wvpln (49) +djjagoc (71) +blkwmr (70) +chotekn (57) +ruuad (199) +kikilp (83) +fcyxxfb (49) +rnsmk (40) +pvxboe (43) +ifdqaup (5829) -> owsfeci, ruxkyn, kcelbg, tnbuu, ydkppqv +wnvhd (64) -> hauoc, zsdbkwn +dzsqc (14) +kobrbu (66) -> hsifio, pnkitlq, emadjac +bbbfnkl (234) -> pttbcl, uzxcmdh +btqdqx (53) +fpfvv (56) +bkzek (240) -> sbvhk, oufdzsi +lszon (73) +fcszioo (55) +azcfch (32) +rqxyfp (97) +vnofuwc (8) +eqsowyp (1711) -> minal, wazmp, pdqzeg +dksoeb (69) +wzimpmr (129) -> aajog, soyuwm +lcfsvbf (39) -> urzurmc, kuplqir +dtqdwgm (83) +uhlnlw (48) +sszzsjd (167) +ltlss (233) -> ctbne, qyhyr, rsffyjw +erpdbe (60) +kewktnf (72) -> blsrmal, drooh +ethprq (82) +dclvnt (168) -> hrdvgwl, xfgqwg, fyopf +ssqlqmn (46) +ogchry (76) -> nigtunz, icblguo +zwzrlp (27) +bqile (69) +zpgcqq (54) +shwec (92) +loceai (58) +ezxtmg (80) +gnjdzkp (82) +qnuhxta (12) +roxewb (11) -> dzsck, rmfrx +jbwibse (7) +pxnhs (83) +rtdsov (16) +owmxj (35) +dpyrzzy (300) +rjzjdh (33) +sbpdtfq (11) -> oneomye, grxap +arajafq (178) +rmungsh (95) +qiaaqj (312) -> odflw, ggqznq, ikygytk, lxsycwm, hcavfz, fkxei, jjkkl +thcgrv (13) +fxplut (163) -> dotrpsi, tcsisyq +lghlhb (53) +nbyij (32760) -> tdxow, qekcxr, qwdbvr +dzgdexe (49) +dbedpz (58) +tmvvgp (12) +josri (79) +wycodto (39) +nsrad (76) +vrjgl (95) +adkuh (74) +hfwmhrn (6) +ukbby (79) -> dnojir, przui, vrdezgb, lluoxxt +fylsk (253) +vlmua (218) -> uoturc, bbufm +cjowcmb (111) -> bdnbvsc, ynwkyia +rxdfefu (79) -> srsjjft, trkbjbk +cugcfjb (43) -> jygig, zhzkbp +yqdhlr (1505) -> jjgevqi, efavpu, scpwjv +tdkdi (207) -> iribjrc, nzznh, gtlmfhu +zerav (31) +ojktrz (72) +lfztken (53) -> hydzhez, zssmks +bmgddk (99) +bonch (40) -> xugpwfp, dfodke, vdsxce, vptuwar, lvkwwuz, uelpws, yagku +wruwjn (44) +iavoj (78) +oozsasi (72) +gvuocj (46) -> nsrad, sknyb +opkqf (82) +npoan (66) +kcelbg (825) -> vginql, fwnnw, upybuz +ynwkyia (60) +wbqbr (421) -> rprkjk, kobrbu, jcffy +poezvkv (52) +odyxpkn (94) +pxyfbvy (85) -> vvenem, xuctchl +xbddnc (240) +qsatxh (186) -> erqjic, tivyb, peokst, acqqab +opsqo (8) -> pgiixde, wgsgkq, vgszctg +bkzadqb (188) -> oedpdc, xdjqk +jxfhkc (171) -> ohlnw, oehtgj +kacgf (15) +qwezgho (42) +xuctchl (59) +bjgwnd (40) +mpxji (191) -> seasb, yqekzzg +lvwcbl (45) +eowhrxj (16) +iyhif (131) -> dtqdwgm, fwmiit +zlaps (87) -> ijymh, ydtamvm +pgkir (58) +njtrh (413) -> dfxhfex, qqfrfmp, cgjzvr, fkkxcix, swgte +fvajjc (163) -> skzjwi, nlkvr +gqdwda (81) +axzwwto (64) +stxzzh (48) -> uhtbx, qtwrr +nigtunz (82) +pksdzch (77) -> ktygd, gavjcu, ohtefz +idgwugs (95) +scbgse (85) +mygwo (7) +igorbc (41) +bqedfkt (55) -> npoan, wtwmmmy, anmam +ykwyv (8) -> ptakb, jrdlhg, epbdtie, xhtqxz +bhsmhi (331) -> hxvnrl, doqco, mcpjzd +csfsklt (24) +eqoiqq (75) +nlkvr (56) +ywrxbgi (84) +gkakcm (84) diff --git a/src/main/resources/2017/day8.txt b/src/main/resources/2017/day8.txt new file mode 100644 index 00000000..b41d8f36 --- /dev/null +++ b/src/main/resources/2017/day8.txt @@ -0,0 +1,1000 @@ +utc dec -736 if p > -7 +tn inc -876 if qlm == 4 +uz dec 294 if l < 10 +a inc -904 if me >= -7 +tn inc 622 if ppl <= 6 +fr dec 17 if ufk > -10 +hkt inc -511 if mdk == 0 +t inc -290 if xxh <= -1 +l dec 727 if ufk < 7 +tn inc -576 if l == -727 +z inc 464 if dea >= -2 +ufk inc 755 if utc >= 735 +utc dec -720 if qlm <= 5 +a dec -277 if ufk <= 755 +xxh dec -640 if u == 0 +hkt inc 875 if m != -6 +ny inc -351 if p >= -4 +l inc 674 if dea > -7 +ufk dec -826 if p == 0 +mdk inc 377 if utc == 1456 +ppl dec 793 if q <= 4 +z dec 114 if mdk > 368 +ny dec -412 if ny >= -353 +utc dec 176 if a != -620 +utc dec -610 if p <= 1 +l inc -541 if xxh <= 635 +l inc 102 if ny < 66 +qlm dec 700 if l >= 43 +dea dec -202 if tn <= 38 +a inc 785 if a <= -629 +ny inc 414 if fr <= -21 +l inc 250 if hw <= -10 +l inc -516 if l > 41 +utc dec 358 if mdk > 373 +p dec -38 if z == 350 +uz dec -71 if a == -627 +t inc -713 if fr > -13 +l inc 242 if tn <= 53 +dea dec 600 if hw <= 8 +hw dec -92 if fr != -19 +hkt dec 67 if l <= -232 +qlm dec 523 if hw == 92 +utc dec -608 if q != -8 +m dec 314 if me < 9 +xxh inc -937 if xxh >= 638 +qlm dec 494 if m <= -313 +fr dec -590 if m <= -306 +utc inc -539 if tn == 46 +hkt dec 831 if p >= 43 +dea inc 510 if a > -627 +p inc 319 if m > -305 +m inc 736 if xxh >= -302 +ppl inc -712 if mdk == 377 +ny inc 21 if p <= 41 +hw inc -569 if hw != 92 +ppl inc 150 if dea < -595 +xxh dec -953 if z != 356 +ppl inc 578 if qlm <= -1714 +uz dec -733 if p >= 35 +xxh inc 100 if xxh >= 660 +hw dec -491 if ppl < -767 +t dec -64 if z < 347 +me dec 802 if dea > -601 +hkt inc 431 if hkt > 359 +utc inc -600 if q != 0 +u inc -223 if tn < 48 +tn inc 443 if uz <= 513 +l inc -349 if ny == 82 +utc inc -499 if xxh <= 661 +a inc 600 if hw >= 578 +z dec -636 if utc > 1099 +tn inc 75 if z == 986 +hkt dec 364 if mdk < 377 +ufk inc 249 if fr == 573 +l inc -429 if uz > 507 +hw dec -621 if ppl == -778 +l inc -620 if z != 980 +l inc 319 if tn == 564 +q dec -478 if ny <= 82 +utc dec -169 if uz < 519 +fr inc 124 if dea >= -607 +m dec -674 if p != 28 +m dec 744 if p != 44 +l dec -620 if hw <= 582 +utc dec -950 if p >= 37 +uz dec -122 if xxh < 660 +l inc -563 if z < 996 +hkt inc -514 if m <= 361 +l dec 525 if mdk == 377 +xxh inc -666 if u != -228 +a inc 934 if a <= -23 +a inc 817 if xxh >= -11 +me inc 450 if tn < 563 +hw inc 475 if xxh < -1 +fr dec 493 if xxh < -8 +uz inc -985 if qlm > -1724 +ppl inc 856 if qlm >= -1720 +hw inc -368 if me > -804 +ny dec -219 if p != 38 +u inc 1000 if ny > 79 +q dec 551 if hkt == 281 +uz dec 317 if dea >= -600 +uz inc -916 if qlm <= -1726 +hkt dec 915 if mdk != 380 +mdk inc 484 if l == -2392 +xxh inc 326 if dea > -607 +u dec -803 if me > -811 +q dec 689 if tn != 565 +hw dec 908 if p == 38 +z inc -173 if ppl > 72 +z dec 371 if tn < 565 +p inc 185 if u > 1571 +a inc 490 if mdk != 864 +tn dec -27 if u == 1580 +qlm inc 77 if m > 345 +p dec 364 if ufk <= 1836 +dea dec 308 if me == -802 +a inc -345 if hw == -218 +ny inc 603 if p <= -138 +fr inc -4 if utc > 2217 +me inc 118 if hkt <= -626 +hw inc -590 if z < 443 +me dec 279 if q <= -756 +me inc -50 if dea == -908 +ppl inc 708 if u <= 1586 +t inc -429 if mdk >= 854 +m dec -372 if uz > -676 +fr dec -840 if ppl == 787 +qlm dec -442 if tn != 584 +u dec 227 if l == -2402 +m inc 279 if z <= 446 +xxh inc -951 if t > -421 +t dec 530 if xxh != 317 +fr inc -621 if mdk <= 869 +a dec 480 if fr < 424 +q inc 988 if l == -2384 +u inc 313 if q < -757 +hw dec 237 if hkt == -634 +mdk dec 945 if t > -969 +me inc 631 if ny >= 679 +ny dec -740 if uz == -670 +t inc -310 if utc > 2213 +p dec -453 if utc >= 2218 +mdk inc -266 if hw == -1045 +a inc -887 if qlm == -1198 +ppl dec 521 if t >= -1270 +dea dec -685 if xxh != 310 +l inc -472 if m < 1013 +ufk inc -920 if l <= -2860 +u dec -503 if me <= -373 +ufk inc 547 if m > 998 +l inc -287 if p <= 309 +qlm dec -173 if q <= -755 +u dec -928 if z > 437 +hw inc 43 if hkt < -626 +utc inc -694 if me == -382 +fr dec -938 if tn > 584 +q inc 9 if mdk == -350 +dea inc 119 if m < 1012 +ny dec 210 if ufk <= 1465 +xxh inc 352 if q > -758 +dea inc 483 if hkt >= -639 +tn inc -652 if t >= -1266 +ufk inc 674 if ny >= 1207 +ppl dec 311 if z >= 442 +qlm inc 655 if m < 1005 +z dec 580 if uz < -661 +utc inc -977 if ppl <= -36 +xxh inc -25 if l == -2864 +me dec 252 if uz > -674 +mdk dec -98 if z <= -129 +p inc -276 if utc < 541 +hw dec 796 if xxh <= 649 +q inc -726 if z != -137 +fr dec 433 if ufk <= 2140 +hw inc -701 if z < -131 +hw dec 587 if mdk <= -244 +ny dec -734 if mdk <= -249 +qlm dec -311 if utc != 546 +ufk dec -405 if q > -1481 +p dec 97 if t != -1275 +t dec 597 if qlm >= -49 +ufk dec 389 if uz < -660 +l inc 765 if a < 504 +fr dec -948 if tn >= 586 +qlm dec 79 if m > 997 +ny inc 764 if p < 225 +a dec 419 if m != 1003 +q dec -860 if q != -1475 +fr inc 426 if hw > -3080 +ufk inc 0 if ppl != -36 +utc inc 939 if p >= 206 +m inc 830 if xxh < 650 +m inc -511 if hw > -3091 +u inc -720 if qlm > -134 +dea inc -147 if a <= 503 +u inc -322 if tn != 591 +ny dec 900 if ny != 2713 +ny inc -737 if me == -634 +fr inc -494 if l != -2097 +mdk inc -363 if ny != 1976 +l inc 991 if hkt > -636 +l dec 179 if dea != 232 +q dec -264 if ny != 1977 +l dec -976 if uz > -667 +tn inc 791 if hkt > -637 +ppl dec 225 if utc < 1495 +uz dec -527 if m > 1317 +a inc -644 if me < -624 +uz inc 160 if q >= -361 +u inc 577 if xxh > 650 +q inc 124 if xxh < 653 +l inc 268 if dea > 222 +hw inc 795 if uz < 10 +uz dec 934 if uz < 26 +tn inc 966 if ufk == 2150 +me dec -71 if p <= 222 +me inc 186 if ppl > -270 +m dec -377 if xxh <= 649 +ny dec 275 if mdk > -248 +qlm dec -574 if fr != 1371 +utc dec 78 if xxh > 638 +l inc 494 if u > 3315 +tn dec -595 if qlm > 435 +tn dec 113 if a <= -140 +fr inc -610 if ufk < 2148 +uz inc -791 if u != 3334 +uz inc 356 if t < -1276 +l dec -463 if utc < 1414 +tn inc -266 if a < -137 +p inc 747 if utc >= 1402 +z inc -671 if hkt == -634 +tn inc -441 if u != 3324 +fr inc 172 if hkt > -638 +tn dec -558 if qlm < 439 +a dec -234 if tn <= 2155 +t inc -325 if l >= 126 +t dec -685 if l > 110 +ufk inc -912 if z < -805 +ufk dec 0 if fr < 941 +fr dec 276 if a == -142 +xxh inc -972 if p < 967 +ufk inc 188 if mdk >= -245 +me inc -255 if t > -583 +qlm inc 451 if uz > -1710 +fr inc -921 if z >= -814 +q inc 272 if uz < -1705 +u dec 216 if p <= 956 +a inc 30 if z > -812 +tn dec -202 if dea == 232 +m inc 792 if ny != 1976 +uz dec -867 if z == -809 +ppl inc -765 if qlm != 894 +hkt inc 301 if xxh < -322 +p dec -839 if dea == 232 +utc dec -920 if m > 1694 +a inc -206 if mdk == -252 +ny dec -545 if ppl <= -1029 +me dec -860 if q >= 39 +ufk inc 644 if tn <= 2359 +hw dec 959 if t == -584 +qlm dec 667 if xxh != -321 +ufk inc 598 if a > -323 +ppl dec -514 if hw <= -4039 +uz dec 708 if p == 1801 +hw inc -902 if hkt != -333 +qlm dec 249 if tn != 2366 +mdk inc -570 if z > -812 +fr inc -47 if tn > 2350 +me inc -62 if hw != -4037 +qlm dec 796 if dea > 239 +q dec -201 if ppl == -521 +z inc 265 if ufk != 2481 +hw dec 597 if q >= 239 +ny dec 417 if uz > -1540 +hkt dec -866 if m <= 1704 +m inc 103 if m == 1699 +ufk inc -733 if qlm <= -28 +mdk dec -416 if z > -546 +ufk dec 477 if z < -543 +l dec 224 if m < 1799 +q inc 646 if u < 3327 +hkt dec -501 if qlm != -29 +ppl inc 321 if p > 1797 +a dec 678 if ufk == 1268 +u inc -878 if fr > -302 +t dec 523 if uz != -1552 +mdk dec -490 if fr != -304 +p dec -603 if ufk >= 1264 +tn inc -234 if qlm > -33 +mdk dec -51 if q <= 881 +a inc 672 if me < 244 +z dec 473 if m != 1797 +mdk dec -727 if utc == 2331 +ppl inc -59 if me == 235 +a dec -937 if uz <= -1547 +uz dec -352 if m >= 1798 +fr inc 693 if utc < 2333 +t inc 493 if hkt != 526 +hw inc 86 if hkt >= 533 +t dec 49 if ny != 2512 +utc inc 273 if me != 235 +xxh inc -871 if dea == 232 +z dec -707 if dea != 234 +mdk dec 362 if ny > 2528 +tn inc -825 if t <= -658 +uz dec 655 if xxh < -1195 +dea dec 231 if me < 242 +mdk dec -260 if xxh != -1200 +ppl dec -842 if mdk != 321 +l inc -957 if qlm == -23 +m dec 393 if ny > 2515 +ufk inc -648 if me < 243 +dea inc -251 if fr < 399 +a inc 772 if mdk < 323 +hkt inc 997 if fr > 383 +l dec 13 if dea == -240 +hkt dec -935 if tn >= 1291 +uz dec 992 if u < 3324 +hw dec -970 if t <= -655 +m inc 132 if mdk == 321 +hw inc 908 if hkt > 2464 +me inc -975 if l != 119 +ny dec -76 if dea >= -251 +ppl dec -844 if u >= 3322 +qlm dec 286 if ny >= 2597 +xxh dec 903 if uz != -1843 +u dec 992 if hkt <= 2471 +tn dec -663 if me > -735 +ny dec -598 if ppl >= 583 +m inc 84 if mdk != 318 +ufk inc -260 if t <= -668 +u dec -443 if fr >= 388 +l dec -116 if hw <= -2670 +m inc 816 if dea < -240 +t inc 319 if mdk != 317 +me inc -681 if z < -301 +m inc 451 if uz != -1845 +t inc 472 if mdk <= 330 +qlm inc -125 if z == -310 +ufk inc -419 if p > 2401 +l dec -7 if xxh <= -2096 +m dec 325 if fr < 380 +mdk inc -391 if hkt <= 2465 +xxh inc 491 if z != -315 +p inc -832 if utc > 2324 +t dec 304 if a > 2056 +xxh dec 107 if dea < -243 +l inc 220 if hw < -2681 +p dec -316 if p > 1565 +mdk inc 333 if utc == 2332 +ppl dec 961 if a >= 2055 +fr inc 230 if z <= -310 +hkt dec -715 if fr >= 615 +l inc -466 if p <= 1888 +qlm inc 185 if xxh >= -1725 +u inc -710 if t == -168 +z inc 15 if ppl < -371 +utc inc 422 if hw < -2683 +fr dec 688 if t > -181 +mdk dec 606 if a < 2064 +me dec 323 if z <= -289 +ppl dec 150 if uz > -1844 +t inc 617 if q > 879 +hw inc -212 if qlm != -255 +a inc 338 if m <= 2901 +utc dec 545 if l < -228 +tn dec 407 if z > -303 +mdk dec 784 if ppl >= -378 +q inc -352 if z == -295 +uz inc -644 if ppl <= -372 +fr dec 209 if dea < -242 +tn dec -605 if p >= 1879 +hkt dec 77 if mdk != -1470 +hw dec -280 if hw < -2676 +ufk dec 375 if qlm >= -248 +p inc -958 if xxh <= -1710 +a inc 653 if z != -295 +utc inc 493 if qlm == -255 +xxh dec -649 if q > 530 +z inc -993 if me != -1749 +t inc 119 if mdk <= -1451 +ufk dec 883 if utc <= 2825 +m inc -545 if qlm == -255 +tn inc 626 if dea != -253 +tn dec -111 if p > 923 +tn inc -719 if u <= 2780 +u inc 976 if u != 2767 +z inc -495 if ppl != -368 +z dec 481 if dea != -246 +ppl dec 539 if ppl >= -381 +uz dec 213 if uz >= -2504 +a inc -9 if tn < 1509 +ny dec 719 if u < 3757 +uz inc 718 if hkt <= 3103 +ny dec 378 if u >= 3748 +me dec 163 if xxh >= -1076 +t dec -569 if hkt > 3105 +fr inc -280 if a <= 2407 +l dec -908 if q != 527 +a inc -13 if me < -1912 +dea dec 584 if mdk <= -1464 +hw inc -988 if l >= 692 +tn dec 847 if mdk < -1451 +hw inc 568 if utc > 2822 +t dec 133 if tn < 659 +z inc 271 if q <= 539 +mdk inc -33 if q <= 545 +l inc 185 if dea >= -259 +xxh inc 36 if xxh != -1064 +a dec 70 if xxh >= -1042 +z inc 956 if p > 931 +utc inc -778 if dea != -244 +dea inc -868 if z > -1985 +t dec -872 if u >= 3750 +ppl dec 420 if u < 3747 +dea inc 372 if xxh >= -1043 +hkt dec 32 if u != 3759 +t inc 23 if uz == -1985 +ny dec 106 if ufk == -683 +dea dec -794 if t == 1441 +hkt dec -233 if t < 1435 +q dec -186 if ufk == -683 +u dec 328 if a >= 2331 +xxh inc -179 if z <= -1991 +utc inc -614 if qlm > -254 +fr dec 136 if m != 2349 +uz inc -942 if uz >= -2000 +me inc 391 if m >= 2340 +l dec -448 if utc > 2054 +me dec -64 if fr > -696 +utc dec -621 if qlm > -256 +z dec -622 if dea == 132 +a dec -228 if ny == 1992 +qlm inc 957 if a <= 2563 +t dec 178 if hkt == 3304 +me dec -583 if uz >= -2940 +xxh dec 22 if ny >= 1988 +ufk dec 294 if fr <= -690 +l dec 666 if a != 2559 +tn dec 135 if qlm >= 704 +hkt inc 524 if q == 722 +uz inc 448 if dea > 118 +q inc 299 if hkt >= 3832 +u dec 502 if p <= 931 +qlm dec -530 if l > 863 +m dec -677 if m > 2344 +uz inc -254 if qlm < 1236 +p inc 164 if tn != 663 +ny inc -208 if me >= -874 +hw inc 688 if ny >= 1775 +q dec -90 if ny < 1787 +qlm inc 602 if l <= 874 +xxh inc 442 if uz == -2739 +mdk inc 235 if xxh == -793 +a dec -225 if u > 2911 +m dec -706 if hkt <= 3831 +a dec 229 if ufk <= -977 +ppl dec 256 if xxh == -788 +t inc 1000 if p < 1087 +hw inc -970 if a <= 2564 +hw dec 398 if ny >= 1779 +ppl inc 984 if ufk != -968 +utc inc -979 if ufk != -967 +hw dec -383 if utc > 1678 +p dec 283 if xxh == -793 +hw inc -434 if ny <= 1786 +u dec -226 if l == 868 +l dec 943 if tn > 675 +xxh inc -64 if p >= 807 +ppl inc 577 if fr == -694 +dea inc 629 if ppl > 636 +u dec 113 if ufk != -984 +a inc 482 if dea < 760 +dea dec -232 if xxh == -857 +ny inc -952 if ufk < -967 +hkt inc 159 if p < 811 +z inc 530 if mdk == -1258 +m dec -745 if dea <= 988 +m inc -554 if mdk >= -1258 +fr inc -798 if xxh >= -864 +q dec -139 if utc > 1690 +m dec 962 if p < 808 +a inc -409 if u <= 2809 +u dec -30 if ppl > 643 +uz dec 502 if u < 2834 +l dec -653 if qlm == 1834 +qlm inc 732 if me <= -869 +tn dec 200 if fr >= -1495 +ny inc -26 if a <= 2632 +hkt inc -601 if ppl < 656 +t inc -277 if l <= 1521 +a inc -86 if xxh < -847 +hkt dec -42 if qlm >= 2566 +dea dec 218 if p >= 807 +ufk dec 870 if q > 815 +z inc 141 if z == -1463 +l dec 873 if mdk > -1263 +u dec 897 if ppl <= 653 +dea inc -239 if p < 809 +xxh inc 525 if uz >= -2746 +dea inc 827 if mdk > -1266 +dea dec -988 if ppl != 636 +ny dec 330 if m < 3923 +q inc -413 if hw > -2554 +hw inc 983 if mdk < -1250 +mdk dec 932 if hw >= -1573 +fr inc -984 if u >= 1934 +xxh dec -344 if qlm > 2566 +p dec 189 if tn != 464 +hw inc -986 if ny < 473 +m dec 233 if z > -1323 +mdk inc -803 if a >= 2542 +u dec -858 if dea > 2570 +me dec 215 if dea >= 2590 +q inc 945 if dea >= 2589 +z inc 55 if ny >= 471 +xxh dec -63 if a <= 2544 +fr dec -864 if ufk != -969 +me dec -330 if me <= -861 +ufk inc -96 if dea <= 2586 +fr inc 348 if uz >= -2739 +qlm inc -249 if q <= 805 +qlm dec -752 if uz < -2736 +hkt dec -389 if q < 818 +dea inc -169 if ppl == 646 +xxh inc -689 if z <= -1268 +tn inc 911 if m <= 3697 +ppl inc -390 if a != 2551 +a inc 87 if ufk != -1074 +z inc 413 if ppl == 262 +p inc 476 if mdk < -2052 +p dec -570 if z != -1257 +uz inc 266 if hkt <= 3654 +ppl inc -29 if ny <= 474 +ny inc -154 if ppl <= 264 +ufk inc -614 if uz < -2741 +dea dec -627 if xxh == -269 +me inc 553 if p < 1670 +q inc -413 if a > 2636 +q dec 754 if utc == 1688 +p dec 857 if m == 3688 +dea dec 883 if ufk >= -1074 +uz inc -485 if l == 647 +dea dec -979 if me <= 15 +hkt dec 738 if l > 642 +xxh inc 298 if tn < 1372 +uz dec 235 if l != 651 +m dec -170 if tn > 1379 +hkt inc 902 if a > 2619 +hkt inc 354 if hw < -1573 +qlm dec 512 if uz != -3462 +u inc -676 if t != 984 +a inc 635 if z == -1267 +ppl inc -756 if q <= 60 +t inc 662 if mdk == -2061 +qlm dec -900 if p > 807 +z dec 877 if hkt == 4176 +a dec -841 if uz > -3466 +dea inc 141 if u != 2115 +q inc 917 if dea != 3270 +ppl inc -582 if tn >= 1375 +dea dec -309 if xxh < -271 +utc inc -353 if hw <= -1578 +mdk dec 643 if q != 979 +hw inc -595 if fr != -1254 +xxh inc 736 if ny != 325 +hkt inc -692 if z == -2144 +p dec 500 if hw < -2170 +uz dec -168 if ppl >= -1083 +u dec 419 if hw > -2181 +fr inc -653 if u != 1704 +m inc -677 if qlm < 3716 +qlm dec -341 if u >= 1704 +me dec -926 if utc >= 1329 +qlm dec -462 if hw != -2174 +fr dec 604 if hw != -2173 +p dec -826 if uz >= -3291 +hkt inc -855 if ny <= 315 +utc dec -647 if dea > 3269 +xxh inc 483 if z < -2143 +l dec 93 if utc >= 1979 +dea inc -680 if fr != -1264 +me inc -293 if ufk != -1063 +uz dec 279 if t == 1636 +xxh inc -145 if u <= 1705 +q inc 269 if a > 4097 +ufk dec 734 if l >= 552 +z dec -270 if utc > 1977 +tn inc -154 if t <= 1645 +mdk inc 455 if uz < -3283 +dea inc 350 if utc < 1992 +hw dec -300 if ppl <= -1085 +ufk inc 337 if u >= 1699 +ppl inc -634 if l != 558 +t dec -583 if xxh == 805 +t dec 384 if dea >= 3620 +p dec -873 if m == 3011 +ufk inc -710 if uz < -3287 +hw inc -808 if hkt <= 3490 +hw dec -464 if u > 1702 +m dec -102 if mdk > -2256 +fr dec 579 if t > 1829 +dea dec -839 if qlm < 4519 +ufk dec -741 if l <= 545 +me inc -520 if z <= -1865 +mdk dec 824 if hkt < 3493 +qlm inc -703 if q <= 1243 +t dec 284 if qlm < 4517 +fr dec -527 if ufk == -2183 +me dec -995 if xxh == 805 +utc inc 498 if hw < -2525 +hw dec -350 if ufk <= -2174 +dea inc 143 if mdk == -3073 +utc dec 812 if l < 552 +ufk dec 679 if hkt <= 3490 +a inc -464 if ny < 317 +ufk inc 116 if hkt > 3483 +hw inc 77 if mdk < -3063 +hkt dec 851 if ny < 329 +uz dec -37 if uz != -3287 +hkt dec 45 if xxh == 805 +uz dec -682 if fr <= -1850 +dea inc 695 if hkt > 2582 +p dec 857 if hkt <= 2592 +fr inc 114 if dea < 5309 +q dec -714 if p < 1158 +utc dec 896 if ufk != -2752 +uz dec -937 if ufk < -2741 +p inc -807 if tn <= 1232 +ufk inc 788 if fr >= -1730 +ufk dec 519 if l > 558 +ufk dec 142 if tn < 1227 +ppl dec -561 if ufk > -2103 +dea dec 463 if fr >= -1728 +m inc 139 if tn != 1218 +fr dec -606 if q >= 1951 +qlm inc 934 if fr >= -1122 +a dec -910 if xxh < 815 +hw dec -564 if a <= 5015 +u dec -648 if hw > -1532 +hkt dec 601 if hkt <= 2588 +q dec -480 if hkt < 1997 +uz dec 596 if hkt >= 1983 +p dec -971 if u > 2347 +z dec 790 if m == 3252 +fr inc 281 if hw <= -1517 +uz dec 636 if hw == -1516 +l dec -582 if ny > 315 +ny inc 202 if dea < 5306 +mdk inc -251 if ppl > -1147 +me dec 826 if p == 1317 +qlm dec -11 if p == 1317 +z inc -166 if a >= 5011 +ny inc 455 if l >= 1127 +utc dec -156 if qlm < 4525 +q dec -147 if l <= 1129 +ufk inc 36 if ny < 978 +ppl dec -871 if uz < -2907 +fr inc 776 if t >= 1548 +qlm inc -510 if u != 2352 +z inc 373 if dea >= 5294 +uz dec -975 if fr <= -59 +fr dec -670 if z < -2459 +utc dec 322 if q != 2428 +l dec 3 if ppl != -282 +uz dec 728 if ny > 971 +ny dec -396 if p > 1308 +a inc -502 if mdk <= -3067 +ny dec -492 if uz <= -2666 +ppl inc -720 if t >= 1554 +uz inc -323 if hw != -1533 +ppl inc 805 if m >= 3252 +p inc 310 if qlm != 4520 +m dec 743 if dea >= 5299 +ppl inc 847 if t <= 1546 +p dec 89 if u != 2352 +a inc 472 if z < -2455 +me dec 301 if utc > 914 +ppl inc 740 if q < 2434 +ufk inc -633 if l > 1138 +ppl inc -51 if hw > -1529 +u dec -714 if fr >= -56 +z dec 510 if me >= 0 +l inc 664 if mdk != -3073 +qlm dec -742 if l < 1142 +ny dec -473 if tn == 1225 +fr inc -805 if ufk > -2093 +xxh dec -151 if fr > -74 +hw inc -734 if hw <= -1528 +p dec 976 if uz >= -2990 +mdk inc 523 if m == 2509 +u dec -176 if utc < 923 +me inc 766 if hkt != 1987 +ppl dec -392 if mdk != -2557 +l inc -756 if u > 2527 +fr inc -990 if xxh > 955 +l inc 901 if ufk > -2100 +xxh dec -856 if ppl >= 137 +hkt dec -989 if t == 1561 +p dec 846 if p > 339 +hkt inc -429 if dea != 5302 +u dec 534 if hw <= -1517 +uz dec 178 if xxh > 1803 +z dec 655 if m <= 2516 +xxh inc -340 if ny < 2334 +u inc -545 if dea != 5295 +p inc -996 if uz > -3172 +dea dec -140 if hkt != 1984 +q inc -764 if a <= 4985 +z inc 263 if uz == -3167 +l dec -929 if a <= 4985 +p inc -214 if uz >= -3170 +uz inc 393 if hw >= -1533 +tn inc -624 if me == -5 +me inc -474 if ufk != -2106 +ppl dec 475 if l <= 2214 +qlm inc 417 if u != 1449 +p inc -490 if qlm > 5257 +a inc 526 if u <= 1452 +ny inc -347 if u <= 1454 +p dec 397 if uz < -2765 +t dec 548 if u <= 1448 +ufk dec 514 if ufk > -2102 +l dec 744 if uz != -2782 +fr dec 810 if ppl == -333 +ppl dec -338 if qlm > 5258 +qlm dec 272 if q > 1665 +m dec 521 if ufk >= -2614 +uz dec 558 if me < -477 +p inc -632 if m >= 1987 +dea inc -237 if fr != -1864 +mdk dec 3 if utc > 917 +l inc -406 if dea >= 5213 +dea inc -268 if z == -2849 +utc inc 675 if q > 1664 +me dec -905 if p < -3230 +ufk inc -799 if u != 1439 +xxh inc 718 if hkt != 1987 +tn inc 156 if qlm >= 4984 +p inc -680 if fr == -1866 +ppl inc 423 if hkt >= 1980 +p inc -759 if ufk != -3405 +me inc 496 if qlm <= 4995 +m dec 111 if mdk != -2545 +u dec 351 if z < -2843 +uz dec -405 if xxh != 1804 +ny dec -634 if utc == 1592 +qlm inc 294 if l == 1463 +xxh inc -994 if a <= 5511 +a inc 460 if uz == -2927 +t inc -313 if u != 1093 +l inc 254 if hkt > 1978 +dea dec -290 if ppl <= 429 +ny inc 190 if z <= -2844 +ppl inc -865 if dea == 5220 +z dec 372 if utc <= 1595 +l dec -563 if u < 1104 +z inc -283 if xxh < 821 +q inc 967 if utc == 1595 +q dec -621 if ppl > 433 +l dec -221 if tn > 757 +l dec -935 if a >= 5962 +l inc -62 if l != 3225 +hkt dec -654 if t > 1240 +dea inc 87 if p == -4673 +l dec -166 if u <= 1098 +dea dec 183 if hw != -1529 +q dec 70 if p == -4667 +a dec -673 if ny < 2188 +q dec 295 if mdk != -2563 +m dec -26 if a == 6644 +qlm inc 378 if xxh != 816 +a dec 174 if l <= 3320 +fr inc 117 if dea >= 5131 +hkt dec -732 if hkt >= 2634 +ufk inc -838 if mdk != -2547 +ny inc -964 if a >= 6461 +hw dec -264 if a == 6470 +z dec -834 if ufk >= -4251 +l inc -658 if m > 1897 +xxh inc 400 if fr >= -1753 +hw dec 380 if hw <= -1265 +t inc -608 if utc < 1597 +ppl dec 352 if a > 6467 +l dec -355 if utc > 1591 +l dec 846 if dea <= 5128 +ppl dec 756 if fr < -1746 +utc dec 259 if p == -4673 +tn dec 160 if hw < -1257 +t inc -625 if t != 640 +xxh dec 804 if dea > 5130 +ny dec 227 if z <= -2665 +ppl dec 306 if uz != -2922 +q dec -671 if hw < -1262 +tn dec 149 if ufk == -4248 +p dec -583 if mdk == -2553 +hw inc 312 if uz <= -2919 +hkt inc 111 if tn >= 456 +q dec -23 if uz > -2918 +hw inc -291 if l > 3008 +me inc -744 if utc > 1327 +uz dec 188 if utc >= 1336 +hw dec -575 if z < -2663 +ppl dec 977 if ny != 988 +l dec -84 if dea < 5135 +p inc 905 if uz == -3115 +m inc 636 if m == 1903 +hkt dec 95 if p < -3178 +u inc 249 if utc > 1331 +uz dec -196 if qlm == 5662 +hkt inc -621 if fr > -1750 +z inc -859 if l < 3093 +l inc -789 if ppl > -1957 +me inc 916 if tn >= 457 +uz dec -115 if xxh != 406 +z dec -353 if z <= -2669 +hw inc -965 if ppl != -1960 +t inc 333 if qlm == 5662 +t dec 860 if z == -2310 +p dec -841 if l > 3104 +qlm inc 225 if t == 341 +utc inc -937 if p <= -3185 +qlm inc -191 if xxh < 424 +m dec 607 if q != 2354 +uz inc 807 if p >= -3178 +fr dec -431 if uz == -2804 +ppl dec -312 if t <= 341 +a dec -764 if mdk >= -2557 +utc dec 505 if a >= 7228 +ufk dec -148 if tn != 449 +utc dec -371 if utc != -100 +dea dec -11 if utc < 272 +ufk inc 329 if utc != 261 +utc dec -484 if z <= -2312 +m dec 784 if ppl == -1651 +xxh dec 669 if m <= 1147 +xxh inc -798 if me == 178 +p dec -832 if ppl == -1651 +ufk inc 266 if fr > -1318 +a inc -993 if fr >= -1319 +xxh inc 25 if ppl != -1652 +u inc -353 if hw == -1631 +p inc -338 if q >= 2340 +p dec 517 if utc >= 741 +ppl dec -221 if dea > 5137 +hw dec 949 if mdk < -2544 +tn inc 201 if ufk != -3781 +mdk inc 855 if t > 334 +m dec 604 if q <= 2353 +me inc 268 if tn <= 644 +tn inc -372 if m > 540 +l dec 275 if qlm >= 5687 +mdk dec -13 if p == -3199 +z dec -725 if tn > 286 +dea inc -843 if dea == 5142 +hw inc -603 if a >= 6234 +ppl inc 850 if tn <= 279 +l inc -601 if uz == -2804 +m inc 10 if z >= -2319 +fr inc -412 if xxh != -351 +me dec 726 if tn >= 277 +ny dec -719 if me < -544 +hw dec 413 if q > 2349 +a dec -229 if hkt == 2651 +t inc 620 if t != 347 +uz inc -216 if t <= 963 +fr inc 614 if me != -549 +xxh inc 536 if z < -2309 +q inc 974 if me < -548 +q inc -131 if ny == 1711 +tn dec 110 if tn > 274 +l inc 47 if p == -3208 +xxh inc -872 if dea >= 4295 +tn inc -667 if tn <= 169 +q dec 562 if mdk >= -1700 +a inc -16 if xxh != -685 +hw dec 649 if xxh == -695 +ufk inc 239 if l != 2268 +t dec 935 if ppl <= -576 +m dec 1000 if fr > -1120 +hkt inc -167 if xxh == -695 +ny inc 926 if uz > -3027 +m inc -729 if xxh > -693 +m inc -677 if a > 6221 +p dec -412 if qlm >= 5691 +m dec -678 if ufk < -3526 +ppl inc 206 if z < -2308 +m inc -961 if m != -445 +t inc -989 if mdk > -1701 +ppl dec 43 if q <= 1654 +xxh inc -619 if ny == 2637 +ppl dec 168 if xxh < -1312 +t inc 191 if xxh > -1320 +me inc 387 if hw >= -3826 +p inc 517 if q <= 1648 +q dec 577 if ppl > -589 +u dec -841 if fr <= -1115 +dea dec -791 if p <= -2793 +hkt inc 216 if tn != -500 +uz dec -333 if hkt >= 2490 +dea inc 46 if a > 6217 +mdk inc -168 if fr > -1117 +t inc -606 if fr > -1122 +me inc 662 if hkt != 2491 +uz dec 384 if p > -2806 +uz inc -848 if xxh < -1308 +ny inc 617 if tn < -497 +fr dec -359 if utc != 750 +m dec -911 if ufk <= -3530 +ppl dec -190 if mdk != -1858 +u dec -400 if t > -1388 +me inc -381 if u == 2235 +hw inc -548 if m == 466 +qlm inc -940 if mdk <= -1860 +dea dec 180 if z <= -2316 +hw inc 17 if tn != -504 +fr dec -769 if me > -277 +ppl inc -630 if hkt == 2482 +hw inc 825 if xxh == -1314 +utc dec -38 if hw < -3529 +q dec 851 if uz <= -3918 +me dec -417 if me > -274 +q inc 505 if ny < 3248 +ny dec 299 if fr > 9 +utc dec 996 if z == -2317 +z inc 157 if ppl == -395 +mdk inc -11 if mdk == -1866 +t dec -222 if ny <= 2964 +q dec 1000 if u <= 2244 +tn dec -704 if ppl >= -399 +l inc 666 if utc > -212 +q inc 890 if dea >= 4951 +tn inc 255 if xxh > -1324 +me dec -317 if p == -2796 +utc dec 651 if m >= 460 +dea dec -945 if q > 110 +ny inc -755 if z > -2169 +a inc 1 if utc < -858 +uz dec 840 if utc >= -861 +l dec 131 if ufk != -3542 +hkt inc -442 if u > 2236 +mdk dec -156 if hw == -3531 +ufk dec 380 if uz != -4756 +xxh dec 198 if p == -2796 +fr inc -946 if z != -2165 +q dec -736 if dea < 5898 +qlm inc -284 if fr == -934 +z dec 895 if t < -1152 +me dec -370 if l != 2806 +a dec -949 if dea >= 5906 +l inc -913 if uz <= -4758 +uz inc 15 if t > -1158 +m inc 535 if xxh > -1516 +me inc -896 if u > 2228 +m inc -821 if fr == -934 +me dec 754 if m <= 189 +xxh inc 685 if p >= -2802 +utc inc 149 if uz == -4744 +ufk dec -486 if hw <= -3535 +tn dec 617 if u != 2228 +fr inc -971 if ny < 2191 +l dec 933 if z < -3053 +q dec 269 if qlm > 4467 +me inc 449 if l < 968 +utc inc -359 if l <= 965 +tn inc -465 if p <= -2798 +xxh dec -811 if t <= -1149 +fr dec -106 if m <= 182 +uz inc 603 if p < -2794 +uz inc 310 if z <= -3064 +ny inc -764 if hw >= -3538 +mdk dec -843 if ufk < -3416 +a inc 49 if tn != -158 +dea inc 129 if ufk >= -3433 +ny dec 515 if ny < 1438 +q inc -603 if ufk < -3419 +tn dec 470 if hkt < 2496 +m inc -669 if utc <= -1067 +dea inc 401 if ny >= 912 +p inc 129 if tn >= -631 +p dec -708 if hw != -3540 +dea inc 932 if mdk == -1024 +tn dec -244 if ufk == -3426 +ny dec 632 if utc >= -1075 +ny dec -958 if z > -3063 +me dec -67 if hkt == 2490 +fr inc 431 if mdk > -1038 +ny dec -435 if z < -3052 +ny inc 997 if ny != 1686 +dea inc 397 if hw < -3537 +hw dec 232 if xxh == -16 +q inc 826 if p > -1960 +q inc -807 if z < -3045 +uz dec -645 if a < 6227 +me inc -725 if qlm < 4477 +xxh dec -440 if z == -3055 +mdk inc 647 if m <= -489 +t dec -497 if dea != 6827 +hkt dec -874 if hkt == 2490 diff --git a/src/main/resources/2017/day9.txt b/src/main/resources/2017/day9.txt new file mode 100644 index 00000000..b226fcca --- /dev/null +++ b/src/main/resources/2017/day9.txt @@ -0,0 +1 @@ +{{{{{{{<""!>,<!<'}'ui!!!>!!!>!<{!!!!!>>},{}},{<<'"i!!a!{oe!>!!e!!!,<u!>},<a>,{<}{a",!',!!!>},<u,!!!>!}<,'!o<!>,<>}},{<!!!>'"i!!!>u!>uai!<o>,<i!!!>!>},<!>,<!>!>}o!>},<!>,<!>},<!>,<!!!>>}},{{{<!!,!!!>oo"!!a>}},{{{{<i!!!!{,!!}>}},{{{<a>},{{<a!{!!>}}}},{<!>!!i'!!!>"""!>>,{}}},{{},{{<!>'!>,e!>},<e!>},<,,{"{"!!!>'>}}},{{{{<"ao!>!!!><!>,<!!}{{!!euai>,{<{!>,<!>!>,<!"u}<!,>}},{<<!>,<!>,<<<}a!!!!a!>,<>,<!!uu!>!!!!!>!!"oe!!,o{!>},<}!>},<<!>!a!!!>>}}},{{{{<>}}},{{<!ei}"!>!!!>!!!>!!!>!>},<eu<!!<>,<"!>},<i!!!>!>},<!>,<'!!!>!!io>},{{{{<}!!!><!>},<u!!!},!!!>!>},<a,!!<'>},{<'!>,<!!>}},<<!!,au!!uu!!!>,<!!{o>},{<e}!!!>},<!!{'{eu!!,{!!aei!>,<<!!,a!!!>>}},{{<u!,>},<}{a!oei!aa,}"!!,e!>!!!>'!!}{>}}}}},{{{{<u!!!>!!i!!u!>>},<'!!!>!>},<!>,<!,>}},{<,!!!!!>,<'!a!!!>,<{!<>}}},{{{<,,'!>,<}i'!>,!>},<o<!>>},{{<!!!>!!>}}},{{<'!!>}},{{},<!>},<!>"o!>,<!!!>!!!>>}},{{<e!>},<<}{<'!>,<!!!!!>!>,<!!!<eo!!!>>,{}},{{{},<>},{{{<oi{,!!!>}!<e"<ueu!<!>>},<u!>,<!!<">},{<!!!>!>,<}!!o<<e!!oa!>,<!>,<e!!!>{>}}}}},{{{<!,!>},<u!!!>'>},{<!!"!o!!"!>o!!i>}},{{}},{{<>,<!!!!<!>},<!!!>a}i{!>ii!><>},{{<u!{!!!>!!!>},<u>,{{<}{u!,u}{>},<}!>},<ie!>,<<{u!!!<!>{">}},{}}}}},{{{{{},{}},{{<{e{!!!>i!>,<a!>uei"!!!>},<,!<}!"!!o>,{}}}},{{<>},{{<,o"i!!,!oe!>},<"}o!!!>,{i!,u>}}}},{{},{{{<<>,{}},{{{<!!a!'a}!!oeu}>}},{<!!!!!!i!>,<,'!!!>!!o>}}}},{<e<oa!!!>u!!!!!o{'!>ai>,{<e!!,!!!!!!,,i!>},<!a>}}},{{},{{<!>!>},<!!!}i<'<i<>,{<!>,<!!!>}u<i<{!>},<!!!!!>oue!>,<!!!>,<u'>,{<i!!!>},<!!ee,!>!>,<!>},<!,>}}}},{{{{<!"!!}!!!!{}!>,<!>,<!>,<!>,<!>,<!>},<'!>,<!>,<!>>},{{{{<a<!!au!>>},{<!!!>a,!!!<"'!!>}},{<ae}!>,<,'>,<!>i!}!>,<,!!'!!<!!}!,}>},{<'!!ee!!i!i>,{}}}},{}},{{{},{{{{<i!,>}}},{{<!!!>o<a{!!!>,!>eei>,{<}}!>},<<!!"!>},<a!!!>ie!>},<<!!o>}},{<!!!>!>,<!'!!!>!>},<!>},<{}ua}uuu}o>}}}},{{{<o{!!!>oe!>},<!!!>'!>,<u!!!!o!a!!!>i">,<a!>},<u"e"}!>},<{i">},{<}ui"!!!>"},!>,<!o">}},{{},{{<!!o,!>,<!>,<{io"!"e<,!!i!o}u"">},{<!>,<e!>,<'!!,'a{"!>,<"o"ui,>}}},{{<e},u}!>"!!!!,ia<!>}>,{{<!o"!>,<'o}!!!!">}}},{{{<!!!>!>!>},<>,<ao>}}},{{{},<!!!>,<!!!!!>!>},<!!!>"e!!u!'!!!>>},<!!!>},<,e!!{!}u!>>}},{{{{{},{<u<!>{<o!{<!>},<">}},{<"!>},<"!>},<!!!!!!{>,{<e!!,}!!!!>}},{{<i!!!>!!i<!!!>!!!>,<>},{{<!}!!!>e'ii<!!!!e<!!!>e"!!u!!!>>},{<a"!ii>}},{{{{}}}}}},{<<!,!!e!!!}{}!}!>},<>,<"e<!!!>},<!>i!!}{u!>},<!>,<!!!>},<"!!!>a!!!!>},{{{<e!!!>"iu!>},<!!{}{!}!!!!!>a!!,>},{<ai!>},<!>,<}}!>!!ee{!><!!!!!>!!!!,!!'!>>}},{{<ue!{e,u>},{<o}e!aai!!!>}!!i}>}}}},{{<}o!>"{!!!e!!">},{{<>},<!u!!!>!!!>},<!>},<!><>},{{},<e!!oo>}}}}},{{{<<!!!><}"uu!!i!>,!!!>,<!!i!>},<aa,!,e>,{<u>}},{<!!!!!>a<}>}},{<!<<uoe!io>,<!!!!i!>},<{ui!>},<'"u!!{>}},{{{{}},{<{!>!!!aa!ua{!>!!!>!!{{>}},{<i!""i!!!!!>''ueu}o}"!>,!!!>!!!>>,<'!!!>!>!!!>!>!i,i!i!,!oie>}}},{{<u{!!}",a!>},<oi!>!>!!!>,!!!"'!!>},{}}},{{<!!!>}}!!o>},{<{'a!!ia'o!!!>},<o!!!>},<"u>},{{{{<o}!>!!!!'{!!!!!>"!>,<>},{}}},{<!>u!"ooi!!!>!!>}}}},{{{{{{{<!>,<!>},<{!>},<!!!>},<}!>{i!>!!{!!!>!>>},{<!!!>},<!>},<!<!>},<<!u!!}iao{!!!>!!i,!>,<!}i>}},<,{!!'!!!>!!}ua>}},{{{<ou"e!!!!a!{{"!!<'!!"i>,<!!!>'u!!o!!!>},<!!!!a,o<u"}>},{<}i"uo{!>>}}}},{{{<!!!>"!!!>!!aioiii>}},{<!!!!!>!!!>!>,<e!>,<e}}"!!'i"u!>},<!u<au>,<!a!!!>a!!o!!}!o!!!{}!>!!!>a{oo!>e">},{<!>},<'!!!!!>"a'<!>!>,<o!>},<u!!"a!>"'<>,<!!a'>}},{{{},<>},{{{{{<!!!>!!a<u<e'!,"ai>},{}}},{<oio>,<!!!>,<<uo!!!!}!!!>>}},{{<!!{'!>>},<,<!><<!,>}},{{{<!>},<!!o{"!!i!>,,!>!!!>!!!e<e>},{<!!ei!!{"!>,<!!e}!",!!u,!>},<>}},{}}},{{<ia!>,<!!!>,<<o'{!!"}u!!{"<!!a>},{{<i>},{<{{'>}},{{},{<>}}}},{{<!!a!{,!>,<!>},<i!!!>,<>,{{<!!<'<}'>}}},{<}!{!>,<!>,<>,{<e{!e!>},<!!{!!!>>}},{{}}},{{<"e,!>!>{<!>!>,<a,"!!e}e>,{<<!><!!!>!auei!>},<!>>}},{<!!a"'{!"!>,<!><'e{!!<<>},{<e}!,{u{!>,<>}},{{{{{},{<!!!>,<!!!>!>,<!!!!{!!!!'{>,{{<!!i'!>},<ua!e{}}!!!>!>,<u!>>}}}}},{<!<!!!>},<i<!>},<!>,<!i{o!u''"i!>,<<!>!!!>,<>},{{<!>ea,a!>,<!><!}>},{{{<{!!{!>,<<!!!>!!!>'!!!>"{"!>!!"u'!e!>},<!!>},<}{,{>},<!>},<eio!>!!'!>,<"!o!>,<,!>,<!>i!>">},{<>,{<!>},<!>},<""!>},<!!!!!!!>!>!{!!u!!!>e!!!>"o>}}}},{{},{{<!!!>!a!!{!>},<o,!!a!!'!!!>>},<'!!i>}},{{{},{{{<e>}},{{<!!!>a,u!>},<!!o!>},<!<u}!>},<u!!!!!>!>},<'>}},{{<}!!}"!!a!!!>{iu!>!>>,<!!!!!!!>"!!,,}{}!"!!e"<i!!!!!>>}}},{{<'{o!!!!a!>{!>,<!!euou!>},<e!!!!!>,<>}}},{{},{{{<",!!i!!ea{"},>},{<!>},<!'<!!}>}}}},{{{{},{<<}!>}o!!!>!!!!!>!!a!a!>},<!>},<>}},{{{{<'>,<<u"!>,<}!'e!!!>,iao,<a">},{{<{!>},<!!>}},{{{},{}},{{{<ae!!<,{!>,<o!i<>}},{{<'!!!!!>},<'{!!!>>},{}}}}}},{<i!!!>a!!!>},<!>!>!!{i!e!u>,<io"u!>},<!>},<}a>},{{<,!>},<!!!>e<!!'!!!>},<i!!!!"!,''!!!>,!!oo>},<i!>},<'>}},{{{<!>},<!!!>!>!>,<'!!!>}}>},{<a}}!>},<e!!a!>,<!!!>!>,<>,<!!!>"!!!>!!!!!><!>},<a!!!>!>,<!>},<i""!>,<!"!!!>!"!'>}},{<!>},<!eui">,<!!}e!!!>u!{!!{!!!>},<i!>,<'o!!i!>},<!>,<>},{{<>},{{<oo'!!!i!>,<!>,<!,{{a>}}}}},{{{{{<>}},{{{{},{{<!i!>i{ua!!!>},<e!>!!{o>}}}},{<!<,!>!>},<"'!>u'!!u!!<<!!"!>}u}>},{{<!!!>}!>!!!>,<>},{},{{{{<!!!>!!!>!!!>!>a}}!>i!!!>!!uu>}},{}},{{},<>}}}},{<">,<"!>>}},{{{{},<!{!>,<!>,<!"u,!>},<>},{<!>},<a!!{{u!>},<a'!!!>i!!!>>}},{<e",!!',"aa"i{">,{<>}},{{<!!!>!>,<{!!!!!>,<>,{{<!>,<!!!>!!<!!!>,<i!>}a!!!"!!!!u{!!i>},<}!>},<}!!!!!>,<"!!!>,{",!>},<!>},<>}},{<<!!{!>,<>},{<a''}e>,{<!!!>,<!>!!"'!!!>'!!a}a''!>},<oe'>}}}},{{{<<!!!>},<!>,<"'!!!>!!!>,<'!}!!u'!!!!!><!!!>,<>,<!>,<<!>o}a>},{},{}},{{}},{{{<}">}},{{<,!>ea!!!>,{!>},!>,<{!>},<!!{}<o>},{}}}}},{},{{{{},{<"'<!>,<!!i!><a!>},<!!!,}u!>,<!o>,<>},{}},{{{<!!,!!i<'"e'"}'{ue{!!!!<!>>,{<{o<!>},<!>},<!>!{">}},{{<e!!!!!o!>i!!!>!!!>},<!!!>},<'o!!!>!>,<>},<}"a!!!!!>,<!>,<}'!>,<'"!>!>},<{<!">},{{<'!>,<ea!!a!>,<!a!!i{!>},<!>},<!!!!!!<}<>},{}}},{{{<auo'<u'io!''!!!>}!}a>,{}}},{{{{<">},<!e>},{}},{{<!!!><!>,<!!!>!!"<u}!!!!!!!>}e>,{<!!,"a>}},{<!!"aa!!,!>},<<e!>},<u!!}!>,<'a{!a>}}}},{{{<!>!o{{!!{!>,<e!<!!!!'o">,<a!"<!>eu!"i"!!'!!""!!!>},<">},{},{{<!<iu!>},<!"!>!!!><>},{<{!>!>,<!>},<o!>},<"!>,<a!!,!>oaiui!>,<>}}},{{<}!>{,!!!!!>!!!>,<u<eu!>},<,!!!>e!!!>,<!>,<>},{}}},{{{}}}},{}},{{},{{{<u'!>!!!>},<i!>'!!!>"!!<!!!>o!!!">}}}},{{{{{{<!!!i}!>},<{!!!a!!!!!!>},<",e!!!>!oe!!!>,!'o!!"!>},<>}}},{{{{{}},{{<!>,<i"a!!'!>,<!>o!>!!!>>},{<,i}{!>},<!>,<!>,<!!!><!>},<!!<a"!!!>!>,<>,{{},<ue"<o!!!!!>>}}}},{<"au!{e"!>>,<i!>},<{,i!>,<!>>}},{{<i!!!>!!!e>,<>},{<!!!!!>e{<!>,{a!!ee"!}!>,<,}e'>,<!!!>o}e!><!>!{,!>!>,<{!!!>!'}<>},{{}}},{{<!!!}io{!!ou!}eu>},{{{<oi{}!!!!!>ue!>,<a<!!e!>,<>},{{{<"!!>}}}},{}},{<i!!!>"'{ieau,{u}!!">,{<>,{}}}},{{<'!,!!!>},<}!>},<!!'!!i!i!!!!}a!!!>!>,<!!!>!!!>!>},<>},{{<!<<!!!"'','!!a<'!!!>,<"aa>},<ea}!>},<!>},<a",<i'<<!>},<">},{{<{!!!>,<!!!>,!!u!>!!a!!oai!>,<!>,<!>e}>},{<ue!>},<o",!!!>!>},<}!>,<"!!!!i!!!>!}ae{>}}}},{{{{<"o}}{!!!>,<'!!>,<!!a{!!!>>}},{<e,!!!>'u!>},<!!!!!!!!!>"!>,<>,{<!!!><!e'{e,o{""!!!>{!>{!!>}},{{{{<i!<!>!!!!!>'e!!a,}ea,i!>>},{<{!!u!ao!!!,!!{!>!!!!!!!><"}!>,<u!!!!!>,oi>}}},<i,}!!!>>}},{},{{<!!!>},<<!!ai!>},<!i!!!>,}>}},{{{{<>},{<!>},<,o!!<!!ai!!'!>},<u!>},<i<!a>}},{{<,!>}<,<!!!>"!!!!<!!!>i!!!>>},{}},{}}}}},{{<o!!!a!!!>,<>,{<!>{!!!!!><{!!u!!!!!>o!!e!'i>}}},{{{{},{<!!!>!,i!!!!!!!>!",>}},{{{<aou>}},<a!!}!!o}>},{<!>,<!!!>!!!!!>'!><u<!>,<o,!'{!!'ui!>,<>,{<{!!!>,<>}}},{{{},<!>,<!>},<!>},<ae,!!!>,<!!a!!">},{{<<}!!!!!!}!>},<<!!"'>}},{{},<!!!>},<!!oao!>,<!!a!!!>!>},<{,"o{i!!!><>}},{{{{<au!>},<a}{>,{<""!<'u'!!i>}},<!>{>}},{{{<!>o!>!!!!a!!e<!<!>!>,<!!"!>,<>},{<"!u>}}}},{{<"'!,!<!!!>!u!>,<!>,<o"!!!!ie>}}},{{{{<a,e}<!!!>},<>},{<,!ou!!!>>,{}}}},{<!!>,{{<!!u>},{{<{!>},<!>}!<ue!!!>,<e!!}>},{<<!>,<>,{}}}}}}},{}}},{{{<!!oi!!eauo>,<u<!!!>o>},{},{{<'o>,{<}!!ua'"o<e!!,>}},{{{<!!!>{}{'!!'<!!!>i{"!>e}!>a<!!!>>}}},{{},<"{!!u!!}!!<!!!>,<<!!!!!>!!!>!>!!,u,"u{>}}},{{{<,",'!!!<o,">},{}},{{{<!!!>!!!>,<<io!!!!,i"'!>,<i,!>,<{>},{}},{<!!ueu!!!>'!!>}},{{}}},{}},{{{<!>,<"{"}"oaa!!!>o",!>},<a!{'!>!!!>,<>,<!!!>!!e!!ao,>},{{{<,!!!,u<!>},<!>},<uoo<ee!!!>"o>}}},{{{<u!!!oi!!'!!!><e"e!>,<!!,,">},{}},{}}},{{},{{<a"!!'!'!!!>eo!a!>},<"!<<!>},<!u!>!>},<u!!!>>}},{{{<a!!!>!>},<!!!!!>,<>}}}},{{<{i"}!i'!!}a!!i!!{,}}'!!!'!!>,<!a>},{{{<o>}},{}}},{}}}},{{{<a!>},<<"}u!!'!>!>},<!!<>},{{},<!>},<"a!u!"">}},{}}}}},{{{<<i!!<<}a{a!>,}!!!>a!>}'>},{{{{{<}!!!>'{!!!>!!!>!>!>},<!>},<i>}},<!!a>},{{},{<>}}},{{{<u!!!o!>,<!>{>},{{},{{{{}},<",o!>!!,!>,<e"!!a,!'}!!!>a,!!!!!>>},{<,i"}>,{}}}},{{<!!!>>}}},{{<!!!>e!>ee<,!>">},{}}},{{{<!>},<!>"!!!>{u,!!!>},<<!,e>},{<!>,<!!!>{!!>}},{<<,eu,a{>,<!>!>,<"a{!!!>a!eiao{!>},<!!!!!>!!u!e!!<>},{{},<!!!>},<!!!>},<}'!!"a,e"!>!{!!!!}>}}},{{<!!ou'uuu!!!!u>},{{},{{{<!!!!!!!!!>,<"a,>}},{}}}}},{{{{{{{<<'!!!><!!!>'!>!!!>!!"!!oe}<">},{<u!!!>>}}},{{},{{{<"!>}!!,!>,<!!!>,<!!!>u"u}>}},{<!oe}!!<{!!aue>}},{<!>,<"!!!><<!<u!>,<{!e<!>,<!!!a{oa!>>,<u<!u,o,>}},{<!!!>},<!!!>i!>!!!>!!e!!ua!!"!''!!!>!,>,{<!!i{ao,{!!"a!<,{!>},<!>,}}"!!!>},<>}}},{},{{{}},<!>,<eu!>},<,!!!>!>,<'!!<!!!>},<!>,}!>},<,">}},{},{{{},{<!!!>!>>,{}}}},{{{{<!<!!}a!>},<"!>},<"e!>,<a!>,<!>,<<!>ao}>},<,e!}<!!!!a>},{},{}},{{{},<>},{<!!!{!>,<"<!>},<!!!>ea!><o,o{o,>,<!!"!!!!!>!!'!>,<"{"!!oua!>!>},<,!!!>a>}},{{{<"!!!!!!a">},<!!!!!>,<eoa!!!>>}}}},{{<<i!>"oua,{>,{<"'!>},<!>},<!>!>},<,i!,}i<>}},{{{<}!>,<o}>},<}}a!>},<!>!!!!'!e!!!>,<!>i'i>}}},{{{{<!>},<!!!ao'<ia,!!{<uu!i!>},<i{a>},{}},{{{<'!>},<o!!!><!!uo!!}!>},<u!>,<{!!!!!>aa>}}},{}},{<!>,<}eauo!>">,{<!!a<!>i<}!>"!>,<ea>,<oeii>}}}},{{{{{<"!>},<"!>},<u!>},<o!!,u!>a>},{{}},{{<!>,<!>!!!!!"!>'ii!!!!,>},<!uou}!!!>!!ea!!!>!>},<!!!!!>!!iu!!!!!>},<'!i>}}},{{{{<{!>,<'>}},{{{<i{,,!!!>},<!!!><'<,!>,<a<'u!!!!}!!">}},{{{<!<o"'!!!>},<,!>},<<>},{}},{{<""<!>,<{,!!""'e>},{{{<!>,<>,{<!!!><!!!!!>{!!!>},<>}},{}},{{}}},{{{<!!!>e!>,<!>},<}i'>}},{<iu>,{}},{}}},{{{}},<!!{"!!'!>},<!!!>},<>}},{{<a!!!>a!!!!!>!!!>!>,<<"!>,<!}u!!!>!i"o!>">},<>}}}},{{{<o'i!>ieio!>,<e>},{}}}},{{{<<ie!>,<>,<"!>,<,!>,<<'<!>,<ae!!!>,<'">},{<!!!>'a!!!>ae<!!!>!!ue,{!>!!!!!>!u>,<>},{{},{<!!"!!}!>,<<!ae!u!!<!!u!!!>o,!>>}}},{{{<e!>,<!>},<o!!!>},<ii!!!>!"!!!>>},{<a!!!!!>aa!!!!!>,<!!<'}"!>e<'>,{<!!!>,!!{i}{"!!auu,>}}},{<!>,<"o!>!><o,!!"}uo<>}}},{{<"!!!}a>,{<!!!{u!!<u!,!>!},!!!>a!!''!!!!!>{}!ao">}}},{{{{{},{{<!>,<a!>"{'"u}!{"!>,<i!>},<!>>},<!>,<!!!>'o!>'!!!>!!a<ui>},{{<{!!!!!>o!!!>,<!>},<a!i<}!>},<!!>}}}}},{},{{},{<<a"i!>},<!!!!{!!!{!>},<,!!!>o>}}}},{{{{<!>,<"!>,<{e<,!>!>,<e,!,,"!!i<<!i>,<>},{{<',}},!!'!>,<"!>},<{!i<!e{>},{<!!!>u!<}"!!!>!>!>,<!!i!>},<!!!>{'>,{<e!!eau!>},<,>}}},{{{<!!<'!!!>},<a}!!!>,<>}}}},{{<!o!!!><{i!!!>e}>,{{<<,!>,<!!!u,!>},<!i!!!i!!!>,<e!>},<i{,>}}},{<!>!>},<<u'!!!>!!}"!>},<e!>},<,!"!!!>a<!{!!!>>}}},{<}{o!e{!!!>a'!!!>e!!!!!!u!>,<!!!>},<>},{<ueo!!!!!>i!>,>,{<!!,!!ae!>,<"!!!>i!>,<'!!!!o<>}}}},{{{<>}},{{{{<u!}!>,<!!!>{!>!>},<!!!>>}},<!!!<!!!>!>!>,<i,!>,<a!!!!!>aoau}!>},<}o>},{{{<>}},{<!>},<!a,ou!!,>,<!o,}>}},{{<ou,,!e}>,{<{!!!>}}a{'u<>}}}},{{{{<!>,<!i"!!!>!!u,i!>},<!!,!>!!,!!!>,<!>>},{{},<}!!}!<!ia!!"<!>},<a!!!>!!e'>}}},{{<u!u!>},<<!>},<!!""!>!!!!i{>},{{<ia!>,<{!>!!!!!>o!!ii!!uoi!!!><ui>}}}}}},{{{{{<!>,<}>},{}}},{{{{<!>},<!>},<!aau{!u!>}!>i!!!>"ai>,{}},{{<{"!!i{'<!!!>,<>},{{{<!>!!!a'!>,<!!!>{'!!<i"eio,e,o>}},{{<!!!>,<!ae!>},<>},<!!!>!!!!e!'!!a!>,<!!!>a!>!,u!!!>i<>}},{{<!!!>'>}}},{{<!>},<''!>,<{e!>e}!}!!!>!!'!>},<!iui>}}},{{}},{{{{{<u!>},<!!a!!!u,!!!>,"!>,<!!!!"'!!u{u{>,{<!>,<!>!!!>"i,"!>},<iu!!!!e'>}},<!!u{!>},<i!!o!!"u!>,<!>,<i,<ea>},{<!!e,!!!>}!>,<}!>!ae!!uu!!!>,<>}},{<!>},<}!!!>iuaa!oa}}!!ia!>i">}},{{{<!!!>e{,o!!}!!iu'>,{{<!!!>ui!!!uau<e!>!!!>>},{}}}},{{<!!{!oa'!!}<!!e>}}}}},{{{{{{<i!!!>}!!!>!!{!>},<!!}}!>,<>}}},{<>,<!{!>},<!!}"!a>},{}},{{{<{ie!>!!,!>,<{!!'!>},<!>,<!!!>,!!!>>},{<!>!!>}},{<'<!>u<!!!!<u!!!>o<!!!>!>},<!!"oo>},{}},{{{}},{{{<u>}},{{<!!!>},<!{>}},{{<!>,!!!>!!<'!!u,>},{<o!>},<}e>}}}},{{{},<{!!!!!!!'{<i>},{<>,{{{<{'i!!">}}}}}},{{{<!'<<,!!iuu{!!!!!>!!!>!!!!i!>},<e{}>}},{{{{<aa!!!>,!!!>,<>,{{<>}}},{{{}},{<!!!!!>a!!}>,{<u!<{!!'!!<i"{!!!>},<!!"u",>}},{<!>},<!>,<'">,<{'i!>},<}!<ao!!!>!>},<!u!e,o,}'e!>,<>}}},{{{<ia<'{!>},<,'!!o!!!>,<!!!>!}o!!iei!>},<!!!>>}},{<!!u,!!!!!>!>},<!!!!!"ae'!!!!"!>>}}},{<u!!,!!!>,<!!!!!>!!!!e!!!>!!a>,{}}}}},{{{{{<>,{{<<}}!',}!>!>,<oa<!>,<o}e!!!>ia!!u>,{}},{<e!!,'!!!>a'>}}},{{{},{{<!!<iu{!!!>iu!!!!!>!!ae>}}}},{{<'"i!>,<e!>!!{o!<>,{<,!>!>},<!!i,!>,<{"e}u!>,<{<i>}}}}},{{{<}}!>},<'a!>},<!>},<"i<{e<i!!o!>},<,>,{<<ao'<!>},<a!u<o!!"'o<,{>}},<e'!!'>}},{{{<!{!>},<<!u!>!>},<!>},<ei!>},<o"!>},<!!!>a!!ii">,{<,!>,<,,}!>,<a!>i}a,"o{!!!!>}}},{}}},{{{<<u!>},<!>''!!o{!!!o!>,i!>},<,>}}}},{{{{{{<}!!!>,<a<!>,<!!e!>},<!!!!!!ao>,<!!<!>,<,!}!u,a!!!>},<eo>},{{{<!!!>,<!!!>!!!>},<,!!!>},<i>}},<{!!!>!ao!a""o!>!!!!a}!!o<!>},<'!!!>>}},<i<}o'!>,<ae,!!!>,<,iu!!i<>},{{{<!!{a!!<u,!>},<'!>},<!>!oi'!>},<!>,<}a'!>,<>}}}},{{{{{{<!>!>!>,<"!>,<oau!>u,{!!!>a>}},{<!>},<!!!!}"!!!>a!>,<!!a>}},{}},{<!!!u{!>,<!o!aa<i{"!{!!<<>,<!>,<!!!>a'>},{{<"o!>},<!>},<<{u!>},<{"!>,<a!{>},{},{{<!>},<<!>!>!>,<!>,<<u!>},<o,}>},<",i!!!!!!!!<>}}},{{},{}},{{{<ia!>,<{!},}!uu,'}'{!>,<!>},<!>'!>,<>},<>}}},{{<}!>,<!!uu<{!!!>,<"!>!!!!i!>o'!>,<,>,<!!>},{{<}{!>,<<e'!>},<a<!!!>}<u!!!>,u}>},{}},{<!>,<<"!!!{a!>,<!>,<!!!}!!!!!>},<u!>},<{e,>,{<!o<o{!!!>,<o}!!{>,<!>},<"!!a!>>}}},{{{{<!>!!!!!!!>!,{}a!!"'!!o!>!!!o!!!>!''>,{}},{{}},{{}}},{{{{<!>},<>},{<i<!!!>!>,<!{e>}}},{{<!>},<{u'{a,!!!!!!a<a!>,<au!>,<e>},<'!!!>,<o,!!"eo!!!!!>!>!e!>,<ua!!{u>}}},{{{<<>},<iao',a<"e!>,<">},<!>},<!!,a!>a!!!!!>a!!!>!!!>u>},{{},{{}},{{<oo"!!!>!>},<>},<,,,!!!ie'u!i!>o!}!>},<i!>},<ao{!!!>>}}}},{{{<'{'i}aeoo{!>,<aie>,<a'!!}!>!!!>,!u!!!>>}},{{{{<!>!<}>}},{<!ui!o!>,<o!!'!>,<a>},{<!>,<{!e{'>}},{{{<<!>,<!!u!!!!!>!i>},{<">,{{}}}},<!!!>,<e!>!ua!!"!ue',!}au!>>},{<!"'i'!i!>!!'<a!>},<a!>,<a!>,<{>}}},{{{<a!>,<"'<>},{<,'>}},{{<i'",!>},<!>}>}},{<"}}o{!!{!},!<}u!!>,<!>!>},<i!!!!!>,<'i!!!>},<!!!>e,!!o!>},<'o!!!>i!!>}},{{<!!io!!!>!!}!>,<a>,<!>},<!>,<!!!>,<a!!!>"}<!!!,a!!"!!o!,>},{{},{<!>,<!!!!!>"eo'!!eu!>,<!!"!!'!!!!!"!>,!!!>{}o>}}}},{{{{<iu!!!>,<}!!"!>},<"!>},<!!<>}},{{{<a!!!!o}}}!!!!!>!!!>,"o!>,<>}}},{{<!a!!!!!!!>},<>,{<e!!!>a!>},<!>o<!!!!,oiu"}'>,{<!!!>,i!!"i>}}}}},{{{{<u}!>},<i"{}!>},<e"!!!>,<e,!!!!}u>},<<a!!!}!!i!>},<}"!!a}{u>},{<!!}'ei!!!>!u!>,<!"!!!>!>},<"!!!>>,<,o"!>},<!>},<!!>},{<o<!>},<!>},<<!!,>}},{{{<"!>},<}{,a!!!>>},{{{}},{<u!>},<oi!>{o!>,<i!>},<!>{<!>,<}!>},<i,a>}}},{{<}"o,"!!}!!{!>},<}!>u>},<e{e>},{<ue'}!!a!!}'!>},<{>,{<e!>},<"u!eui{,!>},<{{'o>}}}}}},{{{{},{{{<!>},<!!}>},<!>!>,<u!!o!>,<!>!!!>!!!>!!!>!>}',e{!'!!!>o>}}},{{{{<!!i<'"!>},<}!!u!!!>!!!>!>,<{>},<e!eea"!!!>!!e}>},<>},{{{<{!!!>,<e!!!>!>,!>'i!!!>!!{'!!!><ia!!!>u>}},{<!>!!!>},<,!!!>!!!>}o"!>>}}}},{{{<i}!>,<!,!>,<!>!>!>},<>}},{{<e{!>},<o!!!>!>},<"}!>!>,<!!!>!!!>a<u>,{<,!>{,<e<i<eo"!>,<,}o',!>,<>}},{{}}}},{{{<'<!>"!'!!!!o!"!!{!>,<,!"u{<,!">},{}},{{},<aa!>}!!'!!!>!eaae{!!!>},<!>oo>},{<!aoa!!>,<!>},<,!!!!!>!i,!>},<a>}}},{{{{{<a}!!!>,<!!!><a!!i!e<u"!a}"i!>,<!e>}},<!!e!!!>,!>},<!>!!>},{<!o!>},<<!!!!{!!!!e!!o!i!!!>!}!!!{>,{{<}i!!!>!!"!>},<!>},<eo{u"{!!!>!!i<{>,{<e!!}<}!>},<a!!!>,<!aea!!{<!!!!",!>,<>}},{<{!>>}}},{{<!!}!>,<{}'e!<>},{<<i!>!!!>>}}}},{{{},{{<!>!!a"<u!!e!a!!a{!>},<!!!>!>,<>},{{},{{{},<e{!!"!>},<!">}}},{{{<!>!,!>,<i'!!e'o,!}!ie}>,{{{<!!ei!!{>},{<!>,<'!>},<!>,<"<}<i!>,<i>}},{<!>eu{i'!!oou!>,<<!>,!!!!!>}o}!>,<>}}},{{{<>},{<i!!aao!><!>},<>}},{{<!!!>!!'<!!!!>,<e!!!>'>},{<!>!>},<a!!"i!o!!!a!!!>!!,"">}}},{{{{<i'<{'>},{<!!!>,<!>},<{e,,!>},<!!a{!!!!!!!!!!,>}},{<a<!,!>},<'!>},<!!}'!!"!"eo!!!>,<!>,<!'>,<eei!>},<<ue'!>>}},{}}},{{<!!!>ei{!!!>"}i<>},{<!"!!u!!!>,!!!!"!>,<!!e,,"<iu!>!!}!e!!{>},{{<ae}!!iiaaoou!!i{}!!}!'>,<"!!!>{a>},{{<!!o!!!>u"!!"{!>},<<!>,<!>},<o!!!>o}!>},<!{!!!!'!>>}}}},{{{<},!>,<!!!!!><!!!!!><!!!>!!!>>},{{{<!>,<>}}}},{<e"!!!>>}}}},{{{{{<!>,<!>,<>},<!!!!!>e!>},<a!>},<u!>},<>}},{{},{<!},"!}!!{o{'!!'ie>}},{{<!>!o{e!>},<!!!!e!!}i!a{>},{<">}}},{{},{<!e"a!!!>{!!!!{a}'!>,<!!!>{!>,<!!!>>,<o{a!!!"<!o<!>!!!!o!>}!>!!"o!!{"!o!!!>>},{{{<!!!>'!>,<<!>!!!>e,<{!>!!,>}}}},{{{{<>},{<,!>},<!>'"e>}},{}},{{{<>},<a{,i,!>,<!>,<!!!>,<!<!!!>!>},<!!!!!!!"!!!>},<>},{{<>},{<!!!>u!a"!>eae!!oi<!>i<o!,!!!!!>>}}},{{},{{<e<ua!!''!>,<!>},<,u!!!!,ue>},<{!>,<>}}}},{{{}},{{},{{<}"}!!!!,!!!>!!!!!>!>i<>},{}},{<!>},<a!!',{,oi!>},<",!!!>u!!!>!>>}},{{{<ou"!!!>e!!"!!!>'>,{<!>!>,<!!{,!>},<!e>}},{{<!!i!!e!>!>},<!!!>!>uu",!!e!!!>a}i!!'>},<!!e'!>!>,e!!"i!!!>}i!ui"uo!!>},{<a!!!>}e>,{{},{{{<<i!>},<ea!!!>,<!!",i!!}!>,<'}!>,<<!a!>},<!!!>!>>}}}}}},{{<!i'!!!a!!!>!>!>e>},{<!>,<!>a'<o,u!!!>!>},<o'<!{o,i>}}},{{{}},{{}}}}},{{{<!>,<}"}a{!!!>!!!>!!!!a{!>eiu>},<,!!!>u>}},{},{{{}},{{},<!>},<'i!u'!!!>e!!oe!>},<!!!>}!ii!>!!e!>,<">},{{<!!!>!>,<!!!>!!!>!!!>!!oe!>},<!!>},<!}!!e>}}}},{{{{{{<i!>!>!!!>eai<!>},<!!{,!>,<!!"!!'{!}!>i>}},{{{<!!!>!!!!!>,<"'!!}!!!}!>eu!!!!!>},<!!i!>,<,>}}},{}},{<}a!>},<!!{!>,<eo!!{!!!>!!!!!<>,{<!>},<!u!!!>u{}io,{'iu!>,<!!!>>}},{{}}},{{{{<!>!!'!!!>},<"!!!!<}i{!>,<<!!'"!!u>},{{},{{<u>}}},{}},{},{}},{{{{<o!>,<!>,<{!!,{i!>}}!"o!!>}},{}},{{{}},<"o>}},{{{{{{<">}}},{<!!!!!>,<"!e!<{{!>,<'ou>,{<>}}},{{<i!!!!a!'!>!!u!'o"!!<!!<u!!!>},<!>},<}>},<!>},<{!>,<}!!!>!!'!!!!{!>,<!>,<>}},{{{{{<!>,<<'!>!!a>}},<!>},<"!!!!!>>},<ei,<<!>>},{{<"!>!>},<ee!>,<>},{<,!>},<!!!>!>i!!}a}{}!>",!}eu>,{<e}!>,<a!>},<eo>}}}},{{<}o!!!>!>,>},{}}},{{},{},{}}},{{{{<!!!>!!!!!>uo,!>},<<i!>"!!!>!o!>,<!!i!{>}},{{},<ae!!!>,<!>e,!!!>,<!>},<a>}},{{<<{"!>},<i}u<!>,<!!!><'"!>},<">,{{<o!!!!!><}i!',!>},<!>},<e"!!!>}>,<!{{o!!!!oe>}}},{{{{<!!!>"e!>},<oo!>,<!!}!!!><>},<>}},{<"<"u,!!!>e!!}!i<a}!!!>!>a>,<'"'a!{!>,<'!>},<>},{{<}}ia!!!>!>},<,!>"!>a!>>},{<!!!!a!!"<!!!>},<>}}},{{<u!>!!!>!oo,!!!><!>,<eu>},{{},<}!>'!},i'>}}},{{{{<!>e!!<'i!>,<"!!"e>,<<{!!!>!>!!!'!!}!'eai!uu!>>}},{{{},{<!!e<!>},<e<!!euo'!>'!o!><oe!!!>>,{<!ai!!ia!>}<!>,<}>}},{{<>,{}},{{{},{}},{{<{"<i"<!e'!"!>},<!!a{!!'>}}},{<!>,<!>,<!!!>!!!>e>,{{}}}}},{{<e<,"<}i!!!ii"!!!!>}},{{{{{{{{<!!!!!!i!!!!!>},<!,{!!>}},{<!!,!>},<<a!!!>i,o}a!>,<o>}},{}},{{}}}},{<{"!>,<!>},<>,<!>},<!!!>!>!!'o!>i!iua""!!!>},<u,e>},{<i!!o!!!!!>!!"!>},<!!!>!!!>!>,>}},{}}},{<"'{<,i<<'"!>},<'!>},<!!!>>,{<}!a!!{>}}},{{{<aa!!!>!>},<a!!!>o}!>},<e!>!>,<<iae!>},<>}},<,>},{{{<!>},<}}a",!eo!>},<e!>},<<uii>}}}},{{{{{{}},{{}},{{{{{<!!'",o!!iia,ae!!i!!i>}},<!>,<u>}},{}}},{{<u<'>,{<"!!"!>},<!!!>u!!!>!>!>!>},<ao"e'>}},{{}}}},{{{<!!<!!!>!{!}!>e>},<!>>},{{{<!>,<!<!>},<a,u!!!>i<{>}},{<o'a{i'e<!!!>!!!><!!!!}"!!!>a<<!!!>!!!>>,{<>}},{<!>,<e!}!!!!<}ii}u>,{<>}}},{{{{{}},{<!>}!>,<u!>{!!o!>,<{oe"!>>}},<!!!!!>!!ue!>},<'u!!!>a'>},{<{!!<>,<}a!!!>!>ooa>}}},{{{{{{}},{}}}},{{{<<!>,<!>},<!>,<<e>},{<!!"!!!!a>,{<}!>,<!>},<!!>}}},<{!!!>},<!<!>!!u!>},<!!!!a!!!>!!!><>},{{<>},{{{<,,!!!>!{{>}}}}}},{{<!>!!!>uu{!!{>,<a!><!{<oaa!>},<ie!!!>!!{,!!!>,<">},{<u!!!>u!!!>}!>a!!!><!!,<!!!>!!!>u,>,{<a>}}}}},{{<"!!!>,<'!!!>!ao>},{<!!{>,<"{!>},<<o,}oi!!a!!!>!!!>>},{{{}},{<a>,{}}}}},{{{<!>,<'!>},<,!>,<ei!>!!!!!!!a!!!>>,{{},{<!!!>!!!>o>}}},{{},{}},{{{<ea{}ae!>!>ee<"!!!>,<>}},{<!!,u{u!!e'i!!!>!>,<i!!i""u!>>}}},{{<,a!!!>!!}{e!>}o!>>,{<},"!a!>!>}}!!!>,!!!>"o!>},<'i{>}},{{<o!u!!,!!!>!!'<}!!,<!'!>,<u"e!!!>},<>},{<>}}},{{{{{<!>,<!>,<'!!!'"!}<!!!>>},{<<,{ei>}}},{{{{<!>},<,<"i!!e!!'i!>},<"!!!>!!!>!!!>,<>},<!!<>},{<u!>}!>,<,!>,<i!!!>!!i!!!>{!>,<>}},{{},{<!>,<u!!!><'u!!'!}!e!"!>{a!o!>},<,!>!>,<!>,<>,<o'!!!>!i"!!<<!>},<a!!!>}>}}},{{<{!!!>>}}},{{<{!>},<!!!>'!!!>,<!!i"o!>>}}},{{{<a!!aii!>,<uo!>,<,>},{<!>},<!>,<e<i>},{{{<!<ee!>!>!!!!!>},<>},<!>},<<"<!a>}}},{{{<'!!!>!!!!!!<!}!>!>},<!>au!i!>u!!!>"<!!u>},{<!>,<a!>},<"!!!"}!!u,<{<'au!!{!>,<>}},{{<{!>},<'iioa!>o'''!!!>u!!!>},<>},{{<i!>},<!>,<u!>>},<!"!>,<<{!ue!!!>i!>!>},<!>>},{<ae!>,<">,{<oau>}}},{{<i!>},<!!>,{<i!!!!!><u!>!>},<o>,{<o{!>>}}},{{{}},<!,!e<"!!!!a!!'!!!i!>,<!>},<oa!>,<!!,e!>i>},{{<e!!!>!>},<o!>,<<!>,<ua,e!!!!a{>},<>}}},{{{<{a!>,<!>,<!>},<"{{'>},{<{>,{<!!!>o<"i!>},<!!o!!!!!>!!!>e!!!><!!o"!!i!>,<!!!>>}},{{<>}}},{{{<!!!!!>>}},<!>"iu'!!a!>},<,!!i!>a<!>e!>},<!>>}},{{<{<!>">},{<!!<}!!!!<u}{>,{<!!<!!!>,!>},<!>!!!>!>},<!!!!<e!!<<!!!'!!au>,{{{}},{<!!e{!>},<{!<i>}}}},{{<}u{}oo''{'<!>},<>,{{{<u'!,!!e{!!!!<!!u>},{{<u!!}!!!!!>!}a!!!!!>>},<!'!!,!>!!!!!>uo!o}!!!>,o>}}}},{{{<e'e'{!>},<!o!!<a<>},{<!>!!<aai!>,<!!!>{e!!>}},{<>,{}},{<i!>u{a'!>,<!>!auu"!>,<o!a,>}},{<'ae{!!!>!>{!>,<>}}}}}},{},{{{{<e!!i!!!a",!>,<<o,!>o!>},<!>},<>},{<!"a!>},<uae!!ei!>!>!!!>>}},{<{iu!>},<!>a">,<{'"o!!!>},<!>},<!!!!!>!<!}!>},<{,"a!!!!"!>},<>},{{<ue!>,<"o!>!>,<!>},<>},{<"!!e"!!!>!>,<u>,{<'!>,!!'!!aia}!>},<!!!>},<<!!!!u!!!>!><e<>}}}},{{{<!>,<,>,{{<<u>}}}},{{{<{u<io!>,<'<u!{"e<}{!>,<"!>>}},{{<!!!>>}}},{<,"{u'!>!>,<!">,{{{<!>,<ea!!!>a!!!!!a!"!},!>o!>,<",!!!,u!!!>},<>}},{<!>,<!>},<}"!>,<!!''<,{!!<ii!!i!>o>}}}},{{{{<ouoi<!>},<!ui!!e!>},<!!!!a>},<!>},<a!!e!>,<!!!>'!>o!>!"{ae{a!!a<i!>>},<i{>},{<i,>,<a!<'i<i'!a"a!i{<!>!>},<!>,<"!>a>}},{{<,{}i!}'!{!>>},{}}},{{{{<i>},{<!o!!!!!>,<a!!!>>,<!>,<e'{o!!!>,<>}},{{<>},{<>,{<!!}<"!!!!!!"!!!>!!!>e!!!>!>a!o!,ue,{!ua>}}},{{{<>},{<!>,<,}"!!ao"!>,<<!!!!!!!!!>,<!>>}},{<}!!!>!!uo}!!!!!!!>,<!!!>!o,u!>,<!!!>a!!,!>>,{<e>}},{{<{!!!>,<!>},<","i!!>,{{<{i'!!{""i!!!>,<!uau,!!!}"e!>>},{{<o>}}}},{},{<!>,<a!>,<{i!!!!!>}a,!!u!>},<!!!>"!>},<!{>,{}}}}}}}} diff --git a/src/main/resources/2018-examples/day10-1.txt b/src/main/resources/2018-examples/day10-1.txt new file mode 100644 index 00000000..7be78e79 --- /dev/null +++ b/src/main/resources/2018-examples/day10-1.txt @@ -0,0 +1,31 @@ +position=< 9, 1> velocity=< 0, 2> +position=< 7, 0> velocity=<-1, 0> +position=< 3, -2> velocity=<-1, 1> +position=< 6, 10> velocity=<-2, -1> +position=< 2, -4> velocity=< 2, 2> +position=<-6, 10> velocity=< 2, -2> +position=< 1, 8> velocity=< 1, -1> +position=< 1, 7> velocity=< 1, 0> +position=<-3, 11> velocity=< 1, -2> +position=< 7, 6> velocity=<-1, -1> +position=<-2, 3> velocity=< 1, 0> +position=<-4, 3> velocity=< 2, 0> +position=<10, -3> velocity=<-1, 1> +position=< 5, 11> velocity=< 1, -2> +position=< 4, 7> velocity=< 0, -1> +position=< 8, -2> velocity=< 0, 1> +position=<15, 0> velocity=<-2, 0> +position=< 1, 6> velocity=< 1, 0> +position=< 8, 9> velocity=< 0, -1> +position=< 3, 3> velocity=<-1, 1> +position=< 0, 5> velocity=< 0, -1> +position=<-2, 2> velocity=< 2, 0> +position=< 5, -2> velocity=< 1, 2> +position=< 1, 4> velocity=< 2, 1> +position=<-2, 7> velocity=< 2, -2> +position=< 3, 6> velocity=<-1, -1> +position=< 5, 0> velocity=< 1, 0> +position=<-6, 0> velocity=< 2, 0> +position=< 5, 9> velocity=< 1, -2> +position=<14, 7> velocity=<-2, 0> +position=<-3, 6> velocity=< 2, -1> diff --git a/src/main/resources/2018-examples/day10-2.txt b/src/main/resources/2018-examples/day10-2.txt new file mode 100644 index 00000000..0d1b4762 --- /dev/null +++ b/src/main/resources/2018-examples/day10-2.txt @@ -0,0 +1,89 @@ +Initially: +........#............. +................#..... +.........#.#..#....... +...................... +#..........#.#.......# +...............#...... +....#................. +..#.#....#............ +.......#.............. +......#............... +...#...#.#...#........ +....#..#..#.........#. +.......#.............. +...........#..#....... +#...........#......... +...#.......#.......... + +After 1 second: +...................... +...................... +..........#....#...... +........#.....#....... +..#.........#......#.. +...................... +......#............... +....##.........#...... +......#.#............. +.....##.##..#......... +........#.#........... +........#...#.....#... +..#...........#....... +....#.....#.#......... +...................... +...................... + +After 2 seconds: +...................... +...................... +...................... +..............#....... +....#..#...####..#.... +...................... +........#....#........ +......#.#............. +.......#...#.......... +.......#..#..#.#...... +....#....#.#.......... +.....#...#...##.#..... +........#............. +...................... +...................... +...................... + +After 3 seconds: +...................... +...................... +...................... +...................... +......#...#..###...... +......#...#...#....... +......#...#...#....... +......#####...#....... +......#...#...#....... +......#...#...#....... +......#...#...#....... +......#...#..###...... +...................... +...................... +...................... +...................... + +After 4 seconds: +...................... +...................... +...................... +............#......... +........##...#.#...... +......#.....#..#...... +.....#..##.##.#....... +.......##.#....#...... +...........#....#..... +..............#....... +....#......#...#...... +.....#.....##......... +...............#...... +...............#...... +...................... +...................... diff --git a/src/main/resources/2018-examples/day11-1.txt b/src/main/resources/2018-examples/day11-1.txt new file mode 100644 index 00000000..283f0f35 --- /dev/null +++ b/src/main/resources/2018-examples/day11-1.txt @@ -0,0 +1,5 @@ +-2 -4 4 4 4 +-4 4 4 4 -5 + 4 3 3 4 -4 + 1 1 2 4 -3 +-1 0 2 -5 -2 diff --git a/src/main/resources/2018-examples/day11-2.txt b/src/main/resources/2018-examples/day11-2.txt new file mode 100644 index 00000000..025cfc62 --- /dev/null +++ b/src/main/resources/2018-examples/day11-2.txt @@ -0,0 +1,5 @@ +-3 4 2 2 2 +-4 4 3 3 4 +-5 3 3 4 -4 + 4 3 3 4 -3 + 3 3 3 -5 -1 diff --git a/src/main/resources/2018-examples/day12-1.txt b/src/main/resources/2018-examples/day12-1.txt new file mode 100644 index 00000000..c2169663 --- /dev/null +++ b/src/main/resources/2018-examples/day12-1.txt @@ -0,0 +1,16 @@ +initial state: #..#.#..##......###...### + +...## => # +..#.. => # +.#... => # +.#.#. => # +.#.## => # +.##.. => # +.#### => # +#.#.# => # +#.### => # +##.#. => # +##.## => # +###.. => # +###.# => # +####. => # diff --git a/src/main/resources/2018-examples/day12-2.txt b/src/main/resources/2018-examples/day12-2.txt new file mode 100644 index 00000000..5fd546c4 --- /dev/null +++ b/src/main/resources/2018-examples/day12-2.txt @@ -0,0 +1,23 @@ + 1 2 3 + 0 0 0 0 + 0: ...#..#.#..##......###...###........... + 1: ...#...#....#.....#..#..#..#........... + 2: ...##..##...##....#..#..#..##.......... + 3: ..#.#...#..#.#....#..#..#...#.......... + 4: ...#.#..#...#.#...#..#..##..##......... + 5: ....#...##...#.#..#..#...#...#......... + 6: ....##.#.#....#...#..##..##..##........ + 7: ...#..###.#...##..#...#...#...#........ + 8: ...#....##.#.#.#..##..##..##..##....... + 9: ...##..#..#####....#...#...#...#....... +10: ..#.#..#...#.##....##..##..##..##...... +11: ...#...##...#.#...#.#...#...#...#...... +12: ...##.#.#....#.#...#.#..##..##..##..... +13: ..#..###.#....#.#...#....#...#...#..... +14: ..#....##.#....#.#..##...##..##..##.... +15: ..##..#..#.#....#....#..#.#...#...#.... +16: .#.#..#...#.#...##...#...#.#..##..##... +17: ..#...##...#.#.#.#...##...#....#...#... +18: ..##.#.#....#####.#.#.#...##...##..##.. +19: .#..###.#..#.#.#######.#.#.#..#.#...#.. +20: .#....##....#####...#######....#.#..##. diff --git a/src/main/resources/2018-examples/day13-1.txt b/src/main/resources/2018-examples/day13-1.txt new file mode 100644 index 00000000..afd7d5a8 --- /dev/null +++ b/src/main/resources/2018-examples/day13-1.txt @@ -0,0 +1,4 @@ +/----\ +| | +| | +\----/ diff --git a/src/main/resources/2018-examples/day13-2.txt b/src/main/resources/2018-examples/day13-2.txt new file mode 100644 index 00000000..41eda5c2 --- /dev/null +++ b/src/main/resources/2018-examples/day13-2.txt @@ -0,0 +1,7 @@ +/-----\ +| | +| /--+--\ +| | | | +\--+--/ | + | | + \-----/ diff --git a/src/main/resources/2018-examples/day13-3.txt b/src/main/resources/2018-examples/day13-3.txt new file mode 100644 index 00000000..d091b2c5 --- /dev/null +++ b/src/main/resources/2018-examples/day13-3.txt @@ -0,0 +1,7 @@ +| | | | | +v | | | | +| v v | | +| | | v X +| | ^ ^ | +^ ^ | | | +| | | | | diff --git a/src/main/resources/2018-examples/day13-4.txt b/src/main/resources/2018-examples/day13-4.txt new file mode 100644 index 00000000..39023afb --- /dev/null +++ b/src/main/resources/2018-examples/day13-4.txt @@ -0,0 +1,104 @@ +/->-\ +| | /----\ +| /-+--+-\ | +| | | | v | +\-+-/ \-+--/ + \------/ + +/-->\ +| | /----\ +| /-+--+-\ | +| | | | | | +\-+-/ \->--/ + \------/ + +/---v +| | /----\ +| /-+--+-\ | +| | | | | | +\-+-/ \-+>-/ + \------/ + +/---\ +| v /----\ +| /-+--+-\ | +| | | | | | +\-+-/ \-+->/ + \------/ + +/---\ +| | /----\ +| /->--+-\ | +| | | | | | +\-+-/ \-+--^ + \------/ + +/---\ +| | /----\ +| /-+>-+-\ | +| | | | | ^ +\-+-/ \-+--/ + \------/ + +/---\ +| | /----\ +| /-+->+-\ ^ +| | | | | | +\-+-/ \-+--/ + \------/ + +/---\ +| | /----< +| /-+-->-\ | +| | | | | | +\-+-/ \-+--/ + \------/ + +/---\ +| | /---<\ +| /-+--+>\ | +| | | | | | +\-+-/ \-+--/ + \------/ + +/---\ +| | /--<-\ +| /-+--+-v | +| | | | | | +\-+-/ \-+--/ + \------/ + +/---\ +| | /-<--\ +| /-+--+-\ | +| | | | v | +\-+-/ \-+--/ + \------/ + +/---\ +| | /<---\ +| /-+--+-\ | +| | | | | | +\-+-/ \-<--/ + \------/ + +/---\ +| | v----\ +| /-+--+-\ | +| | | | | | +\-+-/ \<+--/ + \------/ + +/---\ +| | /----\ +| /-+--v-\ | +| | | | | | +\-+-/ ^-+--/ + \------/ + +/---\ +| | /----\ +| /-+--+-\ | +| | | X | | +\-+-/ \-+--/ + \------/ diff --git a/src/main/resources/2018-examples/day13-5.txt b/src/main/resources/2018-examples/day13-5.txt new file mode 100644 index 00000000..941e8b9a --- /dev/null +++ b/src/main/resources/2018-examples/day13-5.txt @@ -0,0 +1,8 @@ + 111 + 0123456789012 +0/---\ +1| | /----\ +2| /-+--+-\ | +3| | | X | | +4\-+-/ \-+--/ +5 \------/ diff --git a/src/main/resources/2018-examples/day14-1.txt b/src/main/resources/2018-examples/day14-1.txt new file mode 100644 index 00000000..bbfd4573 --- /dev/null +++ b/src/main/resources/2018-examples/day14-1.txt @@ -0,0 +1,16 @@ +(3)[7] +(3)[7] 1 0 + 3 7 1 [0](1) 0 + 3 7 1 0 [1] 0 (1) +(3) 7 1 0 1 0 [1] 2 + 3 7 1 0 (1) 0 1 2 [4] + 3 7 1 [0] 1 0 (1) 2 4 5 + 3 7 1 0 [1] 0 1 2 (4) 5 1 + 3 (7) 1 0 1 0 [1] 2 4 5 1 5 + 3 7 1 0 1 0 1 2 [4](5) 1 5 8 + 3 (7) 1 0 1 0 1 2 4 5 1 5 8 [9] + 3 7 1 0 1 0 1 [2] 4 (5) 1 5 8 9 1 6 + 3 7 1 0 1 0 1 2 4 5 [1] 5 8 9 1 (6) 7 + 3 7 1 0 (1) 0 1 2 4 5 1 5 [8] 9 1 6 7 7 + 3 7 [1] 0 1 0 (1) 2 4 5 1 5 8 9 1 6 7 7 9 + 3 7 1 0 [1] 0 1 2 (4) 5 1 5 8 9 1 6 7 7 9 2 diff --git a/src/main/resources/2018-examples/day15-1.txt b/src/main/resources/2018-examples/day15-1.txt new file mode 100644 index 00000000..37af4f88 --- /dev/null +++ b/src/main/resources/2018-examples/day15-1.txt @@ -0,0 +1,7 @@ + would take their +These units: turns in this order: + ####### ####### + #.G.E.# #.1.2.# + #E.G.E# #3.4.5# + #.G.E.# #.6.7.# + ####### ####### diff --git a/src/main/resources/2018-examples/day15-10.txt b/src/main/resources/2018-examples/day15-10.txt new file mode 100644 index 00000000..c82ab1c3 --- /dev/null +++ b/src/main/resources/2018-examples/day15-10.txt @@ -0,0 +1,11 @@ +####### ####### +#.E...# #.....# +#.#..G# #.#G..# G(200) +#.###.# --> #.###.# +#E#G#G# #.#.#.# +#...#G# #G.G#G# G(98), G(38), G(200) +####### ####### + +Combat ends after 54 full rounds +Goblins win with 536 total hit points left +Outcome: 54 * 536 = 28944 diff --git a/src/main/resources/2018-examples/day15-11.txt b/src/main/resources/2018-examples/day15-11.txt new file mode 100644 index 00000000..33dae920 --- /dev/null +++ b/src/main/resources/2018-examples/day15-11.txt @@ -0,0 +1,13 @@ +######### ######### +#G......# #.G.....# G(137) +#.E.#...# #G.G#...# G(200), G(200) +#..##..G# #.G##...# G(200) +#...##..# --> #...##..# +#...#...# #.G.#...# G(200) +#.G...G.# #.......# +#.....G.# #.......# +######### ######### + +Combat ends after 20 full rounds +Goblins win with 937 total hit points left +Outcome: 20 * 937 = 18740 diff --git a/src/main/resources/2018-examples/day15-2.txt b/src/main/resources/2018-examples/day15-2.txt new file mode 100644 index 00000000..d07d31ec --- /dev/null +++ b/src/main/resources/2018-examples/day15-2.txt @@ -0,0 +1,6 @@ +Targets: In range: Reachable: Nearest: Chosen: +####### ####### ####### ####### ####### +#E..G.# #E.?G?# #E.@G.# #E.!G.# #E.+G.# +#...#.# --> #.?.#?# --> #.@.#.# --> #.!.#.# --> #...#.# +#.G.#G# #?G?#G# #@G@#G# #!G.#G# #.G.#G# +####### ####### ####### ####### ####### diff --git a/src/main/resources/2018-examples/day15-3.txt b/src/main/resources/2018-examples/day15-3.txt new file mode 100644 index 00000000..55cce342 --- /dev/null +++ b/src/main/resources/2018-examples/day15-3.txt @@ -0,0 +1,6 @@ +In range: Nearest: Chosen: Distance: Step: +####### ####### ####### ####### ####### +#.E...# #.E...# #.E...# #4E212# #..E..# +#...?.# --> #...!.# --> #...+.# --> #32101# --> #.....# +#..?G?# #..!G.# #...G.# #432G2# #...G.# +####### ####### ####### ####### ####### diff --git a/src/main/resources/2018-examples/day15-4.txt b/src/main/resources/2018-examples/day15-4.txt new file mode 100644 index 00000000..d9bd4075 --- /dev/null +++ b/src/main/resources/2018-examples/day15-4.txt @@ -0,0 +1,43 @@ +Initially: +######### +#G..G..G# +#.......# +#.......# +#G..E..G# +#.......# +#.......# +#G..G..G# +######### + +After 1 round: +######### +#.G...G.# +#...G...# +#...E..G# +#.G.....# +#.......# +#G..G..G# +#.......# +######### + +After 2 rounds: +######### +#..G.G..# +#...G...# +#.G.E.G.# +#.......# +#G..G..G# +#.......# +#.......# +######### + +After 3 rounds: +######### +#.......# +#..GGG..# +#..GEG..# +#G..G...# +#......G# +#.......# +#.......# +######### diff --git a/src/main/resources/2018-examples/day15-5.txt b/src/main/resources/2018-examples/day15-5.txt new file mode 100644 index 00000000..5451bbcd --- /dev/null +++ b/src/main/resources/2018-examples/day15-5.txt @@ -0,0 +1,6 @@ + HP: HP: +G.... 9 G.... 9 +..G.. 4 ..G.. 4 +..EG. 2 --> ..E.. +..G.. 2 ..G.. 2 +...G. 1 ...G. 1 diff --git a/src/main/resources/2018-examples/day15-6.txt b/src/main/resources/2018-examples/day15-6.txt new file mode 100644 index 00000000..7e8fd6b9 --- /dev/null +++ b/src/main/resources/2018-examples/day15-6.txt @@ -0,0 +1,93 @@ +Initially: +####### +#.G...# G(200) +#...EG# E(200), G(200) +#.#.#G# G(200) +#..G#E# G(200), E(200) +#.....# +####### + +After 1 round: +####### +#..G..# G(200) +#...EG# E(197), G(197) +#.#G#G# G(200), G(197) +#...#E# E(197) +#.....# +####### + +After 2 rounds: +####### +#...G.# G(200) +#..GEG# G(200), E(188), G(194) +#.#.#G# G(194) +#...#E# E(194) +#.....# +####### + +Combat ensues; eventually, the top Elf dies: + +After 23 rounds: +####### +#...G.# G(200) +#..G.G# G(200), G(131) +#.#.#G# G(131) +#...#E# E(131) +#.....# +####### + +After 24 rounds: +####### +#..G..# G(200) +#...G.# G(131) +#.#G#G# G(200), G(128) +#...#E# E(128) +#.....# +####### + +After 25 rounds: +####### +#.G...# G(200) +#..G..# G(131) +#.#.#G# G(125) +#..G#E# G(200), E(125) +#.....# +####### + +After 26 rounds: +####### +#G....# G(200) +#.G...# G(131) +#.#.#G# G(122) +#...#E# E(122) +#..G..# G(200) +####### + +After 27 rounds: +####### +#G....# G(200) +#.G...# G(131) +#.#.#G# G(119) +#...#E# E(119) +#...G.# G(200) +####### + +After 28 rounds: +####### +#G....# G(200) +#.G...# G(131) +#.#.#G# G(116) +#...#E# E(113) +#....G# G(200) +####### + +More combat ensues; eventually, the bottom Elf dies: + +After 47 rounds: +####### +#G....# G(200) +#.G...# G(131) +#.#.#G# G(59) +#...#.# +#....G# G(200) +####### diff --git a/src/main/resources/2018-examples/day15-7.txt b/src/main/resources/2018-examples/day15-7.txt new file mode 100644 index 00000000..015c250c --- /dev/null +++ b/src/main/resources/2018-examples/day15-7.txt @@ -0,0 +1,11 @@ +####### ####### +#G..#E# #...#E# E(200) +#E#E.E# #E#...# E(197) +#G.##.# --> #.E##.# E(185) +#...#E# #E..#E# E(200), E(200) +#...E.# #.....# +####### ####### + +Combat ends after 37 full rounds +Elves win with 982 total hit points left +Outcome: 37 * 982 = 36334 diff --git a/src/main/resources/2018-examples/day15-8.txt b/src/main/resources/2018-examples/day15-8.txt new file mode 100644 index 00000000..4c559af2 --- /dev/null +++ b/src/main/resources/2018-examples/day15-8.txt @@ -0,0 +1,11 @@ +####### ####### +#E..EG# #.E.E.# E(164), E(197) +#.#G.E# #.#E..# E(200) +#E.##E# --> #E.##.# E(98) +#G..#.# #.E.#.# E(200) +#..E#.# #...#.# +####### ####### + +Combat ends after 46 full rounds +Elves win with 859 total hit points left +Outcome: 46 * 859 = 39514 diff --git a/src/main/resources/2018-examples/day15-9.txt b/src/main/resources/2018-examples/day15-9.txt new file mode 100644 index 00000000..85b3df0d --- /dev/null +++ b/src/main/resources/2018-examples/day15-9.txt @@ -0,0 +1,11 @@ +####### ####### +#E.G#.# #G.G#.# G(200), G(98) +#.#G..# #.#G..# G(200) +#G.#.G# --> #..#..# +#G..#.# #...#G# G(95) +#...E.# #...G.# G(200) +####### ####### + +Combat ends after 35 full rounds +Goblins win with 793 total hit points left +Outcome: 35 * 793 = 27755 diff --git a/src/main/resources/2018-examples/day16-1.txt b/src/main/resources/2018-examples/day16-1.txt new file mode 100644 index 00000000..faa80a1a --- /dev/null +++ b/src/main/resources/2018-examples/day16-1.txt @@ -0,0 +1,3 @@ +Before: [3, 2, 1, 1] +9 2 1 2 +After: [3, 2, 2, 1] diff --git a/src/main/resources/2018-examples/day17-1.txt b/src/main/resources/2018-examples/day17-1.txt new file mode 100644 index 00000000..293b5af7 --- /dev/null +++ b/src/main/resources/2018-examples/day17-1.txt @@ -0,0 +1,8 @@ +x=495, y=2..7 +y=7, x=495..501 +x=501, y=3..7 +x=498, y=2..4 +x=506, y=1..2 +x=498, y=10..13 +x=504, y=10..13 +y=13, x=498..504 diff --git a/src/main/resources/2018-examples/day17-2.txt b/src/main/resources/2018-examples/day17-2.txt new file mode 100644 index 00000000..5aecab2e --- /dev/null +++ b/src/main/resources/2018-examples/day17-2.txt @@ -0,0 +1,17 @@ + 44444455555555 + 99999900000000 + 45678901234567 + 0 ......+....... + 1 ............#. + 2 .#..#.......#. + 3 .#..#..#...... + 4 .#..#..#...... + 5 .#.....#...... + 6 .#.....#...... + 7 .#######...... + 8 .............. + 9 .............. +10 ....#.....#... +11 ....#.....#... +12 ....#.....#... +13 ....#######... diff --git a/src/main/resources/2018-examples/day17-3.txt b/src/main/resources/2018-examples/day17-3.txt new file mode 100644 index 00000000..156effae --- /dev/null +++ b/src/main/resources/2018-examples/day17-3.txt @@ -0,0 +1,14 @@ +......+....... +......|.....#. +.#..#.|.....#. +.#..#.|#...... +.#..#.|#...... +.#....|#...... +.#~~~~~#...... +.#######...... +.............. +.............. +....#.....#... +....#.....#... +....#.....#... +....#######... diff --git a/src/main/resources/2018-examples/day17-4.txt b/src/main/resources/2018-examples/day17-4.txt new file mode 100644 index 00000000..cc78b8f3 --- /dev/null +++ b/src/main/resources/2018-examples/day17-4.txt @@ -0,0 +1,14 @@ +......+....... +......|.....#. +.#..#.|.....#. +.#..#.|#...... +.#..#.|#...... +.#~~~~~#...... +.#~~~~~#...... +.#######...... +.............. +.............. +....#.....#... +....#.....#... +....#.....#... +....#######... diff --git a/src/main/resources/2018-examples/day17-5.txt b/src/main/resources/2018-examples/day17-5.txt new file mode 100644 index 00000000..79d1c065 --- /dev/null +++ b/src/main/resources/2018-examples/day17-5.txt @@ -0,0 +1,14 @@ +......+....... +......|.....#. +.#..#.|.....#. +.#..#~~#...... +.#..#~~#...... +.#~~~~~#...... +.#~~~~~#...... +.#######...... +.............. +.............. +....#.....#... +....#.....#... +....#.....#... +....#######... diff --git a/src/main/resources/2018-examples/day17-6.txt b/src/main/resources/2018-examples/day17-6.txt new file mode 100644 index 00000000..f9e4768a --- /dev/null +++ b/src/main/resources/2018-examples/day17-6.txt @@ -0,0 +1,14 @@ +......+....... +......|.....#. +.#..#||||...#. +.#..#~~#|..... +.#..#~~#|..... +.#~~~~~#|..... +.#~~~~~#|..... +.#######|..... +........|..... +........|..... +....#...|.#... +....#...|.#... +....#~~~~~#... +....#######... diff --git a/src/main/resources/2018-examples/day17-7.txt b/src/main/resources/2018-examples/day17-7.txt new file mode 100644 index 00000000..e78942ae --- /dev/null +++ b/src/main/resources/2018-examples/day17-7.txt @@ -0,0 +1,14 @@ +......+....... +......|.....#. +.#..#||||...#. +.#..#~~#|..... +.#..#~~#|..... +.#~~~~~#|..... +.#~~~~~#|..... +.#######|..... +........|..... +........|..... +....#~~~~~#... +....#~~~~~#... +....#~~~~~#... +....#######... diff --git a/src/main/resources/2018-examples/day17-8.txt b/src/main/resources/2018-examples/day17-8.txt new file mode 100644 index 00000000..2d9ce503 --- /dev/null +++ b/src/main/resources/2018-examples/day17-8.txt @@ -0,0 +1,17 @@ +......+....... (line not counted: above minimum y value) +......|.....#. +.#..#||||...#. +.#..#~~#|..... +.#..#~~#|..... +.#~~~~~#|..... +.#~~~~~#|..... +.#######|..... +........|..... +...|||||||||.. +...|#~~~~~#|.. +...|#~~~~~#|.. +...|#~~~~~#|.. +...|#######|.. +...|.......|.. (line not counted: below maximum y value) +...|.......|.. (line not counted: below maximum y value) +...|.......|.. (line not counted: below maximum y value) diff --git a/src/main/resources/2018-examples/day18-1.txt b/src/main/resources/2018-examples/day18-1.txt new file mode 100644 index 00000000..2a76bb29 --- /dev/null +++ b/src/main/resources/2018-examples/day18-1.txt @@ -0,0 +1,131 @@ +Initial state: +.#.#...|#. +.....#|##| +.|..|...#. +..|#.....# +#.#|||#|#| +...#.||... +.|....|... +||...#|.#| +|.||||..|. +...#.|..|. + +After 1 minute: +.......##. +......|### +.|..|...#. +..|#||...# +..##||.|#| +...#||||.. +||...|||.. +|||||.||.| +|||||||||| +....||..|. + +After 2 minutes: +.......#.. +......|#.. +.|.|||.... +..##|||..# +..###|||#| +...#|||||. +|||||||||. +|||||||||| +|||||||||| +.||||||||| + +After 3 minutes: +.......#.. +....|||#.. +.|.||||... +..###|||.# +...##|||#| +.||##||||| +|||||||||| +|||||||||| +|||||||||| +|||||||||| + +After 4 minutes: +.....|.#.. +...||||#.. +.|.#||||.. +..###||||# +...###||#| +|||##||||| +|||||||||| +|||||||||| +|||||||||| +|||||||||| + +After 5 minutes: +....|||#.. +...||||#.. +.|.##||||. +..####|||# +.|.###||#| +|||###|||| +|||||||||| +|||||||||| +|||||||||| +|||||||||| + +After 6 minutes: +...||||#.. +...||||#.. +.|.###|||. +..#.##|||# +|||#.##|#| +|||###|||| +||||#||||| +|||||||||| +|||||||||| +|||||||||| + +After 7 minutes: +...||||#.. +..||#|##.. +.|.####||. +||#..##||# +||##.##|#| +|||####||| +|||###|||| +|||||||||| +|||||||||| +|||||||||| + +After 8 minutes: +..||||##.. +..|#####.. +|||#####|. +||#...##|# +||##..###| +||##.###|| +|||####||| +||||#||||| +|||||||||| +|||||||||| + +After 9 minutes: +..||###... +.||#####.. +||##...##. +||#....### +|##....##| +||##..###| +||######|| +|||###|||| +|||||||||| +|||||||||| + +After 10 minutes: +.||##..... +||###..... +||##...... +|##.....## +|##.....## +|##....##| +||##.####| +||#####||| +||||#||||| +|||||||||| diff --git a/src/main/resources/2018-examples/day19-1.txt b/src/main/resources/2018-examples/day19-1.txt new file mode 100644 index 00000000..d7d2a217 --- /dev/null +++ b/src/main/resources/2018-examples/day19-1.txt @@ -0,0 +1,8 @@ +#ip 0 +seti 5 0 1 +seti 6 0 2 +addi 0 1 0 +addr 1 2 3 +setr 1 0 0 +seti 8 0 4 +seti 9 0 5 diff --git a/src/main/resources/2018-examples/day19-2.txt b/src/main/resources/2018-examples/day19-2.txt new file mode 100644 index 00000000..f805100d --- /dev/null +++ b/src/main/resources/2018-examples/day19-2.txt @@ -0,0 +1,5 @@ +ip=0 [0, 0, 0, 0, 0, 0] seti 5 0 1 [0, 5, 0, 0, 0, 0] +ip=1 [1, 5, 0, 0, 0, 0] seti 6 0 2 [1, 5, 6, 0, 0, 0] +ip=2 [2, 5, 6, 0, 0, 0] addi 0 1 0 [3, 5, 6, 0, 0, 0] +ip=4 [4, 5, 6, 0, 0, 0] setr 1 0 0 [5, 5, 6, 0, 0, 0] +ip=6 [6, 5, 6, 0, 0, 0] seti 9 0 5 [6, 5, 6, 0, 0, 9] diff --git a/src/main/resources/2018-examples/day20-1.txt b/src/main/resources/2018-examples/day20-1.txt new file mode 100644 index 00000000..ad293db6 --- /dev/null +++ b/src/main/resources/2018-examples/day20-1.txt @@ -0,0 +1,5 @@ +##### +#.|.# +#-### +#.|X# +##### diff --git a/src/main/resources/2018-examples/day20-2.txt b/src/main/resources/2018-examples/day20-2.txt new file mode 100644 index 00000000..8e301115 --- /dev/null +++ b/src/main/resources/2018-examples/day20-2.txt @@ -0,0 +1,5 @@ +#?#?#?#?# +?.|.|.|.? +#?#?#?#-# + ?X|.? + #?#?# diff --git a/src/main/resources/2018-examples/day20-3.txt b/src/main/resources/2018-examples/day20-3.txt new file mode 100644 index 00000000..f17f44c6 --- /dev/null +++ b/src/main/resources/2018-examples/day20-3.txt @@ -0,0 +1,7 @@ +#?#?#?#?# +?.|.|.|.? +#-#?#?#?# +?.|.|.|.? +#?#?#?#-# + ?X|.? + #?#?# diff --git a/src/main/resources/2018-examples/day20-4.txt b/src/main/resources/2018-examples/day20-4.txt new file mode 100644 index 00000000..2397fefe --- /dev/null +++ b/src/main/resources/2018-examples/day20-4.txt @@ -0,0 +1,9 @@ +#?#?#?#?# +?.|.|.|.? +#-#?#?#?# +?.|.|.|.? +#-#?#?#-# +?.?.?X|.? +#-#-#?#?# +?.|.|.|.? +#?#?#?#?# diff --git a/src/main/resources/2018-examples/day20-5.txt b/src/main/resources/2018-examples/day20-5.txt new file mode 100644 index 00000000..650c547f --- /dev/null +++ b/src/main/resources/2018-examples/day20-5.txt @@ -0,0 +1,9 @@ +######### +#.|.|.|.# +#-####### +#.|.|.|.# +#-#####-# +#.#.#X|.# +#-#-##### +#.|.|.|.# +######### diff --git a/src/main/resources/2018-examples/day20-6.txt b/src/main/resources/2018-examples/day20-6.txt new file mode 100644 index 00000000..1e0edf67 --- /dev/null +++ b/src/main/resources/2018-examples/day20-6.txt @@ -0,0 +1,13 @@ +^ENNWSWW(NEWS|)SSSEEN(WNSE|)EE(SWEN|)NNN$ + +########### +#.|.#.|.#.# +#-###-#-#-# +#.|.|.#.#.# +#-#####-#-# +#.#.#X|.#.# +#-#-#####-# +#.#.|.|.|.# +#-###-###-# +#.|.|.#.|.# +########### diff --git a/src/main/resources/2018-examples/day20-7.txt b/src/main/resources/2018-examples/day20-7.txt new file mode 100644 index 00000000..338a9913 --- /dev/null +++ b/src/main/resources/2018-examples/day20-7.txt @@ -0,0 +1,16 @@ +Regex: ^ESSWWN(E|NNENN(EESS(WNSE|)SSS|WWWSSSSE(SW|NNNE)))$ +Furthest room requires passing 23 doors + +############# +#.|.|.|.|.|.# +#-#####-###-# +#.#.|.#.#.#.# +#-#-###-#-#-# +#.#.#.|.#.|.# +#-#-#-#####-# +#.#.#.#X|.#.# +#-#-#-###-#-# +#.|.#.|.#.#.# +###-#-###-#-# +#.|.#.|.|.#.# +############# diff --git a/src/main/resources/2018-examples/day20-8.txt b/src/main/resources/2018-examples/day20-8.txt new file mode 100644 index 00000000..f106a7f7 --- /dev/null +++ b/src/main/resources/2018-examples/day20-8.txt @@ -0,0 +1,18 @@ +Regex: ^WSSEESWWWNW(S|NENNEEEENN(ESSSSW(NWSW|SSEN)|WSWWN(E|WWS(E|SS))))$ +Furthest room requires passing 31 doors + +############### +#.|.|.|.#.|.|.# +#-###-###-#-#-# +#.|.#.|.|.#.#.# +#-#########-#-# +#.#.|.|.|.|.#.# +#-#-#########-# +#.#.#.|X#.|.#.# +###-#-###-#-#-# +#.|.#.#.|.#.|.# +#-###-#####-### +#.|.#.|.|.#.#.# +#-#-#####-#-#-# +#.#.|.|.|.#.|.# +############### diff --git a/src/main/resources/2018-examples/day22-1.txt b/src/main/resources/2018-examples/day22-1.txt new file mode 100644 index 00000000..3189a62a --- /dev/null +++ b/src/main/resources/2018-examples/day22-1.txt @@ -0,0 +1,16 @@ +M=.|=.|.|=.|=|=. +.|=|=|||..|.=... +.==|....||=..|== +=.|....|.==.|==. +=|..==...=.|==.. +=||.=.=||=|=..|= +|.=.===|||..=..| +|..==||=.|==|=== +.=..===..=|.|||. +.======|||=|=.|= +.===|=|===T===|| +=|||...|==..|=.| +=.=|=.=..=.||==| +||=|=...|==.=|== +|=.=||===.|||=== +||.|==.|.|.||=|| diff --git a/src/main/resources/2018-examples/day23-1.txt b/src/main/resources/2018-examples/day23-1.txt new file mode 100644 index 00000000..e023a878 --- /dev/null +++ b/src/main/resources/2018-examples/day23-1.txt @@ -0,0 +1,9 @@ +pos=<0,0,0>, r=4 +pos=<1,0,0>, r=1 +pos=<4,0,0>, r=3 +pos=<0,2,0>, r=1 +pos=<0,5,0>, r=3 +pos=<0,0,3>, r=1 +pos=<1,1,1>, r=1 +pos=<1,1,2>, r=1 +pos=<1,3,1>, r=1 diff --git a/src/main/resources/2018-examples/day24-1.txt b/src/main/resources/2018-examples/day24-1.txt new file mode 100644 index 00000000..933889e2 --- /dev/null +++ b/src/main/resources/2018-examples/day24-1.txt @@ -0,0 +1,2 @@ +18 units each with 729 hit points (weak to fire; immune to cold, slashing) + with an attack that does 8 radiation damage at initiative 10 diff --git a/src/main/resources/2018-examples/day24-10.txt b/src/main/resources/2018-examples/day24-10.txt new file mode 100644 index 00000000..69a814ea --- /dev/null +++ b/src/main/resources/2018-examples/day24-10.txt @@ -0,0 +1,12 @@ +Immune System: +Group 2 contains 49 units +Infection: +Group 1 contains 782 units +Group 2 contains 4434 units + +Infection group 1 would deal defending group 2 181424 damage +Immune System group 2 would deal defending group 1 1225 damage +Immune System group 2 would deal defending group 2 1225 damage + +Immune System group 2 attacks defending group 1, killing 0 units +Infection group 1 attacks defending group 2, killing 49 units diff --git a/src/main/resources/2018-examples/day24-11.txt b/src/main/resources/2018-examples/day24-11.txt new file mode 100644 index 00000000..5d8ea91e --- /dev/null +++ b/src/main/resources/2018-examples/day24-11.txt @@ -0,0 +1,5 @@ +Immune System: +No groups remain. +Infection: +Group 1 contains 782 units +Group 2 contains 4434 units diff --git a/src/main/resources/2018-examples/day24-2.txt b/src/main/resources/2018-examples/day24-2.txt new file mode 100644 index 00000000..9ef45150 --- /dev/null +++ b/src/main/resources/2018-examples/day24-2.txt @@ -0,0 +1,11 @@ +Immune System: +17 units each with 5390 hit points (weak to radiation, bludgeoning) with + an attack that does 4507 fire damage at initiative 2 +989 units each with 1274 hit points (immune to fire; weak to bludgeoning, + slashing) with an attack that does 25 slashing damage at initiative 3 + +Infection: +801 units each with 4706 hit points (weak to radiation) with an attack + that does 116 bludgeoning damage at initiative 1 +4485 units each with 2961 hit points (immune to radiation; weak to fire, + cold) with an attack that does 12 slashing damage at initiative 4 diff --git a/src/main/resources/2018-examples/day24-3.txt b/src/main/resources/2018-examples/day24-3.txt new file mode 100644 index 00000000..3e915a07 --- /dev/null +++ b/src/main/resources/2018-examples/day24-3.txt @@ -0,0 +1,18 @@ +Immune System: +Group 1 contains 17 units +Group 2 contains 989 units +Infection: +Group 1 contains 801 units +Group 2 contains 4485 units + +Infection group 1 would deal defending group 1 185832 damage +Infection group 1 would deal defending group 2 185832 damage +Infection group 2 would deal defending group 2 107640 damage +Immune System group 1 would deal defending group 1 76619 damage +Immune System group 1 would deal defending group 2 153238 damage +Immune System group 2 would deal defending group 1 24725 damage + +Infection group 2 attacks defending group 2, killing 84 units +Immune System group 2 attacks defending group 1, killing 4 units +Immune System group 1 attacks defending group 2, killing 51 units +Infection group 1 attacks defending group 1, killing 17 units diff --git a/src/main/resources/2018-examples/day24-4.txt b/src/main/resources/2018-examples/day24-4.txt new file mode 100644 index 00000000..e9554155 --- /dev/null +++ b/src/main/resources/2018-examples/day24-4.txt @@ -0,0 +1,12 @@ +Immune System: +Group 2 contains 905 units +Infection: +Group 1 contains 797 units +Group 2 contains 4434 units + +Infection group 1 would deal defending group 2 184904 damage +Immune System group 2 would deal defending group 1 22625 damage +Immune System group 2 would deal defending group 2 22625 damage + +Immune System group 2 attacks defending group 1, killing 4 units +Infection group 1 attacks defending group 2, killing 144 units diff --git a/src/main/resources/2018-examples/day24-5.txt b/src/main/resources/2018-examples/day24-5.txt new file mode 100644 index 00000000..c829d8ad --- /dev/null +++ b/src/main/resources/2018-examples/day24-5.txt @@ -0,0 +1,12 @@ +Immune System: +Group 2 contains 761 units +Infection: +Group 1 contains 793 units +Group 2 contains 4434 units + +Infection group 1 would deal defending group 2 183976 damage +Immune System group 2 would deal defending group 1 19025 damage +Immune System group 2 would deal defending group 2 19025 damage + +Immune System group 2 attacks defending group 1, killing 4 units +Infection group 1 attacks defending group 2, killing 143 units diff --git a/src/main/resources/2018-examples/day24-6.txt b/src/main/resources/2018-examples/day24-6.txt new file mode 100644 index 00000000..854d12fc --- /dev/null +++ b/src/main/resources/2018-examples/day24-6.txt @@ -0,0 +1,12 @@ +Immune System: +Group 2 contains 618 units +Infection: +Group 1 contains 789 units +Group 2 contains 4434 units + +Infection group 1 would deal defending group 2 183048 damage +Immune System group 2 would deal defending group 1 15450 damage +Immune System group 2 would deal defending group 2 15450 damage + +Immune System group 2 attacks defending group 1, killing 3 units +Infection group 1 attacks defending group 2, killing 143 units diff --git a/src/main/resources/2018-examples/day24-7.txt b/src/main/resources/2018-examples/day24-7.txt new file mode 100644 index 00000000..58111169 --- /dev/null +++ b/src/main/resources/2018-examples/day24-7.txt @@ -0,0 +1,12 @@ +Immune System: +Group 2 contains 475 units +Infection: +Group 1 contains 786 units +Group 2 contains 4434 units + +Infection group 1 would deal defending group 2 182352 damage +Immune System group 2 would deal defending group 1 11875 damage +Immune System group 2 would deal defending group 2 11875 damage + +Immune System group 2 attacks defending group 1, killing 2 units +Infection group 1 attacks defending group 2, killing 142 units diff --git a/src/main/resources/2018-examples/day24-8.txt b/src/main/resources/2018-examples/day24-8.txt new file mode 100644 index 00000000..b0b3ca26 --- /dev/null +++ b/src/main/resources/2018-examples/day24-8.txt @@ -0,0 +1,12 @@ +Immune System: +Group 2 contains 333 units +Infection: +Group 1 contains 784 units +Group 2 contains 4434 units + +Infection group 1 would deal defending group 2 181888 damage +Immune System group 2 would deal defending group 1 8325 damage +Immune System group 2 would deal defending group 2 8325 damage + +Immune System group 2 attacks defending group 1, killing 1 unit +Infection group 1 attacks defending group 2, killing 142 units diff --git a/src/main/resources/2018-examples/day24-9.txt b/src/main/resources/2018-examples/day24-9.txt new file mode 100644 index 00000000..55161535 --- /dev/null +++ b/src/main/resources/2018-examples/day24-9.txt @@ -0,0 +1,12 @@ +Immune System: +Group 2 contains 191 units +Infection: +Group 1 contains 783 units +Group 2 contains 4434 units + +Infection group 1 would deal defending group 2 181656 damage +Immune System group 2 would deal defending group 1 4775 damage +Immune System group 2 would deal defending group 2 4775 damage + +Immune System group 2 attacks defending group 1, killing 1 unit +Infection group 1 attacks defending group 2, killing 142 units diff --git a/src/main/resources/2018-examples/day25-1.txt b/src/main/resources/2018-examples/day25-1.txt new file mode 100644 index 00000000..ebb54aa0 --- /dev/null +++ b/src/main/resources/2018-examples/day25-1.txt @@ -0,0 +1,8 @@ + 0,0,0,0 + 3,0,0,0 + 0,3,0,0 + 0,0,3,0 + 0,0,0,3 + 0,0,0,6 + 9,0,0,0 +12,0,0,0 diff --git a/src/main/resources/2018-examples/day25-2.txt b/src/main/resources/2018-examples/day25-2.txt new file mode 100644 index 00000000..3a97e16c --- /dev/null +++ b/src/main/resources/2018-examples/day25-2.txt @@ -0,0 +1,10 @@ +-1,2,2,0 +0,0,2,-2 +0,0,0,-2 +-1,2,0,0 +-2,-2,-2,2 +3,0,2,-1 +-1,3,2,2 +-1,0,-1,0 +0,2,1,-2 +3,0,0,0 diff --git a/src/main/resources/2018-examples/day25-3.txt b/src/main/resources/2018-examples/day25-3.txt new file mode 100644 index 00000000..bf5c2b97 --- /dev/null +++ b/src/main/resources/2018-examples/day25-3.txt @@ -0,0 +1,10 @@ +1,-1,0,1 +2,0,-1,0 +3,2,-1,0 +0,0,3,1 +0,0,-1,-1 +2,3,-2,0 +-2,2,0,0 +2,-2,0,-1 +1,-1,0,-1 +3,2,0,2 diff --git a/src/main/resources/2018-examples/day25-4.txt b/src/main/resources/2018-examples/day25-4.txt new file mode 100644 index 00000000..1147af7a --- /dev/null +++ b/src/main/resources/2018-examples/day25-4.txt @@ -0,0 +1,10 @@ +1,-1,-1,-2 +-2,-2,0,1 +0,2,1,3 +-2,3,-2,1 +0,2,3,-2 +-1,-1,1,-2 +0,-2,-1,0 +-2,2,3,-1 +1,2,2,0 +-1,-2,0,-2 diff --git a/src/main/resources/2018-examples/day3-1.txt b/src/main/resources/2018-examples/day3-1.txt new file mode 100644 index 00000000..6b10a0ae --- /dev/null +++ b/src/main/resources/2018-examples/day3-1.txt @@ -0,0 +1,9 @@ +........... +........... +...#####... +...#####... +...#####... +...#####... +........... +........... +........... diff --git a/src/main/resources/2018-examples/day3-2.txt b/src/main/resources/2018-examples/day3-2.txt new file mode 100644 index 00000000..3755d524 --- /dev/null +++ b/src/main/resources/2018-examples/day3-2.txt @@ -0,0 +1,3 @@ +#1 @ 1,3: 4x4 +#2 @ 3,1: 4x4 +#3 @ 5,5: 2x2 diff --git a/src/main/resources/2018-examples/day3-3.txt b/src/main/resources/2018-examples/day3-3.txt new file mode 100644 index 00000000..23de7cc7 --- /dev/null +++ b/src/main/resources/2018-examples/day3-3.txt @@ -0,0 +1,8 @@ +........ +...2222. +...2222. +.11XX22. +.11XX22. +.111133. +.111133. +........ diff --git a/src/main/resources/2018-examples/day4-1.txt b/src/main/resources/2018-examples/day4-1.txt new file mode 100644 index 00000000..496d3149 --- /dev/null +++ b/src/main/resources/2018-examples/day4-1.txt @@ -0,0 +1,17 @@ +[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 diff --git a/src/main/resources/2018-examples/day4-2.txt b/src/main/resources/2018-examples/day4-2.txt new file mode 100644 index 00000000..5cb6aae8 --- /dev/null +++ b/src/main/resources/2018-examples/day4-2.txt @@ -0,0 +1,8 @@ +Date ID Minute + 000000000011111111112222222222333333333344444444445555555555 + 012345678901234567890123456789012345678901234567890123456789 +11-01 #10 .....####################.....#########################..... +11-02 #99 ........................................##########.......... +11-03 #10 ........................#####............................... +11-04 #99 ....................................##########.............. +11-05 #99 .............................................##########..... diff --git a/src/main/resources/2018-examples/day5-1.txt b/src/main/resources/2018-examples/day5-1.txt new file mode 100644 index 00000000..ce9d5919 --- /dev/null +++ b/src/main/resources/2018-examples/day5-1.txt @@ -0,0 +1,4 @@ +dabAcCaCBAcCcaDA The first 'cC' is removed. +dabAaCBAcCcaDA This creates 'Aa', which is removed. +dabCBAcCcaDA Either 'cC' or 'Cc' are removed (the result is the same). +dabCBAcaDA No further actions can be taken. diff --git a/src/main/resources/2018-examples/day6-1.txt b/src/main/resources/2018-examples/day6-1.txt new file mode 100644 index 00000000..95d160ac --- /dev/null +++ b/src/main/resources/2018-examples/day6-1.txt @@ -0,0 +1,6 @@ +1, 1 +1, 6 +8, 3 +3, 4 +5, 5 +8, 9 diff --git a/src/main/resources/2018-examples/day6-2.txt b/src/main/resources/2018-examples/day6-2.txt new file mode 100644 index 00000000..a8300a19 --- /dev/null +++ b/src/main/resources/2018-examples/day6-2.txt @@ -0,0 +1,10 @@ +.......... +.A........ +.......... +........C. +...D...... +.....E.... +.B........ +.......... +.......... +........F. diff --git a/src/main/resources/2018-examples/day6-3.txt b/src/main/resources/2018-examples/day6-3.txt new file mode 100644 index 00000000..c0e678c5 --- /dev/null +++ b/src/main/resources/2018-examples/day6-3.txt @@ -0,0 +1,10 @@ +aaaaa.cccc +aAaaa.cccc +aaaddecccc +aadddeccCc +..dDdeeccc +bb.deEeecc +bBb.eeee.. +bbb.eeefff +bbb.eeffff +bbb.ffffFf diff --git a/src/main/resources/2018-examples/day7-1.txt b/src/main/resources/2018-examples/day7-1.txt new file mode 100644 index 00000000..9ab25bf5 --- /dev/null +++ b/src/main/resources/2018-examples/day7-1.txt @@ -0,0 +1,7 @@ +Step C must be finished before step A can begin. +Step C must be finished before step F can begin. +Step A must be finished before step B can begin. +Step A must be finished before step D can begin. +Step B must be finished before step E can begin. +Step D must be finished before step E can begin. +Step F must be finished before step E can begin. diff --git a/src/main/resources/2018-examples/day7-2.txt b/src/main/resources/2018-examples/day7-2.txt new file mode 100644 index 00000000..82c29617 --- /dev/null +++ b/src/main/resources/2018-examples/day7-2.txt @@ -0,0 +1,5 @@ + -->A--->B-- + / \ \ +C -->D----->E + \ / + ---->F----- diff --git a/src/main/resources/2018-examples/day8-1.txt b/src/main/resources/2018-examples/day8-1.txt new file mode 100644 index 00000000..93c6d38f --- /dev/null +++ b/src/main/resources/2018-examples/day8-1.txt @@ -0,0 +1,4 @@ +2 3 0 3 10 11 12 1 1 0 1 99 2 1 1 2 +A---------------------------------- + B----------- C----------- + D----- diff --git a/src/main/resources/2018-examples/day9-1.txt b/src/main/resources/2018-examples/day9-1.txt new file mode 100644 index 00000000..f9c9240f --- /dev/null +++ b/src/main/resources/2018-examples/day9-1.txt @@ -0,0 +1,26 @@ +[-] (0) +[1] 0 (1) +[2] 0 (2) 1 +[3] 0 2 1 (3) +[4] 0 (4) 2 1 3 +[5] 0 4 2 (5) 1 3 +[6] 0 4 2 5 1 (6) 3 +[7] 0 4 2 5 1 6 3 (7) +[8] 0 (8) 4 2 5 1 6 3 7 +[9] 0 8 4 (9) 2 5 1 6 3 7 +[1] 0 8 4 9 2(10) 5 1 6 3 7 +[2] 0 8 4 9 2 10 5(11) 1 6 3 7 +[3] 0 8 4 9 2 10 5 11 1(12) 6 3 7 +[4] 0 8 4 9 2 10 5 11 1 12 6(13) 3 7 +[5] 0 8 4 9 2 10 5 11 1 12 6 13 3(14) 7 +[6] 0 8 4 9 2 10 5 11 1 12 6 13 3 14 7(15) +[7] 0(16) 8 4 9 2 10 5 11 1 12 6 13 3 14 7 15 +[8] 0 16 8(17) 4 9 2 10 5 11 1 12 6 13 3 14 7 15 +[9] 0 16 8 17 4(18) 9 2 10 5 11 1 12 6 13 3 14 7 15 +[1] 0 16 8 17 4 18 9(19) 2 10 5 11 1 12 6 13 3 14 7 15 +[2] 0 16 8 17 4 18 9 19 2(20)10 5 11 1 12 6 13 3 14 7 15 +[3] 0 16 8 17 4 18 9 19 2 20 10(21) 5 11 1 12 6 13 3 14 7 15 +[4] 0 16 8 17 4 18 9 19 2 20 10 21 5(22)11 1 12 6 13 3 14 7 15 +[5] 0 16 8 17 4 18(19) 2 20 10 21 5 22 11 1 12 6 13 3 14 7 15 +[6] 0 16 8 17 4 18 19 2(24)20 10 21 5 22 11 1 12 6 13 3 14 7 15 +[7] 0 16 8 17 4 18 19 2 24 20(25)10 21 5 22 11 1 12 6 13 3 14 7 15 diff --git a/src/main/resources/2018/day1.txt b/src/main/resources/2018/day1.txt new file mode 100644 index 00000000..c1aec986 --- /dev/null +++ b/src/main/resources/2018/day1.txt @@ -0,0 +1,990 @@ +13 +-16 +18 +11 +15 +10 +-4 +-19 +14 +-19 +-17 +-19 +-2 +6 +2 +21 +5 +12 +-10 +-10 +18 +-11 +2 +17 +-5 +14 +14 +-3 +-12 +10 +7 +-3 +6 +-2 +8 +-17 +-18 +-19 +-14 +9 +-16 +-1 +-1 +11 +-3 +8 +-12 +10 +14 +12 +-18 +19 +-5 +13 +1 +4 +2 +11 +-3 +-2 +18 +8 +-4 +15 +-7 +-3 +18 +16 +2 +-4 +-12 +-19 +-4 +12 +15 +-17 +1 +-16 +-5 +15 +26 +9 +9 +-3 +-5 +3 +3 +-11 +-8 +-11 +-16 +14 +14 +14 +17 +14 +11 +-9 +18 +-10 +-4 +-11 +-10 +-9 +8 +12 +-6 +-1 +-2 +12 +-17 +-1 +17 +-10 +9 +11 +6 +3 +18 +19 +11 +-3 +15 +-3 +-2 +18 +17 +13 +13 +-6 +16 +10 +7 +-6 +-15 +-15 +-1 +15 +6 +-2 +-12 +19 +-1 +17 +18 +-8 +-11 +-18 +12 +-3 +-14 +6 +-12 +1 +-11 +-9 +13 +-3 +-15 +-19 +-16 +-3 +7 +7 +-17 +-18 +3 +-2 +-12 +-1 +16 +15 +10 +7 +-13 +7 +13 +14 +5 +18 +-14 +-8 +-4 +15 +-20 +-17 +-17 +11 +-15 +-14 +-10 +-1 +5 +-11 +18 +-4 +-19 +15 +-8 +14 +-20 +-12 +10 +-11 +-12 +16 +-7 +-7 +4 +-18 +-8 +11 +13 +-6 +24 +8 +4 +-19 +11 +15 +3 +-17 +30 +9 +10 +6 +-2 +3 +14 +8 +-3 +-12 +1 +5 +-8 +11 +10 +16 +6 +16 +1 +21 +19 +18 +18 +15 +15 +8 +2 +-6 +-16 +5 +-10 +18 +-12 +16 +6 +18 +-6 +-2 +5 +-14 +-17 +-14 +-13 +-7 +16 +-8 +-11 +-3 +8 +-13 +6 +3 +-5 +6 +5 +1 +12 +14 +10 +12 +-20 +12 +-15 +8 +4 +-7 +-9 +-1 +11 +-22 +-4 +-14 +-4 +-18 +6 +2 +8 +-4 +-1 +16 +-17 +-1 +-2 +-10 +-10 +-10 +16 +3 +-12 +2 +-1 +4 +-15 +18 +-2 +-9 +-6 +-22 +7 +16 +-5 +17 +13 +2 +-1 +3 +-11 +10 +-25 +-14 +17 +-15 +3 +43 +19 +12 +1 +-8 +4 +8 +-11 +-40 +-29 +-30 +-12 +18 +-15 +-5 +-14 +10 +-16 +1 +-34 +-13 +-20 +-7 +12 +9 +16 +-2 +-2 +9 +23 +15 +-8 +-38 +-37 +-8 +-20 +11 +-24 +-2 +14 +-24 +-18 +2 +-7 +14 +1 +19 +-5 +-23 +-11 +-15 +23 +8 +-14 +16 +-25 +-19 +8 +-3 +-20 +11 +-15 +-11 +-14 +16 +-31 +18 +25 +20 +-6 +11 +48 +-7 +-18 +-2 +-31 +21 +-49 +50 +-20 +-44 +8 +-81 +24 +-16 +-18 +26 +-60 +19 +-36 +-14 +-41 +25 +-72 +-46 +1 +-46 +-61361 +12 +-18 +-7 +-9 +6 +14 +-13 +-8 +19 +19 +11 +9 +2 +9 +-18 +-3 +20 +-4 +-11 +4 +14 +3 +-11 +2 +2 +-13 +-17 +3 +19 +-13 +-16 +11 +14 +-5 +12 +16 +17 +15 +6 +6 +2 +-1 +15 +6 +-3 +-5 +-6 +20 +16 +7 +1 +-5 +9 +12 +-2 +11 +-16 +6 +-14 +-3 +-11 +-8 +-18 +-9 +2 +12 +-15 +20 +1 +1 +10 +5 +17 +7 +-2 +-14 +1 +10 +-1 +12 +12 +-37 +-13 +-3 +5 +3 +18 +-14 +-26 +11 +-14 +-3 +-14 +-6 +-21 +2 +-8 +-3 +18 +-3 +18 +-10 +-15 +-6 +10 +5 +17 +14 +-16 +-10 +6 +-2 +-1 +-6 +-12 +14 +-5 +-11 +-11 +7 +-6 +9 +20 +-11 +-21 +14 +-7 +-8 +-29 +-12 +-2 +-3 +-17 +9 +-7 +13 +18 +-9 +-11 +12 +11 +-1 +-24 +-7 +-14 +-13 +-18 +9 +-16 +19 +18 +16 +2 +-13 +-19 +7 +-19 +-1 +-8 +-16 +2 +15 +-16 +18 +13 +-19 +-3 +-2 +-4 +-14 +9 +10 +-14 +-15 +6 +8 +-12 +-11 +-3 +-12 +-4 +-18 +14 +-13 +-10 +-14 +15 +3 +-15 +2 +1 +-9 +-11 +-1 +-17 +16 +-5 +-2 +19 +-8 +-19 +-3 +-19 +12 +-17 +6 +16 +19 +4 +-5 +-4 +-11 +13 +15 +7 +-11 +16 +4 +-1 +18 +-15 +20 +-11 +8 +-13 +19 +7 +11 +19 +-1 +-7 +-17 +-2 +-19 +-11 +15 +-11 +-16 +15 +-10 +25 +-5 +9 +17 +-16 +12 +10 +5 +-2 +-17 +11 +16 +-4 +-3 +-4 +-4 +-3 +-7 +4 +-9 +-19 +1 +-5 +29 +2 +28 +15 +20 +-15 +-13 +20 +20 +3 +-10 +-11 +20 +5 +14 +6 +-18 +-13 +1 +15 +30 +-23 +28 +-7 +-10 +-19 +-21 +20 +-5 +12 +-9 +-10 +-9 +-15 +-23 +-1 +17 +-2 +-10 +-1 +-13 +28 +22 +-6 +-8 +43 +42 +-8 +27 +4 +-18 +49 +19 +-8 +9 +-2 +-1 +37 +-12 +-11 +17 +15 +-6 +24 +19 +6 +-74 +6 +26 +-317 +4 +-23 +-9 +-17 +-17 +13 +-19 +8 +14 +-6 +-6 +1 +10 +10 +-1 +9 +-7 +18 +-9 +-8 +-4 +7 +18 +-3 +-16 +18 +-5 +11 +12 +-1 +9 +11 +-14 +-9 +19 +24 +30 +-27 +76 +-35 +-34 +-82 +14 +-25 +-10 +-3 +-7 +-14 +16 +-4 +-2 +-5 +-18 +9 +-7 +-1 +6 +-15 +11 +18 +-4 +16 +-9 +11 +-16 +-25 +-11 +21 +6 +5 +-10 +7 +20 +22 +-10 +4 +-10 +-16 +-6 +-18 +-31 +-69 +-12 +-18 +-25 +-8 +49 +50 +-19 +60 +-16 +-96 +200 +34 +-148 +-153 +-45 +-1 +-45 +-61788 +-16 +-5 +-8 +-6 +3 +-6 +16 +18 +10 +-14 +9 +-20 +6 +18 +9 +13 +7 +11 +-5 +-11 +17 +13 +-4 +-4 +-3 +-11 +-17 +-2 +4 +9 +-15 +-3 +19 +-9 +-12 +-17 +5 +-14 +17 +-7 +-23 +-11 +3 +-13 +4 +19 +-14 +-17 +10 +1 +4 +-11 +9 +-17 +7 +-16 +12 +-8 +1 +-9 +-9 +-7 +-7 +1 +1 +4 +2 +-16 +7 +4 +-18 +-7 +12 +7 +-1 +-14 +9 +-17 +-8 +13 +19 +-18 +-17 +-14 +-10 +-9 +-12 +-19 +-17 +14 +-16 +18 +-15 +-14 +-17 +-9 +-14 +-15 +-19 +-19 +10 +-17 +-2 +11 +15 +9 +1 +17 +17 +-10 +-16 +15 +4 +-7 +10 +5 +-16 +-5 +-5 +-3 +-8 +17 +-5 +124726 \ No newline at end of file diff --git a/src/main/resources/2018/day10.txt b/src/main/resources/2018/day10.txt new file mode 100644 index 00000000..ac7e997a --- /dev/null +++ b/src/main/resources/2018/day10.txt @@ -0,0 +1,318 @@ +position=<-41150, 41504> velocity=< 4, -4> +position=< 31211, -10213> velocity=<-3, 1> +position=<-51522, -41248> velocity=< 5, 4> +position=< 31227, -51593> velocity=<-3, 5> +position=< 31257, -20560> velocity=<-3, 2> +position=< 41558, 10468> velocity=<-4, -1> +position=< 10539, -30904> velocity=<-1, 3> +position=< 51919, -41253> velocity=<-5, 4> +position=< 31246, 10473> velocity=<-3, -1> +position=<-20471, 20813> velocity=< 2, -2> +position=< 51910, -10222> velocity=<-5, 1> +position=<-20503, 20816> velocity=< 2, -2> +position=< 20901, -41255> velocity=<-2, 4> +position=< 31249, -41249> velocity=<-3, 4> +position=<-10139, 10477> velocity=< 1, -1> +position=< 20888, -30903> velocity=<-2, 3> +position=< 31218, 31158> velocity=<-3, -3> +position=<-30802, 51848> velocity=< 3, -5> +position=< 51923, 51854> velocity=<-5, -5> +position=<-51503, 41504> velocity=< 5, -4> +position=<-10131, 31165> velocity=< 1, -3> +position=<-30809, -10222> velocity=< 3, 1> +position=< 10551, 20818> velocity=<-1, -2> +position=< 31236, 31158> velocity=<-3, -3> +position=<-51534, 20822> velocity=< 5, -2> +position=< 20920, -41250> velocity=<-2, 4> +position=<-30841, 41504> velocity=< 3, -4> +position=< 51932, -41256> velocity=<-5, 4> +position=< 31249, 10469> velocity=<-3, -1> +position=<-41198, 41505> velocity=< 4, -4> +position=<-30833, 41510> velocity=< 3, -4> +position=<-51494, 41507> velocity=< 5, -4> +position=< 10553, 10472> velocity=<-1, -1> +position=<-41174, -20564> velocity=< 4, 2> +position=< 41578, 20816> velocity=<-4, -2> +position=<-51503, -10214> velocity=< 5, 1> +position=<-30824, -30906> velocity=< 3, 3> +position=<-41172, 20816> velocity=< 4, -2> +position=<-41198, 41507> velocity=< 4, -4> +position=< 41578, -30911> velocity=<-4, 3> +position=< 20904, 20817> velocity=<-2, -2> +position=< 51901, 41503> velocity=<-5, -4> +position=< 20872, -30906> velocity=<-2, 3> +position=< 31265, -20560> velocity=<-3, 2> +position=<-10136, -10217> velocity=< 1, 1> +position=< 31246, 20817> velocity=<-3, -2> +position=< 51927, 20820> velocity=<-5, -2> +position=<-30821, -10222> velocity=< 3, 1> +position=<-20492, -10221> velocity=< 2, 1> +position=<-20488, -51596> velocity=< 2, 5> +position=< 41610, -41249> velocity=<-4, 4> +position=< 31257, -30908> velocity=<-3, 3> +position=< 41610, 31160> velocity=<-4, -3> +position=<-10151, 41503> velocity=< 1, -4> +position=<-51527, -10216> velocity=< 5, 1> +position=< 20867, -30903> velocity=<-2, 3> +position=< 31228, 41503> velocity=<-3, -4> +position=<-10160, -41253> velocity=< 1, 4> +position=< 41595, -30907> velocity=<-4, 3> +position=<-51506, 31158> velocity=< 5, -3> +position=<-10142, -10219> velocity=< 1, 1> +position=<-10115, -10222> velocity=< 1, 1> +position=< 10572, -51601> velocity=<-1, 5> +position=< 51899, 20818> velocity=<-5, -2> +position=<-20476, -30910> velocity=< 2, 3> +position=<-41174, 31162> velocity=< 4, -3> +position=< 31246, 41509> velocity=<-3, -4> +position=<-30801, -41253> velocity=< 3, 4> +position=<-10130, 41508> velocity=< 1, -4> +position=<-20473, 10470> velocity=< 2, -1> +position=<-41150, -20565> velocity=< 4, 2> +position=< 31246, 31165> velocity=<-3, -3> +position=< 41610, -41256> velocity=<-4, 4> +position=< 41574, 31164> velocity=<-4, -3> +position=<-41157, -30903> velocity=< 4, 3> +position=< 31241, 10469> velocity=<-3, -1> +position=< 31217, -30912> velocity=<-3, 3> +position=< 10529, 41503> velocity=<-1, -4> +position=< 20901, 51853> velocity=<-2, -5> +position=<-51551, 10472> velocity=< 5, -1> +position=< 41613, 41503> velocity=<-4, -4> +position=<-10134, -41251> velocity=< 1, 4> +position=< 41595, -41253> velocity=<-4, 4> +position=<-51511, 10477> velocity=< 5, -1> +position=<-30837, -10217> velocity=< 3, 1> +position=< 51950, -51602> velocity=<-5, 5> +position=<-51541, 41503> velocity=< 5, -4> +position=< 51907, 51857> velocity=<-5, -5> +position=<-41198, 10469> velocity=< 4, -1> +position=<-30834, 20817> velocity=< 3, -2> +position=< 51947, 31163> velocity=<-5, -3> +position=<-30804, -30912> velocity=< 3, 3> +position=<-30829, -20560> velocity=< 3, 2> +position=< 10547, -30908> velocity=<-1, 3> +position=<-51531, 31166> velocity=< 5, -3> +position=< 51955, 41510> velocity=<-5, -4> +position=<-30861, -30911> velocity=< 3, 3> +position=< 20872, -51596> velocity=<-2, 5> +position=<-30829, 51854> velocity=< 3, -5> +position=<-41150, -10218> velocity=< 4, 1> +position=< 31257, -20560> velocity=<-3, 2> +position=<-20476, 20816> velocity=< 2, -2> +position=<-20468, 10470> velocity=< 2, -1> +position=<-51519, -30911> velocity=< 5, 3> +position=< 51959, 10468> velocity=<-5, -1> +position=< 20888, -51593> velocity=<-2, 5> +position=< 51947, 10475> velocity=<-5, -1> +position=< 31246, 10468> velocity=<-3, -1> +position=<-20516, -41249> velocity=< 2, 4> +position=<-51511, -41248> velocity=< 5, 4> +position=<-41147, 20817> velocity=< 4, -2> +position=<-41150, -51594> velocity=< 4, 5> +position=<-10163, -30908> velocity=< 1, 3> +position=<-10152, -10213> velocity=< 1, 1> +position=<-20460, -30903> velocity=< 2, 3> +position=<-41169, -10219> velocity=< 4, 1> +position=<-51531, -30907> velocity=< 5, 3> +position=<-30812, 41503> velocity=< 3, -4> +position=<-41169, 10477> velocity=< 4, -1> +position=< 10546, 51848> velocity=<-1, -5> +position=<-10139, 20813> velocity=< 1, -2> +position=<-30861, 51851> velocity=< 3, -5> +position=<-20497, -51593> velocity=< 2, 5> +position=< 51949, -20558> velocity=<-5, 2> +position=< 41597, -51595> velocity=<-4, 5> +position=< 51940, 31163> velocity=<-5, -3> +position=< 41589, 10473> velocity=<-4, -1> +position=<-51495, -41257> velocity=< 5, 4> +position=< 31265, -41254> velocity=<-3, 4> +position=< 10527, 10473> velocity=<-1, -1> +position=< 51927, 41509> velocity=<-5, -4> +position=< 20884, 10471> velocity=<-2, -1> +position=<-51493, 41507> velocity=< 5, -4> +position=<-41182, -30912> velocity=< 4, 3> +position=< 10575, 41509> velocity=<-1, -4> +position=< 20884, -20567> velocity=<-2, 2> +position=< 10535, -20560> velocity=<-1, 2> +position=<-51543, 41512> velocity=< 5, -4> +position=<-30825, -10214> velocity=< 3, 1> +position=<-51535, -20559> velocity=< 5, 2> +position=< 10528, -10218> velocity=<-1, 1> +position=<-51538, 41506> velocity=< 5, -4> +position=< 20892, -30905> velocity=<-2, 3> +position=< 31249, -51596> velocity=<-3, 5> +position=< 10539, 20815> velocity=<-1, -2> +position=<-20464, -41248> velocity=< 2, 4> +position=<-41186, -20567> velocity=< 4, 2> +position=<-20492, 20820> velocity=< 2, -2> +position=<-30818, 31165> velocity=< 3, -3> +position=<-10131, -51596> velocity=< 1, 5> +position=< 51919, 20814> velocity=<-5, -2> +position=<-41166, -30905> velocity=< 4, 3> +position=<-10151, 31163> velocity=< 1, -3> +position=< 10522, 10468> velocity=<-1, -1> +position=< 51911, -30912> velocity=<-5, 3> +position=<-41173, 31160> velocity=< 4, -3> +position=< 31260, -41248> velocity=<-3, 4> +position=<-10139, -10220> velocity=< 1, 1> +position=<-30857, -20558> velocity=< 3, 2> +position=< 10531, -10222> velocity=<-1, 1> +position=<-30813, -20566> velocity=< 3, 2> +position=< 51944, -30903> velocity=<-5, 3> +position=<-41198, 20820> velocity=< 4, -2> +position=<-41150, -41252> velocity=< 4, 4> +position=<-20508, 20814> velocity=< 2, -2> +position=< 41554, -41256> velocity=<-4, 4> +position=< 31238, -41248> velocity=<-3, 4> +position=< 20906, -10219> velocity=<-2, 1> +position=< 51912, 41505> velocity=<-5, -4> +position=< 20866, -51602> velocity=<-2, 5> +position=< 10519, 31164> velocity=<-1, -3> +position=<-20479, 51856> velocity=< 2, -5> +position=<-30829, -51596> velocity=< 3, 5> +position=< 51943, -10221> velocity=<-5, 1> +position=< 20917, -41249> velocity=<-2, 4> +position=< 20888, 41507> velocity=<-2, -4> +position=< 51957, 41507> velocity=<-5, -4> +position=<-20499, -10213> velocity=< 2, 1> +position=< 51911, 41503> velocity=<-5, -4> +position=<-51551, -51595> velocity=< 5, 5> +position=<-10139, 51849> velocity=< 1, -5> +position=< 41582, -10222> velocity=<-4, 1> +position=<-41150, 31159> velocity=< 4, -3> +position=< 20888, 41504> velocity=<-2, -4> +position=< 10567, 20821> velocity=<-1, -2> +position=< 51900, -10222> velocity=<-5, 1> +position=<-51503, 20815> velocity=< 5, -2> +position=<-20488, -51596> velocity=< 2, 5> +position=< 51939, -10221> velocity=<-5, 1> +position=< 31270, 10468> velocity=<-3, -1> +position=<-51527, 20816> velocity=< 5, -2> +position=< 51926, 51853> velocity=<-5, -5> +position=<-51543, -20564> velocity=< 5, 2> +position=< 20883, -20558> velocity=<-2, 2> +position=<-41166, 20816> velocity=< 4, -2> +position=< 51936, 41511> velocity=<-5, -4> +position=<-10115, -10220> velocity=< 1, 1> +position=< 31210, -51593> velocity=<-3, 5> +position=<-10115, -41248> velocity=< 1, 4> +position=< 31233, -20559> velocity=<-3, 2> +position=< 20921, -51598> velocity=<-2, 5> +position=<-41185, -30912> velocity=< 4, 3> +position=<-51531, -51600> velocity=< 5, 5> +position=< 10543, -10220> velocity=<-1, 1> +position=< 51924, -30912> velocity=<-5, 3> +position=<-30821, 20813> velocity=< 3, -2> +position=< 10545, -51602> velocity=<-1, 5> +position=<-10126, -41248> velocity=< 1, 4> +position=<-30829, -30907> velocity=< 3, 3> +position=<-51495, 20817> velocity=< 5, -2> +position=< 10548, -41256> velocity=<-1, 4> +position=< 41578, -51599> velocity=<-4, 5> +position=<-41203, -51602> velocity=< 4, 5> +position=< 31253, -10214> velocity=<-3, 1> +position=<-20457, -30908> velocity=< 2, 3> +position=<-10147, 51848> velocity=< 1, -5> +position=<-51502, -20558> velocity=< 5, 2> +position=< 41615, -10222> velocity=<-4, 1> +position=<-41182, -30906> velocity=< 4, 3> +position=< 20912, -10216> velocity=<-2, 1> +position=< 20869, -20566> velocity=<-2, 2> +position=< 10555, 41510> velocity=<-1, -4> +position=<-30835, 10472> velocity=< 3, -1> +position=<-20487, 41505> velocity=< 2, -4> +position=<-20511, -41249> velocity=< 2, 4> +position=< 20913, 20822> velocity=<-2, -2> +position=<-30824, 10469> velocity=< 3, -1> +position=< 10567, 10472> velocity=<-1, -1> +position=< 31238, 31166> velocity=<-3, -3> +position=<-41186, -10219> velocity=< 4, 1> +position=<-41169, -51602> velocity=< 4, 5> +position=< 51947, -20564> velocity=<-5, 2> +position=< 41562, -10219> velocity=<-4, 1> +position=<-10155, 20821> velocity=< 1, -2> +position=< 20884, -51598> velocity=<-2, 5> +position=< 20907, 41505> velocity=<-2, -4> +position=< 10579, 51848> velocity=<-1, -5> +position=< 41586, -30905> velocity=<-4, 3> +position=<-30859, -41248> velocity=< 3, 4> +position=< 20864, 10475> velocity=<-2, -1> +position=< 20876, -30908> velocity=<-2, 3> +position=< 10543, -41248> velocity=<-1, 4> +position=< 31246, -51598> velocity=<-3, 5> +position=<-30833, 41503> velocity=< 3, -4> +position=<-20473, -51595> velocity=< 2, 5> +position=< 31265, -30904> velocity=<-3, 3> +position=<-51493, 31158> velocity=< 5, -3> +position=< 51947, 20821> velocity=<-5, -2> +position=<-41166, -30912> velocity=< 4, 3> +position=<-30813, 41508> velocity=< 3, -4> +position=<-41198, -51601> velocity=< 4, 5> +position=<-10151, 20819> velocity=< 1, -2> +position=< 51907, 51854> velocity=<-5, -5> +position=<-10158, -41254> velocity=< 1, 4> +position=<-41170, -41249> velocity=< 4, 4> +position=< 51907, 51856> velocity=<-5, -5> +position=< 41586, -10216> velocity=<-4, 1> +position=< 31246, -20560> velocity=<-3, 2> +position=<-30826, -10217> velocity=< 3, 1> +position=< 10569, 51848> velocity=<-1, -5> +position=<-20484, -30912> velocity=< 2, 3> +position=< 10559, 41510> velocity=<-1, -4> +position=< 41555, 31167> velocity=<-4, -3> +position=< 20877, -30911> velocity=<-2, 3> +position=<-51549, 20822> velocity=< 5, -2> +position=<-51551, 51856> velocity=< 5, -5> +position=<-10163, 10476> velocity=< 1, -1> +position=<-51530, -10222> velocity=< 5, 1> +position=< 31241, 20817> velocity=<-3, -2> +position=<-51514, 20822> velocity=< 5, -2> +position=<-41155, 31158> velocity=< 4, -3> +position=< 41565, 10468> velocity=<-4, -1> +position=< 51949, 41503> velocity=<-5, -4> +position=< 20874, 10468> velocity=<-2, -1> +position=< 41611, -41253> velocity=<-4, 4> +position=<-30813, -30906> velocity=< 3, 3> +position=< 41574, 41511> velocity=<-4, -4> +position=< 51931, 51856> velocity=<-5, -5> +position=<-20508, -10220> velocity=< 2, 1> +position=< 20891, -41253> velocity=<-2, 4> +position=< 31249, 31159> velocity=<-3, -3> +position=< 41579, 31162> velocity=<-4, -3> +position=<-51527, 51853> velocity=< 5, -5> +position=<-30826, 20819> velocity=< 3, -2> +position=<-20508, 10471> velocity=< 2, -1> +position=<-20472, 10476> velocity=< 2, -1> +position=< 51924, 41507> velocity=<-5, -4> +position=<-30837, -51600> velocity=< 3, 5> +position=<-20487, 41512> velocity=< 2, -4> +position=<-51499, 41512> velocity=< 5, -4> +position=<-51508, -30910> velocity=< 5, 3> +position=<-20483, -20566> velocity=< 2, 2> +position=<-20516, -51596> velocity=< 2, 5> +position=< 20924, -30908> velocity=<-2, 3> +position=<-10144, -41257> velocity=< 1, 4> +position=<-41154, -41257> velocity=< 4, 4> +position=< 51902, -20558> velocity=<-5, 2> +position=< 41610, -10216> velocity=<-4, 1> +position=< 51917, -41248> velocity=<-5, 4> +position=<-20459, 31158> velocity=< 2, -3> +position=< 20884, 31162> velocity=<-2, -3> +position=<-20506, -30908> velocity=< 2, 3> +position=<-51533, -30903> velocity=< 5, 3> +position=<-10168, -30912> velocity=< 1, 3> +position=< 20904, 41506> velocity=<-2, -4> +position=<-51551, 31163> velocity=< 5, -3> +position=<-20500, -51595> velocity=< 2, 5> +position=< 31251, -20561> velocity=<-3, 2> +position=<-41186, -51595> velocity=< 4, 5> +position=<-20496, 31163> velocity=< 2, -3> +position=<-20458, -41257> velocity=< 2, 4> +position=< 41554, -41255> velocity=<-4, 4> +position=<-51511, 31163> velocity=< 5, -3> +position=<-51535, 20821> velocity=< 5, -2> +position=<-30853, -41249> velocity=< 3, 4> +position=< 20912, -51597> velocity=<-2, 5> +position=< 10527, -30903> velocity=<-1, 3> +position=< 41587, 41505> velocity=<-4, -4> diff --git a/src/main/resources/2018/day11.txt b/src/main/resources/2018/day11.txt new file mode 100644 index 00000000..ef1a65bf --- /dev/null +++ b/src/main/resources/2018/day11.txt @@ -0,0 +1 @@ +8141 diff --git a/src/main/resources/2018/day12.txt b/src/main/resources/2018/day12.txt new file mode 100644 index 00000000..551203dc --- /dev/null +++ b/src/main/resources/2018/day12.txt @@ -0,0 +1,34 @@ +initial state: #.#####.##.###...#...#.####..#..#.#....##.###.##...#####.#..##.#..##..#..#.#.#.#....#.####....#..# + +#.#.. => . +..### => . +...## => . +.#### => # +.###. => # +#.... => . +#.#.# => . +###.. => # +#..#. => . +##### => # +.##.# => # +.#... => . +##.## => # +#...# => # +.#.## => . +##..# => . +..... => . +.#.#. => # +#.### => # +....# => . +...#. => # +..#.# => # +##... => # +####. => # +#..## => # +##.#. => # +###.# => . +#.##. => . +..#.. => # +.#..# => . +..##. => . +.##.. => # diff --git a/src/main/resources/2018/day13.txt b/src/main/resources/2018/day13.txt new file mode 100644 index 00000000..d80900e6 --- /dev/null +++ b/src/main/resources/2018/day13.txt @@ -0,0 +1,150 @@ + /--------------------\ + /-------------------------------------------\ | | /-------------------\ + | /----------\ /-------+---------------------+-\ | | | +/--------------------------------+-------------------+----------+----+-------+-------\ | | | | | +| | | /-----+----+-------+-------+-------------+-+------------------+-------+------------\ | +| /-----+-------------------+----+-----+----+-------+-------+-------------+-+--\ | | | | +| /---------------+-----+-------------------+----+-----+----+-------+-------+-------------+-+--+\ | | | | +| | | | | | | | | /----+-------------+-+--++--------------+-------+------------+-\ | +| | | | | | | | | | | | | || | | | | | +| | | | /----+----+-----+----+-------+--+----+----------<\ | | || | | | | | +| /---+---------------+-----+--------------+----+----+-----+----+-------+--+----+-----------+-+-+--++--\ | | | | | +| /----+---+---------------+-----+--------------+----+----+-----+--<-+-------+--+\ | /---+-+-+--++--+-----------+-------+----\ | | | +| | | | | | | | | | | | || | | | | | || | | | | | | | +| | | | | | | | | | | /-+--++---+-----\ | | | | || | | | | | | | +| | | | | | | | | | | | | || | | | | | | || | |/------+----+-------+-+---\| +| | | /+---------------+-----+--------------+--\ | | |/---+-----+-+-\|| | | | | | | || | || | | | | || +| | /-+--++---------------+-----+--------------+--+-+----+-----++---+-----+-+-+++---+---\ | | | \-+--++--+-----------/| | | | | || +| | | | || /---------+-----+-\ /-----+--+-+-\ | || \-----+-+-+++---+---+-+-+---+---/ || | /------+------+----+-------+\| || +| | | | || | | | | /-+-----+--+-+-+--+-----++---------+-+-+++---+---+-+-+---+------++--+-----+------+-\ | | ||| || +| | | | || | | | | | | | | | |/-+-----++-------\ | | ||| | | | | | || | | | | | | ||| || +| | | | || | \-----+-+----+-+-----+--+-+-++-+-----++-------+-+-+-+++---+---+-+-+---+------/| | | | | /-+----+-----\ ||| || +| | | | || | | | | | |/-+-+-++-+-----++-------+-+-+-+++---+---+-+-+---+-----\ | |/----+------+-+\ | | | | ||| || +| | | | || | | | | | || | | || | || | | | ||| | | | | | | |/-++----+------+-++-+-+----+-----+-+++--\|| +| | | | || | | | | | || | | || | || | | | ||| | | | | | | || || | | || | | | | ||| ||| +| | | | || | /-----+-+----+\| || | |/++-+----\|| | | | ||| | | | | | | || || | | || | | | | ||| ||| +| | | |/-++-----+---------+----\| |/---+++-----++-+-++++-+----+++-------+-+-+-+++---+---+-+-+---+-----+-++-++----+------+-++-+\| | | ||| ||| +| | | || || | | || || ||| || | |||| | ||| | | | ||| | | | \---+-----+-++-++----+------+-++-+++----/ | ||| ||| +| | | || || | | || || ||| /--++-+-++++-+----+++-------+-+-+\||| | | | | | || || | | || ||| | ||| ||| +| | | || || | | || || ||| | || | ||||/+----+++-------+-+-+++++---+---+-+-----+-----+-++-++----+------+-++-+++-\ | ||| ||| +| | | || || | | || || ||| /+--++-+-++++++----+++-------+-+-+++++---+---+-+-----+-----+-++-++----+------+-++-+++-+---\ | ||| ||| +| | | || || | | || || ||| || || | |||||| ||| | | ||||| | | | /--+-----+-++-++----+------+-++-+++-+---+-\ | ||| ||| +| | | || || | | || || ||\-++--++-+-++/||| ||| | | ||||| /+---+-+--+--+-----+-++-++----+------+-++-+++-+---+-+--+\||| ||| +| | /+-++-++-----+\ | || || || || || | || ||| ||| | \-+++++--++---+-/ | | | || || | | || ||| | | | ||||| ||| +| | || || || || | || || || || || | || ||| ||| /---+---+++++--++---+\ | | | || || | | || ||| | | | ||||| ||| +| | || || || || | || || \+--++--++-+-++-+++----+++---+---+---+++++--++---++---+--+-----+-++-++----+------+-/| ||| | | | ||||| ||| +| | || || || || /------+----++\|| | || || | || ||| ||| | | ||||| || || | | /-+-++-++----+------+--+\||| | | | ||||| ||| +| | || || || /---++-+------+----+++++----+--++--++-+-++-+++----+++---+---+---+++++--++---++---+--+---+-+-++-++---\| | ||||| | | | ||||| ||| +| | || || || | || | \----+++++----/ || || | ||/+++----+++---+---+---+++++--++---++---+--+---+-+-++-++--\|| | ||||| | | | ||||| ||| +| | || || || |/--++-+-----------+++++-------++--++-+-++++++----+++---+---+---+++++--++---++---+--+-\ | | || || ||| | ||||| | | | ||||| ||| +| | || || || || || | |||||/------++--++-+-++++++----+++---+---+---+++++--++---++---+--+-+-+-+-++-++--+++------+--+++++-+---+\| ||||| ||| +| | || || || || || | |||||| /---++--++-+-++++++----+++---+---+---+++++--++---++---+--+-+-+-+-++-++\ ||| | ||||| | ||| ||||| ||| +| | ||/++-++-++--++-+-\ ||||||/-+---++--++-+-++++++----+++---+---+---+++++--++---++---+--+-+-+-+-++-+++-+++------+--+++++\| ||| ||||| ||| +| | ||||| || || || |/+---------+++++++-+-\ || || | |||||| /-+++---+---+---+++++--++---++---+--+-+-+-+-++-+++-+++\ | ||||||| ||| ||||| ||| +| | |\+++-++-++--++-+++---------+++++++-+-+-++--++-+-++++++--+-+++---+---+---+++++--++---/| | | | | | || ||| |||| | ||||||| ||| ||||| ||| +| | | ||| || || || ||| ||||||| | | || \+-+-++++++--+-+++---+---+---+++++--++----+---+--/ | | | || |\+-++++-----+--/|||||| ||| ||||| ||| +| | | ||| || || /++-+++---------+++++++-+-+-++---+-+-++++++--+-+++---+---+---+++++--++----+---+--\ | | | || | | |||| | |||\++---+++--+++++--++/ +| | | ||| \+-++-+++-+++---------+++++++-+-+-++---+-/ ||\+++--+-+++---+---+---+++++--++----+>--+--+-+-+-+-++-+-+-/||| | ||| || ||| ||||| || +| | | ||| | \+-+++-+++---------+++++++-+-+-++---+---++-+++--+-+++---+---+---+++++--++----+---+--+-+-+-+-++-+-+--/|| | ||| || ||| ||||| || +| | | ||| | | ||| ||| ||||||| | | || | || ||| | ||| | | ||||| || |/--+--+-+-+-+-++-+-+---++-----+---+++-++---+++--+++++--++-\ +| | | ||| | | ||| ||| ||||||| | | || | || ||| | ||| | |/--+++++--++----++--+--+-+-+-+-++-+-+---++-----+---+++-++---+++-\||||| || | +| | | ||| | | ||| ||| ||||||| | | || | || ||| | ||| | /-++--+++++--++----++--+--+-+-+-+-++-+-+---++---\ | ||| || ||| |||||| || | +| | | ||| | | ||| ||| ||||||| | | || | /++-+++--+-+++---+-+-++--+++++--++---\|| | | |/+-+-++-+-+---++---+-+---+++-++---+++-++++++--++\| +| | | ||| | | ||| ||| ||||||| | | || | ||| ||| | ||| | | || ||||| || ||| | | ||| | || | | || | | ||| || ||| |||||| |||| +| | | ||| | | ||| ||| ||||||| | | || | ||| ||| | ||| | | || ||||| || /+++--+--+-+++-+-++-+-+---++---+-+---+++-++---+++\|||||| |||| +| | | \++--+--+-+++-++/ ||||||| | | ||/--+--+++-+++--+-+++---+-+-++--+++++--++--++++--+--+-+++-+-++-+-+---++---+-+---+++-++\ |||||||||| |||| +| | | || | | ||| || ||||||| | | ||| | |\+-+++--+-+/| | | || ||||| || ||||/-+--+-+++-+-++-+-+---++---+\| ||| ||| |||||||||| |||| +| | | || | | \++-++----------+++++++-+-+-+++--+--+-+-+++--+-+-+---+-+-++--+++++--++--+++++-+--/ ||| | || | | || ||| ||| ||| |||||||||| |||| +| | | || | | ||/++----------+++++++-+-+-+++--+--+-+-+++--+-+-+---+-+-++--+++++--++-\||||| | ||| | || | | ||/--+++---+++-+++--++++++++++-\|||| +| | | || | | ||||| /-------+++++++-+-+-+++--+--+-+-+++--+-+-+---+-+\|| ||||| || |||||| | ||| | || | | ||| ||| ||| ||| |||||||||| ||||| +| | | || | | ||||| | ||||||| | | ||| | | | ||| | | | | |||| ||||| || |||||| | ||| | || | |/--+++--+++-\ ||| ||| |||||||||| ||||| +| |/+--++--+--+--+++++--+---\ |||||||/+-+-+++--+--+-+-+++-\^ | | | |||| ||||| || |||||| | ||| | || | || ||| ||| | ||| ||| |||||||||| ||||| +| ||| || |/-+--+++++--+---+---+++++++++-+-+++--+--+-+-+++-++-+-+---+-++++--+++++--++-++++++-+----+++-+-++-+-++--+++\ ||| | ||| ||| |||||||||| ||||| +| ||\--++--++-+--+/||| | | /-+++++++++-+-+++--+--+\|/+++-++-+-+---+-++++--+++++--++-++++++-+----+++-+-++-+-++--++++-+++-+-+++-+++--++++++++++\||||| +| || || \+-+--+-+++--+---+-+-+++++++++-+-+++--+--+++++++-++-+-+---+-++++--+++++--++-++++++-+----+++-+-/| | || |||| ||| | ||| ||| |||||||||||||||| +| || || | | | ||| | | | |||||||||/+-+++--+\ ||||||| || | | | |||\--+++++--++-++++++-+----+++-+--+-+-++--++++-+++-+-+++-+++--++++/||||||||||| +| || || | | | ||| | | | ||||||||||| ||| || ||||||| || | | |/+++---+++++--++-++++++-+----+++-+--+-+\|| |||| ||| | ||| ||| |||| ||||||||||| +| ||/--++---+-+--+-+++--+--\| | ||||||||||| ||| || ||||||| || | | \++++---+++++--++-+++/|| | ||| | | |||| |||| ||| | ||| ||| |||| ||||||||||| +| ||| || | | | ||| | /++-+-+++++++++++-+++--++-+++++++-++-+-+----++++---+++++--++-+++-++-+----+++-+\ | |||| |||| ||| | ||| ||| |||| ||||||||||| +| ||| || | | | ||| | ||| | ||||||||||| ||| || ||||||| || | | |||| ||||| || ||| || |/---+++-++-+-++++--++++-+++-+-+++-+++\ |||| ||||||||||| +| ||v || | | | ||| | ||| |/+++++++++++-+++--++-+++++++-++-+-+----++++---+++++--++-+++-++-++---+++-++-+-++++\ |||| ||| | ||| |||| |||| ||||||||||| +| |||/-++---+>+--+-+++--+-+++-+++++++++++++-+++--++-+++++++-++-+-+----++++---+++++--++-+++-++-++\ ||| || | ||||| |||| ||| | ||| |||| |||| ||||||||||| +| |||| || | | | ||| | ||| ||||||||||||| |v| || ||||||| || | | /--++++---+++++--++-+++-++-+++--+++-++-+\||||| |v|| ||| | ||| |||| |||| ||||||||||| +| |||| || | | | ||| | ||| ||||||||||||| ||| || ||||||| || | | | |||| ||||| || ||| || ||| ||| || ||||||| |||| ||| | ||| |||| |||| ||||||||||| +| |||| || | | | ||\--+-+++-++++++++++++/ ||| || ||||||| || | | | |||| ||||| || ||| || ||| ||| || ||||||| |||| ||| | ||| |||| |||| ||||||||||| +| |||| || | | | || | ||| |||||||||||| ||| || ||||||| || | | | |||| ||||| || ||| || ||| ||| || ||||||| |||| ||| | ||| |||| |||| ||||||||||| +| |||| || | | | |\---+-+++-++++/||||||| ||| || ||||||| || | | | |||| ||||| || ||| || ||| ||| || ||||||| |||| ||| | ||| |||| |||| ||||||||||| +| |||| || /-+-+--+-+----+-+++\|||| ||||||| ||| || ||||||\-++-+-+-+--++++---+++++--++-+++-++-+++--+++-++-+++++++-++++-+++-+-+++-++++-++++-++/|||||||| +| |||| || | | | | | | |||||||\-+++++++--+++--++-++++++--++-+-+-+--++++---/|||| || ||| || ||| ||| || ||||||| |||| ||| | ||| |||| |||| || |||||||| +| |||| || | | | | | /--+-+++++++\ ||||||| ||| || |||||| || | | | |||| |||| || ||| || ||| ||| || ||||||| |||| ||| | ||| |||| |||| || |||||||| +| |||| || | | | | | | | |||||||| ||||||| ||\--++-++++++--++-+-+-+--++++----++++--++-+++-++-+++--+++-++-+++++++-++++-+++-+-+++-++/| |||| || |||||||| +\-++++-++-+-+-+--+-+-+--+-++++++++-+++++++--++---++-++++++--++-+-+-+--++++----++++--+/ ||| || ||| ||| || \++++++-++++-+++-+-+++-++-+-++++-++-++++/||| + |||| || | | | | | | | |||||||| |\+++++--++---++-++++++--++-+-+-+--++++----++++--+--+++-++-+++--+++-++--++++++-++++-+++-+-++/ || | |||| || |||| ||| + |||| \+-+-+-+--+-+-+--+-++++++++-+-+++++--++---++-++++++--++-+-+-+--++++----++++--+--+++-++-+++--+++-++--+/|||| |||| ||| | || || | |||| || |||| ||| + |||| | | | | | | | | \+++++++-+-+++++--++---++-++++++--++-+-+-+--++++----++++--+--+++-++-+++--+++-+/ | |||| |||| ||| | || || | |||| || |||| ||| + |||| | | | | | | | | ||||||| | ||||| || ||/++++++--++-+-+-+--++++----++++--+--+++\|| ||| ||\-+---+-++++-++++-+++-+-/| || | |||| || |||| ||| + |||| | | | | | |/+--+--+++++++-+\||||| || ||||||||| || | | | |||| /--++++--+--++++++-+++--++--+-\ | |||| |||| ||\-+--+--++-+-++++-++-++++-/|| + ||\+--+-+-+-+--+-+++--+--/|||||| ||||||| || ||||||||| || | | | |||| | |||| \--++++++-+++--++--+-+-+-++++-++++-++--+--+--++-+-++++-+/ |||| || + || | | | | | | ||| | |||||| ||||||| || ||||||||| || | | | |||| | |||| |||||| \++--++--+-+-+-++++-++++-++--+--+--++-+-++/| | |||| || + || | | | | | | ||| | |||||| ||||||| || ||||||\++--++-+-+-+--++++-+--++++-----++++++--++--++--+-+-+-++++-++++-++--+--+--++-+-++-+-+--++/| || + || | | | | | | ||| | /-++++++-+++++++--++---++++++-++--++-+-+-+--++++-+--++++-----++++++--++--++--+-+-+-++++-++++-++--+--+--++-+\|| | | || | || + || | | | | | | ||| | | |||||| ||||||| || |||||| || || | | | |||| | |||| /--++++++--++--++--+-+-+-++++-++++-++-\| | || |||| | | || | || + || | | | | | | ||| | | |||||| ||||||\--++---+/|^|| || || | | | |||| | |||| | |||||| || || | | | |||| |||| || || | || |||| | | || | || + ||/+--+-+-+-+--+-+++--+\| |||||| |||||| || | |||| || ||/+-+-+--++++-+--++++\ | |||||| || || | | | |||| |||| || || | || |||| | | || | || + |||| | | | | | ||| ||| |||||| |||||| || /-+-++++-++--++++-+-+--++++-+--+++++-+--++++++--++--++--+-+-+-++++-++++-++-++--+--++\|||| | | || | || + \+++--+-+-+-+--+-+++--+++-++++++-++++++---++-+-+-++++-++--++++-+-+--++++-+--+++/| | |||||| || || | | | |||| |||| || || | ||||||| | | || | || + ||| | | | |/-+-+++--+++-++++++-++++++---++-+-+-++++-++--++++-+-+--++++-+--+++-+-+--++++++--++--++-\| | | |||| |||| || || | ||||||| | | || | || + |||/-+-+-+-++-+-+++--+++\|||||| |||||| || | | |||| || |||| | | |||| | ||| | | |||||| || || || | | |||| |||| || || | ||||||| | | || | || + |||| | | | || | ||| |||||||||| |||||| || | | |||| || |||| | | |||| | ||\-+-+--++++++--++--++-++-+-+-++++-++++-++-++--+--+++++++-+-+--+/ | || + |||| |/+-+-++-+-+++--++++++++++-++++++---++-+-+-++++-++--++++-+-+--++++-+--++--+-+->++++++--++--++-++\| | |||| |||| || || | ||||||| | | | | || + |||| ||| | || | ||| |||||||||| |||||| || | | |||| || |||| | | |||| | || | | /++++++--++--++-++++-+-++++-++++-++-++--+--+++++++-+-+--+--+\ || + |||| ||| | || | ||| |||||||\++-++++++---++-+-+-++++-++--++++-+-+--++++-+--++--+-+-+++++++--++--++-++++-+-+++/ |||| || || | ||||||| | | | || || + |\++-+++-+-++-+-+++--+/||||| || |||||| || | | \+++-++--++++-+-+--++++-+--++--+-+-++++/|| || || |||| | ||| |||| || || | ||||||| | | | || || + | || ||| | || | ||| | ||||| || |||||| || | | ||| || |||| | | \+++-+--++--+-+-++++-++--++--++-++++-+-/|| |||| || || | ||||||| | | | || || + | || ||| | || | ||\--+-+++++-+/ |||||| || | | ||| |\--++++-+-+---+++-+--++--+-+-++++-++--++--++-++++-+--++--++++-++-++--+--+/||||| | | | || || + | \+-+++-+-++-+-++---+-+++++-+--++++++---++-+-+--+++-+---++++-+-+---+++-+>-++--+-+-++++-++--+/ || |||| | || |||| || || | | ||||| | | | || || + | | ||| | || \-++---+-+++++-+--/||||| || | | ||| | |||| | \---+++-+--++--+-+-++++-++--+---++-++++-/ || |||| || || | | ||||| | | | || || + | | ||| | || || | ||||| | ||||| || | | \++-+---++++-+-----+++-+--++--+-+-+++/ || | || |||| || \+++-++-++--+--+-+++++-+-+--/ || || + | | ||| | || /++---+-+++++-+---+++++---++\| | /-++-+---++++-+-----+++-+--++--+-+-+++--++--+---++-++++----++---+++-++-++--+--+-+++++-+-+-----++\|| + | |/+++-+-++--+++---+-+++++-+---+++++--\\+++-+-+-++-+---++++-+-----+++-+--++--+-+-+++--++--+---++-++++----++---+++-++-++--+--+-+++/| | | ||||| + | ||\++-+-++--+++---+-+++++-/ ||||| | ||| | | || | |||| | ||| | || | | ||| || | || |||| || |||/++-++--+--+-+++-+-+-+---\ ||||| + | || || | || ||| | ||||| ||||\--+-+++-+-+-++-+---++++-+-----+++-+--++--+-+-+++--++--+---++-++++----/| ||||||/++--+--+-+++-+-+-+-\ | ||||| + | || || | || ||| | ||||| |||| | ||| | | v| | |||| | ||| | || | | ||| || | |\-++++-----+---+++++++++--+--+-+++-+-+-+-+-+-+++/| + | || || |/++--+++---+-+++++-----++++---+-+++-+-+-++-+--\|||| | /-+++-+--++--+-+-+++--++--+---+--++++--\ | ||||||||| | | ||| | | | | | ||| | + | || || |||| ||| | ||||| |||| | ||| | | || | ||||| \---+-+++-+--+/ | | ||| || | | |||| | | ||||||||| | | ||| | | | | | ||| | + | || || |||| ||| | ||||| |||| | ||| | | || | ||||| /-+-+++-+--+---+-+-+++--++--+---+--++++\ | | ||||||||| | | ||| | | | | | ||| | + | || || |||| ||| \-+++++-----++++---+-+++-+-+-++-+--+++++---+-+-+/| | | | \-+++--++--+---+--+++++-+--+---+++++++/| | | ||| | | | | | ||| | + | || || |||| ||| \++++-----++++---+-+++-+-+-++-+--+++++---+-+-+-+-+--+---+---+++--++--+---+--+++++-+--+---+++++++-+--+--+-++/ | | | | | ||| | + | || || |||| ||| |||| |||| | ||| | \-++-+--+++++---+-+-+-+-+--+---+---+++--++--+---+--+++++-+--+---+++++++-+--+--+-++--+-+-+-+-+-++/ | + | || || |||| |\+------++++-----++++---+-+++-+---++-+--+++++---+-+-+-+-+--+---+---+/| || | | ||||| | | ||||||| | | | || | | | | | || | + | || || |||| | | |||| |||| | ||| | || | ||||| | | | | | | | | | || \---+--+++++-+--+---+++++++-+--+--+-+/ | | | | | || | + | || \+-++++--+-+------++++-----++++---+-+++-+---++-+--+++++---+-+-+-+-+--+---+---+-+--++------+--++/|| | | |\+++++-+--+--+-+---+-+-+-+-+-/| | + \--++--+-++++--+-+------+/|| |||| | ||| | || | ||||| | | | | | | | | | || | || || | | | ||||| | | | | | | | | | | | + || | |||| | | | || |||| | ||| \---++-+--+++++---+-+-+-+-+--+---+---+-+--++------+--+/ || | | | |\+++-+--+--+-+---+-+-+-+-/ | | + || | |||| | | | |\>----++++---+-+++-----/| | ||||| | | | | | | | | | || | | || | | | | ||| | \--+-+---+-+-/ | | | + || | |||| | | | | |||| | ||| \-+--++++/ |/+-+-+-+--+---+---+-+--++---\ | | || | | | | ||| | | | | | | | | + || | |||| | | | | |||| | ||| \--++++----+++-+-/ | | | | | || | | | || | | | | ||| | | | | | | | | + |\--+-++++--+-+------+-+------++++---/ ||| |||| ||| | | | | | \--++---+--+--+--++-+--+---+-+-+++-+-----+-+---+-/ | | | + | | |||| | | | | |||| ||| |||| ^|| | | | | | || | | | || | | | | ||| | | | | | | | + | \>++++--+-+------+-/ |||| /--+++-----------++++----+++-+--\| | | | || | | | || | | | | ||| | | | | | | | + | |||| | | | |||| | ||| |||| ||| | |\--+---+---+----++---+--+--+--/| | | | | ||| | | | | | | | + | |||| | | | |||| | \++-----------++++----+++-+--+---/ | | || | | | | | | | | ||| | | | | | | | + | |||\--+-+------+--------++++--+---++-----------++++----+++-+--+-------+---+----++---+--+--/ | | | | | ||| | | | | | | | + | ||| | | | |||| | || |||| ||| | | | \----++---+--+------+-+--+---+-+-+++-+-----+-+---+-----+----/ | + \-----+++---+-+------/ |\++--+---++-----------++++----+++-+--+-------+--------++---+--+------+-+--+---+-+-+++-+-----+-+---/ | | + ||| | | | || | || |||| |\+-+--+-------+--------++---/ | | | | | | ||| | | | | | + ||| | | | || | |\-----------++++----+-+-+--+-------+--------++------+------+-+--+->-+-+-+++-+-----+-/ | | + ||| | | | || | | |||| | | | | | |\------+------+-+--+---+-+-+/| | | | | + /----------+++---+-+-\ | || | | |||| | \-+--+-------+--------+-------+------+-/ | | | | | | | | | + | ||\---+-+-+-------------+-++--+---+------------++++----+---+--+-------+--------+--->---/ | | | | | \-+-----+-----------/ | + | || | | | | || | | |||| | | | | \--------------+----+---+-+-+---+-----+-------------------/ + | || | \-+-------------/ || | | |||| | | | | | | | | | | | + | || \---+---------------++--+---/ |||| | | | | | | | | | | | + | |\--------+---------------++--+----------------/||| | \--+-------+-----------------------+----+---+-+-/ | | + | | | || | ||| | | | | \---+-+-----/ | + | | | || \-----------------+++----+------/ | | | | | + | | | || ||| \--------------+-----------------------/ | | | + | | | || |\+-------------------+--------------------------------/ | | + | | | \+--------------------+-+-------------------+----------------------------------+-----------/ + \----------+---------/ \--------------------/ \-------------------/ | + \--------------------------------------------------------------------------------------------------------/ diff --git a/src/main/resources/2018/day14.txt b/src/main/resources/2018/day14.txt new file mode 100644 index 00000000..d655e515 --- /dev/null +++ b/src/main/resources/2018/day14.txt @@ -0,0 +1 @@ +765071 diff --git a/src/main/resources/2018/day15.txt b/src/main/resources/2018/day15.txt new file mode 100644 index 00000000..a2c6869a --- /dev/null +++ b/src/main/resources/2018/day15.txt @@ -0,0 +1,32 @@ +################################ +#############..################# +#############..#.############### +############G..G.############### +#############....############### +##############.#...############# +################..############## +#############G.##..#..########## +#############.##.......#..###### +#######.####.G##.......##.###### +######..####.G.......#.##.###### +#####.....#..GG....G......###### +####..###.....#####.......###### +####.........#######..E.G..##### +####.G..G...#########....E.##### +#####....G.G#########.#...###### +###........G#########....####### +##..#.......#########....##.E.## +##.#........#########.#####...## +#............#######..#.......## +#.G...........#####........E..## +#....G........G..G.............# +#..................E#...E...E..# +#....#...##...G...E..........### +#..###...####..........G###E.### +#.###########..E.......######### +#.###############.......######## +#################.......######## +##################....#..####### +##################..####.####### +#################..#####.####### +################################ diff --git a/src/main/resources/2018/day16.txt b/src/main/resources/2018/day16.txt new file mode 100644 index 00000000..f2d279ac --- /dev/null +++ b/src/main/resources/2018/day16.txt @@ -0,0 +1,3938 @@ +Before: [3, 0, 0, 1] +0 3 0 2 +After: [3, 0, 1, 1] + +Before: [2, 0, 0, 2] +4 0 3 1 +After: [2, 1, 0, 2] + +Before: [0, 1, 1, 1] +14 0 0 2 +After: [0, 1, 0, 1] + +Before: [3, 0, 1, 1] +11 0 0 3 +After: [3, 0, 1, 1] + +Before: [1, 2, 2, 0] +9 0 2 1 +After: [1, 0, 2, 0] + +Before: [0, 2, 3, 3] +11 2 2 3 +After: [0, 2, 3, 1] + +Before: [2, 0, 1, 2] +4 0 3 2 +After: [2, 0, 1, 2] + +Before: [2, 0, 2, 2] +6 3 3 3 +After: [2, 0, 2, 0] + +Before: [0, 1, 2, 2] +1 1 2 3 +After: [0, 1, 2, 0] + +Before: [0, 3, 0, 0] +14 0 0 0 +After: [0, 3, 0, 0] + +Before: [2, 2, 0, 2] +4 0 3 3 +After: [2, 2, 0, 1] + +Before: [2, 3, 2, 1] +13 2 2 0 +After: [1, 3, 2, 1] + +Before: [2, 1, 1, 2] +4 0 3 1 +After: [2, 1, 1, 2] + +Before: [1, 2, 2, 1] +9 0 2 0 +After: [0, 2, 2, 1] + +Before: [2, 2, 0, 2] +4 0 3 1 +After: [2, 1, 0, 2] + +Before: [1, 0, 2, 3] +9 0 2 1 +After: [1, 0, 2, 3] + +Before: [1, 1, 3, 2] +10 1 3 1 +After: [1, 0, 3, 2] + +Before: [0, 2, 1, 3] +14 0 0 1 +After: [0, 0, 1, 3] + +Before: [2, 1, 2, 1] +11 0 0 1 +After: [2, 1, 2, 1] + +Before: [1, 1, 2, 2] +3 2 3 1 +After: [1, 2, 2, 2] + +Before: [3, 0, 2, 3] +8 1 0 1 +After: [3, 0, 2, 3] + +Before: [1, 3, 2, 2] +9 0 2 2 +After: [1, 3, 0, 2] + +Before: [2, 0, 3, 2] +4 0 3 2 +After: [2, 0, 1, 2] + +Before: [2, 1, 1, 2] +10 1 3 1 +After: [2, 0, 1, 2] + +Before: [2, 1, 2, 3] +1 1 2 2 +After: [2, 1, 0, 3] + +Before: [3, 1, 2, 1] +1 1 2 3 +After: [3, 1, 2, 0] + +Before: [2, 2, 2, 3] +5 2 2 1 +After: [2, 2, 2, 3] + +Before: [2, 0, 2, 2] +4 0 3 2 +After: [2, 0, 1, 2] + +Before: [2, 3, 1, 1] +11 0 0 0 +After: [1, 3, 1, 1] + +Before: [2, 3, 2, 2] +4 0 3 1 +After: [2, 1, 2, 2] + +Before: [3, 1, 3, 0] +0 1 0 1 +After: [3, 1, 3, 0] + +Before: [3, 1, 2, 3] +12 3 0 3 +After: [3, 1, 2, 1] + +Before: [1, 0, 3, 1] +6 3 3 1 +After: [1, 0, 3, 1] + +Before: [0, 1, 2, 3] +1 1 2 3 +After: [0, 1, 2, 0] + +Before: [1, 2, 1, 3] +2 1 3 1 +After: [1, 0, 1, 3] + +Before: [1, 2, 2, 3] +9 0 2 2 +After: [1, 2, 0, 3] + +Before: [3, 3, 3, 2] +11 0 2 1 +After: [3, 1, 3, 2] + +Before: [2, 1, 0, 2] +10 1 3 3 +After: [2, 1, 0, 0] + +Before: [3, 3, 3, 3] +5 3 3 0 +After: [3, 3, 3, 3] + +Before: [0, 3, 2, 0] +13 0 0 0 +After: [1, 3, 2, 0] + +Before: [3, 0, 2, 2] +3 2 3 3 +After: [3, 0, 2, 2] + +Before: [1, 3, 2, 1] +9 0 2 1 +After: [1, 0, 2, 1] + +Before: [1, 1, 2, 3] +1 1 2 0 +After: [0, 1, 2, 3] + +Before: [1, 1, 0, 2] +15 1 0 1 +After: [1, 1, 0, 2] + +Before: [0, 1, 1, 3] +2 2 3 3 +After: [0, 1, 1, 0] + +Before: [3, 1, 3, 3] +0 3 0 3 +After: [3, 1, 3, 3] + +Before: [0, 0, 3, 3] +14 0 0 3 +After: [0, 0, 3, 0] + +Before: [2, 1, 2, 2] +1 1 2 2 +After: [2, 1, 0, 2] + +Before: [2, 1, 0, 2] +4 0 3 0 +After: [1, 1, 0, 2] + +Before: [2, 1, 2, 1] +7 3 2 0 +After: [1, 1, 2, 1] + +Before: [3, 1, 2, 2] +10 1 3 2 +After: [3, 1, 0, 2] + +Before: [3, 1, 1, 3] +0 1 0 2 +After: [3, 1, 1, 3] + +Before: [3, 0, 2, 1] +7 3 2 0 +After: [1, 0, 2, 1] + +Before: [2, 2, 0, 2] +4 0 3 0 +After: [1, 2, 0, 2] + +Before: [0, 3, 3, 3] +13 3 3 0 +After: [1, 3, 3, 3] + +Before: [2, 1, 2, 3] +5 3 3 3 +After: [2, 1, 2, 3] + +Before: [1, 1, 2, 1] +7 3 2 0 +After: [1, 1, 2, 1] + +Before: [3, 0, 1, 3] +2 2 3 2 +After: [3, 0, 0, 3] + +Before: [0, 2, 2, 1] +14 0 0 2 +After: [0, 2, 0, 1] + +Before: [0, 3, 3, 1] +14 0 0 2 +After: [0, 3, 0, 1] + +Before: [0, 1, 2, 2] +3 2 3 0 +After: [2, 1, 2, 2] + +Before: [0, 3, 2, 0] +14 0 0 1 +After: [0, 0, 2, 0] + +Before: [0, 1, 2, 2] +10 1 3 0 +After: [0, 1, 2, 2] + +Before: [1, 3, 2, 1] +7 3 2 1 +After: [1, 1, 2, 1] + +Before: [1, 0, 2, 3] +9 0 2 3 +After: [1, 0, 2, 0] + +Before: [0, 3, 2, 2] +6 3 3 0 +After: [0, 3, 2, 2] + +Before: [0, 0, 0, 3] +13 3 3 0 +After: [1, 0, 0, 3] + +Before: [2, 0, 2, 2] +3 2 3 0 +After: [2, 0, 2, 2] + +Before: [0, 0, 2, 2] +3 2 3 3 +After: [0, 0, 2, 2] + +Before: [2, 2, 2, 1] +7 3 2 0 +After: [1, 2, 2, 1] + +Before: [3, 3, 1, 3] +0 3 0 2 +After: [3, 3, 3, 3] + +Before: [1, 1, 1, 1] +15 1 0 3 +After: [1, 1, 1, 1] + +Before: [1, 2, 2, 0] +9 0 2 3 +After: [1, 2, 2, 0] + +Before: [2, 2, 2, 1] +12 2 0 2 +After: [2, 2, 1, 1] + +Before: [2, 1, 2, 2] +1 1 2 0 +After: [0, 1, 2, 2] + +Before: [1, 0, 2, 2] +5 2 2 2 +After: [1, 0, 2, 2] + +Before: [0, 0, 2, 2] +3 2 3 1 +After: [0, 2, 2, 2] + +Before: [0, 1, 0, 2] +10 1 3 1 +After: [0, 0, 0, 2] + +Before: [3, 1, 1, 3] +2 2 3 1 +After: [3, 0, 1, 3] + +Before: [0, 2, 1, 0] +8 0 1 3 +After: [0, 2, 1, 0] + +Before: [1, 1, 3, 3] +2 1 3 0 +After: [0, 1, 3, 3] + +Before: [0, 0, 2, 2] +14 0 0 0 +After: [0, 0, 2, 2] + +Before: [1, 2, 2, 3] +9 0 2 3 +After: [1, 2, 2, 0] + +Before: [2, 2, 1, 3] +5 3 3 1 +After: [2, 3, 1, 3] + +Before: [2, 2, 2, 2] +4 0 3 0 +After: [1, 2, 2, 2] + +Before: [0, 0, 3, 0] +14 0 0 3 +After: [0, 0, 3, 0] + +Before: [3, 2, 2, 0] +12 2 1 1 +After: [3, 1, 2, 0] + +Before: [2, 1, 1, 2] +4 0 3 2 +After: [2, 1, 1, 2] + +Before: [3, 2, 2, 3] +5 3 3 3 +After: [3, 2, 2, 3] + +Before: [3, 2, 2, 2] +3 2 3 0 +After: [2, 2, 2, 2] + +Before: [0, 0, 0, 1] +6 3 3 0 +After: [0, 0, 0, 1] + +Before: [1, 1, 0, 0] +15 1 0 1 +After: [1, 1, 0, 0] + +Before: [0, 0, 1, 1] +14 0 0 2 +After: [0, 0, 0, 1] + +Before: [1, 3, 0, 3] +13 3 3 1 +After: [1, 1, 0, 3] + +Before: [1, 1, 3, 1] +15 1 0 3 +After: [1, 1, 3, 1] + +Before: [1, 1, 2, 1] +5 2 2 2 +After: [1, 1, 2, 1] + +Before: [3, 2, 2, 1] +7 3 2 1 +After: [3, 1, 2, 1] + +Before: [1, 1, 2, 0] +15 1 0 2 +After: [1, 1, 1, 0] + +Before: [0, 0, 3, 0] +11 2 2 0 +After: [1, 0, 3, 0] + +Before: [0, 2, 2, 3] +12 2 1 2 +After: [0, 2, 1, 3] + +Before: [0, 0, 3, 2] +14 0 0 3 +After: [0, 0, 3, 0] + +Before: [1, 3, 2, 3] +13 2 2 2 +After: [1, 3, 1, 3] + +Before: [1, 1, 2, 1] +7 3 2 3 +After: [1, 1, 2, 1] + +Before: [0, 1, 3, 0] +8 0 1 1 +After: [0, 0, 3, 0] + +Before: [1, 0, 2, 2] +9 0 2 0 +After: [0, 0, 2, 2] + +Before: [0, 1, 0, 3] +8 0 1 3 +After: [0, 1, 0, 0] + +Before: [0, 2, 1, 3] +2 1 3 3 +After: [0, 2, 1, 0] + +Before: [2, 3, 2, 3] +11 0 0 0 +After: [1, 3, 2, 3] + +Before: [0, 0, 2, 1] +6 3 3 3 +After: [0, 0, 2, 0] + +Before: [2, 2, 3, 2] +11 0 0 0 +After: [1, 2, 3, 2] + +Before: [3, 1, 2, 1] +7 3 2 1 +After: [3, 1, 2, 1] + +Before: [0, 2, 2, 1] +7 3 2 1 +After: [0, 1, 2, 1] + +Before: [0, 1, 0, 3] +14 0 0 1 +After: [0, 0, 0, 3] + +Before: [1, 1, 2, 1] +9 0 2 3 +After: [1, 1, 2, 0] + +Before: [0, 3, 3, 3] +8 0 1 3 +After: [0, 3, 3, 0] + +Before: [0, 3, 0, 3] +13 3 3 3 +After: [0, 3, 0, 1] + +Before: [0, 2, 2, 3] +8 0 3 0 +After: [0, 2, 2, 3] + +Before: [2, 3, 2, 1] +12 2 0 0 +After: [1, 3, 2, 1] + +Before: [0, 3, 3, 0] +8 0 1 0 +After: [0, 3, 3, 0] + +Before: [1, 1, 1, 2] +10 1 3 3 +After: [1, 1, 1, 0] + +Before: [0, 3, 1, 1] +8 0 3 0 +After: [0, 3, 1, 1] + +Before: [2, 1, 3, 3] +2 1 3 0 +After: [0, 1, 3, 3] + +Before: [1, 1, 2, 3] +1 1 2 2 +After: [1, 1, 0, 3] + +Before: [3, 3, 2, 3] +2 2 3 3 +After: [3, 3, 2, 0] + +Before: [0, 1, 1, 3] +13 3 2 0 +After: [0, 1, 1, 3] + +Before: [0, 2, 0, 2] +13 0 0 1 +After: [0, 1, 0, 2] + +Before: [3, 1, 2, 3] +1 1 2 0 +After: [0, 1, 2, 3] + +Before: [0, 3, 3, 3] +11 2 2 1 +After: [0, 1, 3, 3] + +Before: [0, 2, 3, 2] +8 0 2 3 +After: [0, 2, 3, 0] + +Before: [3, 1, 1, 0] +0 1 0 0 +After: [1, 1, 1, 0] + +Before: [2, 1, 2, 1] +0 2 0 3 +After: [2, 1, 2, 2] + +Before: [0, 1, 2, 3] +13 3 3 1 +After: [0, 1, 2, 3] + +Before: [1, 0, 2, 0] +9 0 2 3 +After: [1, 0, 2, 0] + +Before: [3, 1, 2, 0] +11 0 0 0 +After: [1, 1, 2, 0] + +Before: [0, 2, 1, 0] +14 0 0 1 +After: [0, 0, 1, 0] + +Before: [2, 1, 3, 2] +4 0 3 3 +After: [2, 1, 3, 1] + +Before: [0, 2, 2, 3] +2 1 3 0 +After: [0, 2, 2, 3] + +Before: [2, 3, 3, 1] +11 2 2 1 +After: [2, 1, 3, 1] + +Before: [0, 2, 2, 1] +12 2 1 2 +After: [0, 2, 1, 1] + +Before: [2, 3, 2, 2] +3 2 3 2 +After: [2, 3, 2, 2] + +Before: [2, 3, 3, 2] +4 0 3 0 +After: [1, 3, 3, 2] + +Before: [3, 1, 3, 3] +0 3 0 0 +After: [3, 1, 3, 3] + +Before: [0, 2, 1, 3] +8 0 3 2 +After: [0, 2, 0, 3] + +Before: [2, 1, 2, 2] +3 2 3 3 +After: [2, 1, 2, 2] + +Before: [2, 2, 2, 2] +12 2 1 1 +After: [2, 1, 2, 2] + +Before: [2, 1, 2, 2] +3 2 3 1 +After: [2, 2, 2, 2] + +Before: [3, 0, 3, 3] +0 3 0 2 +After: [3, 0, 3, 3] + +Before: [1, 0, 3, 0] +11 2 2 3 +After: [1, 0, 3, 1] + +Before: [0, 2, 2, 0] +12 2 1 1 +After: [0, 1, 2, 0] + +Before: [1, 1, 0, 0] +15 1 0 2 +After: [1, 1, 1, 0] + +Before: [2, 1, 0, 2] +4 0 3 1 +After: [2, 1, 0, 2] + +Before: [1, 2, 2, 3] +2 2 3 2 +After: [1, 2, 0, 3] + +Before: [3, 1, 2, 3] +2 1 3 1 +After: [3, 0, 2, 3] + +Before: [1, 1, 1, 3] +15 1 0 2 +After: [1, 1, 1, 3] + +Before: [1, 2, 3, 0] +11 2 2 3 +After: [1, 2, 3, 1] + +Before: [1, 1, 0, 2] +15 1 0 2 +After: [1, 1, 1, 2] + +Before: [3, 1, 3, 2] +10 1 3 3 +After: [3, 1, 3, 0] + +Before: [1, 1, 2, 2] +3 2 3 0 +After: [2, 1, 2, 2] + +Before: [2, 1, 2, 1] +1 1 2 1 +After: [2, 0, 2, 1] + +Before: [3, 1, 3, 1] +0 1 0 2 +After: [3, 1, 1, 1] + +Before: [3, 1, 1, 2] +0 1 0 2 +After: [3, 1, 1, 2] + +Before: [1, 3, 3, 1] +12 2 3 2 +After: [1, 3, 0, 1] + +Before: [3, 1, 1, 2] +10 1 3 3 +After: [3, 1, 1, 0] + +Before: [1, 1, 1, 2] +10 1 3 0 +After: [0, 1, 1, 2] + +Before: [0, 1, 0, 2] +8 0 3 3 +After: [0, 1, 0, 0] + +Before: [3, 0, 0, 3] +5 3 3 1 +After: [3, 3, 0, 3] + +Before: [1, 1, 2, 2] +1 1 2 1 +After: [1, 0, 2, 2] + +Before: [0, 0, 1, 1] +6 3 3 3 +After: [0, 0, 1, 0] + +Before: [1, 2, 2, 2] +6 3 3 3 +After: [1, 2, 2, 0] + +Before: [2, 3, 2, 1] +7 3 2 3 +After: [2, 3, 2, 1] + +Before: [3, 3, 1, 1] +11 0 0 0 +After: [1, 3, 1, 1] + +Before: [3, 0, 2, 1] +7 3 2 2 +After: [3, 0, 1, 1] + +Before: [2, 0, 3, 2] +4 0 3 1 +After: [2, 1, 3, 2] + +Before: [2, 3, 2, 1] +5 2 2 1 +After: [2, 2, 2, 1] + +Before: [1, 1, 0, 2] +10 1 3 3 +After: [1, 1, 0, 0] + +Before: [0, 3, 1, 3] +8 0 2 1 +After: [0, 0, 1, 3] + +Before: [2, 0, 1, 2] +4 0 3 1 +After: [2, 1, 1, 2] + +Before: [1, 3, 3, 3] +5 3 3 0 +After: [3, 3, 3, 3] + +Before: [2, 2, 2, 2] +4 0 3 3 +After: [2, 2, 2, 1] + +Before: [3, 1, 2, 0] +1 1 2 1 +After: [3, 0, 2, 0] + +Before: [1, 3, 3, 1] +6 3 3 3 +After: [1, 3, 3, 0] + +Before: [1, 1, 3, 1] +15 1 0 2 +After: [1, 1, 1, 1] + +Before: [1, 1, 1, 1] +15 1 0 1 +After: [1, 1, 1, 1] + +Before: [1, 3, 2, 3] +5 3 3 0 +After: [3, 3, 2, 3] + +Before: [2, 0, 2, 1] +7 3 2 2 +After: [2, 0, 1, 1] + +Before: [0, 1, 1, 2] +10 1 3 2 +After: [0, 1, 0, 2] + +Before: [0, 2, 1, 3] +2 2 3 2 +After: [0, 2, 0, 3] + +Before: [1, 1, 2, 0] +1 1 2 2 +After: [1, 1, 0, 0] + +Before: [1, 0, 1, 3] +2 2 3 2 +After: [1, 0, 0, 3] + +Before: [3, 1, 0, 3] +0 3 0 3 +After: [3, 1, 0, 3] + +Before: [0, 2, 0, 1] +8 0 3 0 +After: [0, 2, 0, 1] + +Before: [3, 1, 1, 0] +11 0 0 1 +After: [3, 1, 1, 0] + +Before: [1, 2, 2, 2] +6 3 3 1 +After: [1, 0, 2, 2] + +Before: [1, 2, 1, 3] +2 2 3 3 +After: [1, 2, 1, 0] + +Before: [0, 3, 3, 2] +14 0 0 1 +After: [0, 0, 3, 2] + +Before: [2, 2, 2, 1] +7 3 2 2 +After: [2, 2, 1, 1] + +Before: [2, 2, 0, 2] +4 0 3 2 +After: [2, 2, 1, 2] + +Before: [0, 1, 1, 3] +8 0 2 1 +After: [0, 0, 1, 3] + +Before: [2, 1, 1, 2] +10 1 3 3 +After: [2, 1, 1, 0] + +Before: [3, 0, 2, 3] +13 3 2 1 +After: [3, 0, 2, 3] + +Before: [0, 3, 2, 1] +14 0 0 3 +After: [0, 3, 2, 0] + +Before: [2, 3, 2, 1] +5 2 2 0 +After: [2, 3, 2, 1] + +Before: [2, 1, 2, 3] +2 2 3 0 +After: [0, 1, 2, 3] + +Before: [0, 1, 3, 2] +10 1 3 1 +After: [0, 0, 3, 2] + +Before: [1, 1, 2, 0] +9 0 2 2 +After: [1, 1, 0, 0] + +Before: [0, 3, 0, 3] +14 0 0 0 +After: [0, 3, 0, 3] + +Before: [0, 2, 0, 3] +2 1 3 0 +After: [0, 2, 0, 3] + +Before: [0, 0, 2, 1] +13 2 2 3 +After: [0, 0, 2, 1] + +Before: [0, 1, 2, 2] +1 1 2 2 +After: [0, 1, 0, 2] + +Before: [3, 1, 3, 3] +2 1 3 3 +After: [3, 1, 3, 0] + +Before: [0, 3, 2, 0] +5 2 2 0 +After: [2, 3, 2, 0] + +Before: [1, 2, 2, 1] +9 0 2 1 +After: [1, 0, 2, 1] + +Before: [1, 3, 2, 3] +2 2 3 3 +After: [1, 3, 2, 0] + +Before: [2, 3, 0, 2] +4 0 3 3 +After: [2, 3, 0, 1] + +Before: [2, 2, 3, 1] +12 2 3 0 +After: [0, 2, 3, 1] + +Before: [0, 1, 2, 2] +13 0 0 1 +After: [0, 1, 2, 2] + +Before: [1, 0, 2, 1] +7 3 2 2 +After: [1, 0, 1, 1] + +Before: [0, 3, 3, 0] +14 0 0 2 +After: [0, 3, 0, 0] + +Before: [3, 0, 3, 1] +11 0 2 0 +After: [1, 0, 3, 1] + +Before: [1, 2, 0, 1] +6 3 3 0 +After: [0, 2, 0, 1] + +Before: [2, 1, 2, 1] +1 1 2 0 +After: [0, 1, 2, 1] + +Before: [3, 3, 2, 3] +0 3 0 0 +After: [3, 3, 2, 3] + +Before: [0, 3, 2, 3] +5 3 3 0 +After: [3, 3, 2, 3] + +Before: [0, 1, 3, 3] +14 0 0 3 +After: [0, 1, 3, 0] + +Before: [0, 0, 3, 1] +13 0 0 1 +After: [0, 1, 3, 1] + +Before: [0, 3, 2, 2] +3 2 3 2 +After: [0, 3, 2, 2] + +Before: [2, 2, 2, 3] +2 1 3 0 +After: [0, 2, 2, 3] + +Before: [2, 2, 2, 3] +12 2 1 0 +After: [1, 2, 2, 3] + +Before: [0, 0, 1, 0] +14 0 0 3 +After: [0, 0, 1, 0] + +Before: [1, 1, 1, 2] +15 1 0 0 +After: [1, 1, 1, 2] + +Before: [2, 0, 2, 1] +7 3 2 0 +After: [1, 0, 2, 1] + +Before: [3, 0, 2, 1] +11 0 0 3 +After: [3, 0, 2, 1] + +Before: [3, 1, 2, 2] +10 1 3 3 +After: [3, 1, 2, 0] + +Before: [0, 1, 2, 3] +13 3 1 0 +After: [0, 1, 2, 3] + +Before: [0, 1, 0, 3] +14 0 0 3 +After: [0, 1, 0, 0] + +Before: [0, 3, 2, 3] +8 0 2 3 +After: [0, 3, 2, 0] + +Before: [1, 3, 2, 2] +9 0 2 0 +After: [0, 3, 2, 2] + +Before: [1, 0, 2, 1] +9 0 2 1 +After: [1, 0, 2, 1] + +Before: [0, 1, 0, 3] +2 1 3 1 +After: [0, 0, 0, 3] + +Before: [0, 0, 2, 3] +14 0 0 0 +After: [0, 0, 2, 3] + +Before: [2, 2, 2, 1] +12 2 1 0 +After: [1, 2, 2, 1] + +Before: [3, 3, 3, 1] +0 3 0 3 +After: [3, 3, 3, 1] + +Before: [3, 3, 0, 1] +0 3 0 1 +After: [3, 1, 0, 1] + +Before: [0, 1, 2, 3] +1 1 2 0 +After: [0, 1, 2, 3] + +Before: [3, 3, 3, 3] +0 3 0 3 +After: [3, 3, 3, 3] + +Before: [1, 0, 2, 2] +3 2 3 1 +After: [1, 2, 2, 2] + +Before: [1, 2, 2, 2] +12 2 1 3 +After: [1, 2, 2, 1] + +Before: [0, 1, 1, 2] +10 1 3 1 +After: [0, 0, 1, 2] + +Before: [1, 0, 2, 2] +9 0 2 2 +After: [1, 0, 0, 2] + +Before: [1, 1, 2, 2] +10 1 3 1 +After: [1, 0, 2, 2] + +Before: [3, 3, 1, 1] +0 3 0 1 +After: [3, 1, 1, 1] + +Before: [2, 1, 2, 2] +12 2 0 0 +After: [1, 1, 2, 2] + +Before: [2, 0, 3, 2] +4 0 3 0 +After: [1, 0, 3, 2] + +Before: [2, 2, 3, 2] +4 0 3 3 +After: [2, 2, 3, 1] + +Before: [2, 3, 3, 3] +13 3 3 2 +After: [2, 3, 1, 3] + +Before: [3, 3, 2, 1] +7 3 2 1 +After: [3, 1, 2, 1] + +Before: [0, 3, 2, 0] +8 0 2 2 +After: [0, 3, 0, 0] + +Before: [0, 1, 3, 2] +13 2 1 1 +After: [0, 0, 3, 2] + +Before: [0, 1, 2, 2] +13 0 0 0 +After: [1, 1, 2, 2] + +Before: [2, 2, 1, 3] +2 1 3 0 +After: [0, 2, 1, 3] + +Before: [1, 1, 1, 0] +15 1 0 1 +After: [1, 1, 1, 0] + +Before: [2, 2, 2, 2] +3 2 3 2 +After: [2, 2, 2, 2] + +Before: [1, 1, 2, 3] +15 1 0 3 +After: [1, 1, 2, 1] + +Before: [2, 0, 3, 2] +4 0 3 3 +After: [2, 0, 3, 1] + +Before: [3, 0, 3, 3] +0 3 0 3 +After: [3, 0, 3, 3] + +Before: [0, 2, 1, 1] +8 0 2 1 +After: [0, 0, 1, 1] + +Before: [1, 3, 2, 0] +5 2 2 3 +After: [1, 3, 2, 2] + +Before: [0, 2, 2, 1] +6 3 3 1 +After: [0, 0, 2, 1] + +Before: [1, 1, 3, 0] +15 1 0 1 +After: [1, 1, 3, 0] + +Before: [2, 0, 1, 3] +5 3 3 0 +After: [3, 0, 1, 3] + +Before: [1, 1, 2, 1] +15 1 0 1 +After: [1, 1, 2, 1] + +Before: [2, 1, 2, 2] +3 2 3 0 +After: [2, 1, 2, 2] + +Before: [1, 1, 3, 2] +15 1 0 3 +After: [1, 1, 3, 1] + +Before: [0, 2, 1, 1] +14 0 0 0 +After: [0, 2, 1, 1] + +Before: [0, 0, 2, 0] +5 2 2 1 +After: [0, 2, 2, 0] + +Before: [0, 1, 2, 3] +2 1 3 2 +After: [0, 1, 0, 3] + +Before: [3, 1, 2, 2] +3 2 3 0 +After: [2, 1, 2, 2] + +Before: [1, 2, 2, 2] +9 0 2 2 +After: [1, 2, 0, 2] + +Before: [2, 2, 2, 1] +5 2 2 1 +After: [2, 2, 2, 1] + +Before: [1, 1, 2, 1] +7 3 2 1 +After: [1, 1, 2, 1] + +Before: [3, 0, 0, 1] +0 3 0 3 +After: [3, 0, 0, 1] + +Before: [3, 2, 3, 3] +12 3 0 3 +After: [3, 2, 3, 1] + +Before: [3, 1, 2, 2] +10 1 3 1 +After: [3, 0, 2, 2] + +Before: [1, 0, 1, 3] +13 3 2 1 +After: [1, 0, 1, 3] + +Before: [0, 0, 0, 2] +14 0 0 1 +After: [0, 0, 0, 2] + +Before: [3, 0, 3, 1] +0 3 0 1 +After: [3, 1, 3, 1] + +Before: [1, 1, 2, 3] +1 1 2 3 +After: [1, 1, 2, 0] + +Before: [3, 1, 2, 1] +1 1 2 1 +After: [3, 0, 2, 1] + +Before: [3, 3, 0, 3] +13 3 3 2 +After: [3, 3, 1, 3] + +Before: [3, 3, 2, 3] +2 2 3 2 +After: [3, 3, 0, 3] + +Before: [1, 2, 2, 1] +9 0 2 2 +After: [1, 2, 0, 1] + +Before: [3, 1, 0, 1] +0 3 0 1 +After: [3, 1, 0, 1] + +Before: [2, 2, 3, 2] +4 0 3 0 +After: [1, 2, 3, 2] + +Before: [2, 0, 2, 1] +7 3 2 1 +After: [2, 1, 2, 1] + +Before: [1, 1, 2, 2] +9 0 2 2 +After: [1, 1, 0, 2] + +Before: [0, 1, 3, 2] +6 3 3 2 +After: [0, 1, 0, 2] + +Before: [3, 3, 0, 2] +6 3 3 3 +After: [3, 3, 0, 0] + +Before: [3, 1, 3, 1] +11 0 2 2 +After: [3, 1, 1, 1] + +Before: [0, 1, 2, 1] +7 3 2 3 +After: [0, 1, 2, 1] + +Before: [1, 2, 2, 1] +7 3 2 1 +After: [1, 1, 2, 1] + +Before: [3, 1, 0, 2] +10 1 3 2 +After: [3, 1, 0, 2] + +Before: [0, 1, 3, 2] +14 0 0 2 +After: [0, 1, 0, 2] + +Before: [0, 3, 0, 2] +14 0 0 1 +After: [0, 0, 0, 2] + +Before: [0, 1, 2, 1] +1 1 2 3 +After: [0, 1, 2, 0] + +Before: [1, 1, 2, 1] +9 0 2 1 +After: [1, 0, 2, 1] + +Before: [0, 1, 2, 2] +10 1 3 2 +After: [0, 1, 0, 2] + +Before: [1, 0, 2, 2] +3 2 3 2 +After: [1, 0, 2, 2] + +Before: [2, 3, 3, 1] +12 2 3 3 +After: [2, 3, 3, 0] + +Before: [2, 0, 3, 1] +12 2 3 0 +After: [0, 0, 3, 1] + +Before: [2, 1, 2, 1] +7 3 2 2 +After: [2, 1, 1, 1] + +Before: [3, 3, 2, 2] +3 2 3 0 +After: [2, 3, 2, 2] + +Before: [0, 1, 0, 1] +8 0 1 1 +After: [0, 0, 0, 1] + +Before: [1, 1, 2, 1] +6 3 3 2 +After: [1, 1, 0, 1] + +Before: [0, 1, 2, 2] +1 1 2 0 +After: [0, 1, 2, 2] + +Before: [3, 3, 1, 3] +2 2 3 2 +After: [3, 3, 0, 3] + +Before: [3, 2, 1, 3] +5 3 3 1 +After: [3, 3, 1, 3] + +Before: [2, 1, 2, 2] +4 0 3 0 +After: [1, 1, 2, 2] + +Before: [3, 3, 2, 2] +13 2 2 2 +After: [3, 3, 1, 2] + +Before: [2, 1, 3, 2] +4 0 3 2 +After: [2, 1, 1, 2] + +Before: [3, 0, 2, 2] +3 2 3 1 +After: [3, 2, 2, 2] + +Before: [2, 0, 1, 2] +4 0 3 3 +After: [2, 0, 1, 1] + +Before: [3, 2, 2, 0] +5 2 2 3 +After: [3, 2, 2, 2] + +Before: [0, 0, 3, 3] +5 3 3 3 +After: [0, 0, 3, 3] + +Before: [0, 1, 0, 3] +13 3 1 0 +After: [0, 1, 0, 3] + +Before: [2, 2, 3, 2] +4 0 3 2 +After: [2, 2, 1, 2] + +Before: [0, 3, 0, 1] +14 0 0 2 +After: [0, 3, 0, 1] + +Before: [3, 3, 3, 0] +11 0 0 2 +After: [3, 3, 1, 0] + +Before: [0, 3, 3, 3] +14 0 0 1 +After: [0, 0, 3, 3] + +Before: [2, 2, 1, 1] +6 3 3 2 +After: [2, 2, 0, 1] + +Before: [3, 2, 0, 3] +5 3 3 0 +After: [3, 2, 0, 3] + +Before: [2, 2, 2, 3] +2 1 3 1 +After: [2, 0, 2, 3] + +Before: [2, 3, 2, 2] +3 2 3 1 +After: [2, 2, 2, 2] + +Before: [0, 1, 2, 1] +7 3 2 1 +After: [0, 1, 2, 1] + +Before: [0, 1, 2, 2] +3 2 3 1 +After: [0, 2, 2, 2] + +Before: [3, 1, 2, 0] +0 1 0 2 +After: [3, 1, 1, 0] + +Before: [2, 2, 2, 0] +0 2 0 1 +After: [2, 2, 2, 0] + +Before: [1, 1, 3, 0] +15 1 0 0 +After: [1, 1, 3, 0] + +Before: [0, 3, 0, 3] +5 3 3 0 +After: [3, 3, 0, 3] + +Before: [3, 3, 3, 3] +0 3 0 0 +After: [3, 3, 3, 3] + +Before: [3, 0, 2, 0] +5 2 2 2 +After: [3, 0, 2, 0] + +Before: [2, 3, 2, 2] +6 3 3 0 +After: [0, 3, 2, 2] + +Before: [1, 0, 2, 3] +9 0 2 0 +After: [0, 0, 2, 3] + +Before: [2, 3, 2, 0] +5 2 2 1 +After: [2, 2, 2, 0] + +Before: [3, 3, 3, 1] +12 2 3 3 +After: [3, 3, 3, 0] + +Before: [1, 1, 1, 3] +2 2 3 2 +After: [1, 1, 0, 3] + +Before: [3, 1, 1, 2] +11 0 0 2 +After: [3, 1, 1, 2] + +Before: [1, 1, 0, 2] +15 1 0 3 +After: [1, 1, 0, 1] + +Before: [1, 1, 1, 1] +15 1 0 2 +After: [1, 1, 1, 1] + +Before: [0, 1, 0, 3] +2 1 3 2 +After: [0, 1, 0, 3] + +Before: [2, 0, 2, 2] +3 2 3 2 +After: [2, 0, 2, 2] + +Before: [0, 3, 3, 3] +11 2 2 3 +After: [0, 3, 3, 1] + +Before: [0, 1, 2, 2] +3 2 3 3 +After: [0, 1, 2, 2] + +Before: [0, 3, 3, 0] +8 0 1 1 +After: [0, 0, 3, 0] + +Before: [3, 1, 3, 2] +10 1 3 1 +After: [3, 0, 3, 2] + +Before: [3, 2, 2, 3] +12 2 1 2 +After: [3, 2, 1, 3] + +Before: [3, 2, 2, 0] +5 2 2 0 +After: [2, 2, 2, 0] + +Before: [3, 1, 1, 2] +10 1 3 1 +After: [3, 0, 1, 2] + +Before: [3, 0, 3, 1] +11 0 2 2 +After: [3, 0, 1, 1] + +Before: [3, 1, 0, 3] +0 1 0 1 +After: [3, 1, 0, 3] + +Before: [0, 1, 2, 1] +7 3 2 2 +After: [0, 1, 1, 1] + +Before: [2, 1, 2, 0] +12 2 0 1 +After: [2, 1, 2, 0] + +Before: [0, 1, 0, 2] +14 0 0 2 +After: [0, 1, 0, 2] + +Before: [2, 3, 2, 1] +0 2 0 3 +After: [2, 3, 2, 2] + +Before: [1, 1, 0, 2] +10 1 3 1 +After: [1, 0, 0, 2] + +Before: [3, 1, 2, 3] +13 3 3 2 +After: [3, 1, 1, 3] + +Before: [2, 3, 2, 3] +0 2 0 1 +After: [2, 2, 2, 3] + +Before: [3, 1, 2, 3] +1 1 2 3 +After: [3, 1, 2, 0] + +Before: [2, 2, 1, 2] +4 0 3 0 +After: [1, 2, 1, 2] + +Before: [0, 0, 3, 1] +14 0 0 0 +After: [0, 0, 3, 1] + +Before: [3, 2, 3, 0] +11 0 2 3 +After: [3, 2, 3, 1] + +Before: [2, 1, 1, 1] +11 0 0 1 +After: [2, 1, 1, 1] + +Before: [3, 2, 2, 2] +12 2 1 2 +After: [3, 2, 1, 2] + +Before: [0, 1, 3, 2] +10 1 3 2 +After: [0, 1, 0, 2] + +Before: [1, 1, 2, 2] +15 1 0 1 +After: [1, 1, 2, 2] + +Before: [0, 0, 3, 3] +8 0 2 3 +After: [0, 0, 3, 0] + +Before: [2, 0, 0, 0] +11 0 0 1 +After: [2, 1, 0, 0] + +Before: [3, 2, 3, 3] +0 3 0 2 +After: [3, 2, 3, 3] + +Before: [2, 2, 2, 2] +4 0 3 2 +After: [2, 2, 1, 2] + +Before: [1, 1, 1, 3] +15 1 0 0 +After: [1, 1, 1, 3] + +Before: [0, 1, 2, 0] +8 0 1 0 +After: [0, 1, 2, 0] + +Before: [3, 1, 3, 1] +12 2 3 0 +After: [0, 1, 3, 1] + +Before: [1, 1, 2, 2] +3 2 3 2 +After: [1, 1, 2, 2] + +Before: [3, 1, 2, 2] +3 2 3 1 +After: [3, 2, 2, 2] + +Before: [1, 1, 0, 1] +15 1 0 0 +After: [1, 1, 0, 1] + +Before: [2, 3, 1, 3] +2 2 3 3 +After: [2, 3, 1, 0] + +Before: [2, 0, 3, 1] +12 2 3 2 +After: [2, 0, 0, 1] + +Before: [2, 0, 0, 3] +8 1 0 0 +After: [0, 0, 0, 3] + +Before: [1, 1, 2, 0] +15 1 0 0 +After: [1, 1, 2, 0] + +Before: [3, 0, 0, 0] +8 2 0 3 +After: [3, 0, 0, 0] + +Before: [2, 0, 2, 2] +0 2 0 3 +After: [2, 0, 2, 2] + +Before: [2, 0, 2, 2] +4 0 3 3 +After: [2, 0, 2, 1] + +Before: [0, 2, 2, 1] +7 3 2 2 +After: [0, 2, 1, 1] + +Before: [2, 2, 0, 1] +6 3 3 1 +After: [2, 0, 0, 1] + +Before: [2, 1, 1, 2] +10 1 3 2 +After: [2, 1, 0, 2] + +Before: [2, 0, 1, 3] +2 2 3 0 +After: [0, 0, 1, 3] + +Before: [2, 0, 0, 2] +4 0 3 3 +After: [2, 0, 0, 1] + +Before: [1, 2, 2, 2] +3 2 3 0 +After: [2, 2, 2, 2] + +Before: [0, 3, 2, 1] +8 0 1 0 +After: [0, 3, 2, 1] + +Before: [0, 2, 2, 3] +8 0 3 2 +After: [0, 2, 0, 3] + +Before: [0, 2, 2, 0] +5 2 2 3 +After: [0, 2, 2, 2] + +Before: [3, 0, 3, 1] +12 2 3 0 +After: [0, 0, 3, 1] + +Before: [0, 2, 1, 3] +2 1 3 0 +After: [0, 2, 1, 3] + +Before: [1, 1, 2, 2] +1 1 2 0 +After: [0, 1, 2, 2] + +Before: [2, 0, 2, 0] +0 2 0 2 +After: [2, 0, 2, 0] + +Before: [0, 1, 3, 2] +10 1 3 3 +After: [0, 1, 3, 0] + +Before: [1, 1, 2, 0] +15 1 0 3 +After: [1, 1, 2, 1] + +Before: [2, 1, 2, 3] +1 1 2 0 +After: [0, 1, 2, 3] + +Before: [1, 3, 1, 3] +2 2 3 3 +After: [1, 3, 1, 0] + +Before: [2, 3, 2, 0] +12 2 0 1 +After: [2, 1, 2, 0] + +Before: [3, 0, 3, 3] +12 3 0 2 +After: [3, 0, 1, 3] + +Before: [3, 1, 1, 3] +2 2 3 0 +After: [0, 1, 1, 3] + +Before: [3, 2, 2, 3] +2 1 3 3 +After: [3, 2, 2, 0] + +Before: [2, 2, 2, 1] +7 3 2 3 +After: [2, 2, 2, 1] + +Before: [1, 1, 1, 1] +6 2 3 3 +After: [1, 1, 1, 0] + +Before: [2, 3, 2, 3] +5 2 2 2 +After: [2, 3, 2, 3] + +Before: [2, 3, 2, 2] +4 0 3 0 +After: [1, 3, 2, 2] + +Before: [0, 1, 2, 1] +13 2 2 2 +After: [0, 1, 1, 1] + +Before: [1, 3, 2, 2] +9 0 2 3 +After: [1, 3, 2, 0] + +Before: [0, 0, 0, 3] +14 0 0 1 +After: [0, 0, 0, 3] + +Before: [0, 2, 0, 0] +14 0 0 2 +After: [0, 2, 0, 0] + +Before: [1, 3, 2, 1] +9 0 2 3 +After: [1, 3, 2, 0] + +Before: [3, 2, 2, 3] +13 3 2 1 +After: [3, 0, 2, 3] + +Before: [1, 0, 2, 0] +9 0 2 0 +After: [0, 0, 2, 0] + +Before: [0, 3, 2, 1] +5 2 2 1 +After: [0, 2, 2, 1] + +Before: [3, 1, 2, 3] +1 1 2 1 +After: [3, 0, 2, 3] + +Before: [0, 3, 1, 2] +14 0 0 2 +After: [0, 3, 0, 2] + +Before: [2, 1, 1, 3] +13 3 2 1 +After: [2, 0, 1, 3] + +Before: [0, 0, 2, 2] +6 3 3 3 +After: [0, 0, 2, 0] + +Before: [0, 1, 3, 0] +8 0 2 0 +After: [0, 1, 3, 0] + +Before: [1, 1, 1, 2] +15 1 0 2 +After: [1, 1, 1, 2] + +Before: [0, 1, 3, 2] +8 0 2 3 +After: [0, 1, 3, 0] + +Before: [1, 1, 3, 3] +15 1 0 0 +After: [1, 1, 3, 3] + +Before: [2, 2, 1, 2] +11 0 1 0 +After: [1, 2, 1, 2] + +Before: [1, 0, 2, 2] +3 2 3 0 +After: [2, 0, 2, 2] + +Before: [0, 0, 2, 2] +3 2 3 0 +After: [2, 0, 2, 2] + +Before: [2, 2, 2, 2] +3 2 3 0 +After: [2, 2, 2, 2] + +Before: [2, 2, 2, 0] +12 2 0 0 +After: [1, 2, 2, 0] + +Before: [0, 1, 1, 2] +10 1 3 0 +After: [0, 1, 1, 2] + +Before: [0, 0, 0, 2] +14 0 0 3 +After: [0, 0, 0, 0] + +Before: [1, 3, 3, 3] +13 3 3 2 +After: [1, 3, 1, 3] + +Before: [3, 2, 2, 3] +5 3 3 0 +After: [3, 2, 2, 3] + +Before: [1, 1, 3, 1] +15 1 0 1 +After: [1, 1, 3, 1] + +Before: [2, 3, 2, 2] +4 0 3 2 +After: [2, 3, 1, 2] + +Before: [3, 3, 2, 3] +0 3 0 1 +After: [3, 3, 2, 3] + +Before: [1, 1, 2, 0] +9 0 2 3 +After: [1, 1, 2, 0] + +Before: [1, 2, 2, 0] +9 0 2 2 +After: [1, 2, 0, 0] + +Before: [0, 3, 2, 1] +7 3 2 1 +After: [0, 1, 2, 1] + +Before: [2, 0, 2, 3] +5 2 2 0 +After: [2, 0, 2, 3] + +Before: [2, 0, 0, 2] +4 0 3 2 +After: [2, 0, 1, 2] + +Before: [3, 3, 1, 1] +0 3 0 2 +After: [3, 3, 1, 1] + +Before: [0, 3, 3, 0] +14 0 0 1 +After: [0, 0, 3, 0] + +Before: [3, 2, 1, 1] +0 3 0 1 +After: [3, 1, 1, 1] + +Before: [1, 1, 2, 2] +15 1 0 0 +After: [1, 1, 2, 2] + +Before: [2, 2, 1, 2] +6 3 3 0 +After: [0, 2, 1, 2] + +Before: [2, 1, 2, 2] +4 0 3 2 +After: [2, 1, 1, 2] + +Before: [1, 1, 1, 2] +10 1 3 1 +After: [1, 0, 1, 2] + +Before: [1, 1, 0, 0] +15 1 0 0 +After: [1, 1, 0, 0] + +Before: [1, 2, 2, 3] +9 0 2 1 +After: [1, 0, 2, 3] + +Before: [2, 0, 1, 2] +4 0 3 0 +After: [1, 0, 1, 2] + +Before: [1, 3, 3, 3] +12 3 2 3 +After: [1, 3, 3, 1] + +Before: [3, 1, 1, 2] +0 1 0 0 +After: [1, 1, 1, 2] + +Before: [3, 0, 2, 1] +0 3 0 3 +After: [3, 0, 2, 1] + +Before: [3, 3, 0, 1] +0 3 0 0 +After: [1, 3, 0, 1] + +Before: [1, 3, 3, 2] +6 3 3 2 +After: [1, 3, 0, 2] + +Before: [0, 2, 1, 0] +8 0 2 2 +After: [0, 2, 0, 0] + +Before: [2, 2, 2, 0] +12 2 0 2 +After: [2, 2, 1, 0] + +Before: [2, 1, 2, 3] +5 2 2 0 +After: [2, 1, 2, 3] + +Before: [0, 0, 1, 3] +5 3 3 3 +After: [0, 0, 1, 3] + +Before: [1, 0, 2, 3] +13 2 2 2 +After: [1, 0, 1, 3] + +Before: [1, 1, 2, 3] +15 1 0 2 +After: [1, 1, 1, 3] + +Before: [2, 2, 2, 2] +3 2 3 3 +After: [2, 2, 2, 2] + +Before: [1, 1, 0, 1] +15 1 0 2 +After: [1, 1, 1, 1] + +Before: [1, 1, 2, 3] +15 1 0 0 +After: [1, 1, 2, 3] + +Before: [1, 1, 0, 3] +2 1 3 1 +After: [1, 0, 0, 3] + +Before: [2, 0, 2, 1] +12 2 0 1 +After: [2, 1, 2, 1] + +Before: [0, 2, 1, 2] +8 0 1 1 +After: [0, 0, 1, 2] + +Before: [1, 1, 2, 3] +1 1 2 1 +After: [1, 0, 2, 3] + +Before: [0, 3, 2, 3] +2 2 3 0 +After: [0, 3, 2, 3] + +Before: [0, 0, 2, 3] +13 3 3 2 +After: [0, 0, 1, 3] + +Before: [2, 1, 3, 2] +10 1 3 1 +After: [2, 0, 3, 2] + +Before: [1, 1, 2, 3] +2 1 3 3 +After: [1, 1, 2, 0] + +Before: [0, 0, 3, 2] +14 0 0 2 +After: [0, 0, 0, 2] + +Before: [0, 2, 2, 1] +7 3 2 3 +After: [0, 2, 2, 1] + +Before: [1, 0, 3, 2] +11 2 2 3 +After: [1, 0, 3, 1] + +Before: [3, 2, 3, 3] +11 0 0 1 +After: [3, 1, 3, 3] + +Before: [0, 3, 2, 2] +14 0 0 2 +After: [0, 3, 0, 2] + +Before: [3, 2, 1, 1] +6 3 3 2 +After: [3, 2, 0, 1] + +Before: [0, 2, 2, 3] +2 2 3 0 +After: [0, 2, 2, 3] + +Before: [1, 2, 1, 2] +6 3 3 3 +After: [1, 2, 1, 0] + +Before: [2, 1, 2, 1] +7 3 2 1 +After: [2, 1, 2, 1] + +Before: [1, 1, 1, 2] +10 1 3 2 +After: [1, 1, 0, 2] + +Before: [0, 0, 1, 1] +14 0 0 1 +After: [0, 0, 1, 1] + +Before: [3, 3, 3, 1] +11 0 2 1 +After: [3, 1, 3, 1] + +Before: [2, 1, 2, 2] +12 2 0 2 +After: [2, 1, 1, 2] + +Before: [1, 2, 2, 1] +7 3 2 0 +After: [1, 2, 2, 1] + +Before: [1, 2, 2, 2] +9 0 2 1 +After: [1, 0, 2, 2] + +Before: [3, 3, 2, 1] +7 3 2 3 +After: [3, 3, 2, 1] + +Before: [2, 1, 1, 2] +6 3 3 3 +After: [2, 1, 1, 0] + +Before: [2, 2, 1, 3] +2 2 3 2 +After: [2, 2, 0, 3] + +Before: [3, 2, 2, 2] +3 2 3 1 +After: [3, 2, 2, 2] + +Before: [2, 2, 2, 1] +0 2 0 0 +After: [2, 2, 2, 1] + +Before: [0, 1, 3, 1] +14 0 0 1 +After: [0, 0, 3, 1] + +Before: [2, 0, 3, 1] +8 1 0 0 +After: [0, 0, 3, 1] + +Before: [2, 3, 0, 2] +4 0 3 2 +After: [2, 3, 1, 2] + +Before: [2, 0, 2, 2] +3 2 3 1 +After: [2, 2, 2, 2] + +Before: [0, 0, 3, 2] +8 0 2 2 +After: [0, 0, 0, 2] + +Before: [3, 1, 1, 2] +10 1 3 2 +After: [3, 1, 0, 2] + +Before: [3, 2, 2, 1] +7 3 2 2 +After: [3, 2, 1, 1] + +Before: [2, 2, 2, 2] +4 0 3 1 +After: [2, 1, 2, 2] + +Before: [1, 1, 2, 2] +9 0 2 1 +After: [1, 0, 2, 2] + +Before: [3, 0, 2, 2] +5 2 2 1 +After: [3, 2, 2, 2] + +Before: [0, 2, 0, 1] +14 0 0 0 +After: [0, 2, 0, 1] + +Before: [2, 2, 2, 1] +5 2 2 0 +After: [2, 2, 2, 1] + +Before: [2, 1, 2, 3] +1 1 2 1 +After: [2, 0, 2, 3] + +Before: [2, 3, 0, 2] +4 0 3 1 +After: [2, 1, 0, 2] + +Before: [2, 3, 2, 1] +7 3 2 0 +After: [1, 3, 2, 1] + +Before: [2, 0, 2, 2] +12 2 0 0 +After: [1, 0, 2, 2] + +Before: [1, 2, 2, 2] +3 2 3 2 +After: [1, 2, 2, 2] + +Before: [0, 0, 2, 1] +7 3 2 0 +After: [1, 0, 2, 1] + +Before: [2, 2, 3, 3] +11 2 2 3 +After: [2, 2, 3, 1] + +Before: [3, 3, 2, 0] +5 2 2 2 +After: [3, 3, 2, 0] + +Before: [3, 2, 2, 2] +3 2 3 2 +After: [3, 2, 2, 2] + +Before: [2, 3, 2, 2] +4 0 3 3 +After: [2, 3, 2, 1] + +Before: [2, 1, 1, 2] +11 0 0 1 +After: [2, 1, 1, 2] + +Before: [0, 0, 2, 1] +7 3 2 2 +After: [0, 0, 1, 1] + +Before: [0, 2, 1, 0] +14 0 0 3 +After: [0, 2, 1, 0] + +Before: [1, 1, 2, 0] +15 1 0 1 +After: [1, 1, 2, 0] + +Before: [0, 1, 2, 3] +1 1 2 1 +After: [0, 0, 2, 3] + +Before: [0, 3, 1, 0] +14 0 0 3 +After: [0, 3, 1, 0] + +Before: [0, 2, 3, 2] +8 0 3 0 +After: [0, 2, 3, 2] + +Before: [0, 1, 3, 3] +13 0 0 0 +After: [1, 1, 3, 3] + +Before: [2, 1, 2, 0] +1 1 2 0 +After: [0, 1, 2, 0] + +Before: [3, 0, 1, 1] +11 0 0 0 +After: [1, 0, 1, 1] + +Before: [0, 2, 1, 3] +14 0 0 3 +After: [0, 2, 1, 0] + +Before: [0, 2, 2, 1] +14 0 0 0 +After: [0, 2, 2, 1] + +Before: [0, 2, 3, 0] +14 0 0 1 +After: [0, 0, 3, 0] + +Before: [2, 2, 2, 2] +3 2 3 1 +After: [2, 2, 2, 2] + +Before: [3, 0, 2, 1] +7 3 2 3 +After: [3, 0, 2, 1] + +Before: [2, 2, 2, 1] +6 3 3 0 +After: [0, 2, 2, 1] + +Before: [2, 1, 3, 2] +10 1 3 2 +After: [2, 1, 0, 2] + +Before: [2, 1, 2, 2] +5 2 2 3 +After: [2, 1, 2, 2] + +Before: [3, 2, 1, 1] +0 3 0 3 +After: [3, 2, 1, 1] + +Before: [2, 1, 2, 3] +1 1 2 3 +After: [2, 1, 2, 0] + +Before: [2, 3, 2, 0] +0 2 0 1 +After: [2, 2, 2, 0] + +Before: [3, 0, 3, 1] +11 0 0 3 +After: [3, 0, 3, 1] + +Before: [2, 3, 1, 1] +6 2 3 2 +After: [2, 3, 0, 1] + +Before: [2, 0, 3, 2] +11 2 2 0 +After: [1, 0, 3, 2] + +Before: [0, 1, 1, 2] +10 1 3 3 +After: [0, 1, 1, 0] + +Before: [0, 1, 3, 3] +12 3 2 2 +After: [0, 1, 1, 3] + +Before: [0, 1, 1, 2] +14 0 0 1 +After: [0, 0, 1, 2] + +Before: [0, 1, 2, 3] +1 1 2 2 +After: [0, 1, 0, 3] + +Before: [1, 1, 2, 2] +1 1 2 3 +After: [1, 1, 2, 0] + +Before: [0, 1, 0, 1] +14 0 0 3 +After: [0, 1, 0, 0] + +Before: [2, 0, 0, 1] +6 3 3 1 +After: [2, 0, 0, 1] + +Before: [1, 2, 1, 3] +13 3 2 3 +After: [1, 2, 1, 0] + +Before: [2, 1, 2, 1] +6 3 3 3 +After: [2, 1, 2, 0] + +Before: [0, 1, 0, 2] +6 3 3 3 +After: [0, 1, 0, 0] + +Before: [3, 1, 0, 2] +8 2 0 0 +After: [0, 1, 0, 2] + +Before: [1, 1, 3, 3] +12 3 2 0 +After: [1, 1, 3, 3] + +Before: [0, 1, 2, 1] +5 2 2 3 +After: [0, 1, 2, 2] + +Before: [1, 0, 3, 0] +11 2 2 0 +After: [1, 0, 3, 0] + +Before: [3, 3, 2, 1] +5 2 2 0 +After: [2, 3, 2, 1] + +Before: [0, 2, 2, 3] +14 0 0 3 +After: [0, 2, 2, 0] + +Before: [3, 0, 1, 3] +2 2 3 3 +After: [3, 0, 1, 0] + +Before: [2, 3, 3, 2] +4 0 3 3 +After: [2, 3, 3, 1] + +Before: [1, 1, 3, 2] +15 1 0 2 +After: [1, 1, 1, 2] + +Before: [1, 1, 2, 2] +9 0 2 0 +After: [0, 1, 2, 2] + +Before: [2, 1, 2, 2] +10 1 3 0 +After: [0, 1, 2, 2] + +Before: [3, 1, 2, 0] +1 1 2 3 +After: [3, 1, 2, 0] + +Before: [0, 1, 1, 3] +14 0 0 1 +After: [0, 0, 1, 3] + +Before: [1, 1, 2, 3] +13 3 1 0 +After: [0, 1, 2, 3] + +Before: [1, 1, 1, 2] +6 3 3 1 +After: [1, 0, 1, 2] + +Before: [2, 1, 2, 2] +5 2 2 1 +After: [2, 2, 2, 2] + +Before: [0, 2, 2, 0] +14 0 0 0 +After: [0, 2, 2, 0] + +Before: [0, 0, 2, 2] +8 0 2 2 +After: [0, 0, 0, 2] + +Before: [0, 1, 2, 0] +14 0 0 3 +After: [0, 1, 2, 0] + +Before: [1, 3, 2, 2] +9 0 2 1 +After: [1, 0, 2, 2] + +Before: [1, 2, 2, 0] +12 2 1 0 +After: [1, 2, 2, 0] + +Before: [2, 1, 3, 2] +4 0 3 0 +After: [1, 1, 3, 2] + +Before: [0, 1, 2, 1] +1 1 2 1 +After: [0, 0, 2, 1] + +Before: [3, 0, 3, 3] +11 0 0 0 +After: [1, 0, 3, 3] + +Before: [0, 3, 2, 1] +7 3 2 0 +After: [1, 3, 2, 1] + +Before: [3, 1, 1, 3] +12 3 0 0 +After: [1, 1, 1, 3] + +Before: [0, 2, 2, 1] +7 3 2 0 +After: [1, 2, 2, 1] + +Before: [1, 1, 3, 2] +10 1 3 3 +After: [1, 1, 3, 0] + +Before: [1, 1, 2, 1] +1 1 2 1 +After: [1, 0, 2, 1] + +Before: [2, 0, 1, 2] +6 3 3 0 +After: [0, 0, 1, 2] + +Before: [2, 0, 2, 0] +0 2 0 3 +After: [2, 0, 2, 2] + +Before: [0, 2, 3, 3] +13 3 3 0 +After: [1, 2, 3, 3] + +Before: [1, 1, 0, 3] +15 1 0 3 +After: [1, 1, 0, 1] + +Before: [2, 0, 1, 1] +11 0 0 2 +After: [2, 0, 1, 1] + +Before: [2, 3, 0, 2] +6 3 3 2 +After: [2, 3, 0, 2] + +Before: [3, 1, 1, 2] +10 1 3 0 +After: [0, 1, 1, 2] + +Before: [2, 3, 0, 1] +6 3 3 1 +After: [2, 0, 0, 1] + +Before: [3, 1, 2, 1] +1 1 2 0 +After: [0, 1, 2, 1] + +Before: [1, 1, 0, 2] +10 1 3 0 +After: [0, 1, 0, 2] + +Before: [2, 1, 2, 1] +1 1 2 2 +After: [2, 1, 0, 1] + +Before: [2, 1, 0, 2] +10 1 3 2 +After: [2, 1, 0, 2] + +Before: [1, 1, 2, 2] +15 1 0 2 +After: [1, 1, 1, 2] + +Before: [2, 3, 0, 2] +4 0 3 0 +After: [1, 3, 0, 2] + +Before: [1, 1, 2, 1] +1 1 2 0 +After: [0, 1, 2, 1] + +Before: [3, 1, 2, 3] +13 3 3 0 +After: [1, 1, 2, 3] + +Before: [3, 0, 2, 3] +0 3 0 1 +After: [3, 3, 2, 3] + +Before: [0, 1, 2, 1] +1 1 2 0 +After: [0, 1, 2, 1] + +Before: [2, 2, 1, 2] +4 0 3 3 +After: [2, 2, 1, 1] + +Before: [3, 3, 0, 3] +11 0 0 0 +After: [1, 3, 0, 3] + +Before: [3, 3, 2, 2] +3 2 3 1 +After: [3, 2, 2, 2] + +Before: [1, 3, 2, 3] +2 2 3 0 +After: [0, 3, 2, 3] + +Before: [1, 2, 2, 3] +9 0 2 0 +After: [0, 2, 2, 3] + +Before: [2, 1, 2, 0] +1 1 2 2 +After: [2, 1, 0, 0] + +Before: [3, 1, 2, 1] +1 1 2 2 +After: [3, 1, 0, 1] + +Before: [3, 1, 0, 2] +10 1 3 1 +After: [3, 0, 0, 2] + +Before: [3, 0, 3, 1] +12 2 3 2 +After: [3, 0, 0, 1] + +Before: [1, 0, 2, 2] +9 0 2 3 +After: [1, 0, 2, 0] + +Before: [0, 2, 2, 3] +5 3 3 1 +After: [0, 3, 2, 3] + +Before: [2, 0, 2, 1] +12 2 0 2 +After: [2, 0, 1, 1] + +Before: [2, 3, 1, 2] +11 0 0 3 +After: [2, 3, 1, 1] + +Before: [0, 2, 2, 2] +14 0 0 0 +After: [0, 2, 2, 2] + +Before: [1, 0, 3, 0] +11 2 2 2 +After: [1, 0, 1, 0] + +Before: [0, 1, 2, 3] +14 0 0 0 +After: [0, 1, 2, 3] + +Before: [2, 2, 3, 1] +6 3 3 3 +After: [2, 2, 3, 0] + +Before: [1, 1, 2, 2] +10 1 3 0 +After: [0, 1, 2, 2] + +Before: [3, 1, 2, 2] +6 3 3 1 +After: [3, 0, 2, 2] + +Before: [1, 2, 3, 3] +13 3 1 2 +After: [1, 2, 0, 3] + +Before: [1, 2, 1, 3] +2 2 3 2 +After: [1, 2, 0, 3] + +Before: [3, 1, 0, 2] +10 1 3 3 +After: [3, 1, 0, 0] + +Before: [3, 1, 3, 3] +11 2 2 3 +After: [3, 1, 3, 1] + +Before: [2, 2, 1, 2] +11 0 0 2 +After: [2, 2, 1, 2] + +Before: [3, 1, 3, 2] +10 1 3 0 +After: [0, 1, 3, 2] + +Before: [3, 0, 2, 2] +3 2 3 2 +After: [3, 0, 2, 2] + +Before: [1, 1, 0, 3] +2 1 3 0 +After: [0, 1, 0, 3] + +Before: [2, 1, 2, 2] +1 1 2 3 +After: [2, 1, 2, 0] + +Before: [2, 2, 2, 3] +2 2 3 2 +After: [2, 2, 0, 3] + +Before: [3, 0, 2, 1] +7 3 2 1 +After: [3, 1, 2, 1] + +Before: [1, 1, 2, 3] +9 0 2 0 +After: [0, 1, 2, 3] + +Before: [3, 2, 2, 3] +2 1 3 2 +After: [3, 2, 0, 3] + +Before: [2, 1, 2, 2] +4 0 3 1 +After: [2, 1, 2, 2] + +Before: [2, 0, 2, 2] +4 0 3 0 +After: [1, 0, 2, 2] + +Before: [2, 3, 1, 2] +4 0 3 2 +After: [2, 3, 1, 2] + +Before: [0, 2, 1, 0] +8 0 2 3 +After: [0, 2, 1, 0] + +Before: [3, 0, 1, 1] +6 2 3 3 +After: [3, 0, 1, 0] + +Before: [1, 2, 2, 0] +12 2 1 2 +After: [1, 2, 1, 0] + +Before: [1, 3, 2, 1] +9 0 2 2 +After: [1, 3, 0, 1] + +Before: [1, 1, 1, 3] +15 1 0 1 +After: [1, 1, 1, 3] + +Before: [0, 0, 0, 3] +8 0 3 2 +After: [0, 0, 0, 3] + +Before: [3, 1, 2, 0] +1 1 2 2 +After: [3, 1, 0, 0] + +Before: [2, 1, 2, 2] +10 1 3 2 +After: [2, 1, 0, 2] + +Before: [1, 1, 0, 1] +15 1 0 1 +After: [1, 1, 0, 1] + +Before: [1, 1, 3, 0] +13 2 1 0 +After: [0, 1, 3, 0] + +Before: [0, 0, 2, 1] +7 3 2 1 +After: [0, 1, 2, 1] + +Before: [2, 1, 3, 0] +11 0 0 3 +After: [2, 1, 3, 1] + +Before: [3, 1, 3, 0] +0 1 0 3 +After: [3, 1, 3, 1] + +Before: [1, 1, 3, 3] +13 2 1 1 +After: [1, 0, 3, 3] + +Before: [1, 3, 2, 3] +9 0 2 3 +After: [1, 3, 2, 0] + +Before: [0, 3, 1, 3] +8 0 3 1 +After: [0, 0, 1, 3] + +Before: [2, 1, 0, 2] +4 0 3 3 +After: [2, 1, 0, 1] + +Before: [2, 0, 2, 2] +3 2 3 3 +After: [2, 0, 2, 2] + +Before: [2, 3, 1, 0] +11 0 0 0 +After: [1, 3, 1, 0] + +Before: [3, 2, 3, 2] +11 0 0 2 +After: [3, 2, 1, 2] + +Before: [2, 1, 2, 2] +4 0 3 3 +After: [2, 1, 2, 1] + +Before: [3, 0, 3, 3] +5 3 3 1 +After: [3, 3, 3, 3] + +Before: [2, 2, 2, 1] +7 3 2 1 +After: [2, 1, 2, 1] + +Before: [2, 1, 2, 2] +3 2 3 2 +After: [2, 1, 2, 2] + +Before: [1, 1, 2, 1] +7 3 2 2 +After: [1, 1, 1, 1] + +Before: [2, 0, 2, 2] +5 2 2 0 +After: [2, 0, 2, 2] + +Before: [2, 1, 3, 2] +4 0 3 1 +After: [2, 1, 3, 2] + +Before: [0, 2, 2, 2] +3 2 3 3 +After: [0, 2, 2, 2] + +Before: [0, 3, 2, 2] +14 0 0 0 +After: [0, 3, 2, 2] + +Before: [2, 1, 3, 2] +10 1 3 0 +After: [0, 1, 3, 2] + +Before: [3, 1, 2, 1] +7 3 2 0 +After: [1, 1, 2, 1] + +Before: [2, 2, 1, 2] +4 0 3 2 +After: [2, 2, 1, 2] + +Before: [3, 2, 1, 1] +11 0 0 2 +After: [3, 2, 1, 1] + +Before: [0, 3, 3, 1] +13 0 0 1 +After: [0, 1, 3, 1] + +Before: [3, 0, 2, 3] +13 3 2 2 +After: [3, 0, 0, 3] + +Before: [0, 0, 0, 1] +6 3 3 2 +After: [0, 0, 0, 1] + +Before: [2, 3, 1, 2] +4 0 3 1 +After: [2, 1, 1, 2] + +Before: [2, 3, 2, 3] +0 2 0 3 +After: [2, 3, 2, 2] + +Before: [1, 3, 2, 0] +9 0 2 0 +After: [0, 3, 2, 0] + +Before: [0, 1, 0, 2] +6 3 3 0 +After: [0, 1, 0, 2] + +Before: [0, 1, 2, 1] +1 1 2 2 +After: [0, 1, 0, 1] + +Before: [1, 3, 2, 1] +7 3 2 0 +After: [1, 3, 2, 1] + +Before: [0, 3, 2, 1] +8 0 2 1 +After: [0, 0, 2, 1] + +Before: [2, 2, 0, 3] +5 3 3 1 +After: [2, 3, 0, 3] + +Before: [1, 1, 2, 2] +3 2 3 3 +After: [1, 1, 2, 2] + +Before: [0, 0, 3, 2] +11 2 2 1 +After: [0, 1, 3, 2] + +Before: [0, 3, 1, 3] +2 2 3 3 +After: [0, 3, 1, 0] + +Before: [3, 3, 3, 3] +11 2 0 0 +After: [1, 3, 3, 3] + +Before: [2, 0, 0, 2] +4 0 3 0 +After: [1, 0, 0, 2] + +Before: [0, 1, 2, 3] +2 2 3 1 +After: [0, 0, 2, 3] + +Before: [2, 3, 2, 1] +7 3 2 2 +After: [2, 3, 1, 1] + +Before: [3, 1, 2, 2] +10 1 3 0 +After: [0, 1, 2, 2] + +Before: [0, 2, 3, 3] +14 0 0 3 +After: [0, 2, 3, 0] + +Before: [3, 2, 2, 3] +13 3 1 1 +After: [3, 0, 2, 3] + +Before: [1, 1, 2, 2] +9 0 2 3 +After: [1, 1, 2, 0] + +Before: [0, 2, 1, 3] +14 0 0 2 +After: [0, 2, 0, 3] + +Before: [1, 0, 2, 1] +7 3 2 3 +After: [1, 0, 2, 1] + +Before: [0, 3, 2, 1] +7 3 2 3 +After: [0, 3, 2, 1] + +Before: [0, 1, 3, 2] +11 2 2 0 +After: [1, 1, 3, 2] + +Before: [0, 0, 2, 0] +13 0 0 2 +After: [0, 0, 1, 0] + +Before: [3, 1, 1, 3] +11 0 0 2 +After: [3, 1, 1, 3] + +Before: [3, 2, 1, 3] +0 3 0 3 +After: [3, 2, 1, 3] + +Before: [1, 2, 2, 0] +9 0 2 0 +After: [0, 2, 2, 0] + +Before: [3, 0, 0, 3] +0 3 0 0 +After: [3, 0, 0, 3] + +Before: [1, 0, 1, 3] +2 2 3 0 +After: [0, 0, 1, 3] + +Before: [0, 0, 2, 1] +7 3 2 3 +After: [0, 0, 2, 1] + +Before: [1, 1, 2, 2] +15 1 0 3 +After: [1, 1, 2, 1] + +Before: [2, 1, 1, 3] +2 1 3 0 +After: [0, 1, 1, 3] + +Before: [0, 2, 0, 2] +8 0 3 0 +After: [0, 2, 0, 2] + +Before: [3, 1, 0, 3] +0 3 0 0 +After: [3, 1, 0, 3] + +Before: [2, 3, 2, 3] +2 2 3 1 +After: [2, 0, 2, 3] + +Before: [2, 1, 2, 3] +0 2 0 0 +After: [2, 1, 2, 3] + +Before: [2, 0, 2, 3] +8 1 0 3 +After: [2, 0, 2, 0] + +Before: [1, 1, 2, 3] +2 2 3 1 +After: [1, 0, 2, 3] + +Before: [0, 0, 2, 2] +8 0 3 1 +After: [0, 0, 2, 2] + +Before: [1, 0, 2, 1] +7 3 2 0 +After: [1, 0, 2, 1] + +Before: [1, 3, 2, 3] +9 0 2 2 +After: [1, 3, 0, 3] + +Before: [1, 1, 3, 3] +11 2 2 1 +After: [1, 1, 3, 3] + +Before: [1, 1, 0, 3] +15 1 0 1 +After: [1, 1, 0, 3] + +Before: [2, 3, 3, 2] +4 0 3 1 +After: [2, 1, 3, 2] + +Before: [2, 1, 0, 1] +6 3 3 0 +After: [0, 1, 0, 1] + +Before: [1, 1, 2, 2] +10 1 3 2 +After: [1, 1, 0, 2] + +Before: [2, 0, 2, 1] +7 3 2 3 +After: [2, 0, 2, 1] + +Before: [2, 3, 2, 2] +13 2 2 3 +After: [2, 3, 2, 1] + +Before: [0, 1, 1, 0] +14 0 0 0 +After: [0, 1, 1, 0] + +Before: [0, 1, 3, 2] +14 0 0 1 +After: [0, 0, 3, 2] + +Before: [0, 3, 2, 3] +8 0 1 2 +After: [0, 3, 0, 3] + +Before: [2, 3, 1, 3] +2 2 3 0 +After: [0, 3, 1, 3] + +Before: [0, 0, 1, 1] +8 0 2 0 +After: [0, 0, 1, 1] + +Before: [0, 1, 0, 2] +10 1 3 0 +After: [0, 1, 0, 2] + +Before: [2, 3, 3, 3] +5 3 3 3 +After: [2, 3, 3, 3] + +Before: [0, 3, 2, 1] +7 3 2 2 +After: [0, 3, 1, 1] + +Before: [1, 0, 2, 3] +2 2 3 1 +After: [1, 0, 2, 3] + +Before: [2, 1, 2, 1] +7 3 2 3 +After: [2, 1, 2, 1] + +Before: [3, 1, 1, 1] +0 1 0 0 +After: [1, 1, 1, 1] + +Before: [2, 3, 0, 3] +5 3 3 3 +After: [2, 3, 0, 3] + +Before: [2, 0, 2, 0] +13 2 2 0 +After: [1, 0, 2, 0] + +Before: [3, 2, 2, 3] +13 3 2 2 +After: [3, 2, 0, 3] + +Before: [2, 0, 2, 1] +0 2 0 2 +After: [2, 0, 2, 1] + +Before: [3, 1, 2, 0] +1 1 2 0 +After: [0, 1, 2, 0] + +Before: [1, 2, 2, 1] +9 0 2 3 +After: [1, 2, 2, 0] + +Before: [3, 0, 1, 1] +0 3 0 0 +After: [1, 0, 1, 1] + +Before: [3, 1, 3, 3] +0 1 0 2 +After: [3, 1, 1, 3] + +Before: [0, 1, 1, 3] +2 1 3 1 +After: [0, 0, 1, 3] + +Before: [0, 3, 3, 3] +5 3 3 1 +After: [0, 3, 3, 3] + +Before: [3, 3, 2, 2] +13 2 2 3 +After: [3, 3, 2, 1] + +Before: [1, 1, 2, 1] +1 1 2 3 +After: [1, 1, 2, 0] + +Before: [1, 1, 3, 2] +15 1 0 0 +After: [1, 1, 3, 2] + +Before: [1, 0, 2, 2] +5 2 2 1 +After: [1, 2, 2, 2] + +Before: [2, 2, 1, 1] +11 0 1 1 +After: [2, 1, 1, 1] + +Before: [0, 0, 3, 1] +14 0 0 1 +After: [0, 0, 3, 1] + +Before: [2, 1, 2, 2] +10 1 3 1 +After: [2, 0, 2, 2] + +Before: [0, 1, 0, 2] +10 1 3 3 +After: [0, 1, 0, 0] + +Before: [3, 1, 2, 2] +1 1 2 3 +After: [3, 1, 2, 0] + +Before: [1, 0, 2, 1] +9 0 2 3 +After: [1, 0, 2, 0] + +Before: [2, 1, 2, 2] +1 1 2 1 +After: [2, 0, 2, 2] + +Before: [2, 3, 1, 2] +4 0 3 0 +After: [1, 3, 1, 2] + +Before: [2, 1, 3, 3] +5 3 3 3 +After: [2, 1, 3, 3] + +Before: [2, 2, 3, 3] +2 1 3 0 +After: [0, 2, 3, 3] + +Before: [1, 1, 3, 2] +15 1 0 1 +After: [1, 1, 3, 2] + +Before: [2, 3, 2, 1] +7 3 2 1 +After: [2, 1, 2, 1] + +Before: [1, 0, 2, 0] +9 0 2 2 +After: [1, 0, 0, 0] + +Before: [3, 3, 2, 3] +5 2 2 1 +After: [3, 2, 2, 3] + +Before: [3, 1, 2, 2] +1 1 2 1 +After: [3, 0, 2, 2] + +Before: [0, 0, 2, 3] +2 2 3 3 +After: [0, 0, 2, 0] + +Before: [3, 3, 1, 3] +2 2 3 0 +After: [0, 3, 1, 3] + +Before: [2, 2, 2, 3] +0 2 0 1 +After: [2, 2, 2, 3] + +Before: [3, 1, 2, 1] +0 1 0 2 +After: [3, 1, 1, 1] + +Before: [3, 3, 2, 1] +7 3 2 0 +After: [1, 3, 2, 1] + +Before: [0, 1, 2, 0] +1 1 2 2 +After: [0, 1, 0, 0] + +Before: [0, 0, 1, 0] +14 0 0 0 +After: [0, 0, 1, 0] + +Before: [0, 2, 2, 1] +12 2 1 3 +After: [0, 2, 2, 1] + +Before: [3, 2, 3, 1] +6 3 3 3 +After: [3, 2, 3, 0] + +Before: [1, 1, 2, 1] +1 1 2 2 +After: [1, 1, 0, 1] + +Before: [2, 3, 1, 2] +4 0 3 3 +After: [2, 3, 1, 1] + +Before: [2, 2, 1, 2] +4 0 3 1 +After: [2, 1, 1, 2] + +Before: [2, 1, 1, 2] +4 0 3 0 +After: [1, 1, 1, 2] + + + +9 2 0 1 +9 0 1 0 +9 3 0 3 +10 3 1 1 +8 1 1 1 +14 1 2 2 +7 2 2 1 +9 1 3 3 +9 1 2 0 +9 3 0 2 +8 3 2 3 +8 3 1 3 +14 3 1 1 +7 1 3 2 +9 1 2 3 +8 0 0 0 +0 0 2 0 +8 1 0 1 +0 1 3 1 +15 3 0 0 +8 0 3 0 +8 0 2 0 +14 2 0 2 +7 2 1 1 +9 1 2 2 +8 0 0 0 +0 0 3 0 +9 0 3 3 +1 0 2 2 +8 2 1 2 +14 2 1 1 +7 1 0 2 +8 2 0 3 +0 3 2 3 +9 2 1 0 +9 3 3 1 +4 0 3 0 +8 0 3 0 +14 0 2 2 +9 1 1 3 +9 1 2 1 +9 1 0 0 +14 1 3 0 +8 0 1 0 +14 0 2 2 +9 2 1 1 +9 2 2 0 +6 0 3 1 +8 1 2 1 +8 1 2 1 +14 1 2 2 +7 2 2 1 +9 1 0 0 +8 1 0 3 +0 3 0 3 +9 3 0 2 +12 3 2 0 +8 0 3 0 +8 0 1 0 +14 0 1 1 +9 1 2 0 +8 3 0 3 +0 3 1 3 +9 0 0 2 +8 0 2 2 +8 2 2 2 +14 1 2 1 +9 2 0 0 +8 0 0 2 +0 2 2 2 +6 0 3 0 +8 0 1 0 +8 0 3 0 +14 0 1 1 +7 1 0 3 +9 2 3 0 +9 3 3 2 +9 3 0 1 +1 1 2 2 +8 2 2 2 +14 3 2 3 +7 3 3 0 +9 0 1 2 +9 0 1 1 +9 3 1 3 +1 3 2 2 +8 2 3 2 +14 0 2 0 +7 0 0 3 +9 2 2 0 +9 1 1 1 +9 3 2 2 +13 0 2 1 +8 1 2 1 +8 1 2 1 +14 3 1 3 +7 3 0 1 +9 2 2 3 +9 0 1 2 +12 2 3 2 +8 2 1 2 +14 1 2 1 +8 1 0 2 +0 2 2 2 +9 1 2 3 +8 2 0 0 +0 0 1 0 +7 0 2 0 +8 0 3 0 +8 0 2 0 +14 1 0 1 +7 1 0 0 +8 3 0 2 +0 2 1 2 +9 1 3 1 +14 1 3 3 +8 3 1 3 +8 3 3 3 +14 0 3 0 +9 2 1 1 +9 0 1 3 +9 2 3 3 +8 3 2 3 +8 3 3 3 +14 0 3 0 +7 0 2 1 +9 1 2 3 +9 2 1 0 +6 0 3 2 +8 2 3 2 +14 1 2 1 +7 1 2 3 +9 1 1 0 +9 2 1 2 +9 3 1 1 +0 0 1 2 +8 2 2 2 +14 2 3 3 +7 3 1 0 +9 2 1 3 +8 0 0 2 +0 2 3 2 +9 0 0 1 +9 2 1 2 +8 2 3 2 +8 2 3 2 +14 0 2 0 +7 0 1 2 +9 1 2 3 +9 2 3 1 +9 3 2 0 +10 0 1 0 +8 0 2 0 +14 2 0 2 +7 2 0 3 +8 2 0 2 +0 2 3 2 +9 2 1 0 +8 1 0 1 +0 1 3 1 +10 1 0 1 +8 1 2 1 +8 1 3 1 +14 1 3 3 +7 3 2 0 +9 1 0 1 +9 1 3 3 +9 2 3 1 +8 1 2 1 +14 1 0 0 +7 0 3 2 +9 2 3 0 +9 3 0 3 +9 2 1 1 +10 3 0 1 +8 1 3 1 +14 2 1 2 +7 2 0 0 +9 3 0 2 +9 3 0 1 +9 2 1 3 +10 1 3 3 +8 3 2 3 +14 3 0 0 +7 0 0 2 +9 1 3 3 +9 2 0 0 +9 1 1 1 +6 0 3 0 +8 0 1 0 +14 0 2 2 +7 2 0 3 +8 2 0 0 +0 0 1 0 +9 2 0 2 +9 2 3 1 +7 0 2 0 +8 0 2 0 +14 0 3 3 +9 3 2 1 +9 1 0 2 +9 1 0 0 +0 0 1 0 +8 0 2 0 +14 3 0 3 +7 3 3 1 +9 2 2 3 +9 2 0 2 +9 1 3 0 +7 0 2 3 +8 3 3 3 +8 3 2 3 +14 1 3 1 +9 0 3 2 +9 3 3 3 +8 0 2 3 +8 3 2 3 +8 3 2 3 +14 3 1 1 +8 1 0 0 +0 0 0 0 +9 1 3 3 +9 3 0 2 +8 3 2 2 +8 2 2 2 +14 1 2 1 +7 1 0 2 +9 2 0 0 +9 0 2 1 +9 2 1 3 +5 0 3 3 +8 3 1 3 +8 3 3 3 +14 2 3 2 +9 1 2 3 +9 1 0 1 +15 3 0 0 +8 0 2 0 +14 0 2 2 +7 2 0 0 +9 1 2 2 +9 2 0 3 +15 1 3 2 +8 2 1 2 +14 2 0 0 +9 0 0 3 +8 3 0 2 +0 2 2 2 +9 0 1 1 +5 2 3 1 +8 1 1 1 +8 1 3 1 +14 0 1 0 +9 3 2 2 +9 3 0 1 +9 2 2 3 +1 1 2 2 +8 2 3 2 +14 2 0 0 +7 0 1 3 +9 2 3 2 +9 2 2 0 +11 0 1 2 +8 2 1 2 +14 3 2 3 +7 3 0 1 +9 2 3 2 +9 1 1 0 +9 3 3 3 +7 0 2 3 +8 3 1 3 +14 1 3 1 +9 3 3 2 +8 1 0 3 +0 3 3 3 +8 3 0 0 +0 0 2 0 +13 0 2 2 +8 2 2 2 +8 2 2 2 +14 1 2 1 +9 2 2 2 +9 1 3 3 +6 0 3 2 +8 2 3 2 +14 1 2 1 +7 1 0 2 +9 3 3 1 +9 1 0 0 +0 3 1 1 +8 1 3 1 +14 2 1 2 +7 2 1 1 +9 2 1 0 +8 3 0 3 +0 3 3 3 +9 3 3 2 +3 0 2 2 +8 2 1 2 +8 2 1 2 +14 2 1 1 +7 1 2 2 +8 2 0 3 +0 3 1 3 +9 0 1 1 +6 0 3 1 +8 1 1 1 +14 2 1 2 +9 0 3 1 +9 3 2 0 +9 2 3 3 +10 0 3 1 +8 1 2 1 +8 1 2 1 +14 2 1 2 +7 2 3 3 +9 0 1 2 +9 1 0 0 +9 3 3 1 +8 0 2 1 +8 1 1 1 +14 3 1 3 +7 3 1 2 +9 2 0 1 +9 0 2 3 +9 2 3 0 +5 1 3 1 +8 1 3 1 +8 1 1 1 +14 1 2 2 +7 2 0 1 +9 3 2 0 +8 0 0 2 +0 2 0 2 +9 3 2 3 +13 2 0 0 +8 0 3 0 +14 1 0 1 +8 3 0 2 +0 2 2 2 +8 1 0 0 +0 0 1 0 +7 0 2 2 +8 2 3 2 +8 2 1 2 +14 1 2 1 +7 1 2 2 +9 0 0 3 +8 2 0 1 +0 1 1 1 +14 0 0 0 +8 0 2 0 +14 2 0 2 +7 2 3 3 +8 2 0 0 +0 0 3 0 +8 0 0 1 +0 1 3 1 +9 0 0 2 +1 0 2 0 +8 0 1 0 +14 0 3 3 +7 3 2 1 +9 1 2 3 +9 2 1 0 +6 0 3 0 +8 0 2 0 +8 0 3 0 +14 0 1 1 +7 1 0 3 +9 2 0 2 +9 1 1 0 +8 2 0 1 +0 1 2 1 +7 0 2 1 +8 1 2 1 +8 1 3 1 +14 3 1 3 +9 1 1 1 +7 0 2 1 +8 1 1 1 +14 1 3 3 +7 3 3 2 +9 2 0 3 +9 3 1 1 +0 0 1 0 +8 0 1 0 +14 2 0 2 +7 2 0 3 +8 0 0 2 +0 2 1 2 +9 2 0 0 +1 1 2 1 +8 1 1 1 +14 1 3 3 +7 3 1 2 +9 1 2 1 +9 2 0 3 +15 1 3 0 +8 0 2 0 +14 0 2 2 +9 3 2 3 +9 2 0 0 +9 3 2 1 +11 0 1 0 +8 0 3 0 +14 0 2 2 +7 2 3 3 +9 3 1 0 +9 3 3 2 +9 1 2 1 +8 1 2 1 +8 1 1 1 +8 1 3 1 +14 3 1 3 +7 3 0 0 +9 2 2 2 +8 1 0 3 +0 3 0 3 +9 0 2 1 +2 3 2 1 +8 1 1 1 +14 1 0 0 +7 0 0 1 +9 2 1 0 +9 3 2 2 +12 3 2 2 +8 2 3 2 +14 2 1 1 +7 1 0 2 +8 0 0 1 +0 1 3 1 +9 2 3 3 +10 1 3 1 +8 1 2 1 +14 1 2 2 +7 2 2 1 +9 1 0 2 +5 0 3 0 +8 0 1 0 +14 0 1 1 +7 1 3 3 +9 3 3 2 +9 2 0 0 +9 3 1 1 +13 0 2 2 +8 2 3 2 +8 2 1 2 +14 3 2 3 +9 3 3 2 +8 2 0 1 +0 1 0 1 +3 0 2 1 +8 1 3 1 +8 1 3 1 +14 1 3 3 +7 3 2 1 +9 1 3 3 +13 0 2 2 +8 2 2 2 +14 2 1 1 +7 1 2 0 +9 2 1 3 +9 1 0 1 +9 2 0 2 +5 2 3 3 +8 3 1 3 +14 0 3 0 +8 1 0 3 +0 3 2 3 +9 3 1 1 +10 1 3 1 +8 1 3 1 +8 1 1 1 +14 0 1 0 +9 3 3 1 +9 3 2 3 +11 2 1 1 +8 1 2 1 +8 1 1 1 +14 1 0 0 +7 0 0 1 +9 0 2 2 +8 2 0 0 +0 0 3 0 +8 1 0 3 +0 3 2 3 +13 2 0 3 +8 3 3 3 +14 3 1 1 +9 1 1 2 +8 1 0 3 +0 3 1 3 +14 3 3 3 +8 3 3 3 +14 3 1 1 +7 1 3 3 +9 3 0 2 +9 1 0 1 +9 2 1 0 +8 0 1 0 +8 0 2 0 +14 0 3 3 +7 3 3 2 +8 3 0 0 +0 0 2 0 +8 3 0 1 +0 1 3 1 +9 1 1 3 +6 0 3 0 +8 0 2 0 +14 2 0 2 +9 1 0 1 +9 2 1 3 +9 0 2 0 +15 1 3 1 +8 1 3 1 +14 2 1 2 +7 2 3 1 +9 1 3 0 +9 3 1 2 +9 0 0 3 +12 3 2 3 +8 3 1 3 +14 3 1 1 +7 1 1 2 +9 1 1 3 +9 2 3 0 +9 0 1 1 +15 3 0 0 +8 0 2 0 +14 0 2 2 +7 2 3 0 +8 1 0 1 +0 1 2 1 +9 0 2 3 +9 2 2 2 +2 3 2 3 +8 3 3 3 +14 0 3 0 +7 0 0 2 +9 3 3 0 +9 2 2 3 +3 1 0 1 +8 1 1 1 +14 1 2 2 +9 0 1 1 +10 0 3 0 +8 0 1 0 +8 0 2 0 +14 0 2 2 +8 3 0 0 +0 0 2 0 +4 0 3 3 +8 3 3 3 +14 3 2 2 +7 2 3 0 +8 0 0 3 +0 3 1 3 +9 3 2 1 +9 2 0 2 +14 3 3 1 +8 1 3 1 +14 1 0 0 +7 0 1 2 +9 1 0 0 +9 2 0 3 +9 3 0 1 +10 1 3 3 +8 3 2 3 +14 2 3 2 +7 2 2 1 +8 3 0 3 +0 3 0 3 +9 2 1 2 +8 3 0 0 +0 0 3 0 +11 2 0 3 +8 3 1 3 +8 3 1 3 +14 1 3 1 +9 1 0 3 +9 3 2 2 +9 2 0 0 +13 0 2 3 +8 3 2 3 +14 3 1 1 +8 3 0 3 +0 3 3 3 +8 0 0 0 +0 0 1 0 +8 0 2 0 +8 0 3 0 +14 1 0 1 +7 1 1 3 +9 1 3 1 +9 2 1 0 +13 0 2 0 +8 0 2 0 +8 0 2 0 +14 3 0 3 +7 3 3 0 +8 0 0 3 +0 3 3 3 +9 0 2 1 +1 3 2 2 +8 2 2 2 +14 2 0 0 +9 3 2 2 +9 3 1 1 +1 3 2 1 +8 1 3 1 +8 1 1 1 +14 1 0 0 +7 0 2 2 +9 3 3 1 +9 1 2 0 +9 1 0 3 +0 0 1 1 +8 1 3 1 +14 2 1 2 +7 2 3 1 +8 3 0 2 +0 2 3 2 +8 3 0 0 +0 0 2 0 +9 2 1 3 +4 0 3 0 +8 0 1 0 +14 0 1 1 +9 3 1 3 +9 2 3 2 +9 2 0 0 +10 3 0 0 +8 0 3 0 +14 1 0 1 +8 0 0 3 +0 3 0 3 +9 1 0 0 +7 0 2 2 +8 2 1 2 +14 1 2 1 +9 3 0 0 +8 2 0 2 +0 2 0 2 +13 2 0 2 +8 2 3 2 +14 1 2 1 +9 3 0 2 +9 2 2 3 +9 2 2 0 +3 0 2 3 +8 3 2 3 +14 3 1 1 +7 1 2 2 +9 2 0 3 +8 1 0 1 +0 1 1 1 +4 0 3 3 +8 3 3 3 +8 3 1 3 +14 3 2 2 +7 2 2 1 +9 3 0 0 +8 0 0 2 +0 2 0 2 +9 2 1 3 +13 2 0 2 +8 2 3 2 +14 1 2 1 +7 1 1 2 +9 0 1 1 +9 1 0 0 +8 3 0 3 +0 3 3 3 +0 0 1 1 +8 1 1 1 +14 1 2 2 +7 2 3 1 +9 2 3 0 +9 2 1 3 +9 2 0 2 +4 0 3 3 +8 3 3 3 +14 1 3 1 +9 1 1 3 +8 1 0 2 +0 2 0 2 +6 0 3 3 +8 3 3 3 +14 3 1 1 +7 1 1 3 +9 1 2 0 +9 3 0 1 +9 3 1 2 +0 0 1 0 +8 0 1 0 +14 0 3 3 +7 3 3 1 +8 1 0 0 +0 0 1 0 +9 2 2 3 +9 2 0 2 +7 0 2 0 +8 0 2 0 +14 0 1 1 +7 1 0 2 +9 1 0 3 +9 2 1 1 +9 1 1 0 +14 0 0 1 +8 1 1 1 +8 1 2 1 +14 1 2 2 +7 2 1 3 +9 2 3 0 +9 3 1 2 +9 2 3 1 +13 0 2 0 +8 0 3 0 +14 3 0 3 +7 3 0 2 +9 3 1 1 +9 1 0 3 +9 2 2 0 +11 0 1 3 +8 3 1 3 +14 2 3 2 +7 2 2 1 +8 2 0 0 +0 0 1 0 +9 2 1 2 +9 1 3 3 +7 0 2 3 +8 3 3 3 +14 3 1 1 +7 1 2 0 +9 0 1 3 +9 1 1 1 +2 3 2 2 +8 2 1 2 +14 2 0 0 +7 0 3 3 +9 3 0 1 +9 1 3 0 +8 3 0 2 +0 2 2 2 +0 0 1 1 +8 1 2 1 +14 1 3 3 +7 3 1 2 +9 2 1 1 +9 1 2 3 +9 2 1 0 +6 0 3 0 +8 0 1 0 +8 0 3 0 +14 0 2 2 +9 2 1 3 +9 1 3 1 +9 2 1 0 +4 0 3 1 +8 1 3 1 +8 1 1 1 +14 1 2 2 +7 2 3 1 +9 1 3 2 +9 3 3 0 +9 0 2 3 +9 2 0 2 +8 2 1 2 +14 2 1 1 +9 3 2 3 +8 1 0 2 +0 2 0 2 +9 2 2 0 +10 3 0 3 +8 3 2 3 +14 1 3 1 +9 0 1 3 +9 2 1 2 +2 3 2 0 +8 0 2 0 +14 1 0 1 +7 1 0 3 +9 3 0 0 +9 0 3 1 +11 2 0 0 +8 0 2 0 +14 3 0 3 +9 3 3 2 +9 3 2 0 +9 2 1 1 +1 0 2 0 +8 0 3 0 +14 3 0 3 +7 3 0 2 +8 1 0 0 +0 0 2 0 +9 1 0 3 +8 0 0 1 +0 1 0 1 +6 0 3 3 +8 3 2 3 +8 3 1 3 +14 3 2 2 +7 2 0 3 +9 3 2 2 +13 0 2 2 +8 2 1 2 +14 3 2 3 +7 3 3 1 +8 0 0 3 +0 3 1 3 +9 3 1 0 +9 2 0 2 +11 2 0 3 +8 3 1 3 +14 3 1 1 +9 0 1 3 +9 0 1 0 +2 3 2 2 +8 2 2 2 +8 2 2 2 +14 2 1 1 +7 1 3 3 +9 0 2 2 +9 3 1 1 +1 1 2 2 +8 2 3 2 +14 2 3 3 +7 3 3 0 diff --git a/src/main/resources/2018/day17.txt b/src/main/resources/2018/day17.txt new file mode 100644 index 00000000..0aed2da6 --- /dev/null +++ b/src/main/resources/2018/day17.txt @@ -0,0 +1,2166 @@ +x=652, y=891..904 +x=570, y=1112..1122 +y=736, x=626..628 +x=487, y=1410..1419 +x=655, y=1170..1172 +y=1385, x=663..667 +y=891, x=700..718 +x=737, y=730..735 +x=605, y=1853..1867 +x=622, y=1115..1117 +x=628, y=1109..1120 +x=536, y=209..219 +x=730, y=1633..1637 +y=1349, x=611..679 +x=735, y=1330..1341 +x=506, y=1895..1905 +x=639, y=379..390 +y=1905, x=492..506 +x=525, y=197..225 +y=18, x=457..463 +x=536, y=300..302 +y=1584, x=483..486 +x=494, y=398..419 +y=1357, x=588..590 +x=618, y=136..155 +y=1673, x=716..718 +x=761, y=76..95 +x=437, y=1103..1120 +x=538, y=1803..1807 +y=855, x=685..692 +y=229, x=464..480 +y=1745, x=737..739 +x=679, y=1170..1189 +x=685, y=36..60 +x=610, y=1115..1117 +x=456, y=1556..1568 +x=646, y=1273..1282 +x=598, y=59..65 +x=748, y=1670..1679 +x=529, y=1798..1810 +x=695, y=764..774 +x=630, y=870..895 +y=240, x=532..541 +y=1216, x=734..736 +x=462, y=538..547 +y=616, x=479..489 +x=769, y=285..308 +x=461, y=1758..1764 +y=1620, x=713..731 +x=493, y=445..460 +x=618, y=1445..1455 +x=666, y=309..331 +y=1287, x=613..616 +y=764, x=481..507 +x=737, y=1867..1871 +x=454, y=1753..1778 +x=506, y=941..943 +x=585, y=996..1004 +x=641, y=1009..1012 +y=480, x=460..465 +y=1495, x=679..704 +x=590, y=1820..1846 +x=486, y=1345..1366 +x=620, y=364..371 +x=790, y=1105..1127 +y=1198, x=769..774 +y=1445, x=449..472 +x=645, y=1254..1259 +x=626, y=1186..1198 +x=512, y=566..568 +y=310, x=589..607 +x=612, y=485..497 +y=1309, x=713..727 +x=461, y=1117..1142 +y=472, x=637..640 +y=240, x=684..712 +x=684, y=785..794 +y=1169, x=551..569 +x=483, y=1649..1653 +y=1142, x=449..461 +x=589, y=1653..1681 +x=487, y=510..521 +x=709, y=311..336 +x=632, y=1738..1743 +x=628, y=722..736 +x=455, y=1162..1182 +x=760, y=614..626 +x=477, y=1388..1416 +x=746, y=1588..1598 +x=594, y=1880..1906 +x=747, y=438..465 +x=659, y=291..295 +x=505, y=1100..1103 +y=1521, x=573..594 +x=664, y=1858..1872 +y=1034, x=732..739 +y=1580, x=746..750 +x=770, y=611..635 +x=595, y=505..518 +y=120, x=610..628 +x=595, y=1667..1689 +x=493, y=710..729 +x=598, y=1874..1896 +y=1025, x=661..663 +x=564, y=1628..1644 +y=71, x=731..758 +x=526, y=55..68 +x=732, y=1818..1831 +y=1803, x=535..538 +y=1482, x=713..715 +x=546, y=294..306 +x=556, y=821..838 +x=541, y=321..326 +x=666, y=979..990 +x=461, y=1161..1182 +y=87, x=524..528 +y=586, x=518..520 +x=685, y=73..88 +x=538, y=1458..1462 +x=479, y=608..616 +x=446, y=1104..1120 +x=660, y=1857..1872 +x=775, y=1045..1055 +y=873, x=494..496 +x=646, y=5..26 +x=511, y=723..727 +x=696, y=1677..1693 +x=668, y=1891..1904 +x=573, y=151..153 +x=700, y=789..791 +y=147, x=446..457 +x=468, y=1514..1516 +x=579, y=1079..1091 +x=493, y=1664..1670 +x=757, y=899..921 +y=1567, x=503..513 +x=769, y=715..729 +y=774, x=679..695 +y=534, x=708..711 +x=715, y=922..924 +x=573, y=856..863 +x=476, y=1738..1748 +x=596, y=1525..1538 +y=1547, x=520..545 +y=336, x=688..709 +x=757, y=270..298 +x=748, y=1778..1789 +x=597, y=220..223 +x=543, y=1881..1902 +x=696, y=1117..1129 +x=633, y=1206..1219 +x=720, y=856..874 +y=1219, x=633..652 +x=517, y=78..90 +y=326, x=541..554 +x=687, y=911..918 +y=1520, x=455..474 +x=547, y=278..282 +x=437, y=721..728 +x=716, y=1673..1679 +x=756, y=1574..1578 +x=536, y=804..807 +y=1515, x=582..588 +x=524, y=1376..1398 +x=570, y=968..973 +x=584, y=1729..1743 +y=1119, x=588..591 +x=542, y=1412..1439 +x=551, y=1680..1697 +y=724, x=759..763 +x=674, y=865..877 +x=761, y=856..870 +y=1410, x=647..657 +y=1593, x=598..606 +x=554, y=595..600 +x=547, y=252..266 +x=656, y=1252..1265 +x=512, y=869..877 +x=755, y=585..595 +y=1621, x=774..781 +x=654, y=403..416 +y=1364, x=610..614 +x=529, y=208..219 +x=447, y=1701..1722 +x=708, y=720..731 +x=716, y=1504..1515 +y=948, x=605..619 +x=724, y=264..283 +x=544, y=406..408 +x=500, y=773..777 +x=725, y=1735..1749 +x=713, y=1115..1138 +y=53, x=464..467 +x=613, y=1621..1648 +x=702, y=432..452 +x=554, y=1305..1318 +y=408, x=544..547 +y=1623, x=774..781 +y=1443, x=777..790 +x=727, y=1160..1164 +y=1139, x=480..499 +x=626, y=1585..1611 +x=543, y=629..638 +y=1681, x=573..589 +x=651, y=99..105 +x=575, y=768..779 +x=609, y=1164..1178 +y=1058, x=716..723 +x=692, y=1399..1416 +y=1830, x=768..784 +y=1247, x=690..693 +x=562, y=1015..1031 +y=1719, x=460..462 +y=1810, x=529..544 +x=647, y=56..76 +x=662, y=94..120 +x=466, y=1534..1541 +y=633, x=512..525 +x=684, y=221..240 +y=171, x=474..559 +x=500, y=198..225 +x=474, y=888..897 +y=159, x=729..739 +y=1298, x=775..782 +y=1111, x=751..757 +y=19, x=493..495 +x=660, y=592..603 +x=557, y=1376..1383 +x=677, y=1826..1845 +y=1872, x=660..664 +y=93, x=626..637 +x=518, y=1623..1643 +y=787, x=594..618 +y=506, x=497..507 +x=671, y=594..606 +y=475, x=608..613 +x=692, y=852..855 +y=260, x=505..510 +x=573, y=1700..1723 +y=1216, x=642..645 +x=722, y=348..365 +y=510, x=478..487 +y=417, x=670..694 +y=753, x=590..597 +y=928, x=708..724 +x=497, y=495..506 +x=579, y=1006..1020 +y=1488, x=786..790 +x=553, y=400..411 +y=38, x=629..631 +x=646, y=1447..1459 +x=716, y=964..977 +x=673, y=890..904 +x=536, y=145..147 +x=569, y=151..153 +y=1273, x=717..721 +y=1643, x=513..518 +y=886, x=582..594 +y=353, x=454..471 +x=481, y=1083..1088 +y=1670, x=578..580 +x=664, y=893..895 +x=606, y=1565..1593 +x=737, y=1365..1392 +y=727, x=498..511 +x=639, y=1557..1562 +x=530, y=1735..1745 +x=629, y=1424..1434 +x=609, y=1054..1065 +x=476, y=82..85 +y=1724, x=745..764 +y=777, x=474..500 +y=210, x=480..497 +y=745, x=612..634 +x=528, y=1680..1697 +y=458, x=771..773 +x=520, y=1882..1902 +x=611, y=142..150 +x=632, y=1184..1192 +x=609, y=547..561 +x=724, y=915..928 +y=1341, x=735..751 +x=717, y=495..514 +x=463, y=18..23 +x=661, y=1040..1052 +x=707, y=1429..1441 +x=589, y=1026..1045 +x=480, y=201..210 +x=608, y=162..171 +x=607, y=1482..1495 +x=505, y=257..260 +x=602, y=1163..1178 +x=647, y=936..944 +x=560, y=616..623 +x=670, y=633..646 +x=551, y=1735..1745 +x=506, y=1299..1301 +x=751, y=1094..1111 +x=774, y=1621..1623 +x=461, y=1404..1410 +x=747, y=1211..1227 +y=1120, x=437..446 +y=1454, x=663..666 +y=533, x=731..745 +x=771, y=1447..1454 +x=608, y=142..150 +x=755, y=270..298 +y=822, x=626..632 +x=512, y=1571..1592 +x=535, y=1531..1535 +x=618, y=364..371 +y=90, x=517..536 +x=755, y=205..214 +x=684, y=555..557 +x=684, y=761..770 +x=727, y=1212..1227 +x=612, y=1226..1230 +y=325, x=604..609 +x=472, y=270..277 +y=41, x=621..637 +x=571, y=510..514 +x=623, y=618..622 +x=579, y=278..282 +x=577, y=1880..1906 +x=570, y=113..116 +x=603, y=117..124 +x=749, y=1848..1850 +x=483, y=425..432 +y=1259, x=541..551 +x=472, y=503..525 +x=648, y=404..416 +y=545, x=434..448 +x=609, y=1881..1891 +y=1679, x=716..718 +x=633, y=1531..1533 +x=442, y=604..612 +y=40, x=729..741 +x=457, y=431..439 +x=591, y=1053..1065 +y=898, x=506..534 +x=483, y=1204..1210 +x=605, y=502..515 +x=687, y=746..748 +x=638, y=1128..1141 +x=663, y=1167..1177 +x=685, y=699..708 +y=967, x=735..748 +x=721, y=1271..1273 +y=585, x=686..692 +y=1900, x=693..701 +x=627, y=276..284 +y=295, x=659..683 +x=575, y=1253..1268 +x=697, y=1434..1460 +x=479, y=1886..1910 +y=1378, x=706..730 +y=1577, x=522..535 +x=639, y=1061..1069 +y=1803, x=492..499 +y=1439, x=535..542 +x=546, y=180..194 +x=663, y=1454..1456 +y=1567, x=630..647 +x=536, y=78..90 +x=776, y=345..358 +x=468, y=1780..1807 +x=488, y=1051..1072 +x=446, y=124..147 +y=1160, x=676..678 +y=1764, x=461..472 +y=1196, x=494..507 +x=710, y=1037..1065 +x=612, y=504..518 +x=780, y=1908..1911 +x=467, y=294..310 +y=1624, x=445..461 +x=635, y=915..929 +x=497, y=1100..1103 +x=461, y=960..967 +x=577, y=1305..1318 +x=659, y=1466..1468 +y=237, x=532..541 +y=242, x=626..646 +y=1099, x=619..646 +y=1846, x=590..612 +y=1268, x=575..591 +x=682, y=721..731 +y=1069, x=639..641 +y=1682, x=704..726 +y=1048, x=608..631 +x=573, y=720..741 +y=1807, x=535..538 +x=620, y=443..448 +x=541, y=1342..1354 +x=745, y=512..533 +x=769, y=1195..1198 +x=464, y=1105..1108 +x=582, y=861..886 +x=733, y=1651..1665 +x=595, y=273..285 +x=475, y=1488..1491 +x=537, y=1739..1742 +y=1415, x=620..638 +y=770, x=684..687 +x=765, y=654..672 +x=746, y=1559..1580 +x=640, y=33..34 +x=607, y=1442..1451 +x=458, y=50..62 +x=496, y=555..561 +x=580, y=1628..1644 +x=683, y=978..990 +y=291, x=434..457 +y=129, x=556..576 +x=457, y=125..147 +x=754, y=1673..1682 +y=1045, x=589..600 +x=708, y=526..534 +x=556, y=121..129 +x=451, y=181..193 +y=1312, x=564..570 +y=729, x=751..769 +x=665, y=1313..1327 +x=588, y=1117..1119 +x=445, y=960..967 +x=599, y=906..923 +y=595, x=755..759 +x=731, y=200..211 +x=589, y=296..310 +x=759, y=585..595 +y=244, x=440..553 +x=580, y=1493..1499 +x=464, y=53..58 +x=465, y=411..416 +y=1896, x=598..624 +x=734, y=1797..1806 +x=534, y=1581..1588 +y=912, x=434..436 +y=26, x=646..665 +x=438, y=604..612 +y=1032, x=649..672 +x=674, y=198..214 +x=743, y=1800..1813 +y=1132, x=661..666 +x=679, y=613..624 +y=1826, x=557..566 +y=994, x=768..775 +x=442, y=395..397 +x=645, y=310..331 +y=867, x=751..754 +x=735, y=1691..1716 +x=755, y=484..491 +y=955, x=496..512 +x=514, y=669..696 +x=490, y=205..207 +x=779, y=1045..1055 +x=518, y=524..534 +y=1496, x=460..482 +y=491, x=738..755 +y=477, x=608..613 +x=457, y=18..23 +x=582, y=1512..1515 +y=836, x=457..466 +x=740, y=1196..1198 +x=701, y=1886..1900 +y=1881, x=609..615 +y=1347, x=769..790 +x=729, y=32..40 +x=523, y=1850..1867 +x=686, y=573..585 +y=834, x=717..733 +y=1512, x=737..748 +y=460, x=471..493 +x=520, y=907..910 +x=768, y=1688..1701 +y=863, x=751..754 +x=701, y=352..376 +x=557, y=656..667 +x=465, y=1135..1141 +x=613, y=1266..1287 +x=594, y=58..65 +x=717, y=856..874 +x=748, y=1413..1417 +y=1872, x=448..467 +y=298, x=563..569 +y=847, x=584..598 +y=1495, x=725..737 +y=658, x=703..720 +x=526, y=983..993 +y=250, x=640..652 +y=336, x=767..778 +y=336, x=460..463 +x=775, y=909..917 +x=723, y=1072..1087 +x=512, y=397..419 +x=450, y=1338..1364 +x=583, y=773..775 +x=530, y=789..801 +x=682, y=1833..1839 +x=739, y=1275..1280 +x=472, y=710..729 +y=1648, x=609..613 +y=1166, x=494..497 +x=441, y=200..212 +x=788, y=89..92 +x=782, y=707..720 +x=474, y=774..777 +y=1604, x=693..717 +y=1531, x=633..636 +y=169, x=708..711 +x=507, y=750..764 +x=737, y=827..851 +x=682, y=1170..1189 +y=171, x=608..629 +x=561, y=796..809 +x=680, y=248..261 +x=623, y=1688..1691 +y=552, x=725..736 +x=711, y=526..534 +y=900, x=720..746 +x=595, y=531..533 +y=532, x=529..533 +x=493, y=502..525 +x=580, y=1749..1773 +x=648, y=461..475 +x=573, y=1653..1681 +x=466, y=1900..1911 +x=471, y=795..821 +y=1366, x=470..486 +x=688, y=312..336 +x=513, y=1624..1643 +x=529, y=1370..1391 +x=781, y=1621..1623 +y=1698, x=463..470 +x=722, y=583..609 +x=637, y=86..93 +x=500, y=1208..1224 +x=474, y=1509..1520 +y=728, x=437..449 +x=500, y=1871..1877 +y=1065, x=591..609 +x=700, y=1766..1782 +y=1813, x=724..743 +y=1620, x=757..764 +x=632, y=1378..1387 +y=429, x=525..638 +x=534, y=883..898 +y=1386, x=493..518 +y=1259, x=642..645 +x=566, y=1810..1826 +x=439, y=1534..1541 +y=833, x=505..521 +y=722, x=759..763 +x=666, y=1114..1132 +y=1845, x=677..698 +y=328, x=604..609 +x=483, y=12..22 +x=739, y=141..159 +x=644, y=844..856 +x=750, y=149..150 +x=585, y=1256..1261 +y=1903, x=449..458 +x=517, y=254..265 +y=561, x=586..609 +x=724, y=1016..1018 +x=524, y=124..127 +x=518, y=583..586 +x=625, y=1401..1410 +x=713, y=1305..1309 +y=1192, x=632..634 +x=631, y=987..1003 +x=625, y=870..895 +x=706, y=1350..1378 +y=852, x=651..655 +y=1516, x=625..639 +x=467, y=1224..1238 +y=374, x=534..632 +x=689, y=1531..1539 +y=1087, x=723..742 +x=468, y=1488..1491 +x=665, y=592..603 +x=582, y=1256..1261 +x=616, y=1013..1018 +x=453, y=701..729 +x=653, y=1043..1045 +y=851, x=737..745 +x=566, y=787..793 +x=609, y=1442..1451 +y=1818, x=448..455 +y=184, x=749..768 +x=620, y=1404..1415 +x=507, y=571..589 +y=1904, x=668..673 +y=213, x=616..631 +x=685, y=1508..1511 +x=618, y=782..787 +x=553, y=716..736 +x=670, y=392..417 +x=725, y=986..1002 +x=611, y=1023..1025 +x=518, y=868..877 +x=761, y=1887..1897 +x=734, y=1214..1216 +y=109, x=523..545 +x=676, y=803..815 +x=521, y=815..833 +x=730, y=1350..1378 +x=768, y=1448..1454 +y=1533, x=633..636 +x=525, y=889..893 +x=510, y=596..613 +x=731, y=1608..1620 +y=1180, x=740..762 +x=475, y=1702..1722 +y=1912, x=693..701 +x=451, y=539..547 +y=568, x=512..524 +y=735, x=712..737 +x=434, y=203..215 +x=731, y=1567..1577 +x=586, y=936..938 +x=790, y=1438..1443 +x=441, y=745..765 +x=588, y=1354..1357 +x=455, y=1806..1818 +y=331, x=645..666 +x=539, y=789..801 +y=1108, x=464..468 +y=711, x=675..693 +y=352, x=549..599 +y=1768, x=736..760 +x=684, y=892..907 +x=738, y=485..491 +x=620, y=1688..1691 +y=1461, x=568..593 +y=1911, x=780..785 +y=816, x=534..558 +x=725, y=1487..1495 +x=769, y=1230..1246 +y=1867, x=724..737 +x=605, y=1739..1743 +x=786, y=1460..1488 +x=748, y=1504..1512 +x=684, y=1833..1839 +x=782, y=898..921 +x=504, y=668..696 +y=282, x=547..579 +y=583, x=518..520 +x=562, y=719..741 +x=671, y=1552..1555 +x=654, y=938..952 +y=277, x=472..476 +y=825, x=511..513 +x=513, y=1063..1071 +x=667, y=1203..1222 +x=738, y=1816..1828 +x=788, y=343..360 +x=604, y=325..328 +x=475, y=976..987 +x=688, y=1719..1738 +x=718, y=792..800 +y=1391, x=529..541 +x=706, y=884..887 +y=1888, x=627..638 +y=803, x=489..496 +y=1828, x=738..744 +x=751, y=863..867 +x=570, y=1330..1351 +y=623, x=560..573 +x=466, y=834..836 +x=553, y=235..244 +y=1611, x=626..646 +y=1531, x=535..539 +x=489, y=32..44 +x=598, y=1547..1557 +x=448, y=1858..1872 +x=485, y=76..88 +x=657, y=964..968 +x=655, y=715..720 +x=653, y=595..606 +x=496, y=848..873 +y=1191, x=575..582 +y=308, x=769..785 +x=784, y=1811..1830 +x=594, y=861..886 +y=1168, x=494..497 +x=449, y=1117..1142 +x=460, y=1836..1838 +y=1085, x=590..594 +x=586, y=1884..1890 +y=432, x=463..483 +x=452, y=1557..1568 +x=599, y=255..263 +y=1189, x=679..682 +x=521, y=1444..1454 +x=576, y=803..806 +x=754, y=863..867 +y=606, x=653..671 +x=650, y=138..165 +y=147, x=536..540 +y=1023, x=661..663 +x=509, y=176..194 +x=635, y=1041..1052 +y=88, x=665..685 +y=1539, x=679..689 +x=654, y=964..968 +y=331, x=460..463 +x=764, y=936..947 +x=769, y=1905..1915 +y=773, x=534..556 +x=674, y=79..85 +y=681, x=534..562 +x=522, y=1162..1184 +x=701, y=32..39 +x=744, y=1816..1828 +x=704, y=1664..1682 +y=1891, x=609..615 +x=648, y=961..971 +x=628, y=637..641 +y=1668, x=769..777 +x=725, y=543..552 +x=773, y=1230..1246 +x=638, y=676..695 +y=787, x=736..754 +y=736, x=541..553 +x=664, y=845..856 +y=1529, x=556..578 +x=633, y=1022..1025 +y=65, x=594..598 +x=627, y=1378..1387 +x=510, y=257..260 +x=619, y=1086..1099 +y=874, x=717..720 +x=449, y=722..728 +x=679, y=1484..1495 +x=529, y=1480..1484 +y=973, x=568..570 +x=462, y=702..729 +y=863, x=571..573 +y=1138, x=707..713 +x=661, y=1115..1132 +x=529, y=1300..1301 +y=801, x=530..539 +x=663, y=1367..1385 +x=645, y=1212..1216 +x=579, y=491..517 +x=530, y=1613..1617 +y=836, x=664..683 +y=1314, x=564..570 +x=494, y=1166..1168 +y=1511, x=685..691 +x=531, y=121..130 +y=779, x=575..590 +x=516, y=61..65 +x=726, y=133..148 +y=1229, x=438..442 +x=581, y=1389..1409 +x=745, y=148..150 +x=534, y=673..681 +x=487, y=181..193 +x=496, y=304..326 +y=1003, x=631..639 +x=764, y=909..917 +x=529, y=517..532 +y=821, x=449..471 +y=641, x=628..654 +y=1541, x=495..515 +x=645, y=1229..1241 +y=20, x=556..575 +y=1246, x=769..773 +x=764, y=1593..1620 +y=215, x=434..451 +x=665, y=74..88 +x=698, y=115..140 +y=1910, x=479..485 +x=690, y=963..977 +x=691, y=1463..1473 +x=780, y=204..214 +x=492, y=1896..1905 +y=74, x=537..539 +x=472, y=1779..1807 +x=437, y=794..802 +y=612, x=438..442 +x=557, y=1080..1106 +x=645, y=1709..1732 +x=526, y=804..810 +y=194, x=509..521 +y=365, x=713..722 +x=773, y=454..458 +x=452, y=655..664 +x=478, y=82..85 +x=615, y=1881..1891 +x=498, y=1411..1419 +x=479, y=823..842 +y=130, x=507..531 +y=895, x=625..630 +x=529, y=1458..1462 +y=1620, x=522..549 +y=193, x=451..487 +y=1722, x=447..475 +y=1045, x=653..655 +y=285, x=537..595 +x=691, y=1800..1802 +y=1745, x=530..551 +x=632, y=1401..1410 +y=1848, x=749..754 +x=642, y=1168..1177 +y=310, x=463..467 +y=1778, x=443..454 +y=1578, x=756..780 +x=478, y=510..521 +y=115, x=594..597 +x=613, y=1682..1695 +y=1617, x=530..540 +y=1141, x=616..638 +x=698, y=844..858 +x=647, y=1293..1296 +x=533, y=1179..1181 +x=582, y=1331..1351 +y=411, x=533..553 +y=284, x=609..627 +x=687, y=699..708 +x=678, y=37..60 +y=165, x=650..671 +x=690, y=1229..1247 +x=648, y=437..447 +y=1697, x=528..551 +x=649, y=677..695 +y=1742, x=537..541 +x=582, y=1191..1196 +x=594, y=1505..1521 +x=764, y=88..92 +x=637, y=470..472 +y=922, x=715..718 +y=1156, x=530..532 +y=1716, x=717..735 +y=1380, x=570..577 +y=419, x=494..512 +y=685, x=699..703 +x=443, y=1752..1778 +x=763, y=722..724 +x=604, y=1419..1424 +x=512, y=625..633 +y=971, x=648..666 +x=704, y=1528..1531 +x=581, y=677..691 +x=752, y=1652..1665 +x=440, y=1403..1410 +x=458, y=1836..1838 +x=591, y=1253..1268 +x=768, y=1524..1536 +y=603, x=660..665 +x=678, y=1148..1160 +y=219, x=529..536 +x=637, y=1557..1562 +x=537, y=63..74 +x=471, y=4..30 +y=1392, x=622..642 +y=538, x=553..577 +y=1417, x=742..748 +x=453, y=1619..1621 +x=610, y=33..47 +y=62, x=458..475 +x=720, y=656..658 +x=610, y=1364..1366 +x=476, y=1243..1254 +x=754, y=1691..1704 +y=741, x=562..573 +y=660, x=741..750 +y=517, x=560..579 +x=746, y=1192..1208 +x=691, y=526..532 +x=708, y=141..169 +y=1313, x=669..683 +x=638, y=419..429 +x=476, y=271..277 +y=153, x=569..573 +x=671, y=742..752 +x=597, y=736..753 +y=1773, x=580..591 +x=599, y=527..539 +y=1166, x=574..579 +y=1535, x=535..539 +x=500, y=1851..1867 +x=575, y=1191..1196 +x=473, y=1833..1843 +x=607, y=296..310 +x=645, y=437..447 +y=1018, x=602..616 +x=619, y=922..948 +x=480, y=1630..1638 +x=532, y=1136..1156 +y=993, x=526..546 +x=736, y=1757..1768 +x=467, y=1136..1141 +x=616, y=1266..1287 +x=562, y=1197..1221 +x=700, y=1863..1877 +x=722, y=1363..1368 +y=81, x=524..528 +x=553, y=1375..1383 +x=463, y=1273..1293 +y=1120, x=604..628 +x=578, y=803..806 +x=541, y=1245..1259 +y=1302, x=632..656 +x=435, y=1042..1051 +y=695, x=638..649 +x=788, y=1614..1630 +y=518, x=595..612 +y=1451, x=607..609 +y=1293, x=437..463 +x=470, y=656..664 +x=455, y=1338..1364 +x=600, y=1444..1455 +x=592, y=905..923 +x=711, y=1428..1441 +y=1831, x=732..750 +x=651, y=324..326 +x=520, y=583..586 +x=647, y=1396..1410 +x=481, y=750..764 +x=559, y=1582..1588 +x=489, y=609..616 +y=1004, x=585..610 +x=460, y=477..480 +x=556, y=1346..1358 +y=585, x=755..759 +y=904, x=485..501 +y=1491, x=619..621 +x=758, y=113..132 +x=609, y=277..284 +x=753, y=612..635 +x=672, y=249..261 +y=893, x=662..664 +x=458, y=1885..1903 +x=594, y=1083..1085 +x=761, y=245..256 +x=725, y=90..92 +x=767, y=1169..1178 +x=603, y=470..481 +y=514, x=717..720 +x=605, y=1832..1839 +x=613, y=475..477 +x=611, y=1337..1349 +x=680, y=891..907 +x=535, y=1412..1439 +x=767, y=578..599 +y=1354, x=514..541 +x=696, y=1359..1381 +x=634, y=717..745 +x=493, y=1369..1386 +x=534, y=811..816 +x=472, y=1580..1591 +y=144, x=624..630 +x=772, y=1490..1504 +x=572, y=1006..1020 +x=554, y=965..979 +x=479, y=55..68 +y=1227, x=727..747 +y=150, x=608..611 +y=381, x=727..748 +x=556, y=766..773 +x=750, y=638..660 +y=952, x=635..654 +y=1897, x=761..781 +y=1351, x=570..582 +x=642, y=913..926 +x=786, y=1687..1693 +y=1196, x=575..582 +y=1613, x=530..540 +x=476, y=922..929 +x=700, y=880..891 +y=676, x=714..722 +x=732, y=1023..1034 +x=717, y=831..834 +x=783, y=451..461 +y=12, x=756..766 +x=649, y=831..835 +y=148, x=722..726 +x=467, y=53..58 +y=967, x=445..461 +x=461, y=1610..1624 +x=435, y=1577..1581 +x=545, y=1346..1358 +x=519, y=1242..1248 +x=434, y=282..291 +y=893, x=513..525 +x=536, y=1822..1830 +x=773, y=1864..1877 +x=577, y=1366..1380 +x=517, y=1091..1118 +x=551, y=1146..1169 +x=541, y=237..240 +x=594, y=783..787 +y=757, x=497..500 +x=711, y=142..169 +x=574, y=935..938 +y=880, x=664..681 +y=1248, x=494..519 +y=809, x=561..587 +x=507, y=120..130 +x=713, y=1607..1620 +x=548, y=805..807 +y=793, x=551..566 +y=987, x=475..479 +x=756, y=4..12 +x=463, y=426..432 +x=513, y=820..825 +x=727, y=1112..1139 +x=497, y=200..210 +y=990, x=666..683 +y=1051, x=435..452 +x=767, y=321..336 +y=321, x=541..554 +y=1832, x=600..605 +x=573, y=1730..1743 +y=547, x=451..462 +y=1454, x=768..771 +y=1637, x=730..732 +x=513, y=889..893 +y=76, x=629..647 +y=613, x=508..510 +x=785, y=285..308 +y=1484, x=529..537 +x=594, y=1225..1230 +x=605, y=922..948 +x=481, y=1794..1822 +x=739, y=1733..1745 +x=774, y=1195..1198 +y=1558, x=740..742 +x=475, y=50..62 +y=390, x=637..639 +x=731, y=112..132 +x=667, y=95..120 +x=671, y=1677..1693 +y=1695, x=613..638 +x=511, y=32..44 +x=467, y=1857..1872 +x=554, y=321..326 +x=749, y=1892..1906 +y=909, x=764..775 +y=1108, x=487..512 +x=478, y=1836..1840 +x=624, y=461..475 +x=599, y=320..331 +y=88, x=468..485 +y=1301, x=506..529 +y=1392, x=737..745 +x=455, y=1510..1520 +y=371, x=618..620 +x=608, y=1036..1048 +x=735, y=1784..1786 +x=516, y=1748..1775 +y=1117, x=610..622 +y=1460, x=697..699 +y=1822, x=481..489 +y=533, x=592..595 +x=498, y=724..727 +y=932, x=588..597 +y=1387, x=627..632 +y=1178, x=602..609 +x=688, y=1627..1639 +x=568, y=1388..1409 +x=619, y=1480..1491 +y=450, x=638..654 +y=1640, x=570..573 +y=1762, x=768..774 +y=1410, x=625..632 +y=1072, x=475..488 +y=1129, x=674..696 +x=539, y=63..74 +x=483, y=1584..1588 +y=1854, x=713..760 +y=263, x=588..599 +y=1851, x=536..545 +x=511, y=1470..1488 +x=578, y=1542..1553 +y=1456, x=663..666 +y=1008, x=671..677 +y=1906, x=745..749 +x=742, y=1413..1417 +y=261, x=672..680 +x=560, y=490..517 +y=691, x=576..581 +x=670, y=198..214 +x=731, y=1456..1470 +x=720, y=10..15 +y=1640, x=719..744 +y=426, x=733..755 +x=738, y=263..283 +x=598, y=824..847 +x=527, y=1179..1181 +x=466, y=99..110 +x=544, y=162..168 +x=701, y=1910..1912 +x=486, y=1584..1588 +y=1748, x=469..476 +x=545, y=1845..1851 +x=657, y=1466..1468 +x=746, y=898..900 +y=513, x=673..684 +y=1184, x=522..544 +x=492, y=1781..1803 +y=1031, x=562..567 +x=729, y=142..159 +y=95, x=755..761 +x=478, y=96..107 +x=681, y=1720..1738 +x=698, y=352..376 +x=578, y=572..585 +x=600, y=1026..1045 +y=810, x=505..526 +x=581, y=38..63 +y=1911, x=466..470 +y=376, x=698..701 +x=666, y=962..971 +x=494, y=1241..1248 +x=699, y=1358..1381 +y=391, x=524..541 +x=661, y=613..624 +x=599, y=1059..1061 +x=745, y=1366..1392 +y=1789, x=726..748 +x=736, y=85..100 +x=664, y=823..836 +y=1462, x=529..538 +x=658, y=831..835 +y=405, x=701..708 +x=570, y=1637..1640 +x=699, y=1433..1460 +x=448, y=1244..1254 +x=671, y=138..165 +x=693, y=743..752 +x=511, y=303..326 +x=551, y=1246..1259 +y=838, x=536..556 +y=1562, x=637..639 +y=283, x=724..738 +y=116, x=549..570 +x=694, y=392..417 +x=595, y=617..622 +x=790, y=1343..1347 +x=757, y=46..60 +x=525, y=418..429 +x=652, y=247..250 +y=1470, x=731..747 +x=508, y=596..613 +y=917, x=764..775 +y=1771, x=688..692 +y=1693, x=786..788 +x=657, y=1396..1410 +y=68, x=479..526 +x=712, y=222..240 +x=715, y=1466..1482 +x=473, y=843..866 +x=657, y=1081..1101 +y=326, x=496..511 +y=1877, x=700..773 +x=639, y=1507..1516 +y=514, x=565..571 +x=437, y=1274..1293 +x=742, y=1073..1087 +y=977, x=690..716 +x=674, y=758..780 +y=447, x=645..648 +y=789, x=696..700 +y=92, x=764..788 +y=877, x=672..674 +x=706, y=784..794 +x=720, y=897..900 +y=825, x=618..638 +y=979, x=554..577 +y=1775, x=506..516 +x=522, y=1569..1577 +x=711, y=1261..1270 +x=654, y=637..641 +x=717, y=1270..1273 +x=442, y=794..802 +y=1743, x=605..632 +x=713, y=85..100 +x=533, y=516..532 +y=1299, x=607..629 +x=707, y=583..609 +x=469, y=1389..1416 +y=1381, x=696..699 +y=895, x=662..664 +x=449, y=1885..1903 +x=486, y=1150..1171 +x=781, y=1887..1897 +y=65, x=516..518 +x=630, y=130..144 +y=624, x=661..679 +y=1871, x=724..737 +x=649, y=1021..1032 +y=461, x=765..783 +x=638, y=1427..1437 +x=525, y=1469..1488 +x=453, y=156..173 +x=669, y=572..585 +x=740, y=1244..1263 +x=755, y=76..95 +x=570, y=1312..1314 +y=1459, x=646..673 +y=1867, x=500..523 +x=485, y=893..904 +y=1786, x=735..740 +x=724, y=1799..1813 +x=580, y=773..775 +y=22, x=483..501 +x=577, y=964..979 +y=1838, x=458..460 +y=1198, x=736..740 +x=658, y=1204..1222 +y=1689, x=595..598 +y=1410, x=440..461 +x=709, y=1313..1314 +y=794, x=684..706 +y=664, x=452..470 +x=503, y=525..534 +x=742, y=742..745 +x=597, y=930..932 +x=768, y=654..672 +x=501, y=893..904 +x=524, y=81..87 +y=917, x=510..530 +x=700, y=115..140 +x=503, y=921..929 +y=1221, x=562..564 +x=448, y=745..765 +y=889, x=513..525 +x=783, y=1034..1042 +x=613, y=1553..1578 +x=457, y=282..291 +x=693, y=676..690 +y=1830, x=536..543 +y=30, x=447..471 +x=501, y=321..323 +y=1578, x=613..627 +x=592, y=1188..1205 +x=464, y=220..229 +x=563, y=529..532 +y=1557, x=637..639 +x=671, y=1627..1639 +x=465, y=1514..1516 +x=463, y=331..336 +y=1280, x=739..758 +x=562, y=674..681 +x=607, y=1295..1299 +x=671, y=79..85 +x=598, y=1667..1689 +x=475, y=1052..1072 +y=1454, x=521..538 +x=616, y=202..213 +x=565, y=510..514 +y=1637, x=570..573 +x=497, y=753..757 +y=85, x=476..478 +x=729, y=1193..1208 +y=638, x=538..543 +y=1055, x=775..779 +x=693, y=702..711 +y=156, x=563..579 +y=1091, x=579..600 +x=524, y=381..391 +y=1296, x=647..650 +x=543, y=595..600 +y=1757, x=637..656 +y=1424, x=594..604 +y=1127, x=767..790 +y=1839, x=600..605 +x=753, y=439..465 +x=638, y=1886..1888 +x=602, y=1059..1061 +y=151, x=524..546 +x=541, y=1369..1391 +x=671, y=976..987 +x=693, y=1596..1604 +x=579, y=1154..1166 +x=598, y=1111..1122 +y=585, x=578..669 +x=460, y=1477..1496 +y=1441, x=707..711 +x=576, y=678..691 +x=537, y=273..285 +y=1531, x=696..704 +x=696, y=789..791 +x=751, y=714..729 +x=580, y=1667..1670 +x=568, y=529..532 +x=680, y=1765..1782 +x=625, y=1508..1516 +y=1172, x=648..655 +x=459, y=842..866 +y=452, x=702..730 +x=713, y=1454..1458 +x=691, y=1508..1511 +x=599, y=340..352 +x=629, y=36..38 +y=60, x=750..757 +x=528, y=571..589 +x=638, y=810..825 +x=502, y=1665..1670 +x=642, y=1212..1216 +y=266, x=547..585 +x=591, y=1750..1773 +x=736, y=1243..1263 +x=505, y=814..833 +x=474, y=217..225 +x=601, y=179..203 +x=506, y=1662..1681 +x=468, y=76..88 +x=535, y=1568..1577 +y=40, x=494..502 +y=1398, x=522..524 +x=609, y=1463..1473 +x=578, y=1667..1670 +y=389, x=473..476 +y=561, x=482..496 +x=605, y=118..124 +x=676, y=1147..1160 +x=490, y=822..842 +x=679, y=763..774 +x=673, y=487..513 +x=449, y=795..821 +y=842, x=479..490 +x=498, y=1083..1088 +x=570, y=1542..1553 +x=471, y=327..353 +y=1413, x=753..768 +x=552, y=1552..1557 +y=1665, x=733..752 +x=460, y=331..336 +x=741, y=638..660 +x=507, y=495..506 +x=525, y=626..633 +x=666, y=1228..1241 +x=722, y=1589..1598 +x=745, y=1715..1724 +x=681, y=867..880 +y=532, x=687..691 +x=609, y=1620..1648 +x=520, y=1526..1547 +x=470, y=1344..1366 +x=777, y=1111..1115 +x=624, y=131..144 +x=641, y=1061..1069 +x=676, y=177..180 +x=672, y=865..877 +x=744, y=1631..1640 +y=1416, x=685..692 +y=1302, x=535..541 +y=100, x=713..736 +y=915, x=546..559 +x=457, y=834..836 +x=586, y=465..478 +x=633, y=1063..1074 +y=1383, x=553..557 +x=569, y=1146..1169 +x=637, y=1753..1757 +y=780, x=668..674 +x=494, y=847..873 +x=626, y=442..448 +y=1807, x=468..472 +x=736, y=759..787 +x=532, y=237..240 +x=627, y=1483..1495 +x=573, y=1637..1640 +x=509, y=1570..1592 +x=447, y=5..30 +y=635, x=753..770 +x=775, y=1271..1298 +x=679, y=177..180 +y=926, x=642..645 +x=750, y=1819..1831 +x=768, y=162..184 +y=1314, x=698..709 +y=39, x=701..710 +y=140, x=698..700 +x=470, y=1683..1698 +x=746, y=1670..1679 +x=656, y=485..497 +x=626, y=819..822 +x=434, y=524..545 +x=718, y=1673..1679 +x=650, y=1566..1577 +x=671, y=998..1008 +x=654, y=324..326 +y=1553, x=570..578 +x=513, y=162..168 +y=155, x=603..618 +x=598, y=1566..1593 +y=1059, x=680..695 +x=494, y=36..40 +x=543, y=1823..1830 +x=575, y=7..20 +y=1670, x=493..502 +y=877, x=512..518 +x=628, y=117..120 +x=654, y=440..450 +x=460, y=1708..1719 +x=639, y=988..1003 +x=642, y=1187..1198 +x=636, y=1531..1533 +x=507, y=1181..1196 +y=752, x=671..693 +x=475, y=1650..1653 +y=1673, x=652..665 +y=1270, x=690..711 +x=576, y=121..129 +x=686, y=1097..1102 +x=496, y=1581..1591 +y=1682, x=738..754 +x=647, y=1554..1567 +y=923, x=592..599 +x=591, y=1117..1119 +x=683, y=823..836 +x=693, y=1230..1247 +x=600, y=1832..1839 +x=656, y=1753..1757 +x=479, y=977..987 +x=775, y=992..994 +x=536, y=821..838 +x=745, y=1893..1906 +x=521, y=177..194 +x=647, y=1010..1012 +x=713, y=1466..1482 +x=564, y=1312..1314 +x=711, y=884..887 +x=449, y=1424..1445 +y=815, x=676..690 +x=748, y=364..381 +x=499, y=1135..1139 +y=1704, x=754..774 +x=736, y=543..552 +x=573, y=1506..1521 +x=461, y=1369..1380 +x=618, y=810..825 +x=722, y=666..676 +y=110, x=466..485 +x=670, y=1526..1538 +x=734, y=860..869 +x=758, y=1275..1280 +y=1065, x=710..712 +x=778, y=320..336 +y=696, x=504..514 +x=663, y=1023..1025 +y=1541, x=439..466 +x=590, y=1083..1085 +x=741, y=376..378 +y=1473, x=609..691 +x=540, y=145..147 +x=681, y=1547..1558 +y=360, x=781..788 +x=726, y=1663..1682 +x=610, y=118..120 +y=1002, x=722..725 +y=708, x=685..687 +x=438, y=1219..1229 +x=577, y=523..538 +x=472, y=1758..1764 +x=603, y=502..515 +x=502, y=1062..1071 +y=1043, x=653..655 +y=1366, x=610..614 +x=718, y=881..891 +y=306, x=526..546 +x=616, y=1127..1141 +x=673, y=976..987 +y=1370, x=602..622 +x=512, y=1430..1436 +y=1884, x=586..588 +y=223, x=597..603 +x=774, y=1690..1704 +y=515, x=603..605 +x=759, y=722..724 +x=683, y=1292..1313 +y=1074, x=633..649 +y=1115, x=777..779 +y=47, x=587..610 +x=685, y=153..169 +y=497, x=612..656 +x=524, y=487..489 +x=502, y=941..943 +x=533, y=401..411 +x=722, y=987..1002 +x=652, y=1207..1219 +y=820, x=511..513 +x=606, y=179..203 +y=947, x=757..764 +x=477, y=687..695 +y=1644, x=564..580 +x=753, y=1406..1413 +x=451, y=1458..1464 +x=548, y=455..476 +x=655, y=100..105 +y=622, x=595..623 +y=1222, x=658..667 +y=1118, x=517..531 +y=151, x=569..573 +x=472, y=217..225 +x=465, y=476..480 +x=531, y=1091..1118 +y=173, x=442..453 +x=630, y=1555..1567 +x=541, y=382..391 +x=624, y=1424..1434 +y=475, x=624..648 +x=493, y=9..19 +y=1171, x=486..505 +x=717, y=1690..1716 +x=665, y=1648..1673 +x=707, y=1115..1138 +x=564, y=1444..1447 +x=518, y=1369..1386 +x=629, y=55..76 +y=1205, x=570..592 +y=856, x=644..664 +y=1802, x=667..691 +x=738, y=1672..1682 +y=150, x=745..750 +y=1101, x=657..671 +x=444, y=200..212 +x=768, y=1407..1413 +y=1738, x=681..688 +x=755, y=418..426 +x=468, y=1105..1108 +x=581, y=1701..1723 +y=731, x=682..708 +x=537, y=1480..1484 +x=626, y=231..242 +y=1117, x=588..591 +x=792, y=1905..1915 +y=278, x=547..579 +x=590, y=768..779 +x=634, y=1184..1192 +x=434, y=896..912 +x=570, y=1366..1380 +x=782, y=1270..1298 +x=534, y=384..388 +x=463, y=294..310 +y=690, x=693..710 +y=1588, x=483..486 +x=523, y=100..109 +x=631, y=1035..1048 +x=466, y=1368..1380 +y=1450, x=556..574 +x=627, y=1552..1578 +x=518, y=61..65 +x=717, y=1595..1604 +x=533, y=736..753 +y=929, x=476..503 +y=265, x=490..517 +y=1598, x=722..746 +y=1555, x=671..673 +y=388, x=532..534 +x=574, y=1433..1450 +y=448, x=620..626 +x=716, y=1044..1058 +x=563, y=291..298 +x=741, y=791..800 +y=748, x=682..687 +y=1499, x=580..601 +y=1327, x=620..665 +x=496, y=785..803 +x=614, y=1364..1366 +x=549, y=340..352 +y=1003, x=646..657 +x=570, y=180..194 +y=1840, x=478..497 +x=545, y=1527..1547 +y=1282, x=646..669 +x=675, y=152..169 +y=1380, x=461..466 +x=764, y=1714..1724 +x=698, y=1074..1087 +x=646, y=1085..1099 +x=630, y=1148..1158 +x=510, y=902..917 +y=1158, x=630..649 +y=1723, x=573..581 +y=557, x=684..704 +y=866, x=459..473 +x=558, y=810..816 +x=638, y=439..450 +x=735, y=946..967 +y=324, x=651..654 +x=683, y=290..295 +y=943, x=502..506 +y=60, x=678..685 +x=704, y=1484..1495 +y=329, x=533..561 +y=142, x=608..611 +x=638, y=1681..1695 +x=742, y=1554..1558 +x=762, y=1172..1180 +x=685, y=852..855 +y=194, x=546..570 +x=588, y=1853..1867 +x=568, y=1455..1461 +y=1504, x=763..772 +x=727, y=90..92 +y=918, x=687..697 +x=727, y=363..381 +x=632, y=382..394 +x=489, y=1794..1822 +y=852, x=685..692 +x=624, y=1873..1896 +x=732, y=1633..1637 +x=541, y=715..736 +y=929, x=635..652 +x=556, y=1525..1529 +y=1436, x=512..519 +x=767, y=345..358 +x=731, y=511..533 +y=529, x=563..568 +y=1087, x=684..698 +x=705, y=199..211 +x=522, y=1377..1398 +x=752, y=1368..1391 +x=506, y=1749..1775 +x=673, y=1448..1459 +x=436, y=895..912 +x=740, y=1555..1558 +y=1915, x=769..792 +x=514, y=1341..1354 +y=1020, x=572..579 +x=713, y=347..365 +x=594, y=1419..1424 +x=587, y=797..809 +x=590, y=1354..1357 +x=495, y=9..19 +x=476, y=889..897 +y=1464, x=451..457 +x=661, y=1548..1558 +y=1419, x=487..498 +x=590, y=736..753 +x=747, y=577..599 +x=712, y=729..735 +x=643, y=936..944 +x=656, y=1708..1732 +x=693, y=1886..1900 +x=632, y=361..374 +x=736, y=1196..1198 +x=751, y=1330..1341 +x=570, y=1188..1205 +y=1516, x=465..468 +x=788, y=1688..1693 +x=679, y=1531..1539 +y=1667, x=578..580 +x=741, y=1017..1018 +y=1265, x=632..656 +y=1621, x=451..453 +y=1679, x=746..748 +x=621, y=1480..1491 +x=737, y=245..256 +y=521, x=478..487 +y=1638, x=480..492 +x=649, y=1064..1074 +y=481, x=603..620 +x=669, y=1291..1313 +y=214, x=670..674 +y=1238, x=455..467 +y=394, x=632..648 +x=620, y=471..481 +y=1198, x=626..642 +y=107, x=476..478 +x=632, y=819..822 +x=766, y=3..12 +y=476, x=526..548 +x=632, y=1251..1265 +y=1256, x=582..585 +x=610, y=995..1004 +y=1538, x=596..670 +x=757, y=935..947 +y=753, x=520..533 +x=559, y=887..915 +x=769, y=1170..1178 +y=1368, x=722..724 +x=592, y=531..533 +y=775, x=580..583 +x=645, y=913..926 +x=688, y=1769..1771 +y=1254, x=448..476 +y=968, x=654..657 +x=657, y=983..1003 +x=470, y=1900..1911 +x=448, y=1807..1818 +x=603, y=135..155 +y=1177, x=642..663 +x=745, y=827..851 +x=722, y=134..148 +x=442, y=1218..1229 +y=1141, x=465..467 +x=532, y=384..388 +x=721, y=399..403 +x=761, y=1688..1701 +x=534, y=487..489 +x=588, y=256..263 +x=679, y=1337..1349 +x=695, y=1031..1059 +x=527, y=1553..1557 +x=547, y=406..408 +x=780, y=1574..1578 +x=682, y=746..748 +x=671, y=1081..1101 +y=921, x=757..782 +y=1208, x=729..746 +y=44, x=489..511 +x=637, y=26..41 +y=302, x=536..540 +y=256, x=737..761 +x=519, y=1429..1436 +x=503, y=321..323 +y=1178, x=767..769 +x=750, y=1560..1580 +x=684, y=488..513 +y=1437, x=618..638 +x=524, y=907..910 +x=546, y=983..993 +x=538, y=1443..1454 +x=769, y=1343..1347 +y=1588, x=534..559 +y=773, x=580..583 +x=677, y=998..1008 +x=697, y=911..918 +x=777, y=1438..1443 +x=708, y=396..405 +y=1836, x=458..460 +x=769, y=1644..1668 +x=768, y=991..994 +x=603, y=219..223 +y=169, x=675..685 +x=618, y=1426..1437 +x=488, y=205..207 +y=416, x=648..654 +y=162, x=513..544 +y=331, x=599..618 +y=212, x=441..444 +x=569, y=633..646 +y=1557, x=585..598 +y=1059, x=599..602 +x=618, y=320..331 +y=600, x=543..554 +y=897, x=474..476 +x=567, y=1016..1031 +x=476, y=364..389 +y=1591, x=472..496 +x=713, y=1840..1854 +y=603, x=588..597 +x=690, y=802..815 +x=642, y=1381..1392 +x=441, y=430..439 +x=482, y=1476..1496 +y=1257, x=759..763 +x=622, y=1380..1392 +x=455, y=1224..1238 +y=1867, x=588..605 +x=518, y=451..460 +x=530, y=1136..1156 +x=717, y=11..15 +y=646, x=569..670 +y=1693, x=671..696 +y=870, x=746..761 +y=800, x=718..741 +x=729, y=859..869 +x=673, y=1552..1555 +x=638, y=1403..1415 +y=1558, x=661..681 +x=454, y=327..353 +x=551, y=1081..1106 +x=559, y=158..171 +x=646, y=982..1003 +y=1061, x=599..602 +x=666, y=1454..1456 +x=735, y=741..745 +x=502, y=36..40 +x=746, y=855..870 +x=522, y=1599..1620 +x=636, y=1765..1774 +y=1261, x=582..585 +y=1577, x=650..731 +x=668, y=758..780 +x=687, y=527..532 +y=203, x=601..606 +x=773, y=1034..1042 +x=648, y=381..394 +x=733, y=830..834 +y=695, x=453..477 +x=513, y=1566..1567 +x=604, y=1108..1120 +x=485, y=1887..1910 +y=1890, x=586..588 +y=1230, x=594..612 +x=730, y=432..452 +y=1111, x=458..474 +y=63, x=555..581 +y=397, x=442..451 +y=364, x=618..620 +x=669, y=1272..1282 +x=693, y=657..667 +y=1732, x=645..656 +x=602, y=1013..1018 +x=719, y=1630..1640 +y=1263, x=736..740 +x=494, y=1180..1196 +y=589, x=507..528 +x=763, y=614..626 +x=551, y=787..793 +y=1025, x=611..633 +y=1455, x=600..618 +y=910, x=520..524 +x=511, y=820..825 +x=659, y=1765..1774 +x=714, y=665..676 +y=1691, x=620..623 +x=456, y=1578..1581 +y=23, x=457..463 +y=1653, x=475..483 +x=748, y=947..967 +x=526, y=293..306 +y=1012, x=664..684 +y=1592, x=509..512 +y=1241, x=645..666 +y=1181, x=527..533 +x=482, y=555..561 +x=534, y=361..374 +x=489, y=785..803 +x=692, y=1769..1771 +y=478, x=563..586 +x=692, y=572..585 +x=564, y=1197..1221 +x=710, y=33..39 +x=785, y=1908..1911 +y=180, x=676..679 +y=1214, x=734..736 +x=588, y=592..603 +x=555, y=38..63 +x=506, y=452..460 +y=1850, x=749..754 +x=485, y=1205..1210 +y=358, x=767..776 +x=588, y=930..932 +x=667, y=1366..1385 +x=448, y=523..545 +x=684, y=1073..1087 +x=480, y=1134..1139 +x=528, y=81..87 +x=651, y=842..852 +y=1391, x=752..775 +y=1630, x=768..788 +x=609, y=325..328 +x=474, y=158..171 +y=1701, x=761..768 +x=652, y=916..929 +x=763, y=1525..1536 +x=553, y=522..538 +x=622, y=1358..1370 +y=806, x=576..578 +y=1843, x=453..473 +x=520, y=736..753 +x=680, y=1032..1059 +x=556, y=1433..1450 +x=474, y=1089..1111 +x=578, y=1526..1529 +y=626, x=760..763 +x=672, y=1020..1032 +x=563, y=466..478 +x=707, y=1160..1164 +x=779, y=1111..1115 +x=612, y=717..745 +y=124, x=603..605 +y=672, x=765..768 +y=378, x=732..741 +x=627, y=526..539 +x=594, y=89..115 +x=649, y=1148..1158 +x=723, y=1044..1058 +x=759, y=1234..1257 +x=585, y=252..266 +x=485, y=98..110 +x=601, y=1492..1499 +x=664, y=868..880 +x=514, y=1871..1877 +x=774, y=1739..1762 +y=34, x=640..659 +x=538, y=628..638 +y=539, x=599..627 +x=771, y=454..458 +x=655, y=1043..1045 +x=561, y=318..329 +x=661, y=1023..1025 +y=745, x=735..742 +x=626, y=722..736 +x=740, y=1784..1786 +x=642, y=1254..1259 +x=549, y=1599..1620 +x=490, y=255..265 +x=664, y=1504..1515 +x=593, y=1454..1461 +y=1902, x=520..543 +y=207, x=488..490 +x=781, y=342..360 +x=650, y=1293..1296 +x=612, y=1819..1846 +x=737, y=1486..1495 +x=495, y=1525..1541 +x=662, y=893..895 +x=471, y=444..460 +y=1782, x=680..700 +x=631, y=36..38 +y=298, x=755..757 +y=1491, x=468..475 +x=608, y=475..477 +x=463, y=1684..1698 +y=1581, x=435..456 +y=1515, x=664..716 +x=602, y=1357..1370 +x=452, y=1043..1051 +x=506, y=882..898 +x=652, y=1647..1673 +x=760, y=1756..1768 +x=563, y=142..156 +x=453, y=1833..1843 +x=473, y=363..389 +x=574, y=1154..1166 +x=739, y=1023..1034 +y=807, x=536..548 +x=620, y=1313..1327 +x=496, y=937..955 +y=105, x=651..655 +x=629, y=163..171 +y=534, x=503..518 +x=693, y=1909..1912 +y=58, x=464..467 +y=1122, x=570..598 +x=635, y=939..952 +y=904, x=652..673 +x=747, y=1455..1470 +x=788, y=707..720 +y=1409, x=568..581 +x=524, y=138..151 +x=673, y=1892..1904 +y=532, x=563..568 +x=777, y=1644..1668 +x=690, y=1261..1270 +y=1557, x=527..552 +y=1839, x=682..684 +x=541, y=1739..1742 +x=790, y=1461..1488 +x=754, y=1848..1850 +x=600, y=1080..1091 +x=535, y=1288..1302 +y=802, x=437..442 +y=92, x=725..727 +x=698, y=1312..1314 +y=729, x=453..462 +x=499, y=1782..1803 +y=1182, x=455..461 +x=684, y=1001..1012 +x=545, y=99..109 +x=512, y=938..955 +x=512, y=1662..1681 +y=1774, x=636..659 +x=713, y=1096..1102 +y=1495, x=607..627 +x=544, y=1162..1184 +y=510, x=565..571 +x=536, y=1844..1851 +y=869, x=729..734 +x=451, y=202..215 +x=487, y=1095..1108 +x=515, y=1526..1541 +x=451, y=394..397 +y=1103, x=497..505 +x=540, y=300..302 +x=567, y=1444..1447 +x=727, y=1306..1309 +x=675, y=701..711 +x=749, y=161..184 +y=1906, x=577..594 +x=724, y=1363..1368 +y=120, x=662..667 +x=703, y=655..658 +y=1102, x=686..713 +y=82, x=476..478 +x=731, y=63..71 +x=525, y=1209..1224 +y=609, x=707..722 +x=445, y=1609..1624 +x=626, y=85..93 +x=530, y=903..917 +x=664, y=1000..1012 +x=763, y=1233..1257 +x=462, y=1708..1719 +x=629, y=1294..1299 +y=1042, x=773..783 +x=659, y=32..34 +y=489, x=524..534 +x=656, y=1290..1302 +y=924, x=715..718 +y=765, x=441..448 +x=703, y=674..685 +x=736, y=1214..1216 +x=648, y=714..720 +x=655, y=842..852 +y=168, x=513..544 +x=541, y=1287..1302 +x=453, y=687..695 +y=720, x=648..655 +x=718, y=922..924 +y=1052, x=635..661 +x=744, y=398..403 +x=512, y=1095..1108 +y=907, x=680..684 +y=835, x=649..658 +x=646, y=231..242 +y=819, x=626..632 +x=665, y=4..26 +y=1681, x=506..512 +x=763, y=1491..1504 +y=1458, x=713..726 +y=1224, x=500..525 +y=1488, x=511..525 +x=716, y=1112..1139 +x=757, y=1594..1620 +x=505, y=804..810 +y=1743, x=573..584 +y=1139, x=716..727 +x=539, y=1531..1535 +y=225, x=472..474 +x=627, y=1887..1888 +x=737, y=1504..1512 +y=1447, x=564..567 +x=637, y=379..390 +x=724, y=1867..1871 +y=791, x=696..700 +x=457, y=1457..1464 +x=698, y=1826..1845 +x=729, y=1797..1806 +x=696, y=1528..1531 +y=416, x=457..465 +y=439, x=441..457 +x=458, y=1090..1111 +x=597, y=593..603 +x=524, y=566..568 +x=472, y=1425..1445 +y=465, x=747..753 +x=740, y=1172..1180 +y=85, x=671..674 +y=599, x=747..767 +y=1784, x=735..740 +x=726, y=1453..1458 +x=768, y=1739..1762 +x=708, y=914..928 +y=15, x=717..720 +y=1806, x=729..734 +x=621, y=26..41 +y=460, x=506..518 +x=584, y=823..847 +x=469, y=1738..1748 +x=667, y=1801..1802 +x=556, y=7..20 +x=631, y=201..213 +x=569, y=290..298 +x=674, y=845..858 +x=500, y=753..757 +x=767, y=1105..1127 +x=546, y=888..915 +x=754, y=760..787 +x=768, y=1614..1630 +x=557, y=1810..1826 +x=687, y=761..770 +x=732, y=376..378 +x=501, y=11..22 +x=540, y=1613..1617 +y=1749, x=725..745 +y=1088, x=481..498 +y=1164, x=707..727 +x=750, y=46..60 +x=704, y=554..557 +y=225, x=500..525 +x=534, y=765..773 +y=326, x=651..654 +y=667, x=557..693 +x=549, y=113..116 +x=710, y=677..690 +x=440, y=234..244 +y=323, x=501..503 +y=720, x=782..788 +x=588, y=1884..1890 +x=712, y=1037..1065 +x=535, y=1803..1807 +x=503, y=1565..1567 +y=858, x=674..698 +x=571, y=857..863 +x=519, y=124..127 +x=526, y=456..476 +x=568, y=968..973 +x=505, y=1149..1171 +y=525, x=472..493 +x=588, y=1512..1515 +y=1416, x=469..477 +y=938, x=574..586 +x=586, y=548..561 +y=944, x=643..647 +y=132, x=731..758 +x=442, y=156..173 +y=1877, x=500..514 +y=729, x=472..493 +x=640, y=470..472 +x=726, y=1778..1789 +y=403, x=721..744 +x=701, y=397..405 +x=480, y=219..229 +x=646, y=1586..1611 +y=1536, x=763..768 +x=741, y=33..40 +y=1358, x=545..556 +x=674, y=1118..1129 +y=1012, x=641..647 +x=758, y=63..71 +y=987, x=671..673 +y=1210, x=483..485 +x=544, y=1798..1810 +x=757, y=1095..1111 +x=745, y=1736..1749 +x=587, y=32..47 +x=585, y=1546..1557 +x=579, y=142..156 +x=497, y=1836..1840 +x=768, y=1811..1830 +y=1568, x=452..456 +y=211, x=705..731 +x=720, y=495..514 +x=765, y=450..461 +x=573, y=616..623 +x=760, y=1840..1854 +y=887, x=706..711 +x=546, y=139..151 +x=775, y=1367..1391 +y=1106, x=551..557 +y=637, x=628..654 +x=699, y=674..685 +y=1071, x=502..513 +y=127, x=519..524 +x=597, y=89..115 +y=1434, x=624..629 +x=533, y=317..329 +y=1364, x=450..455 +x=451, y=1619..1621 +y=214, x=755..780 +x=733, y=418..426 +y=1639, x=671..688 +x=492, y=1631..1638 +y=1018, x=724..741 +x=648, y=1170..1172 +x=497, y=1166..1168 +y=1318, x=554..577 +x=737, y=1733..1745 +x=632, y=1290..1302 +x=685, y=1400..1416 +x=476, y=96..107 +x=457, y=410..416 +y=1468, x=657..659 +x=640, y=246..250 diff --git a/src/main/resources/2018/day18.txt b/src/main/resources/2018/day18.txt new file mode 100644 index 00000000..77f7e29e --- /dev/null +++ b/src/main/resources/2018/day18.txt @@ -0,0 +1,50 @@ +...##.....|..|#.##|#.......#...#|.|..#..#|#||#..## +|#.#...||.#|.....|#|.#.|....#......|#.|....#....#. +..#..#.#..#..||.#.##|#|.|..|........|#...#|.|.||#. +|#....|.|.#.|....||###|.|#|..........#...#....#|.# +#.....|....#...#|||#.......|#.........|#..###|.#|# +..#.|.|...||#...||.#|...#.|...###|....|||.#|.#.... +.|..#..#.##|...|##...#.##.|.|..|.#...#|..|.#|..... +#||.|||.#..###|....|.|...|||...|||.|...||||#...#|. +#|..||.#..#..#|.|##.......#|#....#...##.|#...#.#|| +..#....#...|....||.#||.##|#.#|.....#.#|.|#...#.#.| +.|#|.||......|#....#..|#|#.##.|...|....|#.|.#.#.#. +.....||##...||..#.||......#|.||..|.|..|..........| +#|#..#||.|....||.|..|...||....|..|...##........|.. +.|#.|#|..|##...||.|##.#...#|#..|.#.|.|#..|..#...#. +##.......#.|....|.|#.|.#..#.#|.#|..###...#...#..|. +#..#.....##.....#...##.|..#..##.|.#.##.....|.|..## +....#.||....|.....|...|..#...|.|.....#.##||....#.. +|#.#..#..#.........||#..|.|#...........|.|#......# +|#..#.|..#..|.#..||.##..|.#.|..||...||.|.#|....#.| +#.#|.....#..||#....#.|..#..|.#|....|..|....|#....| +......||....||||.........##|....#..||.|.......|... +#.....|..#.|.##|..|.|.|#.#..|.....|..|#.|..|.|..#. +###|.|.#..##.#.|#...##||.#|...##|#....##...#....#| +..|...##....#.....##......|.#|..|...#|#.||#..|.|.. +|.||#..||....#..|......#|.#.##.#..|.#|#.|...##||#. +#.#.|..|.....|#.#|#.##||...||.||.||.||......|....# +..#|.......|#|.|....|...#.#|..||.#.#||.#..#|.....| +...|#.##|...#.|...#.|....#.##...|.#.#..#.....#|... +.....#.....|...#.##.#.|......|...#.#|.....|.#.|.#. +..#....#..|...|||..#..#.......#|..|..#|.|...|#..#| +..||||........#|.#.##...|..|||#...|...#|.|###...|| +||#.##.||.....#..||...........|....|.....|#|||#... +..|||#..|.||..|#.|#.#...#|#...|.###.#...|...#....# +...........|||..|||#.#...#|....####.##||...|..|... +.##.#|##|....#..|.#|#|.......|.|.....#..|...|||... +..#...|.|..#..#..|###.#........|......#.#....##|.. +#.|..|#|.#.#..||...#.#.....|#.|#......#||.#.|.#... +...#.....##.|##...#..#|.#.#.#..||..|#....#####..|. +.....#...#.#|........##|#.#.#....|.|........#|||.. +|..##|#.|.|...||#..#.|..#..##..#|.......#|#.#..|.| +|..|....#..|..|....#.|...##....|#...|...|.|#.|...| +..|.|#|#...|.##..##|||..#..|...#..#||...#|.|.#|.|. +.|...||.##.#...|.#.#...###||.|###|......|#....#### +.|.#..#.|..|##.....|.|.#.#||.#|.......|#..|##.||.. +...|..||...#|.|..|.....|.#.##.#..#...|##.|..##..#. +##.|.#...#|#|...##|#.....|..|#.#.#.##.#|...||..#.. +##|.#..|....#..#|.#|..||...#......#.#|.#.#|..#|#.. +|....|.#|#......|....#.#.....|..#.|...|##....|.||# +|.#.|...#...||#.##...|.|..#||...|..##|#......#.|.. +...|#.|......#....#......#.....#.#|..||..|#..#...# diff --git a/src/main/resources/2018/day19.txt b/src/main/resources/2018/day19.txt new file mode 100644 index 00000000..f6b4ae3e --- /dev/null +++ b/src/main/resources/2018/day19.txt @@ -0,0 +1,37 @@ +#ip 1 +addi 1 16 1 +seti 1 4 5 +seti 1 4 2 +mulr 5 2 4 +eqrr 4 3 4 +addr 4 1 1 +addi 1 1 1 +addr 5 0 0 +addi 2 1 2 +gtrr 2 3 4 +addr 1 4 1 +seti 2 6 1 +addi 5 1 5 +gtrr 5 3 4 +addr 4 1 1 +seti 1 7 1 +mulr 1 1 1 +addi 3 2 3 +mulr 3 3 3 +mulr 1 3 3 +muli 3 11 3 +addi 4 3 4 +mulr 4 1 4 +addi 4 18 4 +addr 3 4 3 +addr 1 0 1 +seti 0 7 1 +setr 1 4 4 +mulr 4 1 4 +addr 1 4 4 +mulr 1 4 4 +muli 4 14 4 +mulr 4 1 4 +addr 3 4 3 +seti 0 0 0 +seti 0 1 1 diff --git a/src/main/resources/2018/day2.txt b/src/main/resources/2018/day2.txt new file mode 100644 index 00000000..2049121b --- /dev/null +++ b/src/main/resources/2018/day2.txt @@ -0,0 +1,250 @@ +mgdsdwqulhrinkatfjoyzxcbvq +megsdwpulhrinkasfjdyzxcbvk +megsdwpulhmibkatfjoyzccbvq +megsdwtuohrinkatfjoyzecbvq +megsdwpulhdinkatfyoyzxcbvb +megszwpulhrirkatfjoyexcbvq +eegsdwpulhzinkatfjoyzxdbvq +megsdwpulhginkatfjoyqucbvq +leqsdwpulhrinkatfeoyzxcbvq +megsdwpblhrandatfjoyzxcbvq +megrdwpudhrinvatfjoyzxcbvq +mlgsdwpulhrinkatfuoyzxcbyq +mensdwpunhrinsatfjoyzxcbvq +megsdwpnlhrinqatfjoyzxcbuq +megsdwpnlhrinkatfqoysxcbvq +megsdwpulhrinkjtfjoywxobvq +megsdwpclhbinkaffjoyzxcbvq +mersdwpulhrinkattjoyzxcbdq +megsddpwohrinkatfjoyzxcbvq +mejsdwpulhrinratfjoyzxcbvl +megsdwpujhrinkatfjkbzxcbvq +megsdwpujhrinkatfjoyircbvq +megsdwgulhrinkatojoyzxcbvm +qegsdwpulhrinkatfjoyzxggvq +megsdwpflhrinkatfjsazxcbvq +megsdwpulhridkagfjoyzzcbvq +mejsdwpulhriykatfjoyyxcbvq +measdwpulhriakatfjoyzacbvq +mebsdwpulhrinkatfjoyzxmyvq +megsdwpflnrinkatfjoyzxcbxq +megsdwpulhxinuatfjoytxcbvq +megsdwsflhrinkatfjoyzxcmvq +megsdwpuuhritkarfjoyzxcbvq +megsdwpulhrinkazfjoyexcjvq +megsdwpulhrifkatfjokzxcbvc +megsdwmulvrinkatfjoyzxcblq +meggdwpulhrfnkatfjoybxcbvq +megsdwptlhrindatyjoyzxcbvq +megsdwpulhrinkauqjoyzxibvq +megsdwddlhrifkatfjoyzxcbvq +megddwpulhrinkagfjoyzxcbva +messdupulhrinkatfjoyzxqbvq +megsdwpuahrinkatfjotzxchvq +megsewpulhrankathjoyzxcbvq +megsdwpulhrinkatfjoynqcbvv +megsdwpulhrifkatfjotzxcbtq +megsdjpulcrinkitfjoyzxcbvq +fefsowpulhrinkatfjoyzxcbvq +megsdwpulapinkatfjoyzvcbvq +mejsdwpularinkatfjonzxcbvq +megsxwpllrrinkatfjoyzxcbvq +megsdlpulxvinkatfjoyzxcbvq +megsdwpulhriekztfjoyzxxbvq +megspwpulhrinuatfjoyzxcgvq +megqdwpulhrinkatfjoyzujbvq +megsdtpuehrinkatfjoyzxtbvq +megsdwjulhrmnmatfjoyzxcbvq +megjdwpulhrinkztfjoyzpcbvq +megsdwpuljrinkawfjlyzxcbvq +mewsdwpulhtinkatfjodzxcbvq +megsdwpulhrinkatfcoizxcmvq +meisdwpulhrinkatawoyzxcbvq +megshwpulhrinkatfjoyzxcbtz +megsdwpulhfinkatfjowzxcbvj +megodwpulhrcskatfjoyzxcbvq +megydxpulhrinkatfjofzxcbvq +megsdwpulhrinkatljoytxdbvq +mwgsdwpulyrinkatfjoyzxvbvq +meesdwpulhrinkatfjcwzxcbvq +cegsdwpwlhrinkatfioyzxcbvq +megsdwpulhrinkatfqhyxxcbvq +megsrrpulhrxnkatfjoyzxcbvq +megsdgpulhrinkatfjoypxcbnq +xegsdwpulhrinkaxkjoyzxcbvq +mngsdwpulhrenkatfjofzxcbvq +mecsdwpulhrinkabfjoozxcbvq +pegsdkpulhrinkatfuoyzxcbvq +megpdwpughrinkatfjoyzxzbvq +mxgrdwpulhrinyatfjoyzxcbvq +megsdwpulhpigkatfjoyzxcbfq +mhgsdwpulhrinkagfjoxzxcbvq +megsdwpblhtinkatfjqyzxcbvq +megsawvulhrinkatfjoyzxcfvq +metsuwpulhrinkatfjowzxcbvq +mexsdwpulhrinkatsjoyzxvbvq +megtdwpulhrinkatfjoizxcpvq +megidwpjlhrinkatfdoyzxcbvq +megsdwpuljrivkatfjoyqxcbvq +mespdppulhrinkatfjoyzxcbvq +megsdcpulhminkatftoyzxcbvq +megsdwpulhriskatfjayzlcbvq +mejsdwpulhrinkatfvoyzxibvq +megfdwputhriykatfjoyzxcbvq +megsdwparhrinkbtfjoyzxcbvq +mtgsdwpulhmingatfjoyzxcbvq +megsdwjulhrinkatfjtyzxtbvq +megsvwpulhrinkatfjoyzecbvf +megsdwpulprinkatyqoyzxcbvq +zegsdwpulhwinkatfjoyzxcfvq +megsdwiulhrinkatfjoyzxcjcq +aegsdwpulirinkatfjoyvxcbvq +mepsdwculbrinkatfjoyzxcbvq +msgsdcpulhrinkctfjoyzxcbvq +megsdwpulhrinkatfjoozxfevq +megscwpulhrinkatmjoyzxcbsq +megsdwpulhrinkltfjoyzxtmvq +megsddpulhrixkatfjyyzxcbvq +megsdwpulhrinkctfjoqzhcbvq +megsbapblhrinkatfjoyzxcbvq +megsdwpulhrinkatfjoyyxgpvq +mwpsdwpulhrinkutfjoyzxcbvq +megsdwpulhrinvnlfjoyzxcbvq +megsdwsulorinkakfjoyzxcbvq +mbgsdwpulhrinkktfjoyzxcbvg +megddwpulhrindatfjoyzxcbvr +memsdwpulhrinkatqjoyzxcbvo +megsdwpulbrinkarfjoyzxcbxq +megsdwpulhrilkatfjoynxcgvq +mxgsdzpulhrinkatfjoydxcbvq +megsawpulhrinkotfjoyzacbvq +measdwpulhrinkctvjoyzxcbvq +medsdwpulhtinkaqfjoyzxcbvq +megsdwsulhrknkatfjoylxcbvq +megadwpulhrinkatfjkyzxcbvh +mygsdwpulhrinkatfboyzxcavq +megsdwpulhrinkaufjxyzccbvq +mtgsdwpulhrunkatfkoyzxcbvq +megsdwpulhrinkamfwryzxcbvq +meesdwpulhrgnkatnjoyzxcbvq +megddwpolhrinkatfjoyixcbvq +megsdwpulhrinsatfjoyzicwvq +mmgsdwpulhrinkltfjoyzxcgvq +meisdwpulhhinkatfjoyzxubvq +megpdwpulhrinkatfroyzxcbkq +megszwpuhhrinkatfjoyzxcbzq +mersdwpulhrikcatfjoyzxcbvq +mjgsdwpulhrinratfjoyzxcbvl +megsdwnulkxinkatfjoyzxcbvq +megsdwpulhrinkatlaoyzxpbvq +megsdwpulhribkitfjjyzxcbvq +megsdwpzlhrinkalfjoyzkcbvq +megsdwpulhrinkutfjoyzxcdnq +mfgpdwputhrinkatfjoyzxcbvq +oegshwpclhrinkatfjoyzxcbvq +megvdwxulhrinkatfjowzxcbvq +mrgydwpulhrinkatfjoyzxcbvl +megsdwpuqhrinkaxfjoyzxcbfq +megsdwpughrinixtfjoyzxcbvq +megsdwpslxrinkatfjoyzxcbvl +megsdwpukhrinkatfjovzxnbvq +megsdwpulnrinkrtojoyzxcbvq +megsdwpuvhrinkatfjjyzxclvq +vegrdwpulhrinzatfjoyzxcbvq +melsdwwulvrinkatfjoyzxcbvq +megsdwpulhrizkbtfjoyzjcbvq +megsdwpulhrinlatfjoyzkcbvr +megsdweulhrinkaofqoyzxcbvq +megsdcpulhrifkatfdoyzxcbvq +negsdwpulhainkztfjoyzxcbvq +megsdwpklhrinkttfjoyzxvbvq +megsdwpothrdnkatfjoyzxcbvq +megsdwpulvrinkatfaoyzxcbvr +mewsdwpulhrinkatfooyzxtbvq +megtdwpulhrinkatfxoyzxcbvy +zegsdwpulhrinkamljoyzxcbvq +mkgodwpulhrcnkatfjoyzxcbvq +megsdepularinkatfjoyzxybvq +segsdwpulhrinkatfmoyzycbvq +mbgsdwpulhrsnkztfjoyzxcbvq +megsdwpmlhrinkatfjxyzhcbvq +megsdwpulhrinkatfboyqxmbvq +megsdwpulhrinkadtpoyzxcbvq +megsdmpulhrjnkatfjoyzxwbvq +megsdwpulhrivkatfroywxcbvq +megsdwdulhrinkatpjwyzxcbvq +megsdwpylhrdrkatfjoyzxcbvq +megsdwpulhrvnkptfjoyzlcbvq +megsdwpuihridkatfjuyzxcbvq +megsdwpulhbiikatfjxyzxcbvq +meggdwpulurinkatfjoyaxcbvq +mehsnwpulcrinkatfjoyzxcbvq +megsdwpulhrinkatfjoczdclvq +megsdwjulhrinkatfhkyzxcbvq +megsdwpulhrinoatfjoyzxcwvy +megpdwpelhrfnkatfjoyzxcbvq +megsjwpulhrwnkatfjdyzxcbvq +megsdwpulhrbniatfjoyzxcbpq +megsdwpulhrwnkatfjoydxcpvq +megsdwrulhrinkatfjvyixcbvq +yegvdwpulhtinkatfjoyzxcbvq +meosdwpulhrinkatfjhyzxsbvq +mjgsdwpulhrinkatfjoyyxcjvq +megsdwpulhrinkatfnoyzlmbvq +mehsdfkulhrinkatfjoyzxcbvq +megsdwpuahrinkatfyoyzxcwvq +megsdwpulhyinkatfjobzkcbvq +megsdwpjlhrinkatfnoyzscbvq +megsdwiulhrinqatfjoyzxcavq +megsdwpulurinkatfjoykxcbmq +megsdwpmlhvinkatfjotzxcbvq +megswwpulhrinfatfjoytxcbvq +mxgsdwpulhrrnkatfjoyhxcbvq +megubwpulhrinkaafjoyzxcbvq +megsdwpulhrdnsztfjoyzxcbvq +megsdwpulhronkgtfjhyzxcbvq +megsdwzulhfinratfjoyzxcbvq +megsdwpulhrinkrtfjqyixcbvq +megspwpulhrinkatfjoywxcavq +megmfjpulhrinkatfjoyzxcbvq +lelsdwpulhrinsatfjoyzxcbvq +megsdwnultrinkatfjoyzxybvq +megsdwpulhdnnkatfjpyzxcbvq +megsdwpulhzinkatfjoyzhcpvq +megoddpulhrilkatfjoyzxcbvq +megsdvpulhrwnkatfjoyzxcbdq +megsdwpulhmikkatfjoyzxcbvr +meesdwpulhrinkaofjoazxcbvq +megndwhulhrinfatfjoyzxcbvq +megsdwpulhjihkatfjoyzxcbvb +jegsdwpulhrinkattjoszxcbvq +megsdwpulhrenkatfjodzxcbvp +mefsdwpulhrinkatfjoyzxcczq +megsdwpulhrknkatfjovzxcbvb +megytwpulhrinkatfjoyzxcbvo +csgsdwpulhrinkatdjoyzxcbvq +megsbwpulhrinkazfjtyzxcbvq +mrgsdwpulhjinkatfjoyzxcbvm +megsywzulhrinkatfjofzxcbvq +megxdwpulhrndkatfjoyzxcbvq +mcgsdwpuphrixkatfjoyzxcbvq +megsdlpulxvinkatfvoyzxcbvq +megsdwpulhrinfatfjoyzicbvo +megwgwpulhrinpatfjoyzxcbvq +mggsdwpulhrinkatfjtrzxcbvq +msgsdwpulirinkatfjoyzxcbaq +megsdwpulhrineatfeoyzxcbvl +megsdnpulhrinkatojoyzxcbvb +mfgsdwpulhdinkatmjoyzxcbvq +megsdwpulhrinkawfjuyzxcbvg +megsdwpulhrincatfjoyzxcxvu +mevsdwzplhrinkatfjoyzxcbvq +megskweulhfinkatfjoyzxcbvq +mebsdvpulhrinkatfjoyzxcbkq +megddwiulhrinkatfioyzxcbvq +mygsdwpulhqinkatfooyzxcbvq +megsdweulhrfnkatfjoybxcbvq +mrgsdhpulmrinkatfjoyzxcbvq +megsdwkukhrinkatftoyzxcbvq +megsqwpulhrinfatfjoyzxebvq +megsdwpulhriskanfjoyzxctvq diff --git a/src/main/resources/2018/day20.txt b/src/main/resources/2018/day20.txt new file mode 100644 index 00000000..b2813f55 --- /dev/null +++ b/src/main/resources/2018/day20.txt @@ -0,0 +1 @@ +^SEESSWNWSSEESWWSEESSWSWNN(E|WNWNENWNNWNNWNWWNNEES(W|EES(W|SE(NNNNWNNENEEENWWNWNWSWSWSSSWS(WWSSSSESE(SSE(NN|ESSSWWNWWNWSWNNWNNWWWSWNWSSESSWSWWNEN(NWSWSWSESEESESSSWNNWWN(E|WWSSWSESESSWNWWSSE(N|SSENNEENENESSESENESESSWNWSWSSSWWSSESWSESWSSESENESSSSEENESSWSESWWSESWSWSSEESSSSSWSESWWNWWS(WWWNEENEENE(NNE(NWWWWSWNWWSESWSWNNNNWWSSWNWWNEENWWNENESESENEENNESEEEE(SWSESWWWNW(SWNW|NEES)|ENNWSWWWNWNWSWNNENNNWSWWSSSE(NNEWSS|)SSW(SEENSWWN|)NWNNNNWNENNWNWSWNNWSWNWWWNNWNEENENWWWWS(EE|WWNNNNNEESEENWNWNWNEEENNWNWWNENWWNWWWSEESWSWSESWWWNWSWWNWWNWSWWNWSSSENEEEESWSWW(NEWS|)SSWNNWW(SSSSEN(EESWSSSEEEENEENNNEENWNENN(WSWW(NEWS|)SW(SSE(NENSWS|)SSWWW(NE(NNW(NEWS|)S|E)|S(WNSE|)E)|N)|ESESSSW(NN|SESWSWSSWN(NNENWESWSS|)WWSWWWWWSEESWSESWWNNWNW(SSESWSSESWSSSSSENEENWWNNENESS(EESWSSENESENESSENNESSENNENNWSWWWNWNW(SSEWNN|)NENWNW(NEENEEEESWSSSS(EEENESSEENNEEENWWWNNNEN(WWSSSS(WNNNNNN(EES(ENSW|)W|NNW(NENNNW(NENN(W(S|W)|NNE(S(SSSEWNNN|)EE(NWES|)E|N(W|N)))|SS)|WSWSESS(WWN(WSWWN(ENSW|)WWSSEN|E)|SSSE(NNNNNN|SWSWNN))))|SS)|ESSS(WNSE|)ENESSEN(N|ESE(N|ESWSWWN(E|WSWSWW(NEWS|)SSENESSENESEENWNEEESWSSE(NE(SEWN|)NNNWN(NNEWSS|)WSWWWSWN(SENEEEWWWSWN|)|SWSSSWWWNEENNWWWS(EE|WSSSSWWWNWNEEE(SWEN|)NWNWNNWSSWNWSSSE(NEEWWS|)SWWNNWNEN(WWSSWWWSWSEEESSWWSSEESES(EENESENNENESENN(WWNWWSESWWS(E|W(S|NW(WW|NNE(ESWENW|)NNW(S|WW)|S)))|ESSENNEEESWSEEESS(EEEENEN(ESE(SWWEEN|)NEEN(EEN(NESNWS|)WW|W)|NN(NN|WWSWSS(ENENSWSW|)WNNNENWWW(SESWENWN|)WWWN(EEEE|NN)))|WNWSWNW(WWS(EE|WWN(WSNE|)E)|NN)))|WWWWWWNEE(NWNENN(WSWSSWWWNENNE(SS|NWNEEE(SWSNEN|)NNNN(WWSWWW(NEENEWSWWS|)SSSSE(NNNEES(ENNSSW|)W|SSW(SSSSEEENWW(EESWWWEEENWW|)|N))|ESS(S|EEENWWN(SEESWWEENWWN|))))|EE)|EE))|NEN(NEN(WNSE|)ESE(S(WWSNEE|)EESS(WNSE|)(ENEEEE|S)|N)|W))))))))|W(SEWN|)WNENWN(NESNWS|)W)|WS(ESSWNSENNW|)WWN(E|W))|W)|NNE(NWNEWSES|)S)))|NN)|NNNNNNNNEENNEEENNNNNWNEEESSW(N|SSEESSSENNNNW(NNESENNNNEESWSESSESSWNW(NN|WSSSESS(EENESEEES(ESEESW(W|SESEENNW(NNNENWWSSWNWNWNENES(EEENNNNWNEENWNNNWSWWWSWSWSSSSWNW(NENWWNEENNNES(ENNNNENNENNWNWWWWWNWSWSSWSWSWSWWNWNENWWSSWNWSWSSEESENE(NWWWEEES|)SESESWWWS(EEEENNE(SSSWENNN|)EENWNW(SWNW(S|W)|NEEN(W|EENEESSSWWW(NEENSWWS|)(SEE(EENNNNNWN(EES(SS|E)|WSWNWSSW(ENNESEWNWSSW|))|SW(SESWENWN|)W)|W)))|WSSSWSEE(N|SWS(WNWNNW(SSSSSENN(SSWNNNSSSENN|)|NENWNEE(NEN(WNWW(SSENSWNN|)NNNNNNENNNNW(NNENEENENWWSWNNENENESES(SSSSEENWNNNESSESSESWWSSWWNENWWSWSESSES(ENN(ESENESS(ENNENNEES(ESEENWNWNNNNNEENENEENNNWSWNNNWNWWNENESENESENNESENNEESEESESWSEENNEENNNEESWSSENENEESESWW(SW(N|WWSWSSWSSWWWWSWWWSW(SWSW(WSWSW(SSEEEESSS(WWNENWW(EESWSEWNENWW|)|SESESEENNW(WNNENWNEEESESSESSENNNNESSEEESWSESSSWNWSWSWWWNNN(ESE(SWEN|)EN(W|E(NNWSNESS|)E)|W(NN(ESNW|)NW(N(N|E)|W)|SSWSWSES(WWWSWNW(S|NEEENWN(WSNE|)N(ESENEWSWNW|)N)|EEEEESEEENWWN(WWWWWN|NESEESSENENESSSSWWWWN(EEENSWWW|)WSWSESEEN(EEEES(ENNNNESENENEEE(SWWSWSWSS(WNNSSE|)ENENEE(NWES|)SSW(W|N|SSESEN(NWES|)ESSEES)|NWWWNWWSS(ENSW|)WW(NNE(NNNWNENWWSSWWW(NEENNENNNENNWSWSWNWSSS(E(SSWN|ENW)|WNWNW(SSEWNN|)WNNNESEE(NWNNWWNEENNW(SWWWWSSWNWWSWSWSESWS(SSSS|WNNWSWS(W|E)|EEENWNNE(N|ES(ENENNESS(SSW(SW(NWSNES|)SE(ENSW|)SS|N)|EE)|W)))|NEESEEESENESESSEENNESSSEENNW(S|NEESEESSESWSWSESENNEENWNNESENESESWWSSWWSSSSSSS(ENNNNEEESWSS(WNNSSE|)ENENNNESSEESSSENNESENNNWNWWNNWS(SSEESE|WNNENNWSW(SSSWSWWWNEENENW(ESWSWWEENENW|)|NNWNNEES(SENNENNENEENWNENWNWSSSWSWNNWNNESE(S|NNNWNENNWNNEENNENENENEESESESSSSWSSSWWWNWNWN(W(SSESSW(SEEEN(WNSE|)EEESSWW(NEWS|)W(SSSENEN(EESENENEENWWNENWNNENENWWSW(NNEEEESSSENESSWSSSEEESWWWW(NNNW(N(E|N|W)|S)|SESWSWNNWSWSWWSSEEN(W|E(N|EESWSSWWN(ENSW|)WSWSEESSESSESEESEEENNWNWS(SEWN|)WNNENNESSEENEESSEEEEENNESSENNNWWNWSWSS(ENSW|)WWNNNWWNNENEESS(S(SS|ENNNNWWNWWS(SWNWSSSWNNNW(NEEN(E(S|NEEES(WW|ESEENWNENNNENWWWSSS(ENNSSW|)(WWWNENWWNNWW(NNEES(EENNEEENNNEEENNWSWWNWNWSWWNENNNENNNENEEESSSSWSEESEESSSESSSSWNWWWW(SEESWSWWS(EEEEN(N(ESESEEENNENWWNEENNNEESENEEEESSEENENWNENWNENWWWNNNESSENENE(SS(SSSSSSSWSSSE(NN|SWWNNNWWSWNNWSWWWSSESENE(NWWEES|)EESE(NN|SWSEENEESSW(WWSEESWWWWSESWWNWSWWNWWSWWNENWWWNENWWN(WWSSWSSENESE(NNWNSESS|)EESWWWWSSW(SSW(NN|SEENEN(W|NNEEEEESESSSWWSEESSSENEESWSESSESSSWNWWSWSWSESWWSSSESWWNWNENWWSWNNWNNENWWSSSWNWSWNWSSESWWSSSSSSENNESEESESENNWNNWW(SEWN|)NENNEN(ESSWSESES(SSEEENEESWSWWWSW(N|SSENESSSWNWSSWNWNWNWWSWWWSSEEN(W|ESEE(NWNSES|)SWSSESSWSEENEEENWNEENWWWW(SSENSWNN|)(W|N(N|EEENESESENEESESEESWSWNWNW(N|SSESWSEEEN(EESEESWWSSSENEEESENENWNWSW(NNNNNWWS(ESWENW|)W(W|NNENWWWNWNEEES(W|ENENEESSSWW(NENSWS|)SEESENENE(NWW(NNNENWNENE(SSSSSWN(SENNNNSSSSWN|)|NWNNNE(NWNNWNEE(SS|NWNNWNNWSSWNNNWNW(NNWNNNNENNNEENWNEESEENWNNEE(N(NN|WWWSSWWWWSWSWW(NN(N|W|E(S|E))|SSSSENNNEE(NENSWS|)SSW(S|N)))|S(SSSWWSESSSE(NNN|SWSWNWWSESWS(EESEE(NWN(ENSW|)W|SSW(SESS|NWWNW))|WNNWNEN(W|NESEENNW(S|N(WSWNSENE|)N))))|W))|SSESSWWWSESSSESWSEESSWSEENNEE(NWWNWNNNN(WSSNNE|)EES(ENSW|)WSES(SEWN|)W|SWSESWS(SSSWWNENNNWSWNWWNWSWSWSWN(WSW(NWES|)SSENESSS(WNWSNESE|)ENNNENESSS(WNSE|)EEENNN(E|WSW(SEWN|)NN(W|E))|NENNE(NWWWWWN(EEEENNENN(WWSEWNEE|)NNNE(SSSESSSSW(WNENNSSWSE|)SSENE(SS|E)|EEE|N)|NW(SSSE|WNE))|S))|E))))|SS))|S)|SSSSSS(WNNWSWNNEEN(SWWSSEWNNEEN|)|SSSSSSWNWN(ENSW|)WSSESESSE(NN|SSWWSWNWNEE(NNWSWWWSESSESWSEEESESSE(SSWNWSSEESWSWWSSSSSSSSWNNNWNWNEE(S|NWWWSSSESSSSWWWNWSWNNWNWWNWNEENNNESSESS(EEE(NWNENWNWNNNEEENENEEE(NN(ESNW|)NWSWS(WNWNNNE(SSEWNN|)NNWSWSWSWNNENNE(S|NE(S|NNNWSSWWS(WWNENNWSWWNENNNNEESEEE(NNWW(SEWN|)WWWWWNWWSESESWSWWWSESSWNWWSSWWSWNNEENWWWWSSE(N|SSWWSSSWNWSWSESSESSWWN(NWN(E|WSSESSEEEENENNW(S|NN(WSNE|)ENNNEEEEN(ESSESWWSSSESSSSWNNNWWNNE(NWNN(E(E|S)|WSSS(SSSSESE(NNWESS|)SSESWSWWSEESSSWSWSWNWSWWWNEENENWNEE(NWNNNWSSSWSWWNWNNNNESENN(WWNNWNWSWNNENWWNWWSWNWSWSWNNENNEENNNESSENNESENENNWWNEEENNEESEEESSWWSWSESEE(SWWWNWNW(NNE(N(N|E(S|EE))|S)|SWSSENESE(SSWW(N(WW(SEWN|)WWW(NEEENW|WW)|E)|SS)|E))|NN(WSNE|)E(SEWN|)NNNNNNNNWSWNWSWNNENWWWWWSSESWWNWWWWNWSSESEEN(W|ESSEEN(W|ES(ENNNE(NWWEES|)SSES(W|EEN(ESSWWEENNW|)W)|SSWNWWWNWSSWSSWNNWNNN(ESESWENWNW|)NNNNEEEEENWNEEENESS(WWSSWWW(EEENNEWSSWWW|)|ENESEEENNNNWNNNNWSWWNWWWWWSSSWSEENEENWWNEEESSSS(WW(NEWS|)SWNWWS(E|WSWS(EENSWW|)WWNNWNNW(SSSESSSWNW(NEWS|)WWWWNWSWSEEEESSESSSESSSWSWNNWWSWNNWNNNEEE(NNWWWS(WNWSWWWNWSWNNWWNW(NEEEENNN(EESSSEENWNE(NWES|)EEES(WWS(SSWNWWW(W(WW|SEESEN)|NNN)|E)|E(ESNW|)N)|NWSSWWW(SEEEWWWN|)(NENE(NE(E|NW(WS|NE))|S)|W))|SSESE(S(WWWN(NWWW(S|NENWW(S|N))|E)|EEEESENESE(SWWWSWWW(NN(ESENSWNW|)W|SEESSESESSSSSSSWSSWW(SESESWSW(NN|SEEESESWWSESWSESSSWSEESENNWNNNNNENEEENNWSWNNWW(SESNWN|)W(NEENNWSWN(W|NNESENNESSEENWNENEEENNNNWSSWNWWWWSEES(SWNWSW(S|NNNNNNNENE(NWNWWSS(EN|S|WN)|SEEE(SEES(WWSWNWWW(NEEE|SEE)|ENNESSESSSWW(NENWESWS|)SSSWSSSEEESSESSENEEENNWNWNEN(WWWWW(NENE(N(WWSNEE|)NNNNNWNNWNNNNEE(NWNN(WW(SESWS|NWS)|E(S|NN))|SSW(N|SEESWSEEE(SWWSS(ENESNWSW|)SS|EEE(EE|NNW(WSE|NEE)))))|S)|WSEEEESWSESE(N|E))|EEN(E(N|SE(SWWS(WNSE|)ESSENNESSSWSWNW(SWSWNWSWWSESWSWWNENNWSWSWNWW(SWWSSWN(N|WSSEEEESWSWW(N(W|E)|SSENESENESSEENEESWS(WWWWWWN(EE|WWWWNWSS(WWNENNWSW(SS|NNENE(N(ESNW|)WNENNNN(WSW(SESW(W(W|N)|SSS)|N)|E)|S))|EEEE))|EENESEEENENWWW(SEWN|)NNNWSWNWNN(EEEES(WWW|ESSS(WNNSSE|)ENNENNW(S|WNEEESSESWSWSEENENNENNN(ESSSSWSESWWSSS(EENN(WSNE|)ESSEENNW(NWN(NNNEENWW(EESWWSNEENWW|)|EESEEEN(EEEN(ESSWWWSWSS(EEENW(NEEEESES(WWWNEWSEEE|)EEEENNESSEEEENNEEEESEEES(WWWWWN(WSNE|)E|ENEE(SWEN|)NNWWWS(EE|WNW(WWWWWWSSWWNENWNN(ESNW|)WSWS(WNNEN(EE|NWNWNNWNWWSESWSWSW(S(EESWSES(W|EENE(SSESWWNW(ESEENWESWWNW|)|NN(E|NWSSW(S|NN(NENSWS|)W))))|W)|NNNE(S|N(NENESENENEEENEESWS(WSWNWSS(WNSE|)S(ENESNWSW|)S|EE(SSESSNNWNN|)NNNNNWWWWSEEESWWWSWNWWNWW(NEENNESE(SWSEWNEN|)EENWWNWWW(NENWNNNEN(WW(S(WW|SS)|N)|ENENN(WSNE|)E(SSSEESSESWWWNENWW(SSW(WNENSWSE|)SEES(ENESS(ENE(SSEESE(SWSS(ENENSWSW|)WNNNWWWNE(WSEEESNWWWNE|)|NN)|N(NNESNWSS|)W)|WW)|WW)|N)|EN(W|NN)))|SSWNWNE(WSESENSWNWNE|))|SSS(W(S|W)|EN(E(S|E)|N))))|W))))|E)|N(NNN|EEENESENNNWSWNNENNNN(WSSSNNNE|)E(SSSS|N))|S)))|W)|WWNENW)|W)|WW))|S)|WNNWSSW(NN|W))|WSW(SEWN|)NNENN(NNNNESSSSSS(NNNNNNWESSSSSS|)|WSWWWSS(EENWESWW|)WNWWSESWW(EENWNEWSESWW|)))))|WWNWW(N|S(WNWSNESE|)SE(EESWSW(NWSWENES|)S(EEE(EESW|NW)|S)|N))))))|NENWNEENN(EESSESWW(WSEWNE|)NN|WNNNW(NEWS|)SSSWS(EE|W(SEWN|)NW(NEEWWS|)S)))|NN)|N))|WW)))|N)))|E(N|EE)))|W))|NENWNEENWWNENNWSWNNEE(ESSSNNNW|)NWNNWSWWSW(NNEEWWSS|)SSW(NWES|)SESSW(N|S(W|EENEN(ESSWSESWW(N|S(EE|S))|NW(NNE(NEWS|)S|S))))))|N))|N))|EE)|SWS(WNSE|)SEE(ESNW|)N(NN|W))|NNESESSENEE(SWSWSNENEN|)NWNNESENNNEEENNEEEEESS(ENESEENWNEESEN(NNNNNNWWNWNNWNEESSEE(SWEN|)ENNNWNENENWNN(WN(W(SSESWS(WSWS(WNWWN(EEE|WN(WNWSWWWNWNENNN(NWWNNWN(NESENNE(N|SSS(SWNSEN|)E)|WWSESWW(N|SSSEENN(WSNE|)E(SESE(SWSWN(WWSSW(SEEN(ESE(N|SE(N|SEEEEN(ESSE(EESSWWWN(EE|WWSSSSEESSEENWNENN(ESSE(ESSENESSWWWNW(NEWS|)SWSES(WWWNENWWSSWNWNENN(ESNW|)WWWNWWSSWWWWSEESESEENEE(NWN(W(N|SW(S|W))|EE)|S(WSS(ENSW|)WNWWWNWNWWWNWN(WS(SESSS(WNNSSE|)ES(ENNN(WSNE|)ESSSEES(WS(WNWSNESE|)ES(S|W)|ENE(NWWWNSEEES|)S)|W)|W)|EE(NNN(EESS(WNSE|)ENE(NEN(WWSNEE|)NENEEN(E(EE|SSWWSWSEEE(SW|NW))|WWW(S|N(NWES|)E))|S)|NWN(NESNWS|)WS(SEWN|)W)|S))|E))|SENEEENWWW(EEESWWEENWWW|))|NN)|WSWNW(N|S)))|N)|WWW)))|N)|NWN(E|NNN))|N)|N)|N)))|EESWSSE(SW|ENW))|E))|EE(SSENSWNN|)N)|E)|W)|N)|EEEESSEES(WWSWW(WSEEEWWWNE|)NENNW(S|W)|ENEEENWWWWN(WSNE|)EEEENWNNEES(W|E(SEESESS(WWSWW(S(E|WNWSW(N|SS(ENES(EN|SWW)|W)))|NNE(S|E(NWWNSEES|)E))|E)|NNWWWW(NENE(NNN(ESSENSWNNW|)WSW(N|S(SWSWENEN|)E)|S)|SSS)))))|EEESEE(NWNWESES|)S(WWWNWSS(WNWSSWWN(WSSSENESSSW(SSSSES(WWNSEE|)ENEEENWNNNWSSSWNN(WSSNNE|)NN(NN|EEESE(N|SWSE(SSSESEESWWSEEE(S(ENSW|)WWWSWS(EENSWW|)WWNENENNWSWSWNNW(SSSSEN|NENEES(WSNE|)E)|NNN(EN(W|ESENNESSSE(NNNNW(NEWS|)W|EEEEEN))|WW))|E)))|N)|E)|E)|ENESS(S|W)))|W(WN(WWSEWNEE|)E|S))))|ESENNWNNESE(N|SSESSWN(SENNWNSESSWN|))))))))|EES(WSSSW(WNEWSE|)S|ENE(ESESSWNW(N|SS)|N)))|EESWWSE(WNEENWESWWSE|))|W))|S)|WW)))|E))|SES(WWNWWW(N|SEESESW(ENWNWWEESESW|))|ESENN(E(NWES|)SSS(WWSEEWWNEE|)E|W)))|E)))|E)|SSWS(WN(NEWS|)WSWWS(WNSE|)EES(ENESNWSW|)WW|EE))|SWW(SEESENN(SSWNWWEESENN|)|W))|W(N|W)))|NNNWN(NESNWS|)WW)|E))))))|WW)|W))))))|W)|WWSSWWSSEN(SWNNEEWWSSEN|))))|NN)|N|EEESSEESENEES(ENNWNWN(EEEE(NWES|)SW(W|SEESWWS(NEENWWEESWWS|))|NW(NNNN(N|EEENEE)|SW(N|SS(WNSE|)E(E|N))))|W|S))|N)))|W)|NNNWSSW(S|NWN(E|WSWWN(E|WWSWNWWSSWSEEEEN(WWNSEE|)E(N|SSESSWWN(NWSWNWSSSEE(NWES|)SEEN(ESES(WWWWWNWWS(E|SWW(NENNNE(NNWSWNWNENE(S|NN(ESNW|)WWS(E|SWWSSE(N|SW(WNNNNEENWWWWWWWWWWWSEEE(E|SWWWSSENES(ENSW|)SWSESWWWWNWNWWNWNWSSSWNWWNNWWNEENEEEN(WWWWWWS(EE|WNWSWSSWSWNWWNEEENN(WWS(WNWSSWNNWSSWWWWNEN(EESWENWW|)WWSWNWSSESE(N|SWSESWSWNWNNN(ESSNNW|)WWSWSWWNNE(ENWNWSWWWWWNN(WWWWWSSWSWNWSWWSESWSESSWNWWSESESWSWNNWWNWNNNWSSSWSWSESSWNWSSSWNWNENNNE(S|NNE(S|ENWWNENNNNN(EEESESEENWN(EEEEES(EENWESWW|)WWS(W(SWSWSS(W(SESNWN|)NNN(E|WWS(W(S|NNE(NWES|)E)|E))|EEN(W|N))|N)|E)|W)|WSWNWSWNWWWSEESSWWWSESWWWWNWW(NNNNEEESSE(SW(SEWN|)WWNNES|E(NWNEWSES|)EE)|SSE(ESENESESWSWNWSSSWNNNW(NEWS|)SSSSEEENNEEEN(NEENWN(EESES(WSESSWWSWWWSSEESENN(E(SESWSWWWNWWWWNN(WSSSW(SSESSW(N|SSSSENESSSEENENNWNW(SS(E|S)|NNW(SSWNSENN|)NEENWWN(W|NESENESESEEEEN(WWW|ESENEEESSWSES(EENNW(NEENWNW(WWWWW(NEEEEEEESESSSWS(S|EENNENENENNWSWW(NW(S|WNN(WSWW(NENEN(ESNW|)WW(NEWS|)S|WS(WNSE|)EEE)|ESEE(EEENENWWNEENNEESSENNENWWNWSWWW(NNEN(W|EEES(WWSWENEE|)EENNW(S|W(W|NEN(W|ESE(N|SSSEENN(WSNE|)EEESSWNWSSSSSSEENEESSEENWNENNWN(ENE(SSSE(N|SSSSSSEESWWWNWWSSSWSEEESSSWWNWN(EESNWW|)WS(WNWNEENWWWNNEES(W|ENNNE(SSS|EN(WWN(WWWSWWWNW(NEN(W|NNN(WW|EESWSESSSWNN(SSENNNSSSWNN|)))|SSESWSEENE(EN(ENESSW|WW)|SSSS(SENSWN|)WWNN(ESNW|)WSWWSSWS(SEEN(NNEWSS|)W|WWNENWW(SW(N|W)|NENNNESES(S(WNSE|)S|EENNW(WN(NN(ESSENN|NN)|W)|S))))))|N)|EE(SWEN|)NNN)))|SESWSWSSWWSS(ENEES(ESE(SS|EENESENEEEENNWWNWSS(EE|WNNNWN(EENWWNNNESSENEESESEEENEENNEE(SWSS(SSSWSESE(N|SESWWNWWWSWNW(SWS(WWN(W|E)|EEEE(NEWS|)SWWWWS)|NEEE(E|NNNENW(NEWS|)WSSWNWN(WWS(W(W|NN(N|E))|ES(ESEEWWNW|)W)|E))))|E(E|N))|NNWNENWWNENWWWWWNNNESES(ENESEESSEE(SWEN|)NNE(S|ENNNNESS(S|ENEES(W|ENNWWNNN(WWNENWWSSSES(WWSSWSS(ENSW|)W(WNNNE(ENN(ENSW|)WWS(WSSWWNWWS(ESEEES|WWWW(SESSSWWW(SEEESEEN(WNNNNSSSSE|)EESE(N|SWW(SWNWSWSEESS(WNWWWNN(E(S|N(N|E))|WSWNWW(SEWN|)N)|E(SWEN|)NNESE(SWEN|)NE(N(WW|N)|E))|N))|NEN(NNWSS|ES))|NENENNEN(WWSSNNEE|)EESWSES(WW(SWEN|)N|EE(S|NWNNESE(E|S)))))|E)|SS)|SS)|E(N|S))|ESSEESEEESWSWSS(ESENN(NEESWSSENESENESSEEE(S(WWWWW(SEWN|)N(WWWWWN|E)|S)|ENNEN(WWWSS(ENSW|)WNNWNEN(ESNW|)WWW(SESWENWN|)WN(W(S|N(WNSE|)E)|E)|ESSWSE))|W)|WN(NNEWSS|)W)))))|W)|E)|WWWSWSWSESEE(SWEN|)NN(WSNE|)E(ESWSE|NW))))|W)|WNWN(WSNE|)NE(EENSWW|)S)))|N)|WSWWS(EEE|W(NNEEWWSS|)S)))))))|SESWWSSWS(W|EE))|S)))|S(S|E)))|W)|S)|S)|WWWSWWSESSWSSSWSEENNNESSESSW(WWSEEE(ENNNNEE(NWWW(N(EE|NN(NE|WSS))|S)|SS(EE|W(N|S(E|S))))|SWSESWWNWS(WNN(EE|NNW(SS|WWNNEE(SWEN|)NNWW(S(E|W(N|WS(ESNW|)WWWW(SE(E|SWSSSS)|NE(NWNEWSES|)EE)))|NNNNESENE(NEENEEN(NEWS|)WWWSWWN(WSWNW(N|SS(WNSE|)(EEE|S))|E)|SS(S(WNWSNESE|)SS|E)))))|SEES(ENSW|)WWSSWNWS(NESENNSSWNWS|)))|N))))))|NNN)|ESENNNEEENE(NWES|)E)|N)|WW)|ENNWNNE(NN(ESSNNW|)WSW(SSWWNE|N)|S))|W(S|W))|W)|N)))))|EEEE(SWWWEEEN|)EEESESENN(ESSNNW|)W)|S))|E)|E))|EEEEEESSWSS(WWNWNN(WSWWWSESW(ENWNEEWWSESW|)|ESE(NEWS|)S)|SE(SENSWN|)NN)))|SEE(N|ESWS(E|S))))))|S)|SES(ENSW|)WSSS(SENSWN|)W))|ENE(SSS|NWWNNNNN(WSNE|)EE))|W)|E))))))|N)|W)|WNW(NEEEWWWS|)SS(WWNEWSEE|)SS)|NEEEN(ESNW|)NNNWWNWS(S|WNWWNEENWNNESENNW(ESSWNWESENNW|)))|W)|SESWS(WN|EES))|S)))|WW)|SW(SSE(S(WSW(WWSEE(SS(WNSE|)S|E)|NN)|EEE(S(WSNE|)EE|NN))|N)|N))|E))|W(N|W)))))|SSW(SESSW(SEWN|)N|N))|W)|W)|N)|W)|NNESES(SEE(SWEN|)NWNNWN(EE(ESWSEWNENW|)NW(W|N)|W)|W)))|W)))|SWSSSWNW(SSEWNN|)WNENNNNNWNNWWSESSESWSS(ENSW|)WNNNWN(E|NNWSSSSESWW(NNNWWNNEE(SWEN|)NNW(S|NNWN(EESE(N|S(SSENENEE(N(WWWSNEEE|)NE(NWES|)S|SWS(EESEESW(SESWSS(ENSW|)SS|W)|W))|W))|NNWWWSSW(WNENWNEE(WWSESWENWNEE|)|SEE(SWWEEN|)NE(NWES|)S)))|SSEE(EESW|NW))))))|S(S|WW)))|SEESE(NESNWS|)SWW(S|W(NEWS|)W))|S)|SSS))|WWSESWWSWSWNNN(E(ENSW|)S|WSWSSE(N|SSS(E(E|NN)|SWNWWNEN(ESNW|)NNWSSWSWWW(NNNNNENESEES(WSWNWSSSENE(WSWNNNSSSENE|)|ENENWNWNN(WWSES(SEWN|)WWNNW(NEEEEWWWWS|)S|E(S|E)))|SEESSSENESSWWWSW(NNNE(NWWSNEES|)S|SESSSWWSSEEN(ESSEESENESESWSESWWNWN(E|WWN(WWSW(SSSW(N|WSEEEENENWN(WSSNNE|)(N|EESESESENESSESWWSW(NWN(NW(WSEWNE|)N|EE)|SSENEEN(W|ENNE(SSSSW(N|SESEESE(S(ENESNWSW|)WSWNWN(WNSE|)E|NNWWN(EE|N)))|NNNNNWW(SESWSESW(ENWNENSWSESW|)|NNEN(NEN(W|E(N|ES(E|WSWSEE(SWWWEEEN|)N)))|WW(S|WWNWNNWS(SSEWNN|)WNNNEES(E(SSESNWNN|)NN(WWW|E(NNN(W(NWWNSEES|)SS|E)|E))|W)))))))))|NWWWWN(EENNE(SSEEEWWWNN|)NWWN(ENNESE(S(ENSW|)W|N)|W)|WW(S(S|E)|N)))|E))|W)))))))|W)))))|S))|N)|N)|NNNNWNW(S|N(W|EEEESW(W|SESE(SWWNSEEN|)NNE(NWNENWW(SWWEEN|)N|SSEEENWN(WS|EENNE)))))))|N)|W)|SWSW(NNEWSS|)S)|W)|WWNNW(SSS(WSNE|)E|NNN(NE(ENSW|)S|W)))|WW)|SSS)|EE)|SS))|E)))|S)|SSS(WW(N(WNSE|)E|S)|EE(SWEN|)N(W|ENEEEE(SWEN|)NWNNWW(NENEESW(ENWWSWENEESW|)|SS(EN|WNN)))))|S)|S))|W)|SSWSE(E|S(S|WWNNNWSWNWNWN(WWSSWWSES(E(EN(W|E(NWNSES|)SE(ES(E(S|N)|W)|N))|S)|W)|EE(NNWSNESS|)SEEE(N|S))))))|W)))))|SS)|S)|E)))|E))|N)|EE(SEWN|)NNNENE)|S(SS|W)))))$ diff --git a/src/main/resources/2018/day21.txt b/src/main/resources/2018/day21.txt new file mode 100644 index 00000000..9bac3270 --- /dev/null +++ b/src/main/resources/2018/day21.txt @@ -0,0 +1,32 @@ +#ip 1 +seti 123 0 5 +bani 5 456 5 +eqri 5 72 5 +addr 5 1 1 +seti 0 0 1 +seti 0 7 5 +bori 5 65536 4 +seti 13159625 6 5 +bani 4 255 3 +addr 5 3 5 +bani 5 16777215 5 +muli 5 65899 5 +bani 5 16777215 5 +gtir 256 4 3 +addr 3 1 1 +addi 1 1 1 +seti 27 9 1 +seti 0 0 3 +addi 3 1 2 +muli 2 256 2 +gtrr 2 4 2 +addr 2 1 1 +addi 1 1 1 +seti 25 0 1 +addi 3 1 3 +seti 17 4 1 +setr 3 3 4 +seti 7 5 1 +eqrr 5 0 3 +addr 3 1 1 +seti 5 6 1 diff --git a/src/main/resources/2018/day22.txt b/src/main/resources/2018/day22.txt new file mode 100644 index 00000000..d341d054 --- /dev/null +++ b/src/main/resources/2018/day22.txt @@ -0,0 +1,2 @@ +depth: 5616 +target: 10,785 diff --git a/src/main/resources/2018/day23.txt b/src/main/resources/2018/day23.txt new file mode 100644 index 00000000..f762f205 --- /dev/null +++ b/src/main/resources/2018/day23.txt @@ -0,0 +1,1000 @@ +pos=<136613456,-512820,-739737>, r=87427481 +pos=<-53697593,55277802,49040699>, r=86116187 +pos=<3220880,75515511,53337027>, r=50746552 +pos=<88414078,70781701,66277674>, r=98943677 +pos=<-17988814,83735639,57607927>, r=84446784 +pos=<7905695,86080636,69893638>, r=73183217 +pos=<-106237978,86340882,82036549>, r=85944614 +pos=<-39951484,51796765,70217077>, r=87079969 +pos=<-41339171,48697955,55193194>, r=73297553 +pos=<-42571382,53083825,53317409>, r=74087026 +pos=<-7368751,52027496,-9560976>, r=95138965 +pos=<-8239116,41812660,62596194>, r=54485758 +pos=<-1137951,49037154,75388024>, r=52951810 +pos=<7650881,79141366,92778865>, r=89383763 +pos=<-17148778,67167319,69069673>, r=78500152 +pos=<-34682895,65463074,55433727>, r=80694128 +pos=<92864435,72243385,52889446>, r=91467469 +pos=<23342790,57278342,66486606>, r=96631618 +pos=<16097469,22492567,11010000>, r=76930041 +pos=<-27239715,74048890,47983162>, r=79486831 +pos=<48014242,79716366,40015768>, r=62251861 +pos=<511676,64398402,63621216>, r=52622716 +pos=<-29486239,66238746,61923874>, r=82763569 +pos=<92097957,57353083,58524935>, r=81446016 +pos=<-2615864,64900611,68273820>, r=60905066 +pos=<17304995,87864295,58127670>, r=53801410 +pos=<36460810,70793722,116450849>, r=97175553 +pos=<91303570,59210855,59663955>, r=83648530 +pos=<17400055,51714900,106525287>, r=65954578 +pos=<-9201950,68270611,75924360>, r=78511311 +pos=<10184185,63093052,93307967>, r=71331241 +pos=<24739666,43259195,5573675>, r=52957566 +pos=<-18267592,52724555,76111483>, r=72218039 +pos=<-35598801,54737022,27433735>, r=89083529 +pos=<35813819,73515444,94558754>, r=77358361 +pos=<6642272,22056475,91067625>, r=87832335 +pos=<17645774,89603262,67321149>, r=64393217 +pos=<-10216980,27634811,38770566>, r=70341591 +pos=<12799318,81249393,71992414>, r=65556938 +pos=<-10218046,74437078,62070349>, r=71839923 +pos=<-1309123,20674953,59788059>, r=65885225 +pos=<-27217791,66526827,53078642>, r=71937695 +pos=<-34737368,44315647,75994929>, r=91879642 +pos=<30808903,39024070,99557972>, r=65161437 +pos=<18233335,72395211,90831029>, r=70107346 +pos=<37186749,-678419,57742780>, r=69426693 +pos=<-9615179,80576697,64086230>, r=79392664 +pos=<33935621,102484176,52277559>, r=62167524 +pos=<21730454,116532754,59523052>, r=79439730 +pos=<-44299553,51849314,52674431>, r=73937932 +pos=<98820726,52369354,56304096>, r=80964285 +pos=<-14670863,53307196,63286058>, r=56378495 +pos=<21141579,52692533,60648771>, r=77839132 +pos=<106030705,57863782,38674931>, r=99756568 +pos=<3660762,56362269,113500773>, r=91316727 +pos=<-407093,36114871,62900059>, r=52655349 +pos=<17300250,90851621,82759279>, r=81425029 +pos=<3552610,79637006,46529196>, r=55736575 +pos=<19340107,84837235,62352207>, r=52963786 +pos=<8521013,89819722,24371259>, r=83109002 +pos=<14563407,28673587,78383971>, r=60610219 +pos=<105274857,48490223,59505360>, r=90108685 +pos=<6522669,68013196,92958454>, r=79563377 +pos=<61441811,62255240,63607848>, r=60775173 +pos=<-30662880,72201886,57781685>, r=85760834 +pos=<-5704121,74191612,91679671>, r=96690023 +pos=<22440794,115302243,29587291>, r=89455675 +pos=<16846226,85850758,26219592>, r=68966703 +pos=<-11181912,74609397,43701422>, r=68271328 +pos=<112019147,48094141,55257089>, r=93000920 +pos=<-58029664,63702221,52791218>, r=99637517 +pos=<56546279,54927537,104557578>, r=89501416 +pos=<13690470,51265122,54792423>, r=53548975 +pos=<-20863525,78114651,44421611>, r=80738144 +pos=<20071309,136046599,55636529>, r=96726219 +pos=<-9825817,54458897,71973514>, r=61373140 +pos=<-13643977,45813902,94182312>, r=87475383 +pos=<4214048,57552549,55230473>, r=97407755 +pos=<-44465852,38322072,54656647>, r=86263523 +pos=<-8532222,52266115,71351598>, r=57264679 +pos=<15789835,78397136,91588786>, r=79310551 +pos=<87644233,71738261,52393733>, r=85246435 +pos=<24700943,90988926,103171122>, r=94573621 +pos=<-16261249,63121025,87229161>, r=91725871 +pos=<-52294570,67135761,48053370>, r=97558456 +pos=<18918374,81332072,97803514>, r=85331838 +pos=<11760283,82388891,26779326>, r=70030661 +pos=<19928626,82449711,96833465>, r=84469124 +pos=<-18348975,19999142,52648068>, r=76460901 +pos=<-12075601,71251550,85024678>, r=93466308 +pos=<80062151,62500897,78775775>, r=94808908 +pos=<12337661,103647294,81418622>, r=97842757 +pos=<-11115387,60112851,66531714>, r=62874491 +pos=<16906477,63764749,85558216>, r=57530991 +pos=<-4672303,54855285,1301903>, r=84407059 +pos=<-37982464,58456898,68225299>, r=89779132 +pos=<-17681001,71939994,60038525>, r=74774035 +pos=<-11837172,58467855,79274314>, r=74693725 +pos=<29729949,7390010,64977794>, r=61136429 +pos=<-12679395,87224461,58161931>, r=83180457 +pos=<-11559100,72144044,77817800>, r=86635361 +pos=<-2084469,25684278,55681143>, r=57544326 +pos=<20590016,129914590,49426051>, r=86080032 +pos=<-7571416,69794846,69085384>, r=71566033 +pos=<-34145880,48469543,51820255>, r=62959690 +pos=<-8692081,31985652,52581756>, r=54751347 +pos=<-24455978,69065733,52902609>, r=71539034 +pos=<-2667941,59922398,71227376>, r=58932198 +pos=<-38020475,72881338,61644325>, r=97660532 +pos=<-21527600,53755812,51653194>, r=52050984 +pos=<-8830611,33006975,78898650>, r=80185902 +pos=<19025250,113913931,63618165>, r=83621311 +pos=<8387089,77230233,57248610>, r=51206312 +pos=<9535513,118434510,37136580>, r=97943806 +pos=<78992433,58822717,31347868>, r=81004338 +pos=<-16906193,77442482,52709412>, r=72172536 +pos=<22311017,63448797,51701106>, r=94242941 +pos=<43179406,2818296,30763106>, r=84483777 +pos=<-363630,57933199,98730777>, r=82142085 +pos=<-3421442,71654138,81584493>, r=81774527 +pos=<105294101,47765605,48049117>, r=84365008 +pos=<-14236037,92920841,48040781>, r=85297524 +pos=<5696945,87936599,71179435>, r=78533668 +pos=<70714071,41126802,64803849>, r=68209814 +pos=<-18725349,54598292,52699640>, r=51138183 +pos=<59897823,71653281,71202033>, r=76223304 +pos=<48123775,102241419,73882598>, r=97717918 +pos=<-27257912,59427348,52360090>, r=64159728 +pos=<7347141,78617861,96938400>, r=93323519 +pos=<98970812,42594863,66538549>, r=96733304 +pos=<60136017,76634280,74781184>, r=85021510 +pos=<-38514792,65847495,52025409>, r=81502116 +pos=<-5508508,4887248,43864104>, r=83287138 +pos=<21727987,54693625,95057154>, r=53137390 +pos=<-15479704,40894383,53779209>, r=53827666 +pos=<-50001012,42594012,56389944>, r=89260340 +pos=<-49970116,64164073,53317682>, r=92566258 +pos=<-56357341,55323528,59446041>, r=96241383 +pos=<625968,53683329,98614903>, r=76786891 +pos=<21482773,117944535,70699492>, r=92275780 +pos=<16203712,73330825,69917915>, r=52159463 +pos=<13906226,70337776,30608175>, r=52004893 +pos=<-21655059,68530571,79036384>, r=94336614 +pos=<-6379112,70074314,96974691>, r=98542673 +pos=<37257281,88232345,55974220>, r=54934223 +pos=<-153042,61570334,64745296>, r=51583144 +pos=<75744358,74770786,74235757>, r=98220949 +pos=<2593526,12576425,76209878>, r=86502916 +pos=<-3213601,79186838,80823018>, r=88337919 +pos=<-9431288,52885294,66308318>, r=53739421 +pos=<39457172,77981561,77781961>, r=68690851 +pos=<3658726,45027232,78570696>, r=55347772 +pos=<19540854,59560050,33221913>, r=66437344 +pos=<-23991955,53819675,65495637>, r=68421679 +pos=<-15925338,62003166,71681923>, r=74724861 +pos=<179979,95055064,72345095>, r=92334745 +pos=<32084825,113714994,57462206>, r=76732047 +pos=<-79456713,-30995940,73253681>, r=71108738 +pos=<-5085269,56556449,63274512>, r=50030649 +pos=<-1823099,53617693,74353439>, r=54908645 +pos=<-21582671,87360226,64824893>, r=98882268 +pos=<-54047120,52572271,45012396>, r=87788501 +pos=<-621964,40254302,67623764>, r=53454465 +pos=<10705962,52178757,-10564055>, r=78218262 +pos=<-27052117,72974854,68996532>, r=94137885 +pos=<-5333720,61326896,75858050>, r=67633053 +pos=<-442860,-7927774,60719749>, r=94553540 +pos=<20190232,59561903,101548027>, r=66034633 +pos=<-7907411,40629427,68521654>, r=61262635 +pos=<-9455107,66611005,94728621>, r=95909233 +pos=<22122168,62372400,119686289>, r=85051023 +pos=<-16418814,91187751,60788730>, r=93509810 +pos=<-12210203,71963130,19080036>, r=91275101 +pos=<-16069946,54585553,55218935>, r=50988886 +pos=<73589783,36919962,51760461>, r=62248915 +pos=<10988236,47525791,7585386>, r=60430836 +pos=<10516253,63819008,75162627>, r=53580091 +pos=<54978561,77777004,81843099>, r=88068740 +pos=<843965,59034530,26718598>, r=57653476 +pos=<8390445,51933284,106893232>, r=75550828 +pos=<55468357,41898786,6292104>, r=82163240 +pos=<-15657432,59791539,54996025>, r=55559386 +pos=<21925705,56064114,98432334>, r=57685472 +pos=<2045205,54926092,91406478>, r=69401804 +pos=<18964578,82009106,68170256>, r=56329266 +pos=<-5020873,58135455,83138917>, r=71409692 +pos=<11206282,18758794,90297569>, r=85795593 +pos=<60429823,65420118,62455940>, r=61775922 +pos=<-50071054,65142864,56916609>, r=97245137 +pos=<37522973,119514287,68154460>, r=98661779 +pos=<-24546116,79951244,52341069>, r=81952965 +pos=<-42895143,51426102,49103721>, r=71398899 +pos=<19847811,70965352,88276453>, r=64508398 +pos=<31969885,74676586,119451667>, r=99568484 +pos=<43133639,79493715,70091589>, r=66189023 +pos=<3536597,70013464,59700142>, r=51291540 +pos=<-43456481,62212963,55178319>, r=85962366 +pos=<66908155,61377553,55147564>, r=56903339 +pos=<-6338837,64186892,67392177>, r=63032325 +pos=<24582754,12428156,39119902>, r=50399652 +pos=<19622738,107750729,55849974>, r=69092525 +pos=<-50422280,58990076,62168244>, r=96695006 +pos=<58134510,61311825,96239969>, r=89156504 +pos=<-30966037,57564421,54587595>, r=68232489 +pos=<12569803,83417760,58547639>, r=54510046 +pos=<16028817,91085624,85099394>, r=85270691 +pos=<26948233,79274928,118354187>, r=98047375 +pos=<-52310680,47522666,64367435>, r=94618457 +pos=<-6416427,79465208,59490450>, r=70486528 +pos=<20092186,68488461,91337971>, r=64848774 +pos=<-15142198,42300705,54605738>, r=52910257 +pos=<-27837357,69166421,45527549>, r=77657747 +pos=<-40369484,73666973,51836487>, r=90987378 +pos=<85019354,56875805,38052709>, r=78379725 +pos=<-4826865,73385493,74154124>, r=77481047 +pos=<-44327050,62980445,57928726>, r=90350601 +pos=<2268051,71674062,18320627>, r=77266756 +pos=<7560942,23918555,95582539>, r=89566155 +pos=<-40522661,58387981,55190926>, r=79216025 +pos=<17493703,92481489,21602524>, r=79566649 +pos=<-549853,30548349,59679581>, r=55144150 +pos=<-11540623,61439486,75747954>, r=73842446 +pos=<-27425143,66943956,51613022>, r=71096670 +pos=<7492358,52336684,59482404>, r=62591245 +pos=<8199261,52115157,61979910>, r=52924169 +pos=<-5227038,75473558,53223397>, r=59038494 +pos=<69304179,60217316,90678830>, r=93670829 +pos=<-27825322,58595174,52943775>, r=64478650 +pos=<-3930520,44822324,83076659>, r=67647944 +pos=<-15669371,56863526,61131713>, r=58778995 +pos=<28136546,52898534,69587237>, r=88623606 +pos=<-65393666,51826191,55613912>, r=97948204 +pos=<-15477551,51180735,42248775>, r=50591359 +pos=<40449375,72513414,96662908>, r=83095857 +pos=<-33924420,53998875,71917916>, r=84955612 +pos=<10793863,52565615,51767299>, r=98060212 +pos=<9995273,60527127,91707845>, r=67354108 +pos=<-60284471,51756689,57993530>, r=95149079 +pos=<18376558,10452573,62217674>, r=58851640 +pos=<6437033,60403963,76732508>, r=55814249 +pos=<-28335460,51550727,67141191>, r=72141764 +pos=<-20795148,56783730,53199338>, r=55892601 +pos=<12754662,84841524,53799805>, r=51001164 +pos=<9355656,37410878,81929957>, r=60626411 +pos=<70162685,52698231,62479018>, r=58810202 +pos=<3593617,1103985,61329203>, r=82094839 +pos=<-11110833,76403444,81998629>, r=94627295 +pos=<-2911501,68332204,55930359>, r=52288511 +pos=<-5611352,24754525,54946306>, r=61266149 +pos=<8852382,71155727,68890982>, r=56308709 +pos=<61447488,68409236,69588689>, r=72915436 +pos=<7800512,89666253,65758055>, r=72738393 +pos=<10592995,54945607,58732681>, r=89051922 +pos=<42798128,-12649279,56562836>, r=85829241 +pos=<11562554,75630041,86875504>, r=76057543 +pos=<77961659,71510466,54153352>, r=77095503 +pos=<31055259,54921299,-9869494>, r=70383159 +pos=<-27501669,62023219,47541351>, r=68164946 +pos=<42374475,68761335,72601978>, r=57207824 +pos=<-33321254,51983321,59677321>, r=70096300 +pos=<24068578,39736961,60654009>, r=88299248 +pos=<-19116561,56737201,34200348>, r=67834972 +pos=<22969648,52249055,100644454>, r=55038258 +pos=<-42911185,51860830,61376355>, r=81262991 +pos=<-42633368,44611772,66190367>, r=89674954 +pos=<-3829240,75255688,21232601>, r=84033808 +pos=<5934856,57988042,76585113>, r=53752725 +pos=<-32964350,68530123,57108410>, r=83717261 +pos=<43876005,92164898,87846839>, r=97357843 +pos=<-2417792,58943300,65531206>, r=52006718 +pos=<54964722,89070986,53056518>, r=70562253 +pos=<-290623,31446470,65443341>, r=59750487 +pos=<7639935,101059316,58888687>, r=77422498 +pos=<-28253746,62612782,71235848>, r=87217278 +pos=<-7422094,56693858,109005575>, r=98235920 +pos=<61189820,88854622,44952918>, r=79628549 +pos=<-16010449,60503569,67814188>, r=69442584 +pos=<31995549,99041054,92811203>, r=97317853 +pos=<14407890,68606212,88656048>, r=67968926 +pos=<3797019,93897803,59385476>, r=74600640 +pos=<89982687,70799922,58816742>, r=93069386 +pos=<-47391381,58920806,47022977>, r=85470601 +pos=<-18682541,52396968,60465510>, r=56659507 +pos=<-33603071,56312429,61658802>, r=76688781 +pos=<-1966320,58483882,29754668>, r=56877265 +pos=<-6876331,35253483,65966223>, r=63052064 +pos=<-39772638,75789985,47508955>, r=94235051 +pos=<-24980812,-1938691,-46278539>, r=50540858 +pos=<-14975005,78724644,39316097>, r=80565111 +pos=<-2885944,65589513,76516656>, r=70106553 +pos=<3541691,72547980,70693895>, r=64814600 +pos=<-44510906,63214333,63320805>, r=96160422 +pos=<185135951,79371810,69897884>, r=92278734 +pos=<-15712941,69417771,56680209>, r=66925482 +pos=<3371300,64063926,70577995>, r=56385028 +pos=<20093270,89812250,83966344>, r=78799702 +pos=<-44882626,56482809,44012736>, r=83534067 +pos=<7807097,59338218,93406346>, r=70052015 +pos=<83206185,54254511,65285920>, r=76216650 +pos=<-9128452,31764042,52408460>, r=55235957 +pos=<9273140,58063106,84328894>, r=58233459 +pos=<12730173,65723179,86216535>, r=64323934 +pos=<-5370160,21333035,52408548>, r=61908782 +pos=<-50412106,36708544,57003999>, r=96170823 +pos=<-12428116,56614507,59912876>, r=54070441 +pos=<23530187,55890018,101558624>, r=59032841 +pos=<24076853,75872593,84021081>, r=60931262 +pos=<66742911,53159306,102755650>, r=96128101 +pos=<52985633,69568131,100732548>, r=96756344 +pos=<21276856,95454549,27263024>, r=73096105 +pos=<18634979,90055348,78648309>, r=75183223 +pos=<59296178,97443382,58785611>, r=88995359 +pos=<-9151924,60937196,63129967>, r=58333507 +pos=<-131439802,11932397,63801725>, r=91099003 +pos=<-15182359,51945676,96531706>, r=88774362 +pos=<37456150,58413739,90785927>, r=60125884 +pos=<55535275,58675694,68529536>, r=56210588 +pos=<-23901453,82911425,51765843>, r=83693104 +pos=<20400242,84135488,38426476>, r=51490217 +pos=<86127079,53137259,73699744>, r=86434146 +pos=<-37504970,65330192,58356041>, r=86305590 +pos=<-36229876,54144877,76073195>, r=91562525 +pos=<7122807,47260000,60037998>, r=92003347 +pos=<14241003,60321844,84135837>, r=55331088 +pos=<-58054472,54730510,42664262>, r=96302105 +pos=<11128985,-3179856,61388093>, r=78901954 +pos=<-86171724,81676146,128118766>, r=65629454 +pos=<-32477909,54111811,66095298>, r=77799414 +pos=<16473884,29685000,94881174>, r=74185298 +pos=<-39673388,54367240,60656362>, r=79811579 +pos=<-36820899,56003364,51780853>, r=69719509 +pos=<33393407,80286458,76512600>, r=63663115 +pos=<18145724,41961673,52085548>, r=82246846 +pos=<773269,56344730,109740475>, r=90426345 +pos=<23227623,20924988,89657454>, r=70967862 +pos=<29769636,51258040,101968164>, r=56466105 +pos=<-3255302,91302711,53052997>, r=72725506 +pos=<63288029,31756890,15053302>, r=91363738 +pos=<-696254,82267064,54884033>, r=62961850 +pos=<24224162,74018463,80725407>, r=55634090 +pos=<-31583375,35116342,57915541>, r=79845595 +pos=<-20265647,61458300,53421504>, r=60260040 +pos=<-3625510,70617596,85973701>, r=85331222 +pos=<38592662,72038274,107230244>, r=91331550 +pos=<20947230,95753333,5848876>, r=95138602 +pos=<65256974,42508621,53997591>, r=50564655 +pos=<56144525,-47809394,138757109>, r=88873477 +pos=<12536114,44878759,53725314>, r=86437546 +pos=<-20301103,44075250,52762962>, r=54451813 +pos=<-461902,80465125,84487814>, r=90529307 +pos=<7130680,32413231,68883794>, r=54802893 +pos=<-50296082,60195477,45850842>, r=90822087 +pos=<-14564832,72623628,17948114>, r=95421720 +pos=<-22686155,63096629,54372268>, r=65269532 +pos=<69844001,61172133,56055801>, r=60541966 +pos=<-52847704,61819166,58790940>, r=98572688 +pos=<14547281,53614270,69916715>, r=64925594 +pos=<11858628,69801510,83476504>, r=66533825 +pos=<-19237228,57038668,55663966>, r=57054287 +pos=<-2272553,98539746,62554872>, r=88481774 +pos=<-8556006,44686979,74145414>, r=63477536 +pos=<2504323,61605769,51711818>, r=54478689 +pos=<47588454,79992799,94986516>, r=96037851 +pos=<103658947,51685093,57082700>, r=85896762 +pos=<-30259191,60236324,60596487>, r=76206463 +pos=<-16899083,75972745,75204218>, r=93190621 +pos=<-16138352,72149890,57424797>, r=70827421 +pos=<-32022269,39108198,51836967>, r=70214052 +pos=<-253386,60377315,87086253>, r=72831391 +pos=<70319029,58272431,24333949>, r=78795019 +pos=<98140448,55305455,54099422>, r=81015347 +pos=<-9894221,46215061,90692267>, r=79835086 +pos=<8135694,75227546,75981649>, r=68187909 +pos=<3050471,53586527,55188089>, r=52075619 +pos=<1872493,96006217,77781926>, r=97030112 +pos=<33059309,107988331,79210607>, r=93728745 +pos=<16673776,69427534,108363123>, r=86231293 +pos=<-55714690,52582577,37933926>, r=96544709 +pos=<593835,83505567,68365123>, r=76391300 +pos=<43486018,76414497,67060559>, r=60431122 +pos=<-103710,79781165,51942827>, r=56942322 +pos=<10133283,63186363,55221028>, r=90994744 +pos=<23438290,54031653,67704842>, r=75155252 +pos=<-67769695,52775484,52431198>, r=98090761 +pos=<-18104986,52809731,54267642>, r=50296769 +pos=<109991188,53156356,60594209>, r=97211931 +pos=<-13768977,54140486,59831889>, r=52855852 +pos=<-12489665,47714331,86555741>, r=76794067 +pos=<-26482316,33973790,58911081>, r=76882915 +pos=<-160197435,53199007,15047334>, r=72701562 +pos=<23358129,69976926,85439610>, r=57172786 +pos=<24201045,82557215,112270801>, r=95741523 +pos=<72394082,20781518,37930394>, r=88568308 +pos=<45145254,31095571,82460069>, r=70328402 +pos=<-24815015,78740100,66702713>, r=95372303 +pos=<-11180118,63194518,51850772>, r=51339974 +pos=<-30260369,77069699,58001879>, r=90446543 +pos=<12841613,54905801,60405944>, r=69102701 +pos=<69379484,75759864,80677420>, r=99286807 +pos=<-19898305,56022498,52114906>, r=53150117 +pos=<23972174,63400531,63593334>, r=88610729 +pos=<-7853869,55653210,30754191>, r=58934358 +pos=<40004815,92174613,37712106>, r=69004511 +pos=<-18970401,64246847,57001969>, r=65333603 +pos=<-55945729,46641309,41200961>, r=94633445 +pos=<10448314,60832634,-13979245>, r=90545188 +pos=<104420953,54797004,51761342>, r=84449325 +pos=<-7833268,56419777,64966118>, r=54333552 +pos=<-41600051,53218447,75060610>, r=94993621 +pos=<-23285697,51988784,62294935>, r=62683806 +pos=<-6906170,52717101,66490995>, r=51228649 +pos=<-36994277,58578684,69447528>, r=90134897 +pos=<13894089,90601100,71559173>, r=73380713 +pos=<5549488,90598003,63587583>, r=73750520 +pos=<27986859,65318406,569711>, r=67272566 +pos=<11420671,52635330,54320974>, r=70384136 +pos=<58986016,64249155,26039401>, r=71732796 +pos=<5530635,65978466,18218016>, r=68411191 +pos=<-5385393,46216210,79409449>, r=64041818 +pos=<-21799629,90568144,46789063>, r=91760239 +pos=<-36265254,58098351,59809891>, r=79287875 +pos=<-85146141,88950855,-3714880>, r=50044292 +pos=<38619326,-4038243,77668519>, r=94144770 +pos=<2694518,54614333,-4908892>, r=83010409 +pos=<5313262,51345161,59838196>, r=72136128 +pos=<14843630,-1349878,43928227>, r=69108117 +pos=<22464636,120847792,40757992>, r=83806553 +pos=<-9865777,51214858,90863194>, r=77058488 +pos=<19167267,52510615,54852693>, r=90699829 +pos=<14593457,70653650,97885859>, r=79060557 +pos=<-8818822,61716404,18373136>, r=78343826 +pos=<1060,70746123,74820827>, r=70680268 +pos=<2440131,63910700,77731744>, r=64316854 +pos=<9446148,94030616,72483361>, r=82182217 +pos=<99080786,67236493,59091021>, r=98878926 +pos=<-1302538,90260423,63215145>, r=79892689 +pos=<8394619,77120518,104185074>, r=98025497 +pos=<8809237,89970368,88703357>, r=94978937 +pos=<61696969,53031317,25103817>, r=64161515 +pos=<-17945953,52730115,54562544>, r=50352996 +pos=<5573049,75894102,57995185>, r=53430728 +pos=<1734159,18182439,88390315>, r=93936719 +pos=<16427148,60790813,57255534>, r=77938471 +pos=<-5794985,58712237,72538823>, r=62160526 +pos=<114104963,48165299,48341508>, r=92483804 +pos=<66162561,63632542,48965213>, r=55367138 +pos=<-10848319,68498736,72425408>, r=76886851 +pos=<35960404,57952302,83825949>, r=51208802 +pos=<-7537899,63784540,26119781>, r=71384092 +pos=<7597577,78226192,54364713>, r=50108075 +pos=<-4944468,85203935,56866419>, r=72129314 +pos=<-31664056,74767063,66581879>, r=98127721 +pos=<-30554637,64050408,69381798>, r=89101226 +pos=<15180605,89452073,84996875>, r=84382933 +pos=<24727280,106040899,27094989>, r=80399998 +pos=<-32937600,57802552,41091533>, r=75830264 +pos=<-24285878,55135192,45900921>, r=59701557 +pos=<99942558,60451396,53076615>, r=86940865 +pos=<-8142431,63656427,70896708>, r=67810159 +pos=<19572931,72289003,88954380>, r=66784918 +pos=<17178080,32326459,98036814>, r=73995977 +pos=<-40327597,60321955,30752519>, r=96078407 +pos=<-26708621,51303087,68660841>, r=71786962 +pos=<5298440,71150886,98998933>, r=89965866 +pos=<-26727384,52712004,60606804>, r=65160630 +pos=<-42515019,36860711,54621755>, r=85739222 +pos=<-19692936,52880476,53505130>, r=51192967 +pos=<-2862751,72059619,56687442>, r=56724369 +pos=<23309701,73678498,90297260>, r=65780546 +pos=<103591531,51292218,54785000>, r=83139488 +pos=<13334478,40067215,41788503>, r=53285143 +pos=<-19529026,52222981,57621425>, r=54488069 +pos=<-1797950,83874608,63370131>, r=74157238 +pos=<-25984963,45705100,63968004>, r=69711376 +pos=<-24664085,26439550,59809899>, r=83497673 +pos=<19736100,80301464,65388701>, r=51068468 +pos=<-25320635,61777368,77622402>, r=89834801 +pos=<-17286284,77658389,79260938>, r=99320666 +pos=<70330963,53068965,53858287>, r=50728428 +pos=<-3076230,90554067,55114683>, r=73859363 +pos=<-20974395,51855715,72542126>, r=70486673 +pos=<1092644,-4119326,69709754>, r=98199427 +pos=<15938133,59416689,58855448>, r=92943839 +pos=<-9112976,52910350,69896190>, r=57034132 +pos=<52773451,30360939,79247967>, r=75479113 +pos=<-6680030,26114817,19182073>, r=87913270 +pos=<1482965,86244061,74533437>, r=84409063 +pos=<24689402,71291292,83726812>, r=55443483 +pos=<30350862,66160075,106804338>, r=76785312 +pos=<-4063590,84853935,56872509>, r=70904417 +pos=<5856723,68860058,67443259>, r=55561024 +pos=<-7092718,83599936,62097932>, r=77904977 +pos=<-10322894,95735574,63377690>, r=94550544 +pos=<19921997,12113475,95509859>, r=88937502 +pos=<11534894,57463560,99207505>, r=70250571 +pos=<12352413,63309310,95136075>, r=71207369 +pos=<41175395,95875663,40694251>, r=70893868 +pos=<59891986,74136560,19271752>, r=89293819 +pos=<-23086309,46188709,61304958>, r=63666046 +pos=<-35534522,46755845,63454442>, r=77696176 +pos=<-17431848,55911646,61066276>, r=59524206 +pos=<19833014,98941413,53373702>, r=57596603 +pos=<-28451505,62393147,51769902>, r=67729137 +pos=<8178175,-29195966,48404389>, r=99143478 +pos=<-10800811,66052879,72255412>, r=74223622 +pos=<7592515,82345414,73497606>, r=73364887 +pos=<18762382,82447623,97073423>, r=85873084 +pos=<-10487671,31987978,73584470>, r=77547158 +pos=<-9056504,62925961,53357292>, r=50454349 +pos=<27999580,85878361,92076324>, r=79424309 +pos=<51800702,30641723,78124579>, r=73102228 +pos=<12642813,82894579,64946494>, r=60312761 +pos=<-61807304,47686811,53275056>, r=92858540 +pos=<-7276796,60434304,88907028>, r=81732530 +pos=<-29599217,39708375,83129734>, r=98483597 +pos=<-23520152,26844092,62214412>, r=84353826 +pos=<-28877325,61946397,69770777>, r=85708879 +pos=<-14608106,72848679,65361364>, r=77932548 +pos=<-36824990,70391000,43020520>, r=90376960 +pos=<44969927,68147155,35692982>, r=51961138 +pos=<19011433,65149442,-12540316>, r=84859740 +pos=<18764314,69338844,96926694>, r=72615606 +pos=<-25391985,54173991,76565456>, r=81246468 +pos=<-37132499,58605126,57299821>, r=78151951 +pos=<317469,47901411,90999015>, r=68243137 +pos=<4732566,82416141,64829451>, r=67627448 +pos=<-4438337,64068128,59428063>, r=53049034 +pos=<-7510390,65454288,58686238>, r=56765295 +pos=<13297331,71022908,83309651>, r=66149656 +pos=<-2443890,-1053307,49146976>, r=80880201 +pos=<18424959,-25894837,57469563>, r=90402436 +pos=<19134835,37687041,81457411>, r=50098606 +pos=<30727267,74338302,16287433>, r=63315163 +pos=<76426391,60025595,56674928>, r=66597034 +pos=<-37764165,64665026,63738632>, r=91282254 +pos=<73841307,45244034,7979885>, r=95503095 +pos=<8518776,102619990,65620373>, r=84836052 +pos=<33279437,-14820526,57737587>, r=79656722 +pos=<-12641079,64685181,53396171>, r=55837091 +pos=<-9951596,57691018,18966738>, r=74857701 +pos=<11705830,39289792,103172595>, r=77639987 +pos=<32755328,86575935,59301361>, r=52102968 +pos=<-56381974,51244757,51903260>, r=84644396 +pos=<10573573,67254309,71343991>, r=53139256 +pos=<23178882,99249505,53062798>, r=54247805 +pos=<-30438220,43249726,63852895>, r=76504484 +pos=<-18008082,91354098,61662797>, r=96139463 +pos=<58130621,-5410250,53763204>, r=91122775 +pos=<38376500,5309795,68536851>, r=75422199 +pos=<40568207,55819371,111949414>, r=81807094 +pos=<13385608,58751181,87916220>, r=58396316 +pos=<10652780,62923714,16913699>, r=61538816 +pos=<66584605,90471059,59953467>, r=90479328 +pos=<23828597,9229466,82674549>, r=75079685 +pos=<-2374305,51653149,81806283>, r=60948119 +pos=<15686944,101308548,58364945>, r=69100929 +pos=<12725742,68880644,106967805>, r=88237088 +pos=<17716933,53898766,92455242>, r=53751453 +pos=<-33372359,56824192,52416697>, r=67727660 +pos=<4982549,62244620,102018278>, r=84394819 +pos=<9097870,2277106,23511783>, r=91643276 +pos=<104095420,52061506,57103657>, r=86730620 +pos=<38111501,86440374,53482963>, r=51504912 +pos=<58344818,61400907,63284974>, r=56500739 +pos=<16884807,19231253,82990003>, r=72336956 +pos=<-42692945,65946169,41961384>, r=92859217 +pos=<-28034754,55487947,62126726>, r=70763811 +pos=<19274376,79870506,35147693>, r=51629912 +pos=<21320145,55312624,92060702>, r=51167634 +pos=<-36291008,37650308,58389536>, r=82493243 +pos=<-10796796,41489105,66097601>, r=60868304 +pos=<-40177150,63607920,46375716>, r=83590789 +pos=<16877383,57508433,130889109>, r=96634562 +pos=<78035795,47558838,61699900>, r=65995510 +pos=<-12157529,59079739,94459705>, r=90811614 +pos=<-14719298,67293961,58776388>, r=65904037 +pos=<23165472,48319134,141014934>, r=94993386 +pos=<14483307,55545491,83869510>, r=50046127 +pos=<-13975465,72281297,75555056>, r=86926409 +pos=<54944081,54012748,104500519>, r=86928029 +pos=<15118634,63975046,120649575>, r=94620419 +pos=<18002868,89743987,46547787>, r=51375023 +pos=<118470960,53314916,47200144>, r=99123142 +pos=<-18823495,55420905,53701803>, r=53060582 +pos=<-5467064,58554591,77050896>, r=66186932 +pos=<22160794,74878846,55706389>, r=70447601 +pos=<-27826743,71164171,56998262>, r=81103878 +pos=<-60219520,57279767,54018988>, r=96632668 +pos=<11765030,64865953,25690628>, r=53591753 +pos=<-77604253,51195582,160265663>, r=82321239 +pos=<8895376,94389845,70206097>, r=80814976 +pos=<72068955,61735419,61931626>, r=69206024 +pos=<71294850,57747925,61258998>, r=63771982 +pos=<-12500311,87983348,41185110>, r=85480069 +pos=<13165281,58734390,57751380>, r=71578498 +pos=<-16519504,56287098,41988135>, r=57000006 +pos=<15702065,59567300,125776377>, r=94756321 +pos=<104067037,56353806,59893063>, r=93783989 +pos=<-2443051,34066815,59811244>, r=53650485 +pos=<78659016,53301646,58395591>, r=63826456 +pos=<-5395135,51489915,53108186>, r=54457449 +pos=<43783348,70786755,68608325>, r=56648600 +pos=<15861882,75526752,70870247>, r=55649551 +pos=<-21433110,60201366,71144216>, r=77893311 +pos=<16927373,30534856,57344675>, r=79447115 +pos=<-23582240,51182170,53671182>, r=53550212 +pos=<48377124,87322307,57807776>, r=66977272 +pos=<-24658235,34774969,55408108>, r=70754558 +pos=<-57025118,51608427,56368656>, r=90116625 +pos=<-40956808,54872377,58233637>, r=79177201 +pos=<-7940696,64406847,65491844>, r=62954392 +pos=<18514021,116278681,67137430>, r=90016641 +pos=<43358506,27845033,68486380>, r=57818557 +pos=<1110894,83500413,68255453>, r=75759354 +pos=<-37948234,63772147,53141588>, r=79976703 +pos=<13559648,85475298,69747661>, r=66777842 +pos=<52847535,100951259,70145575>, r=97414722 +pos=<-21363508,51195381,52333138>, r=50006604 +pos=<42775136,24331657,88882389>, r=81144757 +pos=<-1933203,45916056,85330850>, r=66811316 +pos=<-57987412,55995732,52031150>, r=91128682 +pos=<-42000373,57698338,58535687>, r=83348916 +pos=<-22415966,68748566,55301911>, r=71580898 +pos=<63130941,60546452,58913823>, r=56061251 +pos=<-25360,94955513,32263639>, r=88899014 +pos=<16041791,46748455,54886958>, r=52853925 +pos=<21841806,63659499,51701479>, r=64043047 +pos=<1507336,30781882,86426870>, r=79600758 +pos=<-61462214,51930278,59048201>, r=97555074 +pos=<5596619,62910768,103402603>, r=85831362 +pos=<-17947167,60351558,52786859>, r=56199984 +pos=<8310608,110445624,30715607>, r=97601075 +pos=<57809969,62546762,83913036>, r=77739845 +pos=<-4243002,78023652,59272973>, r=66654140 +pos=<-38346139,46279251,81595137>, r=99125137 +pos=<-39505659,59077659,30772250>, r=93992534 +pos=<70748692,61615798,69299886>, r=75134429 +pos=<-8927983,72196971,41805506>, r=65500828 +pos=<18230519,71253951,55091105>, r=51783470 +pos=<-82741,89299947,70860177>, r=85357733 +pos=<19408526,70959236,391121>, r=77341247 +pos=<-118838868,96481794,83622656>, r=81565538 +pos=<7699857,77112966,58676603>, r=53204091 +pos=<-5285832,98989634,54909145>, r=84299424 +pos=<-9949091,79675756,62952022>, r=77691300 +pos=<6548040,71704033,79332787>, r=69603175 +pos=<41519552,70838659,77663756>, r=63492002 +pos=<24672816,51183711,105057962>, r=56683540 +pos=<26979282,57437475,67725517>, r=91990453 +pos=<-146316585,60113902,86014018>, r=74912650 +pos=<72430683,58332575,69349806>, r=73583276 +pos=<20029551,67957881,114673401>, r=87716194 +pos=<-12896053,72374875,79141839>, r=89527418 +pos=<10238771,77142540,70645372>, r=62663967 +pos=<-3216297,27169332,60070123>, r=61580077 +pos=<-23930209,54633761,66648944>, r=70327317 +pos=<-18679703,21196655,30842395>, r=93170631 +pos=<44655563,9533925,46538296>, r=63469153 +pos=<-59378193,54454082,43217955>, r=96795689 +pos=<24496603,92577304,64368811>, r=57563942 +pos=<-27053938,59501992,52024839>, r=63695171 +pos=<-9529140,74055507,52153025>, r=60852050 +pos=<44555529,104038871,53349626>, r=75414106 +pos=<-14679818,88223002,52168606>, r=80185804 +pos=<4552719,62659754,92650998>, r=75872423 +pos=<-19881238,63944538,24064643>, r=85942719 +pos=<16076790,55601668,101552666>, r=66191930 +pos=<21912528,118540961,52911368>, r=74654179 +pos=<-42123089,64929314,59158052>, r=91325104 +pos=<10936357,81890391,20134023>, r=77001665 +pos=<10351597,9179596,62138956>, r=68070751 +pos=<92774311,53165517,56634384>, r=76044462 +pos=<14950682,78188149,16646479>, r=72772458 +pos=<-36369450,41148166,38468120>, r=83283873 +pos=<78960321,78942802,53919616>, r=85293057 +pos=<-158664912,45952974,29905855>, r=62185933 +pos=<114294274,47756105,53682861>, r=94039744 +pos=<20046552,73002532,57617045>, r=54110780 +pos=<-29832468,53561561,86264939>, r=94773352 +pos=<5152614,124285693,53684633>, r=97932108 +pos=<31373573,67528454,85096814>, r=57468866 +pos=<-34521748,54572314,66408185>, r=80616625 +pos=<21670677,109269914,16882176>, r=96898951 +pos=<-13862893,59818682,65331199>, r=64127296 +pos=<17318835,71965542,106868073>, r=86629159 +pos=<78142676,48758577,56205332>, r=59408131 +pos=<-23340878,51182474,58635784>, r=58273523 +pos=<-26740311,87129579,52453722>, r=91438117 +pos=<4303903,69818029,63437040>, r=54065753 +pos=<3266332,71031490,81452081>, r=74331764 +pos=<13702746,18039813,44354215>, r=50433215 +pos=<-3482754,38377262,76574157>, r=67142882 +pos=<-9228255,63064015,42837554>, r=55636176 +pos=<-50838633,55818579,60038300>, r=91809905 +pos=<12044855,110909031,26804479>, r=98241104 +pos=<3069579,54401690,81614434>, r=58061261 +pos=<-55632341,51473141,61974878>, r=94194739 +pos=<47405039,61876630,72051227>, r=54803065 +pos=<-54699622,62927561,51595043>, r=94336968 +pos=<-5193725,62373908,96721874>, r=89403908 +pos=<39277912,51487063,98292773>, r=62527889 +pos=<28453914,55902735,104745928>, r=62572701 +pos=<70028230,51756434,45557821>, r=50764114 +pos=<6794251,79565242,72837497>, r=70723039 +pos=<-13346572,55208620,19942682>, r=74793897 +pos=<-26551619,52981805,64542889>, r=69190740 +pos=<-43505598,52177986,74471561>, r=95270055 +pos=<-36730243,57166097,70373519>, r=89384321 +pos=<67837280,44038045,5154880>, r=93530016 +pos=<24819569,59550660,112300422>, r=72145934 +pos=<22889616,60439671,109383201>, r=72047709 +pos=<16010141,59272902,95102320>, r=63479459 +pos=<45785695,3672162,40921594>, r=76077574 +pos=<52634264,230093674,55591446>, r=92328001 +pos=<-1093816,65699672,61755421>, r=53663391 +pos=<-2927319,46551949,115336543>, r=97175126 +pos=<9846871,97494787,27660769>, r=86168853 +pos=<14575046,54156478,106441784>, r=71137652 +pos=<3693372,64829888,65085318>, r=51336253 +pos=<-14475986,58191102,40490687>, r=58358086 +pos=<-32625219,54193671,54687567>, r=66620839 +pos=<19841368,112790310,53953991>, r=72017337 +pos=<-36529548,56646542,73106232>, r=91396775 +pos=<21383461,52564742,65263630>, r=69168248 +pos=<-25544951,69296904,55993281>, r=75949615 +pos=<5520910,41049609,87926413>, r=66818890 +pos=<78361286,55145660,70961730>, r=77938767 +pos=<-12502650,52118530,26315830>, r=64486867 +pos=<-8502681,43100643,60553969>, r=51419015 +pos=<30788480,91079544,72453023>, r=67791399 +pos=<-41582270,52471539,51548548>, r=70716745 +pos=<22495328,56368486,39214022>, r=54868649 +pos=<629350,38620684,-5628651>, r=92908951 +pos=<54092772,69401105,92313004>, r=89276951 +pos=<-5909105,43864786,12211016>, r=76363299 +pos=<3912827,52322153,79041627>, r=52565376 +pos=<-58023857,53967358,52040730>, r=89146355 +pos=<-31872996,52197859,61603944>, r=70789344 +pos=<15997340,97237977,68995404>, r=75350443 +pos=<-47277488,55104503,30071304>, r=98492088 +pos=<-8126606,68416175,57612004>, r=59269187 +pos=<-41526057,70666640,40848412>, r=97525664 +pos=<73462661,56792015,64535899>, r=68260624 +pos=<17561494,61650408,18024697>, r=52245702 +pos=<18999409,83239866,79157013>, r=68511878 +pos=<-17147426,82949543,58049486>, r=83260838 +pos=<-18999109,63366752,88314976>, r=95795304 +pos=<22782196,90426553,59952512>, r=52711323 +pos=<3870299,63602471,24263373>, r=61650297 +pos=<-28961118,57302888,47585264>, r=64860112 +pos=<-54015783,52509914,54351945>, r=85992387 +pos=<-31431674,55933418,55746724>, r=68226308 +pos=<6227367,990142,64669121>, r=82914608 +pos=<5035135,38115972,99202791>, r=81514672 +pos=<-33418983,63482456,38640418>, r=84442392 +pos=<-10795967,62940846,61879242>, r=60730704 +pos=<109337482,53196724,58133710>, r=94138173 +pos=<24242369,44107239,101663495>, r=58776882 +pos=<13836970,62942011,18092686>, r=57193751 +pos=<22307447,72298904,83902781>, r=59008632 +pos=<61542152,47395133,73538238>, r=61503948 +pos=<-24075040,59046188,54656470>, r=62892239 +pos=<2709891,16928362,83441813>, r=89266699 +pos=<18108186,51788474,56989142>, r=80851857 +pos=<8783157,59841041,97619446>, r=73792049 +pos=<-11464337,-1808695,45620039>, r=94183197 +pos=<-27362762,61729073,63812346>, r=78018926 +pos=<-16479685,60701430,70404170>, r=72700118 +pos=<18072359,95490781,46478814>, r=57121005 +pos=<22305099,61060570,52457431>, r=91124722 +pos=<-3144103,35052829,41802786>, r=52818565 +pos=<14700849,76137475,4759707>, r=82858288 +pos=<24087216,72433922,86093140>, r=59554341 +pos=<78515636,57323047,62505044>, r=71813766 +pos=<-24840821,74681746,64511653>, r=89148740 +pos=<-23826296,65180883,55787778>, r=69909354 +pos=<75346962,35126022,80923207>, r=94962783 +pos=<17008079,55328336,57579351>, r=53041203 +pos=<-7356211,68676554,73449531>, r=74596693 +pos=<-17162496,73932992,66248811>, r=82458915 +pos=<-136511398,24674918,81631631>, r=52044146 +pos=<17677665,60697644,59711178>, r=87163127 +pos=<-23195799,53013298,81013306>, r=82336819 +pos=<-11747126,98444482,59328815>, r=94634945 +pos=<5844912,56397886,77450074>, r=53117462 +pos=<-34509639,55837799,78666373>, r=94128480 +pos=<5904302,91792190,56962332>, r=67964633 +pos=<-17032381,59374519,60271759>, r=61793041 +pos=<126401,73284278,37689172>, r=61650102 +pos=<13058035,58217638,117787893>, r=88061922 +pos=<13828494,55793337,5715352>, r=62430875 +pos=<-38076711,68063369,58208411>, r=89462874 +pos=<11310783,64077677,47800713>, r=90266880 +pos=<71295692,59864191,53931657>, r=58561571 +pos=<-28401409,54456913,64786142>, r=72758897 +pos=<7099165,104942769,74968888>, r=97926943 +pos=<-13995801,56919587,69332174>, r=65361965 +pos=<-26207717,59423657,75475224>, r=86221043 +pos=<6284415,23177140,26461281>, r=70607154 +pos=<215192914,61945607,54981371>, r=57239098 +pos=<570884,53692018,83080045>, r=61315597 +pos=<82035008,70009886,45451263>, r=81130714 +pos=<56491702,68916341,58674725>, r=57552984 +pos=<41387757,67423761,76216212>, r=58497788 +pos=<-13813748,54323195,39213241>, r=55105070 +pos=<-6283377,38226161,58990807>, r=52511441 +pos=<-26649360,45588196,46247152>, r=61344017 +pos=<-14376863,65982584,89020987>, r=94494818 +pos=<-3323474,29138548,66137005>, r=65784968 +pos=<58981819,73400065,67082387>, r=72934311 +pos=<-24602073,59590457,54064654>, r=63371721 +pos=<36151757,93220459,79425935>, r=82268360 +pos=<87119215,67120469,66106290>, r=93816049 +pos=<-48564056,44611797,43001926>, r=87480464 +pos=<-184831138,45972224,52522771>, r=50154575 +pos=<-15029762,39315381,53334088>, r=54511484 +pos=<-63442720,56809824,159032480>, r=72599634 +pos=<60777021,86337479,55149072>, r=75733594 +pos=<92444973,55329391,26343979>, r=95967763 +pos=<-21559036,59753239,49501583>, r=57992092 +pos=<9746816,62098999,110099681>, r=87566354 +pos=<10180395,73435400,84209682>, r=72579076 +pos=<9869506,63811097,-18666569>, r=98789533 +pos=<-13838113,59406279,58751626>, r=57110750 +pos=<64073559,55987760,56938593>, r=50470036 +pos=<122002455,-29528127,89467426>, r=76860378 +pos=<933085,106082663,68426376>, r=98690342 +pos=<-2675758,105102702,49288669>, r=84671159 +pos=<21148930,85952702,88820154>, r=78738465 +pos=<-20327181,54015158,64694298>, r=64151435 +pos=<1808162,74371192,54758455>, r=52436239 +pos=<42135947,69930651,489911>, r=86113750 +pos=<-12374999,90510715,64743102>, r=92743325 +pos=<-4294480,65880302,57264170>, r=52553487 +pos=<-11380714,79284188,78361214>, r=94140720 +pos=<-18741699,56843996,93948119>, r=94648195 +pos=<-15112925,57666102,84178102>, r=82071526 +pos=<48905117,61145192,67255382>, r=50775815 +pos=<22577383,65607571,119314309>, r=87458960 +pos=<15014461,96714632,60980637>, r=67795269 +pos=<47428343,39689983,86775385>, r=68333041 +pos=<-28078465,61095714,45936858>, r=69419061 +pos=<-23524262,42214714,78362442>, r=85135301 +pos=<11059849,57287793,87820074>, r=59162425 +pos=<3565314,29345958,18633562>, r=74985191 +pos=<66387470,53690251,35786796>, r=58828200 +pos=<3116731,79442759,52841036>, r=54281677 +pos=<-19604720,61128015,61910900>, r=67758297 +pos=<57308392,70794674,32711619>, r=69928478 +pos=<12845664,78795191,27148691>, r=64982288 +pos=<80886361,60430853,61195181>, r=75982584 +pos=<23065226,55203444,121115562>, r=78368206 +pos=<-1767172,87142211,34592050>, r=80499249 +pos=<13751120,55697434,59007891>, r=91399024 +pos=<-21912028,56562619,52196254>, r=55785461 +pos=<24434582,75675617,15708816>, r=61713746 +pos=<-752271,77413609,96554782>, r=99835052 +pos=<17710144,89394902,70841612>, r=67640873 +pos=<-29164492,60989567,53774351>, r=69042803 +pos=<65721828,57739878,71302517>, r=68234456 +pos=<51294874,74255591,89905897>, r=88926704 +pos=<122447102,164387501,54549178>, r=86167801 +pos=<-2233409,26924269,59265799>, r=60037952 +pos=<3711632,67371720,79918709>, r=68693447 +pos=<-39313716,47720889,55898562>, r=72954666 +pos=<-29988637,48099743,66238336>, r=73590241 +pos=<7092311,93600756,55598390>, r=67221312 +pos=<94926391,52295037,52035414>, r=72727059 +pos=<58322954,64494143,14681677>, r=82672475 +pos=<-30606897,52115517,55916025>, r=63752817 +pos=<33683678,52234183,65402997>, r=77026018 +pos=<2893581,30919431,63800326>, r=55450312 +pos=<-10073625,68787754,42712060>, r=62330691 +pos=<-13226028,58548045,37442239>, r=60513212 +pos=<13341702,123874963,58254419>, r=93902154 +pos=<682234,97911898,48242929>, r=75168144 +pos=<18722317,56674681,90606505>, r=53673250 +pos=<90077460,56726877,60520864>, r=80795256 +pos=<11265077,100200311,67941274>, r=81990966 +pos=<10217162,21958720,59276183>, r=52563693 +pos=<82134787,48069587,56864579>, r=64748411 +pos=<20010404,57114507,56739832>, r=95448884 +pos=<298850,62853941,18970195>, r=69766264 +pos=<-34773033,48567904,55236028>, r=66904149 +pos=<3075957,26623236,63055783>, r=58819651 +pos=<16457975,57122257,70087795>, r=86513850 +pos=<90103819,53683092,69699596>, r=86956610 +pos=<-17689799,58550974,60782619>, r=62138075 +pos=<9338392,37129212,14441408>, r=65620968 +pos=<10278172,104026582,58505957>, r=77369117 +pos=<-36648669,53313763,57070182>, r=72147006 +pos=<3644850,75873038,60944199>, r=58286859 +pos=<-55768152,64438408,48348049>, r=98040163 +pos=<23966354,61323517,66723852>, r=63170986 +pos=<83907332,75993772,60160048>, r=93531174 +pos=<-49160977,51421296,51777959>, r=77474735 +pos=<-19554495,83185945,68889433>, r=96744324 +pos=<4083844,61211766,78812607>, r=61054908 +pos=<-28740891,76035877,59783586>, r=89674749 +pos=<1477390,92187674,62374371>, r=78199589 +pos=<27555445,100617770,28346459>, r=74363771 +pos=<61157488,92524005,67778649>, r=94930233 +pos=<44509108,57672466,-14457614>, r=91176410 +pos=<-49301441,57583231,64690420>, r=96689478 +pos=<6254148,63730492,98438208>, r=81029012 +pos=<-65249177,51697848,46584216>, r=96544404 +pos=<-18251430,74523624,66136947>, r=84026579 +pos=<-38032746,59650424,49516347>, r=74348754 +pos=<1025165,71664650,57908627>, r=53662668 +pos=<-47108245,52145065,40842431>, r=84592249 +pos=<-48768564,66546374,54932017>, r=95361722 +pos=<-21610139,44024485,61168243>, r=64217401 +pos=<10087091,107246375,62170269>, r=84443931 +pos=<51033289,57777223,79683838>, r=61964875 +pos=<-1515410,54504740,89312112>, r=70446642 +pos=<6955077,59969833,119903931>, r=98033598 +pos=<-22531794,48719765,58184485>, r=57459504 +pos=<-5094294,59314583,76395596>, r=65919004 +pos=<76187323,83948474,38225082>, r=96447759 +pos=<-21294072,54806425,61700229>, r=62915134 +pos=<22543466,42317235,91615254>, r=52217555 +pos=<28314112,89701628,91872856>, r=83358628 +pos=<-4228579,64941150,75051735>, r=69335866 +pos=<50966330,77605764,84252544>, r=86294744 +pos=<-6737743,107415917,54338071>, r=93606463 +pos=<23145972,65757098,91211071>, r=58936588 +pos=<19007479,87503572,82855617>, r=76466297 +pos=<-14765231,68331156,77316912>, r=85528263 +pos=<-949424,70946763,65236949>, r=62247745 +pos=<-32803143,52738611,60060225>, r=70716401 +pos=<66822816,56906431,65665714>, r=62865107 +pos=<9680974,91968172,80327678>, r=87729365 +pos=<8343767,56768063,52291322>, r=57842575 +pos=<38074555,75932657,94592379>, r=82069623 +pos=<-19059954,72759195,75265940>, r=92199655 +pos=<17867950,85793108,72307124>, r=65346674 +pos=<4765057,109187888,51558662>, r=81095880 +pos=<-18597182,56282648,71097542>, r=71091807 +pos=<-53544594,48732733,55083403>, r=85358259 +pos=<-14162311,76553349,71226487>, r=87056545 +pos=<-47205943,48535879,60516002>, r=84649054 +pos=<-51865413,61371035,54334719>, r=92685802 +pos=<-10560072,67389213,73620186>, r=76683871 +pos=<18319316,72506183,-3063602>, r=83431987 +pos=<-3588999,72423545,64377299>, r=65504222 +pos=<11888209,56845438,49310444>, r=80146809 +pos=<21726851,54782153,26405131>, r=94721944 +pos=<-21291084,56654299,74535249>, r=77595146 +pos=<936181,103600381,67588131>, r=95367106 +pos=<-13782512,64133232,74692014>, r=77722142 +pos=<-36410139,62335051,70838270>, r=94697845 +pos=<-13219359,55905482,102146596>, r=96385842 +pos=<7982302,72795551,71059219>, r=60987001 +pos=<14814723,60392314,88790377>, r=59482349 +pos=<-46730374,59535255,39966466>, r=92480718 +pos=<-12683668,63360272,34527358>, r=67698165 +pos=<34918460,61167889,51688378>, r=99658139 +pos=<65522795,5172637,52395633>, r=86564425 +pos=<21631208,32413943,104746960>, r=76164801 +pos=<-11979634,65490331,75294207>, r=77878552 +pos=<6957102,71949660,103009238>, r=93116178 +pos=<16501855,87396298,22166944>, r=74908909 +pos=<-3903540,38079649,95576440>, r=86863330 +pos=<20206463,69766028,75938015>, r=50611973 +pos=<4305930,14987890,73560026>, r=79729291 +pos=<-7564317,16601205,60800573>, r=77226681 +pos=<78960025,77022559,51882781>, r=81335395 +pos=<-2691592,55376094,83330088>, r=66512406 +pos=<-47250869,37081123,43153632>, r=93546119 +pos=<8536338,15031904,58255252>, r=60150014 +pos=<60376108,86278760,75828759>, r=95953668 +pos=<-6882477,55533881,67317545>, r=54848322 +pos=<9678384,78681532,76529906>, r=70647662 +pos=<10075511,91722489,53804756>, r=60566307 +pos=<21285284,59022109,91758839>, r=54610451 +pos=<-37992414,58278309,25526337>, r=96925765 +pos=<-2709806,59275400,67729392>, r=54828981 +pos=<7011597,20313939,78973760>, r=77111391 +pos=<-52588778,60847764,58672703>, r=97223909 +pos=<-15256628,22229514,41271494>, r=78285813 +pos=<34156359,101451279,54422671>, r=63500492 +pos=<21509300,111056381,53419268>, r=68080733 +pos=<14593452,57851278,-19237975>, r=88677170 +pos=<1781540,75186457,59902472>, r=58421778 +pos=<-33041189,51450575,51533175>, r=61139326 +pos=<15782750,66980930,90439887>, r=66752517 +pos=<-36107313,40071259,65952487>, r=87451603 +pos=<-14638698,63394833,75249799>, r=78397768 +pos=<-22832073,77228624,62320318>, r=87495607 +pos=<87393628,62821666,29411048>, r=95341264 +pos=<-16740099,42436581,56244211>, r=56010749 +pos=<20445816,54943259,60909642>, r=73012739 +pos=<15983434,51447682,96599706>, r=57178341 +pos=<-1059151,70062397,74572375>, r=70808526 +pos=<-35739090,59134133,40541874>, r=80512741 +pos=<22868206,41119100,92637902>, r=54114178 +pos=<13457096,20227235,89352457>, r=81131188 +pos=<53583940,59655001,69818825>, r=56527814 +pos=<37367140,55788282,41622861>, r=90197118 +pos=<12409098,92091021,58284823>, r=63081300 diff --git a/src/main/resources/2018/day24.txt b/src/main/resources/2018/day24.txt new file mode 100644 index 00000000..dc4ae67f --- /dev/null +++ b/src/main/resources/2018/day24.txt @@ -0,0 +1,23 @@ +Immune System: +2749 units each with 8712 hit points (immune to radiation, cold; weak to fire) with an attack that does 30 radiation damage at initiative 18 +704 units each with 1890 hit points with an attack that does 26 fire damage at initiative 17 +1466 units each with 7198 hit points (immune to bludgeoning; weak to slashing, cold) with an attack that does 44 bludgeoning damage at initiative 6 +6779 units each with 11207 hit points with an attack that does 13 cold damage at initiative 4 +1275 units each with 11747 hit points with an attack that does 66 cold damage at initiative 2 +947 units each with 5442 hit points with an attack that does 49 radiation damage at initiative 3 +4319 units each with 2144 hit points (weak to bludgeoning, fire) with an attack that does 4 fire damage at initiative 9 +6315 units each with 5705 hit points with an attack that does 7 cold damage at initiative 16 +8790 units each with 10312 hit points with an attack that does 10 fire damage at initiative 5 +3242 units each with 4188 hit points (weak to cold; immune to radiation) with an attack that does 11 bludgeoning damage at initiative 14 + +Infection: +1230 units each with 11944 hit points (weak to cold) with an attack that does 17 bludgeoning damage at initiative 1 +7588 units each with 53223 hit points (immune to bludgeoning) with an attack that does 13 cold damage at initiative 12 +1887 units each with 40790 hit points (immune to radiation, slashing, cold) with an attack that does 43 fire damage at initiative 15 +285 units each with 8703 hit points (immune to slashing) with an attack that does 60 slashing damage at initiative 7 +1505 units each with 29297 hit points with an attack that does 38 fire damage at initiative 8 +191 units each with 24260 hit points (immune to bludgeoning; weak to slashing) with an attack that does 173 cold damage at initiative 20 +1854 units each with 12648 hit points (weak to fire, cold) with an attack that does 13 bludgeoning damage at initiative 13 +1541 units each with 49751 hit points (weak to cold, bludgeoning) with an attack that does 62 slashing damage at initiative 19 +3270 units each with 22736 hit points with an attack that does 13 slashing damage at initiative 10 +1211 units each with 56258 hit points (immune to slashing, cold) with an attack that does 73 bludgeoning damage at initiative 11 diff --git a/src/main/resources/2018/day25.txt b/src/main/resources/2018/day25.txt new file mode 100644 index 00000000..0b456154 --- /dev/null +++ b/src/main/resources/2018/day25.txt @@ -0,0 +1,1006 @@ +2,4,-1,-4 +-1,2,3,-3 +4,-8,-5,6 +-5,0,-4,-4 +8,0,5,-2 +8,-8,-6,6 +3,3,-8,-1 +-7,-4,6,-5 +-5,2,-3,5 +-5,-4,4,0 +6,4,4,-2 +0,8,7,-1 +-6,5,-8,0 +3,8,-1,8 +-3,5,7,-4 +2,4,-8,6 +-7,0,5,5 +-6,1,-4,3 +4,4,8,-2 +-6,-8,-6,-3 +3,-6,1,2 +6,-2,-8,-5 +-3,-6,-1,-6 +1,-7,-8,-4 +3,-1,0,-1 +4,-8,1,-8 +-4,-5,7,5 +1,-7,0,0 +4,-2,5,-6 +-4,-7,-5,7 +-2,0,3,0 +7,-8,-2,6 +-1,-1,1,-6 +3,0,-1,6 +1,-8,-1,6 +2,-4,-4,-5 +7,-3,-1,-6 +-5,-3,6,-3 +-3,5,-2,-8 +-6,7,7,0 +-4,-1,7,2 +7,-8,7,0 +3,-8,-1,4 +0,-3,5,-7 +-8,1,-3,-8 +2,-7,-6,-6 +-8,-8,0,-7 +-3,-5,8,8 +-1,-1,-5,-4 +-2,5,8,-7 +-1,4,-5,-4 +0,-8,6,0 +3,-8,1,-7 +3,6,-6,-2 +7,-2,1,-8 +-6,4,-3,6 +-6,-7,-1,-1 +-7,3,-1,-5 +-4,5,-8,-2 +7,5,2,-7 +2,-5,3,-7 +2,-6,-8,6 +-7,8,-3,-8 +8,-2,7,-1 +1,0,3,5 +0,3,6,-3 +-8,-1,0,5 +-5,-5,-1,7 +8,1,-1,8 +-1,-7,-8,1 +4,-8,1,-4 +8,-8,-7,3 +7,2,8,2 +-7,-3,2,4 +-8,-8,3,-3 +-1,0,-5,-6 +0,0,-5,2 +-3,0,4,-5 +-2,-5,-8,5 +4,-7,-6,-7 +-3,-4,-8,-4 +0,8,-7,-5 +-4,6,6,-3 +-4,-5,2,3 +-1,-7,2,5 +0,-8,8,-5 +7,4,4,-7 +8,-6,0,0 +1,0,8,-5 +8,7,1,-6 +-3,-2,6,-5 +-8,0,-5,-8 +5,1,5,-7 +4,2,2,-8 +-3,5,2,5 +-1,-2,-7,-7 +-8,2,2,-5 +-8,-3,-5,0 +6,4,-8,2 +-2,-7,0,4 +8,-8,8,7 +-1,-1,1,-4 +1,-8,-8,-5 +-7,-5,4,1 +6,-3,8,-1 +-7,4,4,-2 +-7,8,-8,-7 +2,-7,-8,7 +-5,-4,4,1 +-3,3,8,-3 +-5,-7,6,-2 +3,-6,0,5 +7,-7,0,6 +-5,0,2,-4 +3,2,-7,1 +1,-8,4,6 +-1,-8,-7,4 +4,-3,3,-1 +-4,-4,-5,2 +-1,0,-2,8 +-4,-2,2,6 +0,0,-1,5 +5,-5,-3,1 +-4,-7,-1,-1 +2,4,-8,-5 +-8,0,4,-1 +-7,-4,7,2 +0,-6,-2,3 +0,4,4,6 +-5,-4,-5,-6 +4,-5,5,1 +8,3,0,-8 +-4,-5,3,7 +-3,8,-7,-7 +-6,-7,-3,8 +6,0,7,7 +1,5,-7,-4 +-2,-1,8,-2 +-7,-7,2,1 +0,3,-7,1 +-6,1,-5,6 +-6,0,6,8 +3,5,4,1 +7,5,0,8 +-8,-4,3,1 +-2,7,-5,7 +-6,2,-3,-7 +-7,-6,-5,-7 +6,-4,-7,7 +-3,-6,5,1 +6,4,0,8 +0,3,3,7 +-2,-5,-7,-1 +8,7,7,-2 +-1,8,6,-7 +0,-2,6,-6 +0,-4,-5,-4 +-8,-1,-4,6 +-7,1,6,7 +7,1,-7,-6 +-1,-4,5,-6 +-6,3,6,-6 +3,1,6,-7 +-8,4,0,6 +5,-1,2,-3 +5,0,-2,-8 +-4,-2,0,-4 +-4,-4,0,-7 +-6,7,-7,-3 +2,-3,1,-2 +-8,0,-1,-5 +-3,5,4,-6 +-4,5,8,-5 +-1,-2,1,-5 +-1,-8,0,4 +0,-3,-5,5 +-7,4,6,-5 +-6,-4,8,-4 +-7,6,-7,5 +3,4,7,-6 +-2,-6,4,8 +4,-5,2,6 +2,5,0,0 +0,-3,-1,0 +-3,6,-7,8 +-6,8,0,-5 +-7,-4,6,3 +3,4,5,5 +5,-7,2,-6 +3,6,7,-7 +2,-3,-5,-7 +-5,8,-6,3 +0,-5,8,3 +2,7,3,7 +-4,4,-4,3 +-1,0,1,-5 +3,-6,-4,-7 +1,-4,5,-7 +-7,4,7,0 +8,-2,-6,-5 +7,-5,2,-4 +-5,-5,6,0 +-3,3,8,0 +-6,-5,0,-1 +-8,2,3,6 +-1,-4,7,-7 +5,6,5,-1 +3,-5,8,8 +-4,-7,3,1 +3,3,-6,0 +-2,-1,3,0 +3,-7,-3,0 +6,-4,-5,3 +-6,-6,0,-5 +3,4,-2,4 +8,7,2,-4 +-1,0,-4,-1 +0,-6,-6,-1 +2,6,6,5 +-4,4,2,-1 +-1,-1,7,0 +1,8,-4,-7 +-7,1,-5,1 +6,-3,-8,-8 +-8,7,0,6 +6,1,-1,8 +3,-6,-7,1 +-3,7,2,0 +-1,-5,-6,-6 +4,-1,-8,5 +2,0,0,6 +2,8,8,1 +-5,-4,2,-2 +2,-3,1,1 +3,4,-8,5 +3,2,-1,3 +7,8,3,-7 +7,1,4,-5 +-5,4,-5,-7 +2,-8,-4,-7 +0,-8,-8,-4 +1,-5,0,2 +7,2,-1,-3 +0,6,6,0 +1,6,-2,-5 +-1,0,7,-3 +-4,1,2,5 +-6,-8,-4,-6 +-5,7,1,-5 +-7,3,-1,0 +4,-5,-1,-6 +-4,5,-8,0 +3,0,-5,-6 +4,6,2,4 +6,0,2,8 +0,-3,-5,1 +7,8,2,4 +8,-6,8,0 +-8,6,4,-5 +2,0,-3,-3 +2,-6,7,-8 +-1,2,-8,3 +-8,-4,6,-6 +3,0,-4,-8 +6,0,4,6 +7,2,-2,4 +4,-8,0,-2 +0,-7,-4,5 +7,-1,0,2 +3,0,5,0 +-7,3,5,7 +3,5,5,-7 +1,-3,-7,6 +2,-3,-3,-2 +3,1,2,-4 +-6,0,2,1 +1,7,0,2 +3,-8,6,-3 +-6,0,-1,0 +0,2,-1,5 +-6,-3,4,1 +4,-4,-5,7 +-8,6,-5,-4 +-6,0,2,-3 +8,-3,-4,2 +8,2,-2,-4 +-3,-7,5,7 +-8,-8,-3,1 +-7,-2,5,-8 +3,6,5,1 +3,-4,-5,4 +-1,-1,-2,-5 +-4,4,5,-3 +2,-7,-4,8 +2,-7,4,-2 +0,-6,-1,6 +5,3,6,-5 +4,3,-6,2 +-2,8,0,0 +-8,-1,5,7 +2,-1,-7,-5 +-5,-2,-1,0 +-4,3,0,7 +-8,-6,7,-5 +8,-2,6,8 +5,6,-3,0 +1,1,-3,0 +3,2,7,1 +-2,-2,-5,0 +-3,-4,3,2 +0,1,-5,7 +-1,1,-4,-2 +0,-2,-1,-7 +3,-7,3,7 +-1,-8,5,-7 +-2,-4,-8,-4 +-2,7,-1,8 +6,6,6,-3 +0,4,2,-3 +7,0,6,8 +8,-6,-1,0 +0,4,-5,-3 +-7,7,1,-4 +4,1,1,-3 +-4,7,0,-6 +2,-7,2,8 +3,6,-2,-3 +1,2,-3,1 +-2,-7,0,2 +1,-6,2,4 +-4,0,6,8 +0,-6,-8,0 +8,-2,4,-8 +2,-7,0,1 +-7,1,7,6 +1,8,7,6 +4,6,-6,6 +7,4,-2,7 +0,-7,-8,0 +-4,3,-6,7 +0,6,-1,0 +-2,1,-3,6 +-6,-1,0,-4 +-1,-8,-8,-8 +-6,4,-5,8 +-6,-6,-7,-6 +-5,6,-2,7 +-7,6,4,-5 +1,0,1,1 +-2,8,-7,7 +0,3,-7,3 +6,-6,5,-6 +7,1,-4,0 +-4,0,3,1 +-4,-2,-5,-7 +7,4,-3,-1 +-8,2,6,-2 +3,2,0,-8 +0,1,-5,3 +-6,-6,0,-8 +7,3,-7,3 +-8,3,-2,7 +-8,-3,8,-8 +4,-5,-6,2 +2,3,-4,-2 +-8,-8,-1,1 +6,2,-7,8 +-5,6,-3,8 +-6,8,0,5 +-2,-5,3,-2 +1,8,3,7 +-5,6,7,-8 +-5,-2,0,-3 +1,5,-8,-4 +-5,-2,-2,7 +-2,1,1,7 +-1,-4,-7,-6 +8,5,-2,-2 +-6,7,5,-7 +6,-2,-5,-1 +-1,4,0,-8 +7,0,0,0 +-5,-3,5,-6 +0,8,8,-4 +0,6,4,-5 +2,3,-3,1 +-4,-1,4,5 +-6,2,1,1 +0,2,4,-4 +-8,0,5,4 +6,8,-1,0 +-6,-3,4,5 +7,-3,-6,3 +-6,-4,4,1 +-1,-2,-1,7 +-4,6,8,-7 +0,6,8,8 +-4,-6,-6,4 +-6,-3,7,-4 +8,4,5,0 +0,-5,-3,2 +7,7,-8,-1 +-4,-1,-6,3 +1,0,6,3 +-3,7,-5,0 +8,-6,5,-3 +-4,-2,5,-4 +-7,2,-8,7 +4,2,8,2 +6,-5,-2,1 +5,7,1,-5 +3,-1,1,-4 +6,-2,4,-5 +7,-7,8,-3 +-7,-8,3,-2 +2,3,2,0 +3,8,7,-3 +-5,4,-2,-5 +8,-8,-4,-7 +-1,-6,-6,-1 +1,6,0,-1 +5,2,6,0 +-5,-5,0,0 +1,3,0,7 +0,6,8,6 +4,7,-4,-5 +2,2,3,7 +-1,-4,1,5 +6,4,2,-1 +0,-4,-5,8 +8,-8,5,8 +3,1,-4,3 +-8,8,6,6 +2,-8,-2,-5 +8,1,1,4 +-4,6,-7,-1 +2,-6,2,0 +5,-2,-8,3 +8,3,-1,1 +-8,-3,-6,2 +-1,-3,0,-8 +4,-4,7,1 +7,0,-5,8 +2,0,-3,-1 +2,8,2,6 +1,-8,-6,-5 +-8,8,-4,-1 +0,6,-7,7 +-4,-8,0,-1 +-8,0,3,0 +8,5,-4,2 +-4,-2,-2,2 +-6,-3,-3,7 +0,-8,3,-8 +4,-1,7,0 +-8,2,-3,8 +2,-1,-5,-5 +2,-2,-7,4 +4,3,0,0 +5,-7,4,-3 +5,-3,7,1 +-4,-7,2,-8 +-6,0,-8,6 +2,-5,5,2 +1,-2,-3,-1 +-1,0,-2,0 +-6,-6,-8,8 +-2,8,2,-8 +-3,-8,0,0 +-4,-8,4,-4 +2,0,7,-7 +-4,3,-8,-2 +0,-8,-8,-6 +4,-8,7,-1 +0,4,2,8 +0,4,2,-2 +-4,4,-4,6 +5,8,-8,-1 +-7,0,-4,1 +-8,-6,-8,-4 +5,-6,1,-7 +3,5,1,-6 +-2,7,-2,-8 +0,4,0,-6 +1,1,6,5 +-7,-8,7,-1 +-4,1,-4,-7 +-2,0,3,4 +-5,0,-8,0 +-8,4,1,-6 +1,0,-5,7 +0,-5,2,-5 +-2,0,2,8 +8,0,-6,-4 +0,3,-2,7 +2,-1,6,0 +-3,3,6,5 +8,-4,-8,1 +-1,6,8,-5 +-3,8,-7,6 +-7,1,-8,-2 +-7,2,1,8 +0,-4,2,3 +-8,-6,-3,4 +-2,-1,3,5 +8,2,-8,2 +-6,5,-8,1 +7,1,7,6 +-3,6,6,8 +7,-4,0,0 +-5,-6,-7,-1 +-5,-5,-4,2 +0,-6,0,6 +3,-5,6,0 +-3,-2,-6,4 +8,0,1,5 +-8,4,7,-1 +1,0,4,6 +3,8,-7,-1 +4,-6,-3,-3 +0,-8,-3,8 +-1,-8,-8,0 +0,6,2,-5 +0,0,7,-1 +6,0,4,-3 +8,5,-8,5 +-6,-2,3,-4 +-2,0,-6,-6 +3,-4,0,2 +0,-7,6,-8 +-5,0,7,-8 +-1,6,-5,-2 +0,-2,5,0 +4,3,7,-1 +4,8,-7,7 +6,-5,-2,-6 +7,3,4,8 +-6,2,-5,5 +3,2,7,-8 +4,0,0,-5 +8,-1,-3,3 +-2,-6,6,2 +-7,3,3,3 +-8,-4,-5,-5 +7,6,6,6 +2,6,6,0 +-5,-8,-6,7 +0,-3,-2,2 +0,2,4,-8 +5,-8,-7,6 +8,-8,0,-2 +-4,-2,5,6 +3,4,0,0 +1,-7,4,2 +-4,-2,0,-5 +3,8,7,4 +-5,6,-1,0 +-6,0,-3,8 +7,1,0,-6 +3,-7,2,-4 +-6,7,-3,8 +0,-6,-7,4 +4,0,6,3 +6,-3,-7,-5 +-3,-3,-7,6 +6,-8,3,0 +-3,-1,0,6 +6,6,6,8 +8,-3,8,1 +0,-6,-5,8 +7,3,-4,-5 +-5,-3,5,3 +7,7,2,-5 +1,6,-5,4 +7,0,1,-7 +-1,6,-5,-8 +2,-3,-4,-8 +2,0,-1,3 +8,-7,6,0 +1,8,0,-4 +0,5,2,5 +0,6,-1,5 +-7,2,0,-4 +4,6,6,2 +2,7,2,-2 +-7,6,-4,0 +1,3,7,-3 +-3,-1,1,-5 +-7,4,-8,5 +3,3,2,6 +0,3,-7,4 +8,-5,3,-6 +5,3,-1,5 +1,7,-3,8 +0,-5,4,-7 +-3,-7,-6,-8 +0,-4,4,2 +-6,4,1,-2 +2,4,-7,-7 +-8,5,-1,-6 +-6,2,-3,-2 +3,2,-7,4 +-6,0,-2,0 +-3,-3,1,-7 +8,8,2,-4 +6,6,-1,-3 +-4,3,6,-3 +6,-4,0,8 +-5,6,6,7 +0,-6,-6,6 +-3,2,8,4 +7,-5,2,-1 +8,-8,2,5 +0,-3,-5,-3 +-2,-4,-1,6 +1,6,0,5 +0,-5,0,-8 +-8,0,-8,3 +-1,1,4,-1 +-2,7,-1,-3 +-1,6,-6,-2 +8,0,0,0 +5,3,3,-6 +-6,5,-5,4 +-1,2,-8,-2 +-5,-3,7,4 +-4,6,-5,0 +4,-8,-2,4 +-6,1,-5,-3 +-7,1,-7,-2 +-6,-2,-5,0 +2,0,-8,-1 +2,2,-1,6 +-4,4,8,-3 +1,-4,-8,6 +-6,2,0,-8 +-5,7,-1,-4 +5,6,-7,-3 +0,-5,-3,4 +-6,0,-7,4 +4,-5,-8,-1 +8,1,-7,-3 +-5,1,-8,1 +2,8,-7,-6 +0,-7,5,4 +-6,4,-1,-1 +3,-4,7,-4 +0,-1,2,0 +8,-8,1,-5 +-4,3,3,-2 +7,-3,1,-8 +3,-3,3,4 +0,8,2,-4 +-2,3,-6,0 +-7,-7,0,-4 +-1,2,-4,-4 +8,-3,-3,2 +0,-8,5,0 +5,-1,6,6 +-5,-4,7,4 +4,8,2,2 +6,5,-2,6 +1,2,-5,-2 +-6,-7,1,8 +-5,0,-4,-3 +3,6,8,-7 +-1,4,1,2 +8,-8,0,-4 +-7,0,3,4 +1,-6,-1,-5 +-3,7,-5,5 +-5,3,-5,3 +-8,7,0,8 +-5,-8,-7,-2 +4,-7,8,-6 +6,1,-2,-1 +-5,-4,8,-8 +2,5,7,-1 +-8,3,6,4 +0,-1,-8,5 +2,-2,-6,-3 +-7,-2,6,4 +-3,-1,-3,3 +-4,1,4,0 +4,-6,0,-5 +-2,-3,1,3 +7,0,2,0 +0,-2,3,1 +-8,0,2,-2 +3,3,8,-6 +3,-5,3,2 +1,-6,5,-2 +-8,4,-1,-5 +-2,-5,-2,-8 +-7,-5,0,2 +0,-6,-1,0 +-7,0,3,5 +-5,3,3,-2 +4,-4,5,-4 +-6,5,4,7 +-2,0,4,4 +-1,5,4,-3 +7,6,4,3 +6,-7,0,-3 +8,-8,1,2 +6,-3,0,8 +-3,6,5,-1 +-4,-6,-8,1 +-6,2,0,7 +-1,6,0,3 +0,7,-7,-8 +0,0,5,4 +-7,-1,-1,7 +7,-5,0,0 +1,-6,7,8 +2,0,7,8 +4,-8,-2,-3 +5,4,7,1 +3,0,-1,-4 +-5,-1,3,7 +0,-4,4,-3 +7,1,8,3 +6,-6,7,-4 +-6,-5,-3,-1 +-3,2,-6,2 +0,8,-3,7 +4,-4,8,-2 +0,-6,5,1 +6,0,3,-1 +-7,2,4,5 +-4,-2,4,0 +6,-4,1,8 +-7,4,8,6 +-1,-1,4,3 +8,0,5,-7 +-4,8,0,-3 +2,4,6,1 +0,-7,7,2 +-1,-4,6,8 +1,-6,4,6 +-6,6,1,-3 +-1,-6,-2,3 +-1,2,1,-2 +7,0,5,7 +-1,0,5,3 +0,4,0,1 +8,0,8,5 +4,6,-6,-8 +-7,5,1,-4 +3,7,0,4 +-2,6,-3,6 +0,2,-7,8 +3,6,-4,8 +8,-3,-8,-8 +4,6,-2,-1 +5,0,-3,-2 +-1,5,-3,-7 +-1,2,-1,0 +5,0,-5,2 +0,-3,-4,-3 +5,-5,6,6 +-5,-2,0,8 +-2,0,-7,-7 +-6,8,0,-3 +0,-2,-8,5 +7,-1,6,8 +-3,-3,0,3 +5,4,-1,8 +8,-8,5,5 +2,-1,-3,6 +7,-7,6,8 +-4,-2,-7,1 +3,6,2,-3 +-3,0,0,-7 +7,7,-4,-6 +-6,4,-1,8 +5,-3,5,4 +5,-4,0,8 +0,5,2,-8 +0,-3,0,4 +0,0,1,-1 +-8,0,0,-4 +8,0,0,-3 +4,-3,2,3 +-7,-4,8,6 +-1,-6,0,0 +3,-6,-3,-4 +-4,0,-8,5 +5,-8,0,-1 +3,-3,3,-5 +0,-3,7,7 +2,-6,5,3 +0,-1,-1,-3 +5,5,2,3 +-1,-4,6,3 +2,7,7,-4 +3,-6,3,0 +1,-2,-2,-1 +-1,6,5,-1 +7,8,7,-2 +7,3,-5,0 +7,0,-1,0 +3,3,-2,4 +-3,8,5,3 +7,8,-8,-4 +0,-7,0,-6 +5,-2,0,-7 +2,-5,-3,-1 +-8,1,-4,-7 +-3,2,-4,6 +-7,-6,-7,0 +-5,6,8,2 +4,7,8,4 +2,-8,6,0 +1,7,5,-8 +-8,1,3,-1 +4,4,1,5 +2,-2,-2,2 +-8,6,4,0 +-5,6,-5,7 +0,0,-5,4 +4,-4,7,-7 +-8,-8,4,7 +-7,4,0,5 +-4,3,6,-1 +1,1,-8,5 +0,8,-3,-1 +5,6,0,-4 +-8,8,3,-2 +1,-2,1,2 +2,-4,-7,1 +-5,1,6,0 +-1,-1,2,8 +2,6,5,7 +-2,-1,8,0 +0,-7,-8,-1 +5,1,8,0 +1,-6,6,6 +-6,-1,8,0 +6,-3,4,-4 +6,0,-3,-7 +3,1,-7,-3 +0,-7,-7,4 +2,3,1,2 +-8,0,-5,-5 +0,-8,7,-2 +-2,-1,3,7 +6,-7,1,-8 +-7,-2,1,-4 +4,-1,-8,3 +6,-7,-5,6 +-2,3,1,2 +2,8,-8,-8 +-1,6,-2,-6 +-1,-3,1,7 +-6,0,8,-7 +-7,1,2,-8 +0,2,-4,-8 +0,-8,-8,0 +7,-1,4,-8 +-5,1,3,0 +1,-8,7,-7 +-8,-5,1,4 +-4,0,3,4 +0,-7,-2,3 +-1,-2,4,-8 +-7,-4,5,7 +8,-1,-4,-8 +7,-5,-7,-4 +-8,3,0,6 +-7,5,1,-8 +-5,8,0,5 +4,1,-8,-8 +8,5,2,6 +7,-1,5,1 +-7,0,-6,-8 +-4,1,-5,0 +2,6,-2,4 +0,-7,4,2 +5,-5,5,3 +-4,7,5,-5 +4,-7,0,-3 +1,0,-3,1 +1,7,-7,-3 +2,7,0,-1 +-3,0,-8,1 +5,6,5,3 +6,-6,5,-2 +8,-1,4,-8 +0,-3,0,0 +-8,0,8,2 +-8,7,-6,0 +2,0,-7,6 +7,-3,-5,-3 +1,-5,-1,8 +6,4,0,1 +1,0,-3,4 +-8,6,4,-7 +4,8,-2,5 +0,-7,2,-3 +0,8,0,0 +-8,0,2,3 +-4,6,8,0 +-6,-2,-6,-3 +-4,2,0,-6 +0,1,6,1 +-7,0,-4,-8 +-6,-2,8,5 +8,2,0,-4 +5,5,-7,0 +-1,4,8,-5 +-8,-6,-1,-6 +0,5,-1,1 +8,-2,-7,-3 +-8,3,3,4 +3,0,-2,2 +5,-7,8,-1 +-6,0,0,-8 +2,8,5,5 +-2,0,0,4 +-2,7,7,-2 +-1,0,6,7 +-4,2,-7,3 +8,-4,-5,6 +-1,2,6,-5 +-7,-1,6,-2 +2,-4,-1,-3 +8,-3,8,2 +-8,7,-6,-7 +-3,3,5,7 +-2,5,-2,4 +0,2,-4,0 +2,5,-5,0 +6,6,5,5 +-8,5,0,-1 +3,-8,4,0 +-4,6,-2,-1 +-7,-8,2,1 +-6,8,1,3 +8,-4,-8,0 +4,-8,-8,0 +1,-5,-7,1 +1,0,3,3 +0,-8,3,5 +-4,0,0,1 +-6,0,-3,6 +-5,-4,1,-5 +-6,-3,7,-8 +4,-1,1,6 +6,5,0,7 +1,6,0,-2 +5,2,-1,4 +4,-1,0,-2 +4,-7,-1,5 +-1,-1,0,-3 +-1,-5,-1,-8 +-6,1,1,5 +-8,5,8,-5 +8,-7,0,4 +-4,4,0,3 +2,1,-3,-1 +-1,-6,-2,1 +-7,6,-1,2 +7,2,1,-6 +-5,4,6,-8 +8,8,-2,0 +-4,-7,-1,0 +7,0,-7,6 +6,-7,3,6 +-5,4,-8,6 +3,-2,-5,-6 +0,1,2,3 +7,0,-4,-7 +0,-1,7,0 +0,7,7,-2 +-5,7,-5,-2 +6,-1,-4,-6 +7,-2,4,5 +1,-2,8,3 +-6,-6,1,8 +-7,-8,4,-6 +8,-1,2,-7 +0,6,-6,5 +7,4,-6,5 +2,7,-4,-4 +1,-5,7,-7 +6,0,2,-8 +-3,5,-8,-1 +-4,0,1,-2 +8,6,1,-7 +5,4,-4,-1 +7,-5,1,0 +-5,3,6,8 +1,-8,6,-6 +-5,7,5,-8 +0,0,6,-3 +5,-1,7,0 +-8,-4,-6,-1 +-3,2,-1,-2 +-3,-4,1,1 +-3,-2,1,-1 +-2,8,-2,0 +-1,-1,2,1 +2,1,4,-6 +-5,1,7,-2 +0,7,-5,-5 diff --git a/src/main/resources/2018/day3.txt b/src/main/resources/2018/day3.txt new file mode 100644 index 00000000..582813af --- /dev/null +++ b/src/main/resources/2018/day3.txt @@ -0,0 +1,1307 @@ +#1 @ 755,138: 26x19 +#2 @ 952,518: 15x24 +#3 @ 304,90: 28x12 +#4 @ 237,265: 17x13 +#5 @ 219,97: 26x24 +#6 @ 512,74: 19x21 +#7 @ 868,291: 22x25 +#8 @ 908,272: 17x11 +#9 @ 432,455: 10x8 +#10 @ 309,778: 13x25 +#11 @ 569,720: 28x29 +#12 @ 557,222: 26x15 +#13 @ 899,728: 12x22 +#14 @ 966,109: 13x15 +#15 @ 403,295: 27x24 +#16 @ 320,546: 10x28 +#17 @ 871,906: 10x20 +#18 @ 233,207: 27x11 +#19 @ 672,560: 16x25 +#20 @ 422,273: 22x11 +#21 @ 314,911: 17x26 +#22 @ 36,545: 18x13 +#23 @ 18,151: 13x24 +#24 @ 655,24: 28x22 +#25 @ 538,430: 21x26 +#26 @ 749,726: 19x18 +#27 @ 41,166: 22x29 +#28 @ 595,17: 11x20 +#29 @ 691,725: 18x20 +#30 @ 427,113: 11x25 +#31 @ 491,661: 19x23 +#32 @ 479,348: 20x16 +#33 @ 415,1: 16x17 +#34 @ 780,927: 23x19 +#35 @ 780,350: 21x3 +#36 @ 415,796: 12x15 +#37 @ 783,452: 29x24 +#38 @ 702,728: 16x28 +#39 @ 350,676: 17x21 +#40 @ 611,518: 12x21 +#41 @ 813,715: 13x26 +#42 @ 317,63: 29x24 +#43 @ 484,642: 26x14 +#44 @ 237,910: 24x25 +#45 @ 325,917: 28x20 +#46 @ 567,485: 20x12 +#47 @ 464,470: 18x26 +#48 @ 389,9: 13x11 +#49 @ 92,560: 16x21 +#50 @ 532,967: 23x14 +#51 @ 762,825: 11x13 +#52 @ 606,600: 23x23 +#53 @ 848,798: 19x24 +#54 @ 311,503: 10x15 +#55 @ 72,388: 13x19 +#56 @ 28,692: 15x29 +#57 @ 965,205: 13x13 +#58 @ 472,738: 18x17 +#59 @ 732,652: 25x18 +#60 @ 676,573: 23x17 +#61 @ 859,162: 17x24 +#62 @ 775,822: 19x26 +#63 @ 343,97: 22x20 +#64 @ 945,279: 13x19 +#65 @ 446,405: 13x13 +#66 @ 293,520: 26x16 +#67 @ 852,501: 26x19 +#68 @ 924,209: 21x29 +#69 @ 469,425: 17x17 +#70 @ 192,827: 14x11 +#71 @ 944,798: 25x24 +#72 @ 161,321: 16x20 +#73 @ 930,796: 25x10 +#74 @ 460,629: 26x23 +#75 @ 777,347: 29x10 +#76 @ 320,50: 20x20 +#77 @ 417,360: 26x18 +#78 @ 579,460: 14x26 +#79 @ 20,361: 29x11 +#80 @ 55,929: 26x25 +#81 @ 532,605: 26x29 +#82 @ 152,606: 24x20 +#83 @ 255,566: 24x18 +#84 @ 54,204: 13x22 +#85 @ 837,206: 19x16 +#86 @ 555,336: 13x24 +#87 @ 878,302: 16x15 +#88 @ 356,480: 21x22 +#89 @ 261,769: 16x10 +#90 @ 884,165: 27x10 +#91 @ 374,83: 20x11 +#92 @ 514,214: 17x18 +#93 @ 346,557: 21x16 +#94 @ 260,772: 27x20 +#95 @ 337,313: 25x21 +#96 @ 140,322: 17x10 +#97 @ 81,892: 24x20 +#98 @ 432,958: 10x23 +#99 @ 533,176: 22x10 +#100 @ 186,331: 14x20 +#101 @ 910,975: 11x11 +#102 @ 756,642: 24x22 +#103 @ 251,358: 14x21 +#104 @ 30,146: 18x26 +#105 @ 307,555: 14x12 +#106 @ 150,670: 13x20 +#107 @ 643,862: 17x27 +#108 @ 98,740: 29x13 +#109 @ 347,44: 11x14 +#110 @ 105,597: 11x27 +#111 @ 918,492: 15x19 +#112 @ 824,383: 20x17 +#113 @ 227,259: 21x17 +#114 @ 103,516: 5x10 +#115 @ 170,683: 13x14 +#116 @ 397,590: 22x24 +#117 @ 577,257: 21x25 +#118 @ 575,204: 13x13 +#119 @ 245,761: 16x16 +#120 @ 802,736: 13x19 +#121 @ 193,10: 26x16 +#122 @ 393,4: 25x28 +#123 @ 122,609: 18x19 +#124 @ 635,687: 12x11 +#125 @ 898,545: 25x15 +#126 @ 293,934: 17x15 +#127 @ 224,781: 27x22 +#128 @ 952,534: 17x15 +#129 @ 557,958: 11x12 +#130 @ 248,655: 13x20 +#131 @ 334,284: 21x18 +#132 @ 663,378: 25x25 +#133 @ 892,529: 27x24 +#134 @ 428,451: 21x18 +#135 @ 263,39: 22x14 +#136 @ 68,217: 12x29 +#137 @ 560,136: 15x13 +#138 @ 163,815: 29x18 +#139 @ 627,669: 20x12 +#140 @ 23,539: 16x13 +#141 @ 101,509: 19x25 +#142 @ 895,520: 12x26 +#143 @ 409,884: 27x12 +#144 @ 368,760: 11x20 +#145 @ 557,58: 28x10 +#146 @ 438,332: 12x21 +#147 @ 76,951: 28x20 +#148 @ 406,186: 22x27 +#149 @ 302,621: 19x29 +#150 @ 920,629: 17x13 +#151 @ 849,878: 11x28 +#152 @ 780,576: 20x28 +#153 @ 757,799: 26x23 +#154 @ 116,834: 29x16 +#155 @ 729,960: 23x11 +#156 @ 137,56: 20x23 +#157 @ 556,337: 13x18 +#158 @ 294,546: 29x20 +#159 @ 22,334: 28x14 +#160 @ 565,39: 14x16 +#161 @ 173,311: 12x18 +#162 @ 191,516: 15x17 +#163 @ 280,334: 29x25 +#164 @ 835,508: 10x15 +#165 @ 413,766: 23x10 +#166 @ 922,355: 16x22 +#167 @ 231,790: 13x16 +#168 @ 363,538: 16x23 +#169 @ 333,386: 25x16 +#170 @ 901,377: 13x19 +#171 @ 722,437: 18x25 +#172 @ 666,697: 26x22 +#173 @ 0,355: 10x10 +#174 @ 475,88: 23x12 +#175 @ 51,174: 21x29 +#176 @ 546,330: 21x25 +#177 @ 707,924: 15x11 +#178 @ 530,812: 22x14 +#179 @ 73,52: 20x25 +#180 @ 936,311: 13x17 +#181 @ 723,519: 28x11 +#182 @ 662,239: 17x19 +#183 @ 309,186: 23x23 +#184 @ 584,457: 26x22 +#185 @ 575,52: 19x19 +#186 @ 327,300: 19x24 +#187 @ 376,128: 12x21 +#188 @ 573,536: 8x7 +#189 @ 420,335: 12x29 +#190 @ 886,554: 12x10 +#191 @ 820,66: 10x22 +#192 @ 5,564: 25x27 +#193 @ 942,979: 29x17 +#194 @ 116,55: 27x11 +#195 @ 423,854: 20x16 +#196 @ 331,37: 19x24 +#197 @ 715,374: 29x13 +#198 @ 873,758: 10x29 +#199 @ 661,367: 20x22 +#200 @ 521,796: 26x20 +#201 @ 582,838: 15x26 +#202 @ 548,870: 10x19 +#203 @ 357,418: 21x11 +#204 @ 651,861: 28x11 +#205 @ 166,414: 18x15 +#206 @ 403,513: 16x13 +#207 @ 10,561: 23x19 +#208 @ 259,725: 27x13 +#209 @ 505,647: 13x14 +#210 @ 25,131: 28x15 +#211 @ 414,295: 28x16 +#212 @ 421,775: 19x14 +#213 @ 214,627: 12x19 +#214 @ 642,675: 24x26 +#215 @ 561,755: 22x10 +#216 @ 469,754: 23x15 +#217 @ 533,714: 21x21 +#218 @ 21,163: 13x12 +#219 @ 11,59: 12x21 +#220 @ 47,903: 10x20 +#221 @ 538,890: 12x24 +#222 @ 114,617: 23x29 +#223 @ 462,209: 16x12 +#224 @ 206,643: 17x29 +#225 @ 890,106: 24x10 +#226 @ 276,15: 16x12 +#227 @ 663,196: 22x26 +#228 @ 660,686: 17x28 +#229 @ 474,586: 10x26 +#230 @ 900,379: 12x23 +#231 @ 2,31: 12x12 +#232 @ 937,309: 24x29 +#233 @ 450,123: 16x19 +#234 @ 302,204: 29x16 +#235 @ 199,948: 29x12 +#236 @ 958,794: 29x19 +#237 @ 779,851: 18x23 +#238 @ 730,631: 18x29 +#239 @ 111,704: 18x24 +#240 @ 488,58: 25x12 +#241 @ 572,23: 26x22 +#242 @ 307,89: 12x22 +#243 @ 510,770: 24x15 +#244 @ 45,448: 11x28 +#245 @ 590,542: 18x17 +#246 @ 678,2: 23x12 +#247 @ 796,319: 11x16 +#248 @ 152,680: 26x25 +#249 @ 938,25: 19x21 +#250 @ 56,395: 23x22 +#251 @ 590,668: 18x24 +#252 @ 839,710: 29x14 +#253 @ 792,637: 24x20 +#254 @ 700,113: 26x14 +#255 @ 25,593: 11x23 +#256 @ 924,479: 28x25 +#257 @ 223,544: 24x20 +#258 @ 680,577: 18x18 +#259 @ 342,475: 23x29 +#260 @ 533,151: 17x13 +#261 @ 142,519: 22x20 +#262 @ 902,762: 15x28 +#263 @ 332,827: 13x23 +#264 @ 10,105: 19x25 +#265 @ 417,605: 17x19 +#266 @ 578,795: 10x12 +#267 @ 308,342: 12x21 +#268 @ 239,241: 27x24 +#269 @ 312,382: 10x3 +#270 @ 770,6: 13x20 +#271 @ 350,484: 18x22 +#272 @ 897,652: 14x19 +#273 @ 518,314: 17x12 +#274 @ 675,124: 9x12 +#275 @ 787,416: 28x17 +#276 @ 512,204: 18x19 +#277 @ 243,224: 16x18 +#278 @ 266,938: 6x3 +#279 @ 305,914: 22x22 +#280 @ 68,930: 22x10 +#281 @ 312,565: 25x10 +#282 @ 562,608: 16x19 +#283 @ 55,116: 17x10 +#284 @ 253,675: 19x16 +#285 @ 304,299: 19x15 +#286 @ 786,401: 26x20 +#287 @ 391,621: 21x25 +#288 @ 437,217: 19x18 +#289 @ 675,488: 25x28 +#290 @ 47,195: 10x26 +#291 @ 881,323: 25x29 +#292 @ 24,173: 25x27 +#293 @ 816,658: 22x21 +#294 @ 915,501: 29x18 +#295 @ 886,49: 12x23 +#296 @ 885,60: 10x15 +#297 @ 257,849: 26x28 +#298 @ 899,571: 29x15 +#299 @ 714,390: 15x11 +#300 @ 915,702: 14x27 +#301 @ 489,164: 10x6 +#302 @ 389,463: 16x10 +#303 @ 229,759: 28x11 +#304 @ 4,570: 17x17 +#305 @ 547,949: 28x24 +#306 @ 696,931: 17x16 +#307 @ 241,300: 18x16 +#308 @ 790,323: 15x17 +#309 @ 483,822: 17x17 +#310 @ 463,733: 21x22 +#311 @ 98,549: 20x10 +#312 @ 364,23: 13x12 +#313 @ 490,651: 18x15 +#314 @ 887,670: 19x19 +#315 @ 326,902: 10x19 +#316 @ 793,765: 17x19 +#317 @ 733,540: 17x10 +#318 @ 768,892: 28x20 +#319 @ 317,21: 29x10 +#320 @ 668,172: 13x27 +#321 @ 496,122: 12x4 +#322 @ 911,236: 12x12 +#323 @ 430,576: 25x15 +#324 @ 606,798: 27x25 +#325 @ 903,242: 21x15 +#326 @ 128,713: 14x10 +#327 @ 293,367: 25x15 +#328 @ 610,359: 13x23 +#329 @ 284,30: 22x16 +#330 @ 561,764: 17x20 +#331 @ 558,329: 11x17 +#332 @ 536,356: 23x27 +#333 @ 606,968: 26x19 +#334 @ 420,175: 15x24 +#335 @ 676,86: 29x20 +#336 @ 908,410: 17x16 +#337 @ 558,766: 12x28 +#338 @ 917,860: 23x20 +#339 @ 253,362: 8x11 +#340 @ 429,844: 14x27 +#341 @ 56,851: 10x23 +#342 @ 309,709: 22x18 +#343 @ 165,346: 25x21 +#344 @ 17,922: 23x14 +#345 @ 702,31: 16x21 +#346 @ 328,333: 19x27 +#347 @ 302,911: 17x18 +#348 @ 15,649: 12x19 +#349 @ 966,178: 24x21 +#350 @ 544,945: 27x17 +#351 @ 261,927: 28x20 +#352 @ 705,393: 28x12 +#353 @ 732,58: 17x26 +#354 @ 213,572: 20x26 +#355 @ 358,650: 16x29 +#356 @ 754,629: 10x14 +#357 @ 708,941: 10x21 +#358 @ 153,478: 19x18 +#359 @ 950,364: 29x16 +#360 @ 765,705: 12x22 +#361 @ 779,171: 20x11 +#362 @ 670,677: 14x26 +#363 @ 405,646: 27x17 +#364 @ 346,842: 25x25 +#365 @ 902,872: 22x23 +#366 @ 166,133: 16x10 +#367 @ 692,546: 24x26 +#368 @ 883,552: 23x10 +#369 @ 153,497: 12x16 +#370 @ 928,881: 15x28 +#371 @ 316,308: 19x22 +#372 @ 582,239: 28x23 +#373 @ 285,728: 16x24 +#374 @ 790,929: 17x15 +#375 @ 369,96: 14x21 +#376 @ 904,950: 19x18 +#377 @ 205,938: 13x13 +#378 @ 132,837: 13x16 +#379 @ 279,864: 14x14 +#380 @ 718,816: 29x23 +#381 @ 120,973: 29x17 +#382 @ 422,461: 10x15 +#383 @ 208,352: 23x26 +#384 @ 904,731: 18x23 +#385 @ 61,876: 26x27 +#386 @ 533,327: 27x22 +#387 @ 2,349: 20x13 +#388 @ 399,969: 24x23 +#389 @ 805,734: 13x15 +#390 @ 190,898: 24x13 +#391 @ 117,845: 19x18 +#392 @ 368,30: 16x19 +#393 @ 406,974: 13x4 +#394 @ 35,913: 10x29 +#395 @ 228,169: 11x28 +#396 @ 505,735: 21x12 +#397 @ 737,335: 10x16 +#398 @ 261,264: 28x15 +#399 @ 965,959: 15x25 +#400 @ 14,168: 25x23 +#401 @ 693,517: 14x13 +#402 @ 54,893: 13x16 +#403 @ 186,945: 26x14 +#404 @ 117,742: 21x19 +#405 @ 185,455: 11x14 +#406 @ 203,1: 20x11 +#407 @ 175,191: 27x18 +#408 @ 634,690: 19x21 +#409 @ 650,437: 27x15 +#410 @ 623,752: 15x24 +#411 @ 790,606: 16x24 +#412 @ 851,726: 19x12 +#413 @ 68,171: 25x23 +#414 @ 336,135: 19x11 +#415 @ 427,151: 10x28 +#416 @ 313,67: 10x12 +#417 @ 144,519: 23x11 +#418 @ 606,699: 27x28 +#419 @ 66,564: 17x24 +#420 @ 219,225: 28x29 +#421 @ 911,398: 11x17 +#422 @ 971,903: 28x27 +#423 @ 909,220: 20x20 +#424 @ 64,845: 29x18 +#425 @ 448,248: 23x26 +#426 @ 726,370: 15x14 +#427 @ 951,135: 24x20 +#428 @ 557,750: 24x23 +#429 @ 487,184: 26x21 +#430 @ 427,819: 27x18 +#431 @ 243,684: 16x12 +#432 @ 362,486: 27x10 +#433 @ 631,562: 22x24 +#434 @ 43,258: 16x21 +#435 @ 855,305: 21x11 +#436 @ 216,955: 29x11 +#437 @ 709,7: 21x27 +#438 @ 308,47: 16x11 +#439 @ 251,765: 16x10 +#440 @ 737,440: 16x20 +#441 @ 142,438: 22x18 +#442 @ 405,492: 17x23 +#443 @ 216,687: 28x12 +#444 @ 323,770: 20x17 +#445 @ 373,90: 28x26 +#446 @ 670,674: 10x17 +#447 @ 292,239: 5x5 +#448 @ 369,133: 17x18 +#449 @ 81,173: 13x14 +#450 @ 954,299: 29x17 +#451 @ 390,730: 21x10 +#452 @ 933,25: 10x12 +#453 @ 340,165: 14x13 +#454 @ 459,498: 10x13 +#455 @ 787,464: 10x24 +#456 @ 476,683: 29x26 +#457 @ 877,986: 12x12 +#458 @ 393,112: 27x27 +#459 @ 957,538: 16x22 +#460 @ 815,245: 12x11 +#461 @ 777,925: 29x13 +#462 @ 200,302: 24x14 +#463 @ 780,916: 19x16 +#464 @ 355,667: 20x11 +#465 @ 310,972: 17x17 +#466 @ 591,6: 12x25 +#467 @ 429,640: 10x19 +#468 @ 888,608: 29x26 +#469 @ 47,843: 15x13 +#470 @ 457,653: 17x21 +#471 @ 589,253: 24x29 +#472 @ 586,746: 15x20 +#473 @ 339,492: 19x21 +#474 @ 562,507: 19x23 +#475 @ 283,874: 25x19 +#476 @ 277,237: 25x10 +#477 @ 478,493: 13x17 +#478 @ 37,239: 15x11 +#479 @ 948,887: 25x24 +#480 @ 883,25: 15x21 +#481 @ 203,89: 17x14 +#482 @ 422,924: 25x20 +#483 @ 838,387: 7x3 +#484 @ 114,831: 26x25 +#485 @ 906,5: 20x17 +#486 @ 17,422: 5x8 +#487 @ 664,638: 14x13 +#488 @ 948,268: 11x12 +#489 @ 36,856: 29x10 +#490 @ 538,137: 12x26 +#491 @ 367,677: 20x22 +#492 @ 116,457: 29x11 +#493 @ 963,157: 23x22 +#494 @ 559,521: 11x13 +#495 @ 881,439: 15x24 +#496 @ 487,112: 27x25 +#497 @ 433,312: 23x23 +#498 @ 270,745: 16x13 +#499 @ 121,950: 17x21 +#500 @ 866,544: 24x13 +#501 @ 280,285: 13x23 +#502 @ 52,270: 20x29 +#503 @ 208,304: 6x8 +#504 @ 226,872: 28x14 +#505 @ 267,845: 13x13 +#506 @ 345,477: 23x20 +#507 @ 633,771: 25x27 +#508 @ 715,398: 27x21 +#509 @ 36,526: 28x28 +#510 @ 745,143: 13x28 +#511 @ 57,250: 10x29 +#512 @ 573,236: 25x12 +#513 @ 715,671: 12x13 +#514 @ 69,102: 4x21 +#515 @ 692,34: 22x10 +#516 @ 274,302: 16x29 +#517 @ 22,47: 25x18 +#518 @ 590,723: 28x17 +#519 @ 95,879: 18x16 +#520 @ 275,858: 11x13 +#521 @ 486,159: 25x16 +#522 @ 249,215: 12x15 +#523 @ 615,738: 16x18 +#524 @ 766,13: 19x12 +#525 @ 297,555: 18x20 +#526 @ 362,76: 16x18 +#527 @ 488,829: 10x22 +#528 @ 248,921: 22x24 +#529 @ 80,136: 18x15 +#530 @ 880,740: 13x12 +#531 @ 584,217: 18x23 +#532 @ 716,634: 7x12 +#533 @ 370,741: 23x21 +#534 @ 385,12: 16x16 +#535 @ 587,565: 23x29 +#536 @ 397,636: 16x28 +#537 @ 208,504: 14x20 +#538 @ 241,564: 15x12 +#539 @ 553,484: 18x11 +#540 @ 351,765: 28x26 +#541 @ 498,770: 3x12 +#542 @ 610,135: 14x29 +#543 @ 2,888: 24x16 +#544 @ 631,464: 16x16 +#545 @ 716,247: 15x27 +#546 @ 380,693: 18x21 +#547 @ 690,507: 11x17 +#548 @ 950,886: 28x17 +#549 @ 188,182: 12x16 +#550 @ 604,418: 20x22 +#551 @ 544,184: 27x13 +#552 @ 367,16: 23x13 +#553 @ 508,645: 21x26 +#554 @ 906,386: 13x16 +#555 @ 681,208: 17x17 +#556 @ 254,576: 12x14 +#557 @ 867,797: 17x18 +#558 @ 776,350: 9x4 +#559 @ 249,664: 11x29 +#560 @ 656,651: 21x29 +#561 @ 884,610: 25x25 +#562 @ 329,213: 13x27 +#563 @ 958,277: 20x25 +#564 @ 603,551: 12x13 +#565 @ 91,228: 21x14 +#566 @ 171,636: 19x25 +#567 @ 509,336: 14x17 +#568 @ 428,827: 26x28 +#569 @ 546,747: 20x17 +#570 @ 951,357: 17x15 +#571 @ 892,747: 15x27 +#572 @ 219,866: 21x16 +#573 @ 617,233: 20x22 +#574 @ 271,502: 15x11 +#575 @ 159,486: 17x17 +#576 @ 925,311: 26x10 +#577 @ 731,589: 10x19 +#578 @ 16,878: 21x17 +#579 @ 421,0: 11x27 +#580 @ 313,535: 20x21 +#581 @ 659,155: 19x24 +#582 @ 707,68: 29x27 +#583 @ 119,193: 25x19 +#584 @ 165,709: 23x18 +#585 @ 663,435: 25x12 +#586 @ 356,107: 28x10 +#587 @ 446,30: 22x17 +#588 @ 17,328: 28x24 +#589 @ 601,551: 25x16 +#590 @ 697,90: 12x21 +#591 @ 764,807: 23x22 +#592 @ 493,199: 22x14 +#593 @ 687,519: 18x26 +#594 @ 799,195: 16x11 +#595 @ 543,172: 22x26 +#596 @ 671,909: 24x10 +#597 @ 188,201: 21x24 +#598 @ 52,532: 24x25 +#599 @ 20,376: 10x29 +#600 @ 669,515: 25x12 +#601 @ 645,473: 15x20 +#602 @ 695,339: 11x26 +#603 @ 218,746: 16x16 +#604 @ 97,492: 11x26 +#605 @ 551,463: 14x27 +#606 @ 931,516: 25x28 +#607 @ 830,888: 26x14 +#608 @ 413,104: 24x25 +#609 @ 181,879: 17x20 +#610 @ 524,369: 14x29 +#611 @ 861,175: 23x19 +#612 @ 366,383: 20x24 +#613 @ 315,559: 11x11 +#614 @ 287,7: 23x21 +#615 @ 949,779: 12x21 +#616 @ 507,514: 21x21 +#617 @ 768,50: 29x11 +#618 @ 323,326: 12x28 +#619 @ 933,12: 24x17 +#620 @ 578,821: 24x29 +#621 @ 564,765: 14x22 +#622 @ 974,502: 11x16 +#623 @ 613,884: 19x28 +#624 @ 824,604: 11x13 +#625 @ 56,833: 11x21 +#626 @ 347,131: 13x29 +#627 @ 501,867: 28x19 +#628 @ 325,49: 22x24 +#629 @ 503,618: 17x21 +#630 @ 761,402: 12x22 +#631 @ 604,679: 15x19 +#632 @ 915,252: 19x24 +#633 @ 487,856: 29x15 +#634 @ 147,111: 21x23 +#635 @ 904,393: 28x27 +#636 @ 242,318: 22x19 +#637 @ 359,297: 16x19 +#638 @ 714,516: 23x20 +#639 @ 155,340: 24x10 +#640 @ 840,880: 17x25 +#641 @ 433,651: 13x26 +#642 @ 643,849: 23x14 +#643 @ 782,202: 29x18 +#644 @ 465,495: 26x15 +#645 @ 197,340: 28x15 +#646 @ 389,575: 25x29 +#647 @ 178,192: 27x27 +#648 @ 110,688: 16x28 +#649 @ 852,574: 15x11 +#650 @ 253,592: 14x10 +#651 @ 254,323: 28x20 +#652 @ 651,854: 21x15 +#653 @ 566,558: 19x27 +#654 @ 885,425: 15x25 +#655 @ 579,469: 3x4 +#656 @ 776,728: 22x23 +#657 @ 66,98: 21x29 +#658 @ 613,360: 16x16 +#659 @ 668,874: 19x16 +#660 @ 439,369: 11x19 +#661 @ 735,850: 25x21 +#662 @ 307,339: 12x20 +#663 @ 403,183: 19x12 +#664 @ 700,777: 12x16 +#665 @ 580,211: 28x17 +#666 @ 678,893: 15x14 +#667 @ 623,730: 16x11 +#668 @ 464,564: 23x25 +#669 @ 505,429: 11x23 +#670 @ 107,888: 13x28 +#671 @ 61,610: 28x22 +#672 @ 584,240: 27x23 +#673 @ 560,794: 24x23 +#674 @ 746,824: 18x18 +#675 @ 629,244: 14x24 +#676 @ 570,528: 18x23 +#677 @ 828,599: 28x26 +#678 @ 159,38: 13x10 +#679 @ 947,361: 10x19 +#680 @ 431,201: 15x22 +#681 @ 801,449: 27x11 +#682 @ 44,174: 12x22 +#683 @ 797,783: 15x24 +#684 @ 600,972: 22x12 +#685 @ 791,817: 29x15 +#686 @ 293,806: 20x26 +#687 @ 908,734: 19x22 +#688 @ 84,543: 12x11 +#689 @ 508,450: 15x17 +#690 @ 887,472: 21x15 +#691 @ 390,694: 14x12 +#692 @ 882,32: 16x13 +#693 @ 708,66: 19x22 +#694 @ 695,185: 22x20 +#695 @ 790,882: 24x18 +#696 @ 773,465: 20x12 +#697 @ 158,352: 22x23 +#698 @ 681,708: 18x13 +#699 @ 52,963: 11x29 +#700 @ 139,974: 11x21 +#701 @ 696,66: 26x27 +#702 @ 183,514: 11x13 +#703 @ 110,605: 18x20 +#704 @ 394,114: 23x26 +#705 @ 701,926: 19x12 +#706 @ 426,145: 18x24 +#707 @ 228,697: 25x13 +#708 @ 204,560: 15x16 +#709 @ 454,980: 14x20 +#710 @ 434,869: 19x16 +#711 @ 460,421: 21x18 +#712 @ 858,401: 25x22 +#713 @ 916,560: 13x27 +#714 @ 1,678: 28x28 +#715 @ 804,365: 24x21 +#716 @ 65,571: 28x16 +#717 @ 623,727: 16x29 +#718 @ 414,351: 11x15 +#719 @ 569,58: 25x14 +#720 @ 638,681: 13x11 +#721 @ 260,187: 26x20 +#722 @ 797,797: 11x26 +#723 @ 210,706: 25x11 +#724 @ 177,424: 29x23 +#725 @ 301,979: 16x19 +#726 @ 772,317: 19x17 +#727 @ 400,611: 19x26 +#728 @ 139,38: 21x10 +#729 @ 303,326: 27x16 +#730 @ 898,961: 11x17 +#731 @ 517,324: 17x15 +#732 @ 616,433: 12x22 +#733 @ 9,4: 14x25 +#734 @ 467,645: 15x15 +#735 @ 551,892: 10x27 +#736 @ 553,598: 14x16 +#737 @ 280,354: 19x22 +#738 @ 694,391: 24x22 +#739 @ 390,586: 13x12 +#740 @ 658,513: 20x11 +#741 @ 25,606: 15x14 +#742 @ 257,63: 26x21 +#743 @ 921,375: 18x14 +#744 @ 551,547: 16x27 +#745 @ 446,936: 26x11 +#746 @ 56,404: 24x24 +#747 @ 771,348: 22x10 +#748 @ 649,518: 23x26 +#749 @ 680,908: 27x21 +#750 @ 636,669: 13x23 +#751 @ 275,506: 25x17 +#752 @ 763,338: 24x19 +#753 @ 3,3: 28x28 +#754 @ 625,668: 11x22 +#755 @ 597,536: 23x11 +#756 @ 316,902: 16x16 +#757 @ 55,229: 22x21 +#758 @ 84,553: 14x17 +#759 @ 279,736: 12x20 +#760 @ 639,780: 4x6 +#761 @ 873,143: 12x25 +#762 @ 116,757: 18x26 +#763 @ 257,297: 24x27 +#764 @ 138,188: 10x13 +#765 @ 692,187: 10x23 +#766 @ 596,237: 10x12 +#767 @ 246,869: 21x20 +#768 @ 154,110: 25x28 +#769 @ 37,287: 23x26 +#770 @ 779,651: 22x14 +#771 @ 153,296: 21x17 +#772 @ 294,336: 7x19 +#773 @ 803,327: 11x11 +#774 @ 542,895: 14x19 +#775 @ 501,301: 25x19 +#776 @ 703,796: 28x19 +#777 @ 966,184: 15x27 +#778 @ 13,735: 11x28 +#779 @ 652,674: 22x23 +#780 @ 609,608: 20x20 +#781 @ 663,141: 21x23 +#782 @ 708,555: 10x19 +#783 @ 317,813: 25x25 +#784 @ 205,441: 17x12 +#785 @ 689,504: 13x25 +#786 @ 715,927: 10x14 +#787 @ 726,254: 11x13 +#788 @ 525,511: 27x17 +#789 @ 562,123: 10x28 +#790 @ 386,94: 11x18 +#791 @ 409,431: 24x17 +#792 @ 657,574: 22x14 +#793 @ 127,915: 16x22 +#794 @ 127,968: 25x13 +#795 @ 487,64: 22x15 +#796 @ 610,245: 28x16 +#797 @ 514,616: 18x21 +#798 @ 38,945: 19x21 +#799 @ 794,904: 20x14 +#800 @ 474,210: 20x17 +#801 @ 340,36: 16x16 +#802 @ 774,752: 29x11 +#803 @ 785,845: 15x20 +#804 @ 789,582: 10x25 +#805 @ 726,524: 21x20 +#806 @ 4,350: 27x27 +#807 @ 218,749: 15x29 +#808 @ 423,648: 27x10 +#809 @ 69,186: 21x10 +#810 @ 607,871: 16x19 +#811 @ 766,924: 19x21 +#812 @ 59,252: 4x21 +#813 @ 185,707: 23x29 +#814 @ 495,87: 18x18 +#815 @ 16,625: 19x25 +#816 @ 673,119: 17x26 +#817 @ 893,3: 14x24 +#818 @ 14,361: 22x19 +#819 @ 502,585: 18x28 +#820 @ 293,446: 27x18 +#821 @ 25,194: 25x11 +#822 @ 789,169: 14x11 +#823 @ 423,918: 29x18 +#824 @ 956,863: 28x25 +#825 @ 49,327: 11x16 +#826 @ 529,86: 21x18 +#827 @ 902,524: 23x24 +#828 @ 254,220: 16x19 +#829 @ 571,206: 23x21 +#830 @ 66,68: 10x17 +#831 @ 233,367: 23x28 +#832 @ 677,511: 25x17 +#833 @ 895,757: 7x9 +#834 @ 314,905: 21x29 +#835 @ 870,233: 13x12 +#836 @ 599,118: 25x22 +#837 @ 34,119: 10x22 +#838 @ 602,725: 10x23 +#839 @ 481,848: 20x12 +#840 @ 696,106: 18x12 +#841 @ 566,788: 22x26 +#842 @ 845,483: 26x23 +#843 @ 614,950: 11x24 +#844 @ 831,210: 21x28 +#845 @ 133,455: 12x12 +#846 @ 20,40: 29x24 +#847 @ 642,359: 24x22 +#848 @ 689,9: 14x15 +#849 @ 694,766: 10x24 +#850 @ 613,371: 17x20 +#851 @ 399,352: 21x23 +#852 @ 24,372: 16x20 +#853 @ 150,198: 19x26 +#854 @ 539,598: 29x19 +#855 @ 122,582: 25x27 +#856 @ 164,501: 12x21 +#857 @ 158,432: 20x19 +#858 @ 98,163: 11x22 +#859 @ 696,75: 26x24 +#860 @ 413,913: 14x11 +#861 @ 853,487: 27x20 +#862 @ 293,600: 21x26 +#863 @ 927,15: 10x18 +#864 @ 597,699: 10x10 +#865 @ 357,126: 22x13 +#866 @ 758,326: 25x17 +#867 @ 195,31: 17x17 +#868 @ 620,511: 19x20 +#869 @ 62,608: 29x26 +#870 @ 211,91: 13x10 +#871 @ 900,621: 13x18 +#872 @ 184,328: 15x16 +#873 @ 222,662: 28x20 +#874 @ 489,724: 27x24 +#875 @ 585,849: 10x13 +#876 @ 559,601: 25x16 +#877 @ 385,353: 21x15 +#878 @ 881,574: 20x25 +#879 @ 542,716: 27x18 +#880 @ 62,190: 10x12 +#881 @ 832,659: 19x29 +#882 @ 909,741: 27x20 +#883 @ 859,799: 26x17 +#884 @ 301,677: 24x23 +#885 @ 529,424: 19x16 +#886 @ 289,932: 18x28 +#887 @ 705,931: 17x10 +#888 @ 208,179: 23x24 +#889 @ 369,446: 10x16 +#890 @ 410,794: 3x5 +#891 @ 265,567: 19x24 +#892 @ 471,611: 16x20 +#893 @ 821,919: 25x15 +#894 @ 757,822: 24x18 +#895 @ 285,98: 12x10 +#896 @ 737,666: 10x19 +#897 @ 974,242: 16x29 +#898 @ 383,808: 13x25 +#899 @ 266,729: 15x4 +#900 @ 726,811: 10x17 +#901 @ 654,571: 19x27 +#902 @ 691,879: 17x18 +#903 @ 40,946: 28x13 +#904 @ 482,81: 19x11 +#905 @ 806,357: 19x26 +#906 @ 421,788: 22x11 +#907 @ 843,515: 14x21 +#908 @ 488,701: 23x24 +#909 @ 880,723: 11x23 +#910 @ 167,208: 29x26 +#911 @ 334,84: 21x25 +#912 @ 319,20: 13x18 +#913 @ 977,438: 20x16 +#914 @ 15,420: 10x15 +#915 @ 633,221: 13x20 +#916 @ 881,339: 10x17 +#917 @ 54,838: 20x23 +#918 @ 369,414: 16x21 +#919 @ 505,593: 23x29 +#920 @ 354,43: 18x3 +#921 @ 284,165: 29x29 +#922 @ 925,890: 22x21 +#923 @ 615,713: 16x22 +#924 @ 487,768: 22x24 +#925 @ 4,359: 28x22 +#926 @ 923,619: 13x18 +#927 @ 576,461: 10x19 +#928 @ 31,876: 14x13 +#929 @ 588,858: 18x10 +#930 @ 602,724: 14x18 +#931 @ 79,127: 26x29 +#932 @ 335,319: 25x11 +#933 @ 313,461: 17x22 +#934 @ 186,194: 16x23 +#935 @ 278,178: 16x12 +#936 @ 458,739: 14x27 +#937 @ 557,343: 17x24 +#938 @ 187,20: 21x15 +#939 @ 445,926: 12x14 +#940 @ 816,87: 14x10 +#941 @ 857,553: 17x23 +#942 @ 818,233: 16x20 +#943 @ 697,344: 6x8 +#944 @ 967,251: 17x10 +#945 @ 878,550: 21x28 +#946 @ 585,281: 28x19 +#947 @ 393,615: 18x26 +#948 @ 151,616: 11x10 +#949 @ 347,118: 14x24 +#950 @ 203,98: 20x16 +#951 @ 415,772: 28x24 +#952 @ 723,866: 14x20 +#953 @ 787,311: 10x20 +#954 @ 575,732: 18x17 +#955 @ 288,415: 11x17 +#956 @ 403,792: 20x12 +#957 @ 307,683: 28x21 +#958 @ 955,350: 18x15 +#959 @ 873,212: 15x22 +#960 @ 963,135: 28x19 +#961 @ 184,631: 14x15 +#962 @ 46,796: 19x23 +#963 @ 19,25: 19x18 +#964 @ 241,546: 13x26 +#965 @ 43,114: 19x20 +#966 @ 7,564: 22x12 +#967 @ 598,743: 10x17 +#968 @ 83,561: 15x16 +#969 @ 873,909: 5x10 +#970 @ 808,344: 21x10 +#971 @ 73,533: 16x24 +#972 @ 188,18: 15x17 +#973 @ 568,765: 19x12 +#974 @ 835,851: 20x13 +#975 @ 603,971: 17x18 +#976 @ 964,172: 20x15 +#977 @ 179,783: 5x7 +#978 @ 610,602: 18x16 +#979 @ 935,753: 17x24 +#980 @ 200,6: 26x14 +#981 @ 330,693: 23x26 +#982 @ 352,40: 23x10 +#983 @ 855,503: 18x14 +#984 @ 954,295: 16x13 +#985 @ 661,63: 19x19 +#986 @ 843,774: 18x28 +#987 @ 897,98: 13x23 +#988 @ 433,733: 25x23 +#989 @ 893,669: 10x12 +#990 @ 733,168: 14x26 +#991 @ 575,721: 13x15 +#992 @ 728,528: 14x16 +#993 @ 438,924: 11x25 +#994 @ 928,846: 17x21 +#995 @ 583,296: 15x23 +#996 @ 854,967: 18x15 +#997 @ 61,830: 25x23 +#998 @ 708,384: 11x14 +#999 @ 10,102: 15x17 +#1000 @ 712,951: 22x22 +#1001 @ 907,716: 13x21 +#1002 @ 237,219: 26x28 +#1003 @ 536,480: 25x21 +#1004 @ 418,165: 19x29 +#1005 @ 520,802: 17x22 +#1006 @ 416,652: 24x20 +#1007 @ 909,751: 13x16 +#1008 @ 878,281: 18x29 +#1009 @ 349,171: 19x17 +#1010 @ 971,157: 28x17 +#1011 @ 714,632: 15x19 +#1012 @ 756,786: 27x17 +#1013 @ 441,417: 17x14 +#1014 @ 10,36: 13x26 +#1015 @ 903,460: 14x22 +#1016 @ 614,215: 16x26 +#1017 @ 17,664: 20x14 +#1018 @ 127,199: 20x17 +#1019 @ 693,182: 27x13 +#1020 @ 296,714: 25x19 +#1021 @ 544,881: 13x29 +#1022 @ 405,502: 12x22 +#1023 @ 557,492: 10x25 +#1024 @ 246,83: 22x22 +#1025 @ 109,738: 27x26 +#1026 @ 458,503: 14x14 +#1027 @ 69,945: 25x19 +#1028 @ 967,854: 10x10 +#1029 @ 270,848: 16x24 +#1030 @ 430,952: 13x23 +#1031 @ 352,96: 17x22 +#1032 @ 315,68: 26x11 +#1033 @ 238,533: 25x24 +#1034 @ 449,690: 28x25 +#1035 @ 703,719: 21x13 +#1036 @ 836,383: 14x11 +#1037 @ 834,363: 22x21 +#1038 @ 367,398: 28x18 +#1039 @ 714,32: 26x19 +#1040 @ 80,836: 17x16 +#1041 @ 177,781: 11x12 +#1042 @ 842,700: 28x10 +#1043 @ 591,958: 28x16 +#1044 @ 190,972: 5x18 +#1045 @ 187,970: 15x24 +#1046 @ 674,225: 21x28 +#1047 @ 944,321: 23x23 +#1048 @ 671,633: 12x25 +#1049 @ 662,579: 14x25 +#1050 @ 597,597: 25x10 +#1051 @ 642,164: 23x17 +#1052 @ 646,558: 15x14 +#1053 @ 384,598: 17x28 +#1054 @ 627,435: 16x14 +#1055 @ 839,779: 11x16 +#1056 @ 901,634: 20x28 +#1057 @ 838,212: 23x14 +#1058 @ 228,598: 14x18 +#1059 @ 730,507: 11x25 +#1060 @ 306,200: 21x22 +#1061 @ 439,156: 29x12 +#1062 @ 941,101: 20x19 +#1063 @ 412,226: 19x20 +#1064 @ 90,901: 22x22 +#1065 @ 70,172: 16x15 +#1066 @ 857,777: 19x28 +#1067 @ 826,893: 16x12 +#1068 @ 88,494: 24x18 +#1069 @ 620,803: 12x13 +#1070 @ 182,458: 29x14 +#1071 @ 349,72: 24x13 +#1072 @ 681,880: 17x22 +#1073 @ 545,550: 26x26 +#1074 @ 509,694: 14x14 +#1075 @ 203,27: 14x28 +#1076 @ 881,547: 12x26 +#1077 @ 877,983: 13x10 +#1078 @ 94,184: 10x29 +#1079 @ 846,390: 23x23 +#1080 @ 947,325: 18x21 +#1081 @ 52,775: 29x22 +#1082 @ 222,594: 15x29 +#1083 @ 549,80: 12x17 +#1084 @ 534,867: 17x17 +#1085 @ 907,46: 11x29 +#1086 @ 442,256: 11x11 +#1087 @ 933,601: 13x19 +#1088 @ 717,636: 18x25 +#1089 @ 504,56: 17x22 +#1090 @ 301,933: 17x14 +#1091 @ 518,813: 13x25 +#1092 @ 717,425: 12x25 +#1093 @ 860,978: 19x21 +#1094 @ 850,479: 12x20 +#1095 @ 522,771: 12x13 +#1096 @ 593,16: 12x10 +#1097 @ 116,297: 21x18 +#1098 @ 363,461: 22x13 +#1099 @ 735,343: 23x10 +#1100 @ 956,194: 16x20 +#1101 @ 146,178: 26x26 +#1102 @ 628,730: 11x29 +#1103 @ 131,308: 25x14 +#1104 @ 8,633: 21x29 +#1105 @ 301,188: 13x19 +#1106 @ 373,813: 23x18 +#1107 @ 122,721: 12x10 +#1108 @ 841,692: 27x11 +#1109 @ 642,155: 17x10 +#1110 @ 897,863: 17x18 +#1111 @ 849,197: 27x15 +#1112 @ 311,553: 11x28 +#1113 @ 460,814: 16x16 +#1114 @ 813,889: 15x18 +#1115 @ 422,209: 23x18 +#1116 @ 775,143: 11x24 +#1117 @ 289,400: 16x27 +#1118 @ 322,381: 21x11 +#1119 @ 932,308: 17x13 +#1120 @ 178,729: 21x21 +#1121 @ 384,802: 16x19 +#1122 @ 703,651: 11x24 +#1123 @ 664,77: 11x13 +#1124 @ 759,825: 10x12 +#1125 @ 205,185: 28x11 +#1126 @ 152,675: 5x10 +#1127 @ 233,810: 11x17 +#1128 @ 25,245: 27x17 +#1129 @ 329,6: 25x16 +#1130 @ 82,241: 23x20 +#1131 @ 743,123: 26x16 +#1132 @ 191,160: 25x28 +#1133 @ 603,729: 21x16 +#1134 @ 16,742: 3x10 +#1135 @ 582,759: 14x29 +#1136 @ 424,262: 29x22 +#1137 @ 157,607: 25x17 +#1138 @ 822,460: 29x25 +#1139 @ 949,514: 26x11 +#1140 @ 683,393: 17x27 +#1141 @ 268,849: 27x16 +#1142 @ 823,899: 21x15 +#1143 @ 703,22: 17x16 +#1144 @ 723,382: 24x25 +#1145 @ 545,758: 21x14 +#1146 @ 449,978: 25x19 +#1147 @ 386,730: 14x26 +#1148 @ 335,359: 27x11 +#1149 @ 630,3: 28x25 +#1150 @ 55,277: 23x25 +#1151 @ 56,897: 27x19 +#1152 @ 418,909: 27x12 +#1153 @ 194,828: 25x26 +#1154 @ 135,829: 12x21 +#1155 @ 186,14: 22x16 +#1156 @ 314,538: 13x22 +#1157 @ 145,163: 23x29 +#1158 @ 901,654: 18x27 +#1159 @ 180,680: 17x17 +#1160 @ 848,858: 29x27 +#1161 @ 163,295: 22x12 +#1162 @ 929,609: 20x26 +#1163 @ 658,185: 27x12 +#1164 @ 885,964: 28x17 +#1165 @ 964,339: 18x29 +#1166 @ 405,448: 23x26 +#1167 @ 144,846: 13x11 +#1168 @ 881,548: 12x15 +#1169 @ 457,705: 11x25 +#1170 @ 150,122: 22x15 +#1171 @ 86,586: 25x20 +#1172 @ 276,102: 12x11 +#1173 @ 320,904: 7x10 +#1174 @ 577,806: 22x16 +#1175 @ 805,335: 21x12 +#1176 @ 852,806: 6x10 +#1177 @ 431,904: 14x29 +#1178 @ 503,68: 24x16 +#1179 @ 742,432: 11x28 +#1180 @ 493,661: 18x27 +#1181 @ 443,561: 10x20 +#1182 @ 161,672: 26x26 +#1183 @ 50,533: 28x22 +#1184 @ 790,331: 25x20 +#1185 @ 461,496: 10x16 +#1186 @ 42,337: 11x14 +#1187 @ 249,364: 20x13 +#1188 @ 915,734: 21x23 +#1189 @ 69,143: 18x15 +#1190 @ 626,206: 22x14 +#1191 @ 299,928: 29x19 +#1192 @ 406,209: 15x24 +#1193 @ 220,90: 20x19 +#1194 @ 308,373: 19x19 +#1195 @ 497,835: 19x18 +#1196 @ 442,327: 26x12 +#1197 @ 123,920: 14x25 +#1198 @ 945,654: 16x15 +#1199 @ 78,587: 11x17 +#1200 @ 176,713: 19x17 +#1201 @ 348,848: 13x20 +#1202 @ 855,707: 21x20 +#1203 @ 765,118: 16x15 +#1204 @ 84,542: 15x20 +#1205 @ 249,755: 12x19 +#1206 @ 891,40: 21x25 +#1207 @ 689,386: 28x14 +#1208 @ 270,937: 12x25 +#1209 @ 263,841: 24x24 +#1210 @ 604,244: 22x12 +#1211 @ 251,552: 19x17 +#1212 @ 930,381: 29x13 +#1213 @ 414,523: 10x19 +#1214 @ 450,813: 17x19 +#1215 @ 709,102: 19x19 +#1216 @ 108,601: 25x29 +#1217 @ 420,780: 11x11 +#1218 @ 376,801: 25x29 +#1219 @ 44,950: 23x15 +#1220 @ 118,456: 25x17 +#1221 @ 447,42: 25x19 +#1222 @ 333,29: 19x13 +#1223 @ 598,552: 16x15 +#1224 @ 390,355: 11x9 +#1225 @ 362,293: 13x10 +#1226 @ 251,876: 23x10 +#1227 @ 559,811: 18x16 +#1228 @ 844,735: 22x26 +#1229 @ 973,204: 12x10 +#1230 @ 370,73: 16x13 +#1231 @ 124,241: 15x24 +#1232 @ 150,324: 3x5 +#1233 @ 942,359: 13x10 +#1234 @ 111,355: 17x24 +#1235 @ 157,275: 19x17 +#1236 @ 192,440: 14x24 +#1237 @ 265,191: 28x16 +#1238 @ 607,426: 23x28 +#1239 @ 782,718: 13x24 +#1240 @ 90,138: 24x18 +#1241 @ 861,670: 24x22 +#1242 @ 429,446: 15x15 +#1243 @ 620,971: 17x21 +#1244 @ 778,811: 22x17 +#1245 @ 175,164: 13x18 +#1246 @ 448,141: 20x13 +#1247 @ 578,848: 13x24 +#1248 @ 61,392: 25x19 +#1249 @ 217,811: 28x28 +#1250 @ 548,186: 11x7 +#1251 @ 725,652: 16x27 +#1252 @ 448,719: 24x28 +#1253 @ 124,254: 29x10 +#1254 @ 334,224: 21x19 +#1255 @ 466,506: 22x15 +#1256 @ 266,598: 12x21 +#1257 @ 744,42: 28x25 +#1258 @ 700,645: 23x13 +#1259 @ 716,31: 17x29 +#1260 @ 974,418: 14x24 +#1261 @ 476,333: 24x19 +#1262 @ 158,148: 29x26 +#1263 @ 685,497: 29x19 +#1264 @ 876,672: 22x12 +#1265 @ 963,100: 27x19 +#1266 @ 725,583: 26x11 +#1267 @ 266,954: 13x11 +#1268 @ 140,620: 27x15 +#1269 @ 465,317: 18x20 +#1270 @ 942,85: 16x22 +#1271 @ 774,594: 18x10 +#1272 @ 115,370: 10x26 +#1273 @ 680,178: 24x11 +#1274 @ 589,387: 29x13 +#1275 @ 545,585: 26x26 +#1276 @ 416,310: 10x28 +#1277 @ 226,100: 10x25 +#1278 @ 444,500: 20x13 +#1279 @ 390,461: 10x26 +#1280 @ 941,891: 22x14 +#1281 @ 978,278: 11x26 +#1282 @ 183,317: 15x13 +#1283 @ 930,361: 13x24 +#1284 @ 134,204: 12x17 +#1285 @ 710,389: 6x5 +#1286 @ 197,501: 22x13 +#1287 @ 284,773: 28x24 +#1288 @ 130,449: 22x26 +#1289 @ 310,489: 14x27 +#1290 @ 528,540: 20x11 +#1291 @ 958,541: 25x11 +#1292 @ 705,734: 8x13 +#1293 @ 344,745: 26x23 +#1294 @ 556,603: 20x25 +#1295 @ 335,781: 23x19 +#1296 @ 887,584: 26x12 +#1297 @ 760,386: 10x19 +#1298 @ 486,627: 22x23 +#1299 @ 180,820: 22x15 +#1300 @ 141,206: 11x15 +#1301 @ 833,914: 16x25 +#1302 @ 536,596: 17x21 +#1303 @ 18,870: 25x16 +#1304 @ 550,445: 13x24 +#1305 @ 163,257: 22x24 +#1306 @ 932,665: 19x11 +#1307 @ 42,472: 13x14 \ No newline at end of file diff --git a/src/main/resources/2018/day4.txt b/src/main/resources/2018/day4.txt new file mode 100644 index 00000000..e708e748 --- /dev/null +++ b/src/main/resources/2018/day4.txt @@ -0,0 +1,1267 @@ +[1518-09-14 00:54] wakes up +[1518-04-15 23:58] Guard #373 begins shift +[1518-07-25 00:53] wakes up +[1518-07-04 00:45] wakes up +[1518-07-26 00:51] wakes up +[1518-06-21 00:43] falls asleep +[1518-04-24 00:57] falls asleep +[1518-11-20 00:52] wakes up +[1518-04-20 00:39] falls asleep +[1518-05-31 00:48] wakes up +[1518-09-03 00:16] falls asleep +[1518-03-26 23:50] Guard #173 begins shift +[1518-03-14 00:34] falls asleep +[1518-04-09 00:20] wakes up +[1518-09-05 00:40] falls asleep +[1518-06-12 23:59] Guard #2339 begins shift +[1518-05-09 23:46] Guard #373 begins shift +[1518-08-08 00:59] wakes up +[1518-06-06 00:08] falls asleep +[1518-09-10 00:58] wakes up +[1518-10-08 00:02] Guard #751 begins shift +[1518-04-23 00:49] wakes up +[1518-10-13 23:59] Guard #2339 begins shift +[1518-10-14 00:28] falls asleep +[1518-06-27 00:21] falls asleep +[1518-04-11 00:49] wakes up +[1518-02-06 00:46] falls asleep +[1518-08-16 00:14] wakes up +[1518-11-19 00:34] falls asleep +[1518-03-05 00:12] falls asleep +[1518-05-24 23:57] Guard #523 begins shift +[1518-06-22 00:42] wakes up +[1518-02-14 23:57] Guard #3229 begins shift +[1518-09-10 00:48] falls asleep +[1518-10-24 00:09] falls asleep +[1518-04-23 00:45] falls asleep +[1518-07-05 00:30] falls asleep +[1518-05-10 00:54] wakes up +[1518-10-24 00:57] wakes up +[1518-02-09 00:04] Guard #173 begins shift +[1518-05-29 00:51] falls asleep +[1518-02-14 00:41] falls asleep +[1518-04-08 00:40] wakes up +[1518-09-06 00:33] wakes up +[1518-02-07 23:57] Guard #2339 begins shift +[1518-05-20 00:42] falls asleep +[1518-10-03 00:01] falls asleep +[1518-10-28 00:03] Guard #1031 begins shift +[1518-02-18 00:37] wakes up +[1518-01-16 00:55] wakes up +[1518-08-03 00:04] Guard #373 begins shift +[1518-08-28 23:48] Guard #2857 begins shift +[1518-03-12 00:00] Guard #431 begins shift +[1518-05-20 00:32] wakes up +[1518-05-24 00:42] falls asleep +[1518-01-29 00:54] wakes up +[1518-07-20 00:24] wakes up +[1518-06-20 00:04] Guard #173 begins shift +[1518-08-05 00:51] wakes up +[1518-10-29 00:34] falls asleep +[1518-10-13 00:12] falls asleep +[1518-01-24 00:58] wakes up +[1518-02-21 23:49] Guard #419 begins shift +[1518-10-22 00:49] wakes up +[1518-06-15 23:52] Guard #1627 begins shift +[1518-06-11 00:57] wakes up +[1518-02-28 00:25] wakes up +[1518-03-01 00:36] wakes up +[1518-08-02 00:10] falls asleep +[1518-10-14 00:54] wakes up +[1518-08-29 23:59] Guard #3229 begins shift +[1518-11-15 00:19] wakes up +[1518-09-24 00:30] wakes up +[1518-11-01 23:59] Guard #1031 begins shift +[1518-06-18 00:13] falls asleep +[1518-06-25 00:59] wakes up +[1518-04-09 00:01] falls asleep +[1518-05-22 00:02] Guard #2857 begins shift +[1518-05-13 00:57] wakes up +[1518-06-15 00:41] falls asleep +[1518-02-25 00:53] wakes up +[1518-10-26 00:32] wakes up +[1518-06-08 00:12] falls asleep +[1518-03-06 00:34] wakes up +[1518-04-04 00:38] falls asleep +[1518-05-29 00:09] falls asleep +[1518-10-02 23:48] Guard #431 begins shift +[1518-04-10 00:49] falls asleep +[1518-05-06 00:16] falls asleep +[1518-10-10 00:00] falls asleep +[1518-01-20 00:57] wakes up +[1518-08-10 00:03] Guard #419 begins shift +[1518-02-05 00:58] wakes up +[1518-04-30 00:44] wakes up +[1518-08-10 00:11] falls asleep +[1518-05-16 00:00] Guard #863 begins shift +[1518-11-23 00:42] wakes up +[1518-09-11 00:34] falls asleep +[1518-07-22 00:03] Guard #2857 begins shift +[1518-04-15 00:36] wakes up +[1518-06-09 23:57] Guard #3209 begins shift +[1518-07-02 00:39] wakes up +[1518-01-15 00:50] wakes up +[1518-11-08 00:51] wakes up +[1518-04-16 00:44] wakes up +[1518-05-19 23:56] Guard #431 begins shift +[1518-10-01 00:10] falls asleep +[1518-03-22 00:02] Guard #751 begins shift +[1518-07-12 00:58] wakes up +[1518-11-11 00:12] falls asleep +[1518-10-02 00:48] wakes up +[1518-04-05 00:24] wakes up +[1518-02-10 00:35] wakes up +[1518-07-24 00:53] wakes up +[1518-05-18 00:57] wakes up +[1518-01-20 00:21] falls asleep +[1518-06-29 00:43] wakes up +[1518-03-15 00:40] falls asleep +[1518-07-08 00:32] wakes up +[1518-05-30 00:43] wakes up +[1518-02-02 00:25] falls asleep +[1518-02-05 00:25] falls asleep +[1518-05-11 00:31] falls asleep +[1518-02-22 00:59] wakes up +[1518-08-16 00:31] falls asleep +[1518-02-10 00:58] wakes up +[1518-07-11 00:56] wakes up +[1518-09-01 00:55] falls asleep +[1518-09-16 00:36] falls asleep +[1518-10-04 00:17] falls asleep +[1518-04-06 23:57] Guard #2857 begins shift +[1518-11-19 00:01] falls asleep +[1518-11-16 00:32] wakes up +[1518-10-08 00:30] falls asleep +[1518-02-10 00:06] falls asleep +[1518-07-08 00:36] falls asleep +[1518-04-19 00:00] Guard #3229 begins shift +[1518-08-19 00:52] wakes up +[1518-07-21 00:57] wakes up +[1518-05-12 00:00] Guard #3187 begins shift +[1518-05-23 00:47] wakes up +[1518-11-02 00:46] wakes up +[1518-11-04 00:24] falls asleep +[1518-10-20 00:21] falls asleep +[1518-05-19 00:54] wakes up +[1518-07-07 00:00] Guard #1637 begins shift +[1518-10-08 00:56] wakes up +[1518-08-12 00:52] wakes up +[1518-08-03 00:28] falls asleep +[1518-04-01 00:03] Guard #1627 begins shift +[1518-08-26 00:30] falls asleep +[1518-04-26 00:43] wakes up +[1518-05-27 00:51] falls asleep +[1518-04-10 23:56] Guard #2143 begins shift +[1518-02-15 00:14] falls asleep +[1518-06-02 00:52] wakes up +[1518-05-28 00:29] falls asleep +[1518-10-12 00:00] Guard #2143 begins shift +[1518-11-21 23:58] Guard #2339 begins shift +[1518-10-25 00:32] falls asleep +[1518-09-05 00:00] Guard #3229 begins shift +[1518-10-08 00:47] falls asleep +[1518-03-09 00:40] falls asleep +[1518-04-26 00:35] wakes up +[1518-05-17 00:02] Guard #173 begins shift +[1518-08-13 23:59] Guard #431 begins shift +[1518-10-23 00:38] falls asleep +[1518-03-20 00:49] falls asleep +[1518-06-17 00:38] falls asleep +[1518-03-31 00:57] wakes up +[1518-04-01 00:57] wakes up +[1518-08-31 00:45] falls asleep +[1518-04-04 00:15] wakes up +[1518-04-18 00:48] falls asleep +[1518-03-10 00:13] falls asleep +[1518-04-26 00:41] falls asleep +[1518-10-04 00:02] Guard #521 begins shift +[1518-09-16 00:00] Guard #863 begins shift +[1518-07-03 00:58] wakes up +[1518-05-22 00:49] wakes up +[1518-04-15 00:49] falls asleep +[1518-05-08 00:23] falls asleep +[1518-10-15 23:59] Guard #863 begins shift +[1518-07-18 00:20] wakes up +[1518-05-23 00:27] falls asleep +[1518-06-03 00:38] falls asleep +[1518-11-15 00:06] falls asleep +[1518-03-12 00:50] wakes up +[1518-11-23 00:56] wakes up +[1518-03-02 00:29] falls asleep +[1518-03-07 00:33] falls asleep +[1518-02-28 00:46] wakes up +[1518-06-16 00:37] falls asleep +[1518-07-28 23:58] Guard #1597 begins shift +[1518-05-21 00:52] wakes up +[1518-09-30 00:55] wakes up +[1518-04-16 00:57] wakes up +[1518-08-02 00:22] wakes up +[1518-06-28 00:00] falls asleep +[1518-05-08 00:11] wakes up +[1518-04-02 00:02] falls asleep +[1518-01-17 23:51] Guard #3187 begins shift +[1518-03-01 00:59] wakes up +[1518-01-26 00:51] falls asleep +[1518-09-27 00:23] falls asleep +[1518-09-09 00:31] falls asleep +[1518-02-02 00:56] wakes up +[1518-03-09 00:55] falls asleep +[1518-02-13 00:02] Guard #2143 begins shift +[1518-08-09 00:43] wakes up +[1518-04-29 00:29] falls asleep +[1518-09-25 00:14] falls asleep +[1518-02-08 00:29] falls asleep +[1518-04-19 00:40] wakes up +[1518-10-25 00:59] wakes up +[1518-06-26 00:13] falls asleep +[1518-08-14 23:59] Guard #521 begins shift +[1518-03-04 00:54] falls asleep +[1518-10-17 00:52] wakes up +[1518-08-23 00:30] wakes up +[1518-08-13 00:07] falls asleep +[1518-02-05 23:56] Guard #1627 begins shift +[1518-06-19 00:02] Guard #173 begins shift +[1518-07-05 00:48] wakes up +[1518-10-26 00:47] wakes up +[1518-04-20 00:55] wakes up +[1518-10-25 00:50] wakes up +[1518-07-02 00:12] falls asleep +[1518-02-14 00:02] Guard #2539 begins shift +[1518-02-21 00:34] wakes up +[1518-10-14 23:59] Guard #3209 begins shift +[1518-03-27 00:27] falls asleep +[1518-08-17 00:13] falls asleep +[1518-07-31 00:00] falls asleep +[1518-05-30 00:35] falls asleep +[1518-10-04 00:55] wakes up +[1518-07-18 00:56] wakes up +[1518-07-19 23:50] Guard #3209 begins shift +[1518-03-16 00:39] wakes up +[1518-07-18 00:49] falls asleep +[1518-09-20 00:16] falls asleep +[1518-03-19 00:50] wakes up +[1518-10-29 00:03] Guard #419 begins shift +[1518-08-09 00:06] falls asleep +[1518-04-24 00:58] wakes up +[1518-06-01 00:24] wakes up +[1518-04-05 00:19] falls asleep +[1518-02-17 00:53] wakes up +[1518-11-17 23:57] Guard #1597 begins shift +[1518-03-07 00:50] wakes up +[1518-06-26 00:00] Guard #3187 begins shift +[1518-10-16 00:51] falls asleep +[1518-07-09 00:55] wakes up +[1518-09-05 00:36] wakes up +[1518-09-21 23:57] Guard #173 begins shift +[1518-06-30 23:48] Guard #2143 begins shift +[1518-03-24 00:15] wakes up +[1518-04-17 23:59] Guard #2339 begins shift +[1518-09-11 00:04] Guard #2143 begins shift +[1518-04-08 23:50] Guard #173 begins shift +[1518-01-23 00:07] falls asleep +[1518-04-01 00:48] wakes up +[1518-08-11 00:44] wakes up +[1518-01-26 00:20] falls asleep +[1518-07-13 00:02] falls asleep +[1518-04-14 00:02] falls asleep +[1518-11-12 00:44] wakes up +[1518-06-06 00:35] falls asleep +[1518-03-28 00:00] Guard #419 begins shift +[1518-09-29 23:56] Guard #1597 begins shift +[1518-09-09 00:25] wakes up +[1518-07-11 00:01] Guard #2339 begins shift +[1518-09-10 00:43] wakes up +[1518-08-07 00:28] falls asleep +[1518-10-23 00:35] wakes up +[1518-10-31 00:04] Guard #3187 begins shift +[1518-08-18 00:44] falls asleep +[1518-03-25 00:48] falls asleep +[1518-08-03 00:47] wakes up +[1518-06-20 00:34] falls asleep +[1518-03-13 00:01] falls asleep +[1518-06-10 00:27] wakes up +[1518-05-26 00:31] falls asleep +[1518-11-10 00:58] wakes up +[1518-07-01 00:58] wakes up +[1518-08-11 00:57] wakes up +[1518-10-16 00:46] falls asleep +[1518-03-14 00:36] wakes up +[1518-09-27 23:56] Guard #3187 begins shift +[1518-06-30 00:46] falls asleep +[1518-03-10 00:02] Guard #863 begins shift +[1518-04-04 00:03] Guard #523 begins shift +[1518-09-14 00:01] Guard #3229 begins shift +[1518-02-08 00:17] falls asleep +[1518-03-23 00:39] falls asleep +[1518-09-28 00:19] falls asleep +[1518-10-04 23:56] Guard #521 begins shift +[1518-02-16 00:57] wakes up +[1518-04-27 23:59] Guard #373 begins shift +[1518-02-19 00:31] falls asleep +[1518-11-23 00:10] falls asleep +[1518-04-08 00:04] Guard #2339 begins shift +[1518-06-01 00:02] Guard #1031 begins shift +[1518-09-19 00:23] falls asleep +[1518-07-14 00:30] wakes up +[1518-11-01 00:45] wakes up +[1518-03-26 00:27] falls asleep +[1518-04-23 00:02] Guard #521 begins shift +[1518-04-28 00:26] falls asleep +[1518-03-07 00:27] wakes up +[1518-09-23 00:57] wakes up +[1518-04-01 00:12] falls asleep +[1518-11-11 00:01] Guard #3209 begins shift +[1518-08-08 00:09] falls asleep +[1518-11-09 00:04] Guard #523 begins shift +[1518-11-19 00:58] wakes up +[1518-03-16 00:03] falls asleep +[1518-04-22 00:04] falls asleep +[1518-10-11 00:00] Guard #2143 begins shift +[1518-09-27 00:52] wakes up +[1518-05-07 00:00] falls asleep +[1518-02-11 00:53] wakes up +[1518-09-24 00:57] wakes up +[1518-08-24 00:52] wakes up +[1518-09-04 00:18] falls asleep +[1518-07-14 00:28] falls asleep +[1518-09-15 00:25] falls asleep +[1518-11-23 00:01] Guard #2857 begins shift +[1518-08-08 00:46] falls asleep +[1518-08-04 00:58] wakes up +[1518-02-22 00:01] falls asleep +[1518-03-25 00:36] wakes up +[1518-03-02 00:55] wakes up +[1518-09-23 23:46] Guard #2143 begins shift +[1518-08-28 00:35] falls asleep +[1518-04-15 00:06] falls asleep +[1518-07-24 00:32] wakes up +[1518-07-12 00:57] falls asleep +[1518-11-04 00:00] Guard #3229 begins shift +[1518-02-08 00:23] wakes up +[1518-04-12 00:46] wakes up +[1518-09-04 00:54] wakes up +[1518-02-21 00:11] falls asleep +[1518-10-30 00:02] Guard #2339 begins shift +[1518-07-04 00:35] falls asleep +[1518-04-15 00:00] Guard #1597 begins shift +[1518-08-18 00:23] falls asleep +[1518-07-29 00:51] wakes up +[1518-06-06 00:21] wakes up +[1518-06-17 00:41] wakes up +[1518-04-19 00:28] falls asleep +[1518-02-10 00:47] wakes up +[1518-08-28 00:32] wakes up +[1518-03-15 00:27] falls asleep +[1518-05-11 00:00] Guard #1031 begins shift +[1518-08-04 00:11] falls asleep +[1518-05-03 00:02] Guard #3209 begins shift +[1518-07-20 00:39] falls asleep +[1518-05-09 00:52] wakes up +[1518-06-29 00:23] wakes up +[1518-05-26 23:47] Guard #863 begins shift +[1518-07-28 00:58] wakes up +[1518-11-10 00:24] wakes up +[1518-06-24 23:57] Guard #863 begins shift +[1518-03-23 00:04] falls asleep +[1518-03-06 00:49] falls asleep +[1518-10-14 00:49] wakes up +[1518-07-04 00:36] wakes up +[1518-02-05 00:33] falls asleep +[1518-01-22 00:01] Guard #2339 begins shift +[1518-11-14 00:48] wakes up +[1518-05-17 00:57] wakes up +[1518-08-23 00:18] falls asleep +[1518-11-12 00:14] falls asleep +[1518-03-18 00:44] wakes up +[1518-04-14 00:17] wakes up +[1518-06-04 00:58] wakes up +[1518-11-07 00:55] wakes up +[1518-05-19 00:23] falls asleep +[1518-02-13 00:47] falls asleep +[1518-09-18 23:59] Guard #419 begins shift +[1518-09-25 23:56] Guard #419 begins shift +[1518-07-19 00:18] falls asleep +[1518-03-24 23:48] Guard #1597 begins shift +[1518-08-21 00:18] falls asleep +[1518-07-27 00:44] wakes up +[1518-11-04 00:36] wakes up +[1518-01-13 23:56] Guard #751 begins shift +[1518-01-18 00:32] wakes up +[1518-09-17 23:57] Guard #521 begins shift +[1518-11-03 00:47] wakes up +[1518-10-09 00:58] wakes up +[1518-07-15 00:01] Guard #419 begins shift +[1518-09-17 00:10] falls asleep +[1518-06-24 00:20] falls asleep +[1518-03-23 00:36] wakes up +[1518-01-30 00:55] wakes up +[1518-01-26 00:45] wakes up +[1518-02-03 00:33] wakes up +[1518-02-02 23:47] Guard #3229 begins shift +[1518-11-05 23:56] Guard #523 begins shift +[1518-06-26 00:22] wakes up +[1518-01-28 00:56] wakes up +[1518-05-27 00:05] falls asleep +[1518-11-16 00:14] falls asleep +[1518-08-24 00:22] wakes up +[1518-07-16 00:57] wakes up +[1518-04-10 00:54] wakes up +[1518-03-13 00:43] wakes up +[1518-09-08 00:00] Guard #173 begins shift +[1518-09-26 00:45] wakes up +[1518-07-27 00:18] falls asleep +[1518-07-22 00:59] wakes up +[1518-06-11 00:04] Guard #2339 begins shift +[1518-07-05 00:01] Guard #173 begins shift +[1518-03-12 00:33] wakes up +[1518-04-03 00:20] falls asleep +[1518-11-05 00:42] falls asleep +[1518-11-22 00:22] falls asleep +[1518-06-26 00:41] wakes up +[1518-07-01 00:34] wakes up +[1518-08-08 23:57] Guard #3209 begins shift +[1518-10-07 00:22] wakes up +[1518-04-17 00:43] falls asleep +[1518-08-02 00:36] falls asleep +[1518-06-05 00:46] falls asleep +[1518-03-06 00:52] wakes up +[1518-02-10 00:53] falls asleep +[1518-05-10 00:05] falls asleep +[1518-02-18 00:47] falls asleep +[1518-05-31 00:00] Guard #3187 begins shift +[1518-07-23 00:54] wakes up +[1518-08-27 00:53] wakes up +[1518-10-10 00:34] wakes up +[1518-10-09 00:02] Guard #863 begins shift +[1518-11-15 23:59] Guard #3209 begins shift +[1518-08-25 00:39] falls asleep +[1518-01-21 00:56] wakes up +[1518-06-07 23:57] Guard #3209 begins shift +[1518-08-09 00:46] falls asleep +[1518-06-06 00:01] Guard #1637 begins shift +[1518-05-18 00:26] falls asleep +[1518-06-02 23:53] Guard #431 begins shift +[1518-09-30 00:15] falls asleep +[1518-07-02 00:03] Guard #2857 begins shift +[1518-02-24 00:07] falls asleep +[1518-08-19 00:01] Guard #1637 begins shift +[1518-01-15 00:27] falls asleep +[1518-05-16 00:51] falls asleep +[1518-07-09 00:54] falls asleep +[1518-07-03 00:35] wakes up +[1518-10-20 00:31] wakes up +[1518-09-04 00:27] wakes up +[1518-10-05 23:58] Guard #1597 begins shift +[1518-02-12 00:59] wakes up +[1518-06-22 00:01] Guard #3209 begins shift +[1518-01-31 00:34] falls asleep +[1518-05-19 00:32] wakes up +[1518-01-27 00:44] wakes up +[1518-05-23 00:08] wakes up +[1518-02-27 00:18] wakes up +[1518-06-03 23:56] Guard #373 begins shift +[1518-03-22 00:11] falls asleep +[1518-04-30 00:31] falls asleep +[1518-09-09 23:59] Guard #1597 begins shift +[1518-05-26 00:01] Guard #431 begins shift +[1518-01-30 23:59] Guard #2143 begins shift +[1518-02-27 23:56] Guard #751 begins shift +[1518-07-03 00:01] Guard #373 begins shift +[1518-04-05 00:46] falls asleep +[1518-10-27 00:02] Guard #991 begins shift +[1518-10-17 00:01] Guard #3229 begins shift +[1518-08-27 00:47] falls asleep +[1518-10-12 00:43] falls asleep +[1518-09-20 00:53] wakes up +[1518-11-22 00:37] wakes up +[1518-04-04 00:08] falls asleep +[1518-09-07 00:49] wakes up +[1518-06-08 00:27] wakes up +[1518-06-30 00:03] Guard #523 begins shift +[1518-04-21 00:46] falls asleep +[1518-05-12 00:15] wakes up +[1518-07-26 00:18] falls asleep +[1518-10-15 00:15] falls asleep +[1518-02-14 00:48] wakes up +[1518-03-04 00:57] wakes up +[1518-06-21 00:54] wakes up +[1518-08-23 23:56] Guard #523 begins shift +[1518-07-26 00:00] Guard #1627 begins shift +[1518-05-24 00:44] wakes up +[1518-04-05 00:01] Guard #2539 begins shift +[1518-02-06 00:52] falls asleep +[1518-04-07 00:55] falls asleep +[1518-08-18 00:53] wakes up +[1518-09-22 00:34] falls asleep +[1518-04-25 00:01] Guard #2339 begins shift +[1518-11-21 00:54] wakes up +[1518-01-23 00:00] Guard #1627 begins shift +[1518-11-13 23:58] Guard #173 begins shift +[1518-10-11 00:41] wakes up +[1518-09-02 00:46] falls asleep +[1518-05-07 00:49] wakes up +[1518-01-24 00:00] Guard #373 begins shift +[1518-03-12 00:28] falls asleep +[1518-01-14 00:57] wakes up +[1518-04-24 00:53] wakes up +[1518-07-15 23:59] Guard #1627 begins shift +[1518-03-03 00:58] wakes up +[1518-11-04 23:58] Guard #523 begins shift +[1518-03-14 00:04] falls asleep +[1518-05-02 00:00] Guard #2339 begins shift +[1518-10-13 00:03] Guard #173 begins shift +[1518-01-30 00:09] falls asleep +[1518-09-12 00:07] falls asleep +[1518-06-29 00:21] falls asleep +[1518-02-14 00:16] falls asleep +[1518-05-25 00:36] falls asleep +[1518-08-05 00:42] falls asleep +[1518-07-10 00:44] wakes up +[1518-09-16 00:54] falls asleep +[1518-02-01 00:59] wakes up +[1518-02-28 00:32] falls asleep +[1518-09-26 23:59] Guard #373 begins shift +[1518-09-05 00:18] wakes up +[1518-03-12 23:52] Guard #373 begins shift +[1518-10-10 00:55] wakes up +[1518-09-16 00:49] wakes up +[1518-02-06 00:49] wakes up +[1518-05-02 00:38] falls asleep +[1518-03-18 00:37] falls asleep +[1518-02-24 00:56] wakes up +[1518-08-14 00:27] falls asleep +[1518-08-31 00:55] wakes up +[1518-05-29 23:57] Guard #419 begins shift +[1518-11-02 00:12] falls asleep +[1518-09-18 00:26] falls asleep +[1518-09-05 00:52] falls asleep +[1518-02-18 00:54] wakes up +[1518-05-16 00:17] falls asleep +[1518-03-03 00:40] wakes up +[1518-03-27 00:06] wakes up +[1518-05-13 00:44] falls asleep +[1518-09-12 00:30] wakes up +[1518-02-13 00:58] wakes up +[1518-08-20 00:43] falls asleep +[1518-06-10 00:08] falls asleep +[1518-07-12 23:46] Guard #373 begins shift +[1518-07-30 00:08] falls asleep +[1518-03-01 00:08] falls asleep +[1518-06-28 23:59] Guard #173 begins shift +[1518-04-21 00:37] falls asleep +[1518-03-28 00:33] falls asleep +[1518-07-13 00:55] falls asleep +[1518-08-12 00:27] falls asleep +[1518-07-05 23:48] Guard #431 begins shift +[1518-10-06 23:57] Guard #3187 begins shift +[1518-06-21 00:40] wakes up +[1518-03-28 00:48] wakes up +[1518-03-20 00:03] Guard #431 begins shift +[1518-08-02 00:00] Guard #1627 begins shift +[1518-02-11 00:50] falls asleep +[1518-03-08 00:18] falls asleep +[1518-09-09 00:59] wakes up +[1518-10-07 00:57] wakes up +[1518-10-21 00:58] wakes up +[1518-07-20 00:03] falls asleep +[1518-09-29 00:53] wakes up +[1518-02-20 00:01] Guard #601 begins shift +[1518-05-24 00:03] falls asleep +[1518-09-06 23:59] Guard #523 begins shift +[1518-06-30 00:55] wakes up +[1518-07-09 23:59] Guard #1627 begins shift +[1518-11-18 00:36] falls asleep +[1518-05-14 00:59] wakes up +[1518-02-15 23:52] Guard #173 begins shift +[1518-04-25 23:50] Guard #1637 begins shift +[1518-02-22 23:58] Guard #863 begins shift +[1518-07-27 23:46] Guard #1597 begins shift +[1518-07-01 00:00] falls asleep +[1518-01-26 00:52] wakes up +[1518-06-21 00:37] falls asleep +[1518-01-18 00:04] falls asleep +[1518-06-16 00:50] wakes up +[1518-08-20 00:53] wakes up +[1518-01-20 00:00] Guard #2339 begins shift +[1518-03-19 00:47] falls asleep +[1518-09-05 00:25] falls asleep +[1518-04-14 00:40] falls asleep +[1518-07-08 00:48] wakes up +[1518-10-31 00:51] wakes up +[1518-03-12 00:42] falls asleep +[1518-08-17 00:57] wakes up +[1518-03-31 00:21] falls asleep +[1518-04-13 00:00] falls asleep +[1518-01-17 00:17] falls asleep +[1518-11-07 00:00] falls asleep +[1518-07-24 00:00] Guard #863 begins shift +[1518-10-06 00:28] falls asleep +[1518-05-23 00:05] falls asleep +[1518-03-29 23:57] Guard #3209 begins shift +[1518-09-30 23:56] Guard #419 begins shift +[1518-01-27 00:32] falls asleep +[1518-01-13 00:21] wakes up +[1518-04-13 23:47] Guard #3187 begins shift +[1518-06-07 00:02] Guard #3187 begins shift +[1518-02-18 00:11] falls asleep +[1518-07-29 00:16] falls asleep +[1518-08-17 00:52] wakes up +[1518-10-05 00:11] falls asleep +[1518-02-05 00:38] wakes up +[1518-05-13 00:36] falls asleep +[1518-10-24 00:44] wakes up +[1518-07-25 00:00] Guard #373 begins shift +[1518-02-13 00:54] wakes up +[1518-04-05 00:57] wakes up +[1518-07-09 00:02] Guard #373 begins shift +[1518-06-23 00:45] falls asleep +[1518-03-13 23:54] Guard #1637 begins shift +[1518-11-06 23:53] Guard #1637 begins shift +[1518-02-26 23:58] Guard #419 begins shift +[1518-05-18 00:48] falls asleep +[1518-02-06 23:58] Guard #2857 begins shift +[1518-01-20 00:56] falls asleep +[1518-05-08 00:58] wakes up +[1518-10-25 00:56] falls asleep +[1518-02-01 00:01] Guard #2857 begins shift +[1518-11-08 00:01] Guard #521 begins shift +[1518-02-05 00:53] wakes up +[1518-10-08 00:42] wakes up +[1518-08-24 23:58] Guard #521 begins shift +[1518-01-24 00:29] falls asleep +[1518-03-23 23:54] Guard #523 begins shift +[1518-09-08 00:20] wakes up +[1518-10-22 00:54] falls asleep +[1518-09-18 00:54] wakes up +[1518-05-09 00:47] wakes up +[1518-09-28 00:54] falls asleep +[1518-07-12 00:51] wakes up +[1518-07-30 00:00] Guard #173 begins shift +[1518-11-20 23:50] Guard #751 begins shift +[1518-10-19 00:25] falls asleep +[1518-07-24 00:08] falls asleep +[1518-03-03 00:14] falls asleep +[1518-10-16 00:47] wakes up +[1518-10-10 00:47] falls asleep +[1518-01-12 23:57] Guard #3209 begins shift +[1518-04-06 00:01] Guard #419 begins shift +[1518-06-05 00:04] Guard #2539 begins shift +[1518-07-14 00:59] wakes up +[1518-05-26 00:45] falls asleep +[1518-09-12 00:01] Guard #1597 begins shift +[1518-08-11 00:03] Guard #3209 begins shift +[1518-10-07 00:20] falls asleep +[1518-10-28 00:35] wakes up +[1518-10-04 00:14] wakes up +[1518-03-15 23:47] Guard #431 begins shift +[1518-05-01 00:11] falls asleep +[1518-05-28 00:36] falls asleep +[1518-04-02 00:39] wakes up +[1518-10-20 23:57] Guard #1637 begins shift +[1518-10-30 00:44] wakes up +[1518-09-24 00:05] falls asleep +[1518-11-06 00:49] wakes up +[1518-10-22 00:16] falls asleep +[1518-06-23 00:57] wakes up +[1518-07-09 00:43] wakes up +[1518-02-03 00:03] falls asleep +[1518-02-01 23:57] Guard #3229 begins shift +[1518-06-04 00:40] falls asleep +[1518-09-19 00:31] wakes up +[1518-05-19 00:03] Guard #2539 begins shift +[1518-02-07 00:12] falls asleep +[1518-09-26 00:33] falls asleep +[1518-05-26 00:58] wakes up +[1518-08-29 00:38] wakes up +[1518-09-12 23:50] Guard #521 begins shift +[1518-09-15 00:34] wakes up +[1518-08-22 00:47] wakes up +[1518-03-25 00:01] falls asleep +[1518-10-04 00:45] wakes up +[1518-11-01 00:02] Guard #373 begins shift +[1518-03-30 00:56] wakes up +[1518-01-26 00:38] wakes up +[1518-03-17 00:59] wakes up +[1518-03-29 00:49] wakes up +[1518-03-26 00:41] falls asleep +[1518-01-29 00:23] falls asleep +[1518-03-11 00:41] falls asleep +[1518-04-11 23:57] Guard #2857 begins shift +[1518-09-19 00:56] falls asleep +[1518-03-22 00:46] wakes up +[1518-07-16 00:38] falls asleep +[1518-03-08 00:00] Guard #1597 begins shift +[1518-06-07 00:18] falls asleep +[1518-06-01 00:45] wakes up +[1518-09-24 23:58] Guard #1627 begins shift +[1518-05-21 00:35] falls asleep +[1518-01-28 00:50] falls asleep +[1518-01-25 00:19] falls asleep +[1518-10-16 00:59] wakes up +[1518-03-02 00:00] Guard #1031 begins shift +[1518-07-30 00:35] wakes up +[1518-11-13 00:04] Guard #419 begins shift +[1518-03-09 00:52] wakes up +[1518-06-12 00:59] wakes up +[1518-03-15 00:00] Guard #2339 begins shift +[1518-09-06 00:00] Guard #1637 begins shift +[1518-03-10 23:50] Guard #863 begins shift +[1518-02-15 00:36] wakes up +[1518-04-21 00:59] wakes up +[1518-03-11 00:33] wakes up +[1518-09-23 00:14] falls asleep +[1518-09-09 00:49] wakes up +[1518-10-13 00:32] wakes up +[1518-10-14 00:52] falls asleep +[1518-02-12 00:51] falls asleep +[1518-08-05 00:02] Guard #751 begins shift +[1518-09-03 00:52] wakes up +[1518-04-12 00:55] wakes up +[1518-06-15 00:20] wakes up +[1518-08-07 23:56] Guard #3229 begins shift +[1518-04-30 00:55] falls asleep +[1518-04-02 00:36] falls asleep +[1518-05-16 00:52] wakes up +[1518-09-25 00:55] wakes up +[1518-03-29 00:00] Guard #431 begins shift +[1518-02-18 00:00] Guard #373 begins shift +[1518-10-03 00:45] falls asleep +[1518-05-25 00:19] falls asleep +[1518-10-21 00:44] falls asleep +[1518-11-18 00:58] wakes up +[1518-09-20 00:00] Guard #3209 begins shift +[1518-11-20 00:00] Guard #1627 begins shift +[1518-09-16 00:59] wakes up +[1518-05-04 00:29] falls asleep +[1518-04-18 00:41] wakes up +[1518-06-17 00:08] falls asleep +[1518-09-22 00:40] wakes up +[1518-10-23 23:58] Guard #1627 begins shift +[1518-01-21 00:54] falls asleep +[1518-02-09 23:58] Guard #3229 begins shift +[1518-01-17 00:03] Guard #523 begins shift +[1518-04-16 00:39] falls asleep +[1518-09-09 00:54] falls asleep +[1518-09-08 00:56] wakes up +[1518-06-07 00:19] wakes up +[1518-06-22 00:06] falls asleep +[1518-02-24 00:47] wakes up +[1518-03-19 00:58] wakes up +[1518-06-14 23:57] Guard #1637 begins shift +[1518-07-30 23:46] Guard #2857 begins shift +[1518-08-10 00:49] falls asleep +[1518-08-22 00:51] falls asleep +[1518-03-24 00:58] wakes up +[1518-04-29 00:50] wakes up +[1518-09-13 00:51] wakes up +[1518-05-24 00:33] wakes up +[1518-04-30 23:58] Guard #2539 begins shift +[1518-04-09 00:24] falls asleep +[1518-06-19 00:06] falls asleep +[1518-04-12 00:38] falls asleep +[1518-04-24 00:03] Guard #751 begins shift +[1518-07-06 00:00] falls asleep +[1518-10-03 00:30] falls asleep +[1518-07-22 23:58] Guard #1031 begins shift +[1518-08-31 23:56] Guard #3187 begins shift +[1518-04-14 00:58] wakes up +[1518-03-16 23:57] Guard #863 begins shift +[1518-04-13 00:45] wakes up +[1518-06-23 23:58] Guard #3229 begins shift +[1518-01-28 00:43] falls asleep +[1518-03-04 00:27] wakes up +[1518-04-06 00:23] falls asleep +[1518-05-25 00:22] wakes up +[1518-06-09 00:30] wakes up +[1518-02-06 00:19] wakes up +[1518-06-16 00:00] falls asleep +[1518-01-30 00:04] Guard #3187 begins shift +[1518-09-08 00:32] falls asleep +[1518-09-06 00:08] falls asleep +[1518-03-05 00:57] wakes up +[1518-07-04 00:42] falls asleep +[1518-09-17 00:52] wakes up +[1518-06-12 00:40] falls asleep +[1518-03-19 00:03] Guard #1637 begins shift +[1518-08-28 00:58] wakes up +[1518-07-20 00:46] wakes up +[1518-08-24 00:51] falls asleep +[1518-02-22 00:53] falls asleep +[1518-10-22 00:57] wakes up +[1518-05-11 00:56] wakes up +[1518-05-15 00:18] falls asleep +[1518-02-06 00:07] falls asleep +[1518-04-30 00:58] wakes up +[1518-09-02 00:50] wakes up +[1518-11-19 00:24] wakes up +[1518-08-11 00:53] falls asleep +[1518-07-08 00:04] Guard #173 begins shift +[1518-08-22 00:53] wakes up +[1518-11-09 23:58] Guard #2143 begins shift +[1518-08-24 00:13] falls asleep +[1518-03-22 23:51] Guard #601 begins shift +[1518-08-26 23:59] Guard #3187 begins shift +[1518-02-27 00:16] falls asleep +[1518-08-08 00:42] wakes up +[1518-02-06 00:58] wakes up +[1518-05-07 23:58] Guard #173 begins shift +[1518-01-26 00:43] falls asleep +[1518-03-15 00:50] wakes up +[1518-11-13 00:49] wakes up +[1518-04-30 00:04] Guard #1031 begins shift +[1518-07-01 00:54] falls asleep +[1518-08-09 00:32] falls asleep +[1518-09-19 00:34] falls asleep +[1518-01-27 00:00] Guard #3229 begins shift +[1518-04-16 00:47] falls asleep +[1518-05-14 00:03] falls asleep +[1518-06-20 00:37] wakes up +[1518-03-06 00:27] falls asleep +[1518-04-27 00:08] falls asleep +[1518-05-09 00:50] falls asleep +[1518-10-07 00:34] falls asleep +[1518-04-10 00:12] falls asleep +[1518-04-27 00:04] Guard #601 begins shift +[1518-08-02 00:55] wakes up +[1518-08-22 00:24] falls asleep +[1518-02-23 00:57] wakes up +[1518-10-29 00:41] wakes up +[1518-06-03 00:44] wakes up +[1518-08-20 23:56] Guard #1637 begins shift +[1518-11-02 00:39] falls asleep +[1518-01-16 00:37] falls asleep +[1518-02-22 00:45] wakes up +[1518-11-05 00:49] wakes up +[1518-03-25 00:57] wakes up +[1518-11-14 00:25] falls asleep +[1518-06-21 00:00] Guard #3209 begins shift +[1518-01-24 23:56] Guard #863 begins shift +[1518-03-04 00:14] falls asleep +[1518-06-03 00:35] wakes up +[1518-07-19 00:58] wakes up +[1518-09-08 00:09] falls asleep +[1518-10-03 00:26] wakes up +[1518-09-07 00:47] falls asleep +[1518-05-14 23:58] Guard #1597 begins shift +[1518-06-18 00:46] wakes up +[1518-10-23 00:24] falls asleep +[1518-04-15 00:59] wakes up +[1518-07-03 23:57] Guard #2143 begins shift +[1518-06-09 00:54] wakes up +[1518-06-11 00:42] falls asleep +[1518-09-29 00:18] falls asleep +[1518-11-06 00:08] falls asleep +[1518-07-13 00:47] wakes up +[1518-08-13 00:36] wakes up +[1518-08-20 00:02] Guard #1627 begins shift +[1518-03-27 00:39] wakes up +[1518-07-03 00:46] falls asleep +[1518-02-11 23:47] Guard #521 begins shift +[1518-04-20 00:05] falls asleep +[1518-05-24 00:47] falls asleep +[1518-11-12 00:00] Guard #2143 begins shift +[1518-06-02 00:01] falls asleep +[1518-06-25 00:31] falls asleep +[1518-06-27 23:50] Guard #3209 begins shift +[1518-08-18 00:38] wakes up +[1518-10-05 00:43] wakes up +[1518-11-04 00:45] falls asleep +[1518-04-29 00:01] Guard #523 begins shift +[1518-05-17 00:40] falls asleep +[1518-10-21 00:51] wakes up +[1518-10-26 00:41] falls asleep +[1518-02-14 00:35] wakes up +[1518-09-16 23:57] Guard #601 begins shift +[1518-08-25 23:58] Guard #2143 begins shift +[1518-11-18 23:50] Guard #523 begins shift +[1518-09-21 00:04] Guard #991 begins shift +[1518-11-01 00:11] falls asleep +[1518-08-25 00:21] wakes up +[1518-01-29 00:01] Guard #1031 begins shift +[1518-08-12 00:00] Guard #863 begins shift +[1518-07-13 00:59] wakes up +[1518-07-31 00:47] wakes up +[1518-06-01 23:54] Guard #3187 begins shift +[1518-03-26 00:01] Guard #3229 begins shift +[1518-07-24 00:38] falls asleep +[1518-06-15 00:52] wakes up +[1518-05-24 00:59] wakes up +[1518-09-05 00:10] falls asleep +[1518-09-04 00:04] Guard #1031 begins shift +[1518-08-18 00:51] falls asleep +[1518-05-28 00:04] Guard #1627 begins shift +[1518-08-11 00:20] falls asleep +[1518-10-23 00:03] Guard #2339 begins shift +[1518-04-18 00:51] wakes up +[1518-02-19 00:03] Guard #521 begins shift +[1518-03-29 00:31] falls asleep +[1518-02-20 00:13] falls asleep +[1518-11-23 00:55] falls asleep +[1518-01-28 00:44] wakes up +[1518-07-15 00:46] wakes up +[1518-04-20 23:58] Guard #373 begins shift +[1518-03-11 00:03] falls asleep +[1518-06-24 00:51] wakes up +[1518-06-29 00:32] falls asleep +[1518-08-30 00:56] wakes up +[1518-03-20 00:34] falls asleep +[1518-04-10 00:04] Guard #1031 begins shift +[1518-04-24 00:49] falls asleep +[1518-03-03 00:53] falls asleep +[1518-05-08 00:06] falls asleep +[1518-11-21 00:02] falls asleep +[1518-06-07 00:59] wakes up +[1518-10-07 00:45] wakes up +[1518-02-01 00:19] falls asleep +[1518-02-19 00:58] wakes up +[1518-05-27 00:36] wakes up +[1518-07-03 00:38] falls asleep +[1518-05-19 00:41] wakes up +[1518-08-07 00:34] wakes up +[1518-05-07 00:24] wakes up +[1518-02-25 00:19] falls asleep +[1518-09-02 00:00] Guard #521 begins shift +[1518-07-08 00:58] wakes up +[1518-11-17 00:02] Guard #1999 begins shift +[1518-10-26 00:27] falls asleep +[1518-05-02 00:54] wakes up +[1518-09-20 00:24] wakes up +[1518-03-17 00:21] falls asleep +[1518-09-10 00:36] falls asleep +[1518-10-17 00:09] falls asleep +[1518-06-05 00:57] wakes up +[1518-06-11 23:56] Guard #373 begins shift +[1518-11-13 00:37] falls asleep +[1518-08-16 00:46] wakes up +[1518-02-13 00:57] falls asleep +[1518-06-14 00:59] wakes up +[1518-05-20 00:24] falls asleep +[1518-09-29 00:00] Guard #2339 begins shift +[1518-02-06 00:22] falls asleep +[1518-11-02 23:56] Guard #1637 begins shift +[1518-08-29 00:05] falls asleep +[1518-04-11 00:26] falls asleep +[1518-10-04 00:07] falls asleep +[1518-08-10 00:31] wakes up +[1518-03-23 00:47] wakes up +[1518-05-29 00:57] wakes up +[1518-08-25 00:51] wakes up +[1518-09-26 00:48] falls asleep +[1518-05-03 00:58] wakes up +[1518-05-06 23:46] Guard #373 begins shift +[1518-11-08 00:13] falls asleep +[1518-07-14 00:00] Guard #431 begins shift +[1518-07-03 00:11] falls asleep +[1518-04-21 00:42] wakes up +[1518-09-14 23:58] Guard #3209 begins shift +[1518-06-09 00:00] Guard #431 begins shift +[1518-03-11 00:52] wakes up +[1518-07-10 00:23] falls asleep +[1518-07-14 00:40] falls asleep +[1518-06-06 00:51] wakes up +[1518-07-19 00:03] Guard #863 begins shift +[1518-01-23 00:54] wakes up +[1518-07-23 00:26] falls asleep +[1518-08-26 00:45] wakes up +[1518-07-22 00:17] falls asleep +[1518-09-26 00:57] wakes up +[1518-05-18 00:37] wakes up +[1518-10-09 00:49] falls asleep +[1518-02-08 00:47] wakes up +[1518-09-14 00:25] falls asleep +[1518-08-31 00:41] wakes up +[1518-01-25 00:51] wakes up +[1518-07-28 00:01] falls asleep +[1518-10-28 00:16] falls asleep +[1518-02-17 00:01] Guard #2857 begins shift +[1518-06-26 23:59] Guard #523 begins shift +[1518-03-06 00:44] wakes up +[1518-08-18 00:48] wakes up +[1518-07-18 00:46] wakes up +[1518-08-06 00:01] falls asleep +[1518-05-09 00:02] Guard #521 begins shift +[1518-10-09 23:50] Guard #523 begins shift +[1518-02-28 00:18] falls asleep +[1518-05-29 00:00] Guard #3187 begins shift +[1518-10-24 00:50] falls asleep +[1518-07-06 00:44] wakes up +[1518-08-28 00:31] falls asleep +[1518-01-17 00:48] wakes up +[1518-10-02 00:29] falls asleep +[1518-07-02 00:27] falls asleep +[1518-11-09 00:38] falls asleep +[1518-06-12 00:57] falls asleep +[1518-04-26 00:20] wakes up +[1518-05-10 00:14] wakes up +[1518-08-13 00:04] Guard #2857 begins shift +[1518-04-25 00:53] wakes up +[1518-03-15 00:33] wakes up +[1518-04-03 00:30] wakes up +[1518-08-21 23:58] Guard #3187 begins shift +[1518-01-18 23:58] Guard #1999 begins shift +[1518-06-22 23:56] Guard #3187 begins shift +[1518-10-06 00:59] wakes up +[1518-10-21 23:57] Guard #863 begins shift +[1518-08-28 00:00] Guard #1637 begins shift +[1518-02-11 00:44] wakes up +[1518-07-07 00:16] falls asleep +[1518-10-15 00:43] wakes up +[1518-09-05 00:56] wakes up +[1518-01-22 00:12] falls asleep +[1518-01-14 23:57] Guard #2857 begins shift +[1518-08-30 00:36] falls asleep +[1518-08-07 00:01] Guard #1597 begins shift +[1518-05-05 00:00] Guard #3229 begins shift +[1518-01-13 00:13] falls asleep +[1518-11-10 00:55] falls asleep +[1518-04-22 00:55] wakes up +[1518-10-07 00:54] falls asleep +[1518-11-02 00:20] wakes up +[1518-10-30 00:32] falls asleep +[1518-05-06 00:00] Guard #863 begins shift +[1518-03-10 00:59] wakes up +[1518-09-19 00:59] wakes up +[1518-06-07 00:35] falls asleep +[1518-04-21 23:49] Guard #3209 begins shift +[1518-07-07 00:47] wakes up +[1518-04-09 00:45] wakes up +[1518-09-06 00:45] falls asleep +[1518-03-26 00:34] wakes up +[1518-03-03 00:01] Guard #419 begins shift +[1518-10-11 00:21] falls asleep +[1518-09-20 00:33] falls asleep +[1518-07-15 00:24] falls asleep +[1518-03-17 00:40] wakes up +[1518-05-23 00:46] falls asleep +[1518-03-20 00:40] wakes up +[1518-11-11 00:55] wakes up +[1518-07-12 00:03] Guard #2143 begins shift +[1518-08-16 00:13] falls asleep +[1518-05-13 00:41] wakes up +[1518-04-18 00:58] wakes up +[1518-09-01 00:59] wakes up +[1518-05-05 00:37] falls asleep +[1518-09-09 00:02] Guard #521 begins shift +[1518-06-09 00:44] falls asleep +[1518-02-12 00:44] wakes up +[1518-05-26 00:40] wakes up +[1518-09-04 00:37] falls asleep +[1518-09-11 00:54] wakes up +[1518-08-01 00:02] falls asleep +[1518-07-03 00:43] wakes up +[1518-11-10 00:09] falls asleep +[1518-10-14 00:33] wakes up +[1518-04-21 00:47] wakes up +[1518-02-03 23:59] Guard #1999 begins shift +[1518-10-05 00:47] falls asleep +[1518-03-18 00:04] Guard #431 begins shift +[1518-01-28 00:00] Guard #3209 begins shift +[1518-08-09 00:52] wakes up +[1518-10-03 00:55] wakes up +[1518-10-20 00:03] Guard #863 begins shift +[1518-08-17 00:03] Guard #2539 begins shift +[1518-10-26 00:02] Guard #751 begins shift +[1518-07-16 23:49] Guard #419 begins shift +[1518-09-24 00:55] falls asleep +[1518-03-06 00:42] falls asleep +[1518-06-13 23:50] Guard #3209 begins shift +[1518-07-08 00:17] falls asleep +[1518-05-23 23:50] Guard #1627 begins shift +[1518-03-07 00:07] falls asleep +[1518-04-07 00:31] falls asleep +[1518-05-15 00:39] wakes up +[1518-06-01 00:27] falls asleep +[1518-07-17 23:51] Guard #1637 begins shift +[1518-02-07 00:48] falls asleep +[1518-03-14 00:18] wakes up +[1518-02-07 00:51] wakes up +[1518-07-31 23:47] Guard #863 begins shift +[1518-08-21 00:47] wakes up +[1518-05-05 00:57] wakes up +[1518-10-24 23:56] Guard #863 begins shift +[1518-10-19 00:58] wakes up +[1518-10-01 23:58] Guard #431 begins shift +[1518-02-23 00:39] falls asleep +[1518-02-04 23:58] Guard #601 begins shift +[1518-07-06 00:50] wakes up +[1518-08-09 00:14] wakes up +[1518-08-05 23:51] Guard #373 begins shift +[1518-02-11 00:26] falls asleep +[1518-11-03 00:37] falls asleep +[1518-05-12 00:11] falls asleep +[1518-02-09 00:39] wakes up +[1518-02-05 00:45] falls asleep +[1518-01-20 00:49] wakes up +[1518-10-23 00:56] wakes up +[1518-08-15 00:13] falls asleep +[1518-02-06 00:33] wakes up +[1518-10-12 00:47] wakes up +[1518-03-21 00:02] Guard #991 begins shift +[1518-08-15 00:52] falls asleep +[1518-06-16 00:10] wakes up +[1518-11-20 00:06] falls asleep +[1518-03-24 00:25] falls asleep +[1518-05-25 00:57] wakes up +[1518-01-21 00:00] Guard #2857 begins shift +[1518-02-24 00:54] falls asleep +[1518-04-02 00:27] wakes up +[1518-10-14 00:36] falls asleep +[1518-02-16 00:04] falls asleep +[1518-08-24 00:47] wakes up +[1518-05-04 00:54] wakes up +[1518-03-17 00:46] falls asleep +[1518-02-17 00:48] falls asleep +[1518-02-24 00:04] Guard #419 begins shift +[1518-02-10 00:46] falls asleep +[1518-02-28 23:59] Guard #173 begins shift +[1518-06-17 00:04] Guard #523 begins shift +[1518-04-07 00:56] wakes up +[1518-07-17 00:02] falls asleep +[1518-05-28 00:33] wakes up +[1518-06-17 23:58] Guard #751 begins shift +[1518-02-09 00:34] falls asleep +[1518-06-15 00:08] falls asleep +[1518-05-17 23:58] Guard #521 begins shift +[1518-01-25 23:57] Guard #3229 begins shift +[1518-03-09 00:59] wakes up +[1518-10-01 00:51] wakes up +[1518-03-01 00:40] falls asleep +[1518-05-28 00:41] wakes up +[1518-02-25 00:00] Guard #2143 begins shift +[1518-08-16 00:57] wakes up +[1518-07-08 00:57] falls asleep +[1518-05-06 00:56] wakes up +[1518-05-09 00:45] falls asleep +[1518-04-25 00:40] falls asleep +[1518-06-13 00:35] wakes up +[1518-08-15 00:24] wakes up +[1518-07-06 00:49] falls asleep +[1518-08-10 00:53] wakes up +[1518-06-05 00:52] wakes up +[1518-05-31 00:35] falls asleep +[1518-03-05 00:03] Guard #2857 begins shift +[1518-04-10 00:15] wakes up +[1518-05-22 23:51] Guard #1597 begins shift +[1518-09-23 00:03] Guard #431 begins shift +[1518-07-12 00:40] falls asleep +[1518-05-29 00:36] wakes up +[1518-03-24 00:01] falls asleep +[1518-08-17 23:57] Guard #3187 begins shift +[1518-08-19 00:07] falls asleep +[1518-06-27 00:58] wakes up +[1518-10-21 00:55] falls asleep +[1518-01-31 00:51] wakes up +[1518-09-02 23:58] Guard #3229 begins shift +[1518-02-10 23:57] Guard #2539 begins shift +[1518-07-21 00:01] Guard #1637 begins shift +[1518-03-30 00:23] falls asleep +[1518-08-25 00:15] falls asleep +[1518-04-01 23:50] Guard #1637 begins shift +[1518-06-17 00:27] wakes up +[1518-07-02 00:16] wakes up +[1518-08-31 00:08] falls asleep +[1518-04-30 00:10] falls asleep +[1518-08-14 00:35] wakes up +[1518-04-01 00:54] falls asleep +[1518-07-18 00:32] falls asleep +[1518-06-12 00:45] wakes up +[1518-05-02 00:30] wakes up +[1518-04-26 00:24] falls asleep +[1518-04-12 00:51] falls asleep +[1518-09-19 00:46] wakes up +[1518-08-30 23:57] Guard #1627 begins shift +[1518-04-21 00:50] falls asleep +[1518-05-22 00:09] falls asleep +[1518-05-10 00:20] falls asleep +[1518-04-08 00:22] falls asleep +[1518-07-17 00:45] wakes up +[1518-07-25 00:32] falls asleep +[1518-04-07 00:35] wakes up +[1518-04-30 00:25] wakes up +[1518-10-31 00:41] falls asleep +[1518-08-15 00:56] wakes up +[1518-08-16 00:01] Guard #2539 begins shift +[1518-02-20 00:33] wakes up +[1518-06-09 00:26] falls asleep +[1518-07-11 00:37] falls asleep +[1518-07-18 00:00] falls asleep +[1518-08-16 00:51] falls asleep +[1518-10-18 00:00] Guard #991 begins shift +[1518-06-01 00:18] falls asleep +[1518-01-14 00:54] falls asleep +[1518-09-06 00:57] wakes up +[1518-05-23 00:35] wakes up +[1518-04-06 00:51] wakes up +[1518-02-21 00:00] Guard #2143 begins shift +[1518-03-04 00:04] Guard #2857 begins shift +[1518-02-12 00:01] falls asleep +[1518-06-28 00:16] wakes up +[1518-06-19 00:34] wakes up +[1518-08-01 00:52] wakes up +[1518-07-27 00:02] Guard #419 begins shift +[1518-09-05 00:44] wakes up +[1518-09-13 00:05] falls asleep +[1518-11-14 23:59] Guard #1597 begins shift +[1518-09-28 00:44] wakes up +[1518-02-07 00:44] wakes up +[1518-03-05 23:57] Guard #523 begins shift +[1518-10-03 00:39] wakes up +[1518-08-04 00:03] Guard #2339 begins shift +[1518-10-05 00:55] wakes up +[1518-06-14 00:03] falls asleep +[1518-08-22 23:59] Guard #601 begins shift +[1518-04-26 00:01] falls asleep +[1518-06-03 00:01] falls asleep +[1518-03-06 23:57] Guard #2857 begins shift +[1518-08-17 00:56] falls asleep +[1518-05-03 00:13] falls asleep +[1518-11-04 00:54] wakes up +[1518-01-30 00:35] wakes up +[1518-04-28 00:58] wakes up +[1518-04-03 00:01] Guard #3209 begins shift +[1518-09-09 00:11] falls asleep +[1518-05-21 00:00] Guard #2339 begins shift +[1518-05-27 00:54] wakes up +[1518-01-30 00:51] falls asleep +[1518-04-17 00:57] wakes up +[1518-01-16 00:04] Guard #2339 begins shift +[1518-03-19 00:54] falls asleep +[1518-04-20 00:33] wakes up +[1518-05-19 00:48] falls asleep +[1518-06-05 00:56] falls asleep +[1518-04-27 00:56] wakes up +[1518-04-19 23:47] Guard #521 begins shift +[1518-02-25 23:57] Guard #829 begins shift +[1518-01-22 00:42] wakes up +[1518-08-24 00:31] falls asleep +[1518-04-18 00:09] falls asleep +[1518-05-16 00:38] wakes up +[1518-05-12 23:59] Guard #373 begins shift +[1518-05-20 00:43] wakes up +[1518-04-18 00:54] falls asleep +[1518-03-30 23:59] Guard #751 begins shift +[1518-03-08 00:59] wakes up +[1518-03-09 00:01] Guard #2143 begins shift +[1518-03-26 00:53] wakes up +[1518-05-13 23:54] Guard #523 begins shift +[1518-06-13 00:34] falls asleep +[1518-03-27 00:02] falls asleep +[1518-11-09 00:55] wakes up +[1518-02-05 00:57] falls asleep +[1518-02-05 00:27] wakes up +[1518-09-28 00:55] wakes up +[1518-03-20 00:51] wakes up +[1518-08-06 00:20] wakes up +[1518-04-16 23:59] Guard #1627 begins shift +[1518-10-18 23:56] Guard #431 begins shift +[1518-07-21 00:52] falls asleep +[1518-05-19 00:36] falls asleep +[1518-04-12 23:48] Guard #173 begins shift +[1518-05-07 00:37] falls asleep +[1518-10-04 00:53] falls asleep +[1518-06-26 00:36] falls asleep +[1518-04-04 00:52] wakes up +[1518-05-04 00:04] Guard #3229 begins shift +[1518-07-09 00:38] falls asleep +[1518-05-01 00:32] wakes up +[1518-05-02 00:27] falls asleep diff --git a/src/main/resources/2018/day5.txt b/src/main/resources/2018/day5.txt new file mode 100644 index 00000000..03f77c1f --- /dev/null +++ b/src/main/resources/2018/day5.txt @@ -0,0 +1 @@ +VRrQqmPoOpMdAaDMQqmDZwWzfFdJjGmMgtTyYMmVkKgGvOOooLixXIlpPqfFFfFfciICBbRrJjGgQchHIiKkTtCSspPVlLJPpGgSsSsYyjSsqwWTsqQStjOkyYKiHhwWIoIfFHhOYgGJjyOoFfvVAaopVtTYyNitTIdvVkKgGYyWwDZwWNnlLwWzZYFfyDdyYVvLlgGUuhHMmzfFmMQqtaNnATDUuWwMjJRrdDmdyYkKkKCjzZJpzZPnEephHPNuUBbgGNncbBXZzxSsnAaVvNnqQvWPpwoOusSRrPpUvVCcwWStTSssHsSTzZtbBhAahHfFrgIhHibuUBCcGkKUucPpnNgGKfFkHhkKCGgRrCcwWhzZhHWNnwHEefFsRraNnASRSsKeEkkKUhHpPuoOEeRLxNnXUuEelEemXxMAxXanGgTtYyNNNnnryYtToOHhFftTcxXCPVvvVMmFfYyxXyYCcGqQgGgmMQrRqfFaAdhHDpPKkpyYPXxDcCduUILljIiBbMmJiZcCvVSsziHIiqQeEIikKhVnNvSDdcCImduUCcDMiJjeKkESrRPkKeEpsoTDdtOnNTtbBWIXxFYZzyfgGDDRrddlQYyZzqLcCQvVdDDdqVvabBAzZhHWwgoOiQqIlLGmMlLUuPpiSHhJjgGsuUIDSsgGuUmJBbjVvfFMmdDJjTtMNSsGgVvklLlLxIiXypPaGgAcCoOJDdWwfVveEFeAaElLZzIMmYyijYtcCTKvDHhdJjLJjxhHXlVNnzsSxXrRZfFEelnNQqUnNvVtWwTuqGgQRrCAKHhnNkZzpPCcjJjJbspPSBrVqQvkKRWrRwhHcCXxaPIqQAaFfyYipjJRQqrZzxZPpCAkKVvyYaDdmMgxXGSsLlnNjpPsSxeEXJcFfUuCjJwQqWwsSWcNHhnuRrtTUyYRQnNqYIpPiyKCRkKuUwWlLMmxXgGDxXdQqLMmlFfTuUtdvVDrNnckgGusSUOormyFfNcCnoAamxdVvDXMeTtEbBZICcimMsSkKyGgYIiStTsFlLJjyYfmMjJyKkofHhEeWwJLlkKfFBbnSjJsSOoMmsSyYwIiWsHhKbcCBSscsSTFNngnfIiFNkKAarRUuMmAXxasDvVdbBSjJYyfOjJoTtFFHLlAaBbnNhfwjxZzXUuJOoBboOEZzeLDRrdyYlWkKjgGJGEegGGPCkaAKcpyYglLfFfEeoORrNnqQJjJjxxRrXXerEeoOgGRZznNEEexFfRrXnNFdiIpPDpuUEeFNnRBbrKkfNqEQqevVdDQGgyYHwWhSHhclLldDLCcCcCpPvCchHVDljJLiInoONefqQFEkKcNnHhCwDdiIoOWdaADdkkbBKPpiIHnNXLlxfFaARrheDdOoEAadDhHWwjSSszZSszDdZfFsdDGgiquUQIoOWkUuKhVYynNmDdgGfFBbMvhHVvnNpPuUNkFfnQqjJNnNXpPxKnQiIqHEeguUGxBiIbXiIWeoOEfFkkKjJKaIiAHhngEeGbBNMmHhOorgGeXxFvVxXfjrRQZzqJeEAdDaEBaAOobRJcHhghHaAKkEeIwWiGCjwIirAacUuBbZRCcrzCkKMmQWwMmqrRoZYtTyQqBHAahboBbOVvgGcCAaTtbBlLPwWmMsIiueEgGZzLlUTtzZvuUVnqQNeERrMdwWDqVvgGQBNKknhHbIivRrVHlLhROMmjmMJPpSVvJjZmMztTyYBbOoJjsZyYyHhWwYvVDQqduUxXshHdBbdbsSBpPDwWDupPUMOomSdDDdAxXkKdDazffWeEwFwWlhHLjRrJmMFdDifKkFGrfFRzikKIZZzoOTNnLeElAaFfXxtWSskKWwcCoGMmEegbfFZzBKkRrEetTLlddDEeuUkrRJkKKksSrRQqFfYFYyfyzqQhHcCZubBKcCKvVckFfUuKCktTNeAaEnXxkUOyYxXTtRreGgdbBDmMLlETcCiIvVtYyobNnBeEaAabRrSsBmMAoOWeEwGgSsYqnNQuUviIVCiaVvEeAIRmMYyWwyYyYymoOZzMMlXxLDfFWwJTtqQauUAjTXxpPtlLNtTBgGhHbwWsSQnNkKVvqtiINnBfFqvVQbPAapRgGotTQqjJOXxrspPSdDIiymMPDdpYxXTVvneEUuNyYHGgwWsSaAjJhmMnwWecCytTzZYHiIoOpPiIhcCTqQtEgpPwMmrSsRwWvVvNxXwvVyBbDdQBbqbBnNFfLlIiwRmMLllLrWYMmuXxUXCcxUAadDDfFrRUudoAaOTtuUQqmDqQHhdzsuUSZPpZrRVvLlcNnxobaABOCcXgGfSsFCoEeOcKkiRrdDxdDbbpsSnJjNnBbFfZZzzlLHOobCcBSPpsjXxJIHhiBKkwWbbBPpmLlcbBeIiECudxXnNizZIwWbMuUmMLlKkdDoOsSOAXxrRJjtTZzakKLpPlNnoldDqQMmWwsHheEGgSSsMBjJbmAayYtJLcCljdDaAnNTtkKDdPpvVJoOgGeEGglLrKJAajkKkiIPpBbRrzjtThkKHkKBbJaFfocOoCOLlgXzZxGBbOIiJjnNoSNnwtWMmwTOAmMKkoOaiIAaNnRrHhBEebkKtTkKiIjJgYyGLwWlxXlLPEepOoAaVzZvpPrBbrRRoiRrlbBLIbylLYBJjUCcgGHhCcMYsqQBbSvmMpiIPWFfwVQqyYTjJxyYXUulLaABbmMfForlLRoKhhHHuUEekBVvhlLHbieEIGgVbdfFDxXwWBWEHhewXxgGviIaiQqotTOHtThEeIzZAsSQDdIxPpXSzHaAhzXpiYAamMyAaHVqQGgxXtTvqQQqhPistkKTSImMpbAaBIPDBbcXxCfogGSsOlLUuFHhPLlrRxLoOlXEXxZzJjxAoOaWwXUupPbBDdZzNnSshHVvKwtTgGdDWFfUukeERrhHzZNniIXZzxiIbVvhNngGSuWwUYysAYNnjUNnuJyfdTtJjBbHrRhdBbDYyQqDSsmoOrRfIiFYyOoSmMsSaAYyFfsunNWhHwgGlLqQWwLlUZzUumMMHhWwzWrRwZGGgyRREeLFflkDdKrrpPRSsBbrHlLhSsYupPBbNnUyYDaAdgTWwoOIDdJjxXFfyYYyimMQqRKAakDxXaAdrwWnPpYyZzWVvwHzZhkhHQqmMZbBzSsDdKNkKoOaEeAhSstzZTAauUfNeWwErRzZKcCkFfbBRrAOJjTtLPplthLLllKEevVklLHJXOoxjTRrgcqQCnNCgGcGoIhHicCTeHiOTtaAsSTtJjBbGPmZzMpDUuSsxXZzzQqwnNxXvVcoOZuUtTzCWZkKYNDzlLZAAaamPpFfogfFODdoUuEenNnGgakKaXxAAqQtDYycCEFfOAaoedAnNasSwWGazZAFfgTNPpbBHhyiIGzZrROogFfjUuBrRuUbEeEeQIiWhHwnNKhHIikLltqQdoODYyiIOoBgGbjJcCbZHLlhzeEHhBiglLGOoOozWwBbzZNnZIeEMmDdyYiWBboOwnNIUuAaOoTgMcClLmeEtLTtiQqtTUdDuvVPpYNvVnyksgGSHXxhImMiaQqAtTBbzgGZWwpPRlLriMmIVvKUukVkKvUfFuxXPpOolzZLrRKbMeXxEmZMmJtTeZzGWwsSgbBEWyYhJjHuxXUYeEOoxXHhSLlfJjFCCccLyYiInNIFfimMVLlvlIiCnCcNUguUGuYyxyYYydDuUOWrRNnwlLNnsSruURoOoXjJkvryYRVYyWwiTtgGiIWwIKnNkHhyeEYnNZfFgGUuDuUGgiRrIBuUdDKzZkIZyYzQqrKkwWRGgpPMmkKJjpWtbBTwPGKkgeEifuUjJNnFyYkKtqAaQHrRhHhAaTlLFuUdDKkjJYXxMmXxhEergGRNcbBuUCAAaMYymlLcCoOadDyjsSJBVvbwWbBHiIlLhXuTjJJkKZzyYjtUDdJiIjjAaNpPoumMUOtnvVNGqQgZzYhaAQqIrRiHOoBYybHlLmQqjJlUuLoOvVBaAbAaMUuaaAAuUteCcCcSzZsBvaAVbEmMyYTlUrtjJQWwqlLVLlRYKkXxEezWPpdkKDfBFfbXyYALcCOoqIiQrcCRltTQqpqZzQPaiIMNnzZSZzfFJjTtsmUXzZJfFjxYPufFUFsSNnflLpfiIDdZzFQhHqidDdDtKZdDNYynzOokTWwAOoaxXIaAPYLlnYVvyNyuRrUOtTEeLOoAalogKrRkMmXxGpDQMzZibiIARrSsagGoObBWwBRrRrIlNnZzLuUzZPUuPsSpBbyWLJcPpCjlqQKkgGEemMbBpYyqQPZzxXTqQQAaiIXxOoqAannbmhHQVvEekKqMGQqgjJcsSPpCtEeTLwWlhkKWJEejfFmMzZRrwItuUkKAiIWwfFaFfKkuuEeUOolLEOoeUOoPgaAGIipJjcCCnNcdDqpPQDCAacdMwWVvEkKemaheTMmtVvECcvXxVnTLldDYeEyTttjJUuaDdbBOgGSsoWwWwAeEOoPpMQZvVzJjqmLoyqoOQYfgGFZzGqQYygWwbBxGPlLpLlgXzDdPAaSsrRVCcoOvsSrjFfJZPpiIGgzRmZeEGgzNndDdiIVvYXxyJjaADMRNXxmWwMmMoOnoOuUyAaVOovcCQqYaAaAwWnNxXRrGgpIiPzlhHCcPNneEplLfFvVFfLOiIonwWNOoPSoOsFtdDaAIiFAaYLlWwyLtTfCcFlPyYyYpTtfaAmMiImMUubRrnNfFAXxTCcfFYwqiIuUrRzZQyYWIijJTAavVUutNnxeEDdXiIOowTIitMmPpfLlZzFuUJjKLAaPlLplkWoOZMKpPkUuHnNeycSeEsCXxYqfFRibBIiUuIiItToZGDdgBbZzAhHGgPbqQtTeExXmlLcxKkXCtTjEbUuBqQVoQqOrRSsoOyYaAdDwiIiIdDWUlSsNnLMmufFxtTwWoOXUFftSsTHhcCGqQgxJjmMZzGSJjsYFHRNnPzZVBuqQwWUbyYuUvpyYUurDiIOADOIiNeKklHtnNKuUjiIuUJkgixMmVvcKkCzZXeDddXxMmrRZZzKFjBXHhzZxYLlzaAZrjJHhOIzZiomMwWwpPeEeEWnNRyTOotbwuUvVWhHkcCdDKAaxXeiIEbBzZUuUugpPtQqPHSKkgGscCfFdDRwWEnNdDBUWyAZzeEoOLsSpLVvlPlQSNnsBbqRrldDAaLYcCySdRrAaQqmMttNJjJjVvnFMmfhHDbBdhfpcCIiEePnNrRqFDMmgyYKkGmMJaAbLQlLQpLlPqrRxXbBYZltTkOooOMmnNJjSsNnNnNnkKGYyglLGHjJhYygZzgGxCcXxeEwLlWYEeyfuUdDakKyYFfpPBbAlLUuQqGAakcCsQCcjJXxmgGMpPpQhHmMeqLSsxXbbxVvbBXuUBkKhHXqnNRrbGgBzsSZWjJoOeEwQyWwlHhLmMGgYDdsSMmmWwqQMxViIZzhjkmMKXxJjJvVAaUuvpPqjJQVwWjZriIREOQJjMmqoeLqQpPlcCCWIiUuCfbeEBsnNSpPFUuSPpgEiIfFzZeGsfmFBbfMfFFuUfFMnNwOoWmPpDmMNnayYAZzdrSNkKnaAhHsRqnNtkKrKiQnNqghHGfFIZztTQKkzGMmgEphHFfPEeeOdAaDvtbBTVvVMmPpgZzfwWWwoOEeFfFYgGkejJinNIEvgGVVvLlKVvrCTwWtYyoJjOcvVMnNmaATwWtrqtYyTrRIiAaQHhsSRkKbBIZziTeEtNSseNnvVVmMYywWvvVMNWOoMmzZxfFLRpPTtWjnNJbBuUZzwykPuUJjpFmjJMfoLLllOWwqiIdDQJjbBBIPXxRLdkKMmDhDdnNvVHlZWwJjOoPpXxgGzaeEcAgGaCDdGEehHYUuiIolLOPuxXKliWwILEexoOXCZuUaAJjuUPHhpzCYVvxwWXyKSsMzzQsSqmMIizZiIcMmFfFfwWCZbBYycBaAbCXhxoOGgXHcHIzZbWUcCNwlLGgzZOeEwZdDzWiVvwWXEexkKDdrRepYyVXVQkKqTtLlxXzQqZxHhhHaIifFOoaOXxosuzZUuuxYynNXDdmMOKkKkGXyYjJUHhCcLnpPgCtpPTcPpPpEHhYyedDdfFaADbBSsmMaAlQjJjYySYysPCcGgSCxlSsfZGVAaFEefqQuUIiDdRrOrRoEecpYyBlgGLDhHPIicCxmAaMXUuaAuPeECcvVpUgGRmMrLOBbmDsSYyyyzaAPpUTtTtirRkRrryYpPRDEScCnNsebBdDKFfkdKpPOogGivVIIdDuWkKwbBZizzQQqEeqoOLlPYOoaIiiGbBgAahvVpDgGiIcCMmoOmMLliIYqQEeykWwKHjJhytTbBYBqQwSpXiImgGPHhIYZBCcwWtzZLdpPCcRiIACcaRrQucLlCioOIUXBbViIvnpQQydDYhHhHqbBEeqPNKQqKkYykmMtTsmGgMrRkKTaARrcpPbaAjJZCczBkfFKXsSxIidarRAtkzZKTDJNncCjJjCuHjJzZhVcCvjGgsEeSHZmMZeEzzSYdDGgrRORrovVbSGgTtcChQCcMmvVIKkiiIALlrRVvtTasSBfFbEwWeylLlLxXKkpSAwWIiVvaeaxWwXAEYyuUsSPpnNoOsRYyrMmBbhHhHhrHhOoRrRHwiIWHoqQOXlLqQIoOiyYxZqVvhykVvKEeuUhfFHTWxXvVAavmMVSjJqQspPwdUuDhSsqRrFfLldqQDFMmwWqDeEeEVvdSIibBWwsjJQEeqcCQwWpRvCcVrHhNuUkvFqQJjurRUAaaAihHwLEelcLSsPplChcCXxVvTtHjJWIyYfKuFfHLlhGgFfUeEkHhBbKFfktrRWTtwZzgGTXxwWlNnLUuArRamMFftlLTqfFQKzMjJOoaAmZzwWVvaAjbfBRrbfFcYyCsSWwKkKUukoIiOgGOKkRryvWwhHKkVYSsEeouUSmWwYfFgDdGhhHHoCdDNKkOpPoMmCcMIiZzMPpUummTtyYclhHlYyAahFfLKklbBcClzZLHiOQqozZklLyQzZqYaRvgGlLVZsSRNweEeEqTtQrRWrbEeBtkneENJxxXXjdEwWaAfLlEeFLQTtkKhJjyHhYHqSsSxXslqsDdQqSQTtuISRoYIibGgdDnKkxKkmMXfFaKeEkyCWwcYcsjcjJQfFSsKkSYyHHhHGghvTtVhgGXxyYZztOAaoCcHYaAILtTlglLGLmMcCBXxUubYybygGgaAGPEewlLWdzZhHYZzwIiaAUuDJjiRrzZZdAoAaTtUvYnNMaAvVmyTylLYMJjgnNKkiIMNnmKgGkaKSvVssSeEAamMLljJRrpPuVvgGUkMeEnngvVWwGBHWwPNnAaOlLouUhdDcCZPJjpzHvLlVwCcWpHhPpXfFdGgDVvWAOovVLpcCgGAkKtTabBZbBzfFQLPpPNnqQpTtlKkJjquUEeoQqOuUfYyRGgrFAaVqBbzZfHrRtQMRCcrJjxHtdwWkxXPpKDSsRrSsYyTVvJjtTYXxyItQiJMmjAOoJQqKkjzlTZuUztLdEKkeoOREZzerDrRRrZbBROnmMbvVkKMMmmwWQVsSBbKoOJnNyKkaATtFXxfEeRrhHoOFfBbrIoOXLltVvnCcnNNTOobLlQtTOAlLFmTJjkKJaAjVvaACkKmMeEkKnUAUDduXxbBdVZfdDFgGDmMCJCcjmMpPjJYyccCdbBwPppgqGgQYyOjwWaSiIsuUuUMwWcCiLlWwDnjJaAAaXxNHmMFfhcCZztcbbxXjmMAalfFIizGeEViOCcoITtzwWZveEkAavVGHhgRrUEedDUuuIcCFfrRJjimWwMfFJjuUDJjdRrmUUrBbHhHjJhbfMmOomMFBbSsBYhihHIHysShHSsHhbucCgGvcJjBbCcCVanNAbBcRrCMmpPsMLOiIoKuUTtkLllSskKHhmSKksjIiHNnHhhmMeEoOJRcCrhAaKkHfDPpdxDdXzjYymMJZzZFdyYyYoAtTxXXxaOWwOmKkMxahHAKVvksSgeXIRrxxXpPDVSsvyYAbBGIXxomjPPqgGMmLCcISsqQYyfFJYyjLvVvNnADPpFfSsFvDdDdVzYiIJjVvpCcPyYyYsSTpzpdDPZFqQfkTcCiIEJjetTtYvdDXxVKkwUuWXxMmyyYBbDdysSYOoDZnNzDddhwWYyVverRxXnICDdclrOoYxXHOzZoSAGgaycFfCUUuGpslLgtTDdGtTtmMTSHbBlkaTtwWNnCcvVAmFzMQnNrgGRmMqDdWUuwmzGgQjJDdLlqZFfCyYuUqOooOYycCuEeUtfYfFWxXKSsvBbVzjOkKbjfFJThHtkmvVMEaAeeURxXMVDdvmFGsSgfBRrbaSslLPUupXxfFAueEiIGgYFOoDSTFUufQLhzTtLnNnNEebBBblyUuYSzVvWwFfZRdDrMmCRreEcsbeEMmmMmfFoOtLbBLlpLlPIBboeEIidDYyjgCtUuSsTLGgkNnKFMmfwIAaUuTbBtgGiWDqdDrRNrMmRYpdDPrzZtTMNnCrrhcdtTDYyCXxTRCrUuOIXjCcJxiwWgGorRdDrTGgFfKkhHmMPpMesSEKkNnmnNHhtcChHzLlOowWUBwDdWlLJwWgGjoOtTCmHhFrRTtvYyfFAaPpVfOoWwsYySGgLKVvgGbBzZuEHhGgWweSTSoGjJDUvVWwQqwYFaAQHhkxXWUuFfcCeEZcPptlIicoOCGtEeoOuUChHcTgGgzaAZmsMZzmSMUueEiLlVFdDwMmWbJOojrRUAXmMIuUixauOoZzDIOoYfvrRCcEesSbBrovVeDFfbXsSUuKkJcCjxjfastiIwbgGBvVWnDdwHvmMuUaEeAfFVhmMqiImXxMMwdedDEScsSlLKkyBbYCsDQqDvVdmMDdhHJpPfJjrvVKkWwPpRqQdEeDOoqQWwqXxKpPkCcqXxVvQoOtThZwfoJsSnzZlLNjDdqQKkhIxXmMNnlvVwRrWGgLUuWwmMntTYGnNyYgDdyyALlKEeyOoSsgGYSQqskUuFfaAIaOoAQypPYjJCcqpmuUMvPpBoObSPjJjJpNnzZsQwWmMgGMmqNNVviIUudfFCcDOBbETtbzjJlLlQqLTmmMuUMWwtFoOfWuUwzVvZxXkKhyYHYHhchHsSFfRCcrzZZlLmMkgcCGqQKNGdDZAmMaUXxpWwoOPWzZAawusSTgnpPtGgKkjVIivGRlLYrRxCccqQZzqTtQCXgAWPbUuBFsSTrRtKNnkfNHfFHhhsrWweNnyalLAbBmwCqQrRcvOoVWFfPwCFfcWsSYypZZzziIrRczZCioOYYRTFZzCeEcHOohfkmMKDdvVuUEeXgGxEoWtiITbGEaAeEezjUsSNnGDPpddDiIQqpjJzZRrTtTxdDxXsQqSGgGglMmLRrJjLltmMTEevmVUHwWpORcCGvVPFHhfpgrzuUZEeOooPRdcCDoEecKkJXMeEbFJtCPpkKgoMOomUuOSsOoDZzdHyIDdjvVeEpPJRrKGgkpPXnWnNwjJgPRrcPpCcCLhLSslsIiGxZzXgSEdDyYeySTtJHpGgSfDdpJjTHiIhdDJHhHhJjZCcwWTLAavVfFQpbIiwDBDbBdzZbyGgCUTwjUubuUBJUubiIBdCrRBbBxXuUrSsFCyYlVvigGgGuUgXxtBXxNndwWgGfncCyNnUoOCsSMBcZzCsSbPpmBMvJjVmtUmMuvJjVaApPLlyaAWwYSvVsyOophcCimsSrIiRVvwWDdMlrRCqOAaFUYvqQFjJGgdLxXXmMJjtTxKklKkNnhHkBOGzpmCcxGgyUuYzPQqRWwaDwWCzZcbwjJIxnNXiWBnNnNadYyDAFfdYyKqiIQZXjJUQqjwWpQpvDaAeVFfvEdtOoRrFfdDfFenNEPAampfFPmODpqQPdoEebBbBmUuMaAIiTeuKTJjSsEoOeykKlLpPpPDdDdYdUYMmzZhHyyYukrumoOMxXycCYKYyCHhPpcerjJRaAEiIaEeaARaAOSspPokKebKkCiHJwCcWWySSwWpPPpgcCVWwPppPOfaAVvGgFjtTJovNnEbBpPtZzPpQwXxmMrRdDrLVoOzwsSLPpDdlXUvJecCTtxXsScCsIiBbSxXdDEgRAHuUhejJEarVgGvHhWtTzZnNeAadDKkdDEwHaAJjnlLNGgVYFXTPqQtJjTpzqQLlZAaeEtiIGgqLlQaAWKkwABbnNaFfdlKkHhzZLDdMmIiwWVvDHtBbiIoOWweEgGfFkjJKTMmxXGgtTMmaAvTtVpPhrWmMQqJIcLlCOoivUDdMmuSEezqJjQtpPCcpCOoSOMmbBosqNGgJpPjnchcOoeAaZmMpPzpPFfQrvVRqKkWUucfdfFGoUuYCeKXxksSUuKkzZNuUqQTtnEVveEYfLlGmAxdDXpUcCUoPcDdfzZhHFCQgGqjJQqkKpoLZzlOsrRsSOkKYEeDdxXMyYwfFHrRoeQqEHhkhpFlLtTfPHlrRSspPQqrCzqQZwWcCnNfGgcWwxXGlrqQRjJhRJUuYNnyuUixXjxUuXJmpMeEWXEesSXxaEOoVOiIomrVvAaRMUuDVnGiSsUusJjOoEZzeqQSVmMtmWEeZsSzwaAMHdDwWaDWwfVfFpPvfFliILNAeEeEJjYYhHyKkanNAGKxXLlhiyYixAapqQPXCmAalbBLLHhlCSqQqQzZscNnYHhSamjTtbBZzsIkwWKiSdDgFfRrciOxeMmOoFfEQqdVvbdDcCTqQtpPoklLfUusXxPpNaeqQyYAzuLQqtTqWwiCcIxXiwWzUuzqSsDFLjJTtrRzfWwzZFZlJuUYytTjJjpPRrSsrRNoUuGgqQWwuUlLxnNXPprJjybBmRrMYGgqQPOlXxDdmMDAaSaAYeFfphHPYluHhULlLjJMmXvCcmMlzZLhHuUBbfFjJCrRkKcYyxXLlUNnBEefFbDdhHumOoMlpPtjmnNNhHnPkLeEdDlfrRdPqQYyvVRbiBbVvdSOoYsSbBxXxkcCGMmmPtTpNnZwWyYaDdAhTtlHhAaODdoiILHMmzSGCKuUkPXxtDgGoLpcUuvPiRfPpcCFXdFfpkcCcCjJKLvVlrzZkKtdDHhcCKZJjzkkXQqxgGGglLLUGguWwALIihHKkKJuGkeErDuUdPpatTpPAATvVnNvVtaZhHzVGMmKKkeuTOotQqtHhbBgGKXxkTmaKQkWWwwGgHEeIiIkKiBAaYybBAkMmCdDTYyTtLlLlqQMIBUWXxgQRrqPpnAcCmxefFyeLlEuUAakwEebBVvOoWYyrgODnzmLJjEKNdEeDnNnbmZzMBbZzkyYKRrZknLkKXjTtqYgkmMKGtIcCifFTtBGgsSTtwHEekKiSFfagBHhLlbNWyYDwfFWYwWcCccKoOPvVrRHhkfuoOUbUNPpPpQqeEiILlnusfFSGgeEzZBPpFKpmsOoSuULlMKiIkgPkgRuCnOfFoGePpERrervxXVRJjsSTtCchTtHNlLnvkPpKVanSsXVlsSLvARrRrgGVvZUuztlKHhiIOokNnnNLLwaoJjOATtNOoPpTtbBXVvuUSsBwWYyrSSsxEYRIiIiSsrRslLxXVvoOSYsMlLmSbBCckgGpPEezmaaIilLAYyjJYCoOOLlnlLliqQJeEqQQqEeUvVuIvVdiIXOLrQqkKFwYySrTtRsbOaABfFboBRuUQfFhHWOKoOrRoyLldvSsVyCDvVdrRVvjGgGgJcNbBSsXnNhHczZCYPprXVKLlOohhbetTvVEqrRtTQSUuxXsJjSdDsLxXBbaoOmkKigJjGgbpPIKoOwQqWHhnNkaldDIBbhLCclHiXPHLlhRFUWxXZzteNnEtTpeAaTMmWSsSsgmMEmMGgZcXIjJBDBbkKjzZKIilLkJUuGWrRJqQKqCDSsdrXxRYyTdDmrnNRMgaAnNrjJRqeXyYSKQqkHhoOFfVvFxXftKZziYbByzwWSsZhCCIiPwxZzdsRhlrRmMLpIibFTtfegoOGEZorMmRFfMjJuUXxvRYyrVzZGgKkjDnbvVPpzZtTdDBbBxXixXRrkLCyYMREEegnSsPXxPpQqpWqEegGQUmMEdpRrNnsSPCcmMMmYyWUOojJjJujJIikKoCcgGOYorROxXboBpPbOFfeEcDeSqQpPLljJshHyzZGiTTtLAItJVvDVvtTtNnTZYWwCcyzlLdvXIibjJHhBtsSmMTUHaAhuCnNqsPZdDmMbQZzIiIRryivaAHxkvVIeqQYpPmyiILlKEekseESXxYZzMfQYyuWwFqQTypDdwWPMmsShHYtQSsqlLvVSsXAaxXYyOovVnUuNnnNNHULkvQqkmMXeEZgGrREnNeXxMmenNiIluwpWweExXIiPAaxXRrQqmMWwTpPleCcnNEefkejJctTQRbJsXKkFYyfBFfGVvWCUZbvVnNBFaqDmiIMnrRNQBbqgJLKLWWvVlxnNYlhHLfFpJjxeMmePpghHKkqQEeGFfEEXdDPJjCMmcKkuUjJNdrRfdDSsnNFHhutIyJmMEeBbLIilfKOlpPLlfKJjmMSspPjCcJHmoPpDdmwISOEGuUuvVYIiBSWwsRxXrbBbQeLcCCclSARMmrZUSsDvVEuUANLlntTaeRNnyyYMKcCoWwxXKMCGgKrCOoYyHtYyfFxRrXNnrRTRNnocCOLlbqWwZzVvJlufFRrAaaAIFseeEvVTjJTbAaBZWwLzZlzYAXxTqQtbBamgtTMmhHcCUTtqGgtCetXlwWDNkZznNSsoOKkbMHhAbzZxQqrqXYbBeEyxxzZXscXMhHksLlMmSKmKBbkdDxtTviIxXYazPpZASzZbIDPpdgqlLTKkteExXQIVvcCySudqQWTpeeKyzZTtiTtBbCciIAaDdxXJIiExXejNXxCZzkKqQEeddDDEetbBrRdiopPIGcbAjJaaABsnNKkfhGgATvOzKLlkgGkYEeGtTRrwWgQqEXuwKJWAawgmMceEwWqFftTmMfQqqQoOmMIiZzczArRtHhQjJgGqTmOoMnNPWQqhHdDwdDpYyYLlvVRCoOtTonNhEeHxqQgAaGXOZhHzZzJVvjUQquQPKkNDfFdRreaAtdzZaAQWXiPpIxwzPzZjJIKkXxVcmMHsSNnleELYyjCcCpPchNBOeCcEmBLlNHhnXfUmMkKCuUcIWZzwhHlQqjQTtTIdlLWujJbByacCAUurRrRtUykKeHhHhEYtaWwWZIiBDdzlLGgTuUGraAXxKgUuGiIxSmTtaWwPvVjJpwvkKZSjfFWTbBtUFbBfyEsMkIioODpajhOoHraAfLIluMmlWpfFPQqwWDdsxXmMtTSwLHyuUYPnNRrphUrfnkUeEGvUYXNWfFwvVMiImnnIidDfEJUujECQqYyLlQqxzldoOpPMmmnNPMmmMqQMtjVvJnNYUuyJCDdKkDBZzbuUdcLlzZtTTawQqjuHRrfBZDdFSMmORfFBbAalrRsnyYNwxwVUuZhwmMtcCUpuUPuQqTRGgnbWUuwBDdGgHPpjeTgGcCfwjWwTtcFfqQTsStMmUuZtTzuUMouUokKOssSSvSfdbrKsSnNhYXVvYywWeExyvVBZtYyUuTcCFfGgLlPbBYKqFfRxXOMmHhooOEIYxXyiMeWwCWwnZePjJpUuNnPXxsSKkprRRMmdpPcvjJrRPpKOoTtBHlLzZhUvVuFfvVpqVadVvCcPpdjJXxQqNntIiTDWHhtTlNnLljIAaRofFIPNKknvHhVMmxXpipyYsxxXXSXxFWwfPhHpwWfFPgfKkFrbBRXxGqQaAOkSWTlogGVQtTRHUoONnuALKkNEZAByYlLbzAaJnWwYyaEXxfFjJVTtFfbBGgtBknMmFfNKbBDdKJjxTdnPLBxXVOPJlUuLZPSiIspQNxRsiISfFxRrnkyYVYynvVDKkztkbUKZzoORwElLeqEeBbcCiIQWrAmEeBbtsFaACcVvQqrOoRrSgGsHhPJtTIijbYNnyYkvoOQqmOMmJLeEKBbcCSsUcCqTGEnGXfmxXIbYzZEeyBRIubHhqdnKNsSuSsFfaAtTgGypEetThHvgYVvyvVwGgWGRrvVpPOWoOwOoWHlQRxXVvBeFftTKkEeEYmMTtZzYyWdDrYyRjJwvQmGswWDrbHhptgGbBpQDOBJMmoyOqyYWwauYyjJhHdfdtFfMmLOtTgGXqQxdDzZOoxiIFVavVBboOdYyDCAacCnNqQTBaIiKkAbrLlZkKOoAUqQNCBxGyivVDTtNnmMRiIHvVhaAexZzXEiGgDCtqbByWfrdYvblCcxfEeFXTJggGTVvkuUIiMkSLppPMmoDdOMswldDSoaIBbpPraAdKhHRaAAaxXlLghHfFLCWwgGVRrlqhQqWLIibBbBlUupPHPpTMmthwHVjJctYaAoOiAaAmpDKFfUVhjFRrtTjJzZayYAfEerRpPFphHtrXkKGcOoBbEpPeVvCgxMzCQqcjrRCvoUEiIYyASAaZjJzevVEAHhOosSGsSBDNnqQnAUuUgxKoOQZzBlLbqiIbBkzZnNnNHZzQlLlpPkEDnNgmukKKActfnwWQqeSGgsbfoOgGyoEemqhEeALlAaDnDkqQqQxAapQqsSRrFKkfPfOgGpUuPDhyYuUHdAjPpJtTkKKqQkAwWMoOQYymKkQqvwYWwaAqeEqHhHYCcCOocCKkbsPoeDKkjRbFZjJzfjFfLlcgOoJjYiPWwJKtiITVeuUEvrzESEesOooKXSsxBbkKCcBDdvVxOomoOMXVvmMHhtTPktVfAaFQqCJjHhHImYyTtEeMJjfpPVvdWXBbxwDiIHNrLClLqXxmMmMMmjJQclnqQNbBmqBbyYpwWRdZUuhaAmMoOHzmPSzqruUaMvsSWwVZzuUWUuwvqBPpvrlLRVwjJNOSsZzUuonZxeAabBGXxbBgbBBbbBxXbkKBmMwvVsStTtLlTcCooOOaAgGXQXhHtrnawHfrXHXNamoOmqmLZCRWzZwTTBaAjJARpSsPrExXPTtvVzWwifPhoIoOicpPxLlXCZzyYwWhHfFOSaxVvlKAaZclLNnrRDuUddDqsjPwhHxXOrRodDGavVLCNnwWXxZzjMZzPpTyYRrzbWwHhWwGxakKAhhAXxVQovVPpcCOJPyYpvFVvfVcsHMPabBmOWxXxrAavVIIjJbUnNuIiBixXLmMHmMhHSEMKsAzZadDAadDXQnNSsnNeiMmjJIcHnldiCpPPpMVBASsDGgVvTPETJAamMkEkszNNnDvVrsmMSRdEKkeNfFxtgYYGRrxDgKHWwsKTXtmMTOPpvVRyKkMmboOodDORtJjTrAaqQQmYxlLRurRPBCcPpUJjuEjJKkWwCuXxlotNHeCcCcpiIPpfPHhpcRgEiIQtKkoOEeOojJbBedIfFvVEkiISxXmgGEeoOMDeEiIyYEeBeZzEMfKktAlCjDOHhrJcdbwSsZTebBEtAgmMdDvVgGdDGSsYyaLlIXQqZftTFzFfzCaATUuqiIAJrRjaQtmkiyNnPUupwiIWeEzXsSJhWwRRyxXMmYPpngGjsVKjUEeAajJXOoQqhorROEaCcAeyDpSXIitTfFeUuoJXjJwFAanNQqfGgFGcCiIpTtqKkDdVvFzZeZAazcCqQakKAQNeEAXzPpAYsSRDtFfTVvXjxSsIiEQqeETbBshHJjGgdDJxKYSswjJdpvVVvkKCZNMLrRjYJRdMmJrRjHhMFfPgZEZOoyfxzZXFUusSyYOrUnNuSbBnRrUullLLSfzYJIAaiCCciLloTNntdzSdHhOoCFBgGSPHRwWZzeErqQayzZYAyYWwzuoOUDSjUuOomfFfMmZWpPrItTVviqsDdQxXewsdDSRrxBmMbwWWXxnNoPIVzZRrJkPpKFfHhpAmOyYkKxXBCcbIvVioMxXPpeYMshHzZJjjJeDdIiuUtvtFnRnNCcrdCWGuuUwnNDuuCcUeanNhHuIUuIVvjJCcnzZNCZKoOnrFfcqBFfbBXxRUiIcCuhwhVjJvBetTEbeuUuRdDrUaqQAOehHccmCaAYhHyspPSYJjRLEeSsNnOsSOxQjJnUudPpTzZmMTtpbMmWwBMeDdCcKavBbBNVxXFfBfFbvUunbfsiehHbhHpPhMdDnzXoOgGCcwWPphHOpgvVHhvVHCJWDLlrRyEeUuEcfwtwWFkKxVveEDdAzZagGXWwqQFnTPptAawWrpUuBbUmsSeEookKQDdqwWOOVdXXxxDtzGgkCckKoUDrRdMmiMmfFmMgzZGoOPNnzMnNmZpgGIfOoeDRxXrKkDeEdNnNqQzOIFffXyVWKkJULqQrRKcCwWBbkNqnjkqMtohhHmMzZDdHwzCcavVUpuiIHkRzpPPqQpJjJmuUnPyYmMJQqjDCLxoMmOURqyYSQqUgUnRJBBqSsKkFxXoOvpPmMFCcSdDIisJWeaApKRcHhFFfphHPFKkfZfFKCSsJrDdEXkyEejeEJrRGmFjYyjJzZgGNnUuRrMUumzOoZBbWwqQVRrvEAQqDmbBEQqCdDbRaPpAPpUbqfFQqrDdDDdTDdwKQwPxXsZercCwSqQVyWwHxXhzpPZEeHNnCcHhLlHgGhzZbLlFhHpPurRGVcXxKkCqQvBlnNLPFfYyGgLlEPpaAaAJQoRrOqxXAajeXVRrvDwRrKQUuqWwkgHsjVvfMWxeVMUSsNnqQFfiIrRMYyXxxvVZuttTyYvdhHuWEepBAabyqjQNXhZzHODdoqaAKihHAaXJBWJJjjOoeKCxTiIrJSYTtgGpSrRIEwWyYeZlLzdDyUsSudHdDhNnOjpJjPqXaANXxngNnSsGJjAmuUMIUewiJaCcBFfZaTtAQRrqnNAmjJPpPJcCWwBEKNRAazZiYNnyJJqSCuRdbBWwsSwWZzNnFfwadGCcihPpuTNBbRrnbBORrTtLYJjDRhHeErRzQqZNniYyTyYtALWwlamMmMjQqJjRMFdlNDZsQKkZzAaMmsSzZCcITtTSwWtTseXlsSmVvjeyEtFRZmMVvlLesuNnFiISgGPwWpJHhvVYGgEeyOopIiHXpPxhaHhPJtrmiBbRvVrRpPwLpWnNZXzswbAaARraqUAaAqiIIqzKFzSaAsgGooLpZLlVvUqfFQsiTGVrAjIiDdJwCcnaAgGQGKkDdzcCeEZCrRhHMmcdvTtJUcNnagGdoOIpmYMmbfLLwOoevVEWOqeETdKkDtktDKeraABIirRkWwKKBXxbbBjJgGipPiIIkrzQKcQqetTmlLJjPpxXaAAbpPdWxnndAsSxGXxgfWwUfEMmePxpbPuUZjuUhnRjlcCLUKGuyPDDkkXQwwWShDkKdHslJCXxpmmXsxXMGOsvVqBsSZzjMmiIDdrRwNSCNYAEeLyYmoCyXgGJjxYeCjTPWAdXcCsjJJWwMFZzIjgWakKXxoVVvIiNDbBnFCtKkTvjRGiVkpPKocdDuQRdDqQBtxwWIivOoTARratVqCmqQmMMcyYfkZzSsdwWlnVvNKkwqLlaimFrRGgfeEcMDPXxKoWwNgGcMmAZzaaCyiOuUulDfFdCczZLrFffFhDorYyRrhPUeNnGjJJvikRJLnNnNPnXxXAnjwotzsHhrRJhNGgjrRMmJzBbsSoPOpPatdXxUmxvVXLmMlxXxaeEILZYxEJgBRrqaAStnHLohHYPpxAaRrVyEPpetijJyByYNOotToAanNMdDKgaATbBEoDEuUszZJjSzwgGBQWwyYZZcxbemMiIYyLHhIsSSaJYyjUuWXZzOoxaASsBjsScCyhHRFNFfnJKgOhHNvCcgSteebwonyPSGidDYTAalLPAaBiIiqwwWuUWwDCkKFDmMDdXZQqXlLXLlxMFwQqVlLEedDdMhjMtKvVqQXXxNnWWnjJsSSyYUZZaNTIbFCzptyZzVvyYcPpYdUeUuEuFfDnLwiInNWuxXYFfyOxXocClLkNnTODRCHQqprRPhcUfFHUuUQgGCoDdutGfFgnnUuhRIGwWpPgqvNnvToOQlExXeTIgGRrtiuGjcfYgVsjiInNykVvgLUUYbSsBsbHtTccXxZlcgbEemGgQqzDdPpyVxTtggjJWXxzZlVzPOcCoaEvVSsCGNRrZzPYqQWHeEhRrwpncUHbIitDdFfHhqQTdFfwTtsUvhHbPpcaAueLUJUbSNnIJZWwCcXeOoEkkKULPplXUDSsFMQLtPCLlgRrkKfAaXxtTFXxgmMgGgxXqcCuXxkNZTOwWolQqtTBbBJayXtJOOowWqQyhtTWOoOofFLcCzHhpBbvWwHhlhShHeORVerywWYVpYIBNnQSsdDYXEmMJtNnTJAcZnDbBisSPHMmhvWEtTePpcCoOKkuUKkuUslLNXLlpIEeiFgvqvVYyhuRrYyOtTgGQqIJlUpfdQlnNaKuoOaAEKkRZgoVpPOoeBboOAazDdZwJCgPWwvFfFciInUAaCcQqQqjXxXTWpGwWgPwtiJyzgGlLZEMmaAevhWQskKaySlWQqDObPZzpYUuyHnNOCcohDwWdYNomzjzZZjOWwwVWwxojJOXunNUvrUVvumMBbGRrnjHhJNwWIicUjmMKUuQIjJBnNhAaEVYbbXxpPBBLlQtTeKkESyxXoOFyWlcCZzkgSsNmzZMntAaKxSsPbBpeEXrRRWwrrzUuZlkKxXvVLcDYLlPIihHpYyyYAWTtDRrdDxlZVvZzTUIGHMFfBbmdDbBeEsrrpFfAaGunsIxdDJgLlPmBNnYyHLTwZPpuUigiMqQTttTmAahHJlLvVSZeGgvhAUwgGBDdNCfmMcCOoXDEePpIARraFkCxXcgGtTApuWwSBbosaAeEOojZzJFfmRbBZDDzgCcTCwEJomZzMONWLvkxeYmUHhGGghPwbFOohLzPpZeErLXqQxmSsTROzYpxiIXwrRpUewlBbLyfUuFBbjNYnNkPhmMfFZMmzYyvyLUtPuBYcbBCYmkKwOmMyYtToIHpPaAhiEebBOoIAmNpHsiYgRrkivxiNnRKfFPrvVFFjJjJffbrQqgGcLlYFaNDWwdOojJywWwjJxXvcCdDwHhbxODvAyYnqHYOowefFNLlnUUZuYaomMxxHGumMbuUoUuBkpPvuHCXxCcwWcjJhBvICaexjqQJiIlLMdDDnNdsSuUgGJkTKNlndDNeEZnRePoOpGLaAVJHvRjcCCGVvUNUOGKTlLsCytTYcLzZExFhHWesjJSshHvdyicCsVElTEYNzVEeytPpPpGrjWjKpPbBCGgGuEerzZzZRUfdDrRuoavztPJjNcCnsZiKDHhsLlKjJkjhLamrTtSLzwxqQRrXnpnNJgGjSXsSDdsSuULlxHhfFiMmqQqirabnnPFmMaAmMzZOonNdVqEFuUCAaAobBhdxXDaAtaARnNrXxTzbBZnnRKHgKktTGhcEeWshWpMmAaXEjCcJRriCuFIHhaDdjJeApPCdTwLybMmWYrRwpPWQIkXxOodZzDKcNnJXxjGgrXoOtyWwYftfTrRaVFNnZxXzaAcnjcCJWTtWoOwwmZGYyggRszZzmHUfsWIiSeERxTtSeqUuhXxMinjbONnSuLaAlQqkBRpBaOgnQprRPTtIeEtTbzaAnAafFJfFUcCuRlLueGgljQBBbByCaAcYLloOCdUAMmKsNCpPQXiIsiWwIHloOLRMmVtjJGiIgazaAZMLOowcELimMIhbBolFLXxliIHrAaRjcIHeQqUuMFfiIiLyZlXaAzZTkPpKTtyHHOOwbBNgBmMbGbKAoUOZzoxNOnvVPqQoOoOJntTZLYNSsnyjjiISdVSsvvVVVTgROorGuVvUHlKcSvGgxvkKVQgKkGEZFfcCGWTgGEmtTxXaxmMXtlLYyXxIcUAGgQVOobmeDSvDXxdXeQAPUuKkIvYwWIbPrRKkDdZTZztUupEegoVtKkASsoFQqFeQlXguUKjrmKoOkIaAiMmeLTtlUuVvWsSmJoOjXYJVVvLHhEYfXMgiDnONGLsSYCUucEsCrrzkuUAkxXRuUwtaVvmMAcCCVnzZKkKROKkoysxghHJBbuQqqQtDWOIiqFfviAPzZLfmKkMJjotPdDRrMuUmCMFGDdvfAKkPpqZjJzQIZiPpqqhHCiJvVWnNTgNnJjDdHvlLVbQveRrCcGMOoHZzBboxXBbBbOxquUQMVgdcvZFrRfYsyOopPBbpPYOCYNtAycmMoRrOSyYdYZxqtAeZBnIiHXxStaAgGpoOFvNlHSgznNKSsFfwedDRNnqcCZzZzEnNxXPpOPUTJiJcCoEeJkAaoOKjCYykKVNuAaWwuUweZUNTUiFfzZXxhHsSSZzNnbIiTEsSePplKzZkqQWwfqPpTuUtRBUMwaAPpQdDjJqEnhapFfRThHkKfkNlOoKksulHhOEzayYjuYyGJjebxNlGtHQqGaAmaAMbOzZjZzVvsSyYIcCigFtAoONkKHhXKkoOUFXjmvVcCydDvmMfFzFfMWffFFyYxJjEilrYyRcNnUvxzxNaAKtGggGlNnTLGgSkaAGmMdDgVrRMmcCUJjwGgovfgcoQbgeHhETCLjVvlLeGgGfFVvoHhNnKHktcCTKhAaYyDdGlJOVUuoOeEvZzoturRUnNjesSErRJXkyoLIizbBZYyHSmMaGaQmMiNlLlyJhhhHCcMlLDoOdejJCcRrNXxRmMBbnuWwmMUUufMveEDwWqwuMuUnNmUrRrWHhHhGZVjgSgKwneENWgGMePOWnzWjEGbBFALuUOpvVvGgKkQqgSQqsYHhuqfAzndHzZizfoTeBbWwyYEAjCJjjJcJZzCcTtOmRtgiFHyYlLcyMUyYuoIUKqwcuzZxsAQqiPdBwWoLkKZcCgvItTinqQSErmITafahHfoOFhIMdOnfFNQXxHEehqAuUKeVkKXxCDwsSorMqnNQcsSCHhrtToUuORuTdDeWraxZzXjqQTtXEexsSEeaAHBdBEebafryYOeEoEECceJrFmMLIillISeNNntWKQARohHfJFLlHhfjJjTwWLlLldLBVvllzZdDifQCLliKycCTtYknXBbGhHlnNLBbjKkIiFBbfRraAMrzqcLVEOPaCTgGqQDTvVLltcApMdLbBltTrDnFfUuNtfFSnPpjXxZzXrCexXdQLlMXxTPaAleiOoIKkMmkSsDcsaAHhhHxZvaAbGgsvQqQqtDdcCXHCVvrPpHYyuzZbBUhmMbuwNnzfFRPSsuFWwhogGOwAbmlSGgsiIOqfFQqpPQFGrRWdBxNJELuULlQnrtHPpdDhTRvNYqQqQzTfPZzYQqynNuUvJirbmaACcdhquzooIiREeyYqDvVsDdicCcCGgISdQrcCvMCchbBFfTDVJJXyYxRrUuxxttTVPpIintaVvaQqAZzZUuwWwVBQqyfRvcvVuXoKAMGsbQBQqNEQcFsMQRgoLLwOoQqIiIixXQXqmmMMyvRnbYifeKuURbBDEOdHEeWsTQSsVtTdyRIiBvdyYFkKXTQBbdZLlzaQqTtmMAqqWYyQvSwsuYQqSFLuiqzsnNSAavVtnkKHbBTtcCgGvVjgezZErRlLeqwbBcyYTxIhHijTtTtwWAhHFftUxgCHBDsSOseEYyTtSlXdVkqxBCcUgGdDKkPpNyYNuYhUeEhHfLdoODNnKqwWQSskVvZVvxgTkmUuMxDvYGgXxxPOPEQqiniNRrjJkKSsMaxDRKiIjJXDeESTndmgGdDCUyAaxXbBTtGnNZssSbJCGhdLlOojJYFtTaAGpCOomhpPdDXrRxHnFCpJjPZJVFfvrlLtZRrznTJZzjIxupYJjyPWtTQqwUuXxPYyshVEYcFOQDdZeEtanNGgmMEiIeAcdwJjWNShXUQqdtcpRgGOoAaTtrbKqQkCJoEeJjOwWtNMGPaATUQquwWAIiaPflGjzZJQuUPyXxYYWKHWXhmfFpPMHWmsuMmRrIadjJDGkePYExXFQqasFiIaAdiAQGCcgqaeAbTXkxxXvVJVvmqbBKdAVrZHAUuavVujXfpPFIZuWwaJpxNkKnEeXOovVPFfHZyYKazmsDbhHNAtUPuUpGhHXAatQYiIvOorijyYBbFfLtpyzyYZJebyUYUktTnQhHhHHhrhlLrRWyzVvZtTtfLVSYyVMnNDXnCMhrOoOocCRRbbBivJjVIWwoLvwaviIBZxCMPdLlNEMsgSXzOhxIHOoCRrchoDGgGTXxjJYTVOobBZsStWPqDiIWwCcKYRfRrgtJfFVviIYtQICfdaCcCFAawWIimMoGgHhuoFOnofIiSsrSdDsgzZloOsqYSRSMmXWwYQqysgGLMmfQGYyHVvhxDdzRFZzfpwXyYKBbdzJvFnXxoiZBZvVBdsSDbzRxDFMmpHlzZfFpPUudtTbrRlLWwYysOwtlRpPcJjCryGUuQeZyWDrYySXpseEnpVdbBSZzCFfCccxwQeEsYRNntTrFFNALXxAZzPyYtEyYdkKDhncCWXxwTtkwFVEiNQctWoZzvPMmfFNnFKmDMnAXxazXQqjecCwaAaIFfTWNqQmUNGfFbndgMYyeEblmFIaQqJjkKpkKobBbYRrWwnNesSpjJAYgcHrWUuwFZWwuBLEePHhHUWwGuBbDdMmUWwJMmuLRnNhxZHhxvVXFfzksKkNnwMCDDgGYyUGhHbBPpEDkptOmDHYyDdSsocCvVnNtAEEeMHtXxuUAGAdIXGgxXxnHhfWweGmMgXKjtQqLlTsSrgGKkdDXxtHhjRVooEeqLrcifzZKbiZADxgNDJWLHXMnmXxMdDyYgCsuUSJvinsSXuUSodvEiPpIebULltYyDdyYumUAaYmMnHaIBbAsSgXNJmMjnaArRHIVfFcLleECPthZDhAaGZHQtbEeHZHhMysSSaAsaAhHcKkVAaTepwWQqPhPWwuUDLbnYjIgqGgVsCvidlQpBaAepUFfbBuvihgGiiIrRQKqTpxQNnNzOaABbNJPziFdIqpgMQqyYyRrkkKtuiIoOthjJHTYBUusIiwpPKxvVzZoNZzBPpbPpCVvPdDASXDdCLVvtnNOoQqiygGYDhHKPdDpbBQqPKkbyYcjJKkAaZzAyNnymNOkKozpPaJRrAiRrBZzgEsSiCpCcWhgMzaAUSUiDGgcCgGnoaADIHhvySVbRHsAKhylLYRkeFGgVoNnPeEnNgclNnCcPXxvjuovsLjJdLKCcyYLyxXMmAasfFpPcCAgkdqKkQHhQeNFdDfyoHhOrItxhHUOoKxzBbTtbihCcBNIoJjOoOLChHEejSskQDSPqfWwGgKUaAIiDiGhGFQmMFfYyDhOTNntpPYySVLOHhsOTlESrRKksevVdIipPgtkQqgcCTUutuEeUsxtedDgFbZJwLKklrRsPRrPKTxuzluEeUHSLlPpRcmMwGxXgUlttMHCilhyCGuUtIiTGgCBbgGcbljFJriIuURjJJjtbSivVLsSrMmozyYyVvlOoGcQpeGniNNnNnOsGpPgIIVvaIAfigGIRsodDIwKkKFfpqQKkbnkKGgthcCHjJHTthxFmMnNfUtTYbkTtYXeKkyOUbxLdetTzZLtWwZzTlEecPpCiIYyivDdEeFKPpKkVXgkKmYAKCQQdgcWhAawWHYwWKkftgHqQhqslVCVrbZOBWGEoCzZvhqwBLDWwWBmzPpZJTHcCIeCPpjJcSpEAqQRFhCrnFNnOodtSsFlEeBYyUUaHhJKMmsSkbEsCcrszQqnceEknkbBNnkJdWwwPyYIiVQqwWUuBVvzalqvNgGnVMmotxytTQXOuyWLlmARJjZzkXVvPEuUesGlNVkderejHkPNDPofeEFOCcChZEQIIbGwWwegoSwFfTtFOoPTcCdDXoAUqQbTtBhWcIxXhHdyuhHOqeTtMmRrEQSsqtTMmImpmMiIZzEeIXhJjHhqQkKDFmiIMfwJjTChoEYGmJCcCXhAJCcEKvzFUAwWcWEzZzNnwpnNeEmQqUmTPCcpRLeTttlkqYlIlibFaAjJnNErzeuUBURrgSmyxbbieEHhVvYyosujKkdWBzPlIPpXinmxFfUTUtPpuUqSrRsZjUwWlGoOJjoOeoOVMEeDVjQqFIFljTJhdqkEeJdDPpKVjyoeFfgxNIiMXiixtiIGfFgPpfFfFozJjiUoOypcBXZKYIiXfFNpPnTuUtfbaHhDEoZxIICQJwXdgkqQhNceEDdWwgQTtQjngyYGSOGgTFByWUTzmmRWDIfCuUcAcFIidDhHfOoRRrSZejSIijJwIidfFDqQraAniVaLxMmalLwKujJUtVfECxjKiIPKWoFRrisXkvVPpiOAaonduQuuUFxDmMdXUDhLuFuGYNkKnAYqSCzZnkMZnSRjOibBdZoDdvVlzmxXeEytTzOGWOcwHrFfLwvZzrJeTnQGyoJnAXUqPGwEpPrRjkKJePpEfGgFeghhoUuOHUXLQmROsdHPeEpiBHWwhFfcCKkFXxifdQqiIMLlLbvntXxordOawCiqQnslkbjtTWTJiGOofOoBbiVgRKZHPphIietrZHkYuuPGgeydsqQrWlLARcONxflSGgsXuJiIjQqlaUmMdSLcSsClAaTtjbOFTBSmfgjJWhHhCcOoojGgrjJNgGUqQunDtTTvMeVTtvEmgGWXxAaryRrYQBcyfFmbBMMAamYEQjrDsDspPSkmMKdDkJjCFfAwgMPBebtMdDvKNmxlZEaZGgtEaZzAVvYYmMGgNnKytiuqcTtQWFmoYVgpPSswWHpYyaOMmtZzDNbBndjJHDuUwWkmabWwBmLJGfqQFTxCoPYsSMbrRTOMZcUeETyUHRGhiItDdTKalLAGIijJLlYyDVrRqOoQvgmMEeRhHPQnDvVdNfUjmEeJjzxROoqkFthJjgFfiIuQGrzZlyYqQLqQTsCcSwoAShHVvbvVRVqvgGNKENavliDzNncOoKNnQhxsYaRQqlkJyrOFfotsqQSZDIdxrwWwOZPBfFGasxilLCeUUdDqhlEIPfxXNgQNnqOsaASoGnFIZzipiEeeLHQuuEcIXSrRsSAgxXbpkKzFfoWRXbBNnDidzZmMzTRYjKLrAySXHqkOyYMPpmotufJTHhcSsCtYyjFUkKTCZdILDdVAneknVtTQvrBsaOWjJMmtGgRgqUGHTfKQrXZMJuFtTOAaoqpxXMmrGdOoHdDheEgkDdxXHgrPpJWwjhuYPRJjrptuCzuxXUmotBmypOcXtNRrzZuUngjlMsNNnnSAMTtKuUdhToAPhIiGGgEevyOMfwqCQUITLlYkyYyyCcIikKvVgGzbBKkqQZFFfGgfeWfFRrwTzAezLXMnkVLlmfhHZzlLFRrTBQqEbpmGWkKauUcpPKFfZzdSoOdRJqeCJjbqRwVtdRJOvVeECcHhFfdDHwGFwWtTMsbuUtqQfoBJsDuALVvQsYWwySqUxLFXSsnokKCrafzZFwRSDYEpUUyKhzRTENKkncCzVvkrGvIBMmdDXxlyYLbFaAgIjtwIkKiJBKLSNIrRcTQqtWnTtNACconNDPNnpROTNyYVBlmDFIIifyYbIhDSorMqlxuHGgMmGdDWNEengpQuxaWwNjOYgqNtEDIidSsjRVWlRrRhWCowgoZUuYMZLKkHhVvPpOJjzDlLIoXxJGgrxXsNzmKNcCcsQLlZzyaBbqQygUfeEUlHdtTuwNnWfUqpPUDNIUyYuKxOoLNnlSIfOwkdDpkEeJXIiceFvTkWAxCcXIrRytTYibGbcCBiIkPpKgBXlAvINRVvWJjszZEeJfFEzsrCaFiTtdwrMMjJZtFfuwYbftAfnNFaosNJqqGqQCnHKGuSjJsUuWwUDxWjqciiXsnNyYSzOedukKuUUHhABIiFxykzyeEYxbCPmMsSYuIZHhaAObBwUuWrRyYdDTrRXIIxmnXGEHhadDANIinOYJvZzkjKQJjFeSsETtfiQqIDHjtJLfihHpPQqzGKkghHZfJvCcdmvEbBgLfFuFfJzdDQIiHeEBbhVgGvTutuFPjJpfXMNIxiLpPpZbwDJqQUSAaOMzZkKmKkYydDHhWwIznNZBBXYMrRsGubSsSsNnEZRenNVvfBILiLyQHYyiIhKQqLTjJElrtMLMmluHhMUbBQquzZPWZewCaufGgZVcCkejaHxcIijMGgTtgyeWwOHctWvRrVdHfFxiyYPMiQiIoUYDqaxXHhAuUQhSsHiCwHuaOxtpfWoOsOCcGEnJjNWgBiisSqezHcbBlLopnNNnPOpdnpKxXhJERcCEDKvniILgSpeExKIiraUuNnMZzwYUDdoxBbqyYiIzzZZYXyZzSsYTOYyQLAZbuUEeQtTqvpWDjRrKKNKCNZSyYRSMmeBjVvAjJbAaBuOoubLfTDfNRcHfraecCPstYymMTEbBicCGghtenNHhEjXxcCMCcbwdfFtTTBbtlbWQKkHmMVQqcOeKkgwMmbNOonozKkBRvDdcCcvLSQGTFyMmwZzCGDqSsqckauUyMGwWWwOoxbBvwWkKkfVkKItxXTEDlXBuUEetTuosSYExyKByuFfXfFvVTGgNBPmMkWiOSrFfFadNnDiAVviiIiSoCcnOoINKkgvVgGEPqCgLYuUsSZORXxYyxXlwWIMmsBTJjCcjfoOEeJLBjJgcYnNHcCLIchmTUuTvVLuGgWyYezZETtCmMrAasUuhLZYyUXtkpuqQNnGgUpSWjzBGgGgfaAGuUETmMXSjJRrUuGHhRERrerFIifKTmMAaRrGbBDLtoSolvZzsPpoHdRMmriIYymMEeqfgHcCgjJIdgGukGgFQpsdqKJclineEbHILCclBZLlXkOouXvVTiRxXYSNnsnEqDKGaSirREezZAaIGgoOoOcCGgYlVvYykOeEolDbBlSVOmMUJVkKSspLCGpOvDdfEKrHkaSVvhraZzABvqQsFRqQrfYVKkidONCEecoOdIusJjuZmGHxxXXOonNRrwPtUuTcIeGbIajARrdjJFfDDdBbjJZnEeIiRrMIiYYYyaPpCBprRVvkiIdInNZzTFflcaAxsGNngapVaAvclLnoXxXxOOqsSvVQvVUuXkWSbyJDdjUTtTZkKzyYxXLlKYMmmGQqiIPQiDfIZpEejnTtoOoOouUZnqXPtKqQkQwWkqImMHYyLlJjIVPEbPqLDIVcSvQGilkKLJeDdGgEyNEeBldqQpHEthYXxyHvCZzKkYmtdDTzhBTqhzgEeHdzKkHtTTpcCwWvihxMmGakKiAhnsESseSYyNtTNDdVfFvynNuMcCUTuoOswWSnNEeBkNnNnKrRjtzwWaAZTkKJVDgGOsxNIVjcGwWGWwgNmcCxhlzZwjdnGXOodazIBgGqQkFICvUurRVRlQOOvrRrJaGgAbBjJgGfFTRjJJsSkxbBECbifXmMxFIBUucFNIiFfiDeEagaSsmMThmttIivVvVOoKkeETTeQqwWaTuqQUOhHhdLlMoOjJoTPKvVdeguddcmWJUuYyUujSKXHQqrlOoWwUZzjMBbmCcVTtvguhplbUzfNnDdwWRhCGyzZaPhHpPEGgyBOPAifMoOLwWBmGDNBYygnuMnwtiABbEeWEJxZUuVvLlVvNmdkKMcCkmMKkfpVOwTCqnpPMmjJIevfjNyfFYnJWGgKQqSsNSsHedDTpalagZqQzGuqQOoLlUYyffySqWEeXCWwcsDvPNSPxsRdwYzEqgYLuoAauUOUFfTWgGsnNSRroSBDTNntLhPMmfdXmMrbzIONfVjZNnDkxWMmPqeEQrZYyXlLgqFLlOoFflEegYyPpGSxrRXoOhwWHxdDsrsaOoAyGgQSLGRBbFqQwWONowWtTfOUGgOpPYyTtfIiHhcADFfFJjcIiiqLlWwTyjTGFroOeEjUuTtFfBbUuJjJykdQZzpwgqQGTXxzZzvtybBtgFfdOiXHoZxsvVGfFSmGgvVeqaAQkKMmnDprRFfmcXzbVvHhgCcGVzVvZAWIKkiXiIKkxVSsllLObBBrHmcVvNxdmvsLlslOoLSvlFTmMYwHRqNKHhuyuvVLPphHlHhYBEVgGvDOodjYPTlJIRVyqTxgujJVJjvTanBdSMZABbkKkzhYyIXxivVjAUpPzipPxJzZUmfFsSMhVvzRvaDkQMjOoXKxJjtBaEIDfSAOaAofHheypEKyYgAPpiUSMwxwMmFfhkQgGXxqwlLyppPzZUuqgLTWPpwtFAaptpgqQGgmMmnThHwWMoOmwWjcCzZcApPAaaBRrPCyOoYTZyYSszDTtuxHsnwWDdDlLCSsTzqoUufCNnyVvevHvVSpJjUvVXiGgtZzNTcgGCRjzcfNhHMXxcPgyYfywWcCDHgvnNVcbBCcjBSVjJvsSzgHhYvaCcAiIVBbCtIiAaTgGcuHhzZclLMMmDNtzoOZvVsdxkrdXCNncAKwWkmnIiMmINQqImMepopKkXkKyVdXmMKtGrBbRcfFCjJXpcCPTtzlFuHyUnVvnubXPpxXQKvgGDxLzzZZowWSswWzZwWdbhcGDdXuJjTiIaJXAalLtCWQEhHGJiMYgGymIruURmMhuUNTZQMCcmIUlVvfsyUSOZzoWsVqGgwQQDdKkTtsSPpDSsbBhIiHqVIwWivVvgGtxfOoDVbrYSsDVvvqKktSZzwhDaKkAoemzZyYMMmDddjJrkEFIyBNrVYQxqWllOXMmxGrLlqmfFbXxBSfCqeaAnbqBSgGgmKkpPakxXOjvVJxUeECRrVrBlLjJbFlLsSmMTtGgYbvWoOzNqQnATNhHkKIivLUKkuJjlTvcCVXXjjvdtbBHmhHVOoSsOOZlLUQHTtDMBRIUujlaNnALJjVpFbHhBtZeEynVNqfFRsSPprlBZzbeLDdljnXAxXabDfFwgfbBoLMBaWQqEeTtWwVvHMmXxNnfUprrRZIiWUVvhBbHBRchxTAakKQtFfdDCcTqVSBoOSsVzXGgSCdHhxXgwWGbBKELpgGLltmqDEcRxfFJNsTGrKkRVEevgdRkKlLDBEebmPwvVWZzTtaCdOuTtUeEotpPcACdDcZzpoevlCQZRmsSCTtcJfSsFgxNsSIcqFIHhLipPILvVUuPpDdgGblDtqQFOraHhqkeAaVvnNEwTnEsikKLlEebBLfHhRjtTeREelLFAtTDbKkpPBLlbhTtJARwEtUcCCcmMmQqROWdcAavEYykaQqoDmtTuUihHHAFAtirRMResYMmyWwNNnVaAKkcTtAQqaCUuGzlOUubDpIrRaSXUhHCBbWQkkKuiSVvsOgGmxXYChfIMmGuUTrcCNSsnaAhHMBboJjaePpEtfFpPOFZIRrhuUfFDNZRbBrFfaSsFCcQHhZzUyGAOtToaGgVPoNnlafbBgeJwvVFfZHhioOWwINZzwopEwWmaqQAKkjJctzZTCkGsjJGJvzHhHhWwgwhHRsSheEHMDdmmKkMAaWQPpdfFVmFNrIinVvVvedDEgGDdEmHrRHhuUHjYLnIGgSsuUqAXxgANnSsshrRzZlOYMmKxjeEJTIijLtTTtzZgkOgHhEodDOwrRWJGglGsSgcttTAaOoGiIBqOCmMGFVOEeNnEeVvWuvKhHslLlUubBtLCcTNnknBbXoeiIGgEONnLlGgZktdDTKpPXVGguCZzLIeXwhHvVmZVYMJxkjJKSSssfFgBbGfuNnxaAnWbBSswaTfGDdJoLlBgaWwAGgrRWwWVvwhTgLnXtxBbrRXTBEPpUuwWgtTUJAZUuDfRrYyFdQqeoLUkKSLgGlPKkpLnKFqQtrpPPAQqHLlNejJWmTtubrQaAFAvVaLnNnNtBshHmMIuUuUutnuzxXEWuUaAUnvPpcOjdDIYyTaAtZqQzjzTtKBbkZtzZxXupoeQqQrEWqQkZGjcCJsQqhLnVfjJKAakwWPHhTUusxXhNbmOoMzzZEabBTQXJjzyDOaAQqosCYaGgTgGnycoHHaTtAhhhEeHRKkrdDSyOoAazVCDGvmJjXoOhvVmGggdDhHEVGglLDdqBhAayYGtQBbqwBbjIJtTjcQQbBIziquUQHhahHGVvgFmsrRSMVTtbBUugYyfrRmcACNncaXxuUQqlLpHzZhTTtOOZzohHEcCXxeSnNsRrFWVvsxXSMmzZFfwlsSnNrRrRVvpaIVQoSsvVwEedTUjGXSuiIAaBbDdUYqiIQrkzZWwNvcmMTsSWMmrKaKZRwFHhfAaWjJRcSeaAEeYyylDdlLtTgiInoXxJjNdoOILlGmxFyMmeYylZzvjyxBbMwEMRJJDJjHhdjOofFQOoqkkKGxLMmqHhEEeffNntTOmXcCxMaKVvPpkTvSsSLlsOGPzDerGgpPiIREdpBixXyVipaqPxXpECcxcHhCVbBsoFfSsOVvoOUuPpeEdMmEMBvqvVauCiCctTTAMetHhwgaAzXxhHelWwLqYyXGgGgVIisCTtveEVkLhWoOwtpPvvDsJNnJlzNjpNoAPpanXcCCcuOakBuUlLJjnjJWoohIihYtsNnShHSsxLzYlImEyYhiCJhHhXxMEemfLOHzZleCWlmAYyTIivoOZzvVrhKkSxqcYyfTtFdDnpHhPQgGqSkagGTtuDcRrbbWsMmSwqJLIwWfMmFUEeudDiMmEMmUlLQiIqrUujNsSZBinNqNGBboAbPrbKUsoBJNISsmzZfFHQEsXrswSFuhMZSrUOouGzMWwNCfvvVALlvVrRtMmFYyTVxXXxvFmXxmMMcCnNTvGgVNnuUgGxRCCKkcSsiIiqoOoObBySsdDYHhywSyYsBYlWwkKWpjJPtDcaEAHhifUSsWwcIexkKPwvoOVHYNnySwCNnkYyrlVvxXLNNdDPpaAjJHVvOacfiGgIeQvDdDBdDbfpzZNNnNBARIQzuUZIBcCoObhHkKsPiINWZlzZsRVvMAJjbBVvlHJpPyYfFpPSPpeEUudkIgGzSpTZVdDAOUFgcXxkeEJwjJJRgGgTYvZzEeZnHhynNetLaARzZrYUuybBwNnWevgGSKkBbHhIYaADdDVSKkEACuUcXiIzZfoOFxwnNWawfXJjelStkBbZzgLlDdoQqGgZzuOonuEegcYDbBdyJrVBbhMmjvlgESsrTtNzLnktKjPpmgGXNndDEVvSsAcOoZTtzfFiVbzZUVPpKbOBbBUccCyYCHhgkKnNhKkXXOAyUjJzuuEWFfuUyCchWwQNoOamMVWwdoXBMmWdDVYyWYVmMvnArjJRfYyyRrCRBxXIisSRyYNnmMaAPppkrncCNNnIXVIfyYFhHKGyISsusSUSWwnrrRPpRIEeoOUuiNiIwWrkKRhPpeIiduUDxcCXEPnMtTaHhiCcWMIiyybUpTulYwWjJFfVHNnbBBboOhHpVvKynUuNnJYWEJjuPHJjhWQqPpPXxyZoeErtqRrQMlReEtHhRrTlaNnNnAHPbBpfJvVBbjAaBWpHgZzuMyVvEXEeKmMGEegVxXlKkKksSwJjpPpCZzcPzZNnnxXmLyYzVvZlMjizZIeWmMctIiGZdvViIBbdoOzuCcUrrRMSOsUKRrkPaYyqvVQpPKfHhTtxjJXiDddSsxFcirRInbWwWuaVvHCcIiVEzsjbBTtIGWwiyYqQhHIIzWqQtlBbBOoQqbhbMpGWnNwjtVZzvTXiEeiAaISNiSsIUDdgPRRShgiuZztzLXdgGOowrjJRaOoVYyvlLydEAaNnfFsSbBeCRkTKkGSsKLwYfYsquUyvejJvVHGgbiqkKXxeMmEkJtTuCgMmRVvWoEeJzaOoAJZnNMOMAamnyQqEyYiIeDfFJjdBodDwWvVvVdwLsgGYASqwdDOosSoOHVLlYjIxHhfFJQqUuuNCfPMmpVpGcjWhHEGgHhvOGmhHMGgBbzreUkNXbBqQxnvBlLDdEebVasSAPpUbBtTudDiIiIACjJcxXLqBbDFPuwWLZzjzZdDiwUuvVZzJjWUutTJEeUuFfjElLeoNnUHhHQVzZGfPxhHJjrRnSwYyVMNncIiCmdDpWwsSIpJaAjQqPxXgGJjTtsSdNzCAaaFsSoOfhHjjjJQqcCRreoOxyZIiGMmDvgGVdglHhLYyeiTtIoOERrrRzqzZbiNniIygGTtlLPLlvTtTtvVRyYEvrRroEsqQlLHLoOWwzZGgVPZlbBdDVCcvwHYdDojTxYAjFfbLtzmMnKMmUcCQGmMGfFMmGBbMmNnzZcGrRgpTlMPpqQmqqQmfduxAaAGgPnNpauvVKxzjigGVvsBRrujkKulEUxXEeODdbBoCXxBVuEepPSWDBhuCNPyqQQqpxUuLlzXxZXngGgceMmAJqQjpZvLsfFfFJjSwGGlLXvYZMEeBGcCCSsLzpPCChUuBSPpynNuulFfGKwWYUVUfFuPpvuJSZJjzvwWNnGyFQzZdDqCJgrRAaUIZzTiGCcgtUuLlLqtKkVVBbQirHRrbBImxXMiUuNaiIANTUEeOcquhuVvSspMmPrmsVvSMdbBotKUlVsSvNyEeCeEYTPZgGcfBGgitnAzzpPusyeLlwWEYNwwoONncCsSMbBmdDFfxkeNnExXTmJHmDvWffFmxzbBxTtdOoRrfcCcdWQIbptpLxXlPMhHmyIgspZzYNmMOdDWBcCELlQqlLlLoOEuUTsGoOVndDoGrsSfFRrRkcCjfrYNnJQqbwAsilEBXCcCzRrzqrRsSBbbwWWZSGMmgsedQqcCOetGkmOnbPpYjJIqQTEeYvXyObkKBLxXlljXLlxJhaiIANTsQiIbGNnjHhZzFfeFfXPpuUyzlidDAXMuJjgmdDDdMEeGDTAopOZnHjRkKrSZTeJjEOWXxJNaxNpljrKIVjmMAaJjcCgEupHYyRvnNVOMEemBbfyYJjJjFdHoSsDdORCcUMmQqolKkmMLNnIYVvcACndDOZIizkpUTtudmvgGzZVCMIiIAoORZzriIjJQWnNaZpPtTzAKkPpLDKFvvVVKkQZMmzvVoOXTWwbMBbmrqUNnCOvIgrJVcfNdnvOOoAwGJifmkKLljSxDaGgweYyEpmMtbEeBJcEUuyYmMWYOoywcOMlayncPZzpTkKDdKktsnWeEwWRrJbQSoPpgmSxMMPcjLzZWqxvVKKddpYUgKkkujJqcCQVvJrCfFcNqQHuUJzpXxCOnNocBgGPXpFuTtFQqzZXzZpPaDIiNSsNXwDMmBapPNFfYyeEnMUueEEpPCkqZRoOKkkClLcKbREkdTKQollFBIiZzyMPieEDEpPeQqAOoCuAaUujkKVlLDgqfFFiIfaAJjCcNWaRvgGVqQvMmgsSthjJHISuhuUHhHzPlPcCpwWSsOjJOZqQGgfdDkZkKJzuUZjvVQilLGgQqQiQAabBkKOoqQqXxoOGYygRrhHIauQKkBmMWSZxziIBbnNwPlWiIrIMRTOodDjpAPLbBljsfbaAUmMuBUSNnIiOoEzrfTeYEJMLxzTtZEttTiqEeYyvVSzdnMmfFLDfIimrJImRrMrdylWwSsotUsSMGnFfNgLlUumEeHInNgDxXAPJjpWDJjfFOorMmUcsQjjIrnGgkebjpMpPlLamMEezbdDAjIOomWEuiaXxxQNfFnnNKYyLlPpkJoDYDdiTLltbBsHhLlTtZKkRrzPysjRtIiMmXckEwWwbjxIilLIkesGglLSEjJQxTtSsJjnqJQYPOowUDCvVcVcCDdHhTUzXmCcBbFfuMmmvRrEXwmFrRaAhHJShGWdUubfFBxZzjJVvpbgvMeEmViIUdDBbVvfzOokKZBvhHVEeDOodQqhGdDJjgOoJjYPgGpvsWREzsSSPDdppfFMmGPpDdHhgWbBqkWtJjdPpRQrRBuuZzZzrRUuUyYrBbBcQqeMdnNaUuesXxSZzJfMgYKxeRwWjcyYuUkyYpPIisTtKkSzwWHhMmfCYyrkdDGwWgPEwjfVfQbfFbjrjJWwNuGusQGgrCWwcuZzbpPBXlxamMAXcdpbBNMjZSsrKhiqQqmaAMUuSscCQIUuUPuUyYuALlZWlLUcCuOTmQKFfJVvNQnQqaAlujwvUuYxFioZGWsfFSwgndfDdFVvEFuOQqKkMKkaAmKZTxNnXvsfFSejJEMuPRNRrfZzqsSQfdDTaAWFCeUupPbBEeBDdeEbKkYdwjcPphGPxXHhoOoxZnNNmHBZzEISSqQsFVTttTWwAvVkEtTlLmPNnEetbBDNqZzXByYbsSpPoCOoconNuUlrValyYLSsADPpzZdOovycDdMCCvVeEEoEHhHxQlLqXWiIHzVvvVoOVbwWBfFvzZUuZrbJjQyDdAaYCJvVjZzRkzciiUAEFfUdpPWwWUZjJzgwlLcDRrgGNlLiIfDdTVmMTqQxeEXESmLlypFfPuMmlLUEmMaPjvipOwrRcCwWXVfFvWwWEcCmMYyqOoSQWwlKTtknNLSsrRUuRwzwWFMJMmbBTAcCTtZzatGgsJvVjZzhvVExXeHDddZWwCchyYoqQOLljvVJpsbuUwWfcDsZDiIOUuIiIcdDjyOoZxXBbFsNsRocCfQqwtTWFYzezuUEeGOopnNtTmDoOsSrjyJlmntTzVvcPReErRrlLYyDBbQqvVzZMqvHhVQmWyksSXsSuUjGgSteBbNnSQqsXahHAvAaVJxQqdrNnyaZRrxanqhHTtNqQnEfQWwPDaAdwWgVvfWjJxjJjUuOXYyxQqPpEPpxsPdYZGSsgzhKkCFfReErcjJHHxtwWTunNLlJuUIiYyPpkvSJNrzZxXrWVKkjJvnlLNwEeHjxJjKkGgZNCHhcpPnOoUuYmMJjIuUKMTTtqkKQqQdDtqQcZQqjJxixXzSsnNtHhTWuUTtBDyYClLUujLxXlRoddDEXxeJtZzUOoumMSsTkhHKcLlbBLAaaTFmaAbaAdiIsKeIiiDtTElCcQqsSLTqXmMDdxeGrCFzZPtTxXEhnTSYysOLUnNZzOotTceUxXuNGrPpRgZzHhnbpUrXyMqqUuQBYrbBPGgpoxtkOoSLlhkGdTtQqCcHhXPpgRryLleEyGTXnnAaZSKeKfFwWRrYyVvrFfwWRDdZzzZjtecrRCXxptdabvmcIDdDLNhsOMmoSCEqxSkmeVvsLlhkKlzZiOoOoRXvVwoMASsWMmwpsSnNhiIHuUmnNhStTCwWjLFflqvayYHqQHXSsiInSsNgBZcCtmfFyYSsJclOoAgWtTuUcJjfFCSspJbGgBSIiAaQjcCJYHhVvyCzkLXFzZWwIiEefAsAIiPpaHpkKJuUPpjSBbswWFIZkKpPIiEepmMqQeGgvVOzZvVoaqaAQBwWbdDbtMmtgiIGNXxnrcYyzlMQMMAnxEeoOhIixRFhbBWAJjNRTxqjJxSsvOnNoVRkKrmEeMWAdDRrzZaGgDdbBEXzWbQUuGgVJjmAmMRQZsnsSTtbBNpqQIiaAbBMZDdejJPpEOlLoKkzDriIPQRrkKMLlRnhbEeBFiAaJjhDdJjaAtTcvTKOqQopOoEebkXxOemMOoZsSRkjZzpIyGCJxkKpPXBflLxXjJFrPpkGgKJdEJjqQOpSBKkcyhQQyWVMaAkKqtZzDdTmbBaaWweEnNoPpFXKdFtTDKcuUOoWwCLxXlkdfNcCdaHQMOkSsKRrYFBGZUugGgGzxQqXgENBbXxuUFTCaTtkUTtlLMGdeKcCmMnNkKLxXHhlwWLqXxhXWwsSWRmMrwGrRuaNdbwvVWgmMMmGDrRdgGPpgNnHhaKKkkHhqQKkGgsVvaeuOVcJZQqmRTzZdZZGgzzNnUumMDQqPfJsSDdHcCbBvuFYyfIkKiLlkdyYaAPMayHhYIJjvVoJjOyTgcCGCOoQqvQLvWFfwcYylVvGrkqQQqDlLQqmFfVvMRiAODdDdgGWPpjJwshHLuUCcrRBbXSsxWkKSTtmTIiaWwAtKkCcMeyYEpPrRmPxXlsKmLlKtDdAaGjOoJjtLBBxrTtRarRAbBmMloOLsSXhHgmMwWGWAGzZgNniwWIawWIidDhHOowbrRkKVEeyDRFwYwWXzZxQTcMmxXyYHvVLlPphdIdDPprQqdHTtfQqFJyYtTjhEeIYomMWwOgXbqQnNcWCeEiIcalLAwnuazrnNNnRRtPfFprRsYyScqQFfBbaaAAAEevfwWXosSlRrvlyYLVSsTmMnNqQMmrRDFfFDQYyrRfvVFqUAIiQoYvVOxXpPjbodqPTRrPEeBGgQqEeRBbXxdAaHhSgMVIivqVvnNVzZCcnNyDdbTkKXxtrqAaDdLnNhwsSoFfVOoiICcPYcCUnkNAaDQBmMUKkicCrfFiMSszZFxgNegJjtQukljMEemAhHWwalLyYVvQeFsSfEqSsgGvbBVPpoMVkVvKKyVvWwBcLlCrRKkpRfOoSTyqQYAjJaEyYaAeMaOokBbuBKTZaAdNZzFfvKNZzuUTrRPpPptOoXrgGXnzZqPpGdhHnNDgQAnNrRxgFfGjJXaqTtzjpMmbBRKdDkrAaovpPblZrRzpNDtXkdDcCLlhHbyYjJTvehqQHANjQqZZIDdizaMmTtziISseCcOjJhHiIlLonRrlaPphrqvOLtwsNnmMcCkjJKgGKsSriJkKLwRRrrRSsrpPCQqcrRJFfjDAvcCQDLlsSdPFfSslbBSmMhHszZsSjJjoOJUuLUuOeEoAabCcDdRrnNOokVVvCYyjJWLlwDdrRndDlPHoOhpLMmNIiDrEOoskGgKSzAcCaNCcOeEoAxXacEZzyYtsLIiqQlpPSTnRrNmerxXvVUuQmMYsyVkKvYSFfylLzZkypLynNYlzUcCubxXTFftuzZYyUsSJCcjCcFfFfHmMkRBDFsVdDOLlUuzZmOHhoCJmMWFtbBEJSshNrWPpHfSnTtNsFKkzvWXsSEeEIieWSLzZrHhosMmfzbIiFtTNZznuUTthNnUXRLlrxJWAqQQqFftaAjTfgGFmpwWMoOTtKksSDJDdjeELZXwBbWRrSscYyeejJFpZzPIiNxSsLlRryUuLlwWudDuUcCVGfFgguZzKNFRLHhdDilTtFyYRJpPaAwmMWAPGgLvSsVZzXxldKbBmSecCpPYFSsSMmnNyYiIsOofuwJiMmIsSszVBeEbWQlLqAMsXGXxggGkRxXgtZkKIihHboOxZFfzNnKkXXxzWwwATuTYkMmKhHUTtwDiVEedDJPpbBgjJGjGgvtqxaAXJPHOohpkKLiuFsSxdDbOqkKQoVvMobJjnHJhCDdPpvEerRipZqDTpPuZzUEYbBynpiNnIJjOoqVfFRrvvVuUcrFzZfLeElyaKIikYyZCFlLQCGjpPkmMWUxebByKAaZsSoVtQqafFHPprRFDdtTZzKIikSbBCyYcCJAakKjgiOgGIxNnLlfbBFXDTxyYXqQSscnsSIYkpPEZzFfCcaAfjJFzZlLyYEeKkEPtwJPpjPWwpfFEWwbBezZDwWUkKuUVvsYiUuGiBXcCxsyVCWwSQRXRrBaYkKymLlBpPKMmHhndLxTEcTQCKwWtTgYybBGFfIikTtcVvmMHwMmWhuGMiIyttRrSsRroOESHhUGguTtfkKMmiAagGUZzfFWwPpLsTtSdTtGgDybBYjZGFbtwWTBflKkvVLgFRrfXBbLlxzQkoOKBIBbirhOoczZnNRlLkkTtKcmkOEeWwkkKmXxYpPFfrduzmTOotRrMauRrUhaAHeqQEsEqmZzPpcCMyUgtfFzZpPSCcpPsWgGwTeQqmMosiJjWdDMOMhcCUuMOomxXTtSmMSsskFLoUuPpcCkUuFEeEejAaYiTUDnfFyzZmgdDWwAaAaGeEMXXIiMmxLwwlUFfgGbBuBbklVvwWfFjGdlOoLRrmtTMQAiIfzuoQqWwpPtTGuUgOXxDdwUuWcwgbKAakvVxSsScCjBrqpuUPCEKzmMZFdDmMTtstTAaSoOELGgtWULHhEybBYzxKzZcCSsVKoOlLluLlhJjxjQqJfUqFyPpbBECciKbBEeXhqQVIYiqBwWpPzXxpYyyYSQccCZgGzLlPhHnNpxVxXjThfFHuUnBbgGNialtxJjcCBbXIYCcygYEdzZCQqaABywpVvPDZzdDOoeQdDqSvVsmZzMuwNGeRrDdrWwmclZQbWwCcBqzKIrRxXbLlcVvCBbBNgGdEeJXxsdGvjJhDdHdDVgkvVKmMoODQqGcCgMmSmOzBPJjHroONPwWpnSDHhVvjIhHiBbLlEEeeYybBJjwWJCcBbXWpccrROoHBbFfQqIkTVvstTxcCEQtTYbByJjGlBFfbnNLtcQkjwgGZzgeEfmMKkFMmdbixCzRgGreGwtFfEPTIiwufrpjJxLAaYDdynNtHhiIsSKkTAtPpbdDBMmTiBGIiIVvMAbBlwWPmMaAkKpBoOHHJjFoOBbfOokwdDWvmMxwZzWRycZSszCWwKlLkhHxoIKBbkiDdkKOTtnFfYDRrBbFeEfYOkIiFfIiowqrhHWFffRRlLrlRXgGxroiIzZIiaAjJNnxDKkijILNocrRyaWuUTlYyEePptTLKkfFtwAAMkKZXxSsKoBbOyIwWdQqDFfcCxXirOFfTtoyeXsRwWCcbxwWPpnWlaeEAMmbaABTaxyYOoSIisQqrRNAoOWqQwIcCivrRrRVsSEJjPwWpeEHhgkjJKBPpMmbOoNhHNnIiSsIidDhKklLHcUrGKhgGHpAjJaRXxrGZzkmMCCWwyGglLbdDGgBdwpPqQnGCcDuUWwjJdmHhEeEeMrBbyYHnNzZheEnuUNIibBpPRAsIIrqQgGGgMmRwdDWRrcCgGRrwWixXnNhiIWtTzZbWwTZzVvyWTtwQJvVxlNKzfFBtTrRkKkelMZNTBbUuKkiIPpKaBBbbcCFbBxgGXFfyYSsfAkrZzSsRtxAaXJJjjdoGgGSsRKYEXMaNGfrRRrFNrjJRnpPwubPpiwWmcCtcLlnNKamMbdDhKsSZzqkASsMUEkRrgvVvRKgOoJjdDUfFjksSlanAGgazZaANQbBSsmMSsqyYIilJjKZzoOkAaFfKKkpPkKRTtDJFfjwWjIiJRbBrdqQpPYgGySsyYmMrTRTtGgkKPlztEeTZPprRLDxrIUupkYyKVCPlquUQOTJjtdJjTpcgsMDdaAgKXZzMmdDysuUDIBrhoOHDdvVpVaApWwYyPvTtcCDeEjJFCcSsKpMJTLSsiIuUVywWXxEysBbdsSvVLfFoppPtZjJzIiTRaAyxXYOOoVvnoOfTtdQZZJjaAGgIQZzpPVvlnJjNUoOGgOohIiHiIvVXAaxLlZakMCccCgGmKwWUsSuEAnTYythHSFKdDPpOBdkKDDXiIoXxkKICGmMecCEJrRXbBxKkDdMAeEsyMLjJlcdDIOnvVNoMmFfIHHhPpkKkgyRranrFfRXxFdUeEuAhYyYyTYyCcWwUuvcyYCaAyhHYITVvtgRrNvdPpveuDdUAszZSqlLEevjJuUVQqOoQVQPpuhHUfFqHOoEehQqaASsvtTPUupxTtIihRrXxHwmPzZMwWIjrHSsCcLDdgzZCDdFpPGgczPpZqJjQaAPIipCVvsqQScRdJYyxXjbBDLnNVvyYKOoOhTtnoONWmyoSWwOuuPXxaqQMEepPvVxXowWGgJjOkKGgRrgFyeLKkHhlPpuGgUskKSEcyYLlyOkKtTUugCaAcDFsSAagGwWmMCUehHEuxXwyYgGdCcDECdDdDHhHvwQqWVCQTttIiTeeEAajJEKkhHPpsStnNTIiwvVWcCUdDIzZioOFaAfucSPpcCshHPptTPTzClRrLcZPZzJjpuUZrREzWwZtTpPegGWwsDJjdmMlLVTtEmMeWeEwjwRzZWwPgRrGpEVvexgGfxXyvxnFAafNXqJjWAavVvVUuNnwAVvadDQZzhDPoOpdclRrRrLYypPNnxkKvVXCWwBYhjJHygGYybPKkpHhGjVrRrHheERZjJzDduyYxMmlLWZvoOlaIWwixYAaysSXJjZzATtVvRWwWqCcIHnNhYyiTsSezZzZCcwWGsgDdGJjsYwYyjAahqQIbBYyZcDdlLMmCzeSsKkEcUnNtgGTJjuzZzZwnkKaANkKWMmMmsSmMAOoaBEAalqQFfTtqQPYywcLluUCBeErRfFbCcrReEWGgvnNVVnVvNvhHrRpLrAkEeURPoOTtpKcYYycCkKRXxrpPyGgCGgDAawWTtyDdYyYZztXxkUEtyYUSsuQqxXMPcCpbBwWMpHhTGgEewWVNnPLMmlqPtTJuxXLlxzvVBWoOwbuUhHrRkArbxXBjJGgxaAQmMquOZzofFUXpoOXxHhZrsSTaAtRgGeEXMcCPZgyYohHbKDGgmMxXfVyuaAfoAaZzQcLIHkKCcYAgGayPYfoOfFaPpGgAtTpPyrRRrXxYnNFTYybZzwzZGgWNntTOocuYBkKbNFDbTGIcCyYqQLcaAfRJjjJhHHhAabKCcsSLlkJTtjIOoRrVvicXHhxDWfuUFIjJityYucYdWBPLlqltzjtcCkKhHYyPFtTXxsIifSsFPyYhjsKkYyLlYHllLpAWDdwSsanNGMmNBrFfReEbQqxuUQscCSBbwSsPpyYWqiYhGcKkhTtOoHTPpjfwWBmxbBVvjPpCOdFfIQqhHZzigTtGDreEDdhJjuvzZMVYyRrmMXtiIwWwoOWPguNJjnRrJdDZGggBVvzZOoSsEeNnwOJjsOoSNxXEedDnSRrXxqQuQqUVvsBbHhFFkKDdffPpLHhleDdtrydDznNRrcqQCXxZYyyInNNnhuUHMVvUuYXxkKRrqQErRRVvTteoOESOzZonWZzCVvcCcwpwWweEkKajsQqcCwsSWcCvVEeSJtTGyzZrgJTLlNYyXxmMnWwDdheHhEHNGbBtvaNnqQbBAVUutTeEOoDdzQqgMmFgGzGgZzZyYjJfFfnzCxsSeHvVeEaAEuUeHhuUheYyhHhHEEeEBUubfFywWAaZBbBnhHvVNejJonPpnVaAtTGgPiaDdYjhOoHJYvAaVoOvVPpdDyRLlrNFfIxXwWXxibMviIVFfqQmBxXicCHgtTVvGZziICbBcWwcCJjYysfFKkNMmnSMmOAaFWISssyYSirRdDzNngGSsHlLQFjEvVEePpuUZzygGYeZXxzNnWmQUuoOzIiZQqWHoOhNTPpkVvKdDSsSACYvYyVEeOoyrIiRdDcFLlJBAapFfZzpOGTtgosfFSPgAUuaGiIPdDdEppPPORgGuUVFyidIcQqCiEewWaABuUfyYIirRRrvILTCzwoJjMmOAabBCfFvVcKqfyQqWunNdgpPOZzstsUckKCzbBhHZklIMmxXicYGgywWCMTtfbPpjJBQqFcubBUPpGgbuZtTlLEeeQqAagBeEXxaAWwgGbSJjIwWnNisGEhHWwRSRrsIiRrRxPpXcbBGgrHhtHRRcmRDdyIfFinTtQPpKkdDdlcGJOGgqSsQhHiVyYvZzsqQSDdlTRrMsSBZZxXzHQqcClqPrCcgwWHhGRwVvWpQHhqMJjeEAamtIisCZzcRrdfpPyUBNrRfFsSnmPpKkuUtTokKOQqiIOoMbBkKDxXdOoTSXVNnvUuxstbuUEejJFfmMyYXxEIieFPpbBKkfIfmMFFfiruMmMEemEgGaFfAKBFfozbBZhHJZkwyaAcCFZXxzAaQeEqSsTQcpPqQMGCiIceErRNPpncLaAlCkKPpgmnNrpPRZRrfsSMCcrLVgGvlRDduRJjrxXnlLNUACcatTKjJLKkhkxxXcBbCdMmDcCXKPXEexfFuUQqBbRrYsAQqaSyuUpyoOFfYkOoUeEuKlrRLqQvVQxXXxPKkpozZOqPKkByYGgbgWwzZvVujJYshHhpYyPdgGDbNnByNnuUkKAFfYyaRLJeDduUEjHuUhUuBvVdDbTtBIiQqvVGNngbPpFyYvVYyfuUcCiIRriNEgGHLlmMPppPKLlMcvVQQqqBbfFCmPtuUwWycCZfiIFfdKMmkHLlhaPpVlitTlsSQdDppIAainkHhKNJMOiHhfFyiIIgGiYgfFvbBViIaZzdXtfFVrRnbBnNZzRrNvdDkdSjJsQgGoRrjJOhHAavSsVKhHnNdDkqFfIiDOoxXKTFfZzixEGLlWKkwQqIiDdXoDZzSPpUBCcHCcQqhRbBuuMoOOoKZzgjqQJZZzgGLSsJBIiBdDCsSPpTjJoGFfgdDOqBbQbcPpCnNhHBdRfFrIcnNYaQqkKAyCmQqNHhnAZqQzJoGPWzOovDBbaWwNRrnufnNFtTkVvKlLNczZtMhRrHfzZUuteETyYaovVqiILTwWtlqpPQQqBDdIitSsnNTVvCcxjJMmoOiarRARSLlnNhHAasPpYqQnCcBbjJNsSjTtAakYmMyTthHQqyqQYvqQqTtBbBlLNonuUNGgnNTaAtdDrxZzXfFzZaIFJjftTqTihsSXmqFfTyYhrRnNpPpPvVYyXxGRryYgFQfFdDvbiwWIYyXRrxGgnNBPliIaSGgPfFpsHiIhwxhrRVuUvDdiIWzZwbNNmAYyGmtSsaACcVuOafFDUuuUMmHhHBZzDnNdKkbhpbBPnWwaANjJhHoODduUzxXVvIiUupPIqQCcnNbkiIKBdnNrkKpPRWKVbBvZaiIAzBbzZfFkTtyiIDpsSTtaAYBVvPpVvgGFfmAFfaMmwWMWwGHhgDdtTfxXFliyhWwTKLlvefFEVuUMmCMmhHckTtuUsqoOIiFfkFfSnNUuUuuwWUsKCRbBrJNnShqQHDdCAXXjJxxNhHiICFfcfFsSByYykKfFOJiIjgGrsSHhsiUkKeDKqhHdDsSQBbUuGjJvVgTRbrRlLBnNlEeLdDtRrjJTnKkrIizrRrnNAhHaAiIIiKBYyINnivVcSsCOzZbBZzobZzIRlLrOonNdDoOLoOxXdAbBoOarRzZDLCnYycWgGwOUuyMqnNQsFnNBXxJnNZtTklLVKsSpPMmnTIiRTtrtzZtTuUDdPfHhQHiINJBbNpPniIYTtXxyjQqSsJZdDzMmjZoOpPzhHntEeBbYHqQQzSsHhhoOPYqHXUZoOAavVMmzuCcxqQgGCccerRECYyqiIQdcCBbwWCcDsBysJMmwWmMfFyYjhEVvecCQqrRGBfFbtTgcCJYwWyUtSKkbYiIBEebybBIiIiJmMjBHhPpVVvHhIrRmMivZzLlkKxHhmnNMqrfFDUunNlLOooOIGgiEeYyEelUiIuTtTbHhOzZtTnEeNozyipMabBAxPszZSYysKkTteEGVvgCcWSRrsbfQqFdKkPHAaAadDvVxqQXXxqNnxXQuUITtMmAypZZKkkKCEecjTiItJBbOoiIykKgGYQqIYcCQqbxXBYdfVvFEvVeMolTuUtpdboOPJjcCtTilcCLJjIHhYyXoOxvVCEexXRrnNkKKkTtskkKKvrRVSfNnPWwpFyYWwvKkrRrRDdrjJReEGgnUuNnNgUuwWzZDHhERreBbdvVzFLmxXMFfuUXxXcspNFfkKnKkJqHhfFMxXmLUumMcfFCGEeNHYyhlbBumMuUxRrgoQvVqfuZsSzUZzQqiISfYyFsCgBbPpGkKWKaAAaBwWwWbzZVeEdDqQvhHkcCWHhwfFaAnNwcjjJJFkJjjJKUgGudDODdoXxzZdDbBUUSfFvVLsSloOwMmWAAprnZzNYIiqQyxzZXRPQquUIiXvOoaAxrRXxvyAaYpPPhHEwWIiIoBbtTBbAacCWnrRYyMmuggGocCKkjJLlOGsSiOoOoIOahHAoMmwrRgGhTtHKkhHBaAioiIeEOhlLCfFRrkZzKxpKiIkPZBbKkSswnNMmJjzZWTtSdbBDmMzZsmLlEepPFfDdxZzqQXliILmMNnkZzRrYJjvVPpOodDFfiIVvNnzZxXRLlrlLybBbBUHhucYybBnxXPpNqSsofFOQcywAawjyYJWWYrRkkZzImMiLlUuKUDiIdnNEhHMmCcdDNAanephHWwQqbBrRXVDdKXxkNlLnvxVvUSsuaWwAUPqQkKAaEepuRryPYfFypJKkoOXhHxbBjqQhHYNnynNgVvbBEeLloGgOACcEertTpiblLEeKfFfFdDKkYKkGgrGglXhWwHlLweERzkKZrnmabBArRUbBmMNPlLlLpTtwWvVnsSuWwaAEnRFfVvmMyGogZzGuUZeEqJjQqkHAacCtTjJkKDdKksSzZFfhxXdDXbBxTeGgEVvtXPpxRXxyYTbjJCtTcVvQqBwWYyQRrKTyYMmtTtkTqQTttGgfGobBOHwjJWhlnNrRLgKWtTwdDkEedDyYFDdkzZKcVbBnNvwnxXNcMmhOosSVBbBLlDkKdaAbvuBbUouUTtOfQqEeFLlKrRkHFfSsTtdDGgzhHpEePMfFmwWJHsSvHjJhBlaADdwYyWwWQEIinNBbqlLwWDdhVvHjJHhWwaABwpPapPAYyWxXOolLjyYwyYWQqaATPptJtOoOoTbPqoOSbBSTtsKsSxXxXgFfqZwWcJjCzQkTdDtYyHhKFQoOqjJCcwOJjoEDdeYyGLlyYoOgWXRYyBbcCmHhJjMeErqrRlLNqQZzncQqCQKoOLhHVLlKkvdDzTtylPpNnLoEeOqCcvVfFJjZzKkUAaubBcCxXWwYyvPIipVlnNBYNnxXeErRmIiMFKkfHhFftqQTyjcCWwaAdOoLlfQzZHhcCCcKVvPgGNNnDdnpkMmFxXOobBHnNgGrRFKkfLxZzwWXlnNTtTIiTtTDJjsZzKkHhXPpxqQOoNJjLlnQhuaTtAUHBjJbSsqrvVDdRuqQUaKkUuYwubDderXYyxHQqhgGhhHpTLlGFEDderRZzYyOoeEfWoOwJfkmMzDElLAGDdgeKkhHzQqmMrRZTtEqxXQlLagnNTTttGInNvVnNCcZbBIizsfFSGTjJQqXxAbBahjJkRrKfFLeYbBiIzZyIJkoLlOKEfpSrRyYsPFejidDfFLgGlWPpwqQEEiInRXxrYysjJSodqQaodhMmAaQqPpYyZWwzlLfdivVTtCFESseAafcwWdDqQIrLNMmjJnlRxXmMObBaAoRrZzkKMpPmPpDygNFHsTtSheEfnXlttTTCcLTttTuJjtTvejYyxXFjJfIiJrhHBbRcCzZSsfFOoJuvVUmMMBYyMmpvJjnNkuUKVBbAavJjZzqQzZaAoOVJBbjJjEuUWwYyeaOHhofFKkaAzBSszGgZOobolLstTHhXxSSsObBOcVvVvpAaPmSsoOGBbgBbMdDtTKkgGrRkKKksSDdtTeCcwlLWECTttTkKBtVvmMTHuUhHbBqQhGgbrQPpAajoOGgJDdIWwiENnjJhgGmRrKkwpPWwWnNzwYDdXxysSlLoZzwWOMRcCoOcUuqgGQUDdjJuRrUIiuBYybCrmmpjpPJPQqLlMOogGhHtTWBAMmUuaqQbjEeyYJcCoOLNnlJjyEepQqPQHhqQqrkKIiIHhikKzZRtaFfWbBwSsXxBVBbvTfnNpZEgGwWejJyJjYoOaAgGzZkRJjLpPlrZzKiXxIEeoOeNnEVvUucAaCizZIrRcZTTttzPjODdofFRhHoOpdDsGgSgGPrQqTtJgGvVpCzbBZrMmCcqQpyYdDPpZOfFIfFiHhvLljJjJWRrwVPBjjJJbXxjJRrtwWDdYKkvzZVyGgyYQqTZoOzplnbBNnNAswWSpPLldDauqQUNVvKOokHAHWwhHVvhZYyzZzvVOGgoXxQqaEeEegGATDIiTPkfFKpoOzcCZtjJNndiCcqYyaAQIiMuUPpGRrgLlAamHBNnBbvsSVdDHpPVvhkKAaEFsSfaAZzedDqRrQFfXQuUqxfFNNtwwWjJYTtBbdDTmxXMtNIinjJYypoZzLlwWOqQSsqvVdDKkaAEeJjdyucgbBQqdDGCfSsFxdMmDgGiISsFQkKqyYwlLhHEeQqBbHhGgZybBrvZNnTtzZfFzcCTRuWwHmMhKkRURruZNnzskKSIOoiiBbYyTUutIrLFfpdDFfOoPVMQqDdzZgGQqmFfvYyzZAasKtTkKkSUuhOoWwvVxXXxmMmvXxVqQWwDLpoOPlpPdJeTtEjCcCcMqlLxlrRLXhHCcQSsFfOaAAaoOoyJLQdDqGgljRoOrTnVvwxXWEeDdJxKkJjYnIZjJziHyxXfbXDfFdBbwWxPXMBbmkKeEnNxplLLldzlYyRrGgLGBbpPqQAGiJOojNnpPISsgTMmoOmMRrmMtGgoGgolWwEeODdoLOAabBDtGgDdTVvbByjJmMSQqJHhjsYmMdOaNnzmMZuUnFfkKNCcxXPpuPpUiIErRqQeHhgmMVvKCcCcVvRnNgGrcpVvalLAJNnqFfQMmjPpRrPsnNysSYCcbBygHhXEexGxZzHhhwdDWoOHSsXKkjjJeEJwjzwWoOohuUHJaAJjjMmIiOJjNnoGgFfxLpPlXOsSBXxwWwNnWPwWpIYymMlLYybBleVvgGETFfGAoOzZaqJyYuUISsuUyYiYQVvqCcTvVtxXsSHhuUBiIcCXxIipPpWNIinlLwPSsbwWzZPOogYyGpGefFEeECcfmMFDSsdOcCexXEMYykKEexXDdHhdNiInfFnBbyuUyeEYnNSOoszZaAvVVQqQLlqdIioOXxaADvSfmMgGFrRBaAvVbEFnNZzjqQAaJEekKfeaKTtkAoOfFUduUqQDTyYoOtuiIsdqQhUuAaEeHxXWwhSsHWwgCcyAaYRhHroslWwLjjqQJBbNnpPJdDSfUuFIhMmCckuUKuTBbtUnNKkhHrSsRvVEtbhHBJHhjkKaAJBbjcMmCmMIiwNBbnLlWaaAnpPNnFeEvmMVnNHeLZzdDxXuUZzmMrRlEtcNsSagGFfDkKdMJjOomKkmMATPptVvHhnLQDdqHhTtlqQkKVvLQwWqWwlcIhHUwWDdutEYyeTsSiJTtjjJCOobBAaIUuPpiCqiIQEexBbdDXXxOoaATtFNkJjMmbBiIuUKeEnixXIaaAKqQkHYyBefFlNKknLKwWKkxXDTtdhYyqQHvVkpjTtjJSsuUJeSsEdkAsStRrTJZzvrRVjPpaFYrRyfFfKDdxNwWnoOgbBGYvVypGgPaAmtTOfFKEekWwTttdDmMwWToMZZvVaAroOwWRjJsiJYyjjJsSNnqOEeOAatvNnbBiIxXQqAaVMcUuCfFaAmFdDKGgPpkfFfSsyGQqLlMdDmgQLTtlcCwWqJSsLlPuULMmDdlpZzZzVvjWVvRgQqGrcCwIiQqqqQFfvVQhHUuIixfFXulLUMmUGguZCFfczmAQGgqqsSQafFwWgGsSrhueENnUHmMBnNcCboOBNnbRKkxXYyTXxtuCNncdDWoOzZYiIyNAaYyaFfAvVkKndDEerRzZJjsJjgGAZsSmbBMRiIjFpPCcXAatTxfxfTtFvVXrReEjJTWwbBZFfzZzuUbBTGgxXxBmMbXOoqQtwWLmWwPpjJrRYyZnnNNbwWBzrUuRtTBhHrRKkTtwUuQqMmiVvIsSBbvVmMEebBORrooORzZCcryXxYJzZpPNnmQXxbBqMmDdMVvhYyHNxdDrRXaAnBbcRrCIiYyoOjvYyKkVIKHhkJjiCqQEecifFIqYyQfFybBqQrZzRgGdmMDiIjJeEqTtQrRYGgiISshHHhUuoOeEMauUAeEmiISsWPpmMFUxXufzZDYPpHNnSsaGsStTgAyYhlzZyZzYLyfFUiIMmbBIvVTtigGPpQquRyYrLldDYyoOCjJcUIiKDqvVQdCKkckmMrZztTRWwMhNgGKCOCcockdDLlPbBMjJmllLLhHoOMmmyYMWwByYaAmMBGgoOxXzSsAasSDBbLlOoBJjAaBbbkKdZXICLlceEVvCaAxXzMaSsAuEiIZmOozZDmMdMzeWpPOoHhsSnNOoQqgGnDdcCjwYyumMrRpPUWJNYyzZnmXxXxMSseNnyYEAaBbCvVcFfgcoOCgGGoOiIVnBbwWvVNyGgYwWbVrRvBCIirWwRcWGOovVTtmMsIiShHCcNndkxXtTKpiIPKkmdDzZyQmMqYezZEFfqQDdYbBdDzZUksSfFKsTIitBbJLsSrRlBbjOoJSxXfFsjAasVvZzjJSStnNTdDcCwWWwzZsSsSFOiIoVvfRIirurZzQDdqkAaKJjXQqxWsuUUuSYxXyOowWzfaAFXxlLZnIiNZzBbwNnSBbYqJkKjzZddDFNnfDQAaMzZmJVvRrSsjllZzLLHhQqGWwcCgyrNnkKRPErRepsgNiINnqQnGcKfFUuIiHhkOoyjKDGgsbBbBdlXvVNnxNnmMbBLRrDSVvBbOcCuUxXwFfGgeEgTtIocHTthCIbKkdDBiLlSsDdOoSxCcdDwWXsHhqQRTtpPScCsKkcCrwWKkhnNHaSsAGgsnNKkCDdctTyYhXCcxBbHSeEHhTtoOojJVWwIipPvOoOrfFmSKkyYJOoiIjNnmMhHvOJjWwoDUuIjJicCnyYNbBQpPqbBZzdWweEVgGDdCMmKkezZEZzcaAyYaApzEeMUumOAaRWFfhFfHTtYywwDdTtNnJQqKQlLTtqVvQCcHhqZpPpoOdDPzdDsNnIqQbWwBicCnPfDddyYsSyYALlaxjJYyXcCsCRrFfcSDPyKkYNBbnptZeEEezAaKkXTtxCcdDaALlKWwkAaMmdDCKgMWwMmmLleELleoOEfFqJjSsQEeUPpKkuEeMmuUZqMmSsQzxDdXXxIiGwWPprRkvVkKvVIiWOSsoJjUMmAauGgmMUuwQqoOcVvsKkSCtTmCceEMAQqsUQquSaNHhWwnUukMmPpNjxXFGmMmPpMGgwWzZdfFDAagVvXUuJjKkxQqVvfJgGjFpHMmwWfFhcCDsSdPRrOYwWdxXDznNOOYdDyoAatTZEesSzkKkRrUuxdDoFfOXlmXxJjMJjaAwWpPhHQqjjJJDdOolLCcvVLKgOobBvVaAedeEdDrRNnDPvCcVpEUNVvcCxXnugGcNncimmMMgGItTCegGExXCLKkEbBeVvlkKZzGBVfFhHzZvbMqQhHmbOVWwvPpuyYUoBidDkAaKiIwWCcIBEeJjWwbvEeEeZzSsVIiaAQdDIiqHhgGvyYVxPpfFTJjtXAaNnYeEDuIiUluvVZzUSsBbQqmMLAMmafFdZzvVXxGgaAVVvQFfuUtTHCchmnpPRrAavRrVNBbMwWXxqxXvMfFhHXxSzZKkVmjJAaMvbBmiIMCuUhHcNnWwRrNzZfHhFDnNdnBMmBMmbxPpXxXhHbwFaXxAfWeiCctTIELlsoONnSkNKkRrnKtXRrxTstaATzVEeAnNeEavrccCXKkZZdDzzxzZwiyYIWexXEkoOKeEGcCgCRGgBbaKkTtXxABbbhHBTaAUuVvsSOsSoqQxyaAYyYcCLlJjoOXtyhHkKsSYUucNnCHhcPpOPpoCtcCsSLlPvnNVUuFfBbplLqQTtToOaZzAXmQqrRfFMpnzZNzhZzXITtiPpHtTBbhxhHKkPCOocZztTpHjbBJZZzPWJjjfFyYXhHxJBbQqwtPpqJoOUujAaQnNVvTcNnMmLXxnkTtKNndOSsoVaAlnNLvavGgVKKIihHkksSaAoNSsnOAaxXspPCcSrRGgOoeeEEHhAiwMxXmfNnyUuYrwWwWYyBbRTtAaTtFfxXWbrRBuUwBbFpPYZzyAacLlmrRMCRrbVvfFHhTtBsruBbOoUzZKVvkRHvilLIgQqGoOVaAJjAaRqQrhYyFfJeEKUcCukMmKkKAaqQklLtXxTrRYLYyeElyNnpBkKbPIiQvfRGiIgblLBrJjMmnNjJKkSNaAkKaAnWaAcChHwOoyYWvhHVbBwIisFfxXFiITtrnXxMmvViVvlLvVIiINjJOoXxRZuUzbBehMmHhHwbBWEuWwwWwWLlUhHgGnNeEncCNJjdDdDTVAaJjRrLlAoOaOnNnNmMPprRHhvhHLlVovVvIirhHRtPphHtThrRwWgGPpkruKkUMxXmRKzZNnrRaAxIiXdeELTtlyssSlxXjJTtmMLYBmmMZzyYJjsbBSMbySxPQqkKhIiHTtpYyoPpyYTtOXOomyPpYMYmMHhDKkeESnSsNgGsHeMmZRroOWaAwzEJVvjv diff --git a/src/main/resources/2018/day6.txt b/src/main/resources/2018/day6.txt new file mode 100644 index 00000000..8dcb9fac --- /dev/null +++ b/src/main/resources/2018/day6.txt @@ -0,0 +1,50 @@ +267, 196 +76, 184 +231, 301 +241, 76 +84, 210 +186, 243 +251, 316 +265, 129 +142, 124 +107, 134 +265, 191 +216, 226 +67, 188 +256, 211 +317, 166 +110, 41 +347, 332 +129, 91 +217, 327 +104, 57 +332, 171 +257, 287 +230, 105 +131, 209 +110, 282 +263, 146 +113, 217 +193, 149 +280, 71 +357, 160 +356, 43 +321, 123 +272, 70 +171, 49 +288, 196 +156, 139 +268, 163 +188, 141 +156, 182 +199, 242 +330, 47 +89, 292 +351, 329 +292, 353 +290, 158 +167, 116 +268, 235 +124, 139 +116, 119 +142, 259 diff --git a/src/main/resources/2018/day7.txt b/src/main/resources/2018/day7.txt new file mode 100644 index 00000000..eb586e71 --- /dev/null +++ b/src/main/resources/2018/day7.txt @@ -0,0 +1,101 @@ +Step B must be finished before step K can begin. +Step F must be finished before step I can begin. +Step T must be finished before step U can begin. +Step R must be finished before step Z can begin. +Step N must be finished before step S can begin. +Step X must be finished before step Y can begin. +Step I must be finished before step Y can begin. +Step K must be finished before step L can begin. +Step U must be finished before step J can begin. +Step G must be finished before step L can begin. +Step W must be finished before step A can begin. +Step H must be finished before step Q can begin. +Step M must be finished before step L can begin. +Step P must be finished before step L can begin. +Step L must be finished before step A can begin. +Step V must be finished before step Y can begin. +Step Q must be finished before step Y can begin. +Step Z must be finished before step J can begin. +Step O must be finished before step D can begin. +Step Y must be finished before step A can begin. +Step J must be finished before step E can begin. +Step A must be finished before step E can begin. +Step C must be finished before step E can begin. +Step D must be finished before step E can begin. +Step S must be finished before step E can begin. +Step B must be finished before step R can begin. +Step U must be finished before step O can begin. +Step X must be finished before step I can begin. +Step C must be finished before step S can begin. +Step O must be finished before step S can begin. +Step J must be finished before step D can begin. +Step O must be finished before step E can begin. +Step Z must be finished before step O can begin. +Step J must be finished before step C can begin. +Step P must be finished before step Y can begin. +Step X must be finished before step S can begin. +Step O must be finished before step Y can begin. +Step J must be finished before step A can begin. +Step H must be finished before step C can begin. +Step P must be finished before step D can begin. +Step Z must be finished before step S can begin. +Step T must be finished before step Z can begin. +Step Y must be finished before step C can begin. +Step X must be finished before step H can begin. +Step R must be finished before step Y can begin. +Step T must be finished before step W can begin. +Step L must be finished before step O can begin. +Step G must be finished before step Z can begin. +Step H must be finished before step P can begin. +Step I must be finished before step U can begin. +Step H must be finished before step V can begin. +Step N must be finished before step Y can begin. +Step Q must be finished before step E can begin. +Step H must be finished before step D can begin. +Step P must be finished before step O can begin. +Step T must be finished before step I can begin. +Step W must be finished before step V can begin. +Step K must be finished before step M can begin. +Step R must be finished before step W can begin. +Step B must be finished before step T can begin. +Step U must be finished before step A can begin. +Step N must be finished before step H can begin. +Step F must be finished before step U can begin. +Step Q must be finished before step O can begin. +Step Y must be finished before step S can begin. +Step V must be finished before step O can begin. +Step W must be finished before step C can begin. +Step Y must be finished before step J can begin. +Step T must be finished before step V can begin. +Step N must be finished before step D can begin. +Step U must be finished before step Q can begin. +Step A must be finished before step C can begin. +Step U must be finished before step M can begin. +Step Q must be finished before step S can begin. +Step P must be finished before step V can begin. +Step B must be finished before step Z can begin. +Step W must be finished before step Q can begin. +Step L must be finished before step S can begin. +Step I must be finished before step P can begin. +Step G must be finished before step P can begin. +Step L must be finished before step C can begin. +Step K must be finished before step A can begin. +Step D must be finished before step S can begin. +Step I must be finished before step H can begin. +Step R must be finished before step M can begin. +Step Q must be finished before step D can begin. +Step K must be finished before step O can begin. +Step I must be finished before step C can begin. +Step N must be finished before step O can begin. +Step R must be finished before step X can begin. +Step P must be finished before step C can begin. +Step B must be finished before step Y can begin. +Step G must be finished before step E can begin. +Step L must be finished before step V can begin. +Step W must be finished before step Y can begin. +Step C must be finished before step D can begin. +Step M must be finished before step J can begin. +Step F must be finished before step N can begin. +Step T must be finished before step Q can begin. +Step I must be finished before step E can begin. +Step A must be finished before step D can begin. diff --git a/src/main/resources/2018/day8.txt b/src/main/resources/2018/day8.txt new file mode 100644 index 00000000..0a2a2502 --- /dev/null +++ b/src/main/resources/2018/day8.txt @@ -0,0 +1 @@ +9 11 7 3 5 5 3 6 1 6 0 7 1 5 3 5 3 6 1 3 2 1 1 3 1 1 5 0 11 9 7 4 6 9 1 1 8 1 9 2 1 3 2 2 1 1 8 0 10 8 2 8 7 7 1 9 1 8 5 3 3 2 3 1 3 1 1 4 4 5 1 3 4 3 5 1 6 0 10 1 4 7 3 8 7 4 7 1 4 3 3 1 1 1 2 1 8 0 11 1 1 7 1 1 8 5 5 4 1 5 2 3 3 3 1 1 2 3 1 9 0 11 9 1 7 3 1 6 7 2 9 5 3 3 1 3 1 3 1 2 2 2 2 3 4 5 2 3 6 1 9 0 6 1 7 4 3 6 9 3 2 2 1 1 1 3 1 3 1 7 0 9 7 7 1 8 3 2 5 9 6 3 1 1 1 3 2 3 1 6 0 9 1 6 5 4 7 9 3 2 8 3 1 2 1 3 1 2 2 1 3 2 4 3 7 1 7 0 10 8 7 9 5 9 6 4 2 1 6 2 3 2 2 3 1 3 1 5 0 10 1 4 4 7 1 9 8 9 7 6 1 2 3 3 1 1 8 0 11 3 5 3 9 7 4 9 6 6 6 1 2 3 3 1 2 1 3 3 5 5 1 4 1 2 3 3 5 1 6 0 6 9 7 8 3 1 1 1 1 1 1 1 1 1 9 0 11 8 9 7 4 9 5 5 5 8 5 1 3 2 1 1 2 2 2 2 1 1 6 0 9 3 4 4 3 7 2 1 5 7 1 2 1 1 3 2 3 5 2 5 3 4 6 7 5 4 5 4 3 7 1 7 0 11 3 2 2 1 8 8 8 2 9 6 5 1 1 1 3 1 1 1 1 7 0 11 8 9 4 9 8 7 8 7 3 1 6 3 1 1 2 3 3 2 1 9 0 7 8 1 2 1 3 1 4 1 2 3 2 2 1 2 1 3 3 1 2 3 5 3 1 3 4 1 5 0 10 8 9 4 1 3 9 3 5 2 1 1 1 1 1 2 1 6 0 10 8 7 3 7 7 4 8 1 1 3 3 2 1 2 3 2 1 6 0 6 1 3 7 7 4 2 1 2 3 3 1 2 3 1 3 4 3 5 1 6 0 11 6 1 8 3 6 2 4 2 2 7 1 2 3 2 1 1 3 1 6 0 11 8 3 2 5 1 7 5 2 5 2 1 1 1 2 1 2 3 1 8 0 7 6 9 1 9 1 7 1 2 2 3 2 3 3 1 2 2 4 5 2 1 3 7 1 6 0 9 7 5 9 9 7 6 1 3 8 3 3 2 1 3 1 1 5 0 9 8 6 6 6 9 1 5 1 9 3 3 3 1 1 1 8 0 8 1 9 6 7 6 4 7 7 2 2 2 1 3 1 2 1 1 5 4 1 3 5 3 3 6 1 6 0 8 5 8 3 4 9 7 1 1 1 1 3 3 1 3 1 9 0 11 2 9 4 3 6 2 1 6 9 8 2 1 2 1 2 3 3 2 1 3 1 5 0 8 1 7 6 7 8 9 1 5 1 1 1 1 3 2 5 2 3 4 2 2 5 3 4 4 3 3 6 1 9 0 7 9 8 3 2 4 1 8 2 1 3 2 2 2 2 1 1 1 8 0 11 2 2 1 5 5 6 6 5 8 5 4 3 3 2 1 1 2 1 2 1 8 0 10 5 6 7 3 9 1 5 7 3 9 1 2 3 1 2 2 2 2 1 2 3 3 4 5 3 4 1 5 0 6 3 1 2 1 7 1 1 3 3 1 2 1 5 0 10 1 5 8 3 1 4 2 3 1 1 1 2 1 3 2 1 6 0 10 5 9 7 3 8 8 4 1 1 3 3 1 2 3 2 2 5 3 2 1 3 7 1 5 0 10 6 2 6 1 4 2 1 5 4 1 2 3 1 1 1 1 8 0 11 8 9 4 3 6 2 2 1 1 3 3 1 3 1 2 2 1 1 2 1 8 0 9 6 8 3 5 4 5 4 1 8 2 1 3 3 1 2 1 3 2 1 3 5 3 3 4 3 6 1 6 0 6 6 4 3 8 4 1 2 2 1 3 3 1 1 5 0 10 6 2 4 6 8 4 8 1 5 2 1 1 2 3 2 1 5 0 9 5 7 1 6 2 5 7 5 2 2 3 1 1 3 1 2 1 5 1 4 3 3 5 5 5 3 5 1 9 0 11 4 7 6 6 9 3 9 3 1 3 1 3 3 3 1 1 2 3 2 1 1 8 0 8 3 9 8 4 1 1 9 4 1 2 1 1 3 2 2 3 1 8 0 7 2 1 9 6 8 3 8 3 1 3 1 3 1 1 2 2 2 1 5 1 3 7 1 5 0 10 4 3 6 7 1 5 9 1 8 9 2 1 3 1 1 1 9 0 9 6 5 4 7 3 7 1 8 5 1 1 1 2 2 3 2 2 2 1 5 0 11 1 5 4 5 9 9 3 4 6 4 9 3 3 1 2 1 5 3 3 1 2 4 1 3 6 1 9 0 7 4 6 2 1 3 5 8 3 3 3 2 3 1 2 1 2 1 7 0 8 6 2 9 5 7 9 1 1 2 1 2 1 1 3 3 1 8 0 6 2 1 3 3 1 2 1 1 1 1 1 3 3 1 1 2 4 5 2 5 3 5 1 9 0 8 8 7 2 3 1 4 8 3 3 3 2 2 1 1 3 3 1 1 6 0 10 7 2 9 6 7 1 5 5 6 2 1 1 1 1 2 2 1 9 0 7 4 5 6 1 7 4 3 2 2 1 1 1 3 1 2 2 4 1 1 3 1 3 5 1 6 0 9 1 4 8 8 9 5 3 2 9 3 3 1 3 1 3 1 9 0 9 7 1 7 1 1 3 6 3 4 2 1 2 3 3 2 1 3 3 1 6 0 11 8 1 7 5 9 1 6 1 7 4 4 3 2 1 2 2 2 5 2 1 5 2 1 2 2 5 4 5 3 3 5 1 7 0 8 2 5 1 8 9 6 7 1 2 2 1 3 3 2 1 1 6 0 6 9 1 6 7 9 8 2 3 3 1 1 3 1 5 0 7 4 5 1 8 7 6 6 1 1 1 1 3 3 1 2 1 1 3 4 1 6 0 8 9 9 7 1 5 2 2 4 2 2 1 2 1 1 1 5 0 6 6 2 1 4 7 1 2 3 3 2 1 1 7 0 8 3 5 4 1 2 1 1 4 1 1 2 3 3 2 1 2 4 2 2 3 5 1 8 0 6 3 5 3 1 9 7 1 1 2 1 3 1 3 2 1 9 0 6 3 4 7 7 8 1 1 2 1 1 2 3 1 2 2 1 7 0 6 1 1 7 8 6 1 2 3 3 3 3 1 2 1 5 3 2 4 3 7 1 5 0 6 6 8 1 4 9 6 3 1 2 1 3 1 6 0 9 9 2 4 2 1 7 1 1 3 2 1 3 3 1 1 1 7 0 6 7 4 8 8 1 8 1 2 3 1 1 1 1 2 1 5 3 4 2 2 3 6 1 6 0 7 7 5 1 5 4 4 4 3 1 1 1 2 2 1 9 0 9 1 6 6 4 9 5 6 1 5 1 3 2 3 3 2 1 1 1 1 8 0 10 9 4 1 1 5 7 4 4 2 8 3 1 1 1 2 2 1 2 5 5 3 1 1 5 6 1 4 5 3 3 6 1 8 0 8 1 3 8 2 1 8 8 1 3 2 3 1 1 2 2 2 1 7 0 6 5 7 1 6 3 1 1 2 2 3 3 2 2 1 6 0 8 2 7 9 1 4 3 5 5 1 3 1 2 1 1 3 1 3 4 2 3 3 7 1 9 0 6 1 7 7 7 4 3 3 2 2 1 2 2 3 2 1 1 5 0 7 8 5 3 7 1 3 7 3 1 2 2 1 1 5 0 7 1 4 3 7 4 6 1 1 2 1 1 3 1 2 3 3 2 5 4 3 4 1 5 0 7 7 6 1 1 4 3 1 3 1 2 2 2 1 7 0 10 8 5 1 9 3 7 4 5 3 5 2 2 3 1 2 3 3 1 9 0 10 5 5 8 2 4 1 9 9 7 9 1 2 1 1 2 1 2 3 3 3 1 2 2 3 7 1 9 0 7 5 1 5 5 5 5 5 3 1 1 1 2 1 1 1 2 1 5 0 11 1 8 7 8 2 7 4 3 8 9 2 1 2 2 3 1 1 5 0 11 7 4 1 8 9 5 7 4 1 1 8 2 1 3 1 3 1 3 5 4 4 4 4 3 4 1 7 0 10 9 1 6 7 5 7 3 3 5 9 1 1 1 3 3 1 1 1 9 0 8 8 8 5 1 6 9 4 4 3 1 3 3 3 1 1 2 1 1 7 0 6 9 1 4 6 7 2 1 1 3 3 2 1 3 3 3 3 5 5 3 5 4 4 3 6 1 9 0 9 7 4 5 7 1 6 4 2 9 1 1 1 2 2 1 2 2 1 1 8 0 10 7 5 6 9 6 5 3 7 1 1 3 1 3 3 1 3 3 3 1 7 0 9 6 1 9 8 9 9 1 9 3 2 3 2 1 3 1 3 4 4 1 2 3 2 3 7 1 5 0 10 1 1 8 5 2 1 3 9 8 8 3 3 1 1 2 1 6 0 11 9 2 3 5 2 9 8 4 6 1 4 3 3 1 1 2 2 1 6 0 11 1 8 2 6 3 1 6 6 6 1 6 3 3 1 3 3 2 3 1 2 4 3 4 3 3 7 1 7 0 6 1 9 4 7 1 4 2 3 3 1 1 2 3 1 6 0 9 5 4 5 1 8 4 5 7 2 2 1 3 2 3 1 1 8 0 7 5 1 9 3 9 3 3 3 1 3 3 2 2 2 1 2 4 4 1 3 2 2 3 7 1 6 0 9 1 4 8 8 5 2 7 1 1 3 1 1 2 3 2 1 7 0 8 4 7 6 6 1 6 7 2 2 2 1 2 2 3 3 1 7 0 8 3 3 6 1 1 6 1 7 2 3 1 2 3 3 1 5 3 5 3 1 4 5 4 4 4 6 3 4 3 7 3 4 5 3 6 1 7 0 6 7 1 8 5 1 5 1 3 2 1 2 1 3 1 5 0 8 9 3 4 5 7 1 9 3 2 1 1 2 3 1 9 0 11 1 7 5 4 1 7 2 1 4 2 7 3 1 3 3 3 3 1 1 2 5 2 1 2 5 3 3 4 1 5 0 9 8 5 4 5 1 8 8 1 1 2 3 1 3 1 1 8 0 9 8 6 3 5 6 6 8 1 5 1 3 1 3 2 1 2 2 1 9 0 9 8 8 1 1 3 2 4 7 8 3 1 2 1 3 1 1 2 1 1 2 1 3 3 7 1 5 0 11 3 1 3 3 9 1 5 9 6 4 6 1 3 3 1 3 1 7 0 7 5 2 1 1 4 8 4 1 2 3 3 1 1 3 1 7 0 11 7 3 6 3 5 5 1 6 1 8 7 1 1 1 2 1 1 3 3 5 1 3 1 3 5 3 6 1 7 0 6 6 1 3 8 5 1 2 1 1 1 3 2 2 1 6 0 10 7 6 6 3 6 2 1 8 4 5 1 1 1 1 2 3 1 5 0 11 1 1 1 3 4 2 5 1 4 3 5 3 1 3 2 3 2 1 1 1 5 2 4 4 5 4 5 5 4 3 4 1 5 0 7 8 6 1 1 8 3 1 2 2 1 3 1 1 6 0 7 1 6 7 3 4 1 1 1 1 2 1 3 2 1 9 0 10 1 9 6 1 4 7 4 4 6 2 3 1 2 1 2 3 1 1 2 2 1 3 1 3 4 1 9 0 10 6 7 7 9 1 1 8 2 3 9 1 3 3 2 2 3 3 3 1 1 9 0 10 2 6 1 9 7 1 4 6 1 4 1 3 1 2 2 2 2 3 1 1 6 0 10 6 1 3 9 4 1 7 7 5 3 3 1 1 1 3 3 1 4 4 2 3 5 1 6 0 7 5 1 3 4 7 3 8 1 1 3 3 1 2 1 6 0 6 1 7 1 1 5 4 1 1 3 1 1 1 1 9 0 7 3 9 1 9 9 1 9 2 2 2 2 1 1 3 1 2 5 5 3 5 2 3 7 1 6 0 8 1 2 5 4 5 3 2 6 3 3 2 1 1 2 1 6 0 8 3 6 5 5 4 1 1 9 2 2 2 2 1 2 1 7 0 11 1 4 1 4 2 5 1 6 9 6 5 2 1 2 2 1 2 2 1 3 1 2 1 5 1 3 6 1 5 0 9 5 8 6 6 1 1 4 5 3 1 2 1 1 3 1 9 0 7 1 8 8 3 2 2 1 2 1 3 2 3 3 1 2 1 1 9 0 10 1 8 4 8 1 2 4 3 1 6 3 2 2 1 1 1 3 1 3 1 2 2 2 1 2 1 3 1 6 5 5 3 6 1 5 0 7 4 1 2 1 2 9 3 2 2 2 1 1 1 8 0 6 6 1 1 5 2 4 1 2 1 1 3 1 2 1 1 7 0 8 9 6 3 5 7 4 9 1 1 1 3 3 1 3 3 1 2 1 5 2 1 3 7 1 6 0 9 5 9 2 1 4 4 5 5 6 2 3 3 1 2 1 1 6 0 7 9 6 1 8 8 2 1 1 3 3 1 2 1 1 5 0 6 8 3 4 8 2 1 1 1 3 1 3 5 1 2 2 4 2 1 3 5 1 9 0 8 3 3 1 1 2 9 1 6 1 3 1 1 3 1 1 1 2 1 6 0 10 4 6 6 5 5 9 6 1 1 5 3 2 2 1 3 2 1 9 0 11 7 2 1 3 1 9 7 1 7 1 5 2 2 1 1 1 1 2 3 3 5 5 1 1 2 3 5 1 8 0 10 4 5 1 8 2 6 2 5 9 4 2 1 2 2 3 3 3 3 1 8 0 8 7 3 7 1 3 2 1 3 3 3 1 3 1 1 3 3 1 6 0 11 5 1 4 6 1 6 9 8 1 2 2 1 2 1 1 2 2 3 2 2 2 3 3 4 1 5 0 8 2 2 1 6 8 4 9 1 3 1 1 2 1 1 8 0 8 8 8 3 6 9 5 2 1 2 2 1 3 3 1 3 3 1 6 0 6 4 4 6 1 2 6 3 1 1 3 3 3 4 5 2 4 4 4 5 7 3 5 5 3 7 1 7 0 7 7 2 3 1 9 1 6 3 1 1 2 2 3 1 1 5 0 8 1 1 8 1 8 6 6 4 3 1 1 1 1 1 8 0 8 6 1 1 1 3 6 3 2 2 1 3 1 1 1 2 1 3 2 1 4 1 1 1 3 6 1 8 0 7 4 1 5 1 9 6 5 3 3 1 1 2 3 3 2 1 8 0 7 1 6 9 4 7 1 7 3 1 2 2 2 2 1 1 1 5 0 8 7 9 1 8 1 3 8 3 1 3 1 3 3 2 3 3 2 3 5 3 7 1 7 0 8 2 5 6 1 3 1 5 2 1 3 2 1 2 2 1 1 7 0 9 4 1 1 1 5 6 3 1 9 2 3 3 1 2 2 1 1 8 0 8 1 6 1 1 7 3 2 7 2 1 2 3 3 3 1 1 3 3 2 1 4 3 4 3 7 1 9 0 11 1 7 5 7 8 7 6 5 6 2 5 2 3 3 2 3 3 1 3 1 1 7 0 7 4 8 4 5 1 2 6 1 1 3 1 3 3 2 1 8 0 11 4 8 2 8 6 8 4 1 7 3 5 2 2 2 1 2 2 1 1 5 3 1 2 2 1 4 3 5 1 9 0 10 4 4 3 9 2 1 1 5 4 8 2 3 1 3 2 1 1 3 1 1 8 0 9 6 7 7 3 1 9 2 5 9 1 2 1 3 1 2 3 3 1 9 0 9 7 4 3 6 3 1 8 7 3 3 1 1 3 1 1 2 1 3 3 1 1 3 1 7 6 5 5 7 5 5 3 7 1 8 0 9 6 6 1 9 7 3 5 2 3 2 3 1 3 3 1 3 3 1 7 0 8 8 8 5 4 4 5 1 8 1 3 1 2 1 1 3 1 7 0 6 8 8 4 9 9 1 2 3 3 3 1 1 2 4 3 3 4 1 3 3 3 4 1 5 0 10 2 1 5 6 4 5 1 6 1 7 3 1 3 3 3 1 5 0 9 2 6 5 8 7 5 1 7 7 1 1 3 2 3 1 7 0 8 2 8 7 7 3 3 6 1 1 1 2 2 1 3 1 1 2 2 3 3 5 1 9 0 6 8 3 7 1 6 1 1 1 1 1 2 1 1 2 1 1 7 0 10 6 2 7 1 8 9 1 8 1 1 2 2 1 2 3 2 2 1 5 0 10 1 5 3 9 2 1 7 6 7 9 3 3 3 3 1 2 1 2 2 3 3 5 1 5 0 10 9 4 4 7 6 2 2 1 2 2 3 3 3 1 2 1 8 0 8 7 2 5 7 1 6 3 1 2 3 1 1 2 1 3 2 1 7 0 8 5 9 7 5 5 2 1 9 1 2 3 3 2 2 3 5 5 2 5 3 3 4 1 7 0 8 3 5 8 8 1 5 8 2 3 2 1 2 1 3 1 1 8 0 6 3 9 9 3 1 7 1 1 2 2 2 1 1 1 1 8 0 11 1 2 9 1 8 7 8 8 2 6 2 3 3 2 1 3 3 1 3 3 1 5 3 1 5 2 3 6 5 4 3 4 1 5 0 11 9 1 7 6 1 7 3 4 7 4 6 2 1 3 1 1 1 5 0 9 1 9 7 7 1 8 5 1 1 1 3 3 1 3 1 7 0 6 5 2 7 1 3 1 1 1 2 3 2 1 3 2 3 1 2 3 6 1 7 0 9 1 5 3 2 3 6 7 2 7 1 3 3 3 3 1 1 1 6 0 6 1 1 4 8 2 9 3 3 1 1 3 3 1 9 0 7 3 8 8 6 2 1 8 3 1 3 3 1 2 3 3 2 2 2 5 3 4 2 3 4 1 9 0 8 1 4 2 6 7 8 1 3 2 3 1 3 2 2 2 3 3 1 9 0 11 3 2 3 1 8 8 3 7 9 9 7 1 2 3 1 1 1 1 2 1 1 6 0 7 5 7 8 6 9 8 1 1 2 2 2 2 1 4 1 2 5 3 6 1 8 0 10 8 7 5 7 5 8 8 5 7 1 3 3 2 1 2 2 1 2 1 6 0 7 8 7 6 6 1 1 8 2 2 2 3 1 1 1 7 0 6 7 2 9 8 4 1 3 3 3 1 1 1 2 2 2 1 1 1 1 3 4 1 9 0 9 5 9 1 2 6 2 6 3 1 1 3 3 1 1 1 2 1 1 1 6 0 11 7 8 6 9 2 9 6 2 1 1 8 3 1 3 1 2 2 1 9 0 10 7 1 7 1 9 1 6 5 2 2 1 1 3 3 2 3 1 1 1 3 4 1 1 5 2 3 2 5 5 3 5 1 7 0 10 7 5 9 9 2 1 5 8 3 1 1 1 1 3 1 2 3 1 9 0 6 1 1 5 4 6 8 1 1 3 3 3 1 2 1 1 1 8 0 11 8 9 6 6 4 1 3 7 6 1 7 3 2 2 2 1 2 1 2 1 2 3 2 4 3 5 1 9 0 10 6 1 9 1 7 8 5 5 1 2 2 2 3 2 3 1 1 3 1 1 5 0 9 6 3 3 9 7 1 2 4 3 3 3 2 1 2 1 7 0 11 1 8 7 3 7 2 8 5 1 6 5 1 1 1 1 1 2 2 2 1 4 1 2 3 5 1 8 0 6 8 2 1 7 8 9 2 1 3 1 3 1 2 3 1 6 0 9 2 3 1 3 1 9 9 3 9 2 3 3 3 3 1 1 6 0 11 5 3 8 1 6 1 9 9 3 9 6 3 1 1 3 1 3 3 5 2 1 5 3 4 1 5 0 7 6 8 4 1 9 2 5 3 2 3 1 2 1 5 0 11 9 5 3 7 1 8 5 5 4 2 7 1 1 2 3 2 1 6 0 9 2 1 3 5 2 4 1 3 4 3 1 3 3 2 3 1 2 1 1 3 7 1 7 0 11 8 2 1 8 4 9 8 1 4 1 7 2 2 1 3 3 1 2 1 6 0 10 6 4 2 1 5 3 1 4 7 8 2 2 1 2 2 1 1 8 0 8 7 8 6 1 6 5 9 4 1 3 3 3 1 3 1 2 4 5 4 1 5 4 4 3 7 2 6 2 2 1 5 7 3 4 5 3 7 1 7 0 7 6 9 2 6 5 1 7 3 3 1 2 3 2 1 1 9 0 8 9 3 1 9 2 7 1 7 2 1 1 2 1 2 2 1 1 1 9 0 9 4 4 6 1 1 5 7 7 2 3 1 1 2 1 2 3 3 3 2 4 2 1 3 4 2 3 4 1 5 0 11 7 3 1 6 6 2 3 6 5 2 5 1 3 3 1 2 1 5 0 8 5 8 8 4 4 3 1 4 3 2 3 2 1 1 9 0 10 6 2 6 1 9 4 1 5 2 1 2 3 3 1 2 3 1 1 1 2 1 4 3 3 7 1 9 0 9 1 9 1 7 5 9 8 3 2 3 2 1 2 3 3 3 3 2 1 9 0 11 2 3 2 7 7 3 3 4 1 4 7 1 3 3 1 2 2 2 2 1 1 5 0 7 6 1 7 3 9 8 1 2 3 2 1 1 4 1 5 4 4 3 3 3 7 1 9 0 7 4 3 1 8 2 2 7 2 1 2 1 2 2 1 1 3 1 8 0 9 7 9 1 6 6 2 3 1 5 2 3 1 1 1 2 3 2 1 8 0 10 6 1 8 9 6 4 3 8 8 3 3 3 1 3 2 2 3 3 2 1 2 4 4 2 1 4 4 6 3 6 5 5 3 5 1 7 0 9 8 1 7 6 4 4 3 1 5 3 3 3 1 2 1 1 1 7 0 6 2 5 3 1 9 2 1 2 2 1 2 1 1 1 5 0 9 5 9 7 7 2 1 7 9 3 1 1 2 1 3 3 1 4 2 3 3 4 1 9 0 11 4 6 2 4 2 6 1 9 4 1 9 2 2 1 2 2 2 1 1 1 1 8 0 6 5 1 9 1 9 8 2 3 2 1 3 1 1 2 1 6 0 7 4 1 2 8 1 6 4 1 1 2 3 2 2 3 4 1 3 3 6 1 9 0 11 6 3 4 1 5 5 1 8 8 8 6 3 2 2 3 3 2 1 2 2 1 5 0 8 6 8 6 6 1 8 7 2 1 1 2 1 3 1 5 0 6 1 6 9 9 1 3 1 3 3 3 2 3 2 5 2 3 5 3 6 1 6 0 9 2 6 1 3 6 3 8 4 6 3 2 2 1 1 1 1 9 0 11 1 7 1 4 9 5 5 4 6 5 5 2 2 2 2 1 1 1 1 3 1 6 0 9 5 4 7 2 4 1 7 1 2 3 1 2 3 1 2 4 3 4 2 1 5 3 6 1 6 0 7 1 1 5 8 1 2 2 3 3 1 1 2 2 1 5 0 9 1 4 7 1 7 6 7 1 7 1 2 1 1 1 1 9 0 10 1 1 6 5 9 1 9 1 1 7 1 3 3 3 1 2 1 3 3 4 2 3 4 2 1 2 5 5 5 1 4 3 3 4 1 7 0 8 9 1 6 2 8 3 5 9 3 2 3 3 1 2 3 1 9 0 6 6 6 1 2 5 9 1 2 3 1 1 3 3 1 2 1 7 0 7 7 3 9 2 3 8 1 1 3 1 1 2 2 3 3 1 4 2 3 4 1 6 0 10 1 1 1 8 3 2 1 8 7 2 3 1 1 1 1 1 1 8 0 8 1 3 4 7 7 8 6 1 2 1 1 2 1 2 2 2 1 8 0 6 2 1 8 3 5 7 1 2 1 1 1 2 1 1 5 3 1 5 3 4 1 5 0 7 4 3 3 1 5 7 9 2 1 1 3 1 1 6 0 7 5 7 1 7 3 2 7 3 2 1 3 2 1 1 6 0 6 1 7 3 3 2 1 1 2 1 2 2 1 1 2 4 2 3 6 1 5 0 9 1 1 6 6 4 6 9 8 2 3 2 1 2 1 1 8 0 11 8 2 1 5 8 4 8 8 9 4 4 1 2 2 1 2 1 1 1 1 7 0 11 1 8 1 7 6 9 4 5 7 8 7 2 3 3 2 1 1 2 2 1 1 1 5 2 1 4 4 4 3 3 7 1 7 0 9 2 9 5 6 1 9 6 5 6 3 1 1 2 1 2 2 1 7 0 10 1 6 6 1 6 2 5 2 3 3 3 3 1 1 1 2 1 1 9 0 8 1 1 4 3 6 4 3 1 3 2 1 1 1 2 3 3 2 1 2 1 4 3 3 3 3 6 1 9 0 8 4 4 4 7 2 8 7 1 3 3 1 2 1 2 3 1 1 1 8 0 6 1 7 8 3 9 7 2 3 2 1 2 3 1 1 1 8 0 11 8 8 9 1 1 7 5 3 7 1 1 3 3 2 1 1 3 1 1 3 5 2 4 3 3 3 6 1 9 0 11 1 7 3 8 5 8 1 3 8 9 1 3 2 1 1 2 1 3 1 1 1 9 0 11 3 7 8 1 3 2 5 5 1 2 5 1 2 3 1 3 1 3 2 2 1 7 0 11 2 2 4 2 3 7 1 3 4 1 2 1 2 3 1 2 2 2 3 3 2 3 1 2 3 4 1 6 0 10 7 3 4 7 6 6 4 3 1 6 2 1 3 1 1 3 1 8 0 10 1 6 2 9 2 1 7 8 4 5 3 1 3 1 2 3 1 2 1 8 0 7 2 1 1 4 4 4 3 3 1 1 2 2 1 3 1 5 5 2 3 4 3 1 5 5 3 6 1 9 0 8 3 2 5 6 6 5 1 9 3 1 2 2 3 1 2 3 2 1 6 0 7 9 1 8 8 6 1 9 2 1 2 1 1 3 1 7 0 6 2 5 5 1 5 4 2 1 3 3 2 1 2 4 5 2 3 1 3 3 7 1 9 0 8 7 1 7 1 1 2 9 9 1 3 2 1 3 1 1 1 1 1 6 0 6 6 1 9 7 3 7 1 1 1 2 3 3 1 8 0 6 1 1 3 3 4 2 3 3 1 2 3 1 2 1 2 1 5 2 4 2 3 3 6 1 5 0 11 1 3 4 9 1 5 7 1 1 8 1 1 3 2 2 1 1 8 0 10 1 3 3 6 1 9 5 3 4 8 1 3 3 1 1 1 1 1 1 7 0 7 2 1 5 2 4 6 2 1 3 2 1 3 2 2 4 2 5 5 3 2 3 5 1 5 0 8 9 2 9 4 1 4 1 9 1 3 3 1 1 1 7 0 7 4 1 6 5 6 3 4 2 1 2 1 3 2 1 1 5 0 7 9 7 1 5 3 5 4 3 3 2 1 2 4 4 5 1 1 3 4 1 8 0 11 7 8 1 1 9 8 6 9 5 1 7 2 1 1 1 2 1 1 3 1 5 0 11 5 4 2 1 3 2 2 1 5 4 5 2 2 2 2 1 1 7 0 8 4 8 1 9 5 7 2 3 2 1 2 1 1 3 1 3 3 1 4 6 4 1 5 4 5 3 3 6 1 9 0 6 2 2 7 9 1 1 1 3 2 3 1 3 2 1 1 1 8 0 8 2 4 7 1 3 1 7 9 3 3 1 1 3 3 3 1 1 8 0 11 9 3 4 9 1 8 7 4 7 9 9 1 2 1 2 2 1 3 3 1 3 2 4 3 2 3 6 1 9 0 11 2 9 3 7 3 2 8 4 1 7 1 1 2 1 3 2 3 2 2 2 1 5 0 11 3 2 8 2 1 1 5 3 4 1 4 3 1 1 1 3 1 8 0 9 8 6 6 2 5 2 1 3 6 2 2 2 3 2 1 3 1 3 5 1 1 4 3 3 4 1 7 0 7 9 6 3 1 1 6 7 1 2 1 2 3 3 1 1 6 0 10 9 3 9 1 9 2 8 4 4 7 1 1 1 3 2 1 1 7 0 8 1 9 9 9 5 5 4 7 2 1 3 3 1 1 2 1 2 1 1 3 6 1 8 0 8 2 1 3 9 3 4 9 5 3 1 1 2 2 3 2 1 1 7 0 9 8 4 9 8 3 1 5 4 9 1 1 1 2 2 1 2 1 7 0 6 2 6 1 8 8 3 2 2 1 2 2 1 3 1 2 1 4 4 3 3 5 1 8 0 11 6 3 4 2 6 1 7 3 8 2 4 1 2 3 1 3 1 3 2 1 8 0 8 7 2 4 1 4 2 6 6 1 1 1 1 3 1 3 3 1 6 0 10 3 3 2 3 1 7 6 5 9 9 1 3 2 1 3 1 5 3 1 1 4 1 5 2 5 5 3 4 1 5 0 10 2 4 6 6 3 1 5 2 6 3 1 3 3 2 2 1 9 0 10 1 7 1 9 4 6 5 8 5 1 1 1 3 3 3 1 1 1 2 1 6 0 9 3 5 8 9 4 7 6 1 6 1 1 1 1 1 3 2 2 2 3 3 7 1 8 0 10 9 9 5 4 5 5 9 4 1 7 1 1 2 3 1 1 3 1 1 9 0 8 3 7 3 7 8 7 8 1 3 1 1 1 3 3 1 1 3 1 7 0 10 1 6 3 5 9 8 2 7 3 6 3 1 3 1 2 1 2 5 1 3 1 3 1 3 3 4 1 9 0 10 8 6 4 3 4 3 1 9 8 4 3 1 3 1 3 1 3 1 1 1 9 0 9 7 7 8 9 6 9 3 1 1 1 1 1 3 2 3 2 1 3 1 7 0 11 9 1 6 2 3 3 6 5 8 1 9 1 1 2 1 3 3 2 3 1 2 4 3 7 1 5 0 8 5 1 1 5 3 4 2 3 2 1 2 1 1 1 5 0 10 6 3 6 6 3 9 8 2 1 3 1 1 2 2 1 1 8 0 8 4 1 9 4 6 8 7 6 1 2 2 1 3 2 3 3 1 3 2 3 3 5 1 3 6 1 5 0 9 8 9 4 2 1 5 2 4 8 3 1 3 2 1 1 5 0 7 5 4 1 2 5 1 4 1 1 3 3 1 1 9 0 6 9 8 1 9 9 8 3 3 2 1 1 2 1 2 3 2 3 2 5 5 3 7 6 3 7 2 3 1 5 6 3 5 5 3 7 1 7 0 10 5 2 8 1 9 9 2 5 4 2 2 1 1 3 1 3 1 1 5 0 10 9 3 2 8 9 4 6 8 6 1 2 2 1 3 3 1 6 0 9 6 7 8 5 2 5 2 5 1 3 1 1 2 2 2 5 3 5 4 2 1 5 3 6 1 6 0 8 4 4 1 2 1 2 9 8 2 1 2 1 2 1 1 8 0 11 7 2 8 1 4 1 3 3 9 8 3 1 2 1 1 3 1 1 1 1 8 0 11 1 5 4 1 5 2 5 3 6 4 1 1 3 3 1 3 2 3 1 2 3 3 5 5 4 3 6 1 9 0 10 3 1 9 7 6 8 4 5 9 7 3 2 3 3 1 3 1 2 2 1 6 0 6 6 2 4 9 5 1 3 1 1 3 2 2 1 9 0 11 1 3 4 8 3 8 1 4 3 1 5 3 3 1 2 3 2 1 1 1 2 2 4 1 1 3 3 7 1 7 0 9 4 9 9 8 1 2 5 1 7 1 1 1 1 3 3 3 1 6 0 11 6 5 9 5 2 1 2 6 9 4 3 1 2 1 3 2 1 1 8 0 7 1 2 5 6 3 6 9 2 2 2 1 1 3 3 1 3 2 3 3 2 5 1 3 7 1 7 0 6 3 1 8 1 4 9 1 1 1 2 1 3 1 1 7 0 6 1 2 6 7 8 1 1 2 1 1 3 2 1 1 6 0 9 3 9 5 1 4 3 4 4 1 3 2 1 3 3 2 4 4 2 1 4 3 4 4 5 3 3 6 4 5 3 6 1 6 0 7 5 2 6 1 2 1 1 2 3 3 1 1 2 1 9 0 10 1 5 1 9 5 2 1 6 1 1 3 1 1 3 3 1 3 3 1 1 5 0 8 9 7 3 7 4 1 7 4 3 2 2 1 3 3 1 3 4 1 5 3 7 1 8 0 6 1 5 7 2 1 3 1 1 3 3 1 1 1 1 1 9 0 6 3 1 8 2 5 5 3 1 3 1 3 1 1 2 3 1 8 0 7 9 1 4 7 1 5 5 3 2 2 1 1 1 3 1 5 2 1 2 5 5 3 3 6 1 9 0 10 1 8 3 1 1 3 6 5 8 3 1 2 2 2 2 1 1 1 1 1 7 0 8 9 5 1 4 3 5 7 5 1 1 1 3 1 1 3 1 6 0 8 6 2 8 2 9 1 5 1 2 1 2 1 3 1 1 5 5 3 1 5 3 4 1 6 0 6 6 1 5 4 7 8 1 2 2 2 2 1 1 7 0 6 6 5 3 1 2 8 1 2 2 3 3 1 1 1 5 0 8 7 3 6 8 1 1 9 3 2 3 1 3 1 2 4 2 2 5 2 5 2 2 4 5 3 7 1 5 0 9 1 1 2 8 2 3 6 2 8 1 3 3 1 1 1 9 0 11 2 5 1 8 1 2 1 7 9 7 1 2 2 1 3 3 1 1 3 1 1 5 0 8 6 5 7 9 1 5 3 2 2 1 3 1 1 1 2 3 3 5 3 3 3 5 1 6 0 7 8 6 8 6 1 5 8 2 1 3 2 3 1 1 9 0 8 7 4 1 3 8 7 4 8 2 3 1 2 2 1 2 1 1 1 7 0 7 6 3 2 5 1 1 1 1 2 2 1 2 2 3 2 5 5 3 2 3 6 1 6 0 11 3 2 1 2 5 8 7 9 7 7 6 1 3 1 3 1 2 1 8 0 6 8 9 1 3 7 8 3 3 3 1 2 1 3 2 1 7 0 6 1 7 1 7 8 4 2 3 2 1 2 1 2 5 3 4 5 3 1 3 5 1 6 0 7 3 1 9 5 7 7 2 3 1 2 2 1 2 1 6 0 10 5 1 5 8 4 7 8 1 1 4 3 1 2 2 1 2 1 8 0 9 3 2 2 8 1 7 3 9 1 2 1 3 2 3 2 1 1 4 2 1 5 3 5 5 6 4 6 5 5 3 4 1 8 0 7 3 1 7 4 8 8 7 2 3 3 1 1 1 1 3 1 6 0 7 1 1 6 1 7 7 3 3 3 2 3 3 1 1 5 0 7 5 3 9 4 1 2 6 1 3 1 2 2 3 1 2 5 3 7 1 6 0 8 3 1 2 5 6 8 1 7 2 1 3 1 1 2 1 6 0 10 1 4 7 9 8 8 4 5 3 6 3 2 1 1 2 3 1 7 0 10 4 7 3 4 7 7 1 8 8 3 1 1 1 3 1 2 2 4 3 2 2 3 4 4 3 5 1 6 0 10 5 7 2 1 1 1 1 9 6 6 3 2 1 3 1 2 1 7 0 7 9 7 2 3 2 1 6 3 3 1 2 1 3 1 1 7 0 6 6 1 9 7 7 7 2 1 2 1 2 1 1 1 3 2 2 1 3 6 1 8 0 9 1 6 8 3 1 2 2 3 4 1 3 1 1 1 1 3 3 1 6 0 6 2 7 1 6 7 3 1 1 1 1 3 3 1 7 0 9 1 2 5 8 9 7 6 8 5 1 2 1 1 1 1 1 1 3 3 3 2 2 3 7 1 8 0 11 2 1 3 1 3 8 3 3 2 6 9 2 3 1 2 3 1 3 1 1 6 0 9 1 4 2 1 9 4 4 9 4 3 2 1 1 1 2 1 9 0 6 7 4 9 5 1 9 3 3 1 2 1 2 2 2 3 3 4 3 2 1 1 1 2 4 3 1 3 5 5 3 4 1 5 0 6 3 6 1 4 3 4 1 3 2 3 3 1 8 0 8 8 1 1 8 2 1 1 2 2 1 2 3 1 2 3 3 1 7 0 8 4 8 5 9 1 2 1 5 3 3 3 3 1 3 1 1 3 4 5 3 6 1 6 0 6 2 9 5 1 1 5 2 2 1 1 3 3 1 7 0 11 8 4 9 1 1 6 9 9 8 9 7 3 3 2 3 2 2 1 1 8 0 6 2 1 9 1 5 8 1 1 1 2 3 2 1 3 1 1 5 1 2 5 3 6 1 9 0 10 5 6 1 7 8 2 9 8 8 7 1 3 3 1 3 3 2 2 1 1 9 0 7 1 2 2 7 2 1 6 2 1 1 1 2 3 1 1 3 1 8 0 11 1 4 4 7 8 1 7 1 1 4 3 3 1 1 3 1 3 1 2 2 1 5 1 5 3 3 5 1 8 0 6 1 6 5 9 1 1 3 1 1 1 3 2 2 3 1 8 0 6 1 5 7 6 1 2 1 3 2 1 1 1 1 3 1 8 0 9 8 6 5 4 4 1 4 7 1 3 1 2 2 2 2 3 1 3 3 1 3 4 3 7 1 6 0 8 3 9 3 2 7 1 9 1 1 3 2 3 1 3 1 7 0 9 8 3 1 2 1 2 6 6 7 1 2 1 3 1 1 1 1 8 0 11 3 3 4 1 9 7 1 3 1 4 1 1 2 3 2 2 2 1 2 4 3 3 1 4 1 3 2 3 2 6 1 5 4 3 7 1 6 0 8 7 1 7 4 5 1 7 9 1 1 3 1 1 1 1 6 0 11 1 7 1 3 9 7 3 7 1 5 7 1 2 2 3 1 1 1 9 0 7 7 9 1 2 5 5 1 3 1 1 3 1 1 3 1 3 4 2 1 1 5 1 4 3 4 1 6 0 7 5 7 2 5 4 6 1 2 1 3 3 1 1 1 9 0 6 2 3 1 5 1 5 2 2 1 2 3 2 2 1 3 1 6 0 10 1 9 4 8 5 1 7 3 9 3 1 1 1 3 3 1 5 2 3 1 3 6 1 6 0 6 2 6 1 3 1 6 3 2 2 1 1 1 1 9 0 11 9 9 9 1 1 5 3 1 5 2 3 2 2 2 2 1 1 1 2 3 1 9 0 8 3 4 7 8 6 2 9 1 1 2 2 2 1 1 2 2 2 1 1 1 2 3 3 3 4 1 8 0 11 9 1 7 9 3 5 7 2 8 2 1 1 3 2 3 2 1 2 1 1 9 0 11 2 3 1 1 2 1 2 3 5 8 3 2 1 1 1 3 3 2 2 2 1 7 0 7 8 4 4 8 9 1 2 2 2 1 1 1 2 3 3 5 3 2 3 4 1 7 0 7 2 1 7 4 2 7 8 3 2 1 2 3 1 1 1 9 0 10 1 9 7 9 3 6 3 8 5 4 2 1 2 2 1 2 1 2 3 1 6 0 7 1 1 9 1 5 5 1 1 1 1 2 1 3 2 2 3 5 3 1 5 5 3 7 1 6 3 5 5 3 7 1 8 0 10 4 4 5 9 5 9 6 7 1 8 2 1 1 2 2 3 2 1 1 8 0 7 5 8 1 5 8 9 7 3 2 1 2 3 3 2 1 1 7 0 11 9 5 7 1 3 1 8 7 3 1 3 1 1 2 2 3 3 3 2 5 1 3 5 3 5 3 4 1 9 0 9 9 7 6 6 8 9 1 5 7 3 2 3 1 1 2 1 3 2 1 9 0 7 6 1 5 6 1 3 2 1 3 3 1 2 3 2 2 3 1 6 0 7 1 9 6 8 2 1 5 1 3 2 2 1 1 3 1 2 3 3 6 1 6 0 11 7 2 4 4 4 1 7 1 5 1 4 2 1 1 2 2 1 1 6 0 9 1 8 5 8 5 9 7 5 1 2 3 1 3 3 2 1 9 0 10 1 2 8 5 1 1 9 2 1 1 1 3 3 2 2 1 2 1 1 1 1 5 1 4 4 3 6 1 9 0 7 8 1 9 4 5 4 3 2 3 1 1 1 2 1 3 3 1 9 0 10 2 1 6 1 8 2 3 4 1 5 1 1 3 1 1 1 1 1 1 1 6 0 8 1 4 2 1 3 9 1 2 3 1 2 2 1 2 5 2 1 3 2 1 3 6 1 8 0 7 1 1 1 5 1 1 2 1 3 2 1 1 3 3 2 1 5 0 7 5 9 1 8 5 2 5 3 3 1 3 3 1 9 0 7 7 1 8 6 6 4 7 3 1 3 3 1 3 3 3 3 5 2 4 3 3 4 3 4 1 4 5 5 3 3 7 1 5 0 10 6 9 8 1 5 7 8 7 1 7 2 2 3 1 3 1 6 0 10 1 6 7 5 2 8 9 4 5 1 3 1 1 2 1 1 1 6 0 7 8 1 1 9 3 4 8 2 1 3 1 1 3 1 5 3 2 5 2 3 3 5 1 9 0 11 2 3 1 6 6 3 7 3 5 8 5 2 3 1 1 3 1 2 3 2 1 7 0 8 2 1 1 7 3 8 7 9 3 1 2 2 2 2 1 1 6 0 7 1 6 8 4 7 3 6 2 2 2 1 2 3 3 2 2 1 1 3 5 1 9 0 9 4 1 1 5 3 5 6 7 1 1 3 3 2 2 1 2 2 1 1 5 0 8 9 5 9 2 1 8 1 6 3 3 3 2 1 1 8 0 10 7 1 8 6 5 8 7 1 1 1 1 2 3 1 2 1 3 1 4 3 3 3 3 3 6 1 7 0 8 1 7 4 6 2 2 9 7 1 1 3 2 3 1 2 1 6 0 11 2 8 4 1 8 8 7 6 6 6 5 3 1 1 3 3 1 1 8 0 8 4 1 4 6 4 1 6 2 1 2 2 2 1 3 1 3 4 3 2 3 1 2 3 5 1 6 0 11 4 6 1 4 1 3 8 7 1 9 4 3 2 1 1 1 2 1 5 0 10 8 1 4 7 2 1 9 1 7 1 3 1 2 2 1 1 9 0 10 7 1 9 9 1 9 8 3 9 4 1 2 1 2 1 2 1 3 1 4 4 5 3 2 2 4 1 5 4 3 7 1 8 0 10 5 7 1 2 7 7 1 1 4 8 2 2 3 1 1 3 1 2 1 7 0 9 4 2 9 1 5 4 4 1 8 1 2 1 3 1 3 3 1 6 0 6 4 1 4 7 9 1 1 3 2 1 1 2 3 4 4 3 1 4 3 3 5 1 7 0 9 5 2 9 1 2 6 5 2 3 1 3 3 2 3 1 2 1 8 0 10 6 5 2 1 4 1 2 3 2 1 2 2 2 2 2 2 1 1 1 8 0 6 9 1 8 1 8 4 1 1 2 1 2 2 1 1 1 3 1 4 2 3 7 1 6 0 8 2 1 5 6 9 1 7 1 1 3 2 1 1 1 1 8 0 11 6 7 6 7 1 3 5 3 3 3 4 1 1 2 2 3 2 2 2 1 8 0 9 4 9 4 9 5 2 7 1 1 3 1 2 3 2 3 2 1 3 1 4 5 2 2 2 3 7 1 9 0 11 5 9 1 2 3 2 5 3 1 9 4 1 1 2 2 2 1 2 3 1 1 9 0 8 1 8 1 1 9 6 8 8 2 2 2 3 2 2 1 2 1 1 8 0 9 5 7 9 2 5 1 3 9 5 3 3 2 1 1 3 1 3 2 1 3 1 5 3 2 3 5 1 6 0 8 1 8 3 8 6 2 3 9 1 1 3 3 1 3 1 9 0 11 1 4 5 1 9 6 7 2 1 7 9 2 1 3 2 3 3 3 2 2 1 5 0 9 2 7 1 7 5 4 5 4 4 1 1 3 3 2 3 2 2 3 4 1 2 5 1 4 4 3 5 1 6 0 11 8 8 1 3 3 7 8 2 1 8 2 3 2 2 1 1 3 1 8 0 6 7 1 8 8 5 8 1 1 2 3 2 2 3 1 1 5 0 9 3 6 1 5 1 6 6 1 3 3 1 1 1 1 1 4 1 2 3 3 5 1 8 0 8 7 3 1 8 1 3 4 4 1 3 3 1 1 1 3 2 1 7 0 9 3 4 8 8 2 7 6 2 1 1 1 1 2 1 1 1 1 7 0 10 8 3 8 1 1 1 3 7 8 5 3 1 3 1 2 1 3 2 2 2 2 2 3 5 1 5 0 10 1 1 7 8 4 8 9 4 6 6 1 2 1 3 2 1 9 0 11 9 2 5 2 7 1 2 4 8 1 9 2 1 2 2 1 2 2 3 3 1 6 0 8 9 7 5 8 2 1 2 2 2 3 1 3 3 1 1 4 1 3 5 3 6 1 5 0 8 9 7 1 3 5 2 1 4 1 1 3 2 3 1 9 0 11 9 3 9 8 1 7 6 7 6 7 1 3 3 1 1 2 1 3 3 2 1 8 0 11 8 5 9 1 7 2 6 8 7 1 4 1 1 1 3 1 1 3 1 2 3 2 5 5 3 6 2 2 2 5 5 3 5 1 6 0 11 1 9 6 1 8 8 8 2 3 4 7 2 1 2 1 3 2 1 9 0 6 1 1 2 3 5 9 2 2 3 1 3 2 3 1 1 1 5 0 10 8 1 7 6 5 5 2 4 5 2 1 1 1 2 1 4 5 2 1 3 3 4 1 8 0 11 4 1 8 4 8 9 2 3 6 6 3 1 1 2 3 1 3 3 3 1 8 0 8 2 2 8 7 1 3 4 3 3 3 1 3 2 3 1 2 1 7 0 8 5 5 9 5 8 3 5 1 2 3 3 2 1 1 1 2 1 2 1 3 6 1 7 0 11 7 1 5 2 4 8 4 1 8 1 7 2 1 2 1 3 1 1 1 9 0 8 5 7 1 2 5 4 5 9 1 2 3 2 1 1 2 1 3 1 9 0 11 9 8 9 8 4 1 5 1 2 4 1 1 3 2 1 1 3 3 1 2 1 1 3 4 2 3 3 6 1 9 0 10 2 1 6 6 1 9 4 7 4 7 2 2 2 3 2 2 3 1 2 1 9 0 9 7 8 5 1 3 1 4 8 1 3 2 3 3 2 3 1 2 1 1 6 0 7 4 6 5 1 6 2 7 1 3 2 1 1 3 1 3 3 4 4 4 3 6 1 7 0 9 5 7 6 4 9 4 4 1 7 2 3 1 1 2 2 2 1 8 0 10 1 2 4 5 1 7 8 3 3 3 3 1 3 3 1 2 3 3 1 6 0 10 3 8 1 2 2 2 9 9 1 8 3 2 2 3 1 1 3 5 3 5 1 3 1 4 4 7 5 5 4 3 6 1 8 0 10 4 1 2 4 6 8 8 8 2 6 2 3 1 2 1 1 3 1 1 5 0 8 5 3 5 2 1 7 9 9 3 1 1 3 3 1 8 0 8 1 2 6 8 1 3 8 7 2 3 2 3 3 1 3 2 5 3 1 5 5 5 3 5 1 7 0 9 6 9 4 1 7 9 8 2 9 2 1 2 1 3 1 3 1 9 0 6 2 9 5 7 9 1 3 1 1 1 3 3 1 3 2 1 6 0 7 6 2 9 1 1 7 7 3 1 2 2 1 3 3 3 1 3 3 3 4 1 9 0 11 1 7 9 1 1 1 4 6 7 9 1 3 3 1 3 2 2 3 3 1 1 6 0 8 2 2 5 4 1 1 7 1 1 1 2 1 3 2 1 5 0 6 7 4 1 1 3 2 2 2 1 1 2 5 5 3 2 3 4 1 9 0 6 8 5 2 8 1 1 2 1 1 1 2 3 3 1 3 1 8 0 8 4 8 1 6 2 8 1 8 3 3 3 2 1 2 2 2 1 8 0 6 2 8 8 8 1 7 1 1 2 3 2 2 3 3 3 1 1 4 3 7 1 6 0 8 1 5 8 2 7 6 9 1 3 1 3 2 1 2 1 7 0 6 6 9 6 1 6 1 1 1 1 1 3 1 1 1 6 0 7 3 7 5 4 5 1 3 2 3 1 2 2 3 3 5 1 1 3 2 5 6 4 1 5 4 3 2 6 3 5 5 3 6 1 9 0 8 1 5 4 1 6 8 6 4 2 2 2 2 1 1 3 1 3 1 5 0 7 1 7 4 5 6 6 7 3 1 1 3 1 1 6 0 9 5 1 4 8 3 9 9 1 6 3 1 1 2 1 3 1 3 2 3 1 1 3 5 1 5 0 11 6 1 7 9 9 1 5 7 3 7 8 2 1 3 3 1 1 9 0 7 3 2 8 7 7 1 2 1 2 1 1 2 1 3 3 3 1 9 0 11 6 3 6 8 8 7 1 1 6 5 1 3 3 3 3 1 3 3 2 2 3 2 5 4 2 3 5 1 6 0 11 4 1 7 1 6 3 1 6 6 4 2 1 2 2 1 1 3 1 9 0 10 1 9 2 4 4 6 6 8 9 5 2 2 1 2 1 3 3 3 3 1 8 0 7 8 7 2 4 5 1 6 3 3 1 1 1 1 2 1 5 4 4 5 2 3 7 1 6 0 8 1 9 6 5 1 8 5 5 1 2 1 1 1 2 1 7 0 10 6 6 6 5 4 9 1 8 3 1 2 1 3 2 1 1 3 1 8 0 8 8 7 1 8 3 3 7 8 1 1 1 3 1 1 2 3 1 2 4 3 4 3 2 3 6 1 6 0 8 3 4 6 7 7 1 8 3 3 1 1 3 1 1 1 8 0 8 5 1 5 7 1 7 3 6 1 1 3 1 1 2 3 2 1 8 0 10 7 1 8 1 3 5 8 4 3 4 2 1 2 1 1 2 2 2 5 1 1 3 4 2 4 2 1 1 4 5 3 3 7 1 5 0 7 9 1 2 8 1 5 2 3 3 1 1 2 1 9 0 8 7 1 6 9 1 6 1 3 1 2 3 1 1 2 3 1 2 1 5 0 9 1 6 3 7 6 5 9 7 2 1 3 1 2 3 2 1 3 3 1 3 3 3 5 1 8 0 7 8 9 1 3 2 1 3 2 2 2 1 3 2 3 1 1 9 0 9 9 1 6 5 8 5 8 6 1 3 1 1 1 1 3 3 2 2 1 9 0 11 1 4 8 5 1 1 2 6 1 9 1 2 1 1 3 1 1 2 1 3 4 3 4 3 3 3 5 1 9 0 7 9 9 8 8 1 5 6 3 2 1 2 1 1 2 1 1 1 6 0 10 4 5 1 5 7 4 1 9 5 9 1 2 1 1 2 2 1 6 0 7 7 5 8 1 9 7 4 1 3 1 2 2 2 3 4 3 3 2 3 4 1 9 0 9 3 2 1 6 9 1 5 1 1 3 1 2 3 2 1 1 2 2 1 5 0 6 7 7 5 9 1 1 2 3 3 1 3 1 9 0 8 5 1 8 5 5 5 3 2 1 3 3 3 3 1 2 2 2 5 2 5 3 3 4 1 8 0 7 8 4 4 1 9 8 1 3 2 1 1 1 1 3 3 1 6 0 9 1 3 8 8 4 8 7 7 7 2 3 1 3 1 2 1 8 0 7 8 5 8 1 7 9 3 2 2 1 3 3 3 3 3 1 3 4 2 7 4 5 5 3 3 4 1 8 0 9 4 1 3 5 2 8 7 7 2 1 3 3 1 1 3 2 1 1 7 0 7 9 9 1 9 6 2 6 3 1 3 3 1 2 2 1 7 0 8 2 4 7 3 1 6 8 1 1 3 2 1 3 1 1 3 2 4 2 3 7 1 8 0 10 7 9 3 6 1 1 9 3 5 2 3 2 3 2 1 1 2 1 1 7 0 7 9 5 2 3 6 4 1 1 2 2 3 1 2 1 1 9 0 9 7 4 9 9 4 3 1 1 6 2 3 1 3 1 1 2 1 2 5 2 1 5 2 2 1 3 4 1 5 0 11 2 6 3 8 1 9 6 5 8 3 2 3 2 1 2 2 1 6 0 8 2 1 3 4 3 1 5 4 2 2 3 1 2 3 1 7 0 10 1 3 4 6 7 9 6 2 5 3 2 1 2 1 1 3 1 5 5 1 4 3 7 1 5 0 7 5 2 3 8 1 8 4 1 1 1 3 1 1 6 0 6 4 3 1 3 5 1 1 2 1 2 3 1 1 9 0 8 7 9 8 1 7 1 2 6 1 3 2 3 1 2 1 2 1 4 4 2 2 2 1 1 3 4 1 5 0 7 3 5 2 6 1 2 3 3 2 1 1 1 1 5 0 8 9 4 9 8 4 1 1 6 1 2 1 1 1 1 5 0 6 2 1 4 5 7 9 1 1 2 1 1 2 3 5 1 4 4 6 4 5 3 5 1 8 0 11 6 5 2 5 6 5 1 5 4 5 1 2 2 1 1 2 3 1 1 1 8 0 7 1 4 4 2 1 2 7 2 3 1 1 1 3 3 3 1 8 0 10 6 5 2 7 1 1 9 1 2 6 1 1 3 1 3 2 2 2 1 2 5 5 3 3 6 1 5 0 10 4 9 8 3 2 2 5 2 2 1 1 1 2 2 1 1 7 0 8 4 1 7 2 1 1 1 3 1 3 3 2 3 1 3 1 5 0 7 1 7 2 4 3 6 1 1 2 2 2 3 3 4 5 4 1 1 3 6 1 5 0 10 8 9 1 1 1 2 6 9 2 6 1 1 2 2 1 1 9 0 10 7 7 7 9 4 6 1 4 9 2 2 2 2 2 1 2 2 1 3 1 7 0 8 1 4 9 9 9 3 6 2 3 3 3 1 2 2 1 5 4 3 3 5 1 3 4 1 5 0 6 5 5 3 7 1 9 3 1 1 2 2 1 5 0 6 1 1 8 4 7 6 1 1 1 2 3 1 6 0 6 6 7 9 1 2 8 2 1 2 3 2 2 1 4 5 4 3 1 2 1 3 4 5 3 7 1 9 0 9 5 1 2 3 9 3 8 5 4 3 1 2 3 3 1 3 3 1 1 6 0 10 2 8 1 5 9 5 8 3 1 1 2 2 2 1 3 3 1 5 0 11 8 1 1 8 9 5 1 3 2 1 6 3 1 2 2 2 5 5 4 3 2 4 4 3 6 1 5 0 7 6 8 3 5 1 1 1 3 1 1 1 1 1 8 0 7 9 2 1 1 6 3 8 2 1 2 1 2 2 2 2 1 6 0 7 5 9 2 3 1 6 6 1 1 3 1 3 2 1 4 2 1 2 2 3 4 1 9 0 8 3 8 2 6 9 2 1 8 3 1 3 1 3 1 1 1 3 1 7 0 8 1 9 5 6 2 8 9 8 2 3 3 2 1 3 2 1 5 0 9 1 9 1 2 7 6 8 2 3 3 3 3 1 2 4 4 5 3 3 7 1 8 0 10 4 3 9 1 6 9 8 3 3 8 1 1 2 3 2 1 1 1 1 8 0 6 4 9 4 1 8 1 3 3 2 1 1 1 1 1 1 7 0 7 3 8 2 1 6 1 6 3 1 1 3 3 1 2 2 3 2 2 1 3 1 6 1 4 4 1 5 5 3 7 1 5 0 8 5 1 3 7 6 1 8 9 2 3 3 1 1 1 7 0 9 9 9 2 1 8 3 1 2 6 1 1 1 2 3 1 1 1 5 0 6 5 1 1 1 6 1 3 1 3 1 2 2 3 2 2 1 5 4 3 6 1 7 0 7 1 8 1 4 4 6 5 1 3 2 1 1 2 2 1 7 0 11 5 7 6 3 4 6 1 6 4 9 6 2 1 1 3 1 3 3 1 8 0 6 2 9 5 6 1 2 3 3 1 2 1 2 3 2 3 1 1 3 4 3 3 4 1 5 0 8 1 5 6 3 6 4 8 8 2 2 2 1 3 1 5 0 11 8 5 5 1 1 8 8 3 5 9 9 1 1 1 3 2 1 8 0 10 5 7 5 6 8 8 2 1 5 4 2 3 1 1 3 1 2 2 5 3 2 2 3 4 1 6 0 8 7 5 3 2 8 1 6 9 3 3 2 1 1 1 1 6 0 7 4 9 2 5 1 6 9 2 1 2 1 2 3 1 7 0 10 3 8 7 2 5 1 1 3 3 7 2 2 1 1 3 2 2 5 1 1 3 3 5 1 7 0 6 3 2 2 1 1 7 3 1 1 1 2 1 1 1 8 0 10 6 4 7 8 8 1 6 9 5 1 3 2 3 1 1 1 3 3 1 8 0 6 3 1 8 8 5 9 3 2 1 3 2 3 2 1 3 3 1 5 2 5 4 5 2 1 1 7 6 7 2 4 4 3 6 1 5 0 11 4 1 1 4 8 3 4 5 5 8 6 1 1 2 1 1 1 6 0 10 4 8 1 3 6 9 9 4 8 4 3 1 2 1 3 1 1 6 0 11 6 9 9 1 5 8 9 7 4 9 1 2 2 1 3 1 2 2 4 1 1 3 4 3 5 1 9 0 6 6 8 3 2 7 1 1 1 1 1 2 2 1 2 1 1 5 0 7 4 3 1 6 4 1 1 2 1 1 3 2 1 9 0 9 5 7 7 4 1 9 2 9 7 1 2 2 1 3 2 3 3 2 4 3 1 3 1 3 6 1 5 0 9 1 3 9 2 7 1 5 1 8 2 1 3 1 3 1 9 0 9 8 8 4 1 7 4 1 2 2 1 1 2 1 2 2 1 1 3 1 9 0 6 1 1 5 4 8 5 3 1 3 2 3 1 3 2 3 2 2 1 4 3 2 3 6 1 8 0 6 4 5 5 1 9 1 3 1 3 2 3 1 3 1 1 5 0 11 1 7 5 7 2 1 7 4 1 5 6 1 2 3 3 3 1 9 0 10 2 5 2 3 5 1 5 1 7 9 3 1 1 3 2 3 3 3 3 3 3 2 3 1 4 3 4 1 2 5 3 3 5 1 9 0 10 1 9 3 9 8 1 8 4 9 4 1 1 3 3 2 2 2 1 2 1 5 0 8 6 4 3 6 2 6 9 1 1 1 1 2 2 1 5 0 9 5 1 1 4 4 4 7 8 1 3 3 3 1 1 3 2 3 1 5 3 4 1 8 0 9 5 4 7 7 1 6 2 3 5 3 3 3 3 2 2 2 1 1 7 0 9 8 6 1 4 7 9 7 2 3 3 3 1 2 3 1 2 1 8 0 8 1 2 1 2 6 8 1 4 1 3 2 3 1 2 1 1 2 3 4 1 3 5 1 8 0 10 7 4 9 1 8 8 2 8 6 9 3 3 1 1 1 2 1 1 1 8 0 8 6 2 3 1 7 9 1 8 2 2 1 1 3 1 2 1 1 7 0 6 3 6 6 3 1 3 2 1 3 1 2 1 1 2 4 5 5 2 3 4 1 6 0 10 9 1 3 1 2 7 3 6 5 3 1 1 1 2 2 1 1 8 0 7 9 8 8 6 1 1 6 1 1 2 1 3 1 2 1 1 8 0 8 4 7 5 8 7 5 2 1 3 1 2 3 3 3 1 2 2 4 4 1 3 6 1 6 0 11 2 2 4 1 2 3 2 9 6 1 9 1 3 2 1 3 1 1 7 0 7 3 1 8 8 2 2 9 2 3 3 1 2 1 1 1 5 0 7 9 4 3 3 4 8 1 2 3 3 2 1 5 3 2 5 1 2 5 1 5 5 4 3 7 1 7 0 8 2 6 7 8 4 8 1 1 3 1 1 2 2 1 1 1 8 0 6 3 9 1 1 7 6 2 2 3 1 3 3 3 1 1 8 0 10 2 5 2 1 9 8 2 3 8 2 1 2 3 3 2 1 2 2 1 5 5 2 2 1 3 3 7 1 6 0 6 1 6 3 6 3 4 1 2 1 3 2 1 1 6 0 8 3 1 5 4 8 1 2 2 1 1 2 3 3 3 1 6 0 10 8 1 5 2 1 4 3 6 8 5 1 2 1 1 2 1 3 4 3 3 5 2 4 3 6 1 9 0 10 8 1 1 2 7 4 2 4 9 7 3 2 1 1 3 2 2 1 3 1 5 0 6 4 9 8 1 8 9 1 1 3 2 1 1 5 0 10 3 3 8 4 6 6 1 7 9 1 1 3 2 2 1 4 4 1 5 3 2 3 6 1 5 0 10 4 7 5 6 4 6 1 8 3 9 1 3 1 3 1 1 9 0 10 5 4 2 5 7 4 4 1 1 4 1 1 2 1 1 2 2 2 1 1 6 0 7 2 2 1 9 7 5 2 3 2 2 2 1 1 2 3 5 4 4 3 3 4 1 9 0 8 2 2 1 9 8 1 2 4 1 2 3 3 2 3 2 3 1 1 5 0 10 9 6 9 8 1 4 1 3 1 9 2 3 1 3 2 1 8 0 9 9 3 3 3 3 1 7 1 7 1 1 1 2 3 3 1 3 3 5 1 1 7 6 5 1 4 3 3 4 1 9 0 7 3 1 8 9 8 2 1 3 2 1 1 2 3 2 3 1 1 9 0 9 9 7 6 3 8 4 8 1 3 3 2 2 2 1 1 1 1 1 1 9 0 10 7 3 3 5 3 1 7 1 9 8 3 3 3 1 2 3 1 2 1 1 2 4 1 3 7 1 9 0 10 3 1 1 1 8 2 1 9 3 3 3 2 2 2 2 3 3 2 1 1 9 0 8 1 4 2 9 5 5 7 2 1 1 1 3 3 1 3 3 2 1 8 0 10 3 7 4 5 1 2 3 8 1 9 2 1 3 2 1 2 3 2 3 1 5 1 5 3 2 3 7 1 7 0 8 9 2 8 4 2 5 7 1 3 2 2 3 2 2 1 1 5 0 10 7 8 7 7 7 1 1 1 2 6 2 1 1 3 1 1 9 0 8 5 1 1 4 2 1 5 5 3 2 3 1 1 3 2 2 2 1 3 5 1 1 1 4 3 7 1 5 0 10 6 1 7 1 3 5 3 1 3 4 1 3 1 1 1 1 9 0 11 6 6 4 6 9 8 1 9 1 1 1 1 3 1 1 1 1 1 2 1 1 6 0 7 5 8 1 2 1 8 9 2 3 2 3 2 1 1 2 1 1 3 1 1 4 6 2 5 5 3 6 1 5 0 11 2 8 4 3 6 8 6 1 2 8 1 1 2 2 3 1 1 6 0 11 6 1 7 3 6 8 7 3 2 6 1 1 1 3 2 3 1 1 9 0 11 2 1 2 4 8 9 7 8 8 5 3 1 2 2 1 1 3 3 3 2 2 1 3 3 2 4 3 4 1 5 0 9 9 8 2 4 1 9 1 9 8 2 3 2 1 3 1 8 0 8 2 1 5 2 4 1 6 8 1 2 1 2 3 3 3 1 1 5 0 11 2 3 7 1 7 7 4 2 1 2 4 2 3 3 3 1 2 5 2 3 3 6 1 8 0 8 7 7 1 3 3 4 5 7 1 1 2 3 2 1 3 2 1 8 0 10 7 3 1 4 3 1 5 5 1 5 3 2 1 1 3 3 3 1 1 5 0 11 2 3 5 8 1 8 5 4 8 6 1 3 3 1 1 1 4 2 1 5 1 4 3 6 1 7 0 9 7 1 6 3 1 8 4 1 9 3 2 3 1 2 1 2 1 7 0 6 9 1 3 6 1 6 3 1 1 2 1 1 1 1 5 0 6 3 9 1 5 3 8 1 1 1 2 1 5 4 2 2 5 1 3 4 1 9 0 11 4 9 4 2 6 1 5 8 5 7 9 1 1 3 3 2 3 1 2 1 1 6 0 10 7 6 5 3 8 6 1 5 1 6 1 1 2 1 1 2 1 7 0 11 8 8 8 4 4 8 4 1 7 2 6 1 1 1 2 3 1 1 1 1 2 2 3 3 5 6 3 5 5 3 4 1 7 0 11 2 6 8 3 1 6 4 4 2 1 7 3 1 1 3 2 3 3 1 7 0 10 9 5 2 7 7 7 6 1 5 8 2 2 3 1 2 1 1 1 5 0 10 5 5 7 9 3 4 9 8 1 8 2 2 1 2 3 2 5 3 3 3 4 1 8 0 7 9 1 7 1 2 4 1 3 2 1 1 3 1 3 3 1 5 0 8 8 4 2 4 2 4 2 1 1 1 1 1 3 1 5 0 11 4 3 6 7 3 9 1 4 2 6 4 1 3 3 1 3 2 5 2 3 3 7 1 9 0 10 3 3 6 5 5 1 1 1 3 9 2 3 2 3 1 2 1 2 1 1 8 0 10 5 7 5 2 1 3 1 4 3 6 1 1 2 3 2 2 2 3 1 7 0 8 7 2 1 7 4 1 4 5 3 1 1 2 2 2 2 2 2 2 5 2 3 4 3 5 1 8 0 10 3 2 1 5 9 1 6 8 8 9 1 3 3 1 1 1 3 2 1 5 0 6 9 4 1 8 1 5 3 1 3 2 1 1 7 0 9 7 7 2 6 1 2 4 6 2 2 3 2 3 2 3 1 1 5 1 2 3 3 4 1 6 0 10 7 6 6 5 3 9 3 2 5 1 3 1 2 3 1 3 1 8 0 7 8 1 5 7 3 9 6 2 2 2 1 2 3 1 1 1 7 0 11 8 2 6 9 9 5 1 2 4 1 2 1 3 1 2 2 3 1 1 4 3 5 5 5 6 3 4 4 4 3 4 1 9 0 7 1 5 3 4 1 1 4 1 1 1 3 2 3 1 3 2 1 6 0 6 1 3 3 8 1 8 2 2 1 2 3 3 1 6 0 6 7 1 9 3 5 7 1 1 2 2 3 1 5 1 3 1 3 7 1 9 0 9 8 4 3 5 9 1 8 8 2 2 1 2 1 1 2 3 1 2 1 9 0 8 4 2 2 1 1 2 7 4 1 1 2 2 1 2 3 2 1 1 9 0 11 1 3 2 8 3 1 5 9 3 8 2 2 3 1 3 2 3 1 2 1 4 2 2 2 2 3 2 3 7 1 7 0 7 1 3 4 8 2 2 5 2 2 1 2 1 2 3 1 5 0 8 4 3 8 1 2 5 7 3 3 3 1 3 3 1 6 0 7 6 3 5 1 9 9 1 2 3 2 1 1 3 2 5 1 1 4 5 1 3 7 1 6 0 6 3 1 5 2 5 7 1 1 2 1 1 3 1 7 0 10 1 8 1 1 8 4 2 3 7 6 1 3 3 1 3 2 3 1 5 0 11 1 1 8 1 5 6 5 7 5 1 4 1 3 1 1 3 4 1 3 4 4 1 3 5 4 5 5 9 5 7 3 5 4 3 7 1 9 0 11 1 1 1 9 1 9 2 1 1 2 8 3 1 2 3 3 1 3 1 3 1 9 0 7 1 4 2 8 5 2 1 2 2 1 2 1 3 2 1 2 1 5 0 10 9 1 7 4 9 3 7 7 3 5 2 1 3 2 3 3 3 3 4 4 1 3 3 5 1 5 0 10 9 3 7 2 5 1 4 8 3 6 1 1 3 2 2 1 5 0 6 1 3 5 7 4 4 3 2 1 2 1 1 9 0 6 2 9 9 4 1 8 1 1 2 1 2 2 2 3 1 1 1 2 3 1 3 7 1 7 0 10 9 3 8 7 6 1 1 9 3 3 2 1 2 3 2 1 1 1 7 0 6 1 9 7 5 7 3 1 3 2 1 1 3 2 1 8 0 7 3 4 7 6 4 3 1 1 3 3 3 3 3 2 1 2 2 2 2 4 5 2 3 7 1 6 0 11 1 6 2 4 1 8 1 9 8 4 3 2 3 1 2 1 2 1 6 0 9 4 7 2 8 1 9 7 3 2 3 2 2 2 3 1 1 9 0 10 3 7 1 1 2 4 2 7 7 7 2 2 1 3 1 1 3 2 1 1 1 5 1 3 2 1 3 5 1 6 0 9 8 4 1 5 9 1 5 1 1 2 1 3 1 3 3 1 8 0 7 2 2 6 3 1 2 7 1 1 3 1 2 1 3 2 1 9 0 8 4 1 4 9 5 1 6 3 2 2 3 1 1 3 1 3 2 5 2 1 1 4 5 1 7 2 5 4 3 5 1 8 0 9 5 3 1 3 2 5 3 8 5 1 2 1 3 2 3 3 3 1 7 0 6 1 7 9 3 2 2 1 2 2 1 2 2 1 1 6 0 10 6 8 6 7 9 2 9 6 9 1 2 3 1 3 3 3 4 5 1 1 2 3 6 1 9 0 8 5 1 7 2 2 1 3 3 3 1 3 1 2 1 2 3 2 1 5 0 10 4 3 3 8 1 3 9 3 2 5 1 2 1 3 3 1 7 0 10 8 1 4 8 9 9 3 1 1 5 2 1 1 1 1 2 3 4 5 3 2 5 1 3 6 1 9 0 8 2 1 8 1 5 5 6 8 1 3 1 1 1 2 2 1 2 1 9 0 11 3 8 1 4 1 3 1 7 5 1 1 3 3 2 3 3 1 2 2 3 1 8 0 7 9 6 1 9 8 1 2 2 3 1 1 3 3 3 1 1 5 4 4 4 2 3 6 1 7 0 7 2 1 5 1 6 4 6 2 1 1 3 1 3 2 1 8 0 11 2 1 1 9 6 4 3 8 6 8 8 3 3 3 1 1 2 1 3 1 7 0 11 5 4 7 4 1 8 7 6 8 7 1 1 1 2 1 1 2 2 3 4 5 3 2 5 3 4 1 8 0 11 3 4 1 8 4 3 6 4 6 8 1 2 3 2 2 3 3 3 1 1 8 0 8 3 3 4 1 9 3 1 6 2 3 2 1 1 3 1 3 1 6 0 7 3 1 3 7 9 6 4 1 1 3 3 1 2 5 5 3 3 6 3 5 4 5 3 3 4 1 5 0 6 6 9 3 9 1 3 1 3 3 1 3 1 9 0 7 5 1 9 6 9 6 3 2 1 2 3 3 2 1 2 1 1 5 0 7 8 6 4 4 4 1 1 1 2 2 1 3 4 3 4 1 3 5 1 8 0 8 5 1 8 4 4 8 4 9 1 1 2 1 1 1 1 1 1 6 0 9 9 9 1 2 1 7 4 4 7 3 1 2 3 2 2 1 7 0 11 7 4 8 6 8 5 9 1 4 1 3 1 3 1 1 1 3 1 4 4 1 1 5 3 7 1 7 0 9 3 6 3 1 9 1 3 3 3 1 1 2 2 1 3 1 1 5 0 6 6 7 8 3 1 1 1 1 1 1 2 1 5 0 10 5 5 1 1 7 5 1 4 2 4 2 2 1 1 3 3 4 1 2 1 2 3 3 7 1 5 0 8 6 1 9 5 1 5 3 7 2 1 1 3 3 1 9 0 8 1 2 6 4 6 4 6 1 3 3 1 3 3 1 3 2 2 1 8 0 11 1 3 3 3 1 8 2 3 5 2 9 2 1 1 1 3 1 2 2 1 4 3 3 4 4 3 3 4 1 5 0 10 8 7 1 8 1 7 1 6 8 4 3 1 1 2 2 1 5 0 6 4 8 9 2 8 1 3 1 2 1 1 1 7 0 6 5 7 4 1 1 3 1 3 3 1 2 1 1 3 3 3 4 2 5 3 5 4 3 4 1 8 0 11 8 1 7 5 3 7 1 9 8 2 1 2 1 3 1 2 1 3 1 1 5 0 7 7 7 7 5 1 4 8 1 1 3 1 1 1 7 0 10 1 7 4 4 1 5 3 2 8 1 1 1 1 1 1 2 2 3 2 4 3 3 5 1 8 0 11 3 1 4 4 7 2 7 1 6 7 6 3 3 1 1 2 1 1 2 1 5 0 6 7 1 2 8 3 9 1 1 3 3 1 1 5 0 9 9 4 4 6 7 1 5 7 2 3 2 3 1 1 5 1 3 2 2 3 4 1 8 0 11 1 1 9 9 1 9 4 2 3 8 9 1 1 2 1 1 2 3 1 1 6 0 9 1 1 7 6 1 1 6 9 9 3 2 2 1 1 1 1 9 0 10 2 1 1 6 1 8 3 4 1 6 1 1 2 1 3 2 1 3 1 1 4 2 4 3 7 1 5 0 10 7 1 4 7 2 1 4 6 8 7 2 3 1 1 3 1 8 0 7 2 3 9 1 5 1 4 3 1 1 1 1 1 3 1 1 6 0 9 3 1 9 1 5 9 9 8 8 1 2 3 2 1 1 2 5 3 1 3 2 2 3 4 1 6 0 10 2 1 6 4 4 1 4 5 5 8 1 3 2 3 2 3 1 8 0 7 1 5 4 2 9 9 6 2 2 2 1 3 2 1 2 1 8 0 8 9 9 1 9 7 4 3 7 2 1 2 3 2 3 3 1 3 5 1 2 3 4 5 7 5 3 3 7 1 7 0 10 3 9 8 8 6 5 1 1 9 5 1 2 1 1 3 2 1 1 9 0 11 1 6 6 4 4 5 8 1 1 5 4 1 3 1 2 2 2 1 3 1 1 9 0 6 1 7 5 6 5 2 3 1 1 1 3 1 1 2 3 1 2 3 3 5 3 5 3 4 1 9 0 8 5 8 1 9 8 1 9 2 3 3 1 1 2 2 1 2 1 1 5 0 6 5 3 4 9 1 3 2 1 3 2 3 1 9 0 11 4 1 2 9 6 4 7 9 8 6 8 3 3 2 1 3 2 2 3 3 2 1 5 3 3 7 1 9 0 11 1 9 1 3 4 6 7 2 4 6 8 3 3 2 1 2 3 1 3 1 1 9 0 8 1 8 2 2 4 8 6 6 2 1 1 2 1 3 1 1 1 1 5 0 9 3 1 6 2 1 3 1 4 9 3 3 1 2 1 3 5 1 2 2 1 5 3 4 1 6 0 11 5 9 1 3 5 2 1 5 9 1 1 3 1 1 3 3 1 1 6 0 8 5 4 3 9 1 2 4 1 3 1 1 3 1 2 1 8 0 6 8 4 1 1 7 1 3 1 3 3 1 3 1 2 2 5 5 2 3 4 1 6 0 10 5 1 9 8 7 1 8 4 2 4 1 3 1 3 3 1 1 8 0 11 4 5 1 1 7 2 3 2 8 7 7 1 1 1 2 3 1 2 1 1 5 0 9 7 2 1 7 4 5 3 1 3 1 2 2 3 1 1 2 2 5 1 3 3 5 3 3 7 1 6 0 11 7 1 6 2 8 8 1 5 4 9 5 1 2 1 2 3 2 1 6 0 11 4 1 4 8 7 3 5 2 4 4 4 1 3 3 1 1 2 1 9 0 8 8 8 1 1 1 9 3 8 2 2 1 2 3 1 3 1 3 2 2 4 1 2 5 2 3 6 1 7 0 7 1 8 2 1 1 5 8 2 2 3 1 2 1 3 1 5 0 10 1 1 2 2 5 5 8 7 5 7 2 1 1 2 3 1 7 0 9 5 6 1 6 7 8 5 8 6 3 2 1 1 1 1 3 5 2 3 3 2 4 3 6 1 9 0 7 6 9 5 3 1 6 8 2 1 1 1 1 3 1 1 1 1 5 0 11 8 1 7 3 1 9 6 6 7 9 8 1 1 3 2 1 1 8 0 10 4 5 2 1 3 3 7 9 3 9 1 1 1 1 1 3 2 1 1 1 5 1 1 3 3 4 1 9 0 11 6 6 5 2 4 1 6 7 6 5 7 3 1 1 3 1 1 2 1 2 1 9 0 6 1 5 4 1 5 8 2 2 3 3 2 3 2 1 2 1 6 0 6 1 3 5 2 6 8 2 2 2 1 1 3 3 4 5 3 3 6 1 6 0 7 1 4 8 2 8 4 3 2 2 1 1 3 2 1 7 0 8 7 1 5 1 8 7 8 3 1 3 3 2 2 1 3 1 7 0 8 1 9 9 8 5 1 7 2 1 1 1 2 2 2 3 1 5 2 4 1 5 2 5 4 4 3 3 6 1 6 0 10 7 5 9 6 7 7 1 6 3 1 2 2 1 1 3 3 1 6 0 9 2 5 6 8 3 1 2 3 5 3 1 2 2 1 1 1 6 0 9 7 7 4 1 7 9 1 5 7 2 2 1 3 3 1 1 5 5 3 1 1 3 5 1 8 0 6 9 8 1 5 8 1 1 1 1 3 2 3 1 2 1 7 0 11 6 7 3 2 9 8 1 6 6 5 1 1 2 3 2 1 2 2 1 5 0 6 9 1 1 6 8 7 2 2 1 1 1 5 5 2 4 2 3 4 1 5 0 9 2 1 7 6 8 6 8 6 4 1 2 2 3 1 1 9 0 6 6 6 7 9 1 4 1 1 2 2 3 1 1 1 3 1 7 0 10 1 1 1 3 7 5 6 5 8 6 1 3 3 2 3 1 3 3 2 4 5 3 7 1 5 0 11 1 8 1 3 9 3 5 6 4 3 6 1 1 2 1 1 1 5 0 6 1 5 9 7 5 1 3 1 1 2 3 1 9 0 7 2 2 4 1 4 8 6 2 2 2 1 2 2 1 2 3 2 1 2 5 2 3 3 4 3 3 5 9 5 7 3 4 4 3 4 1 6 0 7 1 9 3 9 5 8 5 3 3 1 3 2 1 1 7 0 7 2 6 4 1 6 3 9 2 3 1 2 2 1 1 1 5 0 9 2 1 1 6 7 9 3 9 8 2 3 1 1 3 1 1 3 4 3 5 1 5 0 10 6 8 7 8 7 7 1 3 1 9 1 2 1 1 3 1 5 0 8 3 6 3 8 8 1 5 4 1 1 2 1 1 1 7 0 10 1 8 5 6 5 9 5 6 8 8 2 1 1 1 3 1 2 4 5 3 3 2 3 6 1 6 0 10 1 8 3 5 3 3 7 9 9 3 1 1 1 2 2 3 1 6 0 6 7 1 8 4 1 5 1 1 3 1 1 2 1 9 0 9 5 1 5 4 6 1 7 1 3 1 2 1 2 3 1 3 1 2 1 3 4 2 5 2 3 6 1 8 0 11 4 9 8 7 3 5 3 1 8 8 8 3 1 3 1 2 3 1 3 1 8 0 10 5 9 4 1 8 3 1 3 1 9 3 1 2 3 2 2 1 1 1 6 0 9 8 3 9 2 9 5 7 1 7 1 1 1 1 2 3 5 2 3 5 2 5 4 4 1 3 5 4 3 4 1 9 0 7 1 3 9 8 3 7 9 1 2 1 1 1 1 3 3 2 1 6 0 6 9 3 3 1 6 1 2 2 1 2 1 3 1 8 0 6 3 6 1 4 5 2 2 3 1 1 2 1 3 2 4 1 1 2 3 6 1 9 0 8 2 1 3 1 9 6 1 6 2 2 3 3 1 1 1 1 3 1 9 0 6 6 2 2 2 9 1 1 1 1 3 1 2 2 3 3 1 9 0 8 7 9 8 8 2 8 7 1 1 3 2 2 3 1 3 1 3 1 2 4 2 2 3 3 5 1 9 0 11 4 1 5 1 2 2 2 7 7 9 4 3 2 1 1 3 1 1 2 2 1 7 0 6 9 8 6 5 1 2 2 1 1 1 1 2 1 1 7 0 9 9 7 3 8 7 5 8 9 1 3 1 3 1 1 1 1 3 4 1 2 3 3 6 1 7 0 11 2 4 3 5 6 6 6 4 2 1 9 1 1 1 1 1 1 1 1 6 0 10 3 6 1 7 7 8 7 8 2 9 2 1 2 1 1 3 1 8 0 8 1 8 7 9 7 6 8 1 2 2 1 1 1 1 3 3 5 4 1 3 4 2 3 7 1 6 0 7 3 1 2 8 7 9 9 3 1 3 3 2 1 1 9 0 9 5 3 3 3 1 1 3 2 1 1 1 1 1 1 3 1 3 3 1 7 0 7 1 4 7 3 8 3 5 3 2 2 1 3 2 1 3 2 1 1 5 2 4 6 6 2 1 4 4 3 5 1 6 0 6 8 1 4 3 5 8 2 1 2 1 2 2 1 8 0 11 2 6 8 2 7 8 5 1 8 1 3 2 3 1 3 2 3 2 3 1 7 0 6 9 8 9 1 8 7 1 3 1 3 3 3 1 1 2 1 3 5 3 5 1 7 0 11 1 1 7 6 9 1 6 8 2 7 9 1 2 3 1 2 3 2 1 9 0 11 4 9 9 6 2 1 7 1 7 4 1 3 2 3 2 2 3 1 1 1 1 6 0 9 5 8 8 5 6 1 5 4 7 3 1 1 1 1 2 2 5 3 5 5 3 5 1 7 0 6 1 1 5 4 9 5 2 1 2 2 1 2 3 1 8 0 9 1 7 3 6 8 6 8 4 1 3 3 2 2 2 1 1 1 1 8 0 10 9 8 1 9 4 1 1 8 2 3 2 1 1 3 2 2 1 2 3 3 4 1 3 3 7 1 9 0 10 5 9 5 1 3 2 3 1 3 7 3 1 2 2 1 3 1 2 1 1 8 0 11 3 7 4 6 1 6 9 6 1 1 2 2 2 2 3 1 1 1 2 1 8 0 7 7 4 6 8 4 7 1 1 1 3 3 1 3 2 2 5 5 5 2 1 4 4 1 6 3 3 4 5 3 7 1 5 0 9 2 1 7 8 7 1 3 5 1 3 1 2 3 1 1 8 0 8 3 8 7 7 1 2 1 1 1 2 1 1 1 3 3 2 1 9 0 6 6 1 1 5 2 1 1 3 1 1 1 3 2 1 2 2 4 5 1 5 5 4 3 4 1 9 0 7 4 2 7 9 3 1 3 3 1 1 1 2 3 2 3 1 1 9 0 6 1 2 7 2 4 5 1 2 3 1 1 1 2 3 1 1 7 0 9 3 4 4 1 9 5 6 8 9 1 2 2 1 3 1 3 2 1 5 2 3 6 1 7 0 9 4 6 8 4 1 2 1 3 3 1 3 2 1 1 1 2 1 6 0 10 3 5 9 7 5 1 4 8 5 7 3 1 3 1 1 2 1 5 0 6 5 4 7 8 1 2 1 2 3 3 1 1 2 4 1 2 2 3 7 1 7 0 7 4 9 5 1 9 9 5 3 1 3 1 3 2 3 1 6 0 7 2 3 1 5 6 1 7 1 1 1 2 3 3 1 6 0 7 3 9 4 1 4 7 3 1 3 1 3 1 2 1 2 1 4 5 1 5 4 4 6 6 6 5 3 3 7 1 9 0 11 8 1 8 8 1 4 5 4 3 6 6 1 2 3 3 3 2 1 1 1 1 6 0 7 5 1 6 1 4 2 5 1 1 1 1 2 1 1 5 0 9 2 1 3 3 2 4 7 2 5 3 2 3 1 1 4 1 2 2 3 1 1 3 5 1 9 0 9 1 1 3 3 1 7 5 2 9 3 1 2 3 3 1 3 2 2 1 8 0 10 8 4 9 1 5 4 9 4 8 4 2 2 3 3 2 1 3 3 1 8 0 8 1 2 5 5 8 1 6 7 3 3 2 2 2 3 2 1 5 3 3 1 2 3 6 1 8 0 8 2 8 3 2 8 6 4 1 2 1 2 1 2 2 1 1 1 5 0 9 6 7 7 4 1 8 6 1 3 1 1 3 3 1 1 8 0 11 1 1 8 4 1 3 1 2 3 6 9 3 1 2 1 1 3 1 1 1 1 1 4 1 1 3 4 1 7 0 7 1 9 8 6 7 3 1 1 3 1 2 3 2 2 1 5 0 8 7 7 8 8 6 1 1 8 1 2 2 3 2 1 6 0 6 1 8 8 8 6 4 2 2 2 3 1 1 2 3 2 3 3 5 1 8 0 10 8 1 7 3 5 9 2 7 4 8 2 2 1 1 3 3 1 1 1 8 0 6 7 7 1 1 6 7 2 1 3 1 3 1 3 2 1 9 0 8 1 8 6 4 4 7 3 8 3 2 1 3 1 3 1 2 2 1 2 4 3 2 1 2 1 5 4 3 5 1 6 0 10 6 1 5 1 3 8 8 4 1 9 3 1 1 3 2 2 1 5 0 6 5 4 4 1 7 1 1 3 3 2 1 1 8 0 11 3 3 2 2 1 2 1 5 1 8 6 1 1 1 1 1 1 2 1 5 2 2 1 1 3 4 1 7 0 11 8 7 2 1 6 7 5 1 1 5 6 1 3 2 2 3 1 1 1 7 0 7 6 8 2 1 1 2 2 1 1 3 2 1 3 1 1 5 0 7 7 3 6 1 6 9 2 3 2 1 1 1 3 1 3 4 3 7 1 5 0 11 3 2 9 8 6 2 1 1 4 1 4 1 2 1 3 1 1 9 0 11 4 9 8 9 6 2 6 5 1 8 1 3 2 1 1 2 3 1 1 3 1 5 0 11 5 1 8 2 4 5 4 3 1 8 5 2 1 3 1 1 2 4 2 3 5 1 4 3 7 1 5 0 9 6 9 5 2 4 5 4 1 2 1 2 1 1 2 1 5 0 9 6 2 9 8 2 1 5 1 3 2 3 1 1 1 1 8 0 6 7 8 4 8 7 1 3 2 2 3 2 1 2 1 2 1 3 5 3 2 5 3 6 1 9 0 11 4 7 1 2 4 1 8 7 8 1 1 3 1 1 3 2 3 1 2 1 1 6 0 9 8 1 9 6 8 7 1 9 8 1 3 1 1 1 3 1 8 0 7 7 3 3 1 1 6 9 1 2 3 3 2 1 3 1 4 1 1 1 1 3 3 6 1 4 4 5 3 4 1 7 0 8 7 5 5 3 1 1 5 7 1 1 2 1 1 1 1 1 8 0 9 7 8 2 5 5 1 3 3 6 2 2 2 1 1 3 3 3 1 8 0 7 5 1 1 1 3 4 3 1 3 1 1 1 1 2 2 5 3 5 2 3 7 1 9 0 10 7 1 8 9 3 3 5 7 4 7 1 3 2 3 2 3 1 1 1 1 8 0 7 1 5 1 9 2 7 4 2 2 2 3 1 2 2 1 1 6 0 7 4 3 1 7 8 4 9 2 3 3 1 1 1 3 1 3 4 1 5 3 3 7 1 9 0 10 1 1 3 4 2 9 2 7 5 3 3 2 3 3 3 1 1 1 1 1 9 0 6 7 5 5 1 6 1 3 2 3 1 3 3 3 2 1 1 5 0 6 1 8 6 6 1 6 2 3 2 1 2 4 3 2 3 2 1 4 3 7 1 7 0 6 2 7 1 2 1 2 3 2 3 1 3 1 3 1 5 0 6 2 5 3 1 4 1 2 1 3 1 1 1 6 0 8 6 6 2 5 8 1 1 3 1 1 2 3 1 1 1 1 5 1 2 2 2 4 4 2 1 3 3 4 4 7 7 1 7 8 4 3 2 8 8 2 diff --git a/src/main/resources/2018/day9.txt b/src/main/resources/2018/day9.txt new file mode 100644 index 00000000..2d2b1f06 --- /dev/null +++ b/src/main/resources/2018/day9.txt @@ -0,0 +1 @@ +431 players; last marble is worth 70950 points diff --git a/src/main/resources/2019-examples/day10-1.txt b/src/main/resources/2019-examples/day10-1.txt new file mode 100644 index 00000000..737ae7f6 --- /dev/null +++ b/src/main/resources/2019-examples/day10-1.txt @@ -0,0 +1,5 @@ +.#..# +..... +##### +....# +...## diff --git a/src/main/resources/2019-examples/day10-10.txt b/src/main/resources/2019-examples/day10-10.txt new file mode 100644 index 00000000..33e65a99 --- /dev/null +++ b/src/main/resources/2019-examples/day10-10.txt @@ -0,0 +1,5 @@ +.#....###.....#.. +##...##...#.....# +##...#......1234. +..#.....X...5##.. +..#.9.....8....76 diff --git a/src/main/resources/2019-examples/day10-11.txt b/src/main/resources/2019-examples/day10-11.txt new file mode 100644 index 00000000..08ff9f7b --- /dev/null +++ b/src/main/resources/2019-examples/day10-11.txt @@ -0,0 +1,5 @@ +.8....###.....#.. +56...9#...#.....# +34...7........... +..2.....X....##.. +..1.............. diff --git a/src/main/resources/2019-examples/day10-12.txt b/src/main/resources/2019-examples/day10-12.txt new file mode 100644 index 00000000..551609d1 --- /dev/null +++ b/src/main/resources/2019-examples/day10-12.txt @@ -0,0 +1,5 @@ +......234.....6.. +......1...5.....7 +................. +........X....89.. +................. diff --git a/src/main/resources/2019-examples/day10-2.txt b/src/main/resources/2019-examples/day10-2.txt new file mode 100644 index 00000000..71482513 --- /dev/null +++ b/src/main/resources/2019-examples/day10-2.txt @@ -0,0 +1,5 @@ +.7..7 +..... +67775 +....7 +...87 diff --git a/src/main/resources/2019-examples/day10-3.txt b/src/main/resources/2019-examples/day10-3.txt new file mode 100644 index 00000000..119fe6c5 --- /dev/null +++ b/src/main/resources/2019-examples/day10-3.txt @@ -0,0 +1,10 @@ +#......... +...A...... +...B..a... +.EDCG....a +..F.c.b... +.....c.... +..efd.c.gb +.......c.. +....f...c. +...e..d..c diff --git a/src/main/resources/2019-examples/day10-4.txt b/src/main/resources/2019-examples/day10-4.txt new file mode 100644 index 00000000..987698fb --- /dev/null +++ b/src/main/resources/2019-examples/day10-4.txt @@ -0,0 +1,10 @@ +......#.#. +#..#.#.... +..#######. +.#.#.###.. +.#..#..... +..#....#.# +#..#....#. +.##.#..### +##...#..#. +.#....#### diff --git a/src/main/resources/2019-examples/day10-5.txt b/src/main/resources/2019-examples/day10-5.txt new file mode 100644 index 00000000..e28e4241 --- /dev/null +++ b/src/main/resources/2019-examples/day10-5.txt @@ -0,0 +1,10 @@ +#.#...#.#. +.###....#. +.#....#... +##.#.#.#.# +....#.#.#. +.##..###.# +..#...##.. +..##....## +......#... +.####.###. diff --git a/src/main/resources/2019-examples/day10-6.txt b/src/main/resources/2019-examples/day10-6.txt new file mode 100644 index 00000000..af5b6e90 --- /dev/null +++ b/src/main/resources/2019-examples/day10-6.txt @@ -0,0 +1,10 @@ +.#..#..### +####.###.# +....###.#. +..###.##.# +##.##.#.#. +....###..# +..#.#..#.# +#..#.#.### +.##...##.# +.....#.#.. diff --git a/src/main/resources/2019-examples/day10-7.txt b/src/main/resources/2019-examples/day10-7.txt new file mode 100644 index 00000000..33437ba6 --- /dev/null +++ b/src/main/resources/2019-examples/day10-7.txt @@ -0,0 +1,20 @@ +.#..##.###...####### +##.############..##. +.#.######.########.# +.###.#######.####.#. +#####.##.#.##.###.## +..#####..#.######### +#################### +#.####....###.#.#.## +##.################# +#####.##.###..####.. +..######..##.####### +####.##.####...##..# +.#####..#.######.### +##...#.##########... +#.##########.####### +.####.#.###.###.#.## +....##.##.###..##### +.#.#.###########.### +#.#.#.#####.####.### +###.##.####.##.#..## diff --git a/src/main/resources/2019-examples/day10-8.txt b/src/main/resources/2019-examples/day10-8.txt new file mode 100644 index 00000000..ecf3f24b --- /dev/null +++ b/src/main/resources/2019-examples/day10-8.txt @@ -0,0 +1,5 @@ +.#....#####...#.. +##...##.#####..## +##...#...#.#####. +..#.....X...###.. +..#.#.....#....## diff --git a/src/main/resources/2019-examples/day10-9.txt b/src/main/resources/2019-examples/day10-9.txt new file mode 100644 index 00000000..fccd47a1 --- /dev/null +++ b/src/main/resources/2019-examples/day10-9.txt @@ -0,0 +1,5 @@ +.#....###24...#.. +##...##.13#67..9# +##...#...5.8####. +..#.....X...###.. +..#.#.....#....## diff --git a/src/main/resources/2019-examples/day11-1.txt b/src/main/resources/2019-examples/day11-1.txt new file mode 100644 index 00000000..48b167de --- /dev/null +++ b/src/main/resources/2019-examples/day11-1.txt @@ -0,0 +1,5 @@ +..... +..... +..^.. +..... +..... diff --git a/src/main/resources/2019-examples/day11-2.txt b/src/main/resources/2019-examples/day11-2.txt new file mode 100644 index 00000000..4e6e5ce3 --- /dev/null +++ b/src/main/resources/2019-examples/day11-2.txt @@ -0,0 +1,5 @@ +..... +..... +.<#.. +..... +..... diff --git a/src/main/resources/2019-examples/day11-3.txt b/src/main/resources/2019-examples/day11-3.txt new file mode 100644 index 00000000..b61fa7f2 --- /dev/null +++ b/src/main/resources/2019-examples/day11-3.txt @@ -0,0 +1,5 @@ +..... +..... +..#.. +.v... +..... diff --git a/src/main/resources/2019-examples/day11-4.txt b/src/main/resources/2019-examples/day11-4.txt new file mode 100644 index 00000000..35d9f3a6 --- /dev/null +++ b/src/main/resources/2019-examples/day11-4.txt @@ -0,0 +1,5 @@ +..... +..... +..^.. +.##.. +..... diff --git a/src/main/resources/2019-examples/day11-5.txt b/src/main/resources/2019-examples/day11-5.txt new file mode 100644 index 00000000..ae47a447 --- /dev/null +++ b/src/main/resources/2019-examples/day11-5.txt @@ -0,0 +1,5 @@ +..... +..<#. +...#. +.##.. +..... diff --git a/src/main/resources/2019-examples/day12-1.txt b/src/main/resources/2019-examples/day12-1.txt new file mode 100644 index 00000000..30247416 --- /dev/null +++ b/src/main/resources/2019-examples/day12-1.txt @@ -0,0 +1,4 @@ +<x=-1, y=0, z=2> +<x=2, y=-10, z=-7> +<x=4, y=-8, z=8> +<x=3, y=5, z=-1> diff --git a/src/main/resources/2019-examples/day12-2.txt b/src/main/resources/2019-examples/day12-2.txt new file mode 100644 index 00000000..b6b7954f --- /dev/null +++ b/src/main/resources/2019-examples/day12-2.txt @@ -0,0 +1,65 @@ +After 0 steps: +pos=<x=-1, y= 0, z= 2>, vel=<x= 0, y= 0, z= 0> +pos=<x= 2, y=-10, z=-7>, vel=<x= 0, y= 0, z= 0> +pos=<x= 4, y= -8, z= 8>, vel=<x= 0, y= 0, z= 0> +pos=<x= 3, y= 5, z=-1>, vel=<x= 0, y= 0, z= 0> + +After 1 step: +pos=<x= 2, y=-1, z= 1>, vel=<x= 3, y=-1, z=-1> +pos=<x= 3, y=-7, z=-4>, vel=<x= 1, y= 3, z= 3> +pos=<x= 1, y=-7, z= 5>, vel=<x=-3, y= 1, z=-3> +pos=<x= 2, y= 2, z= 0>, vel=<x=-1, y=-3, z= 1> + +After 2 steps: +pos=<x= 5, y=-3, z=-1>, vel=<x= 3, y=-2, z=-2> +pos=<x= 1, y=-2, z= 2>, vel=<x=-2, y= 5, z= 6> +pos=<x= 1, y=-4, z=-1>, vel=<x= 0, y= 3, z=-6> +pos=<x= 1, y=-4, z= 2>, vel=<x=-1, y=-6, z= 2> + +After 3 steps: +pos=<x= 5, y=-6, z=-1>, vel=<x= 0, y=-3, z= 0> +pos=<x= 0, y= 0, z= 6>, vel=<x=-1, y= 2, z= 4> +pos=<x= 2, y= 1, z=-5>, vel=<x= 1, y= 5, z=-4> +pos=<x= 1, y=-8, z= 2>, vel=<x= 0, y=-4, z= 0> + +After 4 steps: +pos=<x= 2, y=-8, z= 0>, vel=<x=-3, y=-2, z= 1> +pos=<x= 2, y= 1, z= 7>, vel=<x= 2, y= 1, z= 1> +pos=<x= 2, y= 3, z=-6>, vel=<x= 0, y= 2, z=-1> +pos=<x= 2, y=-9, z= 1>, vel=<x= 1, y=-1, z=-1> + +After 5 steps: +pos=<x=-1, y=-9, z= 2>, vel=<x=-3, y=-1, z= 2> +pos=<x= 4, y= 1, z= 5>, vel=<x= 2, y= 0, z=-2> +pos=<x= 2, y= 2, z=-4>, vel=<x= 0, y=-1, z= 2> +pos=<x= 3, y=-7, z=-1>, vel=<x= 1, y= 2, z=-2> + +After 6 steps: +pos=<x=-1, y=-7, z= 3>, vel=<x= 0, y= 2, z= 1> +pos=<x= 3, y= 0, z= 0>, vel=<x=-1, y=-1, z=-5> +pos=<x= 3, y=-2, z= 1>, vel=<x= 1, y=-4, z= 5> +pos=<x= 3, y=-4, z=-2>, vel=<x= 0, y= 3, z=-1> + +After 7 steps: +pos=<x= 2, y=-2, z= 1>, vel=<x= 3, y= 5, z=-2> +pos=<x= 1, y=-4, z=-4>, vel=<x=-2, y=-4, z=-4> +pos=<x= 3, y=-7, z= 5>, vel=<x= 0, y=-5, z= 4> +pos=<x= 2, y= 0, z= 0>, vel=<x=-1, y= 4, z= 2> + +After 8 steps: +pos=<x= 5, y= 2, z=-2>, vel=<x= 3, y= 4, z=-3> +pos=<x= 2, y=-7, z=-5>, vel=<x= 1, y=-3, z=-1> +pos=<x= 0, y=-9, z= 6>, vel=<x=-3, y=-2, z= 1> +pos=<x= 1, y= 1, z= 3>, vel=<x=-1, y= 1, z= 3> + +After 9 steps: +pos=<x= 5, y= 3, z=-4>, vel=<x= 0, y= 1, z=-2> +pos=<x= 2, y=-9, z=-3>, vel=<x= 0, y=-2, z= 2> +pos=<x= 0, y=-8, z= 4>, vel=<x= 0, y= 1, z=-2> +pos=<x= 1, y= 1, z= 5>, vel=<x= 0, y= 0, z= 2> + +After 10 steps: +pos=<x= 2, y= 1, z=-3>, vel=<x=-3, y=-2, z= 1> +pos=<x= 1, y=-8, z= 0>, vel=<x=-1, y= 1, z= 3> +pos=<x= 3, y=-6, z= 1>, vel=<x= 3, y= 2, z=-3> +pos=<x= 2, y= 0, z= 4>, vel=<x= 1, y=-1, z=-1> diff --git a/src/main/resources/2019-examples/day12-3.txt b/src/main/resources/2019-examples/day12-3.txt new file mode 100644 index 00000000..90286841 --- /dev/null +++ b/src/main/resources/2019-examples/day12-3.txt @@ -0,0 +1,6 @@ +Energy after 10 steps: +pot: 2 + 1 + 3 = 6; kin: 3 + 2 + 1 = 6; total: 6 * 6 = 36 +pot: 1 + 8 + 0 = 9; kin: 1 + 1 + 3 = 5; total: 9 * 5 = 45 +pot: 3 + 6 + 1 = 10; kin: 3 + 2 + 3 = 8; total: 10 * 8 = 80 +pot: 2 + 0 + 4 = 6; kin: 1 + 1 + 1 = 3; total: 6 * 3 = 18 +Sum of total energy: 36 + 45 + 80 + 18 = 179 diff --git a/src/main/resources/2019-examples/day12-4.txt b/src/main/resources/2019-examples/day12-4.txt new file mode 100644 index 00000000..ace1dfbd --- /dev/null +++ b/src/main/resources/2019-examples/day12-4.txt @@ -0,0 +1,4 @@ +<x=-8, y=-10, z=0> +<x=5, y=5, z=10> +<x=2, y=-7, z=3> +<x=9, y=-8, z=-3> diff --git a/src/main/resources/2019-examples/day12-5.txt b/src/main/resources/2019-examples/day12-5.txt new file mode 100644 index 00000000..1f133fa9 --- /dev/null +++ b/src/main/resources/2019-examples/day12-5.txt @@ -0,0 +1,72 @@ +After 0 steps: +pos=<x= -8, y=-10, z= 0>, vel=<x= 0, y= 0, z= 0> +pos=<x= 5, y= 5, z= 10>, vel=<x= 0, y= 0, z= 0> +pos=<x= 2, y= -7, z= 3>, vel=<x= 0, y= 0, z= 0> +pos=<x= 9, y= -8, z= -3>, vel=<x= 0, y= 0, z= 0> + +After 10 steps: +pos=<x= -9, y=-10, z= 1>, vel=<x= -2, y= -2, z= -1> +pos=<x= 4, y= 10, z= 9>, vel=<x= -3, y= 7, z= -2> +pos=<x= 8, y=-10, z= -3>, vel=<x= 5, y= -1, z= -2> +pos=<x= 5, y=-10, z= 3>, vel=<x= 0, y= -4, z= 5> + +After 20 steps: +pos=<x=-10, y= 3, z= -4>, vel=<x= -5, y= 2, z= 0> +pos=<x= 5, y=-25, z= 6>, vel=<x= 1, y= 1, z= -4> +pos=<x= 13, y= 1, z= 1>, vel=<x= 5, y= -2, z= 2> +pos=<x= 0, y= 1, z= 7>, vel=<x= -1, y= -1, z= 2> + +After 30 steps: +pos=<x= 15, y= -6, z= -9>, vel=<x= -5, y= 4, z= 0> +pos=<x= -4, y=-11, z= 3>, vel=<x= -3, y=-10, z= 0> +pos=<x= 0, y= -1, z= 11>, vel=<x= 7, y= 4, z= 3> +pos=<x= -3, y= -2, z= 5>, vel=<x= 1, y= 2, z= -3> + +After 40 steps: +pos=<x= 14, y=-12, z= -4>, vel=<x= 11, y= 3, z= 0> +pos=<x= -1, y= 18, z= 8>, vel=<x= -5, y= 2, z= 3> +pos=<x= -5, y=-14, z= 8>, vel=<x= 1, y= -2, z= 0> +pos=<x= 0, y=-12, z= -2>, vel=<x= -7, y= -3, z= -3> + +After 50 steps: +pos=<x=-23, y= 4, z= 1>, vel=<x= -7, y= -1, z= 2> +pos=<x= 20, y=-31, z= 13>, vel=<x= 5, y= 3, z= 4> +pos=<x= -4, y= 6, z= 1>, vel=<x= -1, y= 1, z= -3> +pos=<x= 15, y= 1, z= -5>, vel=<x= 3, y= -3, z= -3> + +After 60 steps: +pos=<x= 36, y=-10, z= 6>, vel=<x= 5, y= 0, z= 3> +pos=<x=-18, y= 10, z= 9>, vel=<x= -3, y= -7, z= 5> +pos=<x= 8, y=-12, z= -3>, vel=<x= -2, y= 1, z= -7> +pos=<x=-18, y= -8, z= -2>, vel=<x= 0, y= 6, z= -1> + +After 70 steps: +pos=<x=-33, y= -6, z= 5>, vel=<x= -5, y= -4, z= 7> +pos=<x= 13, y= -9, z= 2>, vel=<x= -2, y= 11, z= 3> +pos=<x= 11, y= -8, z= 2>, vel=<x= 8, y= -6, z= -7> +pos=<x= 17, y= 3, z= 1>, vel=<x= -1, y= -1, z= -3> + +After 80 steps: +pos=<x= 30, y= -8, z= 3>, vel=<x= 3, y= 3, z= 0> +pos=<x= -2, y= -4, z= 0>, vel=<x= 4, y=-13, z= 2> +pos=<x=-18, y= -7, z= 15>, vel=<x= -8, y= 2, z= -2> +pos=<x= -2, y= -1, z= -8>, vel=<x= 1, y= 8, z= 0> + +After 90 steps: +pos=<x=-25, y= -1, z= 4>, vel=<x= 1, y= -3, z= 4> +pos=<x= 2, y= -9, z= 0>, vel=<x= -3, y= 13, z= -1> +pos=<x= 32, y= -8, z= 14>, vel=<x= 5, y= -4, z= 6> +pos=<x= -1, y= -2, z= -8>, vel=<x= -3, y= -6, z= -9> + +After 100 steps: +pos=<x= 8, y=-12, z= -9>, vel=<x= -7, y= 3, z= 0> +pos=<x= 13, y= 16, z= -3>, vel=<x= 3, y=-11, z= -5> +pos=<x=-29, y=-11, z= -1>, vel=<x= -3, y= 7, z= 4> +pos=<x= 16, y=-13, z= 23>, vel=<x= 7, y= 1, z= 1> + +Energy after 100 steps: +pot: 8 + 12 + 9 = 29; kin: 7 + 3 + 0 = 10; total: 29 * 10 = 290 +pot: 13 + 16 + 3 = 32; kin: 3 + 11 + 5 = 19; total: 32 * 19 = 608 +pot: 29 + 11 + 1 = 41; kin: 3 + 7 + 4 = 14; total: 41 * 14 = 574 +pot: 16 + 13 + 23 = 52; kin: 7 + 1 + 1 = 9; total: 52 * 9 = 468 +Sum of total energy: 290 + 608 + 574 + 468 = 1940 diff --git a/src/main/resources/2019-examples/day12-6.txt b/src/main/resources/2019-examples/day12-6.txt new file mode 100644 index 00000000..925c7f53 --- /dev/null +++ b/src/main/resources/2019-examples/day12-6.txt @@ -0,0 +1,23 @@ +After 0 steps: +pos=<x= -1, y= 0, z= 2>, vel=<x= 0, y= 0, z= 0> +pos=<x= 2, y=-10, z= -7>, vel=<x= 0, y= 0, z= 0> +pos=<x= 4, y= -8, z= 8>, vel=<x= 0, y= 0, z= 0> +pos=<x= 3, y= 5, z= -1>, vel=<x= 0, y= 0, z= 0> + +After 2770 steps: +pos=<x= 2, y= -1, z= 1>, vel=<x= -3, y= 2, z= 2> +pos=<x= 3, y= -7, z= -4>, vel=<x= 2, y= -5, z= -6> +pos=<x= 1, y= -7, z= 5>, vel=<x= 0, y= -3, z= 6> +pos=<x= 2, y= 2, z= 0>, vel=<x= 1, y= 6, z= -2> + +After 2771 steps: +pos=<x= -1, y= 0, z= 2>, vel=<x= -3, y= 1, z= 1> +pos=<x= 2, y=-10, z= -7>, vel=<x= -1, y= -3, z= -3> +pos=<x= 4, y= -8, z= 8>, vel=<x= 3, y= -1, z= 3> +pos=<x= 3, y= 5, z= -1>, vel=<x= 1, y= 3, z= -1> + +After 2772 steps: +pos=<x= -1, y= 0, z= 2>, vel=<x= 0, y= 0, z= 0> +pos=<x= 2, y=-10, z= -7>, vel=<x= 0, y= 0, z= 0> +pos=<x= 4, y= -8, z= 8>, vel=<x= 0, y= 0, z= 0> +pos=<x= 3, y= 5, z= -1>, vel=<x= 0, y= 0, z= 0> diff --git a/src/main/resources/2019-examples/day12-7.txt b/src/main/resources/2019-examples/day12-7.txt new file mode 100644 index 00000000..ace1dfbd --- /dev/null +++ b/src/main/resources/2019-examples/day12-7.txt @@ -0,0 +1,4 @@ +<x=-8, y=-10, z=0> +<x=5, y=5, z=10> +<x=2, y=-7, z=3> +<x=9, y=-8, z=-3> diff --git a/src/main/resources/2019-examples/day14-1.txt b/src/main/resources/2019-examples/day14-1.txt new file mode 100644 index 00000000..2ad3c614 --- /dev/null +++ b/src/main/resources/2019-examples/day14-1.txt @@ -0,0 +1,6 @@ +10 ORE => 10 A +1 ORE => 1 B +7 A, 1 B => 1 C +7 A, 1 C => 1 D +7 A, 1 D => 1 E +7 A, 1 E => 1 FUEL diff --git a/src/main/resources/2019-examples/day14-2.txt b/src/main/resources/2019-examples/day14-2.txt new file mode 100644 index 00000000..86599f2c --- /dev/null +++ b/src/main/resources/2019-examples/day14-2.txt @@ -0,0 +1,7 @@ +9 ORE => 2 A +8 ORE => 3 B +7 ORE => 5 C +3 A, 4 B => 1 AB +5 B, 7 C => 1 BC +4 C, 1 A => 1 CA +2 AB, 3 BC, 4 CA => 1 FUEL diff --git a/src/main/resources/2019-examples/day14-3.txt b/src/main/resources/2019-examples/day14-3.txt new file mode 100644 index 00000000..e7992c2c --- /dev/null +++ b/src/main/resources/2019-examples/day14-3.txt @@ -0,0 +1,9 @@ +157 ORE => 5 NZVS +165 ORE => 6 DCFZ +44 XJWVT, 5 KHKGT, 1 QDVJ, 29 NZVS, 9 GPVTF, 48 HKGWZ => 1 FUEL +12 HKGWZ, 1 GPVTF, 8 PSHF => 9 QDVJ +179 ORE => 7 PSHF +177 ORE => 5 HKGWZ +7 DCFZ, 7 PSHF => 2 XJWVT +165 ORE => 2 GPVTF +3 DCFZ, 7 NZVS, 5 HKGWZ, 10 PSHF => 8 KHKGT diff --git a/src/main/resources/2019-examples/day14-4.txt b/src/main/resources/2019-examples/day14-4.txt new file mode 100644 index 00000000..e7a9cad7 --- /dev/null +++ b/src/main/resources/2019-examples/day14-4.txt @@ -0,0 +1,12 @@ +2 VPVL, 7 FWMGM, 2 CXFTF, 11 MNCFX => 1 STKFG +17 NVRVD, 3 JNWZP => 8 VPVL +53 STKFG, 6 MNCFX, 46 VJHF, 81 HVMC, 68 CXFTF, 25 GNMV => 1 FUEL +22 VJHF, 37 MNCFX => 5 FWMGM +139 ORE => 4 NVRVD +144 ORE => 7 JNWZP +5 MNCFX, 7 RFSQX, 2 FWMGM, 2 VPVL, 19 CXFTF => 3 HVMC +5 VJHF, 7 MNCFX, 9 VPVL, 37 CXFTF => 6 GNMV +145 ORE => 6 MNCFX +1 NVRVD => 8 CXFTF +1 VJHF, 6 MNCFX => 4 RFSQX +176 ORE => 6 VJHF diff --git a/src/main/resources/2019-examples/day14-5.txt b/src/main/resources/2019-examples/day14-5.txt new file mode 100644 index 00000000..ad2c7460 --- /dev/null +++ b/src/main/resources/2019-examples/day14-5.txt @@ -0,0 +1,17 @@ +171 ORE => 8 CNZTR +7 ZLQW, 3 BMBT, 9 XCVML, 26 XMNCP, 1 WPTQ, 2 MZWV, 1 RJRHP => 4 PLWSL +114 ORE => 4 BHXH +14 VRPVC => 6 BMBT +6 BHXH, 18 KTJDG, 12 WPTQ, 7 PLWSL, 31 FHTLT, 37 ZDVW => 1 FUEL +6 WPTQ, 2 BMBT, 8 ZLQW, 18 KTJDG, 1 XMNCP, 6 MZWV, 1 RJRHP => 6 FHTLT +15 XDBXC, 2 LTCX, 1 VRPVC => 6 ZLQW +13 WPTQ, 10 LTCX, 3 RJRHP, 14 XMNCP, 2 MZWV, 1 ZLQW => 1 ZDVW +5 BMBT => 4 WPTQ +189 ORE => 9 KTJDG +1 MZWV, 17 XDBXC, 3 XCVML => 2 XMNCP +12 VRPVC, 27 CNZTR => 2 XDBXC +15 KTJDG, 12 BHXH => 5 XCVML +3 BHXH, 2 VRPVC => 7 MZWV +121 ORE => 7 VRPVC +7 XCVML => 6 RJRHP +5 BHXH, 4 VRPVC => 5 LTCX diff --git a/src/main/resources/2019-examples/day15-1.txt b/src/main/resources/2019-examples/day15-1.txt new file mode 100644 index 00000000..f4783f53 --- /dev/null +++ b/src/main/resources/2019-examples/day15-1.txt @@ -0,0 +1,5 @@ + + + D + + diff --git a/src/main/resources/2019-examples/day15-10.txt b/src/main/resources/2019-examples/day15-10.txt new file mode 100644 index 00000000..74a26838 --- /dev/null +++ b/src/main/resources/2019-examples/day15-10.txt @@ -0,0 +1,5 @@ + ## +#O.## +#O#OO# +#OOO# + ### diff --git a/src/main/resources/2019-examples/day15-11.txt b/src/main/resources/2019-examples/day15-11.txt new file mode 100644 index 00000000..5de3ed21 --- /dev/null +++ b/src/main/resources/2019-examples/day15-11.txt @@ -0,0 +1,5 @@ + ## +#OO## +#O#OO# +#OOO# + ### diff --git a/src/main/resources/2019-examples/day15-2.txt b/src/main/resources/2019-examples/day15-2.txt new file mode 100644 index 00000000..6791f1c0 --- /dev/null +++ b/src/main/resources/2019-examples/day15-2.txt @@ -0,0 +1,5 @@ + + # + D + + diff --git a/src/main/resources/2019-examples/day15-3.txt b/src/main/resources/2019-examples/day15-3.txt new file mode 100644 index 00000000..70399633 --- /dev/null +++ b/src/main/resources/2019-examples/day15-3.txt @@ -0,0 +1,5 @@ + + # + .D + + diff --git a/src/main/resources/2019-examples/day15-4.txt b/src/main/resources/2019-examples/day15-4.txt new file mode 100644 index 00000000..9679dcdf --- /dev/null +++ b/src/main/resources/2019-examples/day15-4.txt @@ -0,0 +1,5 @@ + + ## + .D# + # + diff --git a/src/main/resources/2019-examples/day15-5.txt b/src/main/resources/2019-examples/day15-5.txt new file mode 100644 index 00000000..918acc3d --- /dev/null +++ b/src/main/resources/2019-examples/day15-5.txt @@ -0,0 +1,5 @@ + + ## + D.# + # + diff --git a/src/main/resources/2019-examples/day15-6.txt b/src/main/resources/2019-examples/day15-6.txt new file mode 100644 index 00000000..cf1ff48f --- /dev/null +++ b/src/main/resources/2019-examples/day15-6.txt @@ -0,0 +1,5 @@ + + ## + #..# + D.# + # diff --git a/src/main/resources/2019-examples/day15-7.txt b/src/main/resources/2019-examples/day15-7.txt new file mode 100644 index 00000000..78b58630 --- /dev/null +++ b/src/main/resources/2019-examples/day15-7.txt @@ -0,0 +1,5 @@ + ## +#..## +#.#..# +#.O.# + ### diff --git a/src/main/resources/2019-examples/day15-8.txt b/src/main/resources/2019-examples/day15-8.txt new file mode 100644 index 00000000..ee3c1433 --- /dev/null +++ b/src/main/resources/2019-examples/day15-8.txt @@ -0,0 +1,5 @@ + ## +#..## +#.#..# +#OOO# + ### diff --git a/src/main/resources/2019-examples/day15-9.txt b/src/main/resources/2019-examples/day15-9.txt new file mode 100644 index 00000000..fd4a56b1 --- /dev/null +++ b/src/main/resources/2019-examples/day15-9.txt @@ -0,0 +1,5 @@ + ## +#..## +#O#O.# +#OOO# + ### diff --git a/src/main/resources/2019-examples/day16-1.txt b/src/main/resources/2019-examples/day16-1.txt new file mode 100644 index 00000000..d84f5fda --- /dev/null +++ b/src/main/resources/2019-examples/day16-1.txt @@ -0,0 +1,45 @@ +Input signal: 12345678 + +1*1 + 2*0 + 3*-1 + 4*0 + 5*1 + 6*0 + 7*-1 + 8*0 = 4 +1*0 + 2*1 + 3*1 + 4*0 + 5*0 + 6*-1 + 7*-1 + 8*0 = 8 +1*0 + 2*0 + 3*1 + 4*1 + 5*1 + 6*0 + 7*0 + 8*0 = 2 +1*0 + 2*0 + 3*0 + 4*1 + 5*1 + 6*1 + 7*1 + 8*0 = 2 +1*0 + 2*0 + 3*0 + 4*0 + 5*1 + 6*1 + 7*1 + 8*1 = 6 +1*0 + 2*0 + 3*0 + 4*0 + 5*0 + 6*1 + 7*1 + 8*1 = 1 +1*0 + 2*0 + 3*0 + 4*0 + 5*0 + 6*0 + 7*1 + 8*1 = 5 +1*0 + 2*0 + 3*0 + 4*0 + 5*0 + 6*0 + 7*0 + 8*1 = 8 + +After 1 phase: 48226158 + +4*1 + 8*0 + 2*-1 + 2*0 + 6*1 + 1*0 + 5*-1 + 8*0 = 3 +4*0 + 8*1 + 2*1 + 2*0 + 6*0 + 1*-1 + 5*-1 + 8*0 = 4 +4*0 + 8*0 + 2*1 + 2*1 + 6*1 + 1*0 + 5*0 + 8*0 = 0 +4*0 + 8*0 + 2*0 + 2*1 + 6*1 + 1*1 + 5*1 + 8*0 = 4 +4*0 + 8*0 + 2*0 + 2*0 + 6*1 + 1*1 + 5*1 + 8*1 = 0 +4*0 + 8*0 + 2*0 + 2*0 + 6*0 + 1*1 + 5*1 + 8*1 = 4 +4*0 + 8*0 + 2*0 + 2*0 + 6*0 + 1*0 + 5*1 + 8*1 = 3 +4*0 + 8*0 + 2*0 + 2*0 + 6*0 + 1*0 + 5*0 + 8*1 = 8 + +After 2 phases: 34040438 + +3*1 + 4*0 + 0*-1 + 4*0 + 0*1 + 4*0 + 3*-1 + 8*0 = 0 +3*0 + 4*1 + 0*1 + 4*0 + 0*0 + 4*-1 + 3*-1 + 8*0 = 3 +3*0 + 4*0 + 0*1 + 4*1 + 0*1 + 4*0 + 3*0 + 8*0 = 4 +3*0 + 4*0 + 0*0 + 4*1 + 0*1 + 4*1 + 3*1 + 8*0 = 1 +3*0 + 4*0 + 0*0 + 4*0 + 0*1 + 4*1 + 3*1 + 8*1 = 5 +3*0 + 4*0 + 0*0 + 4*0 + 0*0 + 4*1 + 3*1 + 8*1 = 5 +3*0 + 4*0 + 0*0 + 4*0 + 0*0 + 4*0 + 3*1 + 8*1 = 1 +3*0 + 4*0 + 0*0 + 4*0 + 0*0 + 4*0 + 3*0 + 8*1 = 8 + +After 3 phases: 03415518 + +0*1 + 3*0 + 4*-1 + 1*0 + 5*1 + 5*0 + 1*-1 + 8*0 = 0 +0*0 + 3*1 + 4*1 + 1*0 + 5*0 + 5*-1 + 1*-1 + 8*0 = 1 +0*0 + 3*0 + 4*1 + 1*1 + 5*1 + 5*0 + 1*0 + 8*0 = 0 +0*0 + 3*0 + 4*0 + 1*1 + 5*1 + 5*1 + 1*1 + 8*0 = 2 +0*0 + 3*0 + 4*0 + 1*0 + 5*1 + 5*1 + 1*1 + 8*1 = 9 +0*0 + 3*0 + 4*0 + 1*0 + 5*0 + 5*1 + 1*1 + 8*1 = 4 +0*0 + 3*0 + 4*0 + 1*0 + 5*0 + 5*0 + 1*1 + 8*1 = 9 +0*0 + 3*0 + 4*0 + 1*0 + 5*0 + 5*0 + 1*0 + 8*1 = 8 + +After 4 phases: 01029498 diff --git a/src/main/resources/2019-examples/day17-1.txt b/src/main/resources/2019-examples/day17-1.txt new file mode 100644 index 00000000..f9c709c1 --- /dev/null +++ b/src/main/resources/2019-examples/day17-1.txt @@ -0,0 +1,7 @@ +..#.......... +..#.......... +#######...### +#.#...#...#.# +############# +..#...#...#.. +..#####...^.. diff --git a/src/main/resources/2019-examples/day17-2.txt b/src/main/resources/2019-examples/day17-2.txt new file mode 100644 index 00000000..02b96d6f --- /dev/null +++ b/src/main/resources/2019-examples/day17-2.txt @@ -0,0 +1,7 @@ +..#.......... +..#.......... +##O####...### +#.#...#...#.# +##O###O###O## +..#...#...#.. +..#####...^.. diff --git a/src/main/resources/2019-examples/day17-3.txt b/src/main/resources/2019-examples/day17-3.txt new file mode 100644 index 00000000..da6fc674 --- /dev/null +++ b/src/main/resources/2019-examples/day17-3.txt @@ -0,0 +1,15 @@ +#######...##### +#.....#...#...# +#.....#...#...# +......#...#...# +......#...###.# +......#.....#.# +^########...#.# +......#.#...#.# +......######### +........#...#.. +....#########.. +....#...#...... +....#...#...... +....#...#...... +....#####...... diff --git a/src/main/resources/2019-examples/day17-4.txt b/src/main/resources/2019-examples/day17-4.txt new file mode 100644 index 00000000..41814ac8 --- /dev/null +++ b/src/main/resources/2019-examples/day17-4.txt @@ -0,0 +1 @@ +R,8,R,8,R,4,R,4,R,8,L,6,L,2,R,4,R,4,R,8,R,8,R,8,L,6,L,2 \ No newline at end of file diff --git a/src/main/resources/2019-examples/day17-5.txt b/src/main/resources/2019-examples/day17-5.txt new file mode 100644 index 00000000..1f4b4e43 --- /dev/null +++ b/src/main/resources/2019-examples/day17-5.txt @@ -0,0 +1,18 @@ +A, B, C, B, A, C +R,8,R,8, R,4,R,4,R,8, L,6,L,2, R,4,R,4,R,8, R,8,R,8, L,6,L,2 + +CCCCCCA...BBBBB +C.....A...B...B +C.....A...B...B +......A...B...B +......A...CCC.B +......A.....C.B +^AAAAAAAA...C.B +......A.A...C.B +......AAAAAA#AB +........A...C.. +....BBBB#BBBB.. +....B...A...... +....B...A...... +....B...A...... +....BBBBA...... diff --git a/src/main/resources/2019-examples/day18-1.txt b/src/main/resources/2019-examples/day18-1.txt new file mode 100644 index 00000000..33802e1d --- /dev/null +++ b/src/main/resources/2019-examples/day18-1.txt @@ -0,0 +1,3 @@ +######### +#b.A.@.a# +######### diff --git a/src/main/resources/2019-examples/day18-10.txt b/src/main/resources/2019-examples/day18-10.txt new file mode 100644 index 00000000..d5d888b1 --- /dev/null +++ b/src/main/resources/2019-examples/day18-10.txt @@ -0,0 +1,9 @@ +################# +#i.G..c...e..H.p# +########.######## +#j.A..b...f..D.o# +########@######## +#k.E..a...g..B.n# +########.######## +#l.F..d...h..C.m# +################# diff --git a/src/main/resources/2019-examples/day18-11.txt b/src/main/resources/2019-examples/day18-11.txt new file mode 100644 index 00000000..ee6598e6 --- /dev/null +++ b/src/main/resources/2019-examples/day18-11.txt @@ -0,0 +1,6 @@ +######################## +#@..............ac.GI.b# +###d#e#f################ +###A#B#C################ +###g#h#i################ +######################## diff --git a/src/main/resources/2019-examples/day18-12.txt b/src/main/resources/2019-examples/day18-12.txt new file mode 100644 index 00000000..effc0952 --- /dev/null +++ b/src/main/resources/2019-examples/day18-12.txt @@ -0,0 +1,3 @@ +... +.@. +... diff --git a/src/main/resources/2019-examples/day18-13.txt b/src/main/resources/2019-examples/day18-13.txt new file mode 100644 index 00000000..36625788 --- /dev/null +++ b/src/main/resources/2019-examples/day18-13.txt @@ -0,0 +1,3 @@ +@#@ +### +@#@ diff --git a/src/main/resources/2019-examples/day18-14.txt b/src/main/resources/2019-examples/day18-14.txt new file mode 100644 index 00000000..e8d22b04 --- /dev/null +++ b/src/main/resources/2019-examples/day18-14.txt @@ -0,0 +1,7 @@ +####### ####### +#a.#Cd# #a.#Cd# +##...## ##@#@## +##.@.## --> ####### +##...## ##@#@## +#cB#Ab# #cB#Ab# +####### ####### diff --git a/src/main/resources/2019-examples/day18-15.txt b/src/main/resources/2019-examples/day18-15.txt new file mode 100644 index 00000000..db9f9176 --- /dev/null +++ b/src/main/resources/2019-examples/day18-15.txt @@ -0,0 +1,7 @@ +####### +#@.#Cd# +##.#@## +####### +##@#@## +#cB#.b# +####### diff --git a/src/main/resources/2019-examples/day18-16.txt b/src/main/resources/2019-examples/day18-16.txt new file mode 100644 index 00000000..916f26c6 --- /dev/null +++ b/src/main/resources/2019-examples/day18-16.txt @@ -0,0 +1,7 @@ +####### +#@.#Cd# +##.#@## +####### +##@#.## +#c.#.@# +####### diff --git a/src/main/resources/2019-examples/day18-17.txt b/src/main/resources/2019-examples/day18-17.txt new file mode 100644 index 00000000..d38635ec --- /dev/null +++ b/src/main/resources/2019-examples/day18-17.txt @@ -0,0 +1,7 @@ +####### +#@.#.d# +##.#@## +####### +##.#.## +#@.#.@# +####### diff --git a/src/main/resources/2019-examples/day18-18.txt b/src/main/resources/2019-examples/day18-18.txt new file mode 100644 index 00000000..64644ce7 --- /dev/null +++ b/src/main/resources/2019-examples/day18-18.txt @@ -0,0 +1,7 @@ +####### +#@.#.@# +##.#.## +####### +##.#.## +#@.#.@# +####### diff --git a/src/main/resources/2019-examples/day18-19.txt b/src/main/resources/2019-examples/day18-19.txt new file mode 100644 index 00000000..c449a427 --- /dev/null +++ b/src/main/resources/2019-examples/day18-19.txt @@ -0,0 +1,7 @@ +############### +#d.ABC.#.....a# +######@#@###### +############### +######@#@###### +#b.....#.....c# +############### diff --git a/src/main/resources/2019-examples/day18-2.txt b/src/main/resources/2019-examples/day18-2.txt new file mode 100644 index 00000000..b3e58165 --- /dev/null +++ b/src/main/resources/2019-examples/day18-2.txt @@ -0,0 +1,3 @@ +######### +#b.....@# +######### diff --git a/src/main/resources/2019-examples/day18-20.txt b/src/main/resources/2019-examples/day18-20.txt new file mode 100644 index 00000000..5f99dd6f --- /dev/null +++ b/src/main/resources/2019-examples/day18-20.txt @@ -0,0 +1,7 @@ +############# +#DcBa.#.GhKl# +#.###@#@#I### +#e#d#####j#k# +###C#@#@###J# +#fEbA.#.FgHi# +############# diff --git a/src/main/resources/2019-examples/day18-21.txt b/src/main/resources/2019-examples/day18-21.txt new file mode 100644 index 00000000..97c85afc --- /dev/null +++ b/src/main/resources/2019-examples/day18-21.txt @@ -0,0 +1,9 @@ +############# +#g#f.D#..h#l# +#F###e#E###.# +#dCba@#@BcIJ# +############# +#nK.L@#@G...# +#M###N#H###.# +#o#m..#i#jk.# +############# diff --git a/src/main/resources/2019-examples/day18-3.txt b/src/main/resources/2019-examples/day18-3.txt new file mode 100644 index 00000000..81500e9a --- /dev/null +++ b/src/main/resources/2019-examples/day18-3.txt @@ -0,0 +1,3 @@ +######### +#@......# +######### diff --git a/src/main/resources/2019-examples/day18-4.txt b/src/main/resources/2019-examples/day18-4.txt new file mode 100644 index 00000000..af485bc3 --- /dev/null +++ b/src/main/resources/2019-examples/day18-4.txt @@ -0,0 +1,5 @@ +######################## +#f.D.E.e.C.b.A.@.a.B.c.# +######################.# +#d.....................# +######################## diff --git a/src/main/resources/2019-examples/day18-5.txt b/src/main/resources/2019-examples/day18-5.txt new file mode 100644 index 00000000..c3828dca --- /dev/null +++ b/src/main/resources/2019-examples/day18-5.txt @@ -0,0 +1,5 @@ +######################## +#f.D.E.e.C.b.....@.B.c.# +######################.# +#d.....................# +######################## diff --git a/src/main/resources/2019-examples/day18-6.txt b/src/main/resources/2019-examples/day18-6.txt new file mode 100644 index 00000000..588c2b47 --- /dev/null +++ b/src/main/resources/2019-examples/day18-6.txt @@ -0,0 +1,5 @@ +######################## +#f.D.E.e.C.@.........c.# +######################.# +#d.....................# +######################## diff --git a/src/main/resources/2019-examples/day18-7.txt b/src/main/resources/2019-examples/day18-7.txt new file mode 100644 index 00000000..86078d64 --- /dev/null +++ b/src/main/resources/2019-examples/day18-7.txt @@ -0,0 +1,5 @@ +######################## +#f.D.E.e.............@.# +######################.# +#d.....................# +######################## diff --git a/src/main/resources/2019-examples/day18-8.txt b/src/main/resources/2019-examples/day18-8.txt new file mode 100644 index 00000000..8e7e456f --- /dev/null +++ b/src/main/resources/2019-examples/day18-8.txt @@ -0,0 +1,5 @@ +######################## +#f...E.e...............# +######################.# +#@.....................# +######################## diff --git a/src/main/resources/2019-examples/day18-9.txt b/src/main/resources/2019-examples/day18-9.txt new file mode 100644 index 00000000..b650235d --- /dev/null +++ b/src/main/resources/2019-examples/day18-9.txt @@ -0,0 +1,5 @@ +######################## +#...............b.C.D.f# +#.###################### +#.....@.a.B.c.d.A.e.F.g# +######################## diff --git a/src/main/resources/2019-examples/day19-1.txt b/src/main/resources/2019-examples/day19-1.txt new file mode 100644 index 00000000..8e9f5caf --- /dev/null +++ b/src/main/resources/2019-examples/day19-1.txt @@ -0,0 +1,12 @@ + X + 0-> 9 + 0#......... + |.#........ + v..##...... + ...###.... + ....###... +Y .....####. + ......#### + ......#### + .......### + 9........## diff --git a/src/main/resources/2019-examples/day19-2.txt b/src/main/resources/2019-examples/day19-2.txt new file mode 100644 index 00000000..feed715c --- /dev/null +++ b/src/main/resources/2019-examples/day19-2.txt @@ -0,0 +1,35 @@ +#....................................... +.#...................................... +..##.................................... +...###.................................. +....###................................. +.....####............................... +......#####............................. +......######............................ +.......#######.......................... +........########........................ +.........#########...................... +..........#########..................... +...........##########................... +...........############................. +............############................ +.............#############.............. +..............##############............ +...............###############.......... +................###############......... +................#################....... +.................########OOOOOOOOOO..... +..................#######OOOOOOOOOO#.... +...................######OOOOOOOOOO###.. +....................#####OOOOOOOOOO##### +.....................####OOOOOOOOOO##### +.....................####OOOOOOOOOO##### +......................###OOOOOOOOOO##### +.......................##OOOOOOOOOO##### +........................#OOOOOOOOOO##### +.........................OOOOOOOOOO##### +..........................############## +..........................############## +...........................############# +............................############ +.............................########### diff --git a/src/main/resources/2019-examples/day2-1.txt b/src/main/resources/2019-examples/day2-1.txt new file mode 100644 index 00000000..d3e65874 --- /dev/null +++ b/src/main/resources/2019-examples/day2-1.txt @@ -0,0 +1 @@ +1,9,10,3,2,3,11,0,99,30,40,50 \ No newline at end of file diff --git a/src/main/resources/2019-examples/day2-2.txt b/src/main/resources/2019-examples/day2-2.txt new file mode 100644 index 00000000..d9730d11 --- /dev/null +++ b/src/main/resources/2019-examples/day2-2.txt @@ -0,0 +1,4 @@ +1,9,10,3, +2,3,11,0, +99, +30,40,50 diff --git a/src/main/resources/2019-examples/day2-3.txt b/src/main/resources/2019-examples/day2-3.txt new file mode 100644 index 00000000..805b122c --- /dev/null +++ b/src/main/resources/2019-examples/day2-3.txt @@ -0,0 +1,4 @@ +1,9,10,70, +2,3,11,0, +99, +30,40,50 diff --git a/src/main/resources/2019-examples/day2-4.txt b/src/main/resources/2019-examples/day2-4.txt new file mode 100644 index 00000000..68cd7a47 --- /dev/null +++ b/src/main/resources/2019-examples/day2-4.txt @@ -0,0 +1,4 @@ +3500,9,10,70, +2,3,11,0, +99, +30,40,50 diff --git a/src/main/resources/2019-examples/day20-1.txt b/src/main/resources/2019-examples/day20-1.txt new file mode 100644 index 00000000..1e8d56fa --- /dev/null +++ b/src/main/resources/2019-examples/day20-1.txt @@ -0,0 +1,19 @@ + A + A + #######.######### + #######.........# + #######.#######.# + #######.#######.# + #######.#######.# + ##### B ###.# +BC...## C ###.# + ##.## ###.# + ##...DE F ###.# + ##### G ###.# + #########.#####.# +DE..#######...###.# + #.#########.###.# +FG..#########.....# + ###########.##### + Z + Z diff --git a/src/main/resources/2019-examples/day20-2.txt b/src/main/resources/2019-examples/day20-2.txt new file mode 100644 index 00000000..6f61581a --- /dev/null +++ b/src/main/resources/2019-examples/day20-2.txt @@ -0,0 +1,37 @@ + A + A + #################.############# + #.#...#...................#.#.# + #.#.#.###.###.###.#########.#.# + #.#.#.......#...#.....#.#.#...# + #.#########.###.#####.#.#.###.# + #.............#.#.....#.......# + ###.###########.###.#####.#.#.# + #.....# A C #.#.#.# + ####### S P #####.# + #.#...# #......VT + #.#.#.# #.##### + #...#.# YN....#.# + #.###.# #####.# +DI....#.# #.....# + #####.# #.###.# +ZZ......# QG....#..AS + ###.### ####### +JO..#.#.# #.....# + #.#.#.# ###.#.# + #...#..DI BU....#..LF + #####.# #.##### +YN......# VT..#....QG + #.###.# #.###.# + #.#...# #.....# + ###.### J L J #.#.### + #.....# O F P #.#...# + #.###.#####.#.#####.#####.###.# + #...#.#.#...#.....#.....#.#...# + #.#####.###.###.#.#.#########.# + #...#.#.....#...#.#.#.#.....#.# + #.###.#####.###.###.#.#.####### + #.#.........#...#.............# + #########.###.###.############# + B J C + U P P diff --git a/src/main/resources/2019-examples/day20-3.txt b/src/main/resources/2019-examples/day20-3.txt new file mode 100644 index 00000000..d0511332 --- /dev/null +++ b/src/main/resources/2019-examples/day20-3.txt @@ -0,0 +1,37 @@ + Z L X W C + Z P Q B K + ###########.#.#.#.#######.############### + #...#.......#.#.......#.#.......#.#.#...# + ###.#.#.#.#.#.#.#.###.#.#.#######.#.#.### + #.#...#.#.#...#.#.#...#...#...#.#.......# + #.###.#######.###.###.#.###.###.#.####### + #...#.......#.#...#...#.............#...# + #.#########.#######.#.#######.#######.### + #...#.# F R I Z #.#.#.# + #.###.# D E C H #.#.#.# + #.#...# #...#.# + #.###.# #.###.# + #.#....OA WB..#.#..ZH + #.###.# #.#.#.# +CJ......# #.....# + ####### ####### + #.#....CK #......IC + #.###.# #.###.# + #.....# #...#.# + ###.### #.#.#.# +XF....#.# RF..#.#.# + #####.# ####### + #......CJ NM..#...# + ###.#.# #.###.# +RE....#.# #......RF + ###.### X X L #.#.#.# + #.....# F Q P #.#.#.# + ###.###########.###.#######.#########.### + #.....#...#.....#.......#...#.....#.#...# + #####.#.###.#######.#######.###.###.#.#.# + #.......#.......#.#.#.#.#...#...#...#.#.# + #####.###.#####.#.#.#.#.###.###.#.###.### + #.......#.....#.#...#...............#...# + #############.#.#.###.################### + A O F N + A A D M diff --git a/src/main/resources/2019-examples/day21-1.txt b/src/main/resources/2019-examples/day21-1.txt new file mode 100644 index 00000000..7eb50b8b --- /dev/null +++ b/src/main/resources/2019-examples/day21-1.txt @@ -0,0 +1,6 @@ +NOT A J +NOT B T +AND T J +NOT C T +AND T J +AND D J diff --git a/src/main/resources/2019-examples/day21-2.txt b/src/main/resources/2019-examples/day21-2.txt new file mode 100644 index 00000000..b3f0bf4c --- /dev/null +++ b/src/main/resources/2019-examples/day21-2.txt @@ -0,0 +1,2 @@ +NOT D J +WALK diff --git a/src/main/resources/2019-examples/day21-3.txt b/src/main/resources/2019-examples/day21-3.txt new file mode 100644 index 00000000..3e1abfa3 --- /dev/null +++ b/src/main/resources/2019-examples/day21-3.txt @@ -0,0 +1,34 @@ +................. +................. +@................ +#####.########### + +................. +................. +.@............... +#####.########### + +................. +..@.............. +................. +#####.########### + +...@............. +................. +................. +#####.########### + +................. +....@............ +................. +#####.########### + +................. +................. +.....@........... +#####.########### + +................. +................. +................. +#####@########### diff --git a/src/main/resources/2019-examples/day22-1.txt b/src/main/resources/2019-examples/day22-1.txt new file mode 100644 index 00000000..f5b19d5a --- /dev/null +++ b/src/main/resources/2019-examples/day22-1.txt @@ -0,0 +1,20 @@ +Top Bottom +0 1 2 3 4 5 6 7 8 9 Your deck + New stack + + 1 2 3 4 5 6 7 8 9 Your deck + 0 New stack + + 2 3 4 5 6 7 8 9 Your deck + 1 0 New stack + + 3 4 5 6 7 8 9 Your deck + 2 1 0 New stack + +Several steps later... + + 9 Your deck + 8 7 6 5 4 3 2 1 0 New stack + + Your deck +9 8 7 6 5 4 3 2 1 0 New stack diff --git a/src/main/resources/2019-examples/day22-2.txt b/src/main/resources/2019-examples/day22-2.txt new file mode 100644 index 00000000..7d60260e --- /dev/null +++ b/src/main/resources/2019-examples/day22-2.txt @@ -0,0 +1,10 @@ +Top Bottom +0 1 2 3 4 5 6 7 8 9 Your deck + + 3 4 5 6 7 8 9 Your deck +0 1 2 Cut cards + +3 4 5 6 7 8 9 Your deck + 0 1 2 Cut cards + +3 4 5 6 7 8 9 0 1 2 Your deck diff --git a/src/main/resources/2019-examples/day22-3.txt b/src/main/resources/2019-examples/day22-3.txt new file mode 100644 index 00000000..29420462 --- /dev/null +++ b/src/main/resources/2019-examples/day22-3.txt @@ -0,0 +1,10 @@ +Top Bottom +0 1 2 3 4 5 6 7 8 9 Your deck + +0 1 2 3 4 5 Your deck + 6 7 8 9 Cut cards + + 0 1 2 3 4 5 Your deck +6 7 8 9 Cut cards + +6 7 8 9 0 1 2 3 4 5 Your deck diff --git a/src/main/resources/2019-examples/day22-4.txt b/src/main/resources/2019-examples/day22-4.txt new file mode 100644 index 00000000..e772815b --- /dev/null +++ b/src/main/resources/2019-examples/day22-4.txt @@ -0,0 +1,44 @@ + +0 1 2 3 4 5 6 7 8 9 Your deck +. . . . . . . . . . Space on table +^ Current position + +Deal the top card to the current position: + + 1 2 3 4 5 6 7 8 9 Your deck +0 . . . . . . . . . Space on table +^ Current position + +Move the current position right 3: + + 1 2 3 4 5 6 7 8 9 Your deck +0 . . . . . . . . . Space on table + ^ Current position + +Deal the top card: + + 2 3 4 5 6 7 8 9 Your deck +0 . . 1 . . . . . . Space on table + ^ Current position + +Move right 3 and deal: + + 3 4 5 6 7 8 9 Your deck +0 . . 1 . . 2 . . . Space on table + ^ Current position + +Move right 3 and deal: + + 4 5 6 7 8 9 Your deck +0 . . 1 . . 2 . . 3 Space on table + ^ Current position + +Move right 3, wrapping around, and deal: + + 5 6 7 8 9 Your deck +0 . 4 1 . . 2 . . 3 Space on table + ^ Current position + +And so on: + +0 7 4 1 8 5 2 9 6 3 Space on table diff --git a/src/main/resources/2019-examples/day22-5.txt b/src/main/resources/2019-examples/day22-5.txt new file mode 100644 index 00000000..b121f672 --- /dev/null +++ b/src/main/resources/2019-examples/day22-5.txt @@ -0,0 +1,4 @@ +deal with increment 7 +deal into new stack +deal into new stack +Result: 0 3 6 9 2 5 8 1 4 7 diff --git a/src/main/resources/2019-examples/day22-6.txt b/src/main/resources/2019-examples/day22-6.txt new file mode 100644 index 00000000..741ec20f --- /dev/null +++ b/src/main/resources/2019-examples/day22-6.txt @@ -0,0 +1,4 @@ +cut 6 +deal with increment 7 +deal into new stack +Result: 3 0 7 4 1 8 5 2 9 6 diff --git a/src/main/resources/2019-examples/day22-7.txt b/src/main/resources/2019-examples/day22-7.txt new file mode 100644 index 00000000..01a9e358 --- /dev/null +++ b/src/main/resources/2019-examples/day22-7.txt @@ -0,0 +1,4 @@ +deal with increment 7 +deal with increment 9 +cut -2 +Result: 6 3 0 7 4 1 8 5 2 9 diff --git a/src/main/resources/2019-examples/day22-8.txt b/src/main/resources/2019-examples/day22-8.txt new file mode 100644 index 00000000..d4a1e7ae --- /dev/null +++ b/src/main/resources/2019-examples/day22-8.txt @@ -0,0 +1,11 @@ +deal into new stack +cut -2 +deal with increment 7 +cut 8 +cut -4 +deal with increment 7 +cut 3 +deal with increment 9 +deal with increment 3 +cut -1 +Result: 9 2 5 8 1 4 7 0 3 6 diff --git a/src/main/resources/2019-examples/day24-1.txt b/src/main/resources/2019-examples/day24-1.txt new file mode 100644 index 00000000..e1b0f601 --- /dev/null +++ b/src/main/resources/2019-examples/day24-1.txt @@ -0,0 +1,34 @@ +Initial state: +....# +#..#. +#..## +..#.. +#.... + +After 1 minute: +#..#. +####. +###.# +##.## +.##.. + +After 2 minutes: +##### +....# +....# +...#. +#.### + +After 3 minutes: +#.... +####. +...## +#.##. +.##.# + +After 4 minutes: +####. +....# +##..# +..... +##... diff --git a/src/main/resources/2019-examples/day24-2.txt b/src/main/resources/2019-examples/day24-2.txt new file mode 100644 index 00000000..77d1d37d --- /dev/null +++ b/src/main/resources/2019-examples/day24-2.txt @@ -0,0 +1,5 @@ +..... +..... +..... +#.... +.#... diff --git a/src/main/resources/2019-examples/day24-3.txt b/src/main/resources/2019-examples/day24-3.txt new file mode 100644 index 00000000..f64e7cfb --- /dev/null +++ b/src/main/resources/2019-examples/day24-3.txt @@ -0,0 +1,25 @@ + | | | | + | | | | + | | | | +-----+-----+---------+-----+----- + | | | | + | | | | + | | | | +-----+-----+---------+-----+----- + | | | | | | | | + | |-+-+-+-+-| | + | | | | | | | | + | |-+-+-+-+-| | + | | | |?| | | | + | |-+-+-+-+-| | + | | | | | | | | + | |-+-+-+-+-| | + | | | | | | | | +-----+-----+---------+-----+----- + | | | | + | | | | + | | | | +-----+-----+---------+-----+----- + | | | | + | | | | + | | | | diff --git a/src/main/resources/2019-examples/day24-4.txt b/src/main/resources/2019-examples/day24-4.txt new file mode 100644 index 00000000..91bec850 --- /dev/null +++ b/src/main/resources/2019-examples/day24-4.txt @@ -0,0 +1,25 @@ + | | | | + 1 | 2 | 3 | 4 | 5 + | | | | +-----+-----+---------+-----+----- + | | | | + 6 | 7 | 8 | 9 | 10 + | | | | +-----+-----+---------+-----+----- + | |A|B|C|D|E| | + | |-+-+-+-+-| | + | |F|G|H|I|J| | + | |-+-+-+-+-| | + 11 | 12 |K|L|?|N|O| 14 | 15 + | |-+-+-+-+-| | + | |P|Q|R|S|T| | + | |-+-+-+-+-| | + | |U|V|W|X|Y| | +-----+-----+---------+-----+----- + | | | | + 16 | 17 | 18 | 19 | 20 + | | | | +-----+-----+---------+-----+----- + | | | | + 21 | 22 | 23 | 24 | 25 + | | | | diff --git a/src/main/resources/2019-examples/day24-5.txt b/src/main/resources/2019-examples/day24-5.txt new file mode 100644 index 00000000..e15911a0 --- /dev/null +++ b/src/main/resources/2019-examples/day24-5.txt @@ -0,0 +1,5 @@ +....# +#..#. +#.?## +..#.. +#.... diff --git a/src/main/resources/2019-examples/day24-6.txt b/src/main/resources/2019-examples/day24-6.txt new file mode 100644 index 00000000..47e687d5 --- /dev/null +++ b/src/main/resources/2019-examples/day24-6.txt @@ -0,0 +1,76 @@ +Depth -5: +..#.. +.#.#. +..?.# +.#.#. +..#.. + +Depth -4: +...#. +...## +..?.. +...## +...#. + +Depth -3: +#.#.. +.#... +..?.. +.#... +#.#.. + +Depth -2: +.#.## +....# +..?.# +...## +.###. + +Depth -1: +#..## +...## +..?.. +...#. +.#### + +Depth 0: +.#... +.#.## +.#?.. +..... +..... + +Depth 1: +.##.. +#..## +..?.# +##.## +##### + +Depth 2: +###.. +##.#. +#.?.. +.#.## +#.#.. + +Depth 3: +..### +..... +#.?.. +#.... +#...# + +Depth 4: +.###. +#..#. +#.?.. +##.#. +..... + +Depth 5: +####. +#..#. +#.?#. +####. +..... diff --git a/src/main/resources/2019-examples/day3-1.txt b/src/main/resources/2019-examples/day3-1.txt new file mode 100644 index 00000000..baf98e9a --- /dev/null +++ b/src/main/resources/2019-examples/day3-1.txt @@ -0,0 +1,10 @@ +........... +........... +........... +....+----+. +....|....|. +....|....|. +....|....|. +.........|. +.o-------+. +........... diff --git a/src/main/resources/2019-examples/day3-2.txt b/src/main/resources/2019-examples/day3-2.txt new file mode 100644 index 00000000..bdea86b1 --- /dev/null +++ b/src/main/resources/2019-examples/day3-2.txt @@ -0,0 +1,10 @@ +........... +.+-----+... +.|.....|... +.|..+--X-+. +.|..|..|.|. +.|.-X--+.|. +.|..|....|. +.|.......|. +.o-------+. +........... diff --git a/src/main/resources/2019-examples/day3-3.txt b/src/main/resources/2019-examples/day3-3.txt new file mode 100644 index 00000000..bdea86b1 --- /dev/null +++ b/src/main/resources/2019-examples/day3-3.txt @@ -0,0 +1,10 @@ +........... +.+-----+... +.|.....|... +.|..+--X-+. +.|..|..|.|. +.|.-X--+.|. +.|..|....|. +.|.......|. +.o-------+. +........... diff --git a/src/main/resources/2019-examples/day5-1.txt b/src/main/resources/2019-examples/day5-1.txt new file mode 100644 index 00000000..32dcd238 --- /dev/null +++ b/src/main/resources/2019-examples/day5-1.txt @@ -0,0 +1,8 @@ +ABCDE + 1002 + +DE - two-digit opcode, 02 == opcode 2 + C - mode of 1st parameter, 0 == position mode + B - mode of 2nd parameter, 1 == immediate mode + A - mode of 3rd parameter, 0 == position mode, + omitted due to being a leading zero diff --git a/src/main/resources/2019-examples/day5-2.txt b/src/main/resources/2019-examples/day5-2.txt new file mode 100644 index 00000000..df60949f --- /dev/null +++ b/src/main/resources/2019-examples/day5-2.txt @@ -0,0 +1,3 @@ +3,21,1008,21,8,20,1005,20,22,107,8,21,20,1006,20,31, +1106,0,36,98,0,0,1002,21,125,20,4,20,1105,1,46,104, +999,1105,1,46,1101,1000,1,20,4,20,1105,1,46,98,99 diff --git a/src/main/resources/2019-examples/day6-1.txt b/src/main/resources/2019-examples/day6-1.txt new file mode 100644 index 00000000..012cf5ad --- /dev/null +++ b/src/main/resources/2019-examples/day6-1.txt @@ -0,0 +1,9 @@ + \ + \ + | + | +AAA--> o o <--BBB + | + | + / + / diff --git a/src/main/resources/2019-examples/day6-2.txt b/src/main/resources/2019-examples/day6-2.txt new file mode 100644 index 00000000..183242d5 --- /dev/null +++ b/src/main/resources/2019-examples/day6-2.txt @@ -0,0 +1,11 @@ +COM)B +B)C +C)D +D)E +E)F +B)G +G)H +D)I +E)J +J)K +K)L diff --git a/src/main/resources/2019-examples/day6-3.txt b/src/main/resources/2019-examples/day6-3.txt new file mode 100644 index 00000000..d20aa29b --- /dev/null +++ b/src/main/resources/2019-examples/day6-3.txt @@ -0,0 +1,5 @@ + G - H J - K - L + / / +COM - B - C - D - E - F + \ + I diff --git a/src/main/resources/2019-examples/day6-4.txt b/src/main/resources/2019-examples/day6-4.txt new file mode 100644 index 00000000..a1007c60 --- /dev/null +++ b/src/main/resources/2019-examples/day6-4.txt @@ -0,0 +1,13 @@ +COM)B +B)C +C)D +D)E +E)F +B)G +G)H +D)I +E)J +J)K +K)L +K)YOU +I)SAN diff --git a/src/main/resources/2019-examples/day6-5.txt b/src/main/resources/2019-examples/day6-5.txt new file mode 100644 index 00000000..a28d5ccb --- /dev/null +++ b/src/main/resources/2019-examples/day6-5.txt @@ -0,0 +1,7 @@ + YOU + / + G - H J - K - L + / / +COM - B - C - D - E - F + \ + I - SAN diff --git a/src/main/resources/2019-examples/day6-6.txt b/src/main/resources/2019-examples/day6-6.txt new file mode 100644 index 00000000..18cb222d --- /dev/null +++ b/src/main/resources/2019-examples/day6-6.txt @@ -0,0 +1,7 @@ + G - H J - K - L + / / +COM - B - C - D - E - F + \ + I - SAN + \ + YOU diff --git a/src/main/resources/2019-examples/day7-1.txt b/src/main/resources/2019-examples/day7-1.txt new file mode 100644 index 00000000..9187ee78 --- /dev/null +++ b/src/main/resources/2019-examples/day7-1.txt @@ -0,0 +1,3 @@ + O-------O O-------O O-------O O-------O O-------O +0 ->| Amp A |->| Amp B |->| Amp C |->| Amp D |->| Amp E |-> (to thrusters) + O-------O O-------O O-------O O-------O O-------O diff --git a/src/main/resources/2019-examples/day7-2.txt b/src/main/resources/2019-examples/day7-2.txt new file mode 100644 index 00000000..993e2e04 --- /dev/null +++ b/src/main/resources/2019-examples/day7-2.txt @@ -0,0 +1 @@ +3,15,3,16,1002,16,10,16,1,16,15,15,4,15,99,0,0 \ No newline at end of file diff --git a/src/main/resources/2019-examples/day7-3.txt b/src/main/resources/2019-examples/day7-3.txt new file mode 100644 index 00000000..1a7a957b --- /dev/null +++ b/src/main/resources/2019-examples/day7-3.txt @@ -0,0 +1 @@ +3,23,3,24,1002,24,10,24,1002,23,-1,23,101,5,23,23,1,24,23,23,4,23,99,0,0 \ No newline at end of file diff --git a/src/main/resources/2019-examples/day7-4.txt b/src/main/resources/2019-examples/day7-4.txt new file mode 100644 index 00000000..eb61459a --- /dev/null +++ b/src/main/resources/2019-examples/day7-4.txt @@ -0,0 +1 @@ +3,31,3,32,1002,32,10,32,1001,31,-2,31,1007,31,0,33,1002,33,7,33,1,33,31,31,1,32,31,31,4,31,99,0,0,0 \ No newline at end of file diff --git a/src/main/resources/2019-examples/day7-5.txt b/src/main/resources/2019-examples/day7-5.txt new file mode 100644 index 00000000..e1c5f9c7 --- /dev/null +++ b/src/main/resources/2019-examples/day7-5.txt @@ -0,0 +1,8 @@ + O-------O O-------O O-------O O-------O O-------O +0 -+->| Amp A |->| Amp B |->| Amp C |->| Amp D |->| Amp E |-. + | O-------O O-------O O-------O O-------O O-------O | + | | + '--------------------------------------------------------+ + | + v + (to thrusters) diff --git a/src/main/resources/2019-examples/day7-6.txt b/src/main/resources/2019-examples/day7-6.txt new file mode 100644 index 00000000..4363e8ee --- /dev/null +++ b/src/main/resources/2019-examples/day7-6.txt @@ -0,0 +1 @@ +3,26,1001,26,-4,26,3,27,1002,27,2,27,1,27,26,27,4,27,1001,28,-1,28,1005,28,6,99,0,0,5 \ No newline at end of file diff --git a/src/main/resources/2019-examples/day7-7.txt b/src/main/resources/2019-examples/day7-7.txt new file mode 100644 index 00000000..5ed292ba --- /dev/null +++ b/src/main/resources/2019-examples/day7-7.txt @@ -0,0 +1 @@ +3,52,1001,52,-5,52,3,53,1,52,56,54,1007,54,5,55,1005,55,26,1001,54,-5,54,1105,1,12,1,53,54,53,1008,54,0,55,1001,55,1,55,2,53,55,53,4,53,1001,56,-1,56,1005,56,6,99,0,0,0,0,10 \ No newline at end of file diff --git a/src/main/resources/2019-examples/day8-1.txt b/src/main/resources/2019-examples/day8-1.txt new file mode 100644 index 00000000..70cf409f --- /dev/null +++ b/src/main/resources/2019-examples/day8-1.txt @@ -0,0 +1,5 @@ +Layer 1: 123 + 456 + +Layer 2: 789 + 012 diff --git a/src/main/resources/2019-examples/day8-2.txt b/src/main/resources/2019-examples/day8-2.txt new file mode 100644 index 00000000..f97825a4 --- /dev/null +++ b/src/main/resources/2019-examples/day8-2.txt @@ -0,0 +1,11 @@ +Layer 1: 02 + 22 + +Layer 2: 11 + 22 + +Layer 3: 22 + 12 + +Layer 4: 00 + 00 diff --git a/src/main/resources/2019-examples/day8-3.txt b/src/main/resources/2019-examples/day8-3.txt new file mode 100644 index 00000000..a733e4c6 --- /dev/null +++ b/src/main/resources/2019-examples/day8-3.txt @@ -0,0 +1,2 @@ +01 +10 diff --git a/src/main/resources/2019/day1.txt b/src/main/resources/2019/day1.txt new file mode 100644 index 00000000..95bcbee3 --- /dev/null +++ b/src/main/resources/2019/day1.txt @@ -0,0 +1,100 @@ +55131 +114008 +145297 +76135 +50317 +134036 +122136 +97704 +51245 +141732 +120427 +142020 +88166 +55313 +110391 +112436 +78195 +74294 +128984 +68240 +137098 +142016 +83577 +89257 +107744 +67357 +131342 +98247 +137501 +134577 +65696 +84925 +50159 +110319 +91921 +103303 +84505 +84683 +100811 +82626 +66774 +123216 +95151 +88237 +60705 +124319 +102926 +143160 +92780 +64283 +132434 +113935 +84907 +113698 +117240 +129327 +78837 +144841 +138054 +130990 +100191 +141768 +138941 +108165 +62138 +121690 +117305 +90147 +134422 +78031 +121331 +120947 +120235 +138880 +141076 +119480 +66844 +77660 +106364 +99187 +144244 +120483 +77715 +135703 +125521 +123253 +127556 +96458 +91965 +73924 +95176 +87540 +122083 +146013 +67761 +100413 +145994 +149450 +94330 +112824 \ No newline at end of file diff --git a/src/main/resources/2019/day10.txt b/src/main/resources/2019/day10.txt new file mode 100644 index 00000000..110bc35d --- /dev/null +++ b/src/main/resources/2019/day10.txt @@ -0,0 +1,39 @@ +.............#..#.#......##........#..# +.#...##....#........##.#......#......#. +..#.#.#...#...#...##.#...#............. +.....##.................#.....##..#.#.# +......##...#.##......#..#.......#...... +......#.....#....#.#..#..##....#....... +...................##.#..#.....#.....#. +#.....#.##.....#...##....#####....#.#.. +..#.#..........#..##.......#.#...#....# +...#.#..#...#......#..........###.#.... +##..##...#.#.......##....#.#..#...##... +..........#.#....#.#.#......#.....#.... +....#.........#..#..##..#.##........#.. +........#......###..............#.#.... +...##.#...#.#.#......#........#........ +......##.#.....#.#.....#..#.....#.#.... +..#....#.###..#...##.#..##............# +...##..#...#.##.#.#....#.#.....#...#..# +......#............#.##..#..#....##.... +.#.#.......#..#...###...........#.#.##. +........##........#.#...#.#......##.... +.#.#........#......#..........#....#... +...............#...#........##..#.#.... +.#......#....#.......#..#......#....... +.....#...#.#...#...#..###......#.##.... +.#...#..##................##.#......... +..###...#.......#.##.#....#....#....#.# +...#..#.......###.............##.#..... +#..##....###.......##........#..#...#.# +.#......#...#...#.##......#..#......... +#...#.....#......#..##.............#... +...###.........###.###.#.....###.#.#... +#......#......#.#..#....#..#.....##.#.. +.##....#.....#...#.##..#.#..##.......#. +..#........#.......##.##....#......#... +##............#....#.#.....#........... +........###.............##...#........# +#.........#.....#..##.#.#.#..#....#.... +..............##.#.#.#...........#..... \ No newline at end of file diff --git a/src/main/resources/2019/day11.txt b/src/main/resources/2019/day11.txt new file mode 100644 index 00000000..7f841847 --- /dev/null +++ b/src/main/resources/2019/day11.txt @@ -0,0 +1 @@ +3,8,1005,8,342,1106,0,11,0,0,0,104,1,104,0,3,8,102,-1,8,10,1001,10,1,10,4,10,1008,8,0,10,4,10,1002,8,1,29,2,1006,19,10,1,1005,19,10,2,1102,11,10,3,8,102,-1,8,10,101,1,10,10,4,10,108,1,8,10,4,10,1001,8,0,62,2,1009,15,10,3,8,102,-1,8,10,101,1,10,10,4,10,108,1,8,10,4,10,1002,8,1,88,2,1101,6,10,3,8,102,-1,8,10,1001,10,1,10,4,10,108,0,8,10,4,10,102,1,8,114,1,105,8,10,1,1102,18,10,2,6,5,10,1,2,15,10,3,8,1002,8,-1,10,101,1,10,10,4,10,1008,8,1,10,4,10,1001,8,0,153,1,105,15,10,3,8,1002,8,-1,10,1001,10,1,10,4,10,108,0,8,10,4,10,102,1,8,178,1,1006,15,10,1006,0,96,1006,0,35,1,104,7,10,3,8,1002,8,-1,10,1001,10,1,10,4,10,108,0,8,10,4,10,102,1,8,214,1006,0,44,2,1105,17,10,1,1107,19,10,1,4,16,10,3,8,1002,8,-1,10,1001,10,1,10,4,10,1008,8,0,10,4,10,102,1,8,252,1006,0,6,1,1001,20,10,1006,0,45,2,1109,5,10,3,8,1002,8,-1,10,101,1,10,10,4,10,108,1,8,10,4,10,102,1,8,287,2,101,20,10,2,1006,18,10,1,1009,9,10,3,8,102,-1,8,10,1001,10,1,10,4,10,108,1,8,10,4,10,1002,8,1,321,101,1,9,9,1007,9,1031,10,1005,10,15,99,109,664,104,0,104,1,21102,48210117528,1,1,21102,1,359,0,1105,1,463,21102,932700763028,1,1,21102,370,1,0,1105,1,463,3,10,104,0,104,1,3,10,104,0,104,0,3,10,104,0,104,1,3,10,104,0,104,1,3,10,104,0,104,0,3,10,104,0,104,1,21102,1,179557207079,1,21102,417,1,0,1105,1,463,21102,1,28994202816,1,21101,0,428,0,1105,1,463,3,10,104,0,104,0,3,10,104,0,104,0,21101,0,709580710756,1,21102,1,451,0,1106,0,463,21102,825016201984,1,1,21101,462,0,0,1106,0,463,99,109,2,21201,-1,0,1,21102,40,1,2,21101,0,494,3,21102,1,484,0,1105,1,527,109,-2,2106,0,0,0,1,0,0,1,109,2,3,10,204,-1,1001,489,490,505,4,0,1001,489,1,489,108,4,489,10,1006,10,521,1101,0,0,489,109,-2,2105,1,0,0,109,4,1201,-1,0,526,1207,-3,0,10,1006,10,544,21102,1,0,-3,21202,-3,1,1,22102,1,-2,2,21102,1,1,3,21102,563,1,0,1105,1,568,109,-4,2106,0,0,109,5,1207,-3,1,10,1006,10,591,2207,-4,-2,10,1006,10,591,21202,-4,1,-4,1105,1,659,22102,1,-4,1,21201,-3,-1,2,21202,-2,2,3,21102,610,1,0,1106,0,568,21201,1,0,-4,21102,1,1,-1,2207,-4,-2,10,1006,10,629,21102,1,0,-1,22202,-2,-1,-2,2107,0,-3,10,1006,10,651,21202,-1,1,1,21102,1,651,0,106,0,526,21202,-2,-1,-2,22201,-4,-2,-4,109,-5,2106,0,0 \ No newline at end of file diff --git a/src/main/resources/2019/day12.txt b/src/main/resources/2019/day12.txt new file mode 100644 index 00000000..e637be38 --- /dev/null +++ b/src/main/resources/2019/day12.txt @@ -0,0 +1,4 @@ +<x=-5, y=6, z=-11> +<x=-8, y=-4, z=-2> +<x=1, y=16, z=4> +<x=11, y=11, z=-4> \ No newline at end of file diff --git a/src/main/resources/2019/day13.txt b/src/main/resources/2019/day13.txt new file mode 100644 index 00000000..a976d5d0 --- /dev/null +++ b/src/main/resources/2019/day13.txt @@ -0,0 +1 @@ +1,380,379,385,1008,2235,768501,381,1005,381,12,99,109,2236,1102,0,1,383,1102,1,0,382,21002,382,1,1,20102,1,383,2,21102,1,37,0,1106,0,578,4,382,4,383,204,1,1001,382,1,382,1007,382,38,381,1005,381,22,1001,383,1,383,1007,383,21,381,1005,381,18,1006,385,69,99,104,-1,104,0,4,386,3,384,1007,384,0,381,1005,381,94,107,0,384,381,1005,381,108,1106,0,161,107,1,392,381,1006,381,161,1101,0,-1,384,1106,0,119,1007,392,36,381,1006,381,161,1101,0,1,384,20101,0,392,1,21102,1,19,2,21101,0,0,3,21102,138,1,0,1106,0,549,1,392,384,392,21002,392,1,1,21101,0,19,2,21101,3,0,3,21102,161,1,0,1106,0,549,1102,1,0,384,20001,388,390,1,21001,389,0,2,21101,180,0,0,1106,0,578,1206,1,213,1208,1,2,381,1006,381,205,20001,388,390,1,21001,389,0,2,21101,0,205,0,1106,0,393,1002,390,-1,390,1102,1,1,384,21002,388,1,1,20001,389,391,2,21101,0,228,0,1106,0,578,1206,1,261,1208,1,2,381,1006,381,253,21002,388,1,1,20001,389,391,2,21102,253,1,0,1106,0,393,1002,391,-1,391,1102,1,1,384,1005,384,161,20001,388,390,1,20001,389,391,2,21101,279,0,0,1105,1,578,1206,1,316,1208,1,2,381,1006,381,304,20001,388,390,1,20001,389,391,2,21101,0,304,0,1105,1,393,1002,390,-1,390,1002,391,-1,391,1102,1,1,384,1005,384,161,20102,1,388,1,20102,1,389,2,21101,0,0,3,21102,338,1,0,1105,1,549,1,388,390,388,1,389,391,389,21002,388,1,1,21002,389,1,2,21101,0,4,3,21101,0,365,0,1106,0,549,1007,389,20,381,1005,381,75,104,-1,104,0,104,0,99,0,1,0,0,0,0,0,0,320,17,16,1,1,19,109,3,21201,-2,0,1,22101,0,-1,2,21101,0,0,3,21102,414,1,0,1106,0,549,21202,-2,1,1,21201,-1,0,2,21102,1,429,0,1105,1,601,1201,1,0,435,1,386,0,386,104,-1,104,0,4,386,1001,387,-1,387,1005,387,451,99,109,-3,2106,0,0,109,8,22202,-7,-6,-3,22201,-3,-5,-3,21202,-4,64,-2,2207,-3,-2,381,1005,381,492,21202,-2,-1,-1,22201,-3,-1,-3,2207,-3,-2,381,1006,381,481,21202,-4,8,-2,2207,-3,-2,381,1005,381,518,21202,-2,-1,-1,22201,-3,-1,-3,2207,-3,-2,381,1006,381,507,2207,-3,-4,381,1005,381,540,21202,-4,-1,-1,22201,-3,-1,-3,2207,-3,-4,381,1006,381,529,22101,0,-3,-7,109,-8,2105,1,0,109,4,1202,-2,38,566,201,-3,566,566,101,639,566,566,1201,-1,0,0,204,-3,204,-2,204,-1,109,-4,2106,0,0,109,3,1202,-1,38,594,201,-2,594,594,101,639,594,594,20102,1,0,-2,109,-3,2106,0,0,109,3,22102,21,-2,1,22201,1,-1,1,21101,0,401,2,21102,1,733,3,21102,798,1,4,21102,1,630,0,1106,0,456,21201,1,1437,-2,109,-3,2105,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,2,2,2,2,2,2,2,2,2,2,2,0,2,0,2,2,2,0,2,2,2,2,2,2,0,2,2,0,2,2,2,2,2,2,0,1,1,0,2,2,0,2,0,2,2,2,2,0,2,2,2,2,2,0,2,0,2,2,0,2,2,2,2,0,0,2,2,2,0,2,0,2,0,1,1,0,0,2,2,2,0,0,2,0,2,2,0,2,2,2,2,0,0,2,0,2,2,2,2,2,2,2,0,2,0,2,2,2,0,2,0,1,1,0,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,0,0,2,0,2,0,2,2,0,2,2,0,2,2,2,2,2,0,2,0,1,1,0,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,0,0,0,2,2,2,0,2,0,2,2,0,0,2,2,0,2,2,2,0,1,1,0,2,2,2,2,0,2,0,0,2,2,2,0,2,2,2,0,2,0,2,0,0,2,2,2,0,2,2,2,0,0,2,0,2,2,0,1,1,0,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,0,2,0,2,2,2,0,2,2,2,0,0,1,1,0,2,2,0,2,0,0,2,2,2,0,0,0,2,0,2,2,2,0,2,2,0,2,2,2,2,2,2,2,0,0,0,2,0,0,0,1,1,0,0,2,2,0,0,2,2,2,2,0,2,2,2,0,0,2,0,2,2,0,2,2,2,2,2,2,2,2,2,0,0,0,2,2,0,1,1,0,2,0,0,2,2,2,2,2,2,2,0,2,0,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,0,0,2,0,1,1,0,2,2,0,2,2,2,0,2,2,0,2,0,2,0,0,0,0,2,2,2,2,2,2,2,2,2,2,0,0,2,2,0,2,2,0,1,1,0,2,2,0,2,2,2,2,2,0,2,0,2,2,2,2,2,0,0,2,2,2,2,0,2,2,0,2,2,2,2,0,2,0,2,0,1,1,0,2,2,0,2,0,2,2,2,2,2,2,0,2,2,2,2,2,2,0,2,2,0,2,2,2,0,2,2,2,2,2,2,2,2,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,25,47,80,47,44,8,60,70,40,60,9,9,88,82,66,91,81,11,3,95,72,53,39,7,33,48,69,45,31,75,6,61,77,72,25,57,70,2,92,78,46,43,88,74,45,27,94,73,90,43,68,90,22,64,2,5,3,40,98,62,25,95,74,1,35,2,1,54,76,68,88,75,30,77,35,40,43,49,85,55,53,12,77,94,89,9,55,8,50,82,7,89,21,85,37,48,4,33,1,28,97,62,95,41,14,22,52,24,72,2,25,51,32,55,36,73,84,22,66,69,36,1,57,97,50,21,98,41,36,59,56,6,80,46,2,86,14,67,77,59,77,5,13,97,98,83,83,42,10,62,64,86,97,17,90,37,27,54,40,39,61,38,11,67,40,65,13,6,85,71,9,93,69,9,28,48,7,93,67,95,90,15,29,90,88,8,75,64,36,42,29,92,24,28,19,4,19,60,16,1,97,43,50,13,10,82,30,19,86,32,93,46,32,66,94,91,44,39,57,51,48,41,92,17,97,16,92,41,92,58,31,94,82,68,25,10,32,98,24,77,17,5,82,30,16,40,82,67,14,16,33,3,96,72,90,83,97,4,55,69,8,30,29,2,47,8,47,52,41,2,14,67,7,57,14,4,94,44,47,9,81,54,91,50,85,41,84,45,65,33,66,28,35,98,89,92,57,81,49,89,89,39,11,8,97,77,12,30,33,77,12,46,64,37,2,84,34,11,54,23,33,57,40,27,95,47,3,17,8,43,15,13,13,41,80,62,93,68,45,82,86,17,44,49,51,29,9,92,67,14,81,16,97,5,65,6,85,46,35,19,50,88,51,23,90,35,44,74,33,36,13,20,44,42,71,51,32,60,22,29,13,26,1,64,26,75,86,43,78,4,43,41,52,67,16,20,63,37,60,2,1,53,37,75,55,3,40,66,36,1,69,18,55,33,81,38,1,81,24,80,31,25,79,30,84,83,71,72,11,94,62,6,35,15,9,63,29,27,76,33,62,77,47,12,61,84,13,38,73,11,32,49,87,6,25,57,87,4,35,91,67,19,30,72,59,79,46,64,66,14,21,15,85,25,22,45,87,96,90,28,83,72,29,71,58,14,50,71,48,19,50,78,63,65,3,41,64,82,50,64,74,77,93,21,52,55,24,34,19,61,19,13,44,80,38,53,36,41,96,17,77,9,84,87,79,51,77,35,5,55,82,23,63,20,66,68,23,92,81,10,2,57,97,4,24,44,28,25,56,4,22,61,11,35,60,75,63,96,60,94,3,65,93,63,28,54,21,10,20,12,46,15,84,93,43,83,71,90,52,48,33,47,32,75,22,22,38,8,62,42,30,95,66,15,75,14,73,17,10,94,64,70,29,51,70,14,68,56,60,57,9,84,16,77,37,17,44,37,22,88,60,85,59,61,52,3,21,15,19,23,90,33,47,36,48,44,30,33,16,22,37,93,78,16,43,18,65,18,61,67,71,51,13,33,7,48,40,70,9,66,12,59,49,67,34,23,51,75,48,23,30,47,23,81,21,42,6,66,34,4,67,45,21,90,34,48,47,43,11,3,54,9,10,35,60,78,19,17,68,1,9,26,92,7,86,66,13,12,31,12,71,55,43,78,39,54,70,62,38,93,25,89,83,37,37,2,60,87,84,48,98,43,1,78,86,97,67,41,85,66,17,23,32,9,35,91,4,18,89,71,4,88,66,50,32,92,9,44,10,23,31,17,53,36,46,94,33,93,68,44,85,73,72,14,34,69,66,77,43,93,23,24,14,17,79,27,63,7,44,95,66,55,83,8,90,58,43,768501 \ No newline at end of file diff --git a/src/main/resources/2019/day14.txt b/src/main/resources/2019/day14.txt new file mode 100644 index 00000000..46da9f07 --- /dev/null +++ b/src/main/resources/2019/day14.txt @@ -0,0 +1,60 @@ +11 BNMWF, 1 MRVFT, 10 PBNSF => 7 XSFVQ +149 ORE => 4 SMSB +1 XHQDX, 1 SVSTJ, 2 LDHX => 7 JMWQG +12 MJCLX => 9 PBNSF +132 ORE => 7 XPTXL +15 TZMWG, 1 LDHX, 1 PDVR => 7 LBQB +1 HJTD, 8 VFXHC => 2 SVSTJ +5 LBHQ, 6 MTQCB => 4 MHBZ +1 PRXT, 1 FWZN => 2 PBMPL +1 XPTXL => 1 HMRGM +10 XHPHR => 6 NSVJL +3 QZQLZ, 3 MTQCB => 4 TZMWG +5 LBHQ, 2 VPSDV => 3 ZFCD +13 WPFP => 6 ZXMGK +10 MHJMX, 75 LDHX, 52 JMWQG, 4 QWRB, 1 SVNVJ, 17 BNMWF, 18 GHVN => 1 FUEL +4 PFQRG, 14 XVNL => 5 PDCV +11 JMWQG, 10 ZBNCP => 6 NTJZH +14 PBMPL, 12 PRXT, 9 MJQS => 9 XVNL +9 GDNG, 13 LBQB => 9 QWRB +1 CXNM => 6 PFQRG +9 NTJZH, 7 BNMWF, 11 JCHP, 1 MHBZ, 1 SVSTJ, 9 XRDN => 5 SVNVJ +1 XHPHR, 1 GSMP => 4 THRVR +26 FWZN => 4 WPFP +35 VJTFJ, 2 XSFVQ, 6 HJVN, 1 NSVJL, 1 JCHP, 3 MJCLX, 1 QZNCK => 6 GHVN +1 WPFP, 3 XHPHR => 2 HJVN +5 SMSB => 7 HNCDS +111 ORE => 4 GSMP +6 LBHQ => 8 GDNG +2 GDNG, 5 MHBZ => 1 RNMKC +15 THRVR, 4 NWNSH, 1 NSVJL => 7 FDVH +2 HMRGM => 9 FWZN +6 MJQS, 5 JRZXM => 5 NWNSH +14 ZXMGK, 1 JTXWX => 6 DLWT +1 MJQS, 3 FWZN, 2 PRXT => 1 JTXWX +1 GSMP, 4 CXNM => 3 JRZXM +151 ORE => 9 ZNPRL +2 NTJZH, 1 DLWT, 3 ZBNCP => 9 MRVFT +14 SWZCB, 1 VPSDV => 7 XRDN +14 LBHQ, 16 FDVH, 9 PFQRG => 4 PRXT +22 CXNM => 9 HJTD +1 VFXHC, 1 MTQCB => 6 QZQLZ +6 SWZCB, 2 PDCV, 17 RNMKC => 9 LTHFW +4 ZNPRL => 6 CXNM +2 CXNM => 3 LBHQ +8 MHBZ, 2 QZQLZ, 2 LBQB => 3 VJTFJ +3 ZFCD => 1 XHQDX +1 VJTFJ, 7 MHBZ => 8 ZBNCP +5 CXNM => 2 VPSDV +7 MJQS => 9 VFXHC +2 LTHFW, 11 HJVN, 4 XRDN, 8 MRVFT, 3 NSVJL, 3 SVSTJ, 5 XSFVQ, 13 RNMKC => 8 MHJMX +2 HMRGM => 3 XHPHR +1 GDNG, 19 PDVR => 3 SWZCB +18 HMRGM, 10 HNCDS => 2 MJQS +6 HNCDS, 2 HMRGM, 1 LBHQ => 3 MTQCB +16 VJTFJ, 1 WPFP, 6 JMWQG => 6 BNMWF +3 TZMWG, 1 FWZN => 7 PDVR +10 ZXMGK => 4 QZNCK +32 LBQB, 1 ZBNCP => 1 JCHP +27 PDVR, 7 QZQLZ, 7 PBMPL => 3 MJCLX +5 MHBZ, 12 ZFCD => 4 LDHX \ No newline at end of file diff --git a/src/main/resources/2019/day15.txt b/src/main/resources/2019/day15.txt new file mode 100644 index 00000000..0af98421 --- /dev/null +++ b/src/main/resources/2019/day15.txt @@ -0,0 +1 @@ +3,1033,1008,1033,1,1032,1005,1032,31,1008,1033,2,1032,1005,1032,58,1008,1033,3,1032,1005,1032,81,1008,1033,4,1032,1005,1032,104,99,101,0,1034,1039,1001,1036,0,1041,1001,1035,-1,1040,1008,1038,0,1043,102,-1,1043,1032,1,1037,1032,1042,1105,1,124,101,0,1034,1039,101,0,1036,1041,1001,1035,1,1040,1008,1038,0,1043,1,1037,1038,1042,1106,0,124,1001,1034,-1,1039,1008,1036,0,1041,1001,1035,0,1040,1001,1038,0,1043,1002,1037,1,1042,1105,1,124,1001,1034,1,1039,1008,1036,0,1041,102,1,1035,1040,101,0,1038,1043,1002,1037,1,1042,1006,1039,217,1006,1040,217,1008,1039,40,1032,1005,1032,217,1008,1040,40,1032,1005,1032,217,1008,1039,1,1032,1006,1032,165,1008,1040,33,1032,1006,1032,165,1101,0,2,1044,1106,0,224,2,1041,1043,1032,1006,1032,179,1101,1,0,1044,1106,0,224,1,1041,1043,1032,1006,1032,217,1,1042,1043,1032,1001,1032,-1,1032,1002,1032,39,1032,1,1032,1039,1032,101,-1,1032,1032,101,252,1032,211,1007,0,43,1044,1105,1,224,1101,0,0,1044,1106,0,224,1006,1044,247,1002,1039,1,1034,1002,1040,1,1035,102,1,1041,1036,1001,1043,0,1038,101,0,1042,1037,4,1044,1105,1,0,13,30,60,64,5,28,36,24,67,12,1,67,32,39,14,78,29,17,38,88,79,9,62,25,15,18,88,25,7,81,38,41,10,69,86,32,11,33,1,10,22,84,14,92,48,79,10,3,62,33,61,13,93,78,20,63,68,17,80,34,12,8,23,61,90,51,17,84,37,46,64,25,3,73,19,45,99,41,62,21,77,8,17,89,9,13,84,75,85,14,53,60,6,29,76,63,14,23,63,61,93,72,17,41,28,94,5,3,19,47,57,55,14,34,38,79,85,40,13,22,99,67,72,15,62,15,6,63,3,90,2,87,20,84,15,50,70,27,18,78,21,70,48,52,2,99,92,55,3,46,41,93,99,88,13,39,4,45,71,3,96,1,91,59,31,53,23,25,82,32,50,16,60,38,78,34,59,30,15,51,92,3,22,26,62,60,37,42,74,28,21,76,7,24,70,18,40,11,81,41,9,73,62,12,66,81,9,3,74,62,11,6,56,16,34,20,78,79,1,97,17,39,87,15,12,77,94,28,22,66,45,59,39,2,6,52,6,72,49,17,92,15,86,18,92,79,67,20,22,72,10,72,3,52,26,77,78,41,97,36,59,88,24,57,12,38,90,53,14,38,67,2,36,44,93,99,10,41,49,3,16,7,63,32,11,15,81,12,91,39,62,19,83,6,91,28,19,80,38,23,63,31,71,14,58,8,21,71,21,21,81,38,26,32,29,82,52,28,72,54,97,41,65,96,75,1,48,28,80,66,25,47,49,29,87,51,12,50,70,36,60,81,29,77,76,55,25,40,45,83,91,26,72,99,12,47,11,20,27,52,9,98,17,99,27,37,62,25,3,15,73,66,22,5,85,5,20,98,20,38,62,78,21,16,59,28,98,38,31,2,40,46,87,14,48,33,80,48,36,27,56,21,1,50,83,3,61,92,20,52,16,50,10,86,9,98,39,56,25,50,42,39,91,81,56,25,70,44,24,15,99,4,20,55,12,98,27,65,20,77,97,76,36,42,87,6,11,79,65,16,65,44,13,90,13,48,79,13,95,60,19,55,24,66,4,53,11,23,68,14,97,53,45,14,16,93,18,29,83,5,6,77,19,70,97,34,20,70,52,11,74,14,72,10,36,44,33,45,19,38,36,77,5,37,51,1,55,17,2,48,23,18,2,34,90,97,24,30,51,66,33,70,51,37,31,51,37,65,55,18,8,66,4,65,62,26,93,29,88,3,75,73,24,23,67,1,13,68,7,36,87,62,48,1,31,45,28,62,86,24,98,1,59,49,37,26,62,36,44,66,18,17,97,92,40,36,65,80,84,5,84,6,79,87,36,31,96,15,71,96,2,72,11,81,95,94,41,54,31,58,25,74,24,51,81,38,32,73,22,96,40,62,22,59,74,39,25,86,2,55,20,61,40,37,88,69,1,60,42,18,31,54,13,27,19,93,34,41,99,33,89,20,16,52,84,32,94,31,6,61,25,1,61,1,38,78,87,39,31,39,26,68,42,36,2,94,66,2,67,30,80,2,95,65,40,54,50,33,11,23,97,89,1,31,56,9,35,49,92,55,23,84,48,91,20,7,72,25,55,3,85,3,16,40,90,22,99,44,38,86,98,11,76,26,76,13,82,80,24,93,4,15,64,95,58,15,85,25,57,29,66,3,66,19,98,57,24,44,59,35,76,48,31,92,33,94,68,56,41,45,15,46,5,68,15,65,34,73,49,68,17,78,28,80,24,59,26,74,21,52,1,94,5,61,41,88,37,56,1,49,0,0,21,21,1,10,1,0,0,0,0,0,0 \ No newline at end of file diff --git a/src/main/resources/2019/day16.txt b/src/main/resources/2019/day16.txt new file mode 100644 index 00000000..1101f127 --- /dev/null +++ b/src/main/resources/2019/day16.txt @@ -0,0 +1 @@ +59773419794631560412886746550049210714854107066028081032096591759575145680294995770741204955183395640103527371801225795364363411455113236683168088750631442993123053909358252440339859092431844641600092736006758954422097244486920945182483159023820538645717611051770509314159895220529097322723261391627686997403783043710213655074108451646685558064317469095295303320622883691266307865809481566214524686422834824930414730886697237161697731339757655485312568793531202988525963494119232351266908405705634244498096660057021101738706453735025060225814133166491989584616948876879383198021336484629381888934600383957019607807995278899293254143523702000576897358 \ No newline at end of file diff --git a/src/main/resources/2019/day17.txt b/src/main/resources/2019/day17.txt new file mode 100644 index 00000000..4b95b77f --- /dev/null +++ b/src/main/resources/2019/day17.txt @@ -0,0 +1 @@ +1,330,331,332,109,3564,1102,1182,1,15,1101,0,1449,24,1002,0,1,570,1006,570,36,101,0,571,0,1001,570,-1,570,1001,24,1,24,1106,0,18,1008,571,0,571,1001,15,1,15,1008,15,1449,570,1006,570,14,21102,58,1,0,1105,1,786,1006,332,62,99,21101,333,0,1,21102,1,73,0,1106,0,579,1101,0,0,572,1102,1,0,573,3,574,101,1,573,573,1007,574,65,570,1005,570,151,107,67,574,570,1005,570,151,1001,574,-64,574,1002,574,-1,574,1001,572,1,572,1007,572,11,570,1006,570,165,101,1182,572,127,1001,574,0,0,3,574,101,1,573,573,1008,574,10,570,1005,570,189,1008,574,44,570,1006,570,158,1105,1,81,21102,340,1,1,1106,0,177,21102,477,1,1,1105,1,177,21101,0,514,1,21101,176,0,0,1106,0,579,99,21102,1,184,0,1105,1,579,4,574,104,10,99,1007,573,22,570,1006,570,165,102,1,572,1182,21102,375,1,1,21102,1,211,0,1106,0,579,21101,1182,11,1,21102,222,1,0,1105,1,979,21101,388,0,1,21101,233,0,0,1105,1,579,21101,1182,22,1,21102,1,244,0,1105,1,979,21102,1,401,1,21102,255,1,0,1105,1,579,21101,1182,33,1,21102,1,266,0,1106,0,979,21102,1,414,1,21102,1,277,0,1105,1,579,3,575,1008,575,89,570,1008,575,121,575,1,575,570,575,3,574,1008,574,10,570,1006,570,291,104,10,21102,1,1182,1,21101,313,0,0,1105,1,622,1005,575,327,1102,1,1,575,21102,1,327,0,1105,1,786,4,438,99,0,1,1,6,77,97,105,110,58,10,33,10,69,120,112,101,99,116,101,100,32,102,117,110,99,116,105,111,110,32,110,97,109,101,32,98,117,116,32,103,111,116,58,32,0,12,70,117,110,99,116,105,111,110,32,65,58,10,12,70,117,110,99,116,105,111,110,32,66,58,10,12,70,117,110,99,116,105,111,110,32,67,58,10,23,67,111,110,116,105,110,117,111,117,115,32,118,105,100,101,111,32,102,101,101,100,63,10,0,37,10,69,120,112,101,99,116,101,100,32,82,44,32,76,44,32,111,114,32,100,105,115,116,97,110,99,101,32,98,117,116,32,103,111,116,58,32,36,10,69,120,112,101,99,116,101,100,32,99,111,109,109,97,32,111,114,32,110,101,119,108,105,110,101,32,98,117,116,32,103,111,116,58,32,43,10,68,101,102,105,110,105,116,105,111,110,115,32,109,97,121,32,98,101,32,97,116,32,109,111,115,116,32,50,48,32,99,104,97,114,97,99,116,101,114,115,33,10,94,62,118,60,0,1,0,-1,-1,0,1,0,0,0,0,0,0,1,36,16,0,109,4,1202,-3,1,586,21001,0,0,-1,22101,1,-3,-3,21102,0,1,-2,2208,-2,-1,570,1005,570,617,2201,-3,-2,609,4,0,21201,-2,1,-2,1105,1,597,109,-4,2105,1,0,109,5,2102,1,-4,629,21002,0,1,-2,22101,1,-4,-4,21101,0,0,-3,2208,-3,-2,570,1005,570,781,2201,-4,-3,652,21001,0,0,-1,1208,-1,-4,570,1005,570,709,1208,-1,-5,570,1005,570,734,1207,-1,0,570,1005,570,759,1206,-1,774,1001,578,562,684,1,0,576,576,1001,578,566,692,1,0,577,577,21102,1,702,0,1106,0,786,21201,-1,-1,-1,1106,0,676,1001,578,1,578,1008,578,4,570,1006,570,724,1001,578,-4,578,21102,731,1,0,1106,0,786,1106,0,774,1001,578,-1,578,1008,578,-1,570,1006,570,749,1001,578,4,578,21102,756,1,0,1106,0,786,1105,1,774,21202,-1,-11,1,22101,1182,1,1,21101,0,774,0,1105,1,622,21201,-3,1,-3,1106,0,640,109,-5,2106,0,0,109,7,1005,575,802,20102,1,576,-6,20102,1,577,-5,1105,1,814,21101,0,0,-1,21101,0,0,-5,21101,0,0,-6,20208,-6,576,-2,208,-5,577,570,22002,570,-2,-2,21202,-5,45,-3,22201,-6,-3,-3,22101,1449,-3,-3,1201,-3,0,843,1005,0,863,21202,-2,42,-4,22101,46,-4,-4,1206,-2,924,21102,1,1,-1,1106,0,924,1205,-2,873,21101,0,35,-4,1106,0,924,1201,-3,0,878,1008,0,1,570,1006,570,916,1001,374,1,374,2102,1,-3,895,1102,2,1,0,2102,1,-3,902,1001,438,0,438,2202,-6,-5,570,1,570,374,570,1,570,438,438,1001,578,558,921,21002,0,1,-4,1006,575,959,204,-4,22101,1,-6,-6,1208,-6,45,570,1006,570,814,104,10,22101,1,-5,-5,1208,-5,47,570,1006,570,810,104,10,1206,-1,974,99,1206,-1,974,1101,0,1,575,21101,0,973,0,1105,1,786,99,109,-7,2106,0,0,109,6,21102,1,0,-4,21101,0,0,-3,203,-2,22101,1,-3,-3,21208,-2,82,-1,1205,-1,1030,21208,-2,76,-1,1205,-1,1037,21207,-2,48,-1,1205,-1,1124,22107,57,-2,-1,1205,-1,1124,21201,-2,-48,-2,1106,0,1041,21101,0,-4,-2,1105,1,1041,21102,-5,1,-2,21201,-4,1,-4,21207,-4,11,-1,1206,-1,1138,2201,-5,-4,1059,1201,-2,0,0,203,-2,22101,1,-3,-3,21207,-2,48,-1,1205,-1,1107,22107,57,-2,-1,1205,-1,1107,21201,-2,-48,-2,2201,-5,-4,1090,20102,10,0,-1,22201,-2,-1,-2,2201,-5,-4,1103,2101,0,-2,0,1105,1,1060,21208,-2,10,-1,1205,-1,1162,21208,-2,44,-1,1206,-1,1131,1106,0,989,21102,1,439,1,1105,1,1150,21101,0,477,1,1105,1,1150,21102,1,514,1,21101,1149,0,0,1105,1,579,99,21102,1157,1,0,1106,0,579,204,-2,104,10,99,21207,-3,22,-1,1206,-1,1138,2101,0,-5,1176,1201,-4,0,0,109,-6,2105,1,0,36,9,36,1,7,1,36,1,7,1,36,1,7,1,24,7,5,1,7,1,24,1,5,1,5,1,7,1,24,1,5,1,1,13,24,1,5,1,1,1,3,1,32,1,5,1,1,1,3,7,26,1,5,1,1,1,9,1,26,1,5,1,1,1,9,1,26,1,5,1,1,1,9,1,26,9,9,1,32,1,11,1,32,1,11,1,32,1,11,1,32,7,5,1,44,1,44,1,44,1,36,9,36,1,22,9,13,1,22,1,7,1,13,1,20,13,9,7,16,1,1,1,7,1,1,1,9,1,1,1,3,1,10,5,1,1,1,1,7,1,1,1,9,1,1,1,3,1,10,1,3,1,1,1,1,1,7,1,1,1,9,1,1,1,3,1,6,13,7,1,1,1,3,5,1,1,1,5,6,1,3,1,3,1,1,1,9,1,1,1,3,1,3,1,1,1,12,1,3,7,9,13,12,1,7,1,13,1,3,1,3,1,14,1,7,1,13,9,14,1,7,1,17,1,18,9,17,7,44,1,44,1,44,1,42,9,38,1,5,1,38,1,5,1,38,1,5,1,38,1,5,1,38,1,5,1,38,1,5,1,38,1,5,1,38,7,6 \ No newline at end of file diff --git a/src/main/resources/2019/day18.txt b/src/main/resources/2019/day18.txt new file mode 100644 index 00000000..9200145e --- /dev/null +++ b/src/main/resources/2019/day18.txt @@ -0,0 +1,81 @@ +################################################################################# +#.......#.A...........#.........#.......#.#.........#.............#...#..r......# +#.###.###.#####.#####.#.#######.#.#######.#.#.#####.#.#.#.#######.###.#.###.###.# +#...#.#...#.....#.#...#...#.....#.......#...#.#...#o#.#.#.#...#.#...#.#...#.#...# +#####.#.###.#####.#.###.#W###.#########.#####.#.#.###.#.#.#.#.#.###.#K###.#.##### +#.....#.#.#...#...#...#.#...#...........#...#...#.....#.#.#.#.#.#...#...#.#.....# +#M###.#.#.###.#.#####.#####.###########.#.#.###.#######.###.#.#.#.#####.#.#####.# +#.#...#...#...#.#...#.....#...#..z....#.#.#...#...#.....#...#.#.#.#...#.......#.# +#.###.###.#.###.#.#.#####.###.#.###.#.#.#.###.#####.#.###.###.#.#.#.#.#####.###.# +#...#...#.#.#....y#.....#.....#.#.#.#.#.#...#.#...#.#.#...#...#.#...#.#...#.#m..# +#.#.#####.#.###########.#######.#.#.#.#.###.#.#.#X#.#.#.###.###.#####.#.#.###.### +#.#.#...#.#s..#.......#.......#...#.#.#.#...#...#.#.#.#.#.#.#.......#...#...#...# +###.#.#.#.###.#.#####.###.###.#####.#.#.#.#######.#.###.#.#.#.#####.#######.###.# +#...#.#...#.#...#...#.#...#.......#.#.#.#.#.......#.....#.#.#.#.....#.....#.....# +#.###.#####.#####.#.#C#.###.#####.#.#.#.#.#####.###.#####.#.###.#####.#.#.#####.# +#.....#.....#.....#.#.#.#...#...#...#.#.#.#.F.#...#...#...#...#.#...#.#.#.....#.# +#.#######.#.###.###.#.#.#####.#.#######.#.#.#.###.###.###.###.#.#.#.#.#.#######.# +#.#.......#...#.#...#.#...#...#.#.......#...#.#.#...#.......#.#.#.#.#.#.........# +#.#.#########.#.#####.###N#.###.#.###########.#.###.#########.#.#.#.#.########### +#...#...#.......#.....#...#.#.#.#.......#...#.#...............#...#.#.#....q....# +#####.###.#######.#####.###.#.#.#######.#.#.#.#############.#####.#.#.#.#.#####.# +#g..#.....#.....#...#.#...#...#.......#.#.#.#..l..........#.#...#.#.#.#.#...#...# +###.#.#####.###.###.#T#.#.###.###.#####.###.#############.#####B#.#.#.#.###.##### +#...#.#...#...#.....#.#.#...#.#.#.#...#.#.......#.......#...#...#.#...#...#.....# +#.###.###.###.#####.#.###.###.#.#.#.#.#.#.#####.#.###.#####.#.###.#####.#######.# +#...#...#...#.#.#...#...#.I...#.#...#...#.....#.#...#.#...#...#.#...#.#.#.......# +###.###.#.###.#.#.#####.#####.#.#############.#####.#.#.#.#####.###.#.#.#.####### +#.....#.#...#.#.......#.#...#...........#.....#.....#...#.......#.#.#.#.#.......# +#.#####.###.#.#######.#.#.#.#####.#######.###.#.###########.###.#.#.#.#.#######.# +#...........#.#e....#.#...#...#...#.....#.#...#...#.........#.....#.#...#.......# +#.###########.#.###.#########.#####.###.#.#######.#.#####.#######.#.#####.#####.# +#.....#.#.....#.#.#.........#.......#...#.#.......#.#.....#.....#.#...#...#.#...# +#####.#.#.#####.#.#####.#.###########.###.#.#######.#####.#.###.#.###.#.###.#.### +#...#.#.#.......#.#.....#.#.........#.#.#...#.#.....#...#.#.#...#...#.#...#...#.# +#.###.#.#########.#.#####.#V#.#####.#.#.#.###.#.###.#.#.###.#.#######.###.#.###.# +#.#...#.....#.....#.#.....#.#...#...#.#.#.#...#.#.#.#.#.....#.........#...#.#...# +#.#.###.###.#.#####.#######.###.#.###.#.#.###.#.#.#.#.#################.###.#.#.# +#.#.....#.#.#.....#.......#.#.#.#...#.#.#.#...#.#...#.#.........#.......#.S.#.#.# +#.#######.#.#####.#######.#.#.#.#####.#.#.#.#.#.#####.#####.###.#.#######.###.#.# +#.......................#.....#.............#.#.............#.....#...........#.# +#######################################.@.####################################### +#...............#.....#.....#.............#.........................D.......#..u# +#.#############.#####.#.#.###.###.#####.#.#.#.#####.#######.###############.#.### +#.....#.....#...#...#...#.....#.#.#.....#...#....v#.#.....#.#.......#.....#.#.E.# +#####.#.#####.###.#.#.#########.#.#######.#######.###.###.###.#####.#.#####.#.#.# +#.....#.....#.....#.#.#...#.....#.......#.#.......#.....#.#...#...#.#....j#t#.#.# +#.#########.#######.#.#.#.#.###########.#.#.#######.#####.#.###.###.#####.#.#.#.# +#.......#...#...#...#...#...#.......#...#.#.#.....#.#.....#.#.....#.#...#.#.#.#.# +#######.#.#.###.#.#######.###.#####.#.#####.#.###.#.#.#####.#####.#.#.#.#.#.###.# +#.....#.#.#.....#...#.....#...#.....#...#...#.#.#...#.....#.......#...#.#.#.#...# +###.###.#.#####.###.#####.#.###.#####.#.#.#.#.#.#########.#######.#####.#.#.#.#.# +#...#...#...#...#.#.....#.#.#.#.#.....#.#.#d#.#.....#.......#.....#.....#.#...#.# +#.###.#####.#.###.#####.#.#.#.#.#######.#.###.###.#.#.#######.#####.#####.#####.# +#.....#...#.#.....#.....#.#.#.#...#.....#.....#...#.#.....#.....#...#...#.....#.# +#.#####.#.#.#.#####.#####.#.#.###.#.###.#######.#.#######.#.#####.#####.#.#.#.#.# +#.#.....#.#.#.#.....#.....#.#...#.#.#...#.......#.#.....#...#.#...#.....#.#.#.#.# +#.###.#.#.#.#.#.###########.###.#.#.#.###.#########.#.#######.#.#####.###.#.###.# +#.H.#.#.#.#.#.#.....#.....#.#...#...#...#.#.....#...#.........#.#.....#...#.....# +###.###.#.#.#.#####.#.###.#.#.#########.#.#.###.#.#######.#####.#.#.#.#.######### +#.#.#...#...#...#.#...#...#.#...#.......#...#.#...#.....#...#...#.#.#.#.........# +#.#.#.#.#######.#.#####.###.#.#.#.#######.###.#########.###.#.#####.#.#########.# +#...#.#.#...#.#.#...#...#...#.#.#...#...#...#...#.....#...#.#.#.....#.#.......#.# +#.###.###.#.#.#.###.#######.#.#.###.#.#.###.#.###.#.#.#.#.#.###.#####.###.###.#.# +#.#...#...#.#.#.#...........#.#...#.#.#.#.#.#.#...#.#...#.#.....#...#...#.#.#.#.# +#.###.#.###.#.#.#.###########.###.#.#.#.#.#.#.#.###.#####.#####.###.###.#.#.#.#.# +#...#...#.#.#.#...#...#.U...#.#.#...#.#.#...#.....#.#.....#...#...#...#...#...#.# +###.#.###.#.#.#####J#.#.#.###.#.#####.###.#######.#.#####.#.#####.#.#####.#####.# +#...#.Q.#.#.#.....#.#...#.....#.........#.......#.#f....#.L.#.....#h....#.#...#.# +#.#####.#.#.###.#.#.#################.#.#######.#.#####.###.#.#####.#.###.#.#.#.# +#.#...#...#...#.#.#.#...#.......#...#.#.#.#...G.#.....#.Z.#.#...#...#.....#.#...# +#.#.#####.###.###.#.#.#.#####.#.#.#.###.#.#.#############.#.###.#########.#.##### +#k#.#.....#.#...#.#..c#...#...#...#.#...#.#.#........n#...#...#.#.......#.#...#.# +#.#.#.#####.###.#.#######.#.#######.#.#.#.#.#.#######.#.###.###.#.#####.#####.#.# +#.#...#.....#...#.#.P...#.#.#.....#...#.#.#.#.#...#...#.#...#...#.....#.....#p..# +#.###.#.#.###.###.#.#.###.#.###.#.#####.#.#.#.#.###.###.###.#.#######.###.#####.# +#...#...#.#...#.#...#...#.#...#.#...#...#.O.#.#.....#.#...#b#.#.......#.#.#...#.# +###.#####.#.###.#.#####.#.###.#####.#.###.###.#.#####.#.#.###.#.#######.#.#.#.#.# +#.#.#.....#.#a..#.#...#.#.#...#.....#...#...#i#.#...#...#.Y.#.#.#....w..#.#.#...# +#.#R#######.#.#.#.###.#.#.#.###.#######.###.#.#.#.#.#######.#.#.#####.#.#.#.##### +#...........#.#.......#.....#...........#.....#x..#.........#.........#.#.......# +################################################################################# \ No newline at end of file diff --git a/src/main/resources/2019/day19.txt b/src/main/resources/2019/day19.txt new file mode 100644 index 00000000..4bdbeb34 --- /dev/null +++ b/src/main/resources/2019/day19.txt @@ -0,0 +1 @@ +109,424,203,1,21102,11,1,0,1105,1,282,21101,0,18,0,1105,1,259,2101,0,1,221,203,1,21102,1,31,0,1105,1,282,21102,1,38,0,1105,1,259,20102,1,23,2,21201,1,0,3,21102,1,1,1,21102,57,1,0,1106,0,303,2102,1,1,222,21002,221,1,3,20101,0,221,2,21101,0,259,1,21101,0,80,0,1105,1,225,21101,44,0,2,21102,91,1,0,1105,1,303,1202,1,1,223,21002,222,1,4,21102,259,1,3,21102,1,225,2,21102,225,1,1,21101,118,0,0,1106,0,225,21002,222,1,3,21101,163,0,2,21101,0,133,0,1106,0,303,21202,1,-1,1,22001,223,1,1,21102,148,1,0,1106,0,259,1202,1,1,223,20101,0,221,4,21001,222,0,3,21102,1,24,2,1001,132,-2,224,1002,224,2,224,1001,224,3,224,1002,132,-1,132,1,224,132,224,21001,224,1,1,21101,195,0,0,105,1,108,20207,1,223,2,21002,23,1,1,21102,-1,1,3,21102,1,214,0,1106,0,303,22101,1,1,1,204,1,99,0,0,0,0,109,5,2101,0,-4,249,22102,1,-3,1,22101,0,-2,2,22101,0,-1,3,21102,250,1,0,1106,0,225,21202,1,1,-4,109,-5,2105,1,0,109,3,22107,0,-2,-1,21202,-1,2,-1,21201,-1,-1,-1,22202,-1,-2,-2,109,-3,2106,0,0,109,3,21207,-2,0,-1,1206,-1,294,104,0,99,22102,1,-2,-2,109,-3,2105,1,0,109,5,22207,-3,-4,-1,1206,-1,346,22201,-4,-3,-4,21202,-3,-1,-1,22201,-4,-1,2,21202,2,-1,-1,22201,-4,-1,1,21202,-2,1,3,21101,0,343,0,1106,0,303,1106,0,415,22207,-2,-3,-1,1206,-1,387,22201,-3,-2,-3,21202,-2,-1,-1,22201,-3,-1,3,21202,3,-1,-1,22201,-3,-1,2,21201,-4,0,1,21101,384,0,0,1105,1,303,1105,1,415,21202,-4,-1,-4,22201,-4,-3,-4,22202,-3,-2,-2,22202,-2,-4,-4,22202,-3,-2,-3,21202,-4,-1,-2,22201,-3,-2,1,21202,1,1,-4,109,-5,2105,1,0 \ No newline at end of file diff --git a/src/main/resources/2019/day2.txt b/src/main/resources/2019/day2.txt new file mode 100644 index 00000000..b61b8381 --- /dev/null +++ b/src/main/resources/2019/day2.txt @@ -0,0 +1 @@ +1,0,0,3,1,1,2,3,1,3,4,3,1,5,0,3,2,10,1,19,1,6,19,23,2,23,6,27,1,5,27,31,1,31,9,35,2,10,35,39,1,5,39,43,2,43,10,47,1,47,6,51,2,51,6,55,2,55,13,59,2,6,59,63,1,63,5,67,1,6,67,71,2,71,9,75,1,6,75,79,2,13,79,83,1,9,83,87,1,87,13,91,2,91,10,95,1,6,95,99,1,99,13,103,1,13,103,107,2,107,10,111,1,9,111,115,1,115,10,119,1,5,119,123,1,6,123,127,1,10,127,131,1,2,131,135,1,135,10,0,99,2,14,0,0 \ No newline at end of file diff --git a/src/main/resources/2019/day20.txt b/src/main/resources/2019/day20.txt new file mode 100644 index 00000000..b93543d5 --- /dev/null +++ b/src/main/resources/2019/day20.txt @@ -0,0 +1,107 @@ + L S F Z O X Q W + T S P Z J J X L + #############################.#######.#####.#.#####.#####.#####.#####.################################# + #.#.....#.....#.#.#.#.....#.....#.#.......#...#.....#.#...#.#.#.#.......#...#.#.#...#.#...#.#...#.#.#.# + #.###.#.###.###.#.#.###.#####.###.###.#.#####.###.###.#.###.#.#.#####.###.#.#.#.#.###.#.###.#.#.#.#.#.# + #.....#.#...#.#.....#.#...#.....#.#.#.#.#...#.#.....#.......#...#...#.....#.#.............#.#.#.....#.# + #######.###.#.#.#####.###.#.#####.#.###.#.#.#.#####.#.#.#.#.#.#.#.###.#####.#.#.#########.#.#.#######.# + #...#.....#.....#...#.........#.......#.#.#.....#...#.#.#.#.#.#.#...#.#.......#.........#.......#.....# + #.#######.#####.###.#########.###.###.#.#.#######.#.###.###.###.###.#.#.#####.#.#####.#.#.#.#######.### + #.#...#.....#.......#.#.#.#...#...#...#.#...#...#.#...#...#.#.....#...#.....#.#.....#.#.#.#.#.#.#.....# + #.#.#####.#.###.###.#.#.#.#.#####.###.#.#.###.#####.#.#.#######.#####.#####.###########.###.#.#.#.###.# + #...#...#.#.......#...........#.....#.#.#...#...#...#.#.....#...#.....#...#.#.....#...#.#.#.#.....#.#.# + ###.#.#######.#############.#######.#.#.###.#.#####.#.#.#.###.#.#######.#.#.#.###.###.###.#####.###.### + #.........#.#.#.....#...#.......#...#...#.......#...#.#.#.#.#.#.....#...#.......#.#.......#.....#...#.# + #.###.###.#.#.#####.###.###.#####.###.#.###.#.#######.#.###.###.#.#.#.#.#.###.###.###.#####.###.#.###.# + #.#...#.........#...............#.#...#.#...#...#.....#...#...#.#.#.#.#.#...#.#.......#.#.#...#...#...# + ###.#######.#.#####.###.###.#####.#######.###########.#.###.###.#####.#################.#.#.#####.###.# + #.#...#.....#.....#...#.#.....#.......#.#...#.........#.....#.#.....#...........#.#.#.#...#.#.#.#.#...# + #.#######.###.#.###########.#########.#.###.###.###.#######.#.###.###.#.###.#####.#.#.#.#.###.#.#.#.### + #.#...#.#.#...#...#.............#.......#.....#...#...#.......#...#...#.#...#.#...#.#...#...#.#.#...#.# + #.###.#.#####.#####.#######.###.###.#####.###########.###.#####.#####.#######.#.###.###.#####.#.#.###.# + #.#.........#.....#.#.....#.#.....#.....#...#.#.....#.#.......#...#.#...........#.#.#...#.#.#.#...#...# + #.#.#####.#.#.#.###.#####.###.#####.#.#####.#.###.#.#.###.#####.#.#.#.#####.#####.#.###.#.#.#.###.#.#.# + #.#.#.#...#.#.#.#.#.#.....#.......#.#.#.#.....#...#...#...#.....#.#.#.#.....#.#.#.#.#.....#...#...#.#.# + #.###.###.#######.#####.#.#####.#####.#.#.#####.###.#.#.#######.###.#.#####.#.#.#.#.###.#####.###.#.### + #.#.#...#.#.#.....#...#.#.......#.......#.....#...#.#.#.......#.....#.#...........#...#...#.#.#.......# + #.#.#.###.#.#####.###.#######.#########.#####.#.#############.#####.#####.#########.###.###.#.###.###.# + #.#.....#.#.#.#.#...#.#.# U D P I Q L M #.#...#...#.......#.#...# + #.#####.#.#.#.#.#.###.#.# E R V Q X T X #.###.###.###.#######.#.# + #.#.........#.#.....#.#.# #...#.#.#.#.......#.#.#.# + #.###.#######.###.###.#.# #.###.#.#.###.#####.###.# + #.#.#...#.....#.#.......# TI......#.........#.#.....# + #.#.#.#######.#.###.###.# #.#.#.#.###.#.###.###.#.# + #.....#.....#...#.#.#...# #.#.#...#...#.....#...#..IQ + #.###.###.#####.#.#.###.# #.#.#.#.#.#####.#.#.#.### +TI..#...#.....#...#.#...#..WL #.#.#.#.#.#.....#.#.#...# + #.#.###.#.#####.#.###.#.# #############.#####.#.### + #.#.....#.............#.# #...#...#.#.........#.#.# + #######.#.#.#.#.#######.# ###.###.#.#####.#.#####.# + #.....#.#.#.#.#.#.#.....# #.............#.#.#.#....UE + #.###.###########.###.### ###.#.#######.#####.###.# + #...#...#.....#...#...#.# #...#.....#...........#.# + ###.###.#.#.#####.###.#.# #.#####.#.###.###.###.#.# +OG..#...#...#...#.#.#.#.#..OB #.#.....#.#.#...#.#...#.# + #.###.#####.###.#.#.###.# ###.###.#.#.#########.#.# + #.......#...............# VU....#...#.#.#...#...#...# + #.###.#.#.#.#.###.#.##### #.#########.#.#####.##### + #...#.#.#.#.#...#.#.#....ZH #...#...#...#.....#.....# + #####.#.###.#.#######.### #######.#.#.#.###.#.###.# + #...#.#.#.#.#...#.......# #.....#...#.....#.....#.# + ###.#####.###.#########.# #.#.###.#####.###.#.###.# +PV....#.#.....#.#.#.#.#...# #.#.......#.....#.#.#...# + #.#.#.#.#.#####.#.#.#.### ###.#.#############.#.#.# + #.#.....#.............#.# DS....#.#.#.....#.#.#.#.#..DR + #######################.# #######.###.###.#.####### + #.................#.....# #.#.#.................#.# + #.###.###.#.#.#.#.#.###.# #.#.#.#####.###.#####.#.# + #.#...#.#.#.#.#.#.#.#...# SB....#...#.....#.#...#...# + #####.#.#########.#.#.### #.###.###.#.###.###.###.# + #...#.......#...#...#...# #.......#.#.#...#.#.#...# + #.#.#.###.###.#####.###.# #.#.#.#####.#####.#.#.### +GU..#...#...#...#.#.....#..SS #.#.#.#.#.#.#.#.#.#......QN + #############.#.#######.# #####.#.#.###.#.#.####### + #.#.#...............#.#.# OJ..#.#.#...#.......#.#....PO + #.#.#.#######.#.###.#.### #.#.###.#.#.#####.#.###.# +AA....#.....#.#.#.#.#.....# #...#...#.....#.#...#...# + #.###.#.#.#.#####.#####.# #.#.#.#.#.#####.#.#.#.#.# + #...#.#.#.....#.........# #.#...#.#.#...#...#.#.#.# + #.#.#.#####.#####.#.##### #.#.###.#.#.###.#.#.#.#.# +MX..#.....#.#...#.#.#......OQ QN..#.#...#.#.#.#.#.#...#..MH + ###.#####.#####.###.##### ###########.#.########### + #.#.#.#.#.....#...#.#....MH PO......#.#................YJ + #.###.#.#.#######.#####.# #.#.###.#.#.#.###.###.#.# + #...#.........#.........# #.#.#.....#.#.#.....#.#.# + #.#.#.#.###############.# ###.#.#########.#.#.#.#.# +OB..#.#.#...#.#.#.#.....#.# #...#.....#.#.#.#.#.#.#.# + #.#.#.#.###.#.#.#.#.#.#.# #.#######.#.#.###.#.##### + #.#...#...........#.#...# #...............#.#.....# + ###.###.#.#.#.#.#####.#.# X D H O G F Y #.#.#.###.###.#####.###.# + #.....#.#.#.#.#...#...#.# J C Y G U P J #.#.#.#.....#.....#.#.#.# + ###.###.###.#.#.###.#.###########.#.#######.#######.#########.#.#########.#########.###.#######.###.### + #.#...#...#.#.#...#.#.#.#.#.....#.#...#.........#...#.........#.....#.......#.....#.#.........#.#.#...# + #.#.###.#####.#.#.#####.#.#.###.#.###.#########.#.#####.#########.#####.#######.#####.###.#.#####.###.# + #...#.....#.#.#.#...#.#.......#...#.......#.....#.#...........#...#.#.#.............#.#...#...........# + ###.###.###.###.#####.#.#.###.#######.#.#####.###.#.#####.###.###.#.#.###.#.###.#.###.#.###.#.#######.# + #.#...#...#.........#...#...#.......#.#.#...#...#.#.#...#.#.....#.#.....#.#...#.#.#...#.#...#...#.....# + #.#.#.#.###.###.#.#######.#.#.###.#.###.#.#####.#.###.#####.#####.#.#.###.###########.#####.###.###.#.# + #...#.#.#.....#.#...#.#...#.#.#.#.#.#.......#...#...#.......#.....#.#...#.......#.#.#.#.......#.#.#.#.# + #.#.###.#.#.#.#####.#.#.#.#####.#.#.###.###.###.#.###.#.###.#####.#.#.###.#######.#.#.#####.###.#.###.# + #.#...#.#.#.#.#.#.#.#.#.#...#.....#.#.....#.#.#.#...#.#...#...#.....#.#.......#.#.#...#...#.#...#.....# + #######.#####.#.#.###.###.#####.#.#####.#####.#.#.#####.#######.#####.###.#####.#.#####.#.#####.#.###.# + #.#.#.#.....#.#.#.......#.#.#...#.....#.#.#.....#.....#.#.#.#...#.....#.................#...#...#...#.# + #.#.#.#.#.#####.#####.#####.#####.#####.#.###.###.#####.#.#.#######.###.#.#######.###.#.#######.#.###.# + #.......#.#.#.#...#.......#.........#.....#.#...#.#.#.....#.#.#.#.#...#.#.....#.#...#.#.......#.#.#...# + #.#.###.###.#.###.###.#########.###.###.###.###.#.#.#.###.#.#.#.#.###.#.###.#.#.#######.#########.###.# + #.#.#.#...#.......................#.#...#.#.....#...#.#.......#.......#...#.#.#.#...#.#.#.....#...#...# + #.###.#.###.###.###.#######.#########.#.#.#.###.###.###.#######.###.#####.#####.#.###.#####.#####.###.# + #...#...#.#.#.....#.#...#...#.....#...#.#.....#.#.#.#.#.#.#.#.....#...#.....#...........#.......#.#...# + #.###.###.#########.###.###.#.#.###.#.#####.#####.#.#.#.#.#.#######.#.#.#######.###.#####.###########.# + #.#.....#.#.#.......#.....#...#...#.#.#.....#.........#.#.#.#...#...#.#...........#...#.#...#.....#...# + ###.###.#.#.#######.###.#######.#####.###.#########.#.#.#.#.#.#######.###.#.###.###.###.#.###.######### + #...#.......#.......#.#...........#.....#.#.....#...#.#...#...#...#...#...#...#.#.....................# + #.###.#.###.#.#.#####.#####.###########.#.#.###.#.###.#.###.#.###.#.###.#.###########.###.###.######### + #.#...#.#...#.#.#...................#...#...#...#.#...#.....#.#.....#...#...........#...#...#.........# + #################################.###.#########.#####.#######.###.#####.############################### + H V Z D S D O + Y U H C B S Q \ No newline at end of file diff --git a/src/main/resources/2019/day21.txt b/src/main/resources/2019/day21.txt new file mode 100644 index 00000000..445de007 --- /dev/null +++ b/src/main/resources/2019/day21.txt @@ -0,0 +1 @@ +109,2050,21101,966,0,1,21102,1,13,0,1105,1,1378,21102,20,1,0,1106,0,1337,21101,0,27,0,1106,0,1279,1208,1,65,748,1005,748,73,1208,1,79,748,1005,748,110,1208,1,78,748,1005,748,132,1208,1,87,748,1005,748,169,1208,1,82,748,1005,748,239,21102,1041,1,1,21102,73,1,0,1105,1,1421,21101,78,0,1,21101,1041,0,2,21102,88,1,0,1106,0,1301,21102,1,68,1,21101,1041,0,2,21102,1,103,0,1105,1,1301,1101,0,1,750,1106,0,298,21102,82,1,1,21101,1041,0,2,21101,125,0,0,1106,0,1301,1101,2,0,750,1106,0,298,21102,79,1,1,21101,0,1041,2,21101,147,0,0,1105,1,1301,21101,84,0,1,21102,1041,1,2,21102,162,1,0,1106,0,1301,1101,3,0,750,1106,0,298,21102,65,1,1,21102,1,1041,2,21102,184,1,0,1105,1,1301,21102,1,76,1,21102,1,1041,2,21101,0,199,0,1106,0,1301,21102,75,1,1,21101,1041,0,2,21102,1,214,0,1106,0,1301,21101,0,221,0,1106,0,1337,21101,0,10,1,21102,1,1041,2,21102,236,1,0,1105,1,1301,1106,0,553,21102,1,85,1,21101,1041,0,2,21101,0,254,0,1105,1,1301,21102,78,1,1,21101,0,1041,2,21102,1,269,0,1105,1,1301,21101,276,0,0,1106,0,1337,21101,0,10,1,21101,0,1041,2,21102,1,291,0,1105,1,1301,1101,0,1,755,1105,1,553,21101,0,32,1,21101,1041,0,2,21101,0,313,0,1105,1,1301,21102,1,320,0,1106,0,1337,21102,1,327,0,1106,0,1279,2102,1,1,749,21101,0,65,2,21102,1,73,3,21101,0,346,0,1105,1,1889,1206,1,367,1007,749,69,748,1005,748,360,1101,0,1,756,1001,749,-64,751,1106,0,406,1008,749,74,748,1006,748,381,1102,-1,1,751,1106,0,406,1008,749,84,748,1006,748,395,1101,-2,0,751,1105,1,406,21101,1100,0,1,21102,406,1,0,1105,1,1421,21101,0,32,1,21102,1100,1,2,21102,1,421,0,1105,1,1301,21102,1,428,0,1105,1,1337,21102,1,435,0,1105,1,1279,2101,0,1,749,1008,749,74,748,1006,748,453,1101,0,-1,752,1106,0,478,1008,749,84,748,1006,748,467,1101,-2,0,752,1106,0,478,21102,1168,1,1,21101,0,478,0,1105,1,1421,21101,485,0,0,1105,1,1337,21102,10,1,1,21101,1168,0,2,21101,0,500,0,1105,1,1301,1007,920,15,748,1005,748,518,21101,0,1209,1,21102,518,1,0,1106,0,1421,1002,920,3,529,1001,529,921,529,1002,750,1,0,1001,529,1,537,1001,751,0,0,1001,537,1,545,101,0,752,0,1001,920,1,920,1106,0,13,1005,755,577,1006,756,570,21101,1100,0,1,21102,1,570,0,1105,1,1421,21102,1,987,1,1106,0,581,21101,1001,0,1,21101,588,0,0,1105,1,1378,1102,1,758,594,101,0,0,753,1006,753,654,21001,753,0,1,21102,610,1,0,1106,0,667,21101,0,0,1,21101,621,0,0,1105,1,1463,1205,1,647,21102,1015,1,1,21101,635,0,0,1105,1,1378,21102,1,1,1,21102,1,646,0,1105,1,1463,99,1001,594,1,594,1106,0,592,1006,755,664,1101,0,0,755,1106,0,647,4,754,99,109,2,1101,726,0,757,21201,-1,0,1,21101,9,0,2,21101,697,0,3,21102,1,692,0,1106,0,1913,109,-2,2106,0,0,109,2,101,0,757,706,1201,-1,0,0,1001,757,1,757,109,-2,2106,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,255,63,223,127,159,191,95,0,183,170,218,117,217,86,155,244,187,178,56,109,253,154,38,184,213,110,189,233,212,87,50,141,169,125,236,207,171,175,230,114,137,197,99,49,249,136,239,93,242,57,231,100,228,172,219,102,140,69,84,206,92,174,77,179,166,76,163,139,203,120,173,43,62,202,124,216,103,138,71,39,54,143,227,79,157,158,167,250,126,198,235,58,121,251,156,199,35,68,246,215,53,47,185,221,182,46,168,115,51,123,142,229,85,111,201,248,107,204,70,98,34,42,188,222,60,254,196,162,220,153,78,61,55,119,252,186,181,243,238,101,118,106,214,234,226,113,108,94,152,116,200,232,59,190,247,122,245,205,237,241,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,73,110,112,117,116,32,105,110,115,116,114,117,99,116,105,111,110,115,58,10,13,10,87,97,108,107,105,110,103,46,46,46,10,10,13,10,82,117,110,110,105,110,103,46,46,46,10,10,25,10,68,105,100,110,39,116,32,109,97,107,101,32,105,116,32,97,99,114,111,115,115,58,10,10,58,73,110,118,97,108,105,100,32,111,112,101,114,97,116,105,111,110,59,32,101,120,112,101,99,116,101,100,32,115,111,109,101,116,104,105,110,103,32,108,105,107,101,32,65,78,68,44,32,79,82,44,32,111,114,32,78,79,84,67,73,110,118,97,108,105,100,32,102,105,114,115,116,32,97,114,103,117,109,101,110,116,59,32,101,120,112,101,99,116,101,100,32,115,111,109,101,116,104,105,110,103,32,108,105,107,101,32,65,44,32,66,44,32,67,44,32,68,44,32,74,44,32,111,114,32,84,40,73,110,118,97,108,105,100,32,115,101,99,111,110,100,32,97,114,103,117,109,101,110,116,59,32,101,120,112,101,99,116,101,100,32,74,32,111,114,32,84,52,79,117,116,32,111,102,32,109,101,109,111,114,121,59,32,97,116,32,109,111,115,116,32,49,53,32,105,110,115,116,114,117,99,116,105,111,110,115,32,99,97,110,32,98,101,32,115,116,111,114,101,100,0,109,1,1005,1262,1270,3,1262,21002,1262,1,0,109,-1,2105,1,0,109,1,21102,1,1288,0,1105,1,1263,21001,1262,0,0,1102,1,0,1262,109,-1,2105,1,0,109,5,21101,0,1310,0,1106,0,1279,22101,0,1,-2,22208,-2,-4,-1,1205,-1,1332,22102,1,-3,1,21102,1332,1,0,1105,1,1421,109,-5,2105,1,0,109,2,21101,1346,0,0,1105,1,1263,21208,1,32,-1,1205,-1,1363,21208,1,9,-1,1205,-1,1363,1106,0,1373,21101,0,1370,0,1105,1,1279,1106,0,1339,109,-2,2105,1,0,109,5,2102,1,-4,1385,21001,0,0,-2,22101,1,-4,-4,21101,0,0,-3,22208,-3,-2,-1,1205,-1,1416,2201,-4,-3,1408,4,0,21201,-3,1,-3,1106,0,1396,109,-5,2105,1,0,109,2,104,10,22102,1,-1,1,21102,1436,1,0,1106,0,1378,104,10,99,109,-2,2105,1,0,109,3,20002,594,753,-1,22202,-1,-2,-1,201,-1,754,754,109,-3,2106,0,0,109,10,21101,0,5,-5,21102,1,1,-4,21102,0,1,-3,1206,-9,1555,21101,3,0,-6,21102,1,5,-7,22208,-7,-5,-8,1206,-8,1507,22208,-6,-4,-8,1206,-8,1507,104,64,1106,0,1529,1205,-6,1527,1201,-7,716,1515,21002,0,-11,-8,21201,-8,46,-8,204,-8,1106,0,1529,104,46,21201,-7,1,-7,21207,-7,22,-8,1205,-8,1488,104,10,21201,-6,-1,-6,21207,-6,0,-8,1206,-8,1484,104,10,21207,-4,1,-8,1206,-8,1569,21101,0,0,-9,1105,1,1689,21208,-5,21,-8,1206,-8,1583,21102,1,1,-9,1105,1,1689,1201,-5,716,1589,20102,1,0,-2,21208,-4,1,-1,22202,-2,-1,-1,1205,-2,1613,21201,-5,0,1,21101,0,1613,0,1106,0,1444,1206,-1,1634,22101,0,-5,1,21101,1627,0,0,1105,1,1694,1206,1,1634,21101,0,2,-3,22107,1,-4,-8,22201,-1,-8,-8,1206,-8,1649,21201,-5,1,-5,1206,-3,1663,21201,-3,-1,-3,21201,-4,1,-4,1106,0,1667,21201,-4,-1,-4,21208,-4,0,-1,1201,-5,716,1676,22002,0,-1,-1,1206,-1,1686,21101,1,0,-4,1106,0,1477,109,-10,2106,0,0,109,11,21101,0,0,-6,21102,0,1,-8,21101,0,0,-7,20208,-6,920,-9,1205,-9,1880,21202,-6,3,-9,1201,-9,921,1725,20101,0,0,-5,1001,1725,1,1732,21002,0,1,-4,21202,-4,1,1,21102,1,1,2,21101,9,0,3,21102,1,1754,0,1105,1,1889,1206,1,1772,2201,-10,-4,1766,1001,1766,716,1766,21001,0,0,-3,1105,1,1790,21208,-4,-1,-9,1206,-9,1786,22102,1,-8,-3,1105,1,1790,21202,-7,1,-3,1001,1732,1,1795,21002,0,1,-2,21208,-2,-1,-9,1206,-9,1812,21201,-8,0,-1,1106,0,1816,21202,-7,1,-1,21208,-5,1,-9,1205,-9,1837,21208,-5,2,-9,1205,-9,1844,21208,-3,0,-1,1106,0,1855,22202,-3,-1,-1,1106,0,1855,22201,-3,-1,-1,22107,0,-1,-1,1106,0,1855,21208,-2,-1,-9,1206,-9,1869,22101,0,-1,-8,1106,0,1873,21201,-1,0,-7,21201,-6,1,-6,1106,0,1708,22101,0,-8,-10,109,-11,2106,0,0,109,7,22207,-6,-5,-3,22207,-4,-6,-2,22201,-3,-2,-1,21208,-1,0,-6,109,-7,2106,0,0,0,109,5,2101,0,-2,1912,21207,-4,0,-1,1206,-1,1930,21101,0,0,-4,21201,-4,0,1,21202,-3,1,2,21101,0,1,3,21102,1,1949,0,1106,0,1954,109,-5,2105,1,0,109,6,21207,-4,1,-1,1206,-1,1977,22207,-5,-3,-1,1206,-1,1977,22101,0,-5,-5,1105,1,2045,21201,-5,0,1,21201,-4,-1,2,21202,-3,2,3,21101,1996,0,0,1106,0,1954,22101,0,1,-5,21102,1,1,-2,22207,-5,-3,-1,1206,-1,2015,21102,1,0,-2,22202,-3,-2,-3,22107,0,-4,-1,1206,-1,2037,21201,-2,0,1,21102,2037,1,0,106,0,1912,21202,-3,-1,-3,22201,-5,-3,-5,109,-6,2105,1,0 \ No newline at end of file diff --git a/src/main/resources/2019/day22.txt b/src/main/resources/2019/day22.txt new file mode 100644 index 00000000..55ab7933 --- /dev/null +++ b/src/main/resources/2019/day22.txt @@ -0,0 +1,100 @@ +deal with increment 31 +deal into new stack +cut -7558 +deal with increment 49 +cut 194 +deal with increment 23 +cut -4891 +deal with increment 53 +cut 5938 +deal with increment 61 +cut 7454 +deal into new stack +deal with increment 31 +cut 3138 +deal with increment 53 +cut 3553 +deal with increment 61 +cut -5824 +deal with increment 42 +cut -889 +deal with increment 34 +cut 7128 +deal with increment 42 +cut -9003 +deal with increment 75 +cut 13 +deal with increment 75 +cut -3065 +deal with increment 74 +cut -8156 +deal with increment 39 +cut 4242 +deal with increment 24 +cut -405 +deal with increment 27 +cut 6273 +deal with increment 19 +cut -9826 +deal with increment 58 +deal into new stack +cut -6927 +deal with increment 65 +cut -9906 +deal with increment 31 +deal into new stack +deal with increment 42 +deal into new stack +deal with increment 39 +cut -4271 +deal into new stack +deal with increment 32 +cut -8799 +deal with increment 69 +cut 2277 +deal with increment 55 +cut 2871 +deal with increment 54 +cut -2118 +deal with increment 15 +cut 1529 +deal with increment 57 +cut -4745 +deal with increment 23 +cut -5959 +deal with increment 58 +deal into new stack +deal with increment 48 +deal into new stack +cut 2501 +deal into new stack +deal with increment 42 +deal into new stack +cut 831 +deal with increment 74 +cut -3119 +deal with increment 33 +cut 967 +deal with increment 69 +cut 9191 +deal with increment 9 +cut 5489 +deal with increment 62 +cut -9107 +deal with increment 14 +cut -7717 +deal with increment 56 +cut 7900 +deal with increment 49 +cut 631 +deal with increment 14 +deal into new stack +deal with increment 58 +cut -9978 +deal with increment 48 +deal into new stack +deal with increment 66 +cut -1554 +deal into new stack +cut 897 +deal with increment 36 \ No newline at end of file diff --git a/src/main/resources/2019/day23.txt b/src/main/resources/2019/day23.txt new file mode 100644 index 00000000..c055880b --- /dev/null +++ b/src/main/resources/2019/day23.txt @@ -0,0 +1 @@ +3,62,1001,62,11,10,109,2247,105,1,0,800,1531,734,2092,1445,1220,1572,1282,2121,769,1181,1865,1605,1047,1251,2032,608,952,874,1997,1706,1016,571,911,1966,1673,1150,2063,1480,1931,1311,1408,1770,841,670,2185,1640,1115,1080,1801,1373,1902,1342,2154,2216,1834,637,1739,983,701,0,0,0,0,0,0,0,0,0,0,0,0,3,64,1008,64,-1,62,1006,62,88,1006,61,170,1106,0,73,3,65,21002,64,1,1,20102,1,66,2,21102,105,1,0,1106,0,436,1201,1,-1,64,1007,64,0,62,1005,62,73,7,64,67,62,1006,62,73,1002,64,2,132,1,132,68,132,1002,0,1,62,1001,132,1,140,8,0,65,63,2,63,62,62,1005,62,73,1002,64,2,161,1,161,68,161,1101,1,0,0,1001,161,1,169,1001,65,0,0,1102,1,1,61,1102,0,1,63,7,63,67,62,1006,62,203,1002,63,2,194,1,68,194,194,1006,0,73,1001,63,1,63,1105,1,178,21101,210,0,0,106,0,69,2101,0,1,70,1101,0,0,63,7,63,71,62,1006,62,250,1002,63,2,234,1,72,234,234,4,0,101,1,234,240,4,0,4,70,1001,63,1,63,1105,1,218,1105,1,73,109,4,21102,0,1,-3,21102,0,1,-2,20207,-2,67,-1,1206,-1,293,1202,-2,2,283,101,1,283,283,1,68,283,283,22001,0,-3,-3,21201,-2,1,-2,1105,1,263,21202,-3,1,-3,109,-4,2105,1,0,109,4,21102,1,1,-3,21101,0,0,-2,20207,-2,67,-1,1206,-1,342,1202,-2,2,332,101,1,332,332,1,68,332,332,22002,0,-3,-3,21201,-2,1,-2,1105,1,312,22102,1,-3,-3,109,-4,2106,0,0,109,1,101,1,68,359,20101,0,0,1,101,3,68,366,21002,0,1,2,21101,0,376,0,1106,0,436,22101,0,1,0,109,-1,2105,1,0,1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,262144,524288,1048576,2097152,4194304,8388608,16777216,33554432,67108864,134217728,268435456,536870912,1073741824,2147483648,4294967296,8589934592,17179869184,34359738368,68719476736,137438953472,274877906944,549755813888,1099511627776,2199023255552,4398046511104,8796093022208,17592186044416,35184372088832,70368744177664,140737488355328,281474976710656,562949953421312,1125899906842624,109,8,21202,-6,10,-5,22207,-7,-5,-5,1205,-5,521,21102,1,0,-4,21101,0,0,-3,21101,0,51,-2,21201,-2,-1,-2,1201,-2,385,471,20101,0,0,-1,21202,-3,2,-3,22207,-7,-1,-5,1205,-5,496,21201,-3,1,-3,22102,-1,-1,-5,22201,-7,-5,-7,22207,-3,-6,-5,1205,-5,515,22102,-1,-6,-5,22201,-3,-5,-3,22201,-1,-4,-4,1205,-2,461,1106,0,547,21101,0,-1,-4,21202,-6,-1,-6,21207,-7,0,-5,1205,-5,547,22201,-7,-6,-7,21201,-4,1,-4,1106,0,529,22102,1,-4,-7,109,-8,2105,1,0,109,1,101,1,68,564,20101,0,0,0,109,-1,2106,0,0,1101,0,101477,66,1101,0,4,67,1102,1,598,68,1102,302,1,69,1101,0,1,71,1101,0,606,72,1106,0,73,0,0,0,0,0,0,0,0,10,215836,1101,0,45281,66,1101,0,1,67,1102,635,1,68,1101,0,556,69,1101,0,0,71,1101,637,0,72,1106,0,73,1,1458,1102,1,881,66,1102,1,1,67,1102,1,664,68,1102,556,1,69,1102,2,1,71,1101,0,666,72,1105,1,73,1,7,11,231164,1,78697,1101,73369,0,66,1101,0,1,67,1101,0,697,68,1102,556,1,69,1102,1,1,71,1101,0,699,72,1106,0,73,1,160,23,314845,1101,0,75079,66,1102,1,2,67,1102,1,728,68,1102,302,1,69,1101,1,0,71,1101,732,0,72,1106,0,73,0,0,0,0,1,472182,1101,0,45569,66,1101,0,3,67,1102,1,761,68,1102,1,302,69,1101,1,0,71,1101,0,767,72,1106,0,73,0,0,0,0,0,0,12,55059,1101,0,27967,66,1102,1,1,67,1102,1,796,68,1101,556,0,69,1101,0,1,71,1101,0,798,72,1106,0,73,1,829,38,46353,1101,42283,0,66,1101,1,0,67,1101,0,827,68,1101,556,0,69,1102,1,6,71,1102,1,829,72,1105,1,73,1,19165,6,28162,12,18353,12,36706,4,53359,4,106718,4,160077,1101,0,38873,66,1102,1,1,67,1102,1,868,68,1101,0,556,69,1101,0,2,71,1101,870,0,72,1105,1,73,1,2,23,251876,23,377814,1101,0,52769,66,1102,4,1,67,1102,1,901,68,1101,253,0,69,1101,1,0,71,1102,1,909,72,1105,1,73,0,0,0,0,0,0,0,0,36,19073,1101,0,62969,66,1101,6,0,67,1102,938,1,68,1101,302,0,69,1101,0,1,71,1102,950,1,72,1106,0,73,0,0,0,0,0,0,0,0,0,0,0,0,36,38146,1102,91571,1,66,1102,1,1,67,1102,1,979,68,1102,1,556,69,1102,1,1,71,1101,981,0,72,1105,1,73,1,17,1,157394,1101,92693,0,66,1101,0,1,67,1101,1010,0,68,1102,556,1,69,1101,2,0,71,1101,0,1012,72,1106,0,73,1,1607,11,115582,2,136707,1102,1,2393,66,1102,1,1,67,1101,0,1043,68,1102,1,556,69,1102,1,1,71,1102,1,1045,72,1105,1,73,1,19,19,19961,1101,0,26561,66,1101,0,2,67,1101,0,1074,68,1101,302,0,69,1101,0,1,71,1101,1078,0,72,1106,0,73,0,0,0,0,49,75079,1102,15451,1,66,1102,3,1,67,1101,0,1107,68,1102,302,1,69,1102,1,1,71,1101,0,1113,72,1106,0,73,0,0,0,0,0,0,10,269795,1102,21673,1,66,1101,3,0,67,1101,0,1142,68,1102,302,1,69,1102,1,1,71,1102,1148,1,72,1106,0,73,0,0,0,0,0,0,10,107918,1102,1,56893,66,1101,1,0,67,1102,1177,1,68,1102,556,1,69,1102,1,1,71,1101,1179,0,72,1105,1,73,1,668,22,101477,1102,53959,1,66,1101,0,5,67,1101,0,1208,68,1101,0,253,69,1101,0,1,71,1101,1218,0,72,1105,1,73,0,0,0,0,0,0,0,0,0,0,11,57791,1102,1,29581,66,1101,1,0,67,1101,0,1247,68,1102,556,1,69,1101,1,0,71,1102,1249,1,72,1106,0,73,1,22291,25,187778,1102,27259,1,66,1102,1,1,67,1101,0,1278,68,1101,0,556,69,1101,0,1,71,1102,1,1280,72,1106,0,73,1,11,1,314788,1102,1,20873,66,1102,1,1,67,1101,1309,0,68,1101,556,0,69,1102,1,0,71,1101,1311,0,72,1106,0,73,1,1353,1101,0,80471,66,1102,1,1,67,1102,1,1338,68,1101,556,0,69,1102,1,1,71,1101,0,1340,72,1105,1,73,1,-82,38,30902,1102,1,85889,66,1101,0,1,67,1102,1,1369,68,1101,0,556,69,1101,0,1,71,1102,1371,1,72,1105,1,73,1,1151,37,65019,1102,1,13397,66,1102,3,1,67,1102,1,1400,68,1102,1,302,69,1102,1,1,71,1102,1406,1,72,1106,0,73,0,0,0,0,0,0,10,53959,1101,0,56659,66,1102,4,1,67,1101,0,1435,68,1102,302,1,69,1101,0,1,71,1101,0,1443,72,1105,1,73,0,0,0,0,0,0,0,0,23,62969,1101,0,53359,66,1101,0,3,67,1102,1,1472,68,1102,302,1,69,1102,1,1,71,1102,1,1478,72,1106,0,73,0,0,0,0,0,0,18,158307,1102,46591,1,66,1101,1,0,67,1102,1,1507,68,1102,1,556,69,1101,0,11,71,1102,1,1509,72,1105,1,73,1,1,37,43346,38,15451,40,26794,19,39922,22,304431,25,93889,39,7559,13,53122,49,150158,1,393485,2,91138,1101,0,78697,66,1102,6,1,67,1102,1558,1,68,1101,0,302,69,1101,1,0,71,1102,1570,1,72,1105,1,73,0,0,0,0,0,0,0,0,0,0,0,0,6,14081,1102,1,14081,66,1101,0,2,67,1102,1,1599,68,1102,1,302,69,1102,1,1,71,1101,0,1603,72,1106,0,73,0,0,0,0,18,105538,1101,0,18353,66,1102,3,1,67,1102,1,1632,68,1101,0,302,69,1102,1,1,71,1101,1638,0,72,1106,0,73,0,0,0,0,0,0,18,211076,1101,0,19073,66,1102,2,1,67,1101,0,1667,68,1101,351,0,69,1102,1,1,71,1102,1,1671,72,1106,0,73,0,0,0,0,255,42283,1101,93889,0,66,1101,2,0,67,1101,0,1700,68,1101,0,302,69,1102,1,1,71,1102,1704,1,72,1106,0,73,0,0,0,0,39,15118,1101,91457,0,66,1102,1,1,67,1102,1733,1,68,1102,1,556,69,1101,0,2,71,1102,1,1735,72,1106,0,73,1,37,22,202954,1,236091,1102,1,65167,66,1101,0,1,67,1102,1766,1,68,1101,556,0,69,1102,1,1,71,1101,1768,0,72,1106,0,73,1,-114,40,40191,1101,5591,0,66,1101,1,0,67,1101,1797,0,68,1101,556,0,69,1102,1,1,71,1102,1,1799,72,1106,0,73,1,1093,40,13397,1102,1,7559,66,1102,1,2,67,1101,0,1828,68,1101,302,0,69,1101,1,0,71,1102,1832,1,72,1106,0,73,0,0,0,0,13,26561,1101,76667,0,66,1102,1,1,67,1101,0,1861,68,1101,0,556,69,1102,1,1,71,1102,1863,1,72,1105,1,73,1,6563,19,59883,1102,1,57791,66,1101,4,0,67,1102,1,1892,68,1102,302,1,69,1102,1,1,71,1101,0,1900,72,1105,1,73,0,0,0,0,0,0,0,0,18,52769,1102,1,23687,66,1101,0,1,67,1101,1929,0,68,1102,1,556,69,1101,0,0,71,1102,1931,1,72,1106,0,73,1,1806,1102,35869,1,66,1102,1,1,67,1101,1958,0,68,1101,0,556,69,1101,3,0,71,1101,0,1960,72,1106,0,73,1,5,31,56659,31,169977,23,188907,1101,63199,0,66,1101,1,0,67,1102,1993,1,68,1102,556,1,69,1101,1,0,71,1101,0,1995,72,1105,1,73,1,21,22,405908,1102,19961,1,66,1101,3,0,67,1101,0,2024,68,1101,302,0,69,1101,1,0,71,1101,0,2030,72,1105,1,73,0,0,0,0,0,0,10,161877,1102,65579,1,66,1101,1,0,67,1102,1,2059,68,1101,0,556,69,1101,1,0,71,1101,2061,0,72,1106,0,73,1,421,11,173373,1101,44279,0,66,1102,1,1,67,1102,1,2090,68,1102,556,1,69,1101,0,0,71,1101,2092,0,72,1106,0,73,1,1762,1102,1,60353,66,1101,0,1,67,1101,2119,0,68,1101,0,556,69,1101,0,0,71,1101,0,2121,72,1106,0,73,1,1423,1102,1,70573,66,1102,1,1,67,1102,1,2148,68,1101,0,556,69,1101,2,0,71,1102,2150,1,72,1106,0,73,1,10,31,113318,23,125938,1101,40277,0,66,1101,0,1,67,1101,0,2181,68,1101,0,556,69,1101,0,1,71,1102,1,2183,72,1105,1,73,1,-34,37,21673,1101,0,50957,66,1102,1,1,67,1101,2212,0,68,1101,556,0,69,1102,1,1,71,1101,2214,0,72,1105,1,73,1,125,31,226636,1102,91961,1,66,1101,0,1,67,1101,2243,0,68,1101,0,556,69,1101,1,0,71,1102,2245,1,72,1106,0,73,1,-21,2,45569 \ No newline at end of file diff --git a/src/main/resources/2019/day24.txt b/src/main/resources/2019/day24.txt new file mode 100644 index 00000000..feaf92c5 --- /dev/null +++ b/src/main/resources/2019/day24.txt @@ -0,0 +1,5 @@ +##.#. +#..#. +..... +....# +#.### \ No newline at end of file diff --git a/src/main/resources/2019/day25.txt b/src/main/resources/2019/day25.txt new file mode 100644 index 00000000..6a04e22b --- /dev/null +++ b/src/main/resources/2019/day25.txt @@ -0,0 +1 @@ +109,4808,21101,0,3124,1,21102,1,13,0,1106,0,1424,21101,166,0,1,21102,24,1,0,1105,1,1234,21101,31,0,0,1105,1,1984,1106,0,13,6,4,3,2,52,51,21,4,28,56,55,3,19,-9,-10,47,89,88,90,90,6,77,73,85,71,1,76,68,63,65,22,-27,70,76,81,87,5,105,105,107,108,95,4,97,92,109,109,5,110,105,110,108,95,4,115,96,109,109,13,-3,59,101,85,92,97,13,84,80,92,78,34,-15,26,-16,46,88,72,79,84,0,72,76,-3,85,74,79,75,-8,64,68,75,57,65,70,64,66,72,8,-41,32,-22,56,77,82,-4,60,76,62,70,-2,74,-11,55,52,68,67,73,56,60,52,-20,44,56,66,-24,48,58,42,49,54,-16,-53,10,0,56,99,96,95,82,94,83,45,-9,23,-13,61,85,88,74,71,82,73,79,73,89,67,65,-4,62,73,70,69,56,68,57,2,-35,24,-14,64,85,90,4,70,67,79,7,83,-2,68,75,-5,78,65,57,75,-10,76,53,76,0,-37,31,-21,57,78,83,-3,64,74,72,0,76,-9,73,58,57,-13,70,57,49,67,-18,54,64,48,55,-23,48,44,56,42,-14,-51,14,-4,74,95,100,14,97,77,86,79,9,92,79,75,5,27,-17,61,82,87,1,68,78,76,4,80,-5,66,58,78,60,-10,73,60,52,70,-15,57,67,51,58,-6,-43,14,-4,74,95,100,14,81,94,90,90,9,92,79,75,5,60,-50,23,42,38,-32,38,39,30,42,47,-38,30,36,28,25,41,38,34,31,18,23,29,19,33,-52,20,29,-55,27,27,27,8,15,-61,22,16,-64,24,13,18,-54,-69,-70,-14,7,12,-74,-8,-11,1,-71,5,-80,-4,-3,3,-15,-84,-85,-109,29,-19,59,80,85,-1,82,62,71,64,-6,77,64,60,-10,62,66,57,59,63,57,67,51,-19,56,58,57,57,-10,-47,44,-34,39,58,54,-16,60,61,57,64,48,56,-23,52,40,60,38,-28,44,53,-31,55,32,55,-35,48,42,41,-39,32,38,42,-42,-44,12,33,38,-48,28,19,25,32,-52,-76,-77,59,-49,13,55,-30,42,51,-33,49,50,32,31,31,39,36,48,-42,24,35,32,34,29,21,35,19,25,37,-53,14,10,26,18,-57,-59,-3,18,23,-63,1,17,3,-67,1,-4,14,-2,6,-73,-8,14,-76,-12,-78,-40,2,4,-13,-82,-106,-107,35,-25,53,74,79,0,74,60,-10,65,53,72,64,52,56,52,50,-19,53,57,62,56,-24,58,54,38,39,40,-29,-31,2,56,35,-34,-58,-59,138,-128,-74,-108,-33,-31,-26,-44,-101,-114,-33,-37,-51,-39,-35,-47,-54,-122,-37,-45,-52,-59,-58,-128,-46,-65,-42,-49,-133,-132,-102,-60,-68,-56,-55,-139,-141,-106,-61,-65,-72,-78,-64,-148,-70,-72,-151,-68,-81,-81,-72,-156,-74,-86,-86,-80,-161,-97,-81,-95,-165,-94,-98,-103,-83,-97,-102,-90,-173,-90,-103,-111,-99,-178,-95,-108,-112,-182,-115,-115,-101,-117,-120,-104,-120,-122,-191,-106,-128,-118,-110,-127,-196,-196,-199,-135,-123,-134,-203,-115,-126,-121,-207,-143,-127,-141,-211,-143,-139,-145,-148,-132,-148,-150,-219,-154,-156,-155,-148,-224,-141,-147,-227,-144,-157,-161,-231,-165,-161,-165,-168,-161,-157,-159,-166,-162,-157,-228,-265,138,-128,-74,-108,-33,-31,-26,-44,-101,-114,-33,-37,-51,-39,-35,-47,-54,-122,-37,-45,-52,-59,-58,-128,-46,-65,-42,-49,-133,-132,-102,-60,-68,-56,-55,-139,-141,-106,-61,-65,-72,-78,-64,-148,-70,-72,-151,-68,-81,-81,-72,-156,-74,-86,-86,-80,-161,-97,-81,-95,-165,-90,-94,-97,-97,-86,-102,-90,-173,-90,-103,-111,-99,-178,-95,-108,-112,-182,-115,-115,-101,-117,-120,-104,-120,-122,-191,-106,-128,-118,-110,-127,-196,-196,-199,-135,-123,-134,-203,-115,-126,-121,-207,-143,-127,-141,-211,-143,-139,-145,-148,-132,-148,-150,-219,-154,-156,-155,-148,-224,-141,-147,-227,-144,-157,-161,-231,-165,-161,-165,-168,-161,-157,-159,-166,-162,-157,-228,-265,263,-253,-199,-233,-158,-156,-151,-169,-226,-239,-158,-162,-176,-164,-160,-172,-179,-247,-162,-170,-177,-184,-183,-253,-171,-190,-167,-174,-258,-257,-227,-183,-197,-187,-175,-182,-193,-184,-268,-202,-191,-194,-192,-197,-205,-191,-207,-276,-278,-222,-201,-196,-282,-206,-219,-196,-286,-207,-206,-210,-223,-222,-223,-225,-280,-293,-296,-232,-220,-231,-300,-212,-223,-218,-304,-236,-228,-223,-239,-227,-310,-227,-240,-244,-314,-248,-237,-250,-243,-239,-247,-237,-308,-345,-273,-260,-248,-243,-263,-329,-252,-252,-248,-260,-267,-266,-253,-337,-249,-260,-255,-259,-342,-260,-267,-280,-270,-271,-348,-281,-268,-272,-279,-285,-342,-355,-280,-278,-279,-284,-277,-361,-282,-278,-274,-275,-290,-298,-300,-369,-300,-292,-290,-373,-309,-375,-299,-298,-301,-310,-302,-297,-370,-383,-302,-316,-321,-311,-315,-299,-321,-308,-392,-306,-322,-330,-312,-397,-326,-334,-317,-401,-330,-338,-324,-325,-337,-329,-339,-341,-398,-411,-347,-335,-346,-415,-334,-352,-350,-346,-341,-338,-422,-334,-345,-340,-344,-427,-345,-357,-357,-351,-432,-365,-361,-353,-367,-370,-354,-363,-351,-427,-464,-441,-397,-373,-434,-447,-376,-380,-374,-375,-373,-452,-454,-398,-377,-372,-458,-376,-388,-382,-377,-387,-396,-465,-400,-398,-468,-404,-404,-395,-403,-473,-390,-396,-476,-406,-409,-395,-480,-408,-404,-483,-418,-396,-486,-403,-399,-409,-417,-413,-421,-493,37,-5,73,71,-8,75,62,58,-12,62,55,74,64,48,50,-19,45,63,-22,61,48,44,-26,50,37,44,48,-31,33,40,48,41,43,30,37,-25,-38,-63,0,0,109,7,21102,0,1,-2,22208,-2,-5,-1,1205,-1,1169,22202,-2,-4,1,22201,1,-6,1,22101,0,-2,2,21101,0,1162,0,2105,1,-3,21201,-2,1,-2,1106,0,1136,109,-7,2106,0,0,109,6,2101,0,-5,1181,21001,0,0,-2,21101,0,0,-3,21201,-5,1,-5,22208,-3,-2,-1,1205,-1,1229,2201,-5,-3,1205,20101,0,0,1,21202,-3,1,2,21201,-2,0,3,21102,1,1222,0,2106,0,-4,21201,-3,1,-3,1106,0,1192,109,-6,2106,0,0,109,2,22101,0,-1,1,21102,1,1256,2,21101,1251,0,0,1105,1,1174,109,-2,2105,1,0,109,5,22201,-4,-3,-1,22201,-2,-1,-1,204,-1,109,-5,2105,1,0,109,3,1201,-2,0,1280,1006,0,1303,104,45,104,32,1201,-1,66,1291,21001,0,0,1,21102,1301,1,0,1106,0,1234,104,10,109,-3,2106,0,0,0,0,109,2,2101,0,-1,1309,1102,1,0,1308,21102,4601,1,1,21101,0,13,2,21101,0,4,3,21101,0,1353,4,21101,0,1343,0,1105,1,1130,21002,1308,1,-1,109,-2,2105,1,0,69,109,3,2101,0,-2,1360,20008,0,1309,-1,1206,-1,1419,1005,1308,1398,1101,1,0,1308,21008,1309,-1,-1,1206,-1,1387,21102,106,1,1,1106,0,1391,21102,92,1,1,21101,1398,0,0,1106,0,1234,104,45,104,32,1201,-2,1,1408,20101,0,0,1,21102,1,1417,0,1105,1,1234,104,10,109,-3,2105,1,0,109,3,2101,0,-2,1128,21102,1,34,1,21102,1,1441,0,1105,1,1234,1001,1128,0,1447,20102,1,0,1,21102,1456,1,0,1106,0,1234,21102,1,41,1,21101,0,1467,0,1106,0,1234,1001,1128,1,1473,20101,0,0,1,21102,1,1482,0,1105,1,1234,21101,46,0,1,21101,0,1493,0,1106,0,1234,21001,1128,3,1,21101,0,4,2,21102,1,1,3,21101,0,1273,4,21101,1516,0,0,1105,1,1130,20102,1,1128,1,21102,1527,1,0,1106,0,1310,1001,1128,2,1532,21002,0,1,-1,1206,-1,1545,21101,0,1545,0,2106,0,-1,109,-3,2105,1,0,109,0,99,109,2,1101,0,0,1550,21102,1,4601,1,21101,13,0,2,21101,0,4,3,21101,0,1664,4,21101,1582,0,0,1106,0,1130,2,2486,1352,1551,1101,0,0,1552,20102,1,1550,1,21102,33,1,2,21102,1,1702,3,21102,1609,1,0,1105,1,2722,21007,1552,0,-1,1205,-1,1630,20107,0,1552,-1,1205,-1,1637,21102,1,1630,0,1105,1,1752,21102,1,548,1,1105,1,1641,21102,687,1,1,21102,1,1648,0,1106,0,1234,21102,4457,1,1,21101,0,1659,0,1106,0,1424,109,-2,2105,1,0,109,4,21202,-2,-1,-2,1202,-3,1,1675,21008,0,-1,-1,1206,-1,1697,1201,-3,2,1687,20101,-27,0,-3,22201,-3,-2,-3,2001,1550,-3,1550,109,-4,2106,0,0,109,5,21008,1552,0,-1,1206,-1,1747,1201,-3,1901,1716,21002,0,1,-2,1205,-4,1736,20207,-2,1551,-1,1205,-1,1747,1102,-1,1,1552,1106,0,1747,22007,1551,-2,-1,1205,-1,1747,1101,0,1,1552,109,-5,2106,0,0,109,1,21102,1,826,1,21102,1,1765,0,1106,0,1234,21001,1550,0,1,21101,1776,0,0,1105,1,2863,21101,0,1090,1,21102,1787,1,0,1105,1,1234,99,1105,1,1787,109,-1,2105,1,0,109,1,21101,0,512,1,21102,1809,1,0,1105,1,1234,99,1105,1,1809,109,-1,2105,1,0,109,1,1102,1,1,1129,109,-1,2105,1,0,109,1,21102,1,377,1,21101,0,1842,0,1105,1,1234,1106,0,1831,109,-1,2105,1,0,109,1,21101,0,407,1,21101,1863,0,0,1106,0,1234,99,1105,1,1863,109,-1,2106,0,0,109,1,21101,0,452,1,21102,1885,1,0,1106,0,1234,99,1105,1,1885,109,-1,2105,1,0,1941,1947,1953,1958,1965,1972,1978,3080,3033,2925,3168,2951,2970,2941,3583,3044,3158,3308,3354,3115,3611,2912,2916,3243,3443,3533,3336,2836,3353,2959,3277,3431,3142,3355,3272,3557,3069,3397,3052,3368,2281,2468,2418,2450,2487,2125,2505,5,95,108,104,104,23,5,96,91,108,108,1,4,101,105,112,3,6,104,104,106,107,94,-1,6,109,104,109,107,94,-1,5,111,91,100,93,23,5,114,95,108,108,1,109,3,21101,0,1993,0,1106,0,2634,1006,1129,2010,21102,1,316,1,21102,1,2007,0,1105,1,1234,1105,1,2076,21102,0,1,-1,1201,-1,1894,2020,20101,0,0,1,21101,0,0,2,21101,0,0,3,21102,2037,1,0,1106,0,2525,1206,1,2054,1201,-1,1934,2050,21101,2051,0,0,105,1,0,1105,1,2076,21201,-1,1,-1,21207,-1,7,-2,1205,-2,2014,21102,177,1,1,21101,0,2076,0,1105,1,1234,109,-3,2105,1,0,109,3,2001,1128,-2,2089,20102,1,0,-1,1205,-1,2108,21102,201,1,1,21102,2105,1,0,1105,1,1234,1105,1,2119,21202,-1,1,1,21101,0,2119,0,1106,0,1424,109,-3,2105,1,0,0,109,1,1102,0,1,2124,21101,4601,0,1,21101,13,0,2,21102,1,4,3,21102,1,2173,4,21102,1,2154,0,1105,1,1130,1005,2124,2168,21102,226,1,1,21101,0,2168,0,1106,0,1234,109,-1,2105,1,0,109,3,1005,2124,2275,1201,-2,0,2183,20008,0,1128,-1,1206,-1,2275,1201,-2,1,2195,20102,1,0,-1,22102,1,-1,1,21102,5,1,2,21102,1,1,3,21101,2216,0,0,1105,1,2525,1206,1,2275,21101,0,258,1,21101,0,2230,0,1105,1,1234,22102,1,-1,1,21101,2241,0,0,1106,0,1234,104,46,104,10,1102,1,1,2124,1201,-2,0,2256,1102,1,-1,0,1201,-2,3,2263,20101,0,0,-1,1206,-1,2275,21102,1,2275,0,2106,0,-1,109,-3,2105,1,0,0,109,1,1102,0,1,2280,21102,4601,1,1,21102,1,13,2,21101,0,4,3,21101,0,2329,4,21102,2310,1,0,1105,1,1130,1005,2280,2324,21102,273,1,1,21102,2324,1,0,1106,0,1234,109,-1,2105,1,0,109,3,1005,2280,2413,1201,-2,0,2339,21008,0,-1,-1,1206,-1,2413,1201,-2,1,2350,21002,0,1,-1,22102,1,-1,1,21101,0,5,2,21102,1,1,3,21101,2372,0,0,1106,0,2525,1206,1,2413,21101,301,0,1,21101,0,2386,0,1106,0,1234,22102,1,-1,1,21101,0,2397,0,1106,0,1234,104,46,104,10,1101,0,1,2280,1201,-2,0,2412,1002,1128,1,0,109,-3,2105,1,0,109,1,21102,-1,1,1,21101,0,2431,0,1105,1,1310,1205,1,2445,21102,133,1,1,21102,2445,1,0,1106,0,1234,109,-1,2105,1,0,109,1,21102,1,3,1,21101,2463,0,0,1106,0,2081,109,-1,2106,0,0,109,1,21101,4,0,1,21101,2481,0,0,1106,0,2081,109,-1,2106,0,0,51,109,1,21101,0,5,1,21102,1,2500,0,1105,1,2081,109,-1,2106,0,0,109,1,21101,0,6,1,21102,1,2518,0,1105,1,2081,109,-1,2106,0,0,0,0,109,5,1201,-3,0,2523,1102,1,1,2524,22102,1,-4,1,21101,0,2585,2,21101,0,2550,0,1106,0,1174,1206,-2,2576,2102,1,-4,2558,2001,0,-3,2566,101,3094,2566,2566,21008,0,-1,-1,1205,-1,2576,1101,0,0,2524,21002,2524,1,-4,109,-5,2105,1,0,109,5,22201,-4,-3,-4,22201,-4,-2,-4,21208,-4,10,-1,1206,-1,2606,21101,0,-1,-4,201,-3,2523,2615,1001,2615,3094,2615,21002,0,1,-1,22208,-4,-1,-1,1205,-1,2629,1102,1,0,2524,109,-5,2106,0,0,109,4,21102,1,3094,1,21102,1,30,2,21102,1,1,3,21101,2706,0,4,21101,2659,0,0,1106,0,1130,21102,0,1,-3,203,-2,21208,-2,10,-1,1205,-1,2701,21207,-2,0,-1,1205,-1,2663,21207,-3,29,-1,1206,-1,2663,2101,3094,-3,2693,2102,1,-2,0,21201,-3,1,-3,1105,1,2663,109,-4,2105,1,0,109,2,1202,-1,1,2715,1102,1,-1,0,109,-2,2105,1,0,0,109,5,2101,0,-2,2721,21207,-4,0,-1,1206,-1,2739,21101,0,0,-4,22101,0,-4,1,22101,0,-3,2,21102,1,1,3,21102,2758,1,0,1105,1,2763,109,-5,2105,1,0,109,6,21207,-4,1,-1,1206,-1,2786,22207,-5,-3,-1,1206,-1,2786,22102,1,-5,-5,1106,0,2858,22101,0,-5,1,21201,-4,-1,2,21202,-3,2,3,21102,1,2805,0,1106,0,2763,22102,1,1,-5,21102,1,1,-2,22207,-5,-3,-1,1206,-1,2824,21102,1,0,-2,22202,-3,-2,-3,22107,0,-4,-1,1206,-1,2850,21202,-2,1,1,21201,-4,-1,2,21101,0,2850,0,105,1,2721,21202,-3,-1,-3,22201,-5,-3,-5,109,-6,2106,0,0,109,3,21208,-2,0,-1,1205,-1,2902,21207,-2,0,-1,1205,-1,2882,1105,1,2888,104,45,21202,-2,-1,-2,22101,0,-2,1,21102,1,2899,0,1106,0,2909,1106,0,2904,104,48,109,-3,2105,1,0,109,4,21201,-3,0,1,21102,1,10,2,21101,2926,0,0,1106,0,3010,22101,0,1,-2,21201,2,0,-1,1206,-2,2948,22102,1,-2,1,21102,2948,1,0,1106,0,2909,22101,48,-1,-1,204,-1,109,-4,2106,0,0,1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,262144,524288,1048576,2097152,4194304,8388608,16777216,33554432,67108864,134217728,268435456,536870912,1073741824,2147483648,4294967296,8589934592,17179869184,34359738368,68719476736,137438953472,274877906944,549755813888,1099511627776,2199023255552,4398046511104,8796093022208,17592186044416,35184372088832,70368744177664,140737488355328,281474976710656,562949953421312,1125899906842624,109,8,21102,0,1,-4,21102,1,0,-3,21101,0,51,-2,21201,-2,-1,-2,1201,-2,2959,3033,21001,0,0,-1,21202,-3,2,-3,22207,-7,-1,-5,1205,-5,3059,21201,-3,1,-3,22102,-1,-1,-5,22201,-7,-5,-7,22207,-3,-6,-5,1205,-5,3078,22102,-1,-6,-5,22201,-3,-5,-3,22201,-1,-4,-4,1205,-2,3024,21201,-4,0,-7,22102,1,-3,-6,109,-8,2105,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3131,3143,0,0,0,0,3252,11,61,105,95,94,17,50,97,83,78,79,83,108,-19,2,7,-79,-9,-2,2,-83,-11,-7,-86,-3,-16,-7,-11,-6,-21,-21,-94,-30,-96,-25,-19,-23,-31,-101,-29,-25,-104,-21,-34,-38,-108,-39,-34,-32,-33,-31,-114,-43,-47,-35,-49,-105,-120,-69,-43,-123,-49,-56,-57,-47,-128,-40,-51,-46,-50,-133,-51,-63,-63,-57,-138,-69,-58,-62,-65,-143,-79,-69,-63,-68,-148,-79,-68,-82,-83,-63,-81,-77,-85,-145,-158,-75,-88,-92,-162,-91,-85,-89,-97,-167,-96,-104,-87,-171,-106,-104,-105,-97,-176,-94,-109,-114,-104,-112,-114,-169,3259,3267,0,0,3124,0,3302,7,76,108,88,88,97,89,102,34,48,66,69,73,62,62,61,73,3,72,61,77,55,53,-2,-17,34,53,49,68,-15,59,45,-25,39,49,48,-29,39,46,48,51,55,-21,3309,3321,0,0,3252,3583,3382,11,68,86,102,87,99,102,80,98,92,94,100,60,24,43,39,51,37,-33,31,47,33,-37,27,-39,30,28,45,-43,40,24,30,22,35,18,29,29,17,30,-27,-55,28,15,11,30,-53,21,7,-63,1,11,10,-67,-2,10,6,13,-3,-5,-74,-7,3,10,0,-67,-80,3,-10,-4,1,-14,-14,-73,3389,3403,0,0,3302,3852,3439,13,54,100,86,103,15,63,98,77,93,94,78,90,90,35,49,68,64,-6,59,61,59,73,-11,53,69,55,-15,49,59,58,-19,64,58,57,-23,59,52,39,49,48,-29,40,48,50,-33,55,44,49,-23,3446,3455,0,0,3382,3528,3780,8,75,96,89,96,20,53,83,106,72,11,44,38,37,35,37,38,36,-48,17,29,33,20,-53,-4,14,12,-44,-12,20,23,8,6,-63,-14,4,7,11,0,0,-1,11,-72,4,-5,-7,-3,-10,-5,-1,-11,-81,-17,-5,-16,-85,-4,-18,-17,-4,-14,-26,-10,-93,-12,-26,-23,-19,-30,-30,-31,-19,-102,-26,-35,-37,-33,-40,-35,-31,-41,-97,3535,3542,0,3439,0,0,4064,6,59,107,91,88,90,90,40,38,70,68,58,-12,66,56,-15,68,55,51,-19,47,44,44,50,54,44,58,56,-28,54,39,38,45,-33,50,44,-36,35,27,47,29,-41,38,36,43,24,36,-33,3590,3598,0,3302,3916,3625,0,7,68,97,107,89,93,89,97,26,43,91,73,85,91,85,72,72,76,68,3,78,-6,63,74,60,59,79,57,0,54,67,57,52,50,-5,3632,3643,0,3583,0,3721,3989,10,68,86,106,92,89,82,100,88,93,91,77,6,38,18,36,36,33,-25,-52,-2,30,27,9,21,10,10,8,-47,-62,-15,12,4,-1,16,1,-69,13,14,8,7,2,14,-76,0,-9,-14,3,4,0,-14,-7,-16,-8,-3,-5,-89,-20,-9,-13,-16,-94,-25,-23,-27,-14,-10,-100,-18,-18,-38,-22,-22,-106,-23,-29,-109,-28,-42,-45,-48,-38,-42,-50,-35,-53,-35,-51,-107,3728,3751,0,3625,0,0,0,22,50,88,92,7,41,77,83,70,81,77,65,83,67,-3,34,74,79,71,76,56,63,67,28,55,82,79,70,72,78,85,9,-4,68,78,0,75,-9,73,73,61,63,62,-15,71,62,64,56,53,57,49,-9,3787,3796,0,0,3439,0,0,8,72,88,105,104,85,90,87,100,55,29,48,44,63,-20,54,40,-30,34,-32,43,39,49,48,39,31,-39,44,46,31,40,40,44,-46,18,30,19,-50,32,32,12,28,29,17,21,13,-59,24,18,-62,13,15,14,9,-67,-3,7,6,-71,-7,3,-1,0,-7,-63,3859,3867,0,3382,0,0,0,7,76,108,102,104,86,91,88,48,36,55,51,-19,46,58,66,46,59,-25,48,58,55,55,-30,36,47,45,50,30,37,41,-38,38,39,41,27,-43,22,34,42,22,35,-35,-50,-51,-2,16,13,30,26,26,15,27,9,15,27,-49,3923,3932,0,4200,4129,0,3583,8,64,102,98,100,88,88,85,92,56,27,54,51,42,51,49,39,-31,51,36,35,42,47,-37,46,40,-40,31,23,43,25,-45,30,22,22,35,-50,22,32,-53,25,23,-56,27,14,10,-60,-22,11,2,14,19,-66,-28,14,4,-2,-71,11,-4,10,9,-3,1,-7,-65,3996,4008,0,0,3625,0,0,11,72,87,92,87,95,83,84,14,57,77,77,55,34,55,60,-26,56,41,40,-30,38,54,40,34,34,42,30,31,-39,32,28,40,26,-44,34,24,-47,32,33,29,33,27,31,35,25,13,-57,22,20,16,28,15,6,18,-65,2,2,15,4,1,7,-72,14,5,7,-1,-63,4071,4094,0,0,3528,0,0,22,65,74,90,87,6,41,86,76,88,70,0,44,63,70,74,79,63,71,57,69,57,58,34,39,81,-4,60,74,73,61,56,72,72,-12,71,65,-15,50,52,-18,68,59,61,53,50,54,46,-26,51,51,53,47,34,44,43,55,-21,4136,4148,0,4388,0,4292,3916,11,58,98,90,91,95,85,84,96,86,90,82,51,38,59,64,-22,60,45,44,-26,38,-28,58,42,42,52,36,32,44,29,45,30,-39,47,32,42,29,-44,35,30,18,30,34,-50,19,27,29,-54,-4,24,25,15,19,11,7,20,16,9,3,-66,19,-50,-55,4207,4215,0,0,0,3916,0,7,65,89,99,98,108,85,108,76,8,27,27,36,-48,16,32,18,13,-53,18,10,27,-57,8,10,9,17,-62,16,16,19,7,10,5,21,-1,-3,-72,-3,5,7,-76,6,1,-2,-11,3,-10,-10,-6,-14,-59,-87,1,-10,-5,-84,-10,-24,-94,-21,-11,-14,-14,-99,-22,-22,-18,-103,-23,-20,-33,-23,-39,-109,-27,-26,-30,-44,-114,-28,-44,-52,-34,-105,4299,4308,0,4129,0,0,0,8,59,102,104,103,93,87,97,99,79,5,24,20,-50,26,17,31,11,21,-56,30,7,17,16,22,-62,2,14,3,-66,17,4,0,-70,6,-3,11,-9,1,-76,-7,-2,0,-1,1,-82,-18,-2,-16,-86,-4,-12,-16,-19,-19,-8,-17,-5,-95,-28,-24,-28,-29,-31,-19,-33,-25,-20,-105,-39,-28,-32,-30,-28,-28,-98,-113,-67,-33,-116,-52,-36,-50,-120,-37,-50,-54,-35,-94,4395,4416,0,0,4457,4129,0,20,51,84,80,93,8,62,88,70,84,83,75,79,71,-1,33,66,74,79,63,75,40,32,70,77,-11,57,63,69,54,-16,51,61,-19,69,58,63,-23,63,57,39,53,-28,51,52,38,51,36,44,49,47,-37,41,39,-40,43,30,26,-44,26,33,-16,4464,4484,0,4556,0,0,4388,19,64,81,78,95,91,81,91,95,5,39,75,71,68,75,79,77,70,74,79,71,2,38,-41,42,29,25,-45,32,22,40,35,-50,31,27,26,23,-43,-56,8,-58,21,22,8,21,20,21,17,3,-54,15,0,8,12,1,11,-1,11,-7,-77,-8,-3,-1,-2,0,-83,3,-12,-10,-11,-88,-3,-21,-9,-19,-23,-5,-95,-7,-18,-13,-17,-100,-28,-34,-34,-26,-21,-33,-23,-19,-95,4563,4588,1553,0,0,4457,0,24,56,89,75,88,87,88,84,70,13,50,67,75,79,68,78,66,78,60,-10,27,64,66,65,67,12,53,97,83,93,105,105,87,91,83,25,24,23,4292,4653,27,1850,3989,4665,28,1829,3382,4679,16413,0,3439,4691,46,0,4064,4703,536870943,0,4200,4719,32,1796,3252,4730,33554465,0,3583,4744,34,1818,3302,4764,524323,0,3916,4774,292,0,4129,4779,37,1872,3721,4787,102,0,3780,4795,41,0,11,98,99,95,102,86,94,15,90,78,98,76,13,92,96,87,89,93,87,97,81,11,86,88,87,87,11,91,99,98,86,17,98,80,98,86,91,89,11,91,93,107,87,85,16,95,93,86,90,95,15,104,85,80,98,85,81,93,10,86,73,74,78,78,82,72,10,91,104,87,84,98,86,16,95,93,81,13,102,87,94,89,82,93,91,80,96,77,93,87,89,19,84,85,76,88,93,8,76,82,74,71,87,84,80,77,64,69,75,65,79,9,103,98,86,98,88,102,96,89,83,4,95,106,99,103,7,105,96,102,106,100,98,102,7,105,103,96,100,105,89,101,12,95,95,87,90,94,15,80,92,96,95,86,78 \ No newline at end of file diff --git a/src/main/resources/2019/day3.txt b/src/main/resources/2019/day3.txt new file mode 100644 index 00000000..e50c4981 --- /dev/null +++ b/src/main/resources/2019/day3.txt @@ -0,0 +1,2 @@ +R991,U77,L916,D26,R424,D739,L558,D439,R636,U616,L364,D653,R546,U909,L66,D472,R341,U906,L37,D360,L369,D451,L649,D521,R2,U491,R409,U801,R23,U323,L209,U171,L849,D891,L854,U224,R476,D519,L937,U345,R722,D785,L312,D949,R124,U20,R677,D236,R820,D320,L549,D631,R42,U621,R760,U958,L925,U84,R914,U656,R598,D610,R397,D753,L109,U988,R435,U828,R219,U583,L317,D520,L940,D850,R594,D801,L422,U292,R883,U204,L76,U860,L753,U483,L183,U179,R441,U163,L859,U437,L485,D239,R454,D940,R689,D704,R110,D12,R370,D413,L192,D979,R990,D651,L308,U177,R787,D717,R245,U689,R11,D509,L680,U228,L347,D179,R508,D40,L502,U689,L643,U45,R884,D653,L23,D918,L825,D312,L691,U292,L285,D183,R997,U427,L89,U252,R475,U217,R16,U749,L578,D931,L273,U509,L741,U97,R407,U275,L605,U136,L558,U318,R478,U505,R446,U295,R562,D646,R988,D254,L68,U645,L953,U916,L442,D713,R978,U540,R447,U594,L804,U215,R95,D995,R818,D237,R212,U664,R455,D684,L338,U308,R463,D985,L988,D281,R758,U510,L232,U509,R289,D90,R65,D46,R886,D741,L327,U755,R236,U870,L764,U60,R391,U91,R367,U587,L651,D434,L47,U954,R707,D336,L242,D387,L410,D19,R203,D703,L228,U292,L19,U916,R411,U421,L726,U543,L240,U755,R157,U836,L397,U71,L125,D934,L723,D145,L317,D229,R863,U941,L926,D55,L2,D452,R895,D670,L216,U504,R66,U696,L581,U75,L235,U88,L609,U415,L850,U21,L109,U416,R408,D367,R823,D199,L718,U136,L860,U780,L308,D312,R230,D671,R477,D672,L94,U307,R301,D143,L300,D792,L593,D399,R840,D225,R680,D484,L646,D917,R132,D213,L779,D143,L176,U673,L772,D93,L10,D624,L244,D993,R346 +L997,U989,L596,U821,L419,U118,R258,D239,R902,D810,R553,D271,R213,D787,R723,D57,L874,D556,R53,U317,L196,D813,R500,U151,R180,D293,L415,U493,L99,U482,R517,U649,R102,U860,R905,D499,R133,D741,R394,U737,L903,U800,R755,D376,L11,U751,R539,U33,R539,U30,L534,D631,L714,U190,L446,U409,R977,D731,R282,U244,R29,D212,L523,D570,L89,D327,R178,U970,R435,U250,R213,D604,R64,D348,R315,D994,L508,D261,R62,D50,L347,U183,R410,D627,L128,U855,L803,D695,L879,U857,L629,D145,L341,D733,L566,D626,L302,U236,L55,U428,R183,U254,R226,D228,R616,U137,L593,U204,R620,U624,R605,D705,L263,D568,R931,D464,R989,U621,L277,U274,L137,U768,L261,D360,L45,D110,R35,U212,L271,D318,L444,D427,R225,D380,L907,D193,L118,U741,L101,D298,R604,D598,L98,U458,L733,U511,L82,D173,L644,U803,R926,D610,R24,D170,L198,U766,R656,D474,L393,D934,L789,U92,L889,U460,L232,U193,L877,D380,L455,D526,R899,D696,R452,U95,L828,D720,R370,U664,L792,D204,R84,D749,R808,U132,L152,D375,R19,U164,L615,D121,R644,D289,R381,U126,L304,U508,L112,D268,L572,D838,L998,U127,R500,D344,R694,U451,L846,D565,R158,U47,L430,U214,R571,D983,R690,D227,L107,U109,L286,D66,L544,U205,L453,U716,L36,U672,L517,U878,L487,U936,L628,U253,R424,D409,R422,U636,R412,U553,R59,D332,R7,U495,L305,D939,L428,D821,R749,D195,R531,D898,R337,D303,L398,D625,R57,D503,L699,D553,L478,U716,R897,D3,R420,U903,R994,U864,L745,U205,R229,U126,L227,D454,R670,U605,L356,U499,R510,U238,L542,D440,R156,D512,L237,D341,L439,U642,R873,D650,R871,D616,R322,U696,R248,D746,R990,U829,R812,U294,L462,U740,R780 \ No newline at end of file diff --git a/src/main/resources/2019/day4.txt b/src/main/resources/2019/day4.txt new file mode 100644 index 00000000..4ef936f1 --- /dev/null +++ b/src/main/resources/2019/day4.txt @@ -0,0 +1 @@ +372037-905157 \ No newline at end of file diff --git a/src/main/resources/2019/day5.txt b/src/main/resources/2019/day5.txt new file mode 100644 index 00000000..e2f7f832 --- /dev/null +++ b/src/main/resources/2019/day5.txt @@ -0,0 +1 @@ +3,225,1,225,6,6,1100,1,238,225,104,0,1,192,154,224,101,-161,224,224,4,224,102,8,223,223,101,5,224,224,1,223,224,223,1001,157,48,224,1001,224,-61,224,4,224,102,8,223,223,101,2,224,224,1,223,224,223,1102,15,28,225,1002,162,75,224,1001,224,-600,224,4,224,1002,223,8,223,1001,224,1,224,1,224,223,223,102,32,57,224,1001,224,-480,224,4,224,102,8,223,223,101,1,224,224,1,224,223,223,1101,6,23,225,1102,15,70,224,1001,224,-1050,224,4,224,1002,223,8,223,101,5,224,224,1,224,223,223,101,53,196,224,1001,224,-63,224,4,224,102,8,223,223,1001,224,3,224,1,224,223,223,1101,64,94,225,1102,13,23,225,1101,41,8,225,2,105,187,224,1001,224,-60,224,4,224,1002,223,8,223,101,6,224,224,1,224,223,223,1101,10,23,225,1101,16,67,225,1101,58,10,225,1101,25,34,224,1001,224,-59,224,4,224,1002,223,8,223,1001,224,3,224,1,223,224,223,4,223,99,0,0,0,677,0,0,0,0,0,0,0,0,0,0,0,1105,0,99999,1105,227,247,1105,1,99999,1005,227,99999,1005,0,256,1105,1,99999,1106,227,99999,1106,0,265,1105,1,99999,1006,0,99999,1006,227,274,1105,1,99999,1105,1,280,1105,1,99999,1,225,225,225,1101,294,0,0,105,1,0,1105,1,99999,1106,0,300,1105,1,99999,1,225,225,225,1101,314,0,0,106,0,0,1105,1,99999,1108,226,226,224,102,2,223,223,1005,224,329,101,1,223,223,107,226,226,224,1002,223,2,223,1005,224,344,1001,223,1,223,107,677,226,224,102,2,223,223,1005,224,359,101,1,223,223,7,677,226,224,102,2,223,223,1005,224,374,101,1,223,223,108,226,226,224,102,2,223,223,1006,224,389,101,1,223,223,1007,677,677,224,102,2,223,223,1005,224,404,101,1,223,223,7,226,677,224,102,2,223,223,1006,224,419,101,1,223,223,1107,226,677,224,1002,223,2,223,1005,224,434,1001,223,1,223,1108,226,677,224,102,2,223,223,1005,224,449,101,1,223,223,108,226,677,224,102,2,223,223,1005,224,464,1001,223,1,223,8,226,677,224,1002,223,2,223,1005,224,479,1001,223,1,223,1007,226,226,224,102,2,223,223,1006,224,494,101,1,223,223,1008,226,677,224,102,2,223,223,1006,224,509,101,1,223,223,1107,677,226,224,1002,223,2,223,1006,224,524,1001,223,1,223,108,677,677,224,1002,223,2,223,1005,224,539,1001,223,1,223,1107,226,226,224,1002,223,2,223,1006,224,554,1001,223,1,223,7,226,226,224,1002,223,2,223,1006,224,569,1001,223,1,223,8,677,226,224,102,2,223,223,1006,224,584,101,1,223,223,1008,677,677,224,102,2,223,223,1005,224,599,101,1,223,223,1007,226,677,224,1002,223,2,223,1006,224,614,1001,223,1,223,8,677,677,224,1002,223,2,223,1005,224,629,101,1,223,223,107,677,677,224,102,2,223,223,1005,224,644,101,1,223,223,1108,677,226,224,102,2,223,223,1005,224,659,101,1,223,223,1008,226,226,224,102,2,223,223,1006,224,674,1001,223,1,223,4,223,99,226 \ No newline at end of file diff --git a/src/main/resources/2019/day6.txt b/src/main/resources/2019/day6.txt new file mode 100644 index 00000000..28f6c892 --- /dev/null +++ b/src/main/resources/2019/day6.txt @@ -0,0 +1,1294 @@ +MB5)V1S +VYJ)JRF +SLW)9YR +CPL)8KQ +Q5P)H7W +TJT)139 +PYD)XMX +4S5)K2V +RWW)JTL +HNC)81N +64N)V96 +RRM)FXW +Y8R)1C1 +VL8)M6N +G7L)RQJ +5C3)SC4 +JZL)DGX +C7B)KSS +2X5)5YY +W91)5R1 +KP8)QYY +NCL)5WX +HN9)4LZ +4Z6)15F +LHJ)B7D +S3S)J8Z +ZCW)KC1 +3TJ)2RP +J9F)SXH +SHX)WH9 +M4M)6NK +23F)Q7S +B7Y)ZM5 +M7H)D8G +N8F)K1F +5PV)SXD +HGX)5BM +LH8)C2L +XFM)ZHM +H1L)XYG +4VH)W46 +2Q8)6V5 +G41)LNT +GNY)Y8R +95L)MJC +FPR)X8M +MS4)YL4 +B8B)YL6 +6N4)SWY +B65)X7B +N15)C89 +LX4)TBZ +3W2)JRH +MVN)34C +XMX)DW8 +221)5CM +QPP)14R +SRB)7SK +3P9)MKR +DGX)6FT +GQG)T3J +JS4)XTJ +9MQ)FKR +B29)PWB +XHC)NX1 +55D)YCV +CV2)3FH +QN1)MFX +P2B)B51 +Z4D)Z2S +3MZ)GYC +LCQ)FF9 +VPZ)CV2 +Z4D)K9P +9F2)CV6 +NJS)HRR +W7Z)6CL +7NL)M9M +LJG)426 +6LP)24X +YQ7)CXX +4RB)BKC +KNW)2X5 +KCY)4D2 +2GC)GV9 +YWN)DWL +JML)131 +JHR)3G4 +KBM)BMX +GWB)S1P +LMW)2LL +DS7)8X3 +8KT)ZCW +MHT)9XZ +MV8)B7Y +VPB)KT8 +6RQ)87P +RP6)7QR +KQP)PXT +GBG)LCQ +CLY)RVF +64S)VP8 +FR9)K5X +K37)QJK +9ZB)MS1 +V6C)CXT +SC2)VJS +B45)9KK +ZH9)VWY +R17)XLS +N5Z)KWV +QWH)HY7 +2LL)79J +1DF)RT5 +MGH)XD4 +VZ3)9YW +413)17F +YL4)15X +ZJB)SHX +HGF)VN7 +4TW)TGX +3N4)SDF +KLJ)2FR +J5R)JZL +B59)WW6 +KRX)JGM +N75)78C +T4B)H2H +2VB)JG3 +7MG)4N2 +C7M)2BK +MKR)LBF +KFX)6KG +48T)844 +H1W)9XX +TGX)PN7 +GGK)22B +M8N)GNY +L6R)WVW +VRY)B15 +9YR)6RQ +QQ6)1KB +R22)STY +KC1)6RW +Q5Z)849 +XWK)VFW +GFD)C8Z +L5D)J2Y +74R)3TJ +D94)3P9 +JRH)HKV +3DZ)CFH +WKN)44S +JJC)9MQ +VKT)VBW +KT8)M7P +NH8)FDG +F7N)7MG +6RQ)RQM +V4T)ZN8 +25C)2L3 +WJW)DG9 +N5X)SRB +QZK)GLJ +WG4)K56 +844)J3V +HGX)KMR +87P)HKX +MK1)WTY +PC3)4TR +LG8)B29 +SDR)FWN +9ZM)SVT +3K3)XJ6 +WV1)G41 +NKV)36R +WFG)4M1 +WVW)1TQ +NQD)WF1 +B9Q)3YV +CTP)VZB +72S)NSM +755)X7S +MB2)JWB +GD8)HGX +3FH)Q1H +P8P)TD2 +8XK)KP8 +1B4)7LK +3WC)LXK +YZP)QZK +C72)1M6 +VZB)LZV +TC6)4RB +DH6)LJG +6XL)SKB +G52)3MZ +THK)F8F +S1P)NJK +QPG)5NF +9J8)W5V +6CJ)BY3 +F8F)L4S +L7X)4P2 +9NQ)RWW +V4V)BSC +YJW)G7F +3CK)GMH +VYR)LRM +XXP)JML +Z1S)3QH +3SH)YBF +WTY)QR4 +FZ2)BMB +JZ5)Z5Q +HDZ)2V9 +CTK)HRP +VWY)9HX +YNN)Z5F +N97)P1K +8NJ)JBK +VF7)JD2 +4GG)KC6 +8KS)YJ6 +DH2)HXL +HB3)1HK +K56)DFB +4H6)K6Y +M7P)3WC +DG9)88R +VRB)Y2X +NMZ)RRS +T3J)NQ6 +KYZ)KYX +TNN)48T +SG7)83G +JCK)QFN +5HH)1B4 +16R)C4S +CQJ)KCS +6PH)2W6 +89Q)7SB +NNK)L9J +77G)KTN +S2C)YOU +KFK)57L +LJ5)1BV +CCB)XQ8 +14R)T7Y +3W2)TYQ +KNC)KF6 +TW1)N5Z +ZCQ)8NJ +89G)5XD +Z15)SMZ +R5C)VMJ +CTJ)QWH +5NF)G52 +24X)SBP +Z4K)HN9 +6KG)BLM +66N)152 +CCX)TTM +P1X)3CM +Q7Q)KYZ +VFL)LX4 +SCT)KJ7 +5VK)R8D +MKH)RZ4 +H2H)WKN +6V5)9TW +W4G)QLS +LZV)D82 +RHL)CLG +QG8)LX2 +7S1)B7T +BY3)CMC +HBP)RD7 +9PR)FVP +72J)Y14 +PMM)8ZV +MZ8)MFN +3GD)8Y5 +ZJ3)WJW +5HZ)X2V +FYZ)G5R +WMR)WT8 +HNZ)6GW +9XX)33J +6QS)58X +11L)VWW +4LZ)MQT +MQT)PYS +BM6)YRP +658)LG8 +NGZ)1VD +HRK)ZVG +RZG)RPJ +83G)B7B +JG3)BLQ +2SG)MQ4 +B6C)4V6 +GLJ)ST5 +7MQ)P9X +3Y9)1ZB +K9P)D9Y +CJ8)LM6 +KCY)VYJ +GVY)18R +SZG)QCX +15F)S5F +35W)YST +9NQ)BYJ +VGX)8LH +WQM)2HT +QR4)ZLF +SWY)HWK +P9X)HY6 +LGH)ZJ4 +GYC)NGZ +81F)P4T +9BF)CTF +5Q1)1RC +6MR)3X6 +9HX)X83 +DBQ)C9D +1KP)9F2 +J8Z)JCK +Z5R)S2Z +B7B)KRX +ZM5)1YF +H2N)G5C +FSR)9ZM +3YV)74R +93T)MCN +5HK)MVS +V22)4Z6 +RSG)N15 +YDJ)F9N +K6Y)RSZ +3CM)169 +F2L)39W +CK4)842 +G6Q)S1W +D3H)55D +842)YCL +NXQ)L67 +KG8)NDS +LGD)2QJ +MFX)JLD +1KB)Z4D +RMW)CWB +LC2)QC1 +Q36)HTW +SG7)CJX +9BH)N34 +85F)YNF +LVD)9BH +7GL)KNC +SDF)C1Z +68R)WQC +BPW)N8F +3G4)71T +JFJ)CR2 +YFD)6CJ +Q8N)XMD +2CV)X3M +NPZ)89Q +SSK)9TP +QC1)VPZ +CML)9MV +4NC)GVY +T26)9NQ +8Y5)TDB +TTM)9PR +7ZY)3XT +MQL)PXS +LXK)2SG +FWP)LBD +CSY)C72 +FYQ)B2F +VYJ)SX8 +ZHV)6QS +KKB)1ZM +XRN)6XL +VN4)6XV +KWV)KW5 +SBP)971 +BMX)FXV +7K4)L65 +7XV)791 +DW8)RSK +9XZ)5CD +KG8)5C3 +LBD)WZ3 +7DC)T4B +1J7)XN9 +KF6)GJR +TPV)FR9 +B7T)89F +F94)KLB +3CV)49V +PN7)J89 +CLY)F2P +71Z)YZP +HRR)X9Z +1SF)QQ6 +MKR)5P3 +XLB)G3P +3XT)6FC +WSC)TR9 +1SF)8JZ +YMK)7T6 +YLW)Q9Y +LQC)FSX +971)9LV +PL3)MMV +78C)Q72 +NS8)W6M +RPW)5YW +91Q)QKC +B9B)7Q4 +Q3J)B2D +2ZP)YMK +MSS)RP6 +N6H)X4V +5P3)PHS +7LP)VXP +FJT)251 +N9G)N71 +21W)XRJ +FFT)Z22 +89F)VRY +45S)MZ8 +8J5)98X +4YF)HCN +3X6)WFG +R8D)THY +YNS)KT3 +2TZ)W6V +MFN)P6B +1HK)WSV +PXS)YQ7 +7LJ)PKH +QHG)4TW +G16)7QV +CXX)GL5 +KDN)NNT +TPS)JZ3 +X7B)RSG +6B1)JKD +CLG)ZGY +WQC)QTP +MYZ)3N4 +Y8R)KMW +YL6)45S +H25)459 +9TW)M3N +HDF)SLJ +LX2)5V6 +6SD)2ZC +KGQ)XWK +85H)7ZV +459)XGH +VWW)M4M +27C)CTP +RKV)FSR +Z5K)9L1 +2P1)6N1 +WZ3)D94 +TF1)CV3 +1YF)T3S +F87)N9D +H7Z)QPP +NDS)GP1 +GLN)R5Q +BHV)XRN +4T5)658 +QRF)HW8 +Q66)WWZ +2Q6)DWD +7T6)L9V +RVF)MXJ +RZ4)WQM +V9T)SR2 +M21)CTK +ZDW)QP4 +WF1)VRB +VXR)KFX +NHR)HDF +11P)TG5 +K2V)YGJ +NH3)V76 +VNQ)WY7 +G8P)8YY +W5C)RZG +W46)T73 +C89)N5X +2V9)5FQ +P5K)NCL +DNK)98T +FLX)MB5 +VXG)R17 +YQ7)Q36 +L67)K62 +74G)28S +X9H)L6R +JRH)CJ6 +LBJ)JHR +SX8)TF1 +RD7)3P3 +H4X)KPW +J33)BWF +R4G)VXR +XRJ)Y25 +Q7Q)GD8 +2SG)P1X +4CB)66N +VYW)FF1 +YB6)CL1 +4QG)TX6 +PKH)FYQ +JPG)LL9 +M8W)RGV +XF9)NNK +COM)Q1M +SMZ)DS7 +DNP)68R +1V4)4KY +GDN)NHR +8D1)HCL +KC6)HGF +CPS)VFL +33K)XQZ +Y14)RJ6 +H3F)77G +NMG)F7N +FWN)3GD +36R)MZ3 +MG8)VGX +6CL)352 +JM4)FRB +43X)RNH +TBW)F8R +JCZ)V22 +11Q)W7Z +N1L)RVD +Q6V)DNP +BWF)Y9G +H8D)D13 +F8R)4QR +J1X)8X4 +XFJ)N35 +QTP)869 +G3P)11Q +K9L)QYX +KN6)XHC +MWF)G6Q +KTN)SYM +XGH)8MN +QPP)W52 +G2Y)FBZ +WBX)ZQ4 +4F7)7XV +152)KGQ +CJX)L5D +JZ3)4ZT +CCB)N9G +HK7)K4Q +JGH)MGH +VN7)PH4 +M9Z)S9V +SK8)PYD +3V9)G45 +ZN8)4QG +2Q6)HLM +D13)LYH +ZQ4)D6G +SVT)SDR +PFK)QZ4 +CXT)X31 +44S)5GB +1RC)PKD +LWT)G7L +RX1)VRQ +P31)WYC +47S)NMG +C1Z)YY5 +HWK)GGK +JC5)1GW +HVX)395 +W6M)VF7 +JTL)4GD +G5C)7BN +PQL)GMS +NXQ)45D +S5S)HNZ +C12)K2D +7P9)282 +QF5)3W2 +WH4)9VJ +YNF)M8W +5V6)DX7 +XQZ)7D2 +XTJ)HM5 +HTR)9H5 +HYN)71Z +7Q4)TF3 +WH9)GF2 +1CG)Q5Z +5GB)S3S +WFF)DJT +N4C)5BJ +32D)XB5 +KLB)SC2 +15X)1C3 +GDT)W3X +1GW)CKZ +GGJ)4W8 +5BJ)H7Z +PPT)7S1 +FY4)SCM +395)3K3 +HFT)K98 +2RP)LZ4 +49V)4LH +F2T)GCL +DJR)VTW +QW3)M8N +LYH)VYW +6N1)4YF +N34)VKT +1KB)YFD +3YB)ZB6 +RSZ)F2T +2FR)1V4 +MDJ)Z4K +K62)TW1 +J3V)NHJ +JML)GT8 +6RW)8CP +8ZV)9BF +XXP)NMZ +K4Q)T36 +L4S)22G +953)XFM +ZGY)HTR +RJ6)4H6 +HRP)TQD +NNT)5YP +L65)1H8 +KXB)8YB +T5D)P5K +LJY)VTL +SCS)HJ7 +35S)2RZ +NX1)THK +HY7)36Z +FXV)369 +RSK)4Z2 +2Y8)F9B +NNW)KG7 +WSV)78N +MMV)5GL +JLD)WSC +PZH)N7G +LL9)4Y4 +1BV)BG2 +XMD)NT6 +H9D)XF9 +MNV)W8J +SX8)V3N +P8Y)CW1 +T73)3F9 +D82)32Z +XPH)PLM +352)NL6 +Z94)D43 +NK7)7QT +N35)KHR +NM1)MG8 +8JZ)TJT +923)G3N +MVS)7DH +YMK)HVQ +JM4)74G +HJ7)RPW +9CY)C7M +V76)4GG +LNT)Y2J +8WD)YNN +41X)GKF +TD2)FZ2 +T6H)4TQ +NHB)NKV +TV3)RRM +VRM)LVD +QNZ)FJT +3KZ)P8P +XJ6)3Y9 +4D5)YSS +WB3)TV3 +1Y6)Q3J +98T)6WH +SLT)KQL +951)5N8 +9ZB)Z6X +KKD)M4B +YGJ)4F1 +KBV)PQL +G45)M7H +8CP)J9F +BLQ)2P1 +XS6)NXQ +BZ9)XQK +YLN)D1R +55T)XQB +N7H)RFF +FTM)93T +LJ5)MZ9 +3YB)BFP +X9Z)7K7 +W8J)9BC +43X)NM1 +G5R)JGH +7SK)HRK +3BL)SWS +N38)QL4 +HKV)64S +SDF)W33 +D94)HB3 +GWW)8DQ +3QH)WFF +SLJ)2Y4 +3TJ)NQT +1C3)KLJ +954)VL8 +LW2)Z6D +2F1)RQ5 +C1Z)XM7 +3CV)5HH +QCK)QHS +XKD)2XP +24J)221 +8KS)MF3 +5YY)DJQ +KBH)1W7 +XYG)XHV +XMW)BTK +B2D)5T2 +2W6)DH6 +W2R)CK4 +FY4)9RH +WF1)L7G +6GW)LBJ +QCX)H25 +XHV)3DZ +5Z7)N9H +RYD)H27 +QVD)ZJ3 +CM1)NHB +W8J)8KH +C5D)WV1 +CV3)25C +953)741 +9MV)ZCQ +WYC)SLW +6WH)387 +FXW)1G1 +Z1S)212 +MS1)FYZ +W33)F78 +NQT)72G +2XP)1MG +J9J)KBS +C1R)RHL +L7G)R4G +HWK)CCX +TNP)1SF +5R1)SLT +B51)VDS +FBK)LH2 +387)XXP +4NX)RDL +FF9)XW7 +D3P)5R5 +M3N)YWW +2Q8)9FM +8YY)1J7 +Z6X)3CV +9HX)FV8 +8MN)S2C +XD4)5HK +ST7)B59 +LR2)PF2 +23Y)FTM +7D2)F2H +9JG)TG9 +2QJ)H4J +HM5)CSY +DH5)55T +GFL)WBX +HGF)SK8 +PXT)SCT +K2D)7J8 +78K)MDJ +2XT)MP2 +4QR)549 +DFB)DRV +6NK)Q7Q +5BM)2Y8 +9XZ)DT2 +M25)MV8 +2BK)3V9 +28S)W2R +RPJ)X37 +QLS)9XF +X83)XFJ +8X4)ZHV +KMR)KDN +2K2)4T5 +LRM)MWF +JGM)4D5 +4LH)PZH +L4X)H2N +HHH)C12 +R4G)GWB +ZVP)F22 +YBF)H37 +RSY)PD7 +K3W)VXG +K9G)HN8 +1C1)QCK +YTK)JZ5 +KQL)NLZ +PLM)H7X +PYS)GDT +TY2)VRM +FF9)SZY +SXH)SZG +2HT)P19 +JTQ)B5F +B9B)F2L +5CM)CPS +L5D)GQG +K1F)QNZ +7QT)LJY +9KK)1DF +XN9)KBV +9VJ)SG7 +M4B)ZDW +6XV)MQL +1VL)Z94 +KSS)H8D +STY)JFJ +PXR)K3W +X3M)35W +RNH)FWP +2RZ)LW4 +HVQ)QG8 +8VS)QZS +M8T)4YM +GJR)SBJ +N9D)WH3 +4TQ)VZ3 +GG6)6MY +4TR)M21 +XLS)6QC +MZ3)YWS +ZRG)HK7 +V1S)ZRG +CR2)V8R +81N)PJX +VXP)LMZ +849)LTC +DWD)LQC +1H8)3FT +D2T)KG8 +BYJ)5Q1 +3H6)5X1 +8KQ)CHK +T7Y)J1X +4GD)KQP +XM7)QF5 +9RH)JZR +GKF)DBQ +THY)JHZ +5XD)2GC +MV8)HBP +CW1)W91 +411)923 +RRS)8XK +C66)TNP +BMX)J5R +FKR)5Z7 +MRV)PFK +9BC)59G +GVY)GDN +HH8)DRK +V96)6B1 +SKB)KFK +DJQ)23Y +PF2)2HD +2Y4)D3F +K86)K1P +YRP)GBG +V8R)W4G +F9N)GP8 +XQB)BPW +CSY)C66 +NHJ)D2T +GGF)MK1 +4NX)V6C +JYC)YNS +GMS)KNG +XW7)MRV +RFS)Q2C +7NL)WH4 +TBZ)FLX +RQ5)ZJB +FPX)WL3 +BMB)K86 +N7G)WC7 +T3S)NQD +KG7)GLN +741)CPL +S1W)G8P +W5V)ZJJ +JRF)X8V +TX6)PK9 +89Q)DFS +W6V)9FW +D8G)NVJ +VBW)3SH +VTW)RYD +5CM)QVD +9TP)LC2 +NCD)4VH +HLM)11L +6MY)S68 +S2Z)V3R +BFP)954 +Z5R)YB6 +SBP)2Q8 +JWQ)TQK +F2T)VPB +SZY)PXR +ML1)ZH9 +LM6)LH8 +CV6)69H +77Y)G2Y +22B)JYC +4Z2)1G9 +5N8)755 +GCL)Q5P +4ZT)M8T +Z6H)RKV +ML1)M9B +4YM)LFL +9JG)LMW +3FT)2XT +RQM)B6C +DRV)1Y6 +B1P)3YB +PGR)YDJ +9L1)RWV +79J)41X +GF8)YTK +N15)4S7 +8MC)1VL +4F7)77Y +SYM)YHV +4P2)2PZ +426)2TZ +H7X)K37 +17F)71V +9G9)PKR +KC2)N38 +L4X)WB3 +1TQ)G6B +YSS)SCS +Q1M)WW8 +819)2CV +Q2C)B65 +169)7P9 +139)7DC +D43)LR2 +KJ7)HH8 +C4S)MHT +5G8)HDZ +QTK)J33 +F2H)YBQ +5YP)YWN +W52)1SL +32Z)CM1 +LZ4)2F1 +7SB)QPG +7K7)SSY +CW1)9DN +YCL)LW2 +CTF)N97 +FV8)8KS +KQP)R1M +6QC)P2B +LW4)64N +R17)FQN +71V)4CB +X31)8VS +5FQ)9ZB +7J8)D8T +WZ3)KKB +VDS)WLZ +WT8)J9J +BKC)PC3 +T4B)9G9 +NT6)ST7 +LH2)JCZ +QHS)RMW +9LV)PLL +16M)H1L +HCN)PMM +J69)8KT +35S)7JW +5C3)F6S +J89)LJ5 +FVP)LHJ +RT5)XS6 +LBF)QW3 +8YB)GGF +ZHM)5HZ +W3X)MGQ +KHR)G16 +HY6)DNW +CMC)VPJ +Q72)JMG +WW8)Z6H +Y25)72S +3MZ)53C +791)951 +KPW)S5S +NQ6)QRF +NCL)VYR +1VD)85F +QYX)413 +NJK)D3H +N74)MNV +MP2)F87 +4F1)FQH +JZR)WMR +DNW)TNN +YZP)NH3 +H27)FY4 +28S)6R8 +DRK)B9B +NTG)1FY +GL5)HVX +G3N)CML +CPS)PQN +R1M)TY2 +C8Z)MS4 +N71)ML1 +5NF)GF8 +SCM)CCB +BG2)9JG +ZVG)6SD +FBZ)BZ9 +L9V)7ZY +7DH)B8B +1JT)DNK +QL4)NS8 +7LK)35S +QKC)SAN +Q1H)DJR +4N2)C1R +SC4)R22 +413)WG4 +SXD)K9L +9CY)4S5 +58X)NCD +VTL)LGH +V96)P31 +KYH)CLY +LTC)MB2 +D9Y)JM4 +53C)F94 +PD7)7MQ +5GL)6XW +6FT)H4X +RQJ)TC6 +WH3)2VB +M6N)H66 +369)N74 +TF3)JC5 +FGL)NTG +P6B)1JT +MDJ)V9T +6CL)754 +V3N)2Q6 +5YW)KCY +VRY)24J +2HD)47S +WL3)3YH +1SL)CTJ +QZ4)697 +S68)KYH +KBS)FPR +DT2)H9D +CHK)Y3R +Y2X)L7X +9VJ)3CK +BLM)CQJ +PLL)81F +RFF)5VK +V3R)LWT +FQN)M25 +9H5)KHG +KTN)4NX +QZS)23F +H7W)MKH +PKD)33K +F2P)MVN +G6B)GZ6 +8LH)PGR +NLZ)78K +GFD)XPH +LFL)N7H +D8T)7Z1 +X4V)R2D +D1R)Q6V +JV2)DH5 +WLZ)411 +352)C7B +T36)QWS +5R5)Q66 +HKX)KC2 +QL9)32D +M5Q)T6H +88R)M5Q +MF3)B1P +9YW)BM6 +Y9G)VNQ +M9B)7GL +57L)YLN +HTW)PL3 +1ZM)JWQ +1W7)FFT +SR2)YJW +BTK)XKD +P19)RSY +BSC)7LJ +212)NR2 +LX4)K39 +HXL)Z5R +FSX)W3T +HN8)FGL +KFK)27C +WN2)M9Z +F9B)GFL +WY7)Z15 +GQL)21W +BZ9)KNW +MFS)9CY +GV9)NQN +V8T)91Q +D7X)GFD +4KY)Q8N +9NX)MFS +YB6)NK7 +Q9Y)1KP +KCS)B45 +M4B)GG6 +ZVP)2K2 +CWB)N3S +HVX)JTQ +59G)TTC +YMV)B9Q +16M)XLB +PJX)VN4 +69H)11P +LMK)X9H +F6S)J69 +R2D)5SJ +X37)17P +3CL)YMV +ST5)N4C +2L3)NH8 +3F9)HNC +C2L)HFT +7QP)ZRM +C12)KN6 +1V9)PPT +XB5)8J5 +DJT)3BL +HKV)16M +YJ6)KBM +TX6)R5C +B15)LMK +549)JPG +K2V)NJS +FRB)1CG +MJC)4NC +TTC)H1W +KT3)CJ8 +NR2)85H +131)3KZ +X8V)953 +21W)W5C +3YH)8MC +VFW)7K4 +D79)KXB +G7F)JJC +4M1)7NL +S9V)NPZ +VP8)K9G +KNG)HHH +D3F)T5D +SWS)3CL +TYQ)9NX +78N)N1L +RDL)819 +X2V)L4X +8Y2)GQL +VRQ)FBK +1M6)QN1 +MXJ)7LP +1MG)GTF +YY5)H3F +S5F)BHV +PHS)95L +6XW)72J +DFS)D7X +YWS)SSK +B1P)DH2 +K98)FPX +Z5F)6N4 +9DN)78H +W3T)JS4 +7Z1)5G8 +49V)9J8 +Z6D)GGJ +V9T)MYZ +SC4)YLW +NQN)WN2 +MFN)TBW +KRX)LGD +9FW)V8T +8X3)V4T +4S7)XMW +Y2J)5PV +QYY)T26 +GMH)JV2 +H98)Q2Y +MZ9)2ZP +ZRM)KBH +251)Z5K +KHG)HYN +5WX)P8Y +71T)N75 +H37)6PH +HCL)D3P +M25)16R +K39)QL9 +WWZ)8Y2 +PK9)N6H +LMZ)ZVP +Z5Q)H98 +JKD)WK2 +JHZ)43X +PQN)NNW +J2Y)3H6 +YWW)GWW +NL6)KKD +XQ8)TPS +RWV)8D1 +TDB)RX1 +2PZ)6MR +NSM)QTK +GP1)TPV +ZB6)1V9 +QHG)4F7 +18R)D79 +ZJJ)Z1S +45D)7QP +7QV)X42 +M9M)MSS +TQK)V4V +Q7S)23K +TG9)C5D +VMJ)89G +7QR)SPB +RGV)QHG +3P3)RFS +GT8)6LP +P1K)8WD \ No newline at end of file diff --git a/src/main/resources/2019/day7.txt b/src/main/resources/2019/day7.txt new file mode 100644 index 00000000..1ecb0de6 --- /dev/null +++ b/src/main/resources/2019/day7.txt @@ -0,0 +1 @@ +3,8,1001,8,10,8,105,1,0,0,21,30,47,60,81,102,183,264,345,426,99999,3,9,1002,9,5,9,4,9,99,3,9,1002,9,5,9,1001,9,4,9,1002,9,4,9,4,9,99,3,9,101,2,9,9,1002,9,4,9,4,9,99,3,9,1001,9,3,9,1002,9,2,9,101,5,9,9,1002,9,2,9,4,9,99,3,9,102,4,9,9,101,4,9,9,1002,9,3,9,101,2,9,9,4,9,99,3,9,101,1,9,9,4,9,3,9,1002,9,2,9,4,9,3,9,1002,9,2,9,4,9,3,9,101,2,9,9,4,9,3,9,1002,9,2,9,4,9,3,9,101,1,9,9,4,9,3,9,1001,9,1,9,4,9,3,9,102,2,9,9,4,9,3,9,1002,9,2,9,4,9,3,9,1001,9,1,9,4,9,99,3,9,1001,9,2,9,4,9,3,9,1002,9,2,9,4,9,3,9,101,2,9,9,4,9,3,9,1002,9,2,9,4,9,3,9,1001,9,2,9,4,9,3,9,1002,9,2,9,4,9,3,9,1002,9,2,9,4,9,3,9,101,1,9,9,4,9,3,9,1002,9,2,9,4,9,3,9,1002,9,2,9,4,9,99,3,9,101,2,9,9,4,9,3,9,101,1,9,9,4,9,3,9,1001,9,2,9,4,9,3,9,1002,9,2,9,4,9,3,9,102,2,9,9,4,9,3,9,1001,9,2,9,4,9,3,9,102,2,9,9,4,9,3,9,1002,9,2,9,4,9,3,9,101,1,9,9,4,9,3,9,1001,9,2,9,4,9,99,3,9,102,2,9,9,4,9,3,9,1002,9,2,9,4,9,3,9,101,2,9,9,4,9,3,9,102,2,9,9,4,9,3,9,1001,9,1,9,4,9,3,9,1001,9,2,9,4,9,3,9,101,1,9,9,4,9,3,9,102,2,9,9,4,9,3,9,101,2,9,9,4,9,3,9,1002,9,2,9,4,9,99,3,9,1002,9,2,9,4,9,3,9,102,2,9,9,4,9,3,9,1001,9,1,9,4,9,3,9,102,2,9,9,4,9,3,9,102,2,9,9,4,9,3,9,1001,9,2,9,4,9,3,9,101,1,9,9,4,9,3,9,1001,9,2,9,4,9,3,9,1001,9,1,9,4,9,3,9,101,1,9,9,4,9,99 \ No newline at end of file diff --git a/src/main/resources/2019/day8.txt b/src/main/resources/2019/day8.txt new file mode 100644 index 00000000..1838f93f --- /dev/null +++ b/src/main/resources/2019/day8.txt @@ -0,0 +1 @@ +222122222222222221222222020220220222201212222222121120222212202222222222222222202222222222222222210222202222222201222222122022222022022222222222222212222122222222222221222222022222220222211202222222020221222222222222222222222222222222222222222222210222222222222211222222122022222022022222222222222222222022222222222222222222021222221222222202222122121122222202222222222222222222202222222222222222220222212222222202222222222222222222222222222222222212212022222222222221222222222221220222200202222222120220222212222222222222222222212222222222222222200222202222222210222222022022222122122222222222222222222022222222222221222222022221222222220212222122021022222212222222222222222222212222222222222222202222202222222200222222022122222222022222222222222212212022222222222221222222022222221222212222222222220020222222102222222222222222202222222222222222220222212222222212222222122122222122022222222222222222212222222222222222222222120220222222220222222222221122222222022222222222222222222222222222222222212222222222222221222212222122222122222222222222222212212022222222222220222222121220222222202202222022220221222212202222222222222222212222222222222222202222222222222220220202222022222022122222222222222212222122122222222221222222121221222222201202222022121120222212222222222222222222222222220222222222221222212222222210222212022122222022222222222222222212222022122222222220222222022222220222202222222022122022222212112122222222222222202222221222222222220222222222222201221222022022222022222222222222222212211022222222222220222222022220221222222212222222122010222212102122222222222222212222220222222222211222222222222222222222222022222122222222222222222202210122022222222221222222120222222222211212222022121200222222022222222222222222222222220222212222202222212222222221221212122222222022022222222222222212202122122222222220222222020222220222202222222122222121222202112122222222222222222222220222202222222222202222222211221222222102222022122222222222222222202222022222222221222222222220222222202202222222021120222222112122222222222222212222221222202222202222212222222212222202122012222022122222222222222202222122022222212222222222221220220222221212222222020011222222122122222222222222222222220222212222211222202222222211222212021202222222122222222222222202202222022222212221222222021222221222220202222022120012222212012122222222222222202222221222202222222222202222222221222212120002222022222222222222222202222222022222202222222222020221221222212222222122022000222222102122222222222222222222222222202222210222222222222201220222021122222222122222222222222222210222022222212222222222122220222222220012222222122201222202002022222222222222202222222222222222201222202222222211220202120122222222222222222222222212202122022222212220222222220222221222212112222222022021222202202022202222222222012222222222222222210222212222222222222012020022222022122222222222222202222121222222222221222222022220220222210112222122221122222202222222202222222222212222221222222222210222212222222212220202120222222222222222222222222222210120022222202222222222022220222222220002222202022211222222012122202222222222002222221222202222221222212222222221221212122122222022022222222222222222221222222222212220022222121220222222221102222112121101222202202222212222222222112222020212222122220222202222222200220022022112222222022222222222222222222120122222202220222222021221220222202222222022122121222212122222212222212222102222220202202222211222222222222211222022020112222222222222222222222212201121022222202220022222222220220222210122222122122020222222112122212222202222202222220222222022200222202222222210220102121022222022222222222222222222212021222222202222222222022221222222222122222212220201222212202222212222222202012222221222222122200222202222222211222122122212222022022222202222222202202121222222202222021222120220221222201002222212120221222202122222212222212202112222221222222002212222212222222220222022220212222222022222222222222222211122122222202222222222121222220222221212222202221020222212112122202222222212112222122222202002211222212222222220221102121012222222122222202222222202222122122222212222222222122222220222211012222122022022222212102022202022202222202222122222222112210222222222222202222102122212222222022222212222222222212222022222220221021222120221220222221000222112121000222222202222222022222212102222222202222122212222222222222201220212221122222222122222222222222212201022022222220221122222221221220222221211222022222020222212222122212222222112202222120222202112211222202222222221222112020112222022022222202222222222211122022222221220220222221220220222222121222102222210222212002022212222222222212222121212212022222222202222222202221012020212222022222222212222222222212221022222212221220222221220221222222000222122020011222222202222222122212202002222221222222022102222212222222202220202021002222122122222212222222222220221122222202221220222221222222222222212222122121010222222102222212022222122022222120202202012110222222222222220221022122222222222122222202222222212200222222222202222020222221221222222202200222022121200222202112022212022212222222222021220202002111222222222222221220122121202222222222222202202222202212121122222222222120222221220200222220210222102121221222212212221222022212212222222221221202012112222222222222220220002021012222222022221222202222212202120122222200222221222221222221222210011222212021222222222212222202222222022022222021220202122022222202222222220220112221222222122122221222212222222222121022222200221221220020220201222222002222212122200222212122122202122022212112222221221202202212222212222222211222222220222222022122222002222222222201120222222220222220220120221200222211212222112221210222212212220212022012122022222220221212102001222202222222222220112020002222022222220102222222202212020022222201221020222122220222222211111022012220122222222012122202222202222222222122222212222002220202222222221221212021102222122022220002212222202210020122222202221120221121220202222221001022202220111222212112021212222222102112222022202202022020221222222222200220102220222222022022220122202222212222021022222210222120221021222210222222120222212120020222222212022202022112102122222020222212022222222202222222220220202222102202222022222002212222212211222122222200221220222220221221222222001022022021112222202102021212122122122222222220222212202201220202222222212220212021212212222020020022212222212201220222220212222221120010220202222201220222202122002222212112222202122112112212222121220222212002221002222222201222002221002222222220121022212222202211121222222212222221222001222202222210010222112021202222212102120202222222122002222120221222122020222122222222211222222222222210122221122022202222222212021122221202220120222000222221222212002022112022012222202222022222022212012002222122220212022122220112222222200220002022212202122220120022212222202221220222221201220021122121222220222211212122212222220222202022122222022102002222222121210222202022221112222222220221022020012210222221221222212222212220120022222211222221120022220212222210012222012122012222222202222222222202112222222021200212202200221202222222201222012222002211222221022112222222202202220222221220222021020021221211222221111222102020000222222202220202122002102022222221211122102120211002222222212222002120022222212222220022202222212202221222222210221120020201221212222221100222002022121222022202221222222002022002222121212212111211212122222222222222202122002200112220120202222222212211221222222021221222120210221222222220022222022022012222122112020212022022122012222221210102202021200202222222200221202121202210122222122012202222202201122222221120220022222112222221222201211122002121020222012222021202222020212112222122200122121102211002222222200220212220202220012221122012212222202202220122210000222220022010221211222212022022112022212222102002122222222111212202222220222022211202211112202222010221122222202222102122020102212222222221121222201021221221022210221221222201022022012021220222112022121202022222012202222120200002002110200222200222000221022101022222002021021222202222222200220222200101220122122020222201222210112022102021112222002202022202222022212122222122222222020220221102220222020222222212012201012020222222012220222101222122202100222120021120222202222221122022202122212222012002220212022120122002222220200122002201220002200222020220012011022220122120022012012221212121222122221000221021020221221220222211201122012020121222212122121212022000002122222220221102222012221122210222211212212122022210002221121122012221222022122122220012222120021002222201222200222022102022222222022022120212122121122022222020220202011001221222210222200201002122222200122122120102202220202212020222200010221021021120220222222222121222002122201222022002220202022210012002222022210212220020200022211222121221102120212212002221122022202210222110121122210101220020222002220200222212111122112221120222002122221202022120222002222122220212120101201202201222222221102200212212212121121022212210202002221022221022220120020100222201222201121122002121021222022012020222022201022122222122202102001022200022220222121222012021122212212221221222222212222010220122201012221022012002220212222222111222212122112222012202222212122010122022222121210022112010202202201222122210202112012200012120020201122220212020122022221012220222111020220221222201222022002121022222202102220222122212002202222020202112121222200122221222101211202022111210122122220020202210212021122222222012222120221201222220222211222122012220121222202012020212122202122202222120210212210202220122210222020220222101212200002220120220112211202000122022201100222022201111221202222202022122112122001222002202022222122221102102222021211102220220221002200222112221022220200200022222022212122212212111222022221121221021201202220221222202211122122122222222022212021212022021012202222021211012110221201212220222121211212022012220022021121011012202222211020122210122221122110120222200222212100022102021111022222112122212222021102022222022221222121101222212210202210221012220112201222122022121112202012210221222202221221020022100221210222220121222102020201122102212020222122121212122222120201122110121222212222202112222212220111221002120220101212220122012022120200021222120021010221212222220100122112121221222102202120212122012122102220222202202000120211222222202102220122002122222202020221011212222212010220220222122221022211010220220222220010122002020021122002112122212022112122012221122201002222022212012222212110212022201000211112222021121012222222210121020202200220121210100220221222220001122022020222222212212222212122021002102221222211122000202212112210222001201102001102210112120221102112201012102221121201202221021110012222210222222012022112221200022022022122202212000002012222121212012220010200022201212101211202222122201102122020211102220212010221020222102221020022200220201222210211022202022210122022002221222012010212122211221221102201022211102220212110222022110121200222122122002212210122211220220221222221222201220221120222210011222022121111222102022222222012000022002200220222102012110221012212202201211122220021200012121122202122211022221121021212100220120012002222120222202210022022220020122012222222202212100022222211020210102220202211222211202220221122001011211222122122211212221112202122120200011220120212201221110222220202022012021012222012002220212022220222002221120220202110000211012202212020221122211110221222220220100112212222221021222220011222021001120220211222200121022222120101022202202020222002212222102222022212122011220202022220202020211022022220212222220222111112201212010120221210212221122120212221101222202212122212222120222102122122222202101022112202220212202220000200122210222012211122022100200022220222001002220202122121220201021221000002101221122222200112122102122012022112212121222112210212012210022221212002102220212211222100200012001202201012122020020012211022200121122222102220000002210221211222221122222022020201122022102222222102200002022212222000012211121201122211212121222012100121212122222020122102211002022021222210012222221001020220111222222011222022022210122112202022202222201012022212120221202202222221012211202021210022221011221022122020201212201012220122022222112221102011211222102222210010222012122110122222212121212222221012122202222201222202120220022210222110221212002122220222220120221102201202111021222200122222212010012220210222212021022112022011022012202221202112021002122210121002202100101200122210212021202112122000220222221020202012201002201021221201111222101021011222222222210020022002020200122002112122222222202102002210220102122211121201102212212012212202222201222022020122020212211212210221021221011222100002221221012222210100022202121010022222112021202102011102012201220211022022000201122220222020222012022021202102020122010012222102001022022202011220012112201221201222220101022102021210022212122020212122000102102222220202222100200222122201202110220012001122222012020220102112220212100121121202102220221201122221010222210002022202221000122212012222202102201212022210010111002211211211202212202200202222200001212112121222002122221012002121022210222221222120020222212222212121022112222011022222202220222102020012122220020012022111112211102222212202220012020212201022222122002002222002222222122012102221021121121221221222210122222212220110022212222222222202220022212220122120112002121220212212222101200202112000220112001120020112220222211122020120210222120202210220222222210120022122120021022222012220202102200112212220002211002201102212212212222121220212122221212002021122101222202222022021220122222222210101000222202222201100022122222101222102222200202022212022012221201202112211212210022202222011220202221010200112001221222122212012122120120022021221222111222221211222221121222202122121122122012002222002222210112210102002202202011210202210222011222122212222200012211020200202220002111002121001020222022222121222020222222000022222021200122012112210212012001000122200000201022102010200112111222220211112120010201102020222221122212012121121022022120222200101102022210222200111022012120111022012022100222212012022002201221111102200102220212101202220221122111010201112212121020112201222201112020120201221001121120220220222212012222222120021022202102112012102012212222212022120202220000202120211222222222122202022211112201020100202222102020120222101120221101110100221221222210000122120121110222112122002122222101121222201000222122201122202202220222020202012222000220212100020021122201122022212222110022221211101210021021222220200022201022001112022122112222002202121122200111210122021221210210102212211221212222120212202200021212122211202202200121101001221021021221021022222202122022210122012212122212012202102022221222111020111112120221210210020222110200202112111202002020121210012210012102002020000221222200002210020220202221110122121020222102002102100022222121101222102120001112101222202001022222101221102021112200102200222022002220102210111121221220221202020011222102222210020222021022211002202002120112202120111222121002002022112112200200221212000201122110100200212020122012202201122122000212211222011122220200201100111000022010102201221120010110121011120100100011202001101011012210020022201001212022210200111020120211112200111000100 \ No newline at end of file diff --git a/src/main/resources/2019/day9.txt b/src/main/resources/2019/day9.txt new file mode 100644 index 00000000..e3d2a86a --- /dev/null +++ b/src/main/resources/2019/day9.txt @@ -0,0 +1 @@ +1102,34463338,34463338,63,1007,63,34463338,63,1005,63,53,1101,3,0,1000,109,988,209,12,9,1000,209,6,209,3,203,0,1008,1000,1,63,1005,63,65,1008,1000,2,63,1005,63,904,1008,1000,0,63,1005,63,58,4,25,104,0,99,4,0,104,0,99,4,17,104,0,99,0,0,1102,1,550,1027,1101,0,0,1020,1101,30,0,1004,1101,0,22,1014,1102,1,36,1009,1101,37,0,1007,1102,25,1,1010,1102,1,33,1012,1102,282,1,1029,1102,1,488,1025,1101,0,31,1019,1101,0,21,1008,1101,0,35,1015,1101,664,0,1023,1102,26,1,1001,1101,28,0,1016,1102,29,1,1005,1102,1,24,1002,1101,20,0,1018,1101,27,0,1013,1101,38,0,1017,1102,1,1,1021,1102,1,557,1026,1102,1,39,1000,1101,23,0,1006,1101,493,0,1024,1102,1,291,1028,1101,671,0,1022,1101,0,34,1003,1101,0,32,1011,109,10,21108,40,40,8,1005,1018,199,4,187,1105,1,203,1001,64,1,64,1002,64,2,64,109,-14,2108,30,8,63,1005,63,225,4,209,1001,64,1,64,1105,1,225,1002,64,2,64,109,3,2102,1,4,63,1008,63,34,63,1005,63,251,4,231,1001,64,1,64,1106,0,251,1002,64,2,64,109,12,2107,22,-5,63,1005,63,269,4,257,1105,1,273,1001,64,1,64,1002,64,2,64,109,20,2106,0,-3,4,279,1001,64,1,64,1106,0,291,1002,64,2,64,109,-16,21108,41,40,-3,1005,1012,311,1001,64,1,64,1105,1,313,4,297,1002,64,2,64,109,-13,2101,0,2,63,1008,63,30,63,1005,63,335,4,319,1105,1,339,1001,64,1,64,1002,64,2,64,109,-3,2102,1,4,63,1008,63,35,63,1005,63,359,1106,0,365,4,345,1001,64,1,64,1002,64,2,64,109,15,1205,6,377,1105,1,383,4,371,1001,64,1,64,1002,64,2,64,109,5,21102,42,1,-2,1008,1017,39,63,1005,63,403,1106,0,409,4,389,1001,64,1,64,1002,64,2,64,109,-17,21107,43,44,10,1005,1012,431,4,415,1001,64,1,64,1106,0,431,1002,64,2,64,109,14,21107,44,43,-4,1005,1012,451,1001,64,1,64,1106,0,453,4,437,1002,64,2,64,109,1,21102,45,1,-3,1008,1014,45,63,1005,63,479,4,459,1001,64,1,64,1105,1,479,1002,64,2,64,109,7,2105,1,0,4,485,1106,0,497,1001,64,1,64,1002,64,2,64,109,5,1206,-8,513,1001,64,1,64,1106,0,515,4,503,1002,64,2,64,109,-33,2101,0,7,63,1008,63,32,63,1005,63,535,1106,0,541,4,521,1001,64,1,64,1002,64,2,64,109,23,2106,0,8,1001,64,1,64,1106,0,559,4,547,1002,64,2,64,109,-1,21101,46,0,-5,1008,1013,46,63,1005,63,585,4,565,1001,64,1,64,1105,1,585,1002,64,2,64,109,-4,21101,47,0,2,1008,1016,44,63,1005,63,605,1105,1,611,4,591,1001,64,1,64,1002,64,2,64,109,-18,1207,4,38,63,1005,63,627,1106,0,633,4,617,1001,64,1,64,1002,64,2,64,109,5,2107,22,7,63,1005,63,649,1106,0,655,4,639,1001,64,1,64,1002,64,2,64,109,12,2105,1,10,1001,64,1,64,1106,0,673,4,661,1002,64,2,64,109,-10,1208,6,33,63,1005,63,693,1001,64,1,64,1106,0,695,4,679,1002,64,2,64,109,-7,2108,35,7,63,1005,63,715,1001,64,1,64,1106,0,717,4,701,1002,64,2,64,109,6,1208,5,37,63,1005,63,735,4,723,1106,0,739,1001,64,1,64,1002,64,2,64,109,-4,1202,5,1,63,1008,63,34,63,1005,63,765,4,745,1001,64,1,64,1105,1,765,1002,64,2,64,109,29,1206,-7,783,4,771,1001,64,1,64,1105,1,783,1002,64,2,64,109,-28,1201,6,0,63,1008,63,29,63,1005,63,809,4,789,1001,64,1,64,1106,0,809,1002,64,2,64,109,5,1202,2,1,63,1008,63,20,63,1005,63,829,1106,0,835,4,815,1001,64,1,64,1002,64,2,64,109,-1,1201,6,0,63,1008,63,35,63,1005,63,859,1001,64,1,64,1105,1,861,4,841,1002,64,2,64,109,2,1207,-3,25,63,1005,63,879,4,867,1105,1,883,1001,64,1,64,1002,64,2,64,109,13,1205,3,901,4,889,1001,64,1,64,1106,0,901,4,64,99,21101,0,27,1,21101,915,0,0,1106,0,922,21201,1,22987,1,204,1,99,109,3,1207,-2,3,63,1005,63,964,21201,-2,-1,1,21101,0,942,0,1106,0,922,22101,0,1,-1,21201,-2,-3,1,21101,0,957,0,1106,0,922,22201,1,-1,-2,1105,1,968,21202,-2,1,-2,109,-3,2105,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 \ No newline at end of file diff --git a/src/main/resources/2020-examples/day1-1.txt b/src/main/resources/2020-examples/day1-1.txt new file mode 100644 index 00000000..e3fb011e --- /dev/null +++ b/src/main/resources/2020-examples/day1-1.txt @@ -0,0 +1,6 @@ +1721 +979 +366 +299 +675 +1456 diff --git a/src/main/resources/2020-examples/day10-1.txt b/src/main/resources/2020-examples/day10-1.txt new file mode 100644 index 00000000..ec4a03f5 --- /dev/null +++ b/src/main/resources/2020-examples/day10-1.txt @@ -0,0 +1,11 @@ +16 +10 +15 +5 +1 +11 +7 +19 +6 +12 +4 diff --git a/src/main/resources/2020-examples/day10-2.txt b/src/main/resources/2020-examples/day10-2.txt new file mode 100644 index 00000000..e6376dca --- /dev/null +++ b/src/main/resources/2020-examples/day10-2.txt @@ -0,0 +1,31 @@ +28 +33 +18 +42 +31 +14 +46 +20 +48 +47 +24 +23 +49 +45 +19 +38 +39 +11 +1 +32 +25 +35 +8 +17 +7 +9 +4 +2 +34 +10 +3 diff --git a/src/main/resources/2020-examples/day10-3.txt b/src/main/resources/2020-examples/day10-3.txt new file mode 100644 index 00000000..035d5902 --- /dev/null +++ b/src/main/resources/2020-examples/day10-3.txt @@ -0,0 +1,8 @@ +(0), 1, 4, 5, 6, 7, 10, 11, 12, 15, 16, 19, (22) +(0), 1, 4, 5, 6, 7, 10, 12, 15, 16, 19, (22) +(0), 1, 4, 5, 7, 10, 11, 12, 15, 16, 19, (22) +(0), 1, 4, 5, 7, 10, 12, 15, 16, 19, (22) +(0), 1, 4, 6, 7, 10, 11, 12, 15, 16, 19, (22) +(0), 1, 4, 6, 7, 10, 12, 15, 16, 19, (22) +(0), 1, 4, 7, 10, 11, 12, 15, 16, 19, (22) +(0), 1, 4, 7, 10, 12, 15, 16, 19, (22) diff --git a/src/main/resources/2020-examples/day10-4.txt b/src/main/resources/2020-examples/day10-4.txt new file mode 100644 index 00000000..4b891aaf --- /dev/null +++ b/src/main/resources/2020-examples/day10-4.txt @@ -0,0 +1,29 @@ +(0), 1, 2, 3, 4, 7, 8, 9, 10, 11, 14, 17, 18, 19, 20, 23, 24, 25, 28, 31, +32, 33, 34, 35, 38, 39, 42, 45, 46, 47, 48, 49, (52) + +(0), 1, 2, 3, 4, 7, 8, 9, 10, 11, 14, 17, 18, 19, 20, 23, 24, 25, 28, 31, +32, 33, 34, 35, 38, 39, 42, 45, 46, 47, 49, (52) + +(0), 1, 2, 3, 4, 7, 8, 9, 10, 11, 14, 17, 18, 19, 20, 23, 24, 25, 28, 31, +32, 33, 34, 35, 38, 39, 42, 45, 46, 48, 49, (52) + +(0), 1, 2, 3, 4, 7, 8, 9, 10, 11, 14, 17, 18, 19, 20, 23, 24, 25, 28, 31, +32, 33, 34, 35, 38, 39, 42, 45, 46, 49, (52) + +(0), 1, 2, 3, 4, 7, 8, 9, 10, 11, 14, 17, 18, 19, 20, 23, 24, 25, 28, 31, +32, 33, 34, 35, 38, 39, 42, 45, 47, 48, 49, (52) + +(0), 3, 4, 7, 10, 11, 14, 17, 20, 23, 25, 28, 31, 34, 35, 38, 39, 42, 45, +46, 48, 49, (52) + +(0), 3, 4, 7, 10, 11, 14, 17, 20, 23, 25, 28, 31, 34, 35, 38, 39, 42, 45, +46, 49, (52) + +(0), 3, 4, 7, 10, 11, 14, 17, 20, 23, 25, 28, 31, 34, 35, 38, 39, 42, 45, +47, 48, 49, (52) + +(0), 3, 4, 7, 10, 11, 14, 17, 20, 23, 25, 28, 31, 34, 35, 38, 39, 42, 45, +47, 49, (52) + +(0), 3, 4, 7, 10, 11, 14, 17, 20, 23, 25, 28, 31, 34, 35, 38, 39, 42, 45, +48, 49, (52) diff --git a/src/main/resources/2020-examples/day11-1.txt b/src/main/resources/2020-examples/day11-1.txt new file mode 100644 index 00000000..1beaede3 --- /dev/null +++ b/src/main/resources/2020-examples/day11-1.txt @@ -0,0 +1,10 @@ +L.LL.LL.LL +LLLLLLL.LL +L.L.L..L.. +LLLL.LL.LL +L.LL.LL.LL +L.LLLLL.LL +..L.L..... +LLLLLLLLLL +L.LLLLLL.L +L.LLLLL.LL diff --git a/src/main/resources/2020-examples/day11-10.txt b/src/main/resources/2020-examples/day11-10.txt new file mode 100644 index 00000000..1beaede3 --- /dev/null +++ b/src/main/resources/2020-examples/day11-10.txt @@ -0,0 +1,10 @@ +L.LL.LL.LL +LLLLLLL.LL +L.L.L..L.. +LLLL.LL.LL +L.LL.LL.LL +L.LLLLL.LL +..L.L..... +LLLLLLLLLL +L.LLLLLL.L +L.LLLLL.LL diff --git a/src/main/resources/2020-examples/day11-11.txt b/src/main/resources/2020-examples/day11-11.txt new file mode 100644 index 00000000..cdea6b56 --- /dev/null +++ b/src/main/resources/2020-examples/day11-11.txt @@ -0,0 +1,10 @@ +#.##.##.## +#######.## +#.#.#..#.. +####.##.## +#.##.##.## +#.#####.## +..#.#..... +########## +#.######.# +#.#####.## diff --git a/src/main/resources/2020-examples/day11-12.txt b/src/main/resources/2020-examples/day11-12.txt new file mode 100644 index 00000000..0bfbfc35 --- /dev/null +++ b/src/main/resources/2020-examples/day11-12.txt @@ -0,0 +1,10 @@ +#.LL.LL.L# +#LLLLLL.LL +L.L.L..L.. +LLLL.LL.LL +L.LL.LL.LL +L.LLLLL.LL +..L.L..... +LLLLLLLLL# +#.LLLLLL.L +#.LLLLL.L# diff --git a/src/main/resources/2020-examples/day11-13.txt b/src/main/resources/2020-examples/day11-13.txt new file mode 100644 index 00000000..543d5e0b --- /dev/null +++ b/src/main/resources/2020-examples/day11-13.txt @@ -0,0 +1,10 @@ +#.L#.##.L# +#L#####.LL +L.#.#..#.. +##L#.##.## +#.##.#L.## +#.#####.#L +..#.#..... +LLL####LL# +#.L#####.L +#.L####.L# diff --git a/src/main/resources/2020-examples/day11-14.txt b/src/main/resources/2020-examples/day11-14.txt new file mode 100644 index 00000000..5f1eaba2 --- /dev/null +++ b/src/main/resources/2020-examples/day11-14.txt @@ -0,0 +1,10 @@ +#.L#.L#.L# +#LLLLLL.LL +L.L.L..#.. +##LL.LL.L# +L.LL.LL.L# +#.LLLLL.LL +..L.L..... +LLLLLLLLL# +#.LLLLL#.L +#.L#LL#.L# diff --git a/src/main/resources/2020-examples/day11-15.txt b/src/main/resources/2020-examples/day11-15.txt new file mode 100644 index 00000000..2ae36751 --- /dev/null +++ b/src/main/resources/2020-examples/day11-15.txt @@ -0,0 +1,10 @@ +#.L#.L#.L# +#LLLLLL.LL +L.L.L..#.. +##L#.#L.L# +L.L#.#L.L# +#.L####.LL +..#.#..... +LLL###LLL# +#.LLLLL#.L +#.L#LL#.L# diff --git a/src/main/resources/2020-examples/day11-16.txt b/src/main/resources/2020-examples/day11-16.txt new file mode 100644 index 00000000..3113fba8 --- /dev/null +++ b/src/main/resources/2020-examples/day11-16.txt @@ -0,0 +1,10 @@ +#.L#.L#.L# +#LLLLLL.LL +L.L.L..#.. +##L#.#L.L# +L.L#.LL.L# +#.LLLL#.LL +..#.L..... +LLL###LLL# +#.LLLLL#.L +#.L#LL#.L# diff --git a/src/main/resources/2020-examples/day11-2.txt b/src/main/resources/2020-examples/day11-2.txt new file mode 100644 index 00000000..cdea6b56 --- /dev/null +++ b/src/main/resources/2020-examples/day11-2.txt @@ -0,0 +1,10 @@ +#.##.##.## +#######.## +#.#.#..#.. +####.##.## +#.##.##.## +#.#####.## +..#.#..... +########## +#.######.# +#.#####.## diff --git a/src/main/resources/2020-examples/day11-3.txt b/src/main/resources/2020-examples/day11-3.txt new file mode 100644 index 00000000..350f31df --- /dev/null +++ b/src/main/resources/2020-examples/day11-3.txt @@ -0,0 +1,10 @@ +#.LL.L#.## +#LLLLLL.L# +L.L.L..L.. +#LLL.LL.L# +#.LL.LL.LL +#.LLLL#.## +..L.L..... +#LLLLLLLL# +#.LLLLLL.L +#.#LLLL.## diff --git a/src/main/resources/2020-examples/day11-4.txt b/src/main/resources/2020-examples/day11-4.txt new file mode 100644 index 00000000..bbc370ba --- /dev/null +++ b/src/main/resources/2020-examples/day11-4.txt @@ -0,0 +1,10 @@ +#.##.L#.## +#L###LL.L# +L.#.#..#.. +#L##.##.L# +#.##.LL.LL +#.###L#.## +..#.#..... +#L######L# +#.LL###L.L +#.#L###.## diff --git a/src/main/resources/2020-examples/day11-5.txt b/src/main/resources/2020-examples/day11-5.txt new file mode 100644 index 00000000..86646eda --- /dev/null +++ b/src/main/resources/2020-examples/day11-5.txt @@ -0,0 +1,10 @@ +#.#L.L#.## +#LLL#LL.L# +L.L.L..#.. +#LLL.##.L# +#.LL.LL.LL +#.LL#L#.## +..L.L..... +#L#LLLL#L# +#.LLLLLL.L +#.#L#L#.## diff --git a/src/main/resources/2020-examples/day11-6.txt b/src/main/resources/2020-examples/day11-6.txt new file mode 100644 index 00000000..dbd760e3 --- /dev/null +++ b/src/main/resources/2020-examples/day11-6.txt @@ -0,0 +1,10 @@ +#.#L.L#.## +#LLL#LL.L# +L.#.L..#.. +#L##.##.L# +#.#L.LL.LL +#.#L#L#.## +..L.L..... +#L#L##L#L# +#.LLLLLL.L +#.#L#L#.## diff --git a/src/main/resources/2020-examples/day11-7.txt b/src/main/resources/2020-examples/day11-7.txt new file mode 100644 index 00000000..a486e35c --- /dev/null +++ b/src/main/resources/2020-examples/day11-7.txt @@ -0,0 +1,9 @@ +.......#. +...#..... +.#....... +......... +..#L....# +....#.... +......... +#........ +...#..... diff --git a/src/main/resources/2020-examples/day11-8.txt b/src/main/resources/2020-examples/day11-8.txt new file mode 100644 index 00000000..bb0b8133 --- /dev/null +++ b/src/main/resources/2020-examples/day11-8.txt @@ -0,0 +1,3 @@ +............. +.L.L.#.#.#.#. +............. diff --git a/src/main/resources/2020-examples/day11-9.txt b/src/main/resources/2020-examples/day11-9.txt new file mode 100644 index 00000000..68e65439 --- /dev/null +++ b/src/main/resources/2020-examples/day11-9.txt @@ -0,0 +1,7 @@ +.##.##. +#.#.#.# +##...## +...L... +##...## +#.#.#.# +.##.##. diff --git a/src/main/resources/2020-examples/day12-1.txt b/src/main/resources/2020-examples/day12-1.txt new file mode 100644 index 00000000..d3822918 --- /dev/null +++ b/src/main/resources/2020-examples/day12-1.txt @@ -0,0 +1,5 @@ +F10 +N3 +F7 +R90 +F11 diff --git a/src/main/resources/2020-examples/day13-1.txt b/src/main/resources/2020-examples/day13-1.txt new file mode 100644 index 00000000..d76f6197 --- /dev/null +++ b/src/main/resources/2020-examples/day13-1.txt @@ -0,0 +1,2 @@ +939 +7,13,x,x,59,x,31,19 diff --git a/src/main/resources/2020-examples/day13-2.txt b/src/main/resources/2020-examples/day13-2.txt new file mode 100644 index 00000000..219d85f7 --- /dev/null +++ b/src/main/resources/2020-examples/day13-2.txt @@ -0,0 +1,22 @@ +time bus 7 bus 13 bus 59 bus 31 bus 19 +929 . . . . . +930 . . . D . +931 D . . . D +932 . . . . . +933 . . . . . +934 . . . . . +935 . . . . . +936 . D . . . +937 . . . . . +938 D . . . . +939 . . . . . +940 . . . . . +941 . . . . . +942 . . . . . +943 . . . . . +944 . . D . . +945 D . . . . +946 . . . . . +947 . . . . . +948 . . . . . +949 . D . . . diff --git a/src/main/resources/2020-examples/day13-3.txt b/src/main/resources/2020-examples/day13-3.txt new file mode 100644 index 00000000..79d21b07 --- /dev/null +++ b/src/main/resources/2020-examples/day13-3.txt @@ -0,0 +1 @@ +7,13,x,x,59,x,31,19 \ No newline at end of file diff --git a/src/main/resources/2020-examples/day13-4.txt b/src/main/resources/2020-examples/day13-4.txt new file mode 100644 index 00000000..0ccbb850 --- /dev/null +++ b/src/main/resources/2020-examples/day13-4.txt @@ -0,0 +1,26 @@ +time bus 7 bus 13 bus 59 bus 31 bus 19 +1068773 . . . . . +1068774 D . . . . +1068775 . . . . . +1068776 . . . . . +1068777 . . . . . +1068778 . . . . . +1068779 . . . . . +1068780 . . . . . +1068781 D . . . . +1068782 . D . . . +1068783 . . . . . +1068784 . . . . . +1068785 . . D . . +1068786 . . . . . +1068787 . . . D . +1068788 D . . . D +1068789 . . . . . +1068790 . . . . . +1068791 . . . . . +1068792 . . . . . +1068793 . . . . . +1068794 . . . . . +1068795 D D . . . +1068796 . . . . . +1068797 . . . . . diff --git a/src/main/resources/2020-examples/day14-1.txt b/src/main/resources/2020-examples/day14-1.txt new file mode 100644 index 00000000..e15150a2 --- /dev/null +++ b/src/main/resources/2020-examples/day14-1.txt @@ -0,0 +1,4 @@ +mask = XXXXXXXXXXXXXXXXXXXXXXXXXXXXX1XXXX0X +mem[8] = 11 +mem[7] = 101 +mem[8] = 0 diff --git a/src/main/resources/2020-examples/day14-2.txt b/src/main/resources/2020-examples/day14-2.txt new file mode 100644 index 00000000..719a4e08 --- /dev/null +++ b/src/main/resources/2020-examples/day14-2.txt @@ -0,0 +1,3 @@ +value: 000000000000000000000000000000001011 (decimal 11) +mask: XXXXXXXXXXXXXXXXXXXXXXXXXXXXX1XXXX0X +result: 000000000000000000000000000001001001 (decimal 73) diff --git a/src/main/resources/2020-examples/day14-3.txt b/src/main/resources/2020-examples/day14-3.txt new file mode 100644 index 00000000..9071e2ae --- /dev/null +++ b/src/main/resources/2020-examples/day14-3.txt @@ -0,0 +1,3 @@ +value: 000000000000000000000000000001100101 (decimal 101) +mask: XXXXXXXXXXXXXXXXXXXXXXXXXXXXX1XXXX0X +result: 000000000000000000000000000001100101 (decimal 101) diff --git a/src/main/resources/2020-examples/day14-4.txt b/src/main/resources/2020-examples/day14-4.txt new file mode 100644 index 00000000..7d58f02e --- /dev/null +++ b/src/main/resources/2020-examples/day14-4.txt @@ -0,0 +1,3 @@ +value: 000000000000000000000000000000000000 (decimal 0) +mask: XXXXXXXXXXXXXXXXXXXXXXXXXXXXX1XXXX0X +result: 000000000000000000000000000001000000 (decimal 64) diff --git a/src/main/resources/2020-examples/day14-5.txt b/src/main/resources/2020-examples/day14-5.txt new file mode 100644 index 00000000..2e961e3e --- /dev/null +++ b/src/main/resources/2020-examples/day14-5.txt @@ -0,0 +1,4 @@ +mask = 000000000000000000000000000000X1001X +mem[42] = 100 +mask = 00000000000000000000000000000000X0XX +mem[26] = 1 diff --git a/src/main/resources/2020-examples/day14-6.txt b/src/main/resources/2020-examples/day14-6.txt new file mode 100644 index 00000000..0250ee71 --- /dev/null +++ b/src/main/resources/2020-examples/day14-6.txt @@ -0,0 +1,3 @@ +address: 000000000000000000000000000000101010 (decimal 42) +mask: 000000000000000000000000000000X1001X +result: 000000000000000000000000000000X1101X diff --git a/src/main/resources/2020-examples/day14-7.txt b/src/main/resources/2020-examples/day14-7.txt new file mode 100644 index 00000000..54fcb65d --- /dev/null +++ b/src/main/resources/2020-examples/day14-7.txt @@ -0,0 +1,4 @@ +000000000000000000000000000000011010 (decimal 26) +000000000000000000000000000000011011 (decimal 27) +000000000000000000000000000000111010 (decimal 58) +000000000000000000000000000000111011 (decimal 59) diff --git a/src/main/resources/2020-examples/day14-8.txt b/src/main/resources/2020-examples/day14-8.txt new file mode 100644 index 00000000..c6652acb --- /dev/null +++ b/src/main/resources/2020-examples/day14-8.txt @@ -0,0 +1,3 @@ +address: 000000000000000000000000000000011010 (decimal 26) +mask: 00000000000000000000000000000000X0XX +result: 00000000000000000000000000000001X0XX diff --git a/src/main/resources/2020-examples/day14-9.txt b/src/main/resources/2020-examples/day14-9.txt new file mode 100644 index 00000000..b1103927 --- /dev/null +++ b/src/main/resources/2020-examples/day14-9.txt @@ -0,0 +1,8 @@ +000000000000000000000000000000010000 (decimal 16) +000000000000000000000000000000010001 (decimal 17) +000000000000000000000000000000010010 (decimal 18) +000000000000000000000000000000010011 (decimal 19) +000000000000000000000000000000011000 (decimal 24) +000000000000000000000000000000011001 (decimal 25) +000000000000000000000000000000011010 (decimal 26) +000000000000000000000000000000011011 (decimal 27) diff --git a/src/main/resources/2020-examples/day16-1.txt b/src/main/resources/2020-examples/day16-1.txt new file mode 100644 index 00000000..e78bf388 --- /dev/null +++ b/src/main/resources/2020-examples/day16-1.txt @@ -0,0 +1,6 @@ +.--------------------------------------------------------. +| ????: 101 ?????: 102 ??????????: 103 ???: 104 | +| | +| ??: 301 ??: 302 ???????: 303 ??????? | +| ??: 401 ??: 402 ???? ????: 403 ????????? | +'--------------------------------------------------------' diff --git a/src/main/resources/2020-examples/day16-2.txt b/src/main/resources/2020-examples/day16-2.txt new file mode 100644 index 00000000..fe34e403 --- /dev/null +++ b/src/main/resources/2020-examples/day16-2.txt @@ -0,0 +1,12 @@ +class: 1-3 or 5-7 +row: 6-11 or 33-44 +seat: 13-40 or 45-50 + +your ticket: +7,1,14 + +nearby tickets: +7,3,47 +40,4,50 +55,2,20 +38,6,12 diff --git a/src/main/resources/2020-examples/day16-3.txt b/src/main/resources/2020-examples/day16-3.txt new file mode 100644 index 00000000..b48bf373 --- /dev/null +++ b/src/main/resources/2020-examples/day16-3.txt @@ -0,0 +1,11 @@ +class: 0-1 or 4-19 +row: 0-5 or 8-19 +seat: 0-13 or 16-19 + +your ticket: +11,12,13 + +nearby tickets: +3,9,18 +15,1,5 +5,14,9 diff --git a/src/main/resources/2020-examples/day17-1.txt b/src/main/resources/2020-examples/day17-1.txt new file mode 100644 index 00000000..eedd3d21 --- /dev/null +++ b/src/main/resources/2020-examples/day17-1.txt @@ -0,0 +1,3 @@ +.#. +..# +### diff --git a/src/main/resources/2020-examples/day17-2.txt b/src/main/resources/2020-examples/day17-2.txt new file mode 100644 index 00000000..abebc3ac --- /dev/null +++ b/src/main/resources/2020-examples/day17-2.txt @@ -0,0 +1,110 @@ +Before any cycles: + +z=0 +.#. +..# +### + + +After 1 cycle: + +z=-1 +#.. +..# +.#. + +z=0 +#.# +.## +.#. + +z=1 +#.. +..# +.#. + + +After 2 cycles: + +z=-2 +..... +..... +..#.. +..... +..... + +z=-1 +..#.. +.#..# +....# +.#... +..... + +z=0 +##... +##... +#.... +....# +.###. + +z=1 +..#.. +.#..# +....# +.#... +..... + +z=2 +..... +..... +..#.. +..... +..... + + +After 3 cycles: + +z=-2 +....... +....... +..##... +..###.. +....... +....... +....... + +z=-1 +..#.... +...#... +#...... +.....## +.#...#. +..#.#.. +...#... + +z=0 +...#... +....... +#...... +....... +.....## +.##.#.. +...#... + +z=1 +..#.... +...#... +#...... +.....## +.#...#. +..#.#.. +...#... + +z=2 +....... +....... +..##... +..###.. +....... +....... +....... diff --git a/src/main/resources/2020-examples/day17-3.txt b/src/main/resources/2020-examples/day17-3.txt new file mode 100644 index 00000000..b671c219 --- /dev/null +++ b/src/main/resources/2020-examples/day17-3.txt @@ -0,0 +1,232 @@ +Before any cycles: + +z=0, w=0 +.#. +..# +### + + +After 1 cycle: + +z=-1, w=-1 +#.. +..# +.#. + +z=0, w=-1 +#.. +..# +.#. + +z=1, w=-1 +#.. +..# +.#. + +z=-1, w=0 +#.. +..# +.#. + +z=0, w=0 +#.# +.## +.#. + +z=1, w=0 +#.. +..# +.#. + +z=-1, w=1 +#.. +..# +.#. + +z=0, w=1 +#.. +..# +.#. + +z=1, w=1 +#.. +..# +.#. + + +After 2 cycles: + +z=-2, w=-2 +..... +..... +..#.. +..... +..... + +z=-1, w=-2 +..... +..... +..... +..... +..... + +z=0, w=-2 +###.. +##.## +#...# +.#..# +.###. + +z=1, w=-2 +..... +..... +..... +..... +..... + +z=2, w=-2 +..... +..... +..#.. +..... +..... + +z=-2, w=-1 +..... +..... +..... +..... +..... + +z=-1, w=-1 +..... +..... +..... +..... +..... + +z=0, w=-1 +..... +..... +..... +..... +..... + +z=1, w=-1 +..... +..... +..... +..... +..... + +z=2, w=-1 +..... +..... +..... +..... +..... + +z=-2, w=0 +###.. +##.## +#...# +.#..# +.###. + +z=-1, w=0 +..... +..... +..... +..... +..... + +z=0, w=0 +..... +..... +..... +..... +..... + +z=1, w=0 +..... +..... +..... +..... +..... + +z=2, w=0 +###.. +##.## +#...# +.#..# +.###. + +z=-2, w=1 +..... +..... +..... +..... +..... + +z=-1, w=1 +..... +..... +..... +..... +..... + +z=0, w=1 +..... +..... +..... +..... +..... + +z=1, w=1 +..... +..... +..... +..... +..... + +z=2, w=1 +..... +..... +..... +..... +..... + +z=-2, w=2 +..... +..... +..#.. +..... +..... + +z=-1, w=2 +..... +..... +..... +..... +..... + +z=0, w=2 +###.. +##.## +#...# +.#..# +.###. + +z=1, w=2 +..... +..... +..... +..... +..... + +z=2, w=2 +..... +..... +..#.. +..... +..... diff --git a/src/main/resources/2020-examples/day18-1.txt b/src/main/resources/2020-examples/day18-1.txt new file mode 100644 index 00000000..5f810dc8 --- /dev/null +++ b/src/main/resources/2020-examples/day18-1.txt @@ -0,0 +1,6 @@ +1 + 2 * 3 + 4 * 5 + 6 + 3 * 3 + 4 * 5 + 6 + 9 + 4 * 5 + 6 + 13 * 5 + 6 + 65 + 6 + 71 diff --git a/src/main/resources/2020-examples/day18-2.txt b/src/main/resources/2020-examples/day18-2.txt new file mode 100644 index 00000000..93678d68 --- /dev/null +++ b/src/main/resources/2020-examples/day18-2.txt @@ -0,0 +1,6 @@ +1 + (2 * 3) + (4 * (5 + 6)) +1 + 6 + (4 * (5 + 6)) + 7 + (4 * (5 + 6)) + 7 + (4 * 11 ) + 7 + 44 + 51 diff --git a/src/main/resources/2020-examples/day18-3.txt b/src/main/resources/2020-examples/day18-3.txt new file mode 100644 index 00000000..3b7a73b0 --- /dev/null +++ b/src/main/resources/2020-examples/day18-3.txt @@ -0,0 +1,6 @@ +1 + 2 * 3 + 4 * 5 + 6 + 3 * 3 + 4 * 5 + 6 + 3 * 7 * 5 + 6 + 3 * 7 * 11 + 21 * 11 + 231 diff --git a/src/main/resources/2020-examples/day19-1.txt b/src/main/resources/2020-examples/day19-1.txt new file mode 100644 index 00000000..56eb7fbe --- /dev/null +++ b/src/main/resources/2020-examples/day19-1.txt @@ -0,0 +1,4 @@ +0: 1 2 +1: "a" +2: 1 3 | 3 1 +3: "b" diff --git a/src/main/resources/2020-examples/day19-2.txt b/src/main/resources/2020-examples/day19-2.txt new file mode 100644 index 00000000..6322c1be --- /dev/null +++ b/src/main/resources/2020-examples/day19-2.txt @@ -0,0 +1,6 @@ +0: 4 1 5 +1: 2 3 | 3 2 +2: 4 4 | 5 5 +3: 4 5 | 5 4 +4: "a" +5: "b" diff --git a/src/main/resources/2020-examples/day19-3.txt b/src/main/resources/2020-examples/day19-3.txt new file mode 100644 index 00000000..591df2ee --- /dev/null +++ b/src/main/resources/2020-examples/day19-3.txt @@ -0,0 +1,12 @@ +0: 4 1 5 +1: 2 3 | 3 2 +2: 4 4 | 5 5 +3: 4 5 | 5 4 +4: "a" +5: "b" + +ababbb +bababa +abbbab +aaabbb +aaaabbb diff --git a/src/main/resources/2020-examples/day19-4.txt b/src/main/resources/2020-examples/day19-4.txt new file mode 100644 index 00000000..811af37a --- /dev/null +++ b/src/main/resources/2020-examples/day19-4.txt @@ -0,0 +1,2 @@ +8: 42 | 42 8 +11: 42 31 | 42 11 31 diff --git a/src/main/resources/2020-examples/day19-5.txt b/src/main/resources/2020-examples/day19-5.txt new file mode 100644 index 00000000..0c639944 --- /dev/null +++ b/src/main/resources/2020-examples/day19-5.txt @@ -0,0 +1,47 @@ +42: 9 14 | 10 1 +9: 14 27 | 1 26 +10: 23 14 | 28 1 +1: "a" +11: 42 31 +5: 1 14 | 15 1 +19: 14 1 | 14 14 +12: 24 14 | 19 1 +16: 15 1 | 14 14 +31: 14 17 | 1 13 +6: 14 14 | 1 14 +2: 1 24 | 14 4 +0: 8 11 +13: 14 3 | 1 12 +15: 1 | 14 +17: 14 2 | 1 7 +23: 25 1 | 22 14 +28: 16 1 +4: 1 1 +20: 14 14 | 1 15 +3: 5 14 | 16 1 +27: 1 6 | 14 18 +14: "b" +21: 14 1 | 1 14 +25: 1 1 | 1 14 +22: 14 14 +8: 42 +26: 14 22 | 1 20 +18: 15 15 +7: 14 5 | 1 21 +24: 14 1 + +abbbbbabbbaaaababbaabbbbabababbbabbbbbbabaaaa +bbabbbbaabaabba +babbbbaabbbbbabbbbbbaabaaabaaa +aaabbbbbbaaaabaababaabababbabaaabbababababaaa +bbbbbbbaaaabbbbaaabbabaaa +bbbababbbbaaaaaaaabbababaaababaabab +ababaaaaaabaaab +ababaaaaabbbaba +baabbaaaabbaaaababbaababb +abbbbabbbbaaaababbbbbbaaaababb +aaaaabbaabaaaaababaa +aaaabbaaaabbaaa +aaaabbaabbaaaaaaabbbabbbaaabbaabaaa +babaaabbbaaabaababbaabababaaab +aabbbbbaabbbaaaaaabbbbbababaaaaabbaaabba diff --git a/src/main/resources/2020-examples/day2-1.txt b/src/main/resources/2020-examples/day2-1.txt new file mode 100644 index 00000000..fe19c03a --- /dev/null +++ b/src/main/resources/2020-examples/day2-1.txt @@ -0,0 +1,3 @@ +1-3 a: abcde +1-3 b: cdefg +2-9 c: ccccccccc diff --git a/src/main/resources/2020-examples/day20-1.txt b/src/main/resources/2020-examples/day20-1.txt new file mode 100644 index 00000000..b07aa4ba --- /dev/null +++ b/src/main/resources/2020-examples/day20-1.txt @@ -0,0 +1,107 @@ +Tile 2311: +..##.#..#. +##..#..... +#...##..#. +####.#...# +##.##.###. +##...#.### +.#.#.#..## +..#....#.. +###...#.#. +..###..### + +Tile 1951: +#.##...##. +#.####...# +.....#..## +#...###### +.##.#....# +.###.##### +###.##.##. +.###....#. +..#.#..#.# +#...##.#.. + +Tile 1171: +####...##. +#..##.#..# +##.#..#.#. +.###.####. +..###.#### +.##....##. +.#...####. +#.##.####. +####..#... +.....##... + +Tile 1427: +###.##.#.. +.#..#.##.. +.#.##.#..# +#.#.#.##.# +....#...## +...##..##. +...#.##### +.#.####.#. +..#..###.# +..##.#..#. + +Tile 1489: +##.#.#.... +..##...#.. +.##..##... +..#...#... +#####...#. +#..#.#.#.# +...#.#.#.. +##.#...##. +..##.##.## +###.##.#.. + +Tile 2473: +#....####. +#..#.##... +#.##..#... +######.#.# +.#...#.#.# +.######### +.###.#..#. +########.# +##...##.#. +..###.#.#. + +Tile 2971: +..#.#....# +#...###... +#.#.###... +##.##..#.. +.#####..## +.#..####.# +#..#.#..#. +..####.### +..#.#.###. +...#.#.#.# + +Tile 2729: +...#.#.#.# +####.#.... +..#.#..... +....#..#.# +.##..##.#. +.#.####... +####.#.#.. +##.####... +##..#.##.. +#.##...##. + +Tile 3079: +#.#.#####. +.#..###### +..#....... +######.... +####.#..#. +.#...#.##. +#.#####.## +..#.###... +..#....... +..#.###... diff --git a/src/main/resources/2020-examples/day20-2.txt b/src/main/resources/2020-examples/day20-2.txt new file mode 100644 index 00000000..f10b5651 --- /dev/null +++ b/src/main/resources/2020-examples/day20-2.txt @@ -0,0 +1,32 @@ +#...##.#.. ..###..### #.#.#####. +..#.#..#.# ###...#.#. .#..###### +.###....#. ..#....#.. ..#....... +###.##.##. .#.#.#..## ######.... +.###.##### ##...#.### ####.#..#. +.##.#....# ##.##.###. .#...#.##. +#...###### ####.#...# #.#####.## +.....#..## #...##..#. ..#.###... +#.####...# ##..#..... ..#....... +#.##...##. ..##.#..#. ..#.###... + +#.##...##. ..##.#..#. ..#.###... +##..#.##.. ..#..###.# ##.##....# +##.####... .#.####.#. ..#.###..# +####.#.#.. ...#.##### ###.#..### +.#.####... ...##..##. .######.## +.##..##.#. ....#...## #.#.#.#... +....#..#.# #.#.#.##.# #.###.###. +..#.#..... .#.##.#..# #.###.##.. +####.#.... .#..#.##.. .######... +...#.#.#.# ###.##.#.. .##...#### + +...#.#.#.# ###.##.#.. .##...#### +..#.#.###. ..##.##.## #..#.##..# +..####.### ##.#...##. .#.#..#.## +#..#.#..#. ...#.#.#.. .####.###. +.#..####.# #..#.#.#.# ####.###.. +.#####..## #####...#. .##....##. +##.##..#.. ..#...#... .####...#. +#.#.###... .##..##... .####.##.# +#...###... ..##...#.. ...#..#### +..#.#....# ##.#.#.... ...##..... diff --git a/src/main/resources/2020-examples/day20-3.txt b/src/main/resources/2020-examples/day20-3.txt new file mode 100644 index 00000000..a77bc42a --- /dev/null +++ b/src/main/resources/2020-examples/day20-3.txt @@ -0,0 +1,3 @@ +1951 2311 3079 +2729 1427 2473 +2971 1489 1171 diff --git a/src/main/resources/2020-examples/day20-4.txt b/src/main/resources/2020-examples/day20-4.txt new file mode 100644 index 00000000..855a3c5a --- /dev/null +++ b/src/main/resources/2020-examples/day20-4.txt @@ -0,0 +1,26 @@ +.#.#..#. ##...#.# #..##### +###....# .#....#. .#...... +##.##.## #.#.#..# #####... +###.#### #...#.## ###.#..# +##.#.... #.##.### #...#.## +...##### ###.#... .#####.# +....#..# ...##..# .#.###.. +.####... #..#.... .#...... + +#..#.##. .#..###. #.##.... +#.####.. #.####.# .#.###.. +###.#.#. ..#.#### ##.#..## +#.####.. ..##..## ######.# +##..##.# ...#...# .#.#.#.. +...#..#. .#.#.##. .###.### +.#.#.... #.##.#.. .###.##. +###.#... #..#.##. ######.. + +.#.#.### .##.##.# ..#.##.. +.####.## #.#...## #.#..#.# +..#.#..# ..#.#.#. ####.### +#..####. ..#.#.#. ###.###. +#####..# ####...# ##....## +#.##..#. .#...#.. ####...# +.#.###.. ##..##.. ####.##. +...###.. .##...#. ..#..### diff --git a/src/main/resources/2020-examples/day20-5.txt b/src/main/resources/2020-examples/day20-5.txt new file mode 100644 index 00000000..c04a7784 --- /dev/null +++ b/src/main/resources/2020-examples/day20-5.txt @@ -0,0 +1,24 @@ +.#.#..#.##...#.##..##### +###....#.#....#..#...... +##.##.###.#.#..######... +###.#####...#.#####.#..# +##.#....#.##.####...#.## +...########.#....#####.# +....#..#...##..#.#.###.. +.####...#..#.....#...... +#..#.##..#..###.#.##.... +#.####..#.####.#.#.###.. +###.#.#...#.######.#..## +#.####....##..########.# +##..##.#...#...#.#.#.#.. +...#..#..#.#.##..###.### +.#.#....#.##.#...###.##. +###.#...#..#.##.######.. +.#.#.###.##.##.#..#.##.. +.####.###.#...###.#..#.# +..#.#..#..#.#.#.####.### +#..####...#.#.#.###.###. +#####..#####...###....## +#.##..#..#...#..####...# +.#.###..##..##..####.##. +...###...##...#...#..### diff --git a/src/main/resources/2020-examples/day20-6.txt b/src/main/resources/2020-examples/day20-6.txt new file mode 100644 index 00000000..ab9cbbfa --- /dev/null +++ b/src/main/resources/2020-examples/day20-6.txt @@ -0,0 +1,3 @@ + # +# ## ## ### + # # # # # # diff --git a/src/main/resources/2020-examples/day20-7.txt b/src/main/resources/2020-examples/day20-7.txt new file mode 100644 index 00000000..8ec453bd --- /dev/null +++ b/src/main/resources/2020-examples/day20-7.txt @@ -0,0 +1,24 @@ +.####...#####..#...###.. +#####..#..#.#.####..#.#. +.#.#...#.###...#.##.O#.. +#.O.##.OO#.#.OO.##.OOO## +..#O.#O#.O##O..O.#O##.## +...#.#..##.##...#..#..## +#.##.#..#.#..#..##.#.#.. +.###.##.....#...###.#... +#.####.#.#....##.#..#.#. +##...#..#....#..#...#### +..#.##...###..#.#####..# +....#.##.#.#####....#... +..##.##.###.....#.##..#. +#...#...###..####....##. +.#.##...#.##.#.#.###...# +#.###.#..####...##..#... +#.###...#.##...#.##O###. +.O##.#OO.###OO##..OOO##. +..O#.O..O..O.#O##O##.### +#.#..##.########..#..##. +#.#####..#.#...##..#.... +#....##..#.#########..## +#...#.....#..##...###.## +#..###....##.#...##.##.# diff --git a/src/main/resources/2020-examples/day21-1.txt b/src/main/resources/2020-examples/day21-1.txt new file mode 100644 index 00000000..1c0ea2f1 --- /dev/null +++ b/src/main/resources/2020-examples/day21-1.txt @@ -0,0 +1,4 @@ +mxmxvkd kfcds sqjhc nhms (contains dairy, fish) +trh fvjkl sbzzf mxmxvkd (contains dairy) +sqjhc fvjkl (contains soy) +sqjhc mxmxvkd sbzzf (contains fish) diff --git a/src/main/resources/2020-examples/day22-1.txt b/src/main/resources/2020-examples/day22-1.txt new file mode 100644 index 00000000..391cd244 --- /dev/null +++ b/src/main/resources/2020-examples/day22-1.txt @@ -0,0 +1,13 @@ +Player 1: +9 +2 +6 +3 +1 + +Player 2: +5 +8 +4 +7 +10 diff --git a/src/main/resources/2020-examples/day22-2.txt b/src/main/resources/2020-examples/day22-2.txt new file mode 100644 index 00000000..7ee9be89 --- /dev/null +++ b/src/main/resources/2020-examples/day22-2.txt @@ -0,0 +1,62 @@ +-- Round 1 -- +Player 1's deck: 9, 2, 6, 3, 1 +Player 2's deck: 5, 8, 4, 7, 10 +Player 1 plays: 9 +Player 2 plays: 5 +Player 1 wins the round! + +-- Round 2 -- +Player 1's deck: 2, 6, 3, 1, 9, 5 +Player 2's deck: 8, 4, 7, 10 +Player 1 plays: 2 +Player 2 plays: 8 +Player 2 wins the round! + +-- Round 3 -- +Player 1's deck: 6, 3, 1, 9, 5 +Player 2's deck: 4, 7, 10, 8, 2 +Player 1 plays: 6 +Player 2 plays: 4 +Player 1 wins the round! + +-- Round 4 -- +Player 1's deck: 3, 1, 9, 5, 6, 4 +Player 2's deck: 7, 10, 8, 2 +Player 1 plays: 3 +Player 2 plays: 7 +Player 2 wins the round! + +-- Round 5 -- +Player 1's deck: 1, 9, 5, 6, 4 +Player 2's deck: 10, 8, 2, 7, 3 +Player 1 plays: 1 +Player 2 plays: 10 +Player 2 wins the round! + +...several more rounds pass... + +-- Round 27 -- +Player 1's deck: 5, 4, 1 +Player 2's deck: 8, 9, 7, 3, 2, 10, 6 +Player 1 plays: 5 +Player 2 plays: 8 +Player 2 wins the round! + +-- Round 28 -- +Player 1's deck: 4, 1 +Player 2's deck: 9, 7, 3, 2, 10, 6, 8, 5 +Player 1 plays: 4 +Player 2 plays: 9 +Player 2 wins the round! + +-- Round 29 -- +Player 1's deck: 1 +Player 2's deck: 7, 3, 2, 10, 6, 8, 5, 9, 4 +Player 1 plays: 1 +Player 2 plays: 7 +Player 2 wins the round! + + +== Post-game results == +Player 1's deck: +Player 2's deck: 3, 2, 10, 6, 8, 5, 9, 4, 7, 1 diff --git a/src/main/resources/2020-examples/day22-3.txt b/src/main/resources/2020-examples/day22-3.txt new file mode 100644 index 00000000..8aa598da --- /dev/null +++ b/src/main/resources/2020-examples/day22-3.txt @@ -0,0 +1,11 @@ + 3 * 10 ++ 2 * 9 ++ 10 * 8 ++ 6 * 7 ++ 8 * 6 ++ 5 * 5 ++ 9 * 4 ++ 4 * 3 ++ 7 * 2 ++ 1 * 1 += 306 diff --git a/src/main/resources/2020-examples/day22-4.txt b/src/main/resources/2020-examples/day22-4.txt new file mode 100644 index 00000000..a29e13aa --- /dev/null +++ b/src/main/resources/2020-examples/day22-4.txt @@ -0,0 +1,8 @@ +Player 1: +43 +19 + +Player 2: +2 +29 +14 diff --git a/src/main/resources/2020-examples/day22-5.txt b/src/main/resources/2020-examples/day22-5.txt new file mode 100644 index 00000000..d03ecf29 --- /dev/null +++ b/src/main/resources/2020-examples/day22-5.txt @@ -0,0 +1,234 @@ +=== Game 1 === + +-- Round 1 (Game 1) -- +Player 1's deck: 9, 2, 6, 3, 1 +Player 2's deck: 5, 8, 4, 7, 10 +Player 1 plays: 9 +Player 2 plays: 5 +Player 1 wins round 1 of game 1! + +-- Round 2 (Game 1) -- +Player 1's deck: 2, 6, 3, 1, 9, 5 +Player 2's deck: 8, 4, 7, 10 +Player 1 plays: 2 +Player 2 plays: 8 +Player 2 wins round 2 of game 1! + +-- Round 3 (Game 1) -- +Player 1's deck: 6, 3, 1, 9, 5 +Player 2's deck: 4, 7, 10, 8, 2 +Player 1 plays: 6 +Player 2 plays: 4 +Player 1 wins round 3 of game 1! + +-- Round 4 (Game 1) -- +Player 1's deck: 3, 1, 9, 5, 6, 4 +Player 2's deck: 7, 10, 8, 2 +Player 1 plays: 3 +Player 2 plays: 7 +Player 2 wins round 4 of game 1! + +-- Round 5 (Game 1) -- +Player 1's deck: 1, 9, 5, 6, 4 +Player 2's deck: 10, 8, 2, 7, 3 +Player 1 plays: 1 +Player 2 plays: 10 +Player 2 wins round 5 of game 1! + +-- Round 6 (Game 1) -- +Player 1's deck: 9, 5, 6, 4 +Player 2's deck: 8, 2, 7, 3, 10, 1 +Player 1 plays: 9 +Player 2 plays: 8 +Player 1 wins round 6 of game 1! + +-- Round 7 (Game 1) -- +Player 1's deck: 5, 6, 4, 9, 8 +Player 2's deck: 2, 7, 3, 10, 1 +Player 1 plays: 5 +Player 2 plays: 2 +Player 1 wins round 7 of game 1! + +-- Round 8 (Game 1) -- +Player 1's deck: 6, 4, 9, 8, 5, 2 +Player 2's deck: 7, 3, 10, 1 +Player 1 plays: 6 +Player 2 plays: 7 +Player 2 wins round 8 of game 1! + +-- Round 9 (Game 1) -- +Player 1's deck: 4, 9, 8, 5, 2 +Player 2's deck: 3, 10, 1, 7, 6 +Player 1 plays: 4 +Player 2 plays: 3 +Playing a sub-game to determine the winner... + +=== Game 2 === + +-- Round 1 (Game 2) -- +Player 1's deck: 9, 8, 5, 2 +Player 2's deck: 10, 1, 7 +Player 1 plays: 9 +Player 2 plays: 10 +Player 2 wins round 1 of game 2! + +-- Round 2 (Game 2) -- +Player 1's deck: 8, 5, 2 +Player 2's deck: 1, 7, 10, 9 +Player 1 plays: 8 +Player 2 plays: 1 +Player 1 wins round 2 of game 2! + +-- Round 3 (Game 2) -- +Player 1's deck: 5, 2, 8, 1 +Player 2's deck: 7, 10, 9 +Player 1 plays: 5 +Player 2 plays: 7 +Player 2 wins round 3 of game 2! + +-- Round 4 (Game 2) -- +Player 1's deck: 2, 8, 1 +Player 2's deck: 10, 9, 7, 5 +Player 1 plays: 2 +Player 2 plays: 10 +Player 2 wins round 4 of game 2! + +-- Round 5 (Game 2) -- +Player 1's deck: 8, 1 +Player 2's deck: 9, 7, 5, 10, 2 +Player 1 plays: 8 +Player 2 plays: 9 +Player 2 wins round 5 of game 2! + +-- Round 6 (Game 2) -- +Player 1's deck: 1 +Player 2's deck: 7, 5, 10, 2, 9, 8 +Player 1 plays: 1 +Player 2 plays: 7 +Player 2 wins round 6 of game 2! +The winner of game 2 is player 2! + +...anyway, back to game 1. +Player 2 wins round 9 of game 1! + +-- Round 10 (Game 1) -- +Player 1's deck: 9, 8, 5, 2 +Player 2's deck: 10, 1, 7, 6, 3, 4 +Player 1 plays: 9 +Player 2 plays: 10 +Player 2 wins round 10 of game 1! + +-- Round 11 (Game 1) -- +Player 1's deck: 8, 5, 2 +Player 2's deck: 1, 7, 6, 3, 4, 10, 9 +Player 1 plays: 8 +Player 2 plays: 1 +Player 1 wins round 11 of game 1! + +-- Round 12 (Game 1) -- +Player 1's deck: 5, 2, 8, 1 +Player 2's deck: 7, 6, 3, 4, 10, 9 +Player 1 plays: 5 +Player 2 plays: 7 +Player 2 wins round 12 of game 1! + +-- Round 13 (Game 1) -- +Player 1's deck: 2, 8, 1 +Player 2's deck: 6, 3, 4, 10, 9, 7, 5 +Player 1 plays: 2 +Player 2 plays: 6 +Playing a sub-game to determine the winner... + +=== Game 3 === + +-- Round 1 (Game 3) -- +Player 1's deck: 8, 1 +Player 2's deck: 3, 4, 10, 9, 7, 5 +Player 1 plays: 8 +Player 2 plays: 3 +Player 1 wins round 1 of game 3! + +-- Round 2 (Game 3) -- +Player 1's deck: 1, 8, 3 +Player 2's deck: 4, 10, 9, 7, 5 +Player 1 plays: 1 +Player 2 plays: 4 +Playing a sub-game to determine the winner... + +=== Game 4 === + +-- Round 1 (Game 4) -- +Player 1's deck: 8 +Player 2's deck: 10, 9, 7, 5 +Player 1 plays: 8 +Player 2 plays: 10 +Player 2 wins round 1 of game 4! +The winner of game 4 is player 2! + +...anyway, back to game 3. +Player 2 wins round 2 of game 3! + +-- Round 3 (Game 3) -- +Player 1's deck: 8, 3 +Player 2's deck: 10, 9, 7, 5, 4, 1 +Player 1 plays: 8 +Player 2 plays: 10 +Player 2 wins round 3 of game 3! + +-- Round 4 (Game 3) -- +Player 1's deck: 3 +Player 2's deck: 9, 7, 5, 4, 1, 10, 8 +Player 1 plays: 3 +Player 2 plays: 9 +Player 2 wins round 4 of game 3! +The winner of game 3 is player 2! + +...anyway, back to game 1. +Player 2 wins round 13 of game 1! + +-- Round 14 (Game 1) -- +Player 1's deck: 8, 1 +Player 2's deck: 3, 4, 10, 9, 7, 5, 6, 2 +Player 1 plays: 8 +Player 2 plays: 3 +Player 1 wins round 14 of game 1! + +-- Round 15 (Game 1) -- +Player 1's deck: 1, 8, 3 +Player 2's deck: 4, 10, 9, 7, 5, 6, 2 +Player 1 plays: 1 +Player 2 plays: 4 +Playing a sub-game to determine the winner... + +=== Game 5 === + +-- Round 1 (Game 5) -- +Player 1's deck: 8 +Player 2's deck: 10, 9, 7, 5 +Player 1 plays: 8 +Player 2 plays: 10 +Player 2 wins round 1 of game 5! +The winner of game 5 is player 2! + +...anyway, back to game 1. +Player 2 wins round 15 of game 1! + +-- Round 16 (Game 1) -- +Player 1's deck: 8, 3 +Player 2's deck: 10, 9, 7, 5, 6, 2, 4, 1 +Player 1 plays: 8 +Player 2 plays: 10 +Player 2 wins round 16 of game 1! + +-- Round 17 (Game 1) -- +Player 1's deck: 3 +Player 2's deck: 9, 7, 5, 6, 2, 4, 1, 10, 8 +Player 1 plays: 3 +Player 2 plays: 9 +Player 2 wins round 17 of game 1! +The winner of game 1 is player 2! + + +== Post-game results == +Player 1's deck: +Player 2's deck: 7, 5, 6, 2, 4, 1, 10, 8, 9, 3 diff --git a/src/main/resources/2020-examples/day23-1.txt b/src/main/resources/2020-examples/day23-1.txt new file mode 100644 index 00000000..19083b95 --- /dev/null +++ b/src/main/resources/2020-examples/day23-1.txt @@ -0,0 +1,52 @@ +-- move 1 -- +cups: (3) 8 9 1 2 5 4 6 7 +pick up: 8, 9, 1 +destination: 2 + +-- move 2 -- +cups: 3 (2) 8 9 1 5 4 6 7 +pick up: 8, 9, 1 +destination: 7 + +-- move 3 -- +cups: 3 2 (5) 4 6 7 8 9 1 +pick up: 4, 6, 7 +destination: 3 + +-- move 4 -- +cups: 7 2 5 (8) 9 1 3 4 6 +pick up: 9, 1, 3 +destination: 7 + +-- move 5 -- +cups: 3 2 5 8 (4) 6 7 9 1 +pick up: 6, 7, 9 +destination: 3 + +-- move 6 -- +cups: 9 2 5 8 4 (1) 3 6 7 +pick up: 3, 6, 7 +destination: 9 + +-- move 7 -- +cups: 7 2 5 8 4 1 (9) 3 6 +pick up: 3, 6, 7 +destination: 8 + +-- move 8 -- +cups: 8 3 6 7 4 1 9 (2) 5 +pick up: 5, 8, 3 +destination: 1 + +-- move 9 -- +cups: 7 4 1 5 8 3 9 2 (6) +pick up: 7, 4, 1 +destination: 5 + +-- move 10 -- +cups: (5) 7 4 1 8 3 9 2 6 +pick up: 7, 4, 1 +destination: 3 + +-- final -- +cups: 5 (8) 3 7 4 1 9 2 6 diff --git a/src/main/resources/2020-examples/day24-1.txt b/src/main/resources/2020-examples/day24-1.txt new file mode 100644 index 00000000..3dc2f673 --- /dev/null +++ b/src/main/resources/2020-examples/day24-1.txt @@ -0,0 +1,20 @@ +sesenwnenenewseeswwswswwnenewsewsw +neeenesenwnwwswnenewnwwsewnenwseswesw +seswneswswsenwwnwse +nwnwneseeswswnenewneswwnewseswneseene +swweswneswnenwsewnwneneseenw +eesenwseswswnenwswnwnwsewwnwsene +sewnenenenesenwsewnenwwwse +wenwwweseeeweswwwnwwe +wsweesenenewnwwnwsenewsenwwsesesenwne +neeswseenwwswnwswswnw +nenwswwsewswnenenewsenwsenwnesesenew +enewnwewneswsewnwswenweswnenwsenwsw +sweneswneswneneenwnewenewwneswswnese +swwesenesewenwneswnwwneseswwne +enesenwswwswneneswsenwnewswseenwsese +wnwnesenesenenwwnenwsewesewsesesew +nenewswnwewswnenesenwnesewesw +eneswnwswnwsenenwnwnwwseeswneewsenese +neswnwewnwnwseenwseesewsenwsweewe +wseweeenwnesenwwwswnew diff --git a/src/main/resources/2020-examples/day24-2.txt b/src/main/resources/2020-examples/day24-2.txt new file mode 100644 index 00000000..591897fa --- /dev/null +++ b/src/main/resources/2020-examples/day24-2.txt @@ -0,0 +1,20 @@ +Day 1: 15 +Day 2: 12 +Day 3: 25 +Day 4: 14 +Day 5: 23 +Day 6: 28 +Day 7: 41 +Day 8: 37 +Day 9: 49 +Day 10: 37 + +Day 20: 132 +Day 30: 259 +Day 40: 406 +Day 50: 566 +Day 60: 788 +Day 70: 1106 +Day 80: 1373 +Day 90: 1844 +Day 100: 2208 diff --git a/src/main/resources/2020-examples/day3-1.txt b/src/main/resources/2020-examples/day3-1.txt new file mode 100644 index 00000000..7e88cdc8 --- /dev/null +++ b/src/main/resources/2020-examples/day3-1.txt @@ -0,0 +1,11 @@ +..##....... +#...#...#.. +.#....#..#. +..#.#...#.# +.#...##..#. +..#.##..... +.#.#.#....# +.#........# +#.##...#... +#...##....# +.#..#...#.# diff --git a/src/main/resources/2020-examples/day3-2.txt b/src/main/resources/2020-examples/day3-2.txt new file mode 100644 index 00000000..d6d854c9 --- /dev/null +++ b/src/main/resources/2020-examples/day3-2.txt @@ -0,0 +1,11 @@ +..##.........##.........##.........##.........##.........##....... ---> +#...#...#..#...#...#..#...#...#..#...#...#..#...#...#..#...#...#.. +.#....#..#..#....#..#..#....#..#..#....#..#..#....#..#..#....#..#. +..#.#...#.#..#.#...#.#..#.#...#.#..#.#...#.#..#.#...#.#..#.#...#.# +.#...##..#..#...##..#..#...##..#..#...##..#..#...##..#..#...##..#. +..#.##.......#.##.......#.##.......#.##.......#.##.......#.##..... ---> +.#.#.#....#.#.#.#....#.#.#.#....#.#.#.#....#.#.#.#....#.#.#.#....# +.#........#.#........#.#........#.#........#.#........#.#........# +#.##...#...#.##...#...#.##...#...#.##...#...#.##...#...#.##...#... +#...##....##...##....##...##....##...##....##...##....##...##....# +.#..#...#.#.#..#...#.#.#..#...#.#.#..#...#.#.#..#...#.#.#..#...#.# ---> diff --git a/src/main/resources/2020-examples/day3-3.txt b/src/main/resources/2020-examples/day3-3.txt new file mode 100644 index 00000000..d9b7a71e --- /dev/null +++ b/src/main/resources/2020-examples/day3-3.txt @@ -0,0 +1,11 @@ +..##.........##.........##.........##.........##.........##....... ---> +#..O#...#..#...#...#..#...#...#..#...#...#..#...#...#..#...#...#.. +.#....X..#..#....#..#..#....#..#..#....#..#..#....#..#..#....#..#. +..#.#...#O#..#.#...#.#..#.#...#.#..#.#...#.#..#.#...#.#..#.#...#.# +.#...##..#..X...##..#..#...##..#..#...##..#..#...##..#..#...##..#. +..#.##.......#.X#.......#.##.......#.##.......#.##.......#.##..... ---> +.#.#.#....#.#.#.#.O..#.#.#.#....#.#.#.#....#.#.#.#....#.#.#.#....# +.#........#.#........X.#........#.#........#.#........#.#........# +#.##...#...#.##...#...#.X#...#...#.##...#...#.##...#...#.##...#... +#...##....##...##....##...#X....##...##....##...##....##...##....# +.#..#...#.#.#..#...#.#.#..#...X.#.#..#...#.#.#..#...#.#.#..#...#.# ---> diff --git a/src/main/resources/2020-examples/day4-1.txt b/src/main/resources/2020-examples/day4-1.txt new file mode 100644 index 00000000..0ff208e5 --- /dev/null +++ b/src/main/resources/2020-examples/day4-1.txt @@ -0,0 +1,13 @@ +ecl:gry pid:860033327 eyr:2020 hcl:#fffffd +byr:1937 iyr:2017 cid:147 hgt:183cm + +iyr:2013 ecl:amb cid:350 eyr:2023 pid:028048884 +hcl:#cfa07d byr:1929 + +hcl:#ae17e1 iyr:2013 +eyr:2024 +ecl:brn pid:760753108 byr:1931 +hgt:179cm + +hcl:#cfa07d eyr:2025 pid:166559648 +iyr:2011 ecl:brn hgt:59in diff --git a/src/main/resources/2020-examples/day4-2.txt b/src/main/resources/2020-examples/day4-2.txt new file mode 100644 index 00000000..4045b003 --- /dev/null +++ b/src/main/resources/2020-examples/day4-2.txt @@ -0,0 +1,17 @@ +byr valid: 2002 +byr invalid: 2003 + +hgt valid: 60in +hgt valid: 190cm +hgt invalid: 190in +hgt invalid: 190 + +hcl valid: #123abc +hcl invalid: #123abz +hcl invalid: 123abc + +ecl valid: brn +ecl invalid: wat + +pid valid: 000000001 +pid invalid: 0123456789 diff --git a/src/main/resources/2020-examples/day4-3.txt b/src/main/resources/2020-examples/day4-3.txt new file mode 100644 index 00000000..a7fa5bb8 --- /dev/null +++ b/src/main/resources/2020-examples/day4-3.txt @@ -0,0 +1,13 @@ +eyr:1972 cid:100 +hcl:#18171d ecl:amb hgt:170 pid:186cm iyr:2018 byr:1926 + +iyr:2019 +hcl:#602927 eyr:1967 hgt:170cm +ecl:grn pid:012533040 byr:1946 + +hcl:dab227 iyr:2012 +ecl:brn hgt:182cm pid:021572410 eyr:2020 byr:1992 cid:277 + +hgt:59cm ecl:zzz +eyr:2038 hcl:74454a iyr:2023 +pid:3556412378 byr:2007 diff --git a/src/main/resources/2020-examples/day4-4.txt b/src/main/resources/2020-examples/day4-4.txt new file mode 100644 index 00000000..ca41800e --- /dev/null +++ b/src/main/resources/2020-examples/day4-4.txt @@ -0,0 +1,12 @@ +pid:087499704 hgt:74in ecl:grn iyr:2012 eyr:2030 byr:1980 +hcl:#623a2f + +eyr:2029 ecl:blu cid:129 byr:1989 +iyr:2014 pid:896056539 hcl:#a97842 hgt:165cm + +hcl:#888785 +hgt:164cm byr:2001 iyr:2015 cid:88 +pid:545766238 ecl:hzl +eyr:2022 + +iyr:2010 hgt:158cm hcl:#b6652a ecl:blu byr:1944 eyr:2021 pid:093154719 diff --git a/src/main/resources/2020-examples/day6-1.txt b/src/main/resources/2020-examples/day6-1.txt new file mode 100644 index 00000000..a1bf3ea1 --- /dev/null +++ b/src/main/resources/2020-examples/day6-1.txt @@ -0,0 +1,3 @@ +abcx +abcy +abcz diff --git a/src/main/resources/2020-examples/day6-2.txt b/src/main/resources/2020-examples/day6-2.txt new file mode 100644 index 00000000..0f5b3bc1 --- /dev/null +++ b/src/main/resources/2020-examples/day6-2.txt @@ -0,0 +1,15 @@ +abc + +a +b +c + +ab +ac + +a +a +a +a + +b diff --git a/src/main/resources/2020-examples/day6-3.txt b/src/main/resources/2020-examples/day6-3.txt new file mode 100644 index 00000000..0f5b3bc1 --- /dev/null +++ b/src/main/resources/2020-examples/day6-3.txt @@ -0,0 +1,15 @@ +abc + +a +b +c + +ab +ac + +a +a +a +a + +b diff --git a/src/main/resources/2020-examples/day7-1.txt b/src/main/resources/2020-examples/day7-1.txt new file mode 100644 index 00000000..1cec74fb --- /dev/null +++ b/src/main/resources/2020-examples/day7-1.txt @@ -0,0 +1,9 @@ +light red bags contain 1 bright white bag, 2 muted yellow bags. +dark orange bags contain 3 bright white bags, 4 muted yellow bags. +bright white bags contain 1 shiny gold bag. +muted yellow bags contain 2 shiny gold bags, 9 faded blue bags. +shiny gold bags contain 1 dark olive bag, 2 vibrant plum bags. +dark olive bags contain 3 faded blue bags, 4 dotted black bags. +vibrant plum bags contain 5 faded blue bags, 6 dotted black bags. +faded blue bags contain no other bags. +dotted black bags contain no other bags. diff --git a/src/main/resources/2020-examples/day7-2.txt b/src/main/resources/2020-examples/day7-2.txt new file mode 100644 index 00000000..2723ca04 --- /dev/null +++ b/src/main/resources/2020-examples/day7-2.txt @@ -0,0 +1,7 @@ +shiny gold bags contain 2 dark red bags. +dark red bags contain 2 dark orange bags. +dark orange bags contain 2 dark yellow bags. +dark yellow bags contain 2 dark green bags. +dark green bags contain 2 dark blue bags. +dark blue bags contain 2 dark violet bags. +dark violet bags contain no other bags. diff --git a/src/main/resources/2020-examples/day8-1.txt b/src/main/resources/2020-examples/day8-1.txt new file mode 100644 index 00000000..178df531 --- /dev/null +++ b/src/main/resources/2020-examples/day8-1.txt @@ -0,0 +1,9 @@ +nop +0 +acc +1 +jmp +4 +acc +3 +jmp -3 +acc -99 +acc +1 +jmp -4 +acc +6 diff --git a/src/main/resources/2020-examples/day8-2.txt b/src/main/resources/2020-examples/day8-2.txt new file mode 100644 index 00000000..37253fad --- /dev/null +++ b/src/main/resources/2020-examples/day8-2.txt @@ -0,0 +1,9 @@ +nop +0 | 1 +acc +1 | 2, 8(!) +jmp +4 | 3 +acc +3 | 6 +jmp -3 | 7 +acc -99 | +acc +1 | 4 +jmp -4 | 5 +acc +6 | diff --git a/src/main/resources/2020-examples/day8-3.txt b/src/main/resources/2020-examples/day8-3.txt new file mode 100644 index 00000000..178df531 --- /dev/null +++ b/src/main/resources/2020-examples/day8-3.txt @@ -0,0 +1,9 @@ +nop +0 +acc +1 +jmp +4 +acc +3 +jmp -3 +acc -99 +acc +1 +jmp -4 +acc +6 diff --git a/src/main/resources/2020-examples/day8-4.txt b/src/main/resources/2020-examples/day8-4.txt new file mode 100644 index 00000000..4cdbeaad --- /dev/null +++ b/src/main/resources/2020-examples/day8-4.txt @@ -0,0 +1,9 @@ +nop +0 | 1 +acc +1 | 2 +jmp +4 | 3 +acc +3 | +jmp -3 | +acc -99 | +acc +1 | 4 +nop -4 | 5 +acc +6 | 6 diff --git a/src/main/resources/2020-examples/day9-1.txt b/src/main/resources/2020-examples/day9-1.txt new file mode 100644 index 00000000..28d66e4f --- /dev/null +++ b/src/main/resources/2020-examples/day9-1.txt @@ -0,0 +1,20 @@ +35 +20 +15 +25 +47 +40 +62 +55 +65 +95 +102 +117 +150 +182 +127 +219 +299 +277 +309 +576 diff --git a/src/main/resources/2020-examples/day9-2.txt b/src/main/resources/2020-examples/day9-2.txt new file mode 100644 index 00000000..28d66e4f --- /dev/null +++ b/src/main/resources/2020-examples/day9-2.txt @@ -0,0 +1,20 @@ +35 +20 +15 +25 +47 +40 +62 +55 +65 +95 +102 +117 +150 +182 +127 +219 +299 +277 +309 +576 diff --git a/src/main/resources/2020/day1.txt b/src/main/resources/2020/day1.txt new file mode 100644 index 00000000..804bf4ef --- /dev/null +++ b/src/main/resources/2020/day1.txt @@ -0,0 +1,200 @@ +1446 +1893 +1827 +1565 +1728 +497 +1406 +1960 +1986 +1945 +1731 +1925 +1550 +1841 +1789 +1952 +1610 +1601 +1776 +1808 +1812 +1834 +1454 +1729 +513 +1894 +1703 +1587 +1788 +1690 +1655 +1473 +1822 +1437 +1626 +1447 +1400 +1396 +1715 +1720 +1469 +1388 +1874 +1641 +518 +1664 +1552 +1800 +512 +1506 +1806 +1857 +1802 +1843 +1956 +1678 +1560 +1971 +1940 +1847 +1902 +1500 +1383 +1386 +1398 +1535 +1713 +1931 +1619 +1519 +1897 +1767 +1548 +1976 +1984 +1426 +914 +2000 +1585 +1634 +1832 +1849 +1665 +1609 +1670 +1520 +1490 +1746 +1608 +1829 +1431 +1762 +1384 +1504 +1434 +1356 +1654 +1719 +1599 +1686 +1489 +1377 +1531 +1912 +144 +1875 +1532 +1439 +1482 +1420 +1529 +1554 +1826 +1546 +1589 +1993 +1518 +1708 +1733 +1876 +1953 +1741 +1689 +773 +1455 +1613 +2004 +1819 +1725 +1617 +1498 +1651 +2007 +1402 +728 +1475 +1928 +1904 +1969 +1851 +1296 +1558 +1817 +1663 +1750 +1780 +1501 +1443 +1734 +1977 +1901 +1547 +1631 +1644 +1815 +1949 +1586 +1697 +1435 +1783 +1772 +1987 +1483 +1372 +1999 +1848 +1512 +1541 +1861 +2008 +1607 +1622 +1629 +1763 +1656 +1661 +1581 +1968 +1985 +1974 +1882 +995 +1704 +1896 +1611 +1888 +1773 +1810 +1650 +1712 +1410 +1796 +1691 +1671 +1947 +1775 +1593 +656 +1530 +1743 \ No newline at end of file diff --git a/src/main/resources/2020/day10.txt b/src/main/resources/2020/day10.txt new file mode 100644 index 00000000..aa35dabc --- /dev/null +++ b/src/main/resources/2020/day10.txt @@ -0,0 +1,112 @@ +111 +56 +160 +128 +25 +182 +131 +174 +87 +52 +23 +30 +93 +157 +36 +155 +183 +167 +130 +50 +71 +98 +42 +129 +18 +13 +99 +146 +81 +184 +1 +51 +137 +8 +9 +43 +115 +121 +171 +77 +97 +149 +83 +89 +2 +38 +139 +152 +29 +180 +10 +165 +114 +75 +82 +104 +108 +156 +96 +150 +105 +44 +100 +69 +72 +143 +32 +172 +84 +161 +118 +47 +17 +177 +7 +61 +4 +103 +66 +76 +138 +53 +88 +122 +22 +123 +37 +90 +134 +41 +64 +127 +166 +173 +168 +58 +26 +24 +33 +151 +57 +181 +31 +124 +140 +3 +19 +16 +80 +164 +70 +65 \ No newline at end of file diff --git a/src/main/resources/2020/day11.txt b/src/main/resources/2020/day11.txt new file mode 100644 index 00000000..bb233d3b --- /dev/null +++ b/src/main/resources/2020/day11.txt @@ -0,0 +1,90 @@ +LLLLL.LLLLLL.LLLLLLLLL.LLL.LL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLL.LLLLLLLLLL.LLLLLLL +LLLLL.LLLLLL.LLLLLLLLLLLLLLL.LLLLLLLL.LLLLL.LLL.LLLLLL.LLLL.LLLLL.LLLLLLLLLLL.LLLLLLLL.LLLLLLLLL +LLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLL.LLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLLLL +LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLL.LLLL.L.LLLLLLLLLLLLLLLLLLLLLLLLL.LLL.LLLL +LLLLL.L.LLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLL.LLLL.L.LLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLLLL +LLLLLLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLLLL.LLLLLLLLL.LLLLLLLL +L.LL.L.L.LL.....L.L..L.LL.L.L.L.....L..LLL.L.....L.L...LL..L.....L...L..L.LLLL..L.LL......L.L.L. +LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLL +LLLLL.LLLLLLLLLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLL.LLLLLLLLLLL.LLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLL +LLLLL.LLLLLL.LLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLL.LLLLLL.LLLL.LLLLLLLLL.LLLLLLLL +LLLLL.LLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLL.L.LLLLLLLLL.LLLLL.LLLLLLLLLLL.LLLLLLLLL.LLLLLLL. +LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLL.LLLL.LLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLL +......LL..LLLL.L...LL.....L.L.......L..L.LL....L.LLL........L.L.L.LL.....L.........L....L......L +LLLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLL.LL.LLLLL.LLLLLLLLLLL.LLLLLLLLL.LLLLLLLL +LLLLL.LLLLLL..LLLLLLL..LLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLL.LLL.LLLL.LLLLLLLLLLLLLLLLLL +LLLLL.LLLLLL.LLLLLLLLL.L.LLLL.LLLLLLLLLLLLLLLLL.LLLLLL.LLLL.L.LLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLLLL +LLLLL.LLLLLLLLLLLLLLLLLLLLLLL.LLLLLL..LLLLL.LLL.LLLLLL.LLLL.LLLLL.LLLLLL.LLLLLLLLLLLLLL.LLLLLLLL +LLLLL.LLLLLL.LLLLLLLLL.LLLL.L.LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLL.LLLLLLLLLLL.LLLLLLLLL.LLLLLLLL +LLLLLLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLL.LLLLLL.LLLL.LLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLL +.L...L...L.....L...L....L.LL.LLL.LL...LL.L..L...L......L..LL..L..LL..L.L......L.L.LLL......L.L.. +LLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLLLL +LLLLL.LLLLL.LLLLLLLLLLLLLLLLL.L.LLLLL.LLLLLLLLLLLLLLLL.LLLL.LLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLL +LLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLL.LLLLLL.LLLL.LLL.L.LLLLLL.LLLLLLLLLLLLLL.LLLLLLLL +LLLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLL.LLLLLLL.LLL.LLLLL.LLLLLL.LLLL.LLLLLLLLL.LLLLLLLL +LLLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLL.LLLLLLLLLLL.LL.LL.LLLLLL.LLLL.LLLLLLLLL.LLLLLLLL +...........LLL.....LLL.....LL.L..........L..L.L.L...L.L.....L........L......L..L..L...LL....L.L. +LLLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLL.LLLLLL.LLLL.LLLLL.LLLLL.LLLLL.LLLLLLLLL.LLLLLLLL +LLLLL.LLLLLL.LLLLLLLLL.LLLLL.LLLL.L.LLLL.LLLLLL.LLLLLL.LLLL.LLLLL.LLLLLL.LLLL.LLLLLLLLL.LLLLLLLL +LLLLL.LLLLLLLLLLLL.LLL.LLLLLL.LLLLLLL.LLLLLLLLL.LLLLLL.LLLL.LLLLLLLLLLLL.LLLL.LLLLLLL.L.LLLLLLLL +LLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLL.LLLL.LLLLLLLLLLLLLLLLLL +LLLLL.LLLLLL.L.LLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLLLLLLLLL.LLLL.LLLLLLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLL +.LLLL.LLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLL.LLLLLL.LLLL.LLLLL.LLLLLL.LLLL.LLLL.LLLLLLLLLLLLL +L.......LL...LL...L..L.....L..LL..L.L.LLL.L.L..L.LL.L.........L....LLLL..LL..L.L..L..LLLL..LL.L. +LLLLL.LLLLLL.LLL.LLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLL.LLLLLL..LLL.LLLLLLLLL.LLLLLLLL +LLLLL.LLLLLL.LLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLL +LLLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLL.LLLLLLLLLLL.LLLLL.LLLLLL.LLLLLLLLLLLLLL.LLLLLLLL +LLLLL.LLLLLL.LLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLL.LLLLLL.LLLL.LLLLL.LLLLLL.LLLL.LLLLLLLLL.LLLLLLLL +LLLLL.LLLLLLLLLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LL.LLLLLLLL +LLLLLLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLL.LLLLLLLLLLL.LLLLLLLLL.LLLLLLLL +....LLL.LL....L.L.........L.L............L..L...L.LLLL......L...L.L..L....L.......L..L.......... +LLLLLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLL..LLLLLLLL.LLLLLL.LL.L.LLLLL.LLLLLL.LLLLLL.LLLLLLL.LLLLLLLL +LLLLLLLLLLLL.LL.L.LLLL.LLLLLL.LLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLL.LLLLLL.LLLL.LLLLLLLLL.LLLLLLLL +LLLLL.LLLLLL.LLLLLLLLLLLLLLLL.L..LLL..LLLLLLLLL.LLLLLL.LLLL.L.LLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLL +LLLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLL.LLLLLL.LLLL.LLLLL..LLLLL.LLLLLLLLL.LLLL.LLLLLLLL +LLLLL.LLLLLL.LLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLL +.L..LLLL..L.L.LLL.......LL.LL.LL......L.L....L.LLL.......L...L.L.LL...LL.....L.L....L.L...L.L... +LLLLL.LLLLLL.LLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLL.LLLL.LLLLLLLLL.LLLLLLLL +LLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLL.LLLLL.LLLLLL.LLLLLLLLLLLLLLLLLL.LLLL +LLLLL.LL.LLL.LLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLL.LLLL..LLLLLL.LLLLLLLLLLLLLLLLLLLLLLL +LLLLL.LLLLLL..LLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLL.LLLL.LLLLLLLLL.LLLLL.LL +LLL.LLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLLLLLLLL +LLLL.LLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLL.LLLL.LLLLL.LLLLLLLLLL.LLLLLLLLLLLLLLLLLLL +.L..L..LLL....LL......LL.L.L..LL..LL....L...L..L.L.L...L..L..L.LLLL.L....L.....L..L...L...LLL... +LLLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLL.LLLLLL.LLLL.LLLLL.LLLLLLLLLLL.LLLLLLLLL.LLLLLLLL +LLLLLLLLLLLLL.LLLLLLLL.LLLLLL.LLLLLLLLLLLLLLL.L.LLLLLL.LLLL.LLL.LLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLL +LLLLLLLLLLLL.LLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL +LLLLL.LLLLLL.LLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLLLL.LL.LLL.LLLLLLLLLL.LLLLLL.LLLL.LLLLLLLLLLLLLLLLLL +LLLLL.LLLLLLLLLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLLLLLLLLL.LLLL.LLLLLLLLLLLL.LLLLLLLL.LLLLL.LLLLLLLL +LLLLL.LLLLLLLLLLLLLLL..LLLLLLLLLLLLLL.LLLLLL.LL.LLLLLLLLLLL.L.LLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLL +..LL.LL.L.LL.L...L..L..L..L...LL........L......LL.LLLL.......L..LLL.L.L....L.....L..LL..L.LL.LL. +LLLLL.LLLL.L.LLLLL.LLL.LLLLLL.LLLLLLL.LL.LLLLLL.LLLLLL.LLLL.LLLLL.LLLLLL.LLLLLLLLLLLLLL.LLLLLLLL +LLLLL.LLLLLL.LLLLLLLLL..LLLLL.LLLLLLL.LLLL.LLLLLLLLLLL.LLLL..LLLL.LLLLLLLLLLL.LLLLLLLLLLLLL.LLLL +LLLLL.LLLLLLLLLLLLLLL.L.LLLLL.LLLLLLLLLLLLLLLLL.LLLLLL.LLLL.LLLLLLLLL.LL.LLLL.LLLLLLLLL.LLLLLLLL +LLLLL.LLLLLL.LLLLLLLLL.LLLLL..LLLLLLLLLLLLLLL.L.LLLLLLLLLLL.LLLLLLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLL +LLLLL.LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLL.LLLL.LL.LL.LLL.LL.LLLLLLLLLLLLLL.LLLLLLLL +LLLLL.LLLLLL.LLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLL.LLLL.LLLLLLLLL.LLLLLLLL +LLLLL..LLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLL..LLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL +.LL..LL.L.LL......L.L.LL...L..LL..LL...L..L.L..LL...L.L..L.....L.LLL..L..LL.L..L.......L..LLL... +LLLLL.LLLLLL.LLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLLLL +LLLLLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLL.LLLLL.LLLLLLLLLLLLLLLLL +LLLLL.LLLLLLLLLLLLLLLL.LLLLLLLL.LLLLL.LLLLLLLLL.LLLLLL.LLLL.LLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLL +LLLLL..LLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLL..LLLL.LLLLLLLLL.LLLLLLLL +LLLLL.LLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLL.LLLLLLLLLLLLLL.LLLL.LLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLL +LLLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLL.LLLLLLLLL.LLLL.LLL.L.LLLLLL.LLLLLLLLLLLLLL.LLLLLLLL +LLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLL.LLLLLL.LLLL.LLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLL +LLLLL.LLL.LL.LLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLL.LL.LLL.LLLL.LLLLL.LLLLLL.LL.L.LLLLLLLLL.LLLLLLLL +LLLLL.LLLLLL.LLLLLLLLL.L.LLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLL.LLLL.LLLLLLLLL.LLLLLLLL +.L.L....LLL.L.L........L..L....L..L...LL..L..LLL..L.L....L..L.LL....LL.L.L.....L........L..L.L.. +LLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLL.LLLLLL.LLLL.LLLLLLLLL.LLLLLLLL +LLLLLLLLLL.LLLLLLLLLLL.LLLLLLLLLLLLLL.LL.LLLLLLLLLLLLL.LLLL.LLLLL.LLLLLL.LLLLLLLLLLLLLL.LLLLLLLL +LLLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLL.LLLLLL.LLLL.LLLLL.LLLLLLLLLLL.LLLLLLLLLLLLLL.LLL +LLLLL.LLLLLL.LLLLLLLLLLLLLL.L.LLLLLLL.LLLLLLLL.LLLLLLL.LLLL.LLLLL.LLLLLL.LLLL.LLLLL.LL..LLLLLLLL +LLLLL.LLLLLL.LLLLLLLLL.L.LLLL.LLLLLLL.LLLLLLLLL.LLLLLLLLLLL.LLLLL.LLLLLLLLLLL.LLLLLLLLL.LLLLLLLL +LLLLLLLLLLLL.LLLLLLLLLLLLL.LL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLL +LLLLL.LLLLLLLLLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLL.LLLLLLLLL.LLLLLLLL +LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLLL.LLLLL.LLLLLL.LLLL.LLLLLLLLLLLLLLLLLL +LLLL..L.LLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLLLLLLLLL.LLLL.LLLLL.LLLLLLLLLLL.LLLLLLLLL.LLLLLLLL +LLLLL..LLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLL.LLLLLL.LLLL.LLLLLLLLL.LLLLLL..LLLLLLLLL.LLLLLLLL +LLLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLLL.LLLLLLLLLLLLLLLLLLL.L.LL..LLLLLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLL \ No newline at end of file diff --git a/src/main/resources/2020/day12.txt b/src/main/resources/2020/day12.txt new file mode 100644 index 00000000..5299f07e --- /dev/null +++ b/src/main/resources/2020/day12.txt @@ -0,0 +1,747 @@ +S2 +W4 +F31 +N2 +E4 +F98 +R180 +W2 +N4 +E1 +L180 +W2 +S5 +F69 +W5 +F12 +E3 +F91 +R90 +E1 +L90 +F73 +W4 +N3 +R90 +F76 +R90 +F33 +W2 +L90 +F51 +E1 +S3 +L180 +F62 +N5 +L180 +N3 +E1 +L90 +F83 +R180 +W4 +F29 +E2 +L90 +L90 +N3 +W1 +S1 +E2 +L270 +L180 +N2 +E1 +F77 +N2 +F11 +L180 +E2 +F45 +N4 +W5 +S2 +L90 +N2 +F14 +L90 +W3 +F6 +N5 +E2 +R90 +E2 +L90 +F39 +L90 +F45 +W2 +F67 +W4 +F50 +E1 +F92 +W5 +F75 +N2 +W1 +S3 +R90 +W5 +F51 +L90 +E3 +F71 +N3 +E3 +F74 +E4 +S3 +W2 +L180 +E2 +S5 +L270 +R90 +N2 +R90 +E4 +L270 +S5 +E4 +W3 +L90 +N2 +F32 +E3 +N5 +E2 +R180 +F27 +S1 +R90 +F94 +E2 +F82 +N3 +L90 +F100 +W4 +L90 +S1 +E4 +F26 +R90 +R90 +F12 +W4 +F70 +L90 +F100 +W4 +S2 +R90 +E3 +F11 +L90 +F32 +L180 +S2 +F11 +S2 +L90 +S3 +E4 +F93 +S1 +R90 +S2 +F20 +E2 +F9 +S5 +F23 +E4 +S2 +F38 +L90 +N3 +F3 +E2 +F37 +N2 +F89 +E5 +F43 +R90 +F88 +N5 +F52 +W5 +F24 +E4 +L180 +S4 +E3 +F14 +L90 +S2 +E5 +L180 +N4 +F98 +N4 +W2 +S2 +W1 +S3 +R90 +F98 +E4 +R270 +E2 +F45 +L90 +F75 +R180 +W3 +L180 +F42 +E2 +N4 +L90 +F2 +R180 +W5 +E5 +N5 +R180 +F92 +L90 +F95 +E3 +F61 +S5 +E2 +L180 +E1 +E2 +F27 +S3 +W2 +S1 +F86 +R270 +S1 +L90 +R90 +E5 +S2 +S2 +F93 +E2 +R270 +N3 +W3 +F74 +R90 +F94 +E2 +F88 +S1 +R90 +W4 +L90 +N5 +F59 +R90 +N1 +F24 +S2 +F10 +L90 +F72 +L90 +F55 +N2 +E1 +R90 +N1 +E1 +F12 +L90 +S5 +E5 +F44 +L180 +S4 +E2 +E5 +S1 +E5 +R180 +S1 +R90 +N3 +L90 +E2 +S4 +L90 +R90 +W1 +R90 +E5 +N1 +L90 +N1 +E3 +S5 +W1 +S1 +L270 +E2 +E4 +F31 +S2 +E4 +N2 +W3 +L90 +F7 +S3 +F23 +S3 +E1 +F15 +S1 +L90 +E4 +S1 +L90 +N3 +W1 +F13 +R180 +S3 +F37 +N3 +W5 +S5 +L90 +F55 +F54 +R90 +E1 +N4 +F68 +S5 +F3 +L180 +F75 +N3 +R90 +W4 +F78 +S4 +S3 +R180 +N2 +R90 +N1 +F20 +L180 +F12 +S4 +E4 +L180 +F10 +E2 +N5 +E3 +F13 +E3 +L90 +F55 +E5 +F96 +W1 +F100 +R90 +F97 +W4 +W2 +N4 +W4 +N3 +E4 +R90 +S1 +W4 +F80 +W2 +L90 +F64 +W5 +S2 +W3 +R180 +W1 +S2 +F83 +R180 +F37 +W4 +N4 +F57 +E3 +R90 +F37 +S4 +R180 +F62 +R90 +S5 +F9 +E3 +N4 +L90 +W4 +R90 +F97 +W4 +R180 +F2 +W4 +S1 +F77 +L180 +R90 +E4 +F58 +S2 +L90 +E1 +N3 +L90 +N2 +W4 +N1 +L90 +F94 +E1 +R90 +F29 +S3 +L180 +E2 +R180 +S5 +F62 +L90 +N2 +R90 +E4 +F93 +L90 +E5 +N4 +L180 +N3 +F20 +R90 +E3 +L90 +S3 +F24 +E4 +R90 +E4 +F89 +N1 +F13 +R180 +W1 +L90 +S3 +W5 +S4 +L180 +W3 +F90 +S4 +E3 +F36 +S3 +E2 +F37 +E5 +F31 +L90 +F68 +S5 +F74 +L90 +F59 +R180 +F20 +N1 +L180 +N5 +L90 +E3 +N2 +W4 +F54 +L90 +F77 +R270 +S5 +F82 +R90 +E2 +L180 +F59 +R90 +E5 +R90 +F26 +E4 +F91 +R90 +W4 +F6 +W5 +F34 +S4 +F61 +W2 +S2 +R270 +F45 +R180 +N5 +L90 +F26 +L90 +R90 +S1 +W3 +N5 +W5 +L90 +N3 +L90 +N3 +E3 +L90 +F1 +E4 +L90 +F60 +N3 +F7 +S1 +E1 +F68 +L90 +N5 +E5 +F36 +W3 +S5 +L270 +N2 +E1 +R90 +F8 +S3 +E1 +R90 +N1 +E2 +R90 +N1 +F90 +E2 +F63 +S2 +F17 +S1 +E3 +L90 +E4 +L180 +N4 +W1 +S4 +L90 +S5 +F15 +W1 +N5 +W3 +F97 +S3 +L90 +S2 +F78 +N3 +W5 +L90 +F68 +E3 +F24 +S3 +L90 +W2 +L90 +F49 +W4 +R90 +F82 +R270 +S1 +N3 +L90 +S4 +R90 +S2 +F46 +L180 +E4 +L180 +W2 +R90 +L90 +N1 +F88 +L180 +S5 +R90 +S4 +L90 +F68 +W5 +F13 +E4 +S3 +F91 +W3 +F85 +L180 +N4 +W5 +S3 +F89 +W1 +L180 +S2 +E3 +F82 +L90 +S4 +W5 +N5 +W2 +S4 +S2 +F82 +E2 +N4 +L90 +F80 +E2 +F49 +W5 +S3 +F76 +L90 +S1 +F41 +S3 +E1 +F26 +E3 +F53 +E2 +F73 +W3 +R180 +N2 +R90 +N3 +R90 +F16 +L90 +N3 +N1 +W5 +F19 +R90 +N4 +W5 +F6 +E3 +N5 +W2 +N3 +E4 +S4 +L90 +E3 +S2 +F9 +L180 +F70 +N5 +S4 +F63 +N3 +E1 +R180 +S3 +L90 +E5 +L90 +F76 +R180 +E2 +L180 +L90 +F24 +E5 +S5 +F98 +S3 +F97 +N5 +R90 +N5 +F43 +W1 +R180 +F38 +R180 +F13 +W2 +F16 +R90 +F6 +N1 +F98 +R180 +N2 +E1 +F19 +L90 +S1 +F33 +R90 +N3 +F75 +N4 +L180 +F35 +W1 +F61 \ No newline at end of file diff --git a/src/main/resources/2020/day13.txt b/src/main/resources/2020/day13.txt new file mode 100644 index 00000000..69d7868d --- /dev/null +++ b/src/main/resources/2020/day13.txt @@ -0,0 +1,2 @@ +1005526 +37,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,41,x,x,x,x,x,x,x,x,x,587,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,13,19,x,x,x,23,x,x,x,x,x,29,x,733,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,17 \ No newline at end of file diff --git a/src/main/resources/2020/day14.txt b/src/main/resources/2020/day14.txt new file mode 100644 index 00000000..0d478a98 --- /dev/null +++ b/src/main/resources/2020/day14.txt @@ -0,0 +1,586 @@ +mask = X1011100000X111X01001000001110X00000 +mem[4616] = 8311689 +mem[8936] = 240 +mem[58007] = 369724 +mask = 10X0111X01X0XX110X10100X1001X000010X +mem[41137] = 232605 +mem[33757] = 1437435 +mask = X0011110100X011X01000X1000X1000X0100 +mem[12518] = 27521105 +mem[25203] = 3177 +mem[33089] = 636515 +mem[39100] = 494341 +mem[59321] = 16252 +mem[55061] = 1075 +mask = 1000X11X01X0X01111XX10110001X1110111 +mem[16129] = 15646 +mem[35714] = 30634 +mem[14485] = 6847 +mask = 10011110110000X10X0X1010XX1010100X00 +mem[2308] = 704945037 +mem[41472] = 19000 +mem[34542] = 334200 +mask = 11011X00X000001X0X00XX000011X001000X +mem[49552] = 397346 +mem[52482] = 244619 +mem[40387] = 339372 +mem[24387] = 1184014 +mask = 1000101XXXX100X1X1X10001X01000111101 +mem[42901] = 58252697 +mem[3604] = 2970 +mem[38806] = 78120216 +mask = 1XX01X1111000010011101001X1110XXXX11 +mem[16713] = 3710 +mem[47208] = 490 +mem[2864] = 835240 +mem[30001] = 92649470 +mask = 1X1101XX0XX1X011010X1000100011010X01 +mem[12306] = 9094 +mem[50276] = 737 +mem[44950] = 312069 +mask = 100X11101X00001X010X11XX00011010011X +mem[9068] = 2331 +mem[34800] = 29860461 +mem[18114] = 4912 +mem[38010] = 2912 +mem[59634] = 2460 +mem[18826] = 3632988 +mem[24839] = 87354329 +mask = 0100X1101X01001101010X11000XX01000X0 +mem[45994] = 1032 +mem[15104] = 353 +mem[43012] = 3302 +mem[3101] = 3195 +mem[58848] = 504541 +mem[48036] = 3990 +mask = 101011111100X010010X0X0X110111X10110 +mem[55860] = 425881800 +mem[49212] = 127188344 +mem[16320] = 45285651 +mask = 10X01110010X000X11000001000X0010X100 +mem[10403] = 4668 +mem[64] = 79964 +mem[52226] = 263 +mask = 1001X110110X0011010110001X01X0X01100 +mem[13086] = 15318901 +mem[14412] = 75226298 +mask = XX0011XX010000X11100000100010X1X0100 +mem[23984] = 1042686 +mem[43191] = 960403 +mem[304] = 17453 +mem[43446] = 312310 +mem[3612] = 7039 +mem[24387] = 1076710 +mem[35072] = 35503 +mask = 10001X10110X0XXX01010101X00110000X0X +mem[40240] = 74221428 +mem[19881] = 1055 +mem[61105] = 2705392 +mem[36207] = 117170 +mem[34315] = 1069384 +mem[24067] = 9021444 +mask = 100X1X1111000001X0010XX11X01101001X0 +mem[33794] = 809 +mem[62607] = 265070 +mem[59634] = 49282 +mem[61442] = 364 +mem[37003] = 628813 +mem[7946] = 644992 +mask = 1101X1000X0X001111X00111000100101001 +mem[31631] = 5264178 +mem[54754] = 1554399 +mem[23468] = 4729 +mask = 000111XX10X0001101X0X1001010X1XXX110 +mem[50043] = 4139464 +mem[49775] = 61509506 +mem[53862] = 156448 +mem[13334] = 87 +mem[18854] = 9282 +mem[34330] = 30468246 +mask = 00011110100X00X1X1X000X11001101001X0 +mem[31487] = 906990 +mem[52518] = 305801 +mem[49859] = 295219 +mem[31776] = 1816407 +mem[1947] = 7357561 +mem[46508] = 4130 +mem[17050] = 30862 +mask = 10001110110X000X0X01X10X00111000101X +mem[9293] = 1384 +mem[38283] = 2143609 +mem[34969] = 5179 +mem[63542] = 11640 +mem[27523] = 1345 +mask = 100111X0000000X1X10000100010100000X0 +mem[10736] = 216826655 +mem[45201] = 17886838 +mem[10901] = 638 +mem[32804] = 195074 +mask = 1101X1X0XX00111101X0000111111X110001 +mem[39181] = 416963 +mem[9249] = 23378 +mem[31817] = 28320828 +mem[2935] = 456520 +mem[13116] = 502217 +mem[43105] = 1629110 +mask = 1XXX111X1100X01X010110001X01101X1100 +mem[50732] = 3451 +mem[15501] = 841008 +mem[17518] = 59713011 +mem[20719] = 597200 +mem[304] = 4690251 +mem[54185] = 1478 +mem[64845] = 15752175 +mask = 110111000000X0X00X001X111000X1100010 +mem[8552] = 30412318 +mem[13116] = 1108685 +mem[6392] = 779855579 +mem[37617] = 3473324 +mem[51729] = 51848 +mem[57424] = 23802 +mem[15479] = 17 +mask = X00111101XX001111010011110X001000X01 +mem[25195] = 129734 +mem[11914] = 2701 +mem[2864] = 25833 +mask = 1001111X11X10XXX0X00101010110X00X001 +mem[41424] = 106207900 +mem[48133] = 43924223 +mem[49702] = 179742 +mask = 10011X111101000X00XX1X0X101110001001 +mem[34101] = 640437195 +mem[41745] = 203723 +mask = 110111X011011011X100101X10100100000X +mem[348] = 627305 +mem[12497] = 7501 +mem[805] = 3988 +mem[60636] = 184971943 +mask = 100111001000001X0100X10011X00001XXX0 +mem[50944] = 202043 +mem[34140] = 15663180 +mem[2200] = 1479 +mem[27465] = 82898391 +mask = 000X11111X10001101X00X01101X0001011X +mem[37944] = 6895727 +mem[61573] = 409349871 +mem[50342] = 61513 +mem[13583] = 22407 +mem[59968] = 102419 +mem[2136] = 114207754 +mem[30421] = 997 +mask = 100111101X0X0011010X1XX01XX1X010010X +mem[13083] = 207 +mem[10383] = 31056 +mem[59321] = 402034 +mem[22966] = 20228 +mem[23372] = 779 +mem[25895] = 1614 +mem[11288] = 3047 +mask = 1101110000000001XX0X111X1001XXX1110X +mem[31200] = 6875882 +mem[26216] = 947 +mem[5932] = 72207364 +mem[64126] = 1260 +mem[24890] = 3898 +mem[61396] = 2240803 +mask = 10001X101X0XX0110X01010011011X001110 +mem[27866] = 740 +mem[19123] = 32418 +mem[23286] = 13542 +mem[50342] = 34812801 +mem[19362] = 12615968 +mem[23756] = 107442819 +mask = 100X111X1100X11X0X0X000X1X1001110110 +mem[2772] = 3055 +mem[8755] = 581 +mem[60512] = 906058 +mem[22390] = 3925820 +mem[15876] = 280704 +mem[40784] = 1550 +mask = X000101X1100001011X10001000110010X00 +mem[182] = 466813 +mem[15844] = 21827 +mem[4813] = 19124 +mem[49362] = 2261 +mask = 11011X00110X1X10010X0X110111101010XX +mem[37402] = 839 +mem[35835] = 3289 +mem[21867] = 10856 +mem[32498] = 1600115 +mem[35408] = 547736 +mask = 1111110000010X1X11X00100X0X110101X01 +mem[1140] = 1767723 +mem[18180] = 11108349 +mem[19129] = 115 +mem[7955] = 103275871 +mask = 1000101X1X00000X0XX1100001X11X1100X0 +mem[39668] = 7209001 +mem[57657] = 873105 +mem[21665] = 441551 +mem[20895] = 390 +mem[42377] = 98696816 +mem[38513] = 18489 +mask = 1001101X110X000XX001110X10011X10110X +mem[63570] = 15065690 +mem[3660] = 49298 +mem[27417] = 427585 +mem[37005] = 58080842 +mem[21145] = 45587769 +mem[59405] = 235561467 +mask = 1XX100000000X001010X0001010X00010010 +mem[61696] = 13179282 +mem[60388] = 14504403 +mem[54528] = 139910709 +mem[10543] = 2877271 +mem[44950] = 1250 +mask = 100111100X000111110000X0000X00X001X1 +mem[34901] = 4089 +mem[7491] = 4875619 +mem[30899] = 358791983 +mem[63542] = 48357 +mem[55865] = 289 +mask = XX0X1110100100X10100010010XX00100100 +mem[1939] = 9240 +mem[13700] = 884 +mem[56638] = 5690182 +mem[38174] = 2173 +mem[52518] = 54887 +mask = 1X001X111100X0X10X01XX001X11101X1100 +mem[13834] = 15183481 +mem[65481] = 29968 +mem[23863] = 467501 +mem[19360] = 167115 +mem[7268] = 8208487 +mem[14485] = 158 +mask = 100111101100001XX1011000001X0X100000 +mem[8868] = 484089989 +mem[53350] = 4089002 +mem[57545] = 6025444 +mem[28491] = 45516050 +mask = 1000111XX10000X00111X101X0X010101XXX +mem[39822] = 451680949 +mem[57061] = 370534242 +mask = 10001X10110X0010X111XX0100X11010X11X +mem[16975] = 239223476 +mem[21172] = 15004 +mem[14883] = 71129165 +mask = 10X0X1111100X0100111010101X110000110 +mem[20805] = 1015445496 +mem[14229] = 217524 +mem[40036] = 2501 +mem[41119] = 17208160 +mem[56826] = 349928 +mem[57555] = 884 +mask = 000X11101000001101XX1000000000100X00 +mem[35523] = 32624 +mem[36012] = 9499537 +mem[38756] = 421 +mem[14024] = 190459520 +mem[13308] = 1286846 +mem[37150] = 4205580 +mask = 1X01111011000X1X0100100X011001110100 +mem[40710] = 2279 +mem[34963] = 2267645 +mem[12759] = 643 +mem[17704] = 5597582 +mem[30411] = 351996998 +mem[16505] = 272444 +mask = 10X111101X010X1X0X0010011001000X0110 +mem[39356] = 22255 +mem[48815] = 1638 +mem[34690] = 420690 +mem[16320] = 104253 +mem[53422] = 477 +mask = 100011X0XX01XX10111111010X0010011111 +mem[54065] = 24449 +mem[10993] = 12705817 +mem[47121] = 284443 +mem[36383] = 512188 +mem[18814] = 159439379 +mem[17770] = 99104 +mask = 110111000X000X010101X11X101X00000X11 +mem[51615] = 735360 +mem[62469] = 15939 +mask = 100X1110XX000X11X100100X00000X00X10X +mem[14772] = 38635 +mem[29236] = 13420 +mem[62613] = 47790 +mem[39212] = 167702 +mem[8936] = 106407539 +mem[38934] = 332 +mask = 0X00111010010011X10X0X0XX001X010000X +mem[63621] = 996 +mem[56538] = 52673058 +mem[37764] = 995346 +mem[32132] = 103636989 +mem[15733] = 13086 +mem[44188] = 194198 +mask = 0101010010000011X11010011X1X0X101X01 +mem[46447] = 784 +mem[13324] = 3401 +mem[22200] = 165702 +mem[7955] = 649 +mem[15844] = 2690647 +mem[64010] = 1096 +mask = 11X1X1X001X11X11010XX01000X011010010 +mem[24806] = 1221 +mem[53291] = 1348383 +mem[55875] = 25945782 +mem[4492] = 1904 +mem[59333] = 2401690 +mem[47121] = 1839078 +mask = 10011110X10100X1X10X0010110010110110 +mem[40541] = 11787096 +mem[62086] = 2967 +mem[28799] = 4008988 +mem[64917] = 268674 +mem[18114] = 2655847 +mem[45757] = 57333538 +mem[44645] = 644597 +mask = X000111000000X1111XX10X1000X0111X100 +mem[10448] = 1060 +mem[31631] = 77787880 +mem[42148] = 6070584 +mem[57082] = 485245396 +mem[52482] = 21478 +mask = 100XX11011000X11010X0010X00X10X0110X +mem[2017] = 14320 +mem[3101] = 714880 +mem[33316] = 105398 +mem[28361] = 127078137 +mem[23616] = 10309 +mem[16594] = 13326311 +mask = X001111001X0XX1101X01011X0110X1X1100 +mem[43153] = 29487947 +mem[46646] = 3335247 +mem[17123] = 27270587 +mem[5225] = 16921674 +mem[30789] = 418871729 +mask = 110X011010001111011000X111011XXX0100 +mem[10985] = 214477 +mem[13116] = 27310 +mem[5115] = 1416 +mem[12596] = 453023 +mem[11737] = 24916 +mem[14311] = 6470 +mem[10361] = 300 +mask = 000X11XX100000110110111110100X1101XX +mem[22040] = 1941817 +mem[38002] = 7734399 +mem[48736] = 31798852 +mem[47426] = 204659941 +mem[11288] = 15341 +mask = 10X10X000001001X1100X010X011100X1001 +mem[42377] = 129247876 +mem[27828] = 50890049 +mask = 10001110010000X1110010101011X101X01X +mem[57528] = 3471 +mem[23114] = 96086679 +mem[8446] = 38698 +mem[14844] = 792092 +mem[42506] = 31779 +mem[64009] = 10029 +mem[42731] = 172808 +mask = 1101XX000000X0X1010010000001000X00XX +mem[426] = 11039 +mem[23258] = 556641472 +mem[51919] = 15137974 +mem[21761] = 530 +mem[21377] = 850024656 +mem[59501] = 531065557 +mask = 10001X10010X0X1101X00010100X1011X001 +mem[43269] = 9515743 +mem[426] = 5602 +mem[2308] = 381075 +mem[57933] = 56242190 +mem[48133] = 597263 +mask = 10X111X010X10011X1011000100100111100 +mem[53350] = 383807 +mem[37410] = 1044 +mem[62086] = 14451 +mask = X001111010XXX01101001001XX1001101000 +mem[12756] = 551 +mem[1027] = 656489115 +mem[60702] = 336416 +mem[42396] = 60622 +mem[3436] = 1377859 +mem[17518] = 1451 +mask = 10011110100X00110100100X000XX00001XX +mem[42037] = 79130078 +mem[34850] = 3303 +mask = XX011X1010010011010110000X0100100X1X +mem[30581] = 949124 +mem[18437] = 1990679 +mem[2340] = 174075070 +mem[46975] = 5827 +mem[9421] = 107926 +mem[28836] = 6636869 +mask = 1X01X100X00X001XX1000X0X000110X00001 +mem[53904] = 2238757 +mem[22157] = 13388 +mem[59321] = 31451373 +mem[31277] = 110705865 +mask = 100X1111X100001101X1X11100X010101101 +mem[64929] = 5596232 +mem[42822] = 12360220 +mem[49391] = 650 +mem[527] = 1337719 +mem[56173] = 44948559 +mem[64845] = 51705729 +mask = 100X11X0X10X0XX101000000101X0010X11X +mem[63581] = 62572875 +mem[52795] = 23120259 +mem[38228] = 737964538 +mem[45105] = 480 +mem[33059] = 273619504 +mem[60636] = 73 +mask = 1X0111X01100001101001X00X00000100110 +mem[2592] = 114883 +mem[61691] = 2066 +mem[51873] = 208 +mask = 110X100X110X10XX1100101XX01X10111X01 +mem[28341] = 144281151 +mem[36729] = 56472321 +mem[63409] = 10778 +mem[21172] = 63301 +mem[1101] = 3785 +mask = 100111100X00001101X01X00001110X01XX1 +mem[36813] = 990295316 +mem[44821] = 179862368 +mem[45561] = 12722 +mem[54859] = 19017266 +mem[50564] = 167811030 +mem[43704] = 126046154 +mask = 10001X10X1000011X1000X00100100110010 +mem[42747] = 1659054 +mem[10403] = 568236 +mem[45045] = 43419 +mem[31809] = 59431 +mem[49382] = 16398 +mem[56638] = 387921470 +mask = 11X1X1000001X01011X0X1X0XX1010001001 +mem[15844] = 133202 +mem[59321] = 81765 +mem[19566] = 8456988 +mem[51120] = 1362 +mask = 1001X11XX0000011X10011100X0010000001 +mem[49173] = 1284 +mem[3884] = 8094 +mem[32207] = 12943 +mem[32916] = 43847 +mem[45] = 78615226 +mem[47659] = 4559 +mask = 10011X101X000111X0X000101010001X0X01 +mem[47504] = 3997682 +mem[630] = 49259614 +mem[23114] = 688 +mem[62188] = 12822166 +mem[65077] = 459034 +mask = X101010XX000X01101X010X0011100101000 +mem[26001] = 1543 +mem[48133] = 288946 +mem[53422] = 18943982 +mask = 1X00XXX1110X00110101X0111100X010000X +mem[33738] = 196926637 +mem[37664] = 623 +mem[48029] = 5133 +mem[23732] = 23735 +mem[30329] = 212916554 +mem[8552] = 119946627 +mem[6631] = 1907 +mask = 1XX11100X000001X01X01100X10X000100X0 +mem[1703] = 775689020 +mem[2780] = 3545 +mem[2818] = 234302 +mask = 1001X1XX100000110100000001X0001X0101 +mem[61417] = 120523 +mem[13083] = 2308 +mem[32789] = 3997976 +mem[50116] = 778868811 +mem[8936] = 61495467 +mem[12206] = 208 +mask = 100111X0X00000X1010000100000001011XX +mem[9421] = 2972812 +mem[34256] = 2423170 +mem[36762] = 36668 +mem[19241] = 64537 +mem[31618] = 1055988588 +mask = X00X101111000X0100010XX0X111X01010X0 +mem[49552] = 27782759 +mem[9251] = 4816 +mem[14980] = 3017 +mask = X0X10000X000X00X01X1010111111X11X110 +mem[40421] = 51130 +mem[60996] = 34278 +mem[64961] = 414 +mask = 1000111X1100001001X1X10XX0010X0XXX00 +mem[52359] = 763212311 +mem[44171] = 9117448 +mem[49702] = 8926626 +mem[2466] = 2011885 +mem[10736] = 383225 +mem[38555] = 14408818 +mem[19362] = 677100 +mask = 100011X1110XX010011X1100X001X001X11X +mem[60702] = 1681285 +mem[33941] = 249 +mem[33060] = 48065 +mem[6660] = 11635 +mask = 10X1111X1X000011010X1X0XX10000110X00 +mem[33592] = 7818 +mem[20643] = 5562857 +mem[61417] = 482 +mem[25002] = 18611 +mask = 1X011000110010X0X100101XX111X1X100X1 +mem[15042] = 1048663 +mem[46450] = 906445926 +mem[65481] = 325 +mem[8090] = 145570 +mem[46447] = 2513 +mask = 11X101X01X00XX11X10000000X11X00X0000 +mem[9686] = 6175651 +mem[55574] = 42723 +mem[37505] = 2089 +mem[64151] = 6581 +mem[24387] = 3109 +mem[56931] = 0 +mask = 11011100XX0X1X1X010010010X1X10X000X0 +mem[42506] = 1351 +mem[15066] = 30271 +mem[426] = 4269668 +mem[20864] = 120804232 +mem[14675] = 1430376 +mask = X00X111X110000110100X000101100101000 +mem[16379] = 14955 +mem[63542] = 294779946 +mem[43782] = 14023312 +mem[50116] = 68098604 +mem[6346] = 2828888 +mask = 1XX0X1100110XX11X0101011100000100100 +mem[27465] = 802232 +mem[46780] = 18542342 +mem[19044] = 4213 +mem[39202] = 76554568 +mem[33173] = 68587 +mask = 10X1111111110101X100001010X1000001X1 +mem[57043] = 971606118 +mem[46661] = 8089 +mem[38403] = 32188546 +mem[18704] = 630312774 +mem[16594] = 54138487 +mask = 1XX1100X00X0001001000000000X000100X1 +mem[33536] = 5526445 +mem[3755] = 929 +mem[5733] = 77809 +mem[14065] = 15212249 +mem[34315] = 1058941 +mask = X00111101X000011010XX0X110100X01X00X +mem[33910] = 15336 +mem[29561] = 16371540 +mem[10901] = 273 +mask = 100011X101000001110X01001X0011X001X0 +mem[23567] = 675387 +mem[7604] = 2997382 +mem[16594] = 858806 +mem[47216] = 549 +mem[15386] = 126092 \ No newline at end of file diff --git a/src/main/resources/2020/day15.txt b/src/main/resources/2020/day15.txt new file mode 100644 index 00000000..2c21f449 --- /dev/null +++ b/src/main/resources/2020/day15.txt @@ -0,0 +1 @@ +1,0,16,5,17,4 \ No newline at end of file diff --git a/src/main/resources/2020/day16.txt b/src/main/resources/2020/day16.txt new file mode 100644 index 00000000..b07d0c2b --- /dev/null +++ b/src/main/resources/2020/day16.txt @@ -0,0 +1,270 @@ +departure location: 41-598 or 605-974 +departure station: 30-617 or 625-957 +departure platform: 29-914 or 931-960 +departure track: 39-734 or 756-972 +departure date: 37-894 or 915-956 +departure time: 48-54 or 70-955 +arrival location: 39-469 or 491-955 +arrival station: 47-269 or 282-949 +arrival platform: 26-500 or 521-960 +arrival track: 26-681 or 703-953 +class: 49-293 or 318-956 +duration: 25-861 or 873-973 +price: 30-446 or 465-958 +route: 50-525 or 551-973 +row: 39-129 or 141-972 +seat: 37-566 or 573-953 +train: 43-330 or 356-969 +type: 32-770 or 792-955 +wagon: 47-435 or 446-961 +zone: 30-155 or 179-957 + +your ticket: +71,127,181,179,113,109,79,151,97,107,53,193,73,83,191,101,89,149,103,197 + +nearby tickets: +909,469,709,246,389,667,389,288,817,242,942,255,428,712,187,861,821,552,229,253 +373,887,919,576,884,946,794,434,376,843,327,658,587,232,796,228,671,878,947,559 +554,199,222,610,427,81,235,884,947,81,670,672,643,369,805,611,892,615,274,658 +261,378,571,124,111,153,801,196,830,759,257,189,361,382,942,889,613,493,496,320 +98,265,894,196,859,594,267,99,7,286,616,665,97,356,524,382,641,290,563,813 +947,259,423,939,155,608,282,150,890,147,140,323,808,284,466,725,214,799,96,86 +631,265,836,523,86,147,557,542,610,647,398,730,242,243,717,705,72,811,734,556 +746,577,386,713,646,127,433,399,243,218,949,225,933,244,827,726,189,625,358,859 +90,670,369,154,97,110,188,829,585,383,828,469,190,837,199,245,668,585,400,136 +221,855,756,92,86,207,414,395,183,731,591,239,114,798,212,609,708,252,594,602 +401,816,196,703,822,792,522,605,119,793,259,254,384,815,552,83,874,582,137,812 +186,677,891,259,730,424,653,655,397,947,689,107,363,711,182,415,757,667,70,860 +933,401,208,402,388,358,552,713,720,185,307,183,834,141,433,596,641,394,358,665 +193,239,553,809,250,466,801,124,776,200,430,376,143,580,367,51,764,576,824,390 +378,658,705,644,657,561,521,703,854,375,679,320,500,216,138,614,254,758,124,287 +70,808,469,189,323,847,393,833,830,234,883,188,229,830,853,986,673,641,83,406 +421,703,741,78,586,116,833,628,182,662,629,258,202,495,674,96,670,101,328,287 +608,821,634,155,117,661,103,781,84,756,770,321,119,362,816,681,879,878,759,420 +626,239,647,839,2,228,265,293,576,949,592,410,659,885,434,379,257,947,794,671 +666,252,811,370,328,54,716,241,874,757,50,495,652,75,933,935,144,1,143,101 +594,283,842,605,894,98,368,803,114,797,5,98,379,932,330,200,680,584,645,824 +492,290,76,579,100,762,856,812,148,617,183,833,380,757,52,293,68,875,366,873 +792,582,392,329,210,846,662,388,310,183,705,410,100,769,125,719,251,366,71,87 +558,669,801,80,881,497,981,112,582,597,97,804,652,938,671,842,617,287,708,422 +376,802,398,708,389,581,403,212,851,651,225,848,150,791,118,834,857,83,680,592 +358,803,629,933,416,944,226,706,795,5,936,129,467,849,253,829,179,734,228,244 +433,825,67,236,388,858,880,427,943,400,842,723,564,633,408,79,836,592,704,328 +366,402,988,892,469,941,829,90,876,662,879,556,200,590,86,733,229,768,421,409 +316,397,806,848,148,382,641,92,850,366,633,392,373,642,793,635,240,826,144,389 +318,647,154,382,597,672,321,238,220,88,674,472,402,521,121,769,326,795,890,221 +946,385,361,855,598,399,361,409,595,852,225,588,368,556,826,853,721,232,6,850 +847,323,626,254,719,938,122,656,806,578,88,556,229,894,579,105,554,266,152,342 +207,396,152,390,704,854,563,128,658,254,610,801,221,302,398,89,149,845,403,847 +793,180,225,427,723,721,793,811,212,380,270,817,180,770,359,196,415,494,229,383 +894,815,641,356,239,143,384,759,469,586,772,598,800,633,606,358,651,109,805,796 +551,102,940,715,831,560,399,599,591,250,816,246,587,852,382,416,284,636,585,420 +858,643,758,564,84,821,388,183,259,627,647,523,404,251,779,551,731,73,733,185 +647,948,663,241,837,219,687,522,521,796,122,756,418,876,887,942,795,74,762,244 +500,224,845,426,800,388,492,11,829,183,393,804,889,838,181,807,586,417,829,98 +77,936,231,116,211,874,385,572,357,248,825,374,833,236,384,769,764,855,71,794 +268,856,941,677,449,384,242,187,218,236,821,655,811,400,197,798,415,198,219,211 +664,183,420,189,400,846,584,611,82,204,585,263,614,498,608,278,425,680,612,707 +111,270,420,838,196,844,616,392,415,107,652,153,729,757,664,522,183,499,805,499 +651,467,949,825,628,798,149,876,245,765,936,653,292,523,640,247,403,389,230,507 +717,627,678,145,826,195,197,402,981,240,885,524,207,521,287,647,680,232,208,408 +108,648,823,724,267,212,625,644,363,222,880,894,230,397,560,138,217,384,888,933 +235,403,659,13,841,429,262,769,363,180,359,262,392,236,823,492,266,566,658,389 +429,771,609,126,288,382,415,93,420,252,804,282,879,588,805,384,231,830,379,263 +318,82,815,648,290,414,793,558,369,946,646,721,196,7,931,798,637,820,117,204 +673,265,664,850,556,627,194,50,84,431,403,895,705,597,820,76,893,628,360,129 +940,419,618,70,435,816,586,837,51,117,210,881,836,846,664,194,88,676,885,643 +96,104,646,363,700,676,246,859,362,607,643,97,817,521,831,491,612,214,375,875 +828,935,727,762,568,237,122,819,235,710,234,816,834,856,634,713,222,419,934,326 +636,107,591,594,264,879,850,658,825,148,606,659,223,629,70,806,224,606,914,179 +776,617,116,650,576,105,556,625,142,770,363,360,722,108,389,72,124,109,888,320 +678,587,498,841,54,712,200,271,631,368,265,766,330,830,97,816,587,798,242,369 +418,938,606,580,433,494,716,909,150,633,797,369,887,51,255,593,197,256,720,891 +873,239,817,522,71,575,800,117,935,891,640,668,579,255,887,152,771,393,807,817 +236,150,433,405,52,728,631,136,856,616,122,844,524,814,413,525,418,815,71,814 +89,392,497,939,655,669,403,880,697,226,887,860,525,667,796,666,109,105,561,401 +638,576,615,708,621,655,391,491,652,616,126,225,656,230,937,398,839,728,398,249 +238,392,798,235,667,493,119,149,827,715,98,112,800,200,51,398,125,260,13,465 +195,86,416,949,235,468,666,181,541,936,431,212,145,573,625,418,847,325,596,187 +230,724,371,256,733,205,101,715,403,126,675,883,730,519,767,885,151,875,893,650 +666,330,480,201,827,402,644,796,946,141,625,119,823,598,758,665,894,121,945,73 +255,989,840,121,806,86,193,264,611,812,84,813,560,793,664,323,108,707,627,375 +219,630,225,129,823,591,809,824,881,938,798,357,887,75,661,247,620,207,795,378 +454,635,500,426,98,942,617,126,647,230,122,887,637,269,375,391,290,125,129,231 +328,830,460,630,242,219,252,763,657,719,210,767,587,372,243,730,259,616,182,379 +525,576,118,596,101,221,75,320,804,617,206,763,637,762,575,858,594,703,603,826 +947,884,363,408,607,810,498,817,421,617,566,109,291,605,800,832,812,679,690,51 +84,823,636,139,521,242,947,639,880,263,559,248,211,655,816,801,573,78,713,207 +666,50,325,118,578,578,822,885,919,837,229,830,407,670,79,359,243,598,495,428 +848,86,673,946,239,803,209,401,882,105,144,90,324,227,629,207,87,851,650,976 +616,202,825,707,941,645,402,433,425,660,891,566,86,380,503,418,595,385,680,941 +815,264,268,874,54,839,84,74,10,944,803,143,422,411,760,812,833,186,672,557 +800,93,2,793,427,420,435,856,556,842,369,832,639,364,704,809,469,115,859,426 +884,381,725,841,249,321,105,588,845,579,219,513,255,431,651,584,825,252,370,936 +98,725,770,875,417,406,991,681,725,931,644,590,523,54,932,378,418,858,284,321 +330,415,503,521,598,209,384,761,669,426,241,879,499,576,190,88,218,380,811,102 +182,386,102,769,317,561,828,85,142,363,497,734,419,412,756,384,711,646,153,193 +233,609,141,615,731,239,768,402,359,575,984,861,681,677,213,560,412,674,560,264 +269,586,889,670,633,919,289,123,640,208,428,326,725,467,629,556,615,219,155,146 +222,801,987,415,325,283,721,657,947,941,850,847,559,146,641,679,81,73,794,206 +222,940,822,395,770,187,233,852,830,431,631,221,660,758,91,948,913,244,882,105 +256,766,364,586,148,892,260,122,710,659,80,387,631,407,701,129,213,236,76,393 +719,540,235,70,617,286,836,617,72,575,554,838,51,287,186,241,660,558,880,404 +244,844,374,727,255,579,891,195,681,575,645,581,936,552,369,79,134,367,196,324 +870,573,591,894,325,54,287,625,833,732,397,847,383,220,522,193,285,581,665,817 +724,667,582,100,677,412,318,19,108,292,632,412,734,155,635,761,939,583,223,650 +541,255,882,555,673,219,396,756,656,414,803,626,655,388,947,706,942,231,86,121 +330,662,885,220,405,886,107,114,192,356,667,222,884,368,921,837,607,937,848,495 +184,145,617,426,467,767,78,919,705,378,828,381,98,932,888,109,433,434,728,770 +234,730,230,122,155,196,384,683,667,420,805,327,249,670,886,239,947,761,91,716 +602,725,389,629,933,398,605,120,631,381,221,199,191,757,844,607,947,575,727,323 +681,52,777,184,321,768,213,104,76,667,372,826,721,80,665,880,187,195,759,834 +805,95,860,221,713,231,855,375,996,718,889,632,411,78,851,266,91,609,844,935 +579,111,185,792,648,325,265,121,716,551,411,124,655,648,324,106,503,215,662,939 +794,825,809,564,217,626,637,673,661,205,762,849,385,118,879,219,433,646,531,109 +792,873,760,194,240,773,363,573,564,609,78,289,812,432,390,556,206,402,802,251 +248,223,839,611,921,267,241,582,241,109,287,639,613,838,874,658,86,118,813,673 +127,758,940,561,837,212,114,841,129,289,662,497,371,293,591,758,269,1,228,182 +498,322,703,499,826,535,432,626,262,414,70,625,469,201,285,391,194,195,726,193 +221,734,399,556,731,820,497,752,127,818,606,845,680,941,221,105,469,383,730,405 +161,125,216,50,551,649,607,86,811,77,799,594,759,852,435,111,672,381,758,231 +393,78,200,360,828,125,122,208,122,803,837,450,590,242,938,629,83,809,214,51 +802,677,732,560,105,664,934,943,637,288,636,528,628,820,207,813,254,731,860,667 +214,630,434,561,710,726,808,88,851,797,647,673,126,113,0,647,727,415,365,266 +664,818,762,706,209,145,980,209,940,193,940,430,128,86,836,465,365,937,111,180 +795,551,84,838,367,387,609,732,837,369,720,129,468,695,665,805,573,835,97,85 +396,838,912,154,257,825,369,876,119,111,813,260,813,221,393,185,222,726,808,416 +560,762,189,84,563,237,434,706,660,820,124,589,652,824,996,147,612,641,521,369 +792,251,523,844,839,680,657,797,277,606,114,850,52,322,410,627,500,650,716,144 +598,301,154,606,414,403,385,365,888,122,647,877,102,861,145,659,861,525,593,197 +490,882,643,714,651,365,642,81,118,674,655,942,99,677,153,145,833,427,934,128 +855,185,536,426,642,826,422,403,931,829,385,641,432,858,238,285,466,640,831,818 +232,757,325,288,879,369,54,820,715,387,845,415,150,643,64,651,425,595,250,81 +836,397,399,670,392,758,674,111,395,497,876,849,799,328,100,306,883,555,222,491 +320,579,117,391,220,102,411,632,670,239,219,608,93,71,824,700,361,809,365,560 +838,113,198,851,410,628,254,117,766,734,145,618,467,948,237,840,761,75,375,231 +931,247,409,714,54,705,812,389,634,193,111,813,828,237,525,675,389,628,412,7 +567,766,198,219,878,598,705,847,933,656,649,239,730,709,318,607,153,216,810,588 +666,843,405,322,847,404,931,150,140,144,616,881,188,681,113,244,730,558,858,523 +857,656,226,231,580,940,842,618,663,579,611,551,876,850,565,389,406,284,521,144 +270,564,573,729,491,946,707,837,198,420,111,125,103,427,406,497,845,466,225,642 +520,631,552,832,380,590,813,716,290,605,711,231,551,629,214,323,383,91,574,254 +384,645,714,763,678,768,256,179,225,256,216,206,611,377,24,674,614,395,206,553 +429,762,122,894,591,716,244,638,882,129,252,421,795,144,281,413,560,558,256,94 +384,390,18,381,756,110,714,90,225,211,836,559,671,946,330,719,110,858,827,841 +692,329,575,589,892,396,116,124,709,645,720,366,209,224,717,616,255,629,234,845 +587,891,656,495,96,605,677,846,850,99,223,123,936,636,434,425,893,424,988,758 +613,734,99,611,200,792,580,630,881,247,815,363,829,874,360,425,673,799,941,691 +265,654,216,393,77,823,419,635,196,144,663,634,724,90,631,423,792,851,228,56 +245,426,127,525,711,727,411,814,944,713,77,823,523,225,839,498,224,275,84,468 +381,678,323,284,668,143,797,409,938,89,73,812,796,883,807,82,80,434,427,906 +89,804,653,653,112,633,221,184,98,416,610,102,106,253,538,814,424,417,554,327 +644,92,707,70,58,945,859,821,404,372,183,409,325,247,705,434,184,582,859,229 +203,810,875,841,732,795,823,22,497,610,260,661,499,376,880,666,236,594,426,593 +217,132,102,93,807,840,406,827,586,262,657,84,833,101,53,469,584,384,948,419 +184,430,932,362,404,845,809,247,881,204,50,404,725,854,908,793,203,833,372,797 +428,370,84,626,777,856,152,129,812,635,373,876,666,825,577,191,112,894,293,51 +820,591,649,326,130,670,265,932,893,664,838,151,611,207,241,725,585,369,656,240 +521,760,137,417,829,413,492,822,649,329,108,392,731,420,663,412,818,606,499,726 +827,427,827,420,179,146,492,126,183,226,804,712,651,275,321,593,556,121,845,99 +255,235,241,149,255,706,127,370,446,84,17,367,375,808,155,375,122,882,229,75 +430,803,995,391,886,424,257,152,196,566,893,851,380,429,934,254,671,148,153,384 +805,578,943,412,663,268,123,366,605,208,205,10,432,723,803,615,414,769,109,232 +232,668,852,389,743,556,123,820,716,118,848,389,949,947,78,582,377,792,77,374 +267,939,733,103,224,759,892,429,857,674,703,861,192,238,619,116,804,726,75,850 +936,211,115,143,155,839,18,848,95,610,431,626,143,873,328,256,249,525,194,561 +422,851,396,242,226,582,224,523,724,705,719,712,404,885,615,807,922,71,374,809 +384,268,241,575,708,253,320,840,610,575,363,216,240,892,283,144,129,356,269,163 +58,188,717,374,408,627,729,615,934,292,825,497,598,564,207,888,410,943,770,727 +999,887,184,404,766,423,610,396,854,213,77,78,432,845,644,936,325,321,644,655 +854,197,73,496,87,658,392,515,626,949,766,498,822,938,398,652,846,707,106,182 +590,114,96,654,522,882,216,853,947,73,797,568,607,556,939,715,565,154,239,100 +619,636,121,128,326,407,229,681,833,415,204,54,247,358,731,288,378,377,386,495 +646,418,859,653,882,558,807,643,381,886,209,220,598,703,118,245,406,70,124,619 +803,74,835,361,494,717,423,726,522,807,8,626,611,240,668,892,396,673,227,595 +422,584,563,146,263,318,72,727,934,125,555,142,722,641,947,372,366,999,662,116 +214,557,379,556,713,151,561,616,191,241,806,688,554,390,79,236,816,433,359,887 +712,148,218,229,468,840,183,112,501,552,321,728,714,427,605,71,188,636,573,767 +598,318,106,154,253,799,580,252,998,394,258,802,819,405,837,383,720,208,201,51 +195,234,874,673,241,515,793,650,144,580,233,109,658,123,148,53,264,392,193,672 +584,876,364,611,284,263,53,108,188,654,873,280,734,718,113,708,636,74,434,595 +628,948,792,678,81,636,118,563,293,103,514,421,386,834,607,706,100,573,202,398 +252,385,555,626,269,15,326,88,73,360,247,813,658,681,725,793,430,195,319,834 +253,189,814,654,148,765,586,822,262,616,767,73,666,527,290,78,412,402,731,202 +128,673,236,726,662,717,330,832,840,722,372,364,383,406,237,996,648,843,389,668 +396,108,371,149,843,830,181,416,626,762,387,887,815,616,366,228,215,404,150,461 +210,819,141,658,211,214,106,400,371,215,704,936,936,86,601,847,861,216,583,841 +605,985,676,319,636,291,428,630,414,890,426,886,108,706,574,72,246,377,576,843 +94,670,161,323,665,369,610,403,523,497,587,392,200,427,196,199,123,193,233,70 +607,422,889,803,361,74,645,230,583,873,238,217,90,681,316,409,794,151,74,886 +113,705,767,721,765,713,838,182,581,376,765,946,940,191,188,936,611,289,916,615 +497,381,103,362,71,11,819,287,663,90,656,205,265,853,817,378,650,794,495,384 +578,257,858,263,758,94,254,320,902,100,810,401,657,241,318,657,894,656,498,106 +245,387,628,639,392,852,650,425,414,840,536,100,235,73,580,149,942,179,673,524 +400,199,383,417,676,146,878,894,435,293,991,146,835,715,493,112,894,326,492,384 +844,725,78,607,127,603,655,574,230,825,361,817,212,636,95,152,250,707,384,191 +586,202,670,155,577,847,646,403,469,893,206,731,811,591,635,236,391,820,509,644 +409,798,698,565,552,201,841,854,103,583,859,495,630,254,226,288,223,83,390,406 +808,407,657,282,320,654,573,251,404,319,756,795,876,579,203,407,465,207,244,315 +858,491,713,244,282,946,323,716,106,677,811,628,84,889,890,707,493,709,767,548 +93,857,304,196,836,82,367,416,703,50,948,607,102,83,400,256,80,635,663,716 +585,723,108,316,581,647,582,468,187,496,799,757,814,887,638,376,117,491,590,948 +640,694,760,948,218,642,853,642,805,243,410,402,933,380,88,882,931,560,836,761 +850,554,893,187,857,718,190,767,562,989,720,949,422,108,941,853,291,190,801,676 +92,90,556,94,118,587,714,592,659,609,181,890,106,792,654,83,218,245,371,863 +630,597,792,121,360,193,104,241,855,609,386,789,617,937,585,705,580,586,391,825 +679,562,795,263,892,446,607,942,824,408,400,679,429,218,653,548,800,823,103,191 +182,588,424,199,51,851,722,606,607,593,588,715,193,728,129,434,112,576,106,568 +582,5,98,206,733,846,632,366,552,713,494,585,640,416,793,466,891,146,596,827 +650,715,234,73,418,728,89,293,82,830,860,139,199,673,648,940,662,672,765,563 +182,617,435,678,379,714,842,770,707,113,91,812,229,132,675,846,259,947,122,713 +637,795,600,715,837,376,286,936,142,564,194,806,663,827,418,728,243,92,365,368 +468,194,186,756,117,290,209,126,616,380,948,312,648,269,495,129,114,190,329,222 +187,212,795,659,401,673,323,583,575,272,366,646,234,246,629,103,766,379,248,235 +760,659,768,78,379,393,150,435,383,192,287,703,674,605,187,194,467,666,657,3 +665,850,497,497,543,806,705,203,663,717,843,123,102,562,150,93,658,252,254,496 +402,187,947,555,757,103,282,675,432,50,942,714,856,891,648,293,583,767,780,641 +639,330,193,318,114,644,282,803,728,141,254,598,409,615,725,639,549,770,289,257 +999,154,128,206,123,221,141,734,627,877,116,285,374,446,663,246,431,108,817,587 +675,408,280,726,706,392,286,435,196,669,288,93,254,207,839,793,287,364,319,716 +186,75,148,643,120,931,271,665,374,209,429,366,804,386,759,555,114,221,122,760 +671,761,234,560,362,446,114,944,553,729,524,659,894,210,229,388,728,818,142,742 +832,885,253,418,716,648,657,396,205,650,394,604,151,208,252,386,833,423,182,859 +854,78,120,668,272,400,206,703,722,126,678,428,211,943,242,220,251,198,256,493 +422,585,229,703,77,902,97,188,268,263,792,206,639,634,875,805,123,559,468,213 +291,231,407,885,601,73,383,934,398,838,414,122,118,671,360,839,329,106,648,938 +940,90,730,422,655,271,617,210,708,818,185,214,129,109,733,418,401,797,200,217 +219,719,792,54,319,561,388,768,250,125,605,243,613,496,123,677,153,267,195,786 +362,413,213,402,74,412,804,643,118,324,878,615,890,994,937,95,378,433,493,214 +406,671,84,889,884,186,564,564,372,769,119,561,385,802,82,757,270,555,632,383 +669,731,949,834,494,685,425,187,551,188,574,876,212,949,804,831,356,261,416,382 +886,680,239,430,820,258,367,310,717,803,803,328,420,726,844,224,851,678,78,724 +629,228,759,595,124,846,421,554,186,840,266,665,814,183,221,91,687,250,852,553 +893,223,586,767,850,125,378,71,807,694,227,103,766,665,366,831,197,237,390,842 +821,679,265,73,368,412,327,396,884,79,627,149,940,525,87,106,124,931,995,287 +818,591,823,617,187,310,75,816,151,716,609,200,703,889,500,580,726,381,396,396 +824,90,434,765,358,399,265,563,613,363,826,597,710,704,384,107,91,590,423,919 +138,565,257,84,807,199,119,667,667,235,932,634,220,244,814,841,254,931,385,943 +389,806,51,839,880,522,643,651,411,129,575,561,652,706,828,767,307,656,803,407 +76,759,388,667,99,401,147,885,598,229,226,82,946,714,746,237,397,597,427,722 +102,644,193,725,107,466,243,641,491,180,844,925,823,204,712,91,81,641,836,266 +330,638,588,278,837,218,638,715,231,654,713,703,247,664,328,885,826,378,713,852 +849,115,946,323,413,413,330,233,861,302,727,592,91,225,187,709,402,672,375,723 +322,195,841,248,465,137,212,86,240,289,848,362,446,406,426,551,116,285,467,632 +414,87,845,118,50,417,941,608,215,797,652,237,421,860,53,199,70,551,307,661 +129,764,839,191,225,183,663,760,249,389,199,803,884,325,725,126,975,590,233,552 +468,291,644,98,873,412,849,67,257,707,98,292,719,435,662,803,878,430,638,734 +734,944,656,816,905,257,946,268,655,376,195,574,626,795,880,236,592,109,946,595 +854,722,287,792,378,117,371,198,728,574,844,798,732,202,824,656,563,497,768,483 +186,142,887,760,179,108,320,329,428,880,155,741,818,142,521,609,579,645,616,874 +422,810,323,259,211,431,728,120,522,715,429,667,143,891,831,579,833,401,729,279 +4,610,73,933,935,226,889,756,652,562,802,500,237,939,834,656,381,892,241,813 +565,798,613,689,574,221,106,552,382,674,330,655,608,242,819,246,231,944,431,239 +799,820,390,876,72,196,73,234,197,712,629,239,997,422,126,141,649,403,432,717 +878,837,121,434,292,879,828,989,661,397,196,646,857,813,680,446,767,148,253,128 +254,630,265,428,877,654,581,662,86,798,430,58,850,90,365,423,577,805,320,760 +818,388,467,424,887,799,933,843,651,708,366,388,522,905,817,220,89,933,879,941 +879,153,236,255,78,60,729,419,644,326,654,142,665,947,561,521,842,291,936,496 +915,220,290,499,248,719,595,596,885,214,105,638,589,110,607,204,226,119,885,410 +141,193,402,414,816,466,255,822,51,191,361,416,290,822,893,799,604,153,401,231 +93,372,942,874,520,630,247,129,657,102,614,521,675,93,141,763,500,368,756,52 \ No newline at end of file diff --git a/src/main/resources/2020/day17.txt b/src/main/resources/2020/day17.txt new file mode 100644 index 00000000..9f62ccd4 --- /dev/null +++ b/src/main/resources/2020/day17.txt @@ -0,0 +1,8 @@ +##...#.# +#..##..# +..#.#### +.#..#... +######## +######.# +.####..# +.###.#.. \ No newline at end of file diff --git a/src/main/resources/2020/day18.txt b/src/main/resources/2020/day18.txt new file mode 100644 index 00000000..9e505d4d --- /dev/null +++ b/src/main/resources/2020/day18.txt @@ -0,0 +1,379 @@ +((5 + 8 + 3) + 3) + (3 + 9 * 7) +((5 + 3) * 9 * (9 * 6 + 6 * 4) + (5 + 5)) * 8 * 9 +(7 + (6 * 3 + 6 * 4 * 9 + 3) * 4 + 6 + 8) + ((5 + 6 + 5 * 3 * 3) * (6 * 8 * 8 * 5 + 4)) * 7 + 9 * 6 +3 * 6 * 3 * 8 + (4 * 6 + 8 * (8 * 4 * 6 + 4) + (4 * 3 + 4 + 8 + 8 * 9) * 8) + 3 +6 * 4 + (9 * 9 + 5) + 5 * 4 + 9 +7 + 4 + 4 + 5 + (2 + (9 * 3 * 2) * 6) + 9 +2 + 4 + (2 * 9) + 3 * 9 + 9 +9 + ((6 + 2 * 3 * 2) + 7 + 7 * (7 * 9 * 5 * 9) + 3) * 6 +9 * 7 + 4 * 5 * ((7 * 6) * 3 + 4) * (4 * 2 + 7 * 2 + (7 * 8 * 9 * 8) + 2) +3 + 8 + ((2 * 7) * 5 * 2 + (5 * 7 + 9 * 8 * 2)) +(8 * 6) * 4 + 4 + 5 * 9 * (5 + 4 + 4 + 9 * 6) +8 * (9 + (6 * 7 * 2 * 5) + 7) + 3 +2 * 5 * 8 +5 + 2 + 6 * 5 * (3 * 4 + 7 + 2 * 2 * 3) +7 * 8 + 6 * 6 +(7 * 3 + 8 + (7 + 2 * 4 * 2 + 2 * 9) * (4 * 7 + 9 * 8) * 7) * 8 + (6 + 2 * 3 + 6 * 4) + (6 + 9) + 8 * 3 +(2 * 5 + 7 + (5 * 4 * 7 * 6) + (9 * 8 + 9 * 9 * 6)) + 8 + (8 + 5) * 8 + 6 + 8 +6 + (9 + 3 * 5) + 5 +(8 * (3 * 3 * 5 + 6 * 8) + 6 * 8) + 5 +2 + 8 + 3 * (3 + 5) * (5 * (9 + 4) + 6 * 2) +3 + ((9 * 4) + 8 + 4 * 4) * ((6 * 8 * 5 + 6) * 2 + (2 + 2) + 6 * (8 + 7)) * 2 * 6 + 9 +(8 + 9 * 8) + 4 * 5 * 6 * (5 + 7 * 7 * 6 + 5 + 6) +(8 + 7 * 3 + 3 + 2 + 5) + 7 +(9 + 2 * (3 * 4 * 6) * 3) + 5 + (4 + (4 + 4 + 8) + 7) * 8 * (9 + 7 + 8 + 2) + 7 +(2 + 2 * (4 + 6) * 2) * 5 + 8 * 4 + 8 +4 * ((3 + 2 + 2) * 2) * ((8 + 8 * 9 * 7 + 3 * 2) + (9 + 2 + 3)) + 7 * 8 + 5 +7 + (5 + (5 * 9 * 4 * 4 * 7) + (2 * 7 + 8) * 6 * 7 + 4) * 2 * 5 * 4 +(7 + (9 + 6) + 3 + 7 + (6 + 7 + 4 + 4 + 9)) * 6 + 5 +(9 * 4 + 2 * 5) * 6 + ((5 + 3 + 9 + 5 * 2 * 6) + 3 + (2 * 7 * 2 * 7 * 7 + 7) * 7 * 5) * 4 +2 * 3 * (5 + (9 + 2 * 4 + 8) + 9 * 7) * (6 * 4 * (9 + 8 + 2 * 8) + 9 * (9 + 4 + 6 * 4) + 9) * 7 +(4 * 8 + (9 + 4) + 2 * 7 + 5) * 6 +2 * 8 * (8 + 5 + 8 + (7 * 7 * 2 * 4) * 4) + ((4 + 3) + 7 * 9 + 3) +6 + 8 * (3 * (7 * 9 + 2 + 6) * 6 + 8) * 9 * 2 +6 * 8 + 6 + (7 + 8 + 2 * 2 * 8) +((7 * 3) * 6) * 4 + 4 * 7 * 4 * 6 +6 * 5 * (7 + (9 * 6) * 6) + 8 +5 * 3 + (4 * 9 * 5 * (6 * 6 + 2 + 7 * 3 + 6)) +9 * (3 + 3 * 8 * 6 + 2 + (9 * 2)) * 3 * 3 + 5 +(4 * (2 * 7 * 8 * 9) + 7) * 4 * 5 + 4 +8 * (5 + (4 + 6) * (9 + 2 * 8 + 2 * 4)) +7 + (9 * 9 + 7 + 2) + 9 + 4 +9 + (7 + 6 * 8 + 5 + 2 + (2 + 8 * 6 * 6 + 6)) +6 + 4 + 8 * 4 + 3 * (9 + 9 * 3 * 4 * 9) +9 * 6 * (7 + (8 + 2 * 9 * 2 * 8)) +4 * (8 * 9 * (6 * 5 + 4) + 7) + (9 * (5 + 7 * 3 * 7 + 9 + 4)) +3 + (5 + (3 + 4 + 6 + 6 * 8) + 9) * 8 * 3 * 9 +5 * (6 * 9 + 2 + 4 * 7 * 7) + (3 * 5 * (9 + 2 + 5 * 9 + 6) * (2 + 5 + 4) * 4 * 2) + ((9 + 9 * 8) + 2 + 4) + 3 * 5 +5 * (9 * 2 + 5 + 3 * (4 + 5 + 7 * 8)) + 6 + 8 + 5 + 8 +(8 + 5 * 6 + 6 * 5) + 9 + (2 + 8 * (9 * 5 * 3 * 7)) +4 * 3 + 9 + 7 + (3 + 3 * (4 + 8 * 2 * 8)) +(4 * (5 * 6 * 5 + 5 + 8) + 7 * (4 + 6 * 2 + 6) * 7) + ((9 + 4 + 7 + 3 + 6) + 4 * (2 + 6 + 2 * 5 + 6 * 6) * 8 * 5 + 6) * 3 +7 * ((9 * 6) + (3 + 3 * 8 + 2 * 7) + (8 + 7 * 4)) * 3 +8 + ((2 + 5 * 4 + 4) + 6 * 4 + (7 + 5 + 6 * 7) + 3 + (3 * 9 * 6 * 9 * 7)) * 2 + (4 + 2) + 2 + 8 +2 * 2 + (8 + (5 + 4) + (7 * 9) * (4 * 3 + 8 * 6 * 8) + (4 + 5 * 7 + 4 * 2) + (9 + 5 * 9 + 9 * 8 * 4)) * 7 +2 * (6 * 4 * (5 + 7 * 3 * 3) + 8 + 6) + 7 * ((2 + 7 * 4 + 4) + (7 + 6 + 9 + 6 + 4) * 8 + 4 * 3) + 2 * 9 +2 * 4 + 4 * 3 * 7 * 4 +9 + ((7 + 3 + 6 + 9) + 2 + (3 + 3 + 5 * 6)) +4 * 4 +3 * 9 + 7 +7 + 5 * (3 + 4 + 4) * 9 * 5 +2 + (9 + 5) + 5 * 8 + 3 +(5 * 4 * 8 + 6) + 9 * 3 * (5 + 8 + 9 * 7) +((6 * 5 * 9 * 4) * 4 * 8) + 8 + 7 * 4 +((4 + 6) * 5 * 5 + 2 + 5 * 6) * 2 * 4 * 8 + 8 +(7 * (3 + 5)) + 8 +2 + 2 + 8 * 4 + (4 + 4) * 5 +(2 * (4 + 4 * 7 * 8 * 9 * 2) + 7 * 6 * 2) * 2 + 9 +(9 + 7 + 9) + 6 * (5 + 7 + 8 + 7) * 9 * ((5 * 6 + 3 * 3 * 5 * 6) * 6 + 3) +3 * 7 * 8 * 8 + (6 * 4 * 4) * 2 +9 * 3 * (6 * (9 + 5 + 8 + 5)) * 3 +((9 + 8 * 3 * 9) * 9 * 8 + 8) + 3 +8 * (9 * 8 + 6 * (2 * 5 + 2 + 9 + 4)) + 3 * 8 + 3 +((3 + 7 + 6 * 7 + 4) + 6 + (8 * 5) * 3 + 7 * 8) * 2 * (6 + (2 + 5 * 2 * 4 * 4) * 7 * 2 + 3 * (5 + 5 + 2 * 5 * 7 * 8)) +9 * 5 + 6 * (9 * 2 + 2) + 3 * 5 +3 * 6 + 6 + 2 * 5 +3 + 9 + 5 + (4 * (3 * 8 * 7)) * 9 + ((6 + 7 * 2 * 3 + 4 * 2) * 6 + 5 + 7) +(8 * (4 * 5 + 3 + 3 * 7)) + 5 * 8 * 3 * 3 * (7 + 8) +(4 + 9 * 9 * 6) * (7 * 7 * 3 * 7 + 6) * (6 + 9) + 6 +5 * 6 * ((6 * 6 * 6 + 4 * 2) + 9 + (6 + 9 + 8) + 3 * 2) * 5 * (3 + 8 + 3) +6 * 6 + (3 + 4 * 8) * (2 + 4 + (6 + 7 * 7 + 8)) +8 * (9 * 6 * 7 + (6 * 6) + 9) + 6 + ((6 + 4) * (6 * 3 * 6 + 2 * 9 * 8) + 8) + ((8 + 2 + 6 + 2 + 2 * 5) * 4) +8 + 8 + 5 + ((9 * 9 * 5 * 8) + 7 * (8 + 5) * (6 + 3)) * 4 * (2 + (5 * 9)) +4 * 3 * 7 * 4 * 5 + (6 * 9) +(2 + (6 * 3 + 7 + 3 + 4) * (4 + 3) * 5 * 7 + 8) + 5 * 7 + 8 + (4 * 8 + 8) +(8 + 8 + 5 * 4 * 2 * 8) + (4 * 6) +9 * (8 + 4 * 3 * 9 + 6 * 5) + (8 + 5 * 4 + 5 + 9 + 6) * 4 + 7 * 5 +(3 + 3 * (2 * 9 + 8 + 6) * 5) * 4 * 7 * 8 + 6 +7 + (6 + 7 * (4 + 4 + 8 * 5) * 2 * 4 + 8) * 4 +4 * 5 * 4 + 7 + 7 +2 * 6 + (6 * 7 + (4 + 8 + 5 * 5 * 4 + 4) * (8 + 5) + 4) +5 + 2 * (5 + (5 * 7 * 8) * 7 * (5 * 4) * (3 * 3 * 9)) * 6 + 9 +9 + (3 + 8 * (7 + 2 * 3 * 3 + 2) * 4) * (5 + 4) + 2 +(4 * 6 * (6 + 3 + 3) + (4 * 2 + 6 + 5 + 8 * 8)) + 2 + 7 * 9 + 2 + 7 +(9 + 3 * 6 + 4 + 6) * 4 +(3 * 9 + 7 * 6 + (6 + 3) * 2) * 6 + 4 + 5 + 7 * 6 +8 * (7 * 8 + (2 * 8 + 2 + 8) + (9 * 3 * 3 + 8)) + 2 +(9 + 6 + 4 * (8 * 7 + 5 * 3 + 5 * 5) + 3) * 3 * (3 + 2 * (3 * 8 * 9 * 5)) + 2 + 9 * 5 +9 * 8 + ((3 * 2 + 5) * 9 + 5 * 2) * 3 * 5 +(9 + (8 * 5 + 8)) * (5 * 8 * 5 * 3 * (9 + 3 * 7 + 3 + 9)) * 3 + ((4 * 3 + 9 * 3 + 8) * 6) * 4 +((4 + 2 * 3 + 4 + 4 * 6) + 7 * 3 * 5) + 5 * 6 * 2 +2 * (2 * 2 * 5 + (2 * 8 + 6 * 4 * 3 * 2) * 3 + 9) +8 + 7 + 2 + 3 + (9 * 5 + 2) +(3 + 4 * (7 + 4 + 9) + 8) * (6 * 9) + ((4 * 3 * 2 * 2 * 5 * 9) * 6 + (8 + 9)) + 2 * 6 +6 * 7 + (3 + (5 * 6 * 2 * 2 + 9)) * 8 + 8 +8 * (6 * 5 * 2 + (2 * 8 * 5 * 6) * (6 * 7 * 9 * 7 * 5 + 2)) + 6 + 4 * 3 +7 + ((3 + 3 * 6 * 8) * 3 + 3 + 8) * 8 + (2 * 5 * 4 * 6 * 5 * 8) * 2 * 5 +7 + 6 + (4 + 9) + 5 * 2 * ((5 * 2) * 7 + 7 * (3 + 9 + 4 + 9) + 9 * 4) +5 + 5 * (4 + 5 * 8 + 5 * 7 + 9) + 8 +(4 * 2 * 6) * 9 + 5 +(4 + 9 + 3 + 6) * 2 * 6 +(5 + 6) * ((2 + 4 + 7 + 5 * 3 * 3) + 4 + 2 + 4 + 9 * 6) * (7 + 7 * (4 * 4 + 3 + 6 * 7) * 7 + 5) * (9 + 6 * 7 * 6 + 5 * 4) +((3 * 9) * 8 * 2) * (5 + 5 * 6 + 5 + 9) + 6 * (3 * 8 * 5 + 7 + 4) * (2 + 3 * 9 + 9 * 4 * 6) +8 + 8 + (7 * 6 * (4 + 3 + 3) + 2 + 3) +8 * 4 * 7 * (9 * 3 + 8 * 8 + 5) + 7 +2 + ((7 + 7 + 4 + 4) * 5 + 5) + 7 * (5 * 9) * 4 +7 + (3 + 8) +9 * 5 + 9 + (8 + (4 + 4 + 8) * 5 * 9 + (2 + 4 + 6)) +4 * (7 * 3 * (9 + 8 + 6 + 6) + 5 + 3 + (9 + 9 * 5 * 3)) * 6 +6 * 5 * 9 + (8 + (5 * 9 * 5) + 6 + 2 + 2) * (7 * 8) +((5 * 4 + 7 * 2) * 5 + 4 + (2 + 8 * 7)) * (3 + 5) +(5 + 3 * 5 * (8 * 8) * 8 * 9) + 9 + 9 * ((4 + 2 * 8) * 7) + 7 +9 * 4 + (9 * 3 + 4 * 3 * 8) +6 + (5 + 5 + 2 * 5 * 3) * 3 + 8 + 7 +3 + 4 + 7 * (4 * 5) + 2 +8 + 7 + 5 * 3 +5 * (2 + 7) + ((9 * 3) * 2 + 3 * 4) + 8 + 4 +6 + 7 + 2 + 2 + (8 * (9 + 2 + 4 + 2 * 9)) +8 * 7 * (8 + (4 + 5 * 8 + 4)) +(4 * (6 * 7 * 7 * 9 + 5 * 7) * 9 * (6 + 7) * 8 * 2) + (5 * 5) +(2 * 6 + 5 + 6 * 8) * 5 * 5 + 5 * 3 + (7 + 2 * 5) +2 * (7 + 4 + 3 * 6 + 5 + 9) + 5 * 8 * (9 + 7) +3 * (4 * (6 + 5 * 2 * 6 + 4 + 6) * (6 * 9 + 6) * 7 + (7 + 2 * 3 + 4 + 4 + 8) * 3) +((9 + 7 + 6 + 3 * 5 + 6) + 7) + 4 + 9 * 8 +(8 + 8) * 6 + 9 * 3 * (3 + 4 + 8 + 6) +6 + (3 + (3 + 7 * 8)) +9 * 6 + 5 + ((7 * 9 * 7 * 7) * 9 + 5 * 8 + 2 * 3) + 5 +(6 + (2 * 6 * 7 * 9) + 3 + (9 * 3) * (4 * 7 + 5 + 6 + 5 * 9)) + 7 + 7 +3 + 3 + (3 * (7 * 6 * 4) + 2 + 6 * 8 * 4) + 7 +2 + (3 + 8 + 6 * 7 + 4) * 2 * 8 +2 + 4 + 9 * 6 + 4 + (4 * 7 + 9) +(7 * 6 + 6 * 7 + (7 * 5 + 8) * 8) * 2 * 2 +2 + 6 +4 + ((5 + 7 + 2 * 8) + (5 * 5 * 7 + 3 * 3)) * 3 * 2 +9 + (3 * 7 * 7 * (5 + 7) + 4 + (7 + 6)) * 2 +2 * 5 + ((8 + 5 * 2 + 4 * 2) * 7 * 3) +(8 + 3) * 6 * 7 +3 + 8 + 9 * (6 + 9 * 3 * (5 * 4) + (7 + 8 + 2) + 8) +7 + 6 + ((3 + 2 * 5 + 4 + 8) * 5) * 5 +(2 * 8 + 4 * 6 * (3 + 3 * 2 + 2 * 5 * 2) * 8) * 4 * 8 * 7 + 2 +4 * ((2 * 3 * 3 + 3 + 7) * 9) + 5 +9 * 3 + 6 + 3 +6 + 9 + (3 + 8 * 5 + 8 + (3 + 3 * 3 + 5 * 8 * 4)) +3 + 7 + 7 * (6 * 9 + 7 * 4 + (5 * 7 + 2 * 4)) + 3 + 3 +(2 * (8 + 3 + 6) + 2) * 4 +9 * 7 * (8 * 2 + 2 * (4 + 9 * 4 * 7 * 4)) + 4 * 2 * 9 +7 * 8 + (3 * 2 + 2 + 9 + 8) + (6 + 8 * 4 * (5 + 5 + 6) + 7) +3 + (6 + 2 + 9 + 6 + 5) +9 * (2 * 6) * 8 * 7 +(7 * 5) + (8 + 3 * (2 + 4 + 7 + 4 + 6) * 7 + 6) + (7 * 2 + (6 + 6 * 3) + 3) + 6 * 7 +7 + 7 + (5 + 8 * 4) +(2 * 7 + 4 * 7) * (9 * 2 + (6 + 9 + 5 * 3 + 3 + 3) * (8 * 2) + 9) * 9 * 7 +(6 * 5 + 9 + 7) + 9 + 2 + 3 +2 + 2 * (9 * 9 * 3 + (7 + 4) * (9 + 9 * 9 + 3 + 2) * 5) + 5 * (7 + (6 + 5) + 2) * 7 +4 * 5 * 2 * 3 * 8 + (8 + 3 * 6 * 9 * 4 + 6) +5 + ((3 * 4 * 8) + 6) + 5 +4 + 5 + 3 * (8 * 3 + 7 * 9 * 6 * 4) * 7 +(7 * 6 + 5 * 2 + 3 + 5) * 2 + 8 * 9 * ((3 + 5 + 7 + 8 + 8 * 2) + 9 * 3 + 2 * 6 * 2) * (4 * 9 * (2 + 3 + 9) * 5 + 7) +3 + 2 * 6 + 9 * 6 * (2 * 2 + 7 * 7) +(6 + 3 + 5 * 6 * 6 * 7) * (6 + 8 + 8 * 3 * 7) +(7 + 3) * 3 * (4 + 9 + (7 + 8 * 6 + 4 * 3 * 3) * 7) * 2 + (3 * 9 * 2) +3 * 7 + 9 * 9 * 3 + 8 +4 * 5 + 9 + 7 * 6 * (4 + 4 + 9 + 2 * 5 * (5 + 6 * 4 * 3)) +8 * ((2 * 3) + (4 * 3 + 5) + (2 + 5 + 3 + 7 + 2 + 6)) * 8 + 8 +4 + ((7 + 7 + 5) * 2 * 6) + (3 + 6 + 9 * 3) + ((2 + 4 + 3) * (4 + 6 * 6) * 6) +7 * 4 + (5 + 7 * (6 + 2) * 6 + 4 * 3) + 5 +8 + (4 * 4 + 5 + 2 * (9 + 9 + 3 * 6)) + 8 * (3 + 8 + (9 + 5 + 4 * 7 * 2 * 6) * 7 + (9 * 4 + 9) * 3) +8 * 8 * 2 * 5 + 4 * ((5 * 4 + 2) + 6 * 8 * 9 + 4) +3 * 9 * 3 + 5 * 2 +2 * 3 + 2 * ((9 + 7) + 2 + 2 + (8 * 4 + 9 * 6 * 8 + 7) + 7 * 9) + 9 * 7 +6 + 4 * (3 + (9 * 6 * 2 * 6 + 9) + 7) + 3 + 5 +3 * 4 * (4 + 2 * 4 + 7 + 7) * 8 + 8 + (2 + 4 + 2 * 9) +4 * (7 * 3 * 5 * 7 + (9 * 7)) * (2 * 5 + (2 * 5 + 9) * 4 * 6 * (3 + 9 + 5 + 6)) * ((2 + 6 + 5 + 8) * (5 * 3 + 9 * 6 * 6) * 9) + 3 + 8 +(5 + 8 + 8 + 6 * 4 * 4) * 6 * 2 +7 + (8 * 6 * 2) + (3 * 6 + 4 + 7 * 9) +2 + 2 + ((6 * 8) + 4) +(5 + 5 * 8 * 3 * 8) + 5 * 4 + 2 * 9 +((8 * 9 * 5 * 6) * 6 * 2 * 5 + 5 + 4) + 8 +9 * 6 * 2 + (5 * 7 + 2 + 7 * 4) * (6 * 3 + 5) +2 + (7 * (9 * 3 * 5 * 7)) +6 * 9 * ((9 + 8) * (3 * 9 + 9) + 6 + 3) + 7 + 5 * 5 +((3 + 8) + 7 * 3 + (9 * 3 * 4 + 5)) * 3 +(2 + 6) + (4 * 6 * 5) * 8 + 3 +3 * 7 + (4 + 7 * 7) * 7 * 5 * (4 * (5 * 8 + 7) * 2) +8 * 6 * 9 + 2 * 8 +3 * 4 + 5 * (7 * 4 + 2 + 2) +4 * 2 + 5 * (2 * 5 * 9) +5 + 3 +6 * ((3 + 6 * 8) + (2 * 3 + 7 * 3 + 6) * 3 * 6 * (7 * 6 + 7)) + 3 * 9 * 6 +4 + 9 + 9 * (6 * 2 * 5 + 2 * (6 + 7 + 2 * 6)) + (4 + 2) + 2 +7 + 6 * (9 * 7 * 4 * 5 * 2 + 6) + 3 * 4 +(8 * 3 + (6 * 2)) + ((3 + 7 + 5 * 9 + 6 + 8) + 9 * 7 + 8) * 9 +7 + ((4 + 7) * 7 * 8 * 3 * 4 + (7 * 5)) * 8 +5 + 9 * 3 + 2 + (7 * 6 * 9 + 4 + (5 + 7 * 9) * 8) +8 * 3 + 6 + (3 * (3 + 5) + 6 * 5 * (4 + 6 * 6 * 7 + 5) + 3) * 2 * (3 + 8) +4 * 7 + 2 * 7 + (7 + (3 * 4 * 6 + 5 * 7)) * ((6 * 4 + 8 * 9) + (3 * 7 * 9 * 6 + 6) * 4 * (4 * 9)) +(6 + 8 + 5 * 7 + (4 * 5 * 9 + 2 * 5)) + (6 * 3 * 6) +5 + (7 + 6) * 4 + ((9 * 7 + 6) + (5 * 5 * 9 + 7 * 7 + 3)) +4 * (9 + 8) + 5 + 5 + 8 + 2 +(4 + (9 + 5 * 8 * 3 + 2) * (6 * 6 * 4 + 4) * 2) * 6 +9 * 4 * 3 + (5 + 8 + 4 * 6 * 7) + 6 * (3 * 3 + (8 + 6 + 2)) +(4 * (3 + 6 * 3 + 5 + 2 + 8) * 8) + 4 * 2 + (7 * (9 + 9 * 4 * 5 * 3 * 9)) * 8 +3 * 5 + (2 + (3 + 8 * 5 * 5 * 8 * 3) * 5 * 5 + 5 + 7) * 8 +8 + 3 + (6 * 6 + 6 + (8 * 4 + 3 + 2 + 4) + 5 + 2) + 8 + 3 +4 + 6 + 7 * (6 * 5 + 4 + (9 * 8 + 7 * 5) * 5) + (3 * 3) * (6 + 7 * 3 * 3 + (2 + 9 + 8 + 5)) +(8 * 3 * (8 + 8 * 2 + 9)) * 8 + 7 +8 * 2 * (9 + 2 + 4 * 4 * 2) + 8 * 6 + 8 +2 * (3 + 9) * (6 + 5) * 7 + 9 +8 + 4 * 3 * (2 + (9 + 2) + 8 + 8 + (3 * 3 + 5)) + 4 * (6 + 3 + 4 + 9 * 7) +8 + 8 * ((4 * 8 * 7 + 8) + 3 * 2 + 7 * (9 * 9 * 4)) + 4 +(6 * 3 + 9 + 5 * 9 + (4 + 3 * 5 * 3 * 3)) + 8 +(8 * 6 * 2) * 7 + 4 * (9 + 3 * 5 * 6 + 6 * 3) * 4 +2 + (9 + 9) * (9 + 5 + 3 + 8 + 2) + (5 * (9 + 6 + 7 + 2 * 2) * 8 + (6 * 9)) +8 * 3 * 2 + 2 +3 * 5 + (9 + 8 * 9 + (2 * 2 * 9 + 2) + (7 + 3 * 5)) +3 * (5 + 4 + 9) * 2 * 6 + 2 +2 * (8 * 7 * (7 + 3 * 6 + 4 + 2 + 6) + 3 + 2) * 4 +3 * 9 * (7 + 5 * 3 + (7 + 4) * 2) * 7 + 8 + 5 +7 * (8 * 7 * 3 * (8 + 2 * 3 * 6) * (3 * 6 * 4 + 3 + 8)) +6 + 5 + 7 * (4 * 7 + 8 + 6 * (5 + 5)) * 4 +9 + 6 * 4 * 7 + (8 + 6 + (7 * 5)) * 8 +8 + (7 + 7 + 6 * 3 * 9 * (6 + 3 + 9)) * 7 +(7 + 7 + 7 * 7 + 9) + 8 + 9 + 5 +2 + 2 + 4 * (5 * (5 * 7) + (7 * 6 + 4 + 5 + 3 + 3) * 7 * 8) + 7 * 3 +5 * 5 + 7 + (9 + 4) * 2 * 7 +2 * 8 * ((8 + 9) * 4 + 8 + 4 * (5 + 2 + 3 + 2 * 3 + 6) + 6) * 2 * (6 + 6 * 9 + 5) + 5 +8 + 6 * (6 + 5 + 6 + 2 + 2) * 7 +6 * (3 + 8 + 7 * 9) +2 * (9 + 5 + 2 + (3 * 7) + 5) + ((6 * 8 + 8 + 5 * 4) + (7 + 4 + 4 * 4 + 4 + 2) + 8 * 8 * 5) +(4 * 8 + 6 + 7 + (9 * 9) + (4 * 4 * 2)) * (7 * 2 * 7 * 6 + 8 * 5) + 7 * (2 * (6 * 6 + 8 + 9 * 7) + (5 + 6 * 9 * 9 * 3 * 5) + 7 * 8) * (2 + 2) +(4 * 8 + 5 * 2 + 3) + 4 + (9 + 7) +((9 * 6) * 8 + 2 + (3 * 6 * 7) + 2) * 9 + (7 * 2 + 8 * 4) * 6 * 9 * 4 +4 + 6 + ((7 + 4 * 6) * 4 * 9 + 5 * 5) + 9 + 3 * 4 +6 * (9 + 3 * (4 * 2) * (4 * 8 + 4 + 8) + 9) +7 + 7 + 7 + 8 * 5 * 6 +4 * 2 +8 + 3 + (6 + 8 + (9 * 7 * 3 * 7) * 7 + 7 * 7) * 4 +9 * ((2 * 7 + 4 * 9) + 2 * 5 * 5 * (7 + 3 * 2) + 4) + (4 + 5 + 5 + 7 + (9 * 2 * 6) * 5) + 2 +2 * (6 * 8 * 3) * (7 + 7 * 6 + 6 * 5) + 6 +7 + 5 + ((6 * 4) * 7 + (3 + 2 + 8 + 5 * 2 + 9)) * 5 +5 + 8 + 3 * 6 * ((5 * 3) * 8 + (4 * 6 * 2 + 2 * 4) * 5) + 4 +4 * 6 + (3 * 9 * (6 + 6 + 8 * 4 + 2 + 2) + (2 * 7) * (8 * 9 + 4 + 5)) * 7 +(9 * (3 * 8 + 3 + 5) * 6 * 4 + 9 * 5) + 6 * 9 +(9 + 2 + 2) + 3 + (8 * 5 * 8 + 7 + 4) + 8 * 6 * (6 * 7 + 6 + 3 * 2) +9 + ((7 + 2 * 7 * 9 * 7) + 3 * 4) * 8 +(9 + 5 * (5 + 4 + 7 + 6 + 9)) + 5 + 7 +2 + (8 + 6) * (7 * 5 + 8 + 8 * 9 + (8 + 9)) +5 * (2 + 5 * 4 * 2 + 6 + 4) * 3 +(3 + 6 * 9 + 3) * 2 + 2 + 2 + 2 +(2 * 7 * 5 + (9 * 6 + 8) + 4) + ((9 * 3 + 8 * 6 + 6) * 6) + 2 + 3 +4 + (3 + 9 + 5 + 9 * (3 * 9 + 4) * 4) +8 * 4 * 7 +(4 + 8) * 4 +((9 * 4 + 2) + 4 + 6 * (7 * 9) * (8 * 3 * 6 * 7) * 4) + (4 * 2 + 4 + 7) + (6 + (8 + 5 * 6 + 9) + 6 + 2 + 2) +(4 * 7 * 4) * 7 * 3 + 8 + 3 +3 * 6 + ((8 * 5 + 3 * 6 * 9) + 3 * 8 + 6 + 5 + 4) * 3 * 5 * ((2 * 7 * 6) * (5 + 5 * 9 * 7)) +(4 * 5 + 9) * 4 * 8 * 9 + 2 * 3 +(2 * 9 * 7 * 6 * 4 + 4) + 3 + 3 * 9 * 2 +9 * ((8 + 3 * 3 * 8 * 2 * 4) * 4 * 9 * (4 * 4 * 9 + 9 * 9) + 4) + (6 + (9 * 2 * 7 * 2) + 6 * 7 + (9 * 7)) + 6 * 7 +5 * 9 * 7 * 7 +2 * 3 + 2 * 3 + (5 + (2 * 7) * 3) +8 + 8 + ((7 + 4 + 2 * 6 + 9 * 9) * (5 * 8 * 3 * 6 + 5) * 6 + 3 * (8 * 6)) * 2 + 9 +(2 + (6 + 6 + 4 + 5) * 8) * (4 + 3 * 8 * 3 * 5) * 2 + (2 * 7 * 6 * 6) +6 * (4 + 3 + (7 + 8 * 2 + 2 * 7)) * 5 +(8 + 4 + (2 * 5 * 6 * 4 * 8) + 7 * (3 * 5) + (9 + 8 + 3)) + 5 * 2 + 7 + 3 + ((7 + 8) + 7 + (6 * 7)) +8 + 7 +2 + 8 + 4 * (3 + 4 * 7 + 3 * (7 + 7 + 9 + 7) + 4) * 4 +(4 * 2 * 2) + (4 * 7 * (2 * 2 + 9 * 6) * 9 + 7) + 6 + (8 * 6 + 6 * 5 + 9 + (7 + 2 + 7)) +5 + 7 * 7 * (2 * (7 * 3 + 6 + 8) * 9) + 8 * (8 + 5 + 2 * 4 * 8) +(7 + 2 * 6 + 2 * 2) + 2 * 5 + 2 * 3 * 4 +((6 + 2 + 4) + (6 + 4 * 8 * 2 + 3 * 7) + 4 + 3) + 9 * 8 + 9 + 2 * 5 +(9 + 6 * 9 + 4 + (3 + 2)) * 6 +5 + 5 + (8 * 7 * (8 * 9 + 7 + 8 * 6 * 6) + 7) + 6 +(3 * 6 + 2 * 7) * 6 + (2 * 4 + 4) + 8 * (8 * (4 * 9) + 2 * 2 * 4) +9 + ((6 * 7 * 4 + 3 * 3 * 6) + 9 * 9 * 5) * 3 * (3 * 7 + 4 * 5) + 5 + 9 +6 + 8 + 2 + (5 + (8 * 9) + 4) + 3 +(2 * 3 + 8 * 5 * (2 + 6 * 5 * 6 + 8 + 3)) * 6 * 6 + 5 * 2 +(7 * (7 + 7 + 7 * 3 + 3 + 8) + 2 * 6) * 5 * 2 +5 * 8 * (7 + 7) * 8 +(5 * 5) + 6 * ((7 + 4 + 7 + 3 * 4) * (7 + 9 * 7 + 7) * 6) * 5 * (6 + 4) + (6 + 7) +8 * 7 + 8 * (4 + (5 + 9 + 3 + 3) * 9) +3 * 6 + 2 + (3 * 9 + 8 * 6 * 4 * 5) + 4 * 9 +((3 + 3 + 3 * 4 * 8 + 4) + 9) * (6 * 5 + 2 + 7 + (8 + 8 * 3) + 8) + 2 + (9 * (2 + 6 * 6) * 5 + 9) * 8 + (4 + (9 * 2 + 3 + 5) * 8 + 6 + 8) +2 * (7 * (2 + 9 * 6) * (8 + 8 + 6 + 7 + 4) + (9 * 3 * 7 + 2 * 3) * (8 + 4 + 5)) * 3 + 3 + 9 * 3 +2 + (6 * (3 * 3 * 3 * 3) + 5) * 6 * 3 + 2 +(8 + 6 * (5 * 4) * 3) * 8 + 7 + 6 +3 + 7 + (5 + (4 * 7 * 4)) + (9 * 5 * (6 + 6 * 8) * 7 * 7) + 6 +8 * 2 + 5 + 4 + 2 * ((7 * 2 + 5) * 9 * (6 + 4 * 8 + 2) + (5 * 7 * 5 * 7 * 2 + 5) + 2) +(7 * 6 * (3 * 3 + 4) * 9) * 3 +9 * 8 + 9 + 7 + (8 * 3 + 7 * 2) * (7 * (5 + 2) * (2 + 5 + 2 + 9 + 3) * 8 * (5 * 2 + 3) * 7) +4 * 9 + (6 + (2 + 7 + 7 * 3) + (5 * 7)) + 2 +9 + 2 * 2 + 7 * 7 + 5 +8 * 7 + 2 * 9 * 4 +4 * 9 + (9 * 5 * 4 * 7 * 3 + 6) +8 + 3 * 3 * (9 * (9 + 5 + 6)) +6 + (6 + 5 + 6 + 7) + (5 + 6 * (8 + 5 * 6 * 6 * 2)) * 6 + 7 +6 + ((3 * 9 + 9 * 6) + 5 * 6 + 5) +(2 + 6 + 5 * 8 + 9) * 4 + (7 * 6 + 2 + 9 + 2) + 2 +4 * (9 * 7 * 7 + 8 * 7) + 6 + 8 * 2 * 7 +8 + (7 + 4 * (8 * 9) + 8 * (9 * 2 + 9) * 8) * 2 * 7 +6 * 9 + (9 * (9 + 6 * 2 * 6 * 5 + 2) * (2 * 8)) * 8 + (5 * 3 + 4 + (2 * 9 * 2 + 3 + 2 * 9) * (2 * 2 + 7 * 8 + 8) * 9) +(9 * (8 + 2 + 3 * 5 + 6) + 7 * 3) * (6 * 7 + 8 + (7 + 4) * 3 + 2) * 6 + (3 * 8 * 3 * 3 * 7) + 7 +2 + 2 + (3 + 7 * 5 + 7 * (4 + 9 + 8 * 3) + 3) + (2 * 6 * (6 + 8 + 9 + 4 * 7) * 9 * (2 + 9 * 9 + 9 + 9) + 8) * 6 * 8 +(7 + (6 * 6 + 5 * 9 * 7 + 9) + 7 * 8 * 9 + (9 * 5 + 7 * 7)) + 8 * 6 +8 + 8 + 6 + 8 * 3 + (7 * (5 + 3 + 6 * 6 * 9) * 9 + (7 + 7 + 8 + 8 * 6 * 3) + 7) +3 * ((4 + 2 * 8 + 6) * 7 + (2 * 7) + (9 + 4 * 7 + 3 * 8) * 2 + 4) + 7 + 5 + 6 +2 * 9 + 6 + 3 + ((5 * 8 + 4 + 2 + 7) + 7 * 4 * 8) * 9 +9 + 6 * (6 + 5 * (8 + 4) + 6 + (4 * 7 * 7 * 7)) * 7 + 9 + 3 +4 + (2 * 5 * 9) +6 + (6 * 2 + (2 * 2 * 2 + 8 + 3) + 5) + 7 + (2 + 3 * (9 + 2 + 5 + 4 + 2 + 3) + 8 * 2 * (9 + 6 + 3)) +6 + 2 + (2 + 7 + 7) + 2 +6 + (6 + 6 + 7) * (5 + 8 * (2 * 6 + 6 + 9 * 7) * 5 + 4 + 7) * 7 +4 * 5 + 9 + 7 + ((6 * 3) + 3 * 2 + 6 * 3 * 8) * (3 + 8 * (7 * 7 * 9 * 2 * 8) * (8 + 2 + 7 + 8 + 9) + (5 * 9 * 6 + 5 * 3 + 9)) +5 + (5 + 5) * 5 +7 * (6 + (7 + 8 + 3 * 3) + 9 + 5 * 7) + 8 + 6 +(8 + (3 * 5 + 6 + 5 + 3 * 8)) * 4 +7 * 7 * 9 * (2 * 7 * 2 * 8) * 6 +5 * ((5 + 6) + (9 * 3 + 9)) * 5 + 6 + 6 + (4 + (9 * 3 * 5 + 6) + 5 * 4 * 7) +8 * 6 + (9 * 9 + 2 + 3 * 6 + (8 * 7 + 8 * 2 * 7 + 2)) + 9 +(7 + 2 * (2 + 9) + (3 * 4 * 7) + 7 + 6) + 8 + 4 * (6 * 2) + 4 * (7 + 5) +5 * 9 * 7 * 5 + (6 + 8) +(3 * 7 + 7 * 9 + (8 + 8) + 8) + (5 * 5 * 8 * 2) * 5 * (5 + 9 * 5 + 2 + (5 * 4)) * 9 * (8 * 2 * 7 * 7) +(4 + 7 * 9 + 5) + ((6 + 3 + 8 + 7) * 6 * 6 + 4 + 5) * 4 * 7 + (4 + 4 + (6 * 2 * 5 + 3)) +2 + 9 * 4 * 7 * (8 * (4 + 8 + 4) * (5 + 7 + 4) * 3) +(3 + 3 + 3 * 8) * 8 * ((3 + 9) + 9 * 2 * 3 + 9) * (5 + 8) + (9 * 2) + 9 +4 + 5 * ((7 * 3 + 6 * 9) * 9) + (5 * 9) * 3 +5 * 5 + (5 * 7 * (5 + 9) + 4) +7 * (6 + 7 + 6 + 5) * 5 + (9 + (2 * 4 + 4 + 6 + 2) * 5 + 5 * 3 * 6) +6 * (9 * 7 + 5 + 4) + 4 + 9 + 6 +6 + (3 + 8 + 5 * 9 + (3 + 6 + 5)) +7 + 3 + (2 + 5) +(5 * (5 + 3) * 3 + 2) * (4 * 6) + 6 +2 + ((6 * 7 * 6) * (7 + 7 + 9 * 2) * (2 * 3 + 9 * 9)) * 3 * (6 + 3 * 5 * (2 * 5 * 7 * 7 + 4 + 5) + 4 + 3) + 7 * 3 +6 + 7 * (3 * 3) + (9 + 9) * 2 +2 + 8 * (4 + 8 + (6 * 3 + 8 * 2 * 3 * 4)) * (2 * 9 + (2 + 6) * 8 + 3) * 3 +2 * (5 + 4 * 6 + (2 * 8 * 4) + 6) + 2 +(9 + 6) * 8 + 8 + 6 + 8 +8 + (2 * 2 + (7 * 6 + 3 * 8 * 5 * 7) * 3) + (8 + 4 * 4 * 9) +6 * (9 + 6 * 7 + 2) * 2 * (6 + (5 + 8) + 4 + 7 * 6 * (9 * 5 + 7 * 7)) * 2 * 5 +9 + (7 * 3 + (2 + 8 + 8 + 8) + 3) + 7 + 8 * ((4 * 6 * 2 * 5 * 3) * 5 * 6 + (4 + 3 + 9 * 5 + 3)) * 5 +8 * 6 * (2 * 3 + 2 * (8 * 7 + 5 + 5 + 2 + 2) + 6 + 6) + 6 * 2 * 2 +7 * (7 * 9 * 2 * 7 + (3 * 5 + 6)) + 9 +6 * (9 * 4 * 6 * (9 + 6 * 6 * 6) + 9) * 8 +7 + 3 * (3 + 2 * (9 * 6 * 6 * 7 + 5 * 5) + 3 * 2 * (4 * 7)) * 7 + 9 * 3 +(7 * 5 * 5 + 7 * 2) * 6 + (7 * (2 + 5 * 3 + 8 * 4 * 5) + 4 * 8 + 9) +4 * 4 + 9 + 4 * 4 + 8 +8 * 8 * (6 + 6 * 8 + 9) + 7 + 7 + 4 +(8 + 3 + 4 + 7 + 7) * 5 * 3 +2 + 4 + (9 + 6 + 5 + (3 * 4 + 2) + 5) + 2 + 7 + 8 +(6 * 3 * 5) * 9 + (6 * 3 * 8) +((2 * 5 + 4 * 6 + 2 * 6) * 7 * 5) * 6 * 9 * 2 +7 * 3 * ((5 * 5 * 4 + 5 * 8 + 4) * 9 * 4 + 7 + (3 + 6 * 2 * 6 + 4) + 3) + 7 + 9 +7 * 6 * (6 * 9 + 5) + 2 + 7 + (6 + 3) +((6 + 2 + 7 + 5 + 7) + 9 * 9) * (4 * (2 + 6 * 7 * 7) * 5) + 9 * 9 * (8 * 6 + 2) +6 + 4 * 7 * (9 * 5 * 6 * 2 + 6) + 8 * 4 +4 * 5 * 9 + ((8 + 3 + 7) + 2 + 5) + 8 +7 * 4 * (7 + 8 * (6 * 7) * 9 * 7 * 6) +2 + 4 + 3 +(7 + 8 * 2) + 2 + (2 * 9 + 6) + 4 * 5 * (2 * 4) +(8 * 8) * 2 + 5 + 7 +7 + (8 + 8 * 6 * 8) + 2 * 7 * 7 * 3 +4 * (9 * 5 + 9) * 3 * 7 +9 + 7 + 9 + 6 + (9 * 9 + 6 + 9) +(9 * 3 * 6) * 7 +2 + (2 + (4 * 2 * 7 + 6) * 7 * 9 * 9 * 9) * 6 + 3 + (3 + 8 * 8 * 7) * 2 +8 + 4 + 6 +7 * (2 * 2 * (8 + 3 + 8) * (3 + 6 * 8 * 3) * 9 + (9 + 9)) * (3 + 5 * 9) +((5 + 9 * 7) * (3 + 9 * 5) * 7 * 4 * 4 * 6) * 9 * 9 + 5 + 9 + 2 +(5 + 6 + (5 + 9) + 7 + 4 * 3) + 2 * (9 + 8 * 5 * 8 * 9) + 8 * (5 * 2 + 6) * 3 +8 + (6 * (3 * 7 + 8 + 8 * 7)) \ No newline at end of file diff --git a/src/main/resources/2020/day19.txt b/src/main/resources/2020/day19.txt new file mode 100644 index 00000000..795498f5 --- /dev/null +++ b/src/main/resources/2020/day19.txt @@ -0,0 +1,530 @@ +3: 97 29 | 2 104 +45: 97 10 | 2 73 +114: 44 97 | 90 2 +78: 2 95 | 97 32 +7: 97 64 | 2 119 +118: 97 81 | 2 58 +64: 97 29 | 2 14 +106: 53 121 +4: 2 103 | 97 55 +54: 2 53 | 97 44 +58: 33 97 | 130 2 +91: 104 97 +102: 104 97 | 83 2 +128: 2 59 | 97 3 +79: 98 2 | 124 97 +117: 2 65 | 97 92 +1: 75 2 | 115 97 +40: 2 96 | 97 119 +8: 42 +92: 102 97 | 57 2 +97: "a" +93: 2 66 | 97 103 +36: 2 104 | 97 32 +2: "b" +108: 43 2 | 68 97 +46: 44 2 | 90 97 +31: 97 5 | 2 132 +110: 14 2 | 90 97 +61: 38 2 | 9 97 +10: 63 2 | 34 97 +32: 2 2 | 97 121 +11: 42 31 +103: 121 121 +131: 75 97 | 60 2 +74: 2 112 | 97 47 +20: 93 2 | 69 97 +53: 97 2 | 97 97 +23: 125 121 +9: 97 66 | 2 25 +101: 83 97 | 95 2 +35: 25 2 | 104 97 +76: 97 55 | 2 104 +125: 83 2 | 32 97 +22: 59 97 | 76 2 +127: 6 97 | 55 2 +126: 97 119 | 2 17 +113: 59 97 | 35 2 +81: 46 2 | 72 97 +104: 2 2 | 97 2 +100: 25 2 | 95 97 +95: 97 2 +132: 97 27 | 2 45 +107: 97 90 | 2 32 +34: 98 97 | 50 2 +33: 2 95 | 97 83 +119: 32 97 | 66 2 +90: 2 2 | 97 97 +77: 126 2 | 22 97 +6: 2 97 +14: 97 2 | 2 121 +94: 2 110 | 97 129 +21: 56 97 | 105 2 +65: 2 96 | 97 98 +122: 2 71 | 97 86 +87: 101 97 | 91 2 +15: 107 97 | 120 2 +120: 103 2 | 66 97 +56: 128 2 | 20 97 +129: 2 66 | 97 83 +41: 97 48 | 2 122 +13: 39 97 | 26 2 +30: 97 88 | 2 54 +84: 55 97 | 53 2 +86: 84 2 | 59 97 +96: 55 2 | 104 97 +83: 97 121 | 2 97 +50: 53 97 | 95 2 +19: 2 70 | 97 78 +121: 2 | 97 +57: 53 2 | 83 97 +37: 6 97 | 6 2 +68: 97 53 | 2 83 +112: 97 23 | 2 19 +66: 2 97 | 2 2 +49: 97 90 | 2 103 +80: 2 97 | 97 97 +85: 83 97 | 55 2 +12: 2 35 | 97 51 +116: 97 67 | 2 77 +123: 4 2 | 85 97 +82: 21 2 | 111 97 +105: 30 97 | 87 2 +72: 25 97 | 95 2 +115: 104 2 | 29 97 +63: 97 37 | 2 36 +42: 24 2 | 82 97 +0: 8 11 +70: 2 80 | 97 25 +5: 2 74 | 97 116 +52: 16 97 | 94 2 +62: 35 97 | 114 2 +18: 123 2 | 61 97 +25: 97 97 +88: 83 97 | 66 2 +124: 2 6 | 97 80 +89: 114 97 | 100 2 +44: 97 2 | 2 97 +71: 49 97 | 106 2 +38: 2 104 | 97 90 +75: 53 2 | 104 97 +98: 53 2 | 25 97 +69: 97 95 | 2 95 +73: 2 1 | 97 7 +24: 41 97 | 109 2 +48: 2 40 | 97 113 +39: 103 2 | 104 97 +67: 2 15 | 97 62 +55: 2 2 +47: 2 79 | 97 108 +51: 6 2 | 95 97 +17: 95 2 | 90 97 +59: 53 97 | 66 2 +28: 2 12 | 97 131 +27: 2 52 | 97 28 +29: 97 97 | 2 121 +16: 4 2 | 127 97 +109: 2 117 | 97 18 +43: 104 97 | 6 2 +99: 97 89 | 2 13 +130: 83 121 +111: 99 2 | 118 97 +60: 97 44 | 2 25 +26: 121 44 + +abbbbababababbaabbbbbbab +bababababaabbbaaaabaabaaaaabaabaaabbbbab +baaaabbbabbbbababbbbaabababaaababbaaaabbbbabbbbb +abbababaaabbabbaabaaaaaaaaaabaabaaabaabb +aabbaababaabbabbaaabaababaaaabab +baabaaaaabbabaabaaabaaabbaaabbabbaaabbbbbabbbaba +babaabaaabaabaababaabbab +bbbbbababbbaaaababaaaaabbaabaaba +bbaabaaaaaaabbabbababaabbabbaaaa +aabbababaaaabababbbbaabbaaabbaba +bbaaababbbbaababbbbabababbaaabaaaaababba +bbbbababaabbbabaabbaabbaaaaabbbabbbbbbbbbaaaabaabbbaaababbaaaaababbbabbabbabaaab +bbbabbbabbaaabaaabaababbbaabaabaaabbbbba +abbbbbabbaabbbbbbaaaabbbbaaaaabb +aabbababbabbababbbbbaaabaababbaabbaabbaa +bbbbbabaaabbaaaaabaaabbbabbaaaba +baaabbbbbaabbaaabbbaabaaaaaabbbbaabaaaab +bbabbbaaaabaabbaabbbabab +bbbbbabbbabbbababbabaabaabbbbaab +aaaabbabbbababbabbaabaaaaabbbaaaabbabbababbbaabbbbbbaaaa +bbaabbabbaaabbabababbbbbbbbbabbbaabaaaaaabbababbbbbaaaba +bbbaabbbaaabbaabbbbbbaaa +bbabbabbbababbbbababbbaa +baabbbabaabaaabaabbbbbbbaaabbaaaabbababa +aabbaabaabaabbbabbbbabaaabbabbbbabbabaabbbabbbaababbbbba +aaabababbbbaaabbbaaaaaabaaaaabaabaabababbbbabaaaabaaaaabbbbbbbba +babaaabaaabbbabaabaaabbbababbabbbabbabaaaaabbaba +aabbaaaabbbbbabbbbaaabbbaabaabbbbbaaabbbabaabbbbbbbababaabbaaabbabbaaaba +aaaabababbaabaaaaaaaaaba +babbbbaababaaaabbbabbbabaaababaaabababaaaaabbaababaaaaba +abbbabaababababbabbaaaab +babaabbbbabababaabaaaabbbababababbaaaabbaabbabba +bbabbababbbababbabbaaabb +bbabababbbbababbbbbbaaaa +bbaaababaaaababbbabbbaba +aabbbabababbababbababaaaababbaabbbabbaabaabbabbbbaaaaabb +bbbbbababbaabbababaabbbbababbbaabbbabbba +abbbbaabbbaaababaaababaaababbbbbbbaaaaaabbbaababaabababb +baaaaabbbaabaaabbbbbbaaaaabbaabaaabbaaaabbbbbbbbbbaaaaabbabbbababbabbbba +abaabbbaaabaabbbbaaabbababaabbab +abbbbababbbbaaababbbbbabbababbaaababbabaabbaabbb +babbababaabbbaaabaaabbabbbbaabaabaaaabbbabaabbaaabbbbbba +babbabaabaababbabbaabbbbbaabaaabbaabaabbbbaaabbaaabababb +babaaaaababbbaaabbabbabb +baabaaabbbbababbbabababbabbabaabbbaabababbbbbbabaabaaaab +aaaaabbbaababaababbbbababbbabbaaabbbabbbabbaaabbababaabbbaaabbaaaaaabbaa +bababaaaabbbbbbbababbbababbbbbaabaabbaab +baaabbbbaaaaabbabbababaaabbabbab +aaaaabbbaabbbaaabaaaaaabbabbbbbb +aababbaabbbabbaaabbbbabbaaaabbbb +aabbababbbbbbaabbaaaaaaaabbbbaabbbabaabb +bbbbbaabbbbbabaaabbbbbaa +babababaabaaaaaabbaaabbaaaaabbbaabbbbbababaaababbbabaaabbaabbabb +bababababbaaabbbababaabb +bbabaababbaaaaabbabbbaaabbbaaaababaaaaaaaabbbbab +bbabbbabbbbbabaabbbabaaa +aaabbbaabbaaaaabbbabbabababababbabbababb +aabbaaaabaabaabbbbbbaabaaaaabaaabaabbaab +aaaabbbabbbbaaababbabbab +abbaaaaabaabbbaaaaabbbbbbbababaabbbbaabbabbbababbaaaabaa +aaaabbbababababbbaaababaabbabbbabbabbbbb +baaaaaabbaababbbabbaabaa +aaaabbbaabaaabbbbaaaabbababaaabaaaabbaaabbababaa +bbaaaaabbabbaabbbabbbaba +aaaabbbababababbababbaababaabaabaaabbaab +baaaaaababaaabbabbabbaabaaaabbbb +bbbbaaabaaabaabaaabababaabbabaabbbbaaabb +aaabbababbbbaabbbbaababbaaababba +aabaabaaaaaababbbabbaaaabaaaaabaabbabaaabbabaaabaaabbbababaaabaa +aabaaabbabbabbbaaaabbbab +bbaaaaaabaabaaaababbaaaaaabaababbbbbbabbbabbbaaabbbabbbbbabbbaab +bbbbabaabbabbaaabaaaaaaabbbaaaabaaaabbababbaabbbbbabaabaaaabbbbaaaababaa +aaababaabaababbabbaabbbbbbbabaabaaaabaaabaaabbabaaaabaab +ababababbbbbbabaababbbabbbbaaabbabbababaaaabbbba +babbbbabbaabaababbabbbaabbbaabbbbaabbaab +aabaaababbbbaaabbabaabbaababaababbbabaab +aabaaabbbbaabbbbbbbaabbababbabaabbaaabaa +abbbbbbbaabbbaabbbabbbabbababbaabbababbb +aabababababaaaaabbbababbbaabbbba +aaaababbabaaaabbaabaabbaaaabaaaa +bbbbbabbababbaaaabbbbbabbaabaababbbbbaaa +aabbaaaababbbaaaaaaabbaa +aaaaaaabaabaaabbabbaaaaa +babaaababbaaabbabaabbbbbbaaaababbbaabaab +abbabbbaaaababbbababbbabaabaababbbababab +baabbbaabbabbbabaabbbaaabbaaaabbbbaaabaaabbaabbb +babaabaaaaababababbbbabbbabaabaaaabaaabaababababbbaabbbabbaaaaaababaaaab +aabaaabbaababbaaabbbbbaa +aaababaaaaaaabbabbbbbbba +ababbbabbabaabbabbabbbbababbaabbaabababb +baabaaabbaaaaaabababbaababaaabaaabbbbbbbbaabababbbbabbba +bbababbababbababbbaabbbbbbbababbabbaaabbbbbbaabbaababbba +ababbaaaaaabbbaaababbbaa +ababbaabababbaabbaabbaba +aaaaabbabbabbbabbbaaabbbababababaaababbabababbabaaabbbabbbaaaaba +aabaabaaabbbbabbababbaababaabaaabaababab +bbabbaaaaabbbabababababbababbbaaabbbaaaababbbabbbbbbbbabaababaaa +aabaaabbbbbbababaaabaaaaaababbaaabaaabaaaabaabaabababaabbbbaaaaabbbabaaa +aaabaabaabaabbbabbbbabba +aaabbbaabaabbbabbbababbb +bbbbbaababbbbaabbbabbaabbbbaaaaa +baaaabbbbbabbbababaaaaababbbabab +bbaaaaabbaabaabbaabbaaaaabaaabaaaaababbbabaababa +babaabbaabaaabbabaababbaababaaaa +abbbaababaaabbababbbbaabaaababbbbbbbbbab +abbbbbbbbbaaabbbaabbabaa +baababbabaaababaababbabababbbbabaababbbaaaabaabbabbaaabb +bbababaabbaabbbbbabaabaababbabba +bbbaabaaababababbaabaaba +aaabaaaaaaaaabaabbabaaabbbaabbab +aaaaabbaababbabababaabaabbbaaaaa +ababbabaaaaaaaaabaabbbaaaaaaaaabaaaaaaaababbaaaa +aabaabababbaababaababbabbaabbaabbbaaaabbababbabbbaaabbba +babaaaaababbaabbbbbbabaabaaababababbbabbaabbaaab +bbabbbabbbbaaaabaaaabbaaabbaabaabaaaabaa +baababbabbabbbaabaabbaab +babaabbbabaabbbaabaaabaaabaaabab +abaababbbababbbaaaaaabbababaaabbbaaabbbb +aaaababbaabaabbabbaaaaaa +baabbbbaabababababbbbaaababbaaaabbbbaaababaabbaaaaabbbbbaabbabbbbbaaaaaa +bbbbaaabbabbbaaaaabbbbba +aaabbbaaaabababaababbaabbbbabaaa +baabbbbbbaabaabbbababbaabbbabbabaabbbbab +baaababbaabaaabbbbbaaaaaaabbabbaaaaabaab +ababbabbabbbbbbbabababbaaaabababbaaabbaa +baaabbbababaabbbbaaaaabb +bbaabbbbababaabaaaaaaaba +aabbbabbbbabbbabbbbbabba +abbabbbbaabaaabaaabaabab +aaaaaaaaaaabaababbaaaabbaabbbaabbbbabbaabbabbabbababbbaabbaababbaaaaaaba +abaabbbbaabbbabbabbbbabaabbabbab +bbaabbabbbabbbbaabbbbaabababbbbaaaaaabbabbabbbbb +bababaaabaabbbbbbbaabbbaaaabbbab +abbbabaabaabaabbbaabbababbbababababbbabb +ababaabababababaababbbabbababaabbabbbaababababbb +baabbbbbabaabbbbabbbabab +ababbabbbabababbbbabbaaaaabbabbb +baabbabbbbaabaaabbabbaabbbabaabb +babababbbabaabbaabbbbbba +abaaaaabbbababaaaabaabbbaaaabaab +baaaaaabbabbababbaababbbbaabbabbaabbbbab +abbbabaabbaaababaabbbaabaababaabbababbabaababbba +bbabababaabbbbaaaabaabaaabaababbaabaaaaababbbbabbbaaaaabbabababaaabababababbaabb +aaababaaababababbbbbbababaabbabbabbbbabababbbaba +aabaabbbaaaaaabbbbbaababbabbbbba +bbabbbabbbaaabbbabaabbbababbababbbbaaabaaaaaabaabaaabaabaabbbbaaabbbabab +bbaabbbbbbaabbbbbaaababaaababbabbaaaabba +ababbbbbabbbbaabaabaabbaabaabbab +bbabbbaaaabbbaabbbababbaaaabbbba +baabbbbbababbabababbbaababbabbbaaaaaaaba +abbabbbaaabbbaaabbabaabababbabaaabbaaaaaaaaabaabbbabbbbb +aaabaaabbaabaabbbaababaabababbbbaabaaaab +baabbbaabaabaabbaababaabbbaaabba +abaaabbbbbbbabaababaabaaababbbbaaababbaaaabbbabaabaaaabababbbbbbabbaabab +abaaaabbaaaaaaabbbbbabaaababbabbabaaabaabbaabbba +bbaabbabbbbaabaabbaabbaa +abbbbababaabbbaabbbbbabaababbbaabbbbbaaa +babaaaaabbbbbbbbbbbbbababbbaabaabaaaaaabbbabaaabaabbabaa +bbaaababbabaabbabaabbbbbbababaabaabababbbabbbbba +baaaaaababbabaabaaaababaababbaabaaaaabab +aabaaaaabababaababaaababaaaabbabaabaaabaabbababbbaaabaaabaababaa +babababbababababaaababbb +aaabaaabbbababaaaabaabbabaaabbbabaaaabab +abbabbbaaaabbbaabbaaaabbbabbbabbabaabbaa +bbbbbabbabaaabaabbababaabaabbabbbabbaabbbbbbabbbabbaaaaa +bbbbbabaaabbbabaababbbbbabaabbbbbbaaaabbbbbaabbbabaaabab +bbabababbababaabababbbbbbbbaaabbabbaabbb +aaaaaabbbbbaababbbaaabaabbbaaaaa +aaababbabbabbbaababbabbaabbabaabaaabaababbbabbabbbbbbbbbaabaaaab +abbbbbbbbaaabababaaaaaabbbabbabb +babaabaabaaabababaabbabbbabaabaabbbaabaabbabbbaabbbabaaa +bbaabbabbbabaaabaaaaaabbbbabaaab +baaababbababbaaaabbbbbba +baaababbaaaabaaaaababbaabaabbbbbabaaaaababbaabaaaabbbbaaaaabaaaa +aabaabbbbababaaababbabaabaabbaaabbaaabbbbbbbbbbbabbababb +aabbbaaababaabbabaabaaaaaabaaabbbabbaaabbababbbbabaababb +baaabbabbaaaabaaaabaaababbbbabaaaaabaaba +ababbaabbaabbbabbabbababaaaabbbbaabbabba +abaabbbbbababaaabaababab +baabaaaaabaaabbbaabbaabbaaabbbbb +bbbbbbaaaaabbaababbabbabbbbbbbaa +abaaabaabaabbbbbbabababbbabbbaaaabaabbbaabbbabbbaabaaaaa +bababbaabaaabbababaababb +bbbabaabbababbaabbbabbaababbbbbbbbbbbbab +bbbbbbbbaabaabbaaaabaaabbbaaabbbbbabbbbb +abbabbbabbbbbaabbbaaabbbbaabbbaaabaabbbbbabbabbb +baaabaaababaaaaaaabbbabbbaabbaaababbbbbbbaaaabba +abaaabbaabaabbbabbaaabbbabaaabbbaababaaa +aaaaabbbaabaabbabaabbbbbbbaabbaa +aaaabbbaabbbbabaabbabaaaaaabaabb +aaabaaabaaabaaabbaabbaaababbbbabbabaaaab +aabaaabaaabababaabaaabaaababbaaa +bbbabbaabbabaababaaabbbabbbbaabb +bbaabbbbbaaabaaaaaaaabbaaaabbbbb +abbbabbaababbbbbbbbabaaa +bbbababbababbbabaabaabba +babbbaaababaabbbbbababababbbabaaabbbbaaa +abaaaaabbaaaaaabbabbabbb +ababaababbbbbabaaababbab +abbbabbbaaaaaaababbbaaaa +babaaaaabbaaabbbabbabbbbaabbaaaaabaabbabaaabbabb +babbaabbbbbbabaaabaaabbaabaabaaabababbba +ababbbbbaaabababbbbabbaaabaaaaaa +bbaaaabbbaabbbaababbbbbb +abaabbbaabbbbbbbaaabababbbbbababaaaabbaa +abaaabaaabbabbbbbabbababbabbbaabaaaaaabaaaaaabaabaababab +abaabaabbaaabbbbbbbbbabbaaabababbbaabaaaaaaaabab +aaabbbaabaabbbbbbabaabbabbbbaabb +bababaaabaabbbaabbaaabbababbbaabbbbabaababaabbaababaaaab +aaabaabaaababababbabbbbb +bbbababbaabbbaaaaabbbaabbababbba +baabbbaaabbabbbbbbbbabaaabbbbaabbababbbb +baabaaaaaaabababaaabbbab +babababbaabbbabaabbbbaaa +babaaababbaabbbbbababaaaabbbaababbaaabaa +aabbbabbbabbababaaaabababbbaabba +aabbbaaabbabaabbbbbbabbabbbbbbaaaababaaaabbbaaabbaabbabaabbbabaaababaaaa +ababaabaaaaababbbaaaaaba +bbabbbbaababaababbabbaabbbabbaaaaaaaaaababbbbbbabbabaaababbbbaaabbabbbbb +bbaabbabbaaabaaaaaabbbaabaababbbbaababbabababbababaabaaa +bbbbbaabbababaabbbabbaabbbababaabababbab +baaabbabaababbaaaaabbbaabbbbbaabbabbbaaaabbaaaabaabbbbaa +aababababababbaaabaaaaababbabaabaaaabbbaabaaabaaabbaababbbbabbbbbbbaaaaababbbbab +aaabababaabaaabbaabaaabbaaabbabbaabbaaab +baaabaaabbbbbbbbaaaaaaba +abbbabbbbbbbaababbbabaaa +babababbbbbbbabbaabaabbababbbbba +aaaaabbaaabbbaababaaabbbaabbbbab +bbbaaaaaabbabababaabbbaaaaaabbaaaababbbaaaaabababbabaaaaaaaaababbbbbbaabbbabaaab +aabaabbabababbbaabbaabbbbbabaabbbbabaabb +aaaaaaababbbabbbbababaaababababbaabbbaaabbbabbba +babbabaababbaabbbaabaaaabbaaaaababaaabaabaabbaab +abbbbbbbabbbbabbaabbbaaaabbbbbaa +bbaaaabbbaaabbbbbbbbabbb +aaababaababaabbbababbabbabaabbbabaabbaaabbbbbaaa +bbbababbbaabbaaabbabaaaababbbaaabbabbaba +abbabbbbbbbbbaabaabbaabaababbbaa +baababbabaaaaaaaaabbbbaa +baaabbabaabbbbbbaaaabbabbbbaaabb +bababbaabaabbaaabaabbabbabababbb +bbbbbababbbabbaabaababab +aaaabbababbabbbabbbbbbbbaaabbaab +bbababbaaababbaabbbbbbbbaaaaaababaaaaaba +ababbababaabbabbaaabaaaa +bbabbbaaaaaabbabaaaaaaabbbabaababbbbbbaababbbaba +aaaaabaaababbbaabbbbabba +ababbbbaaabbbbbbbaaaabbbbbaaabbbbbbbbbaa +babbaaaaabbbabbbaabbbababaaaaabaaaabaababababbab +baabaaabbabababbbbbaabbabbbbbbabbbbbbbaa +bbabbabaaaaababbaabaabaaaabbabbabbaaaaaa +aabbbababaabbabbbabaaabaabbaaababbbbaabb +aabbbaabaabaabaaaaaababbbbbababa +abaaaaaaabababbbaaabbaabaaabaabb +abbbbabbaaaaabbbababbabbbabbbaaaabaabbbbabaabbbabbbaaaba +aabbbaaaaaabbbaaaaaaabbbbababaabbbaababaaaabbaaaababaabb +aaababaaababbaaaabbbabaaabbababb +baaabbbabaaaaaababbbabbbbbbbababbbaabaabbabbabbababbbbabbbabaaab +bbabbabaaabbababbaabbbabaabbabab +abaabbbabbbbabaabbbaabba +babaabbbababaababaabbbbbaababbba +abaabbbbabbbabaabbababbb +baaabaaaaaaabaaabbbbbaabaaaabbbb +bbaaabaaababbaabbbaaababaaaabbbbabbaaabaaaaaababbabaaaaa +babbabaaaabbababaabbbaaaabaabbbbbbbaabab +bbabaabaaababaababaababb +aabbaaaabaabbbaabaaababaabbbbbabbbabbabaaaabaabb +baabbbabbaabaabbabaabaabbaabbbbbabababaa +abaabbbaabbaabbaaaabbbbababaaabb +bbbbaaabbbbbbabaaaaabaaabbbabbab +ababbbbaabbbabaabababbbabbababbaaaabaaabaaabaaaabbaaababaaaabbaabbbbaaaa +bbaabbababababbaaabbabbb +babaaababbaaaabbaabbbbab +bbabbbaabaabbabbaabbaaaaaabbbaabaaabbbab +abaabbbbabaaaabbaabbababaaaababaabaabbbabbaababbbbbaaaba +abbbbaabbbaaababbbabbbaaaaaaabaabababaaababbaabb +aabbbabbaaabaaabaabbabba +ababbabbababbaababbbbabaabbbaaab +ababbbbaabaaaaabaabbaaab +babbbaababababbaaaabaaabbaabaaaabbaabaaabbaaabbaaabaabababbaaaba +bbbbbbbbbaabbbababbaabba +aabbababbaabaaaaababbbaa +aabbbbbbababaabaaabaaabbbbabbabaaaaaababaaabbbba +aabaabbaaabaabaabbbaabaaaaaabbbb +abaaaabbbbbbaaabaaaaabaa +baaabbbbbabbabaaababbbaa +baaababaababaaababbaaabbabaabbba +ababaababbabbbabababbababbaababb +baaaaabbbaaababbbabaaaabbabbbababaaababbaaaababbbbaaababbaabababaababaab +baabaaaabaaababbbbabbbabababbabababbabba +aabbbabbababbabbaabbaaaaaabbbbaa +aaaaaaabbbbbaaaabbbabbabbaabababbbaaaaba +aabbbbbbaaaabbbabbbabaaa +aaaabaaaabbbbbbbbbaabbaa +baaaabbbabbbbabbbbbababa +ababaabaaabbaaaaabaabaabbbbbaabb +babaabbbbabbababbbbbabaaaabbaaabbbbaababaabbaaabbbabaabb +baabbbbbbbabbbbabaabbbba +aaababaaababaababbaaababbbababbaabbbbbabbbbaabbabbbbbbab +baaababbbbaabbbbbbaabaaabbbaabbb +baabaabbaaaaabbabaaabbababbaabbb +bbabaaaabbbababbaabbbababaaabbabbbaabbabaababbabbaaaabab +baabaaaabaaabbabbabbabaabbabbbababbbbbababaabaababbbaaaababaabab +abaaabbabaaabaabbbaaaabababbbbaabaaaabba +aaaaaabaaabaaabbaaabbaaaaabbbaabaabbaaaaaaababaa +bbbbabaaaababbaabaaabbaa +ababababbaaaaaaaaaaaaabb +aabbaabaaaabbaababaaaabaabaabbabaaaaabaabbbabbba +aaaababababbababababbbaa +abaaaaaababbbaabaaababbaababbaabbabbabababbbabbabbabbaab +bbabaabaabbbabaabaaabaaababaabbbabaaaabababbaabaaabbabaa +baabaaaabababaaabbbababa +aaaababaabbabaababaaabab +baaaaaaaaabbbabababbabba +abaababbbabbbaaaaaaaabbbbaaabababaababaaabbbbabaabbbaaaaabbaaaababbaaabb +ababbabbaabaabbbababbabaaabaabab +aaaaaaabbbabaaaababaabbaabbababa +bbbabaabbbbbabaaaaaaaaabbbbaabaabbabaaabaabbaaab +ababbabbaabaaabaababababaaaabbbb +aaabaaabaabaabaaaabaaabaaabaabab +abaaabbbaabbbbbbaaaaabaa +bbababababaabbbbbbbbbbbbababaaabaaabbaba +babbabaababababbabbbbbbbbaabbabbaaabbaab +aaabbbbabbbbbbbababaababbabbaaaaaaababbb +bbaaababbbaaabbbababbabbbbbbbbbbaabbabba +babaaabaaabbbabbaaaabbabbaaabaab +babaaaaaaabaabbbabaaabab +baaabbbbababbbbbbabbbaabbabaaaab +abababbbababbaaabbaaabababababaaaabaaabb +babaabbbababaabaabaabbbb +baabbaaaaaabbbaaaabababaaabbbaabbbbaabbababbbbab +bbababaaabaaaaabbabbbaaaaaababbb +bababbaababababbbbbbaabb +babbbaaababbbaaababababababbaaabbbaabaab +aaaabbbabbaaabbbbaabbbbbbbaabaaabaaabaab +baaaabbbababbaaaaabbbabbbabbbabbbabbbbab +bbabbbabaaaaabbbbabaabbbabbabbaa +abbbbaababaababbbaaabababbbbaabababaaaaabbabbbaaaaaabbaaabbbbaab +ababbbbabbabbbaaaabbbaaababaabaabaababbaaaaabbbbaaaabbbbbabaaaab +bababababaaababaababbabbabaabbaaaaabaabb +bbaaaabbabbabbbabbaabaaaaaaaabbbaaaabbababbabbabbabbbabaabbbaaabaabaaaab +bbaaabbbbaaaabbbbabaaaaaabbbaabb +babaabbaaaabbbaaaaabaaababbbabbaabbbbbabaaabbababbaaaababbbaaaaa +ababbabbbaabbbaabaaaabaa +aabaaabaaaaaaaaabbbbbaaa +baabaaabbabaabbbababbabbbababbab +abaaabbaaaaaabbabbaababa +babbabaabaaaabbbbababbab +aaabbbaaaabbbabbababbaaababababbabbbaabbabaababb +aabaaabaaabbbabaabbaaabb +abaaaabbbaaabbbaababbbbabaababab +bbababaabbbbaaabaabbbabbabbbaababbabaaab +abababbabbabbabbaabbabaabbaabbaa +abaaabbbababbbabbbaababa +ababbbabababbabaaaaabbbaabbababa +baababbabaababaabbaaaaaa +bbbbbaabaaababababaabaaa +babbaabbaabbbaaaabbbabbaabbabaaabbabbabaaaaaaaaababbbbaaaabaabab +aabababaababaabababbbaaabbaabaaabaaaabab +bbabaabababababbbabbbaba +aaababbbaabaabaabbaaaabbbbabaaabbbaababb +baaaabbbbababaabbabababaaabbbbbbaaabaaaa +abbbbabbaabbbabbabababaa +aabbbaaabbbababbbbaaaabaabbbaabb +ababbbabaababababaaaabab +bbaaabbabbabbbaaabbbaaaa +bbaabbbbabaaabbaabababbb +abbbaababbaabaaaaabbaaaaaaaaabaa +baabbabbabaaaaabaaabaaaa +aaabababababbbbabbbbbabaabababaa +aaaaabbbaabaaabbbbbabaabaaaabbaa +aaaaabbbababbbabbababbba +ababbbabababbaabbbaaaaabbbbbbbaa +bbbaaaabaababaabbaababbaabababaa +baaaaaabbbbaaaababbabbaa +baabbabbbbababaaabbabaababbbabbaabaaaaababababbb +abaaaaabbbbaaaababbabbaa +abbabaabbaabbbaaaabbaabbaabaabaaaaababbabaabbabababaabaabbbbbbbbbaaaaabbababbbba +aaabaaabbbbabaabbaababaaabbbbbabbaaaaaaaaababaaaaaababbabaaabbaa +aaaaaaabbaabbaaababbbaababaabaaababbbbaa +bababababbbbbabbaabababbbaaabaaaaaaaaaaaaabbbaaa +babababaaaaabaaabbaaabaa +abbbbabbbababbaababbbaabbababbbb +bbabbbabaabaaabaabbabbbbabbaaaaabbbabbba +aabbaaaabaaabaaaabbbbabaaaaaaaba +baabbbbbbaaabaabababaabaababaaaaaabbaaaabbbbaabbabbabbaa +bbaaaabbbbaaabbabaaabaab +bbbbbababaabbaaabbbbbaba +bbabbababaabbabbaaaababbbbbbbabaaaaaabaa +aaabababaabaabbbabbbabbaaaababaabbbabaaabbabbbbbabaaabab +bbbabbaababbababaaaaaaba +bbbbbababbabbaabbbbaaaba +aabaabbbbbabaaaabbaaababababababbabaaaab +baaabbbabbbababbabababaa +bbaaababbabaaaaaabababbb +bbabbaababbbabbaaaababbb +bbabbbbaabababbababaaaab \ No newline at end of file diff --git a/src/main/resources/2020/day2.txt b/src/main/resources/2020/day2.txt new file mode 100644 index 00000000..1ee63651 --- /dev/null +++ b/src/main/resources/2020/day2.txt @@ -0,0 +1,1000 @@ +3-7 r: mxvlzcjrsqst +1-3 c: ccpc +6-12 f: mqcccdhxfbrhfpf +14-15 l: llllllllllllldgll +11-16 n: tnsznnfscnwtsdwn +1-5 v: jvlgm +6-8 f: ffffhfdg +5-6 w: xmwwhw +16-18 p: ppppppppppppppptpjp +1-3 z: zszlzbjdcwvnr +4-18 t: svptbwvbkqvpzbcxtc +6-10 g: rhtwpsxrzgpgxhk +19-20 j: zpjxfwvkjjktpkrbpdkj +10-11 p: prppppppppnppb +8-12 b: pzsdlxgbfkdb +8-11 k: ktkkkjkkwknp +5-10 w: wwwwwwwfwwww +6-8 k: kkklmrkqsk +14-16 z: zzsdzzzrzgkblkzw +14-17 h: hhhhhhhhhhhhhmhhwh +3-11 c: mjvvwjzqbwc +2-10 k: kkkkkkkkkkkkkkkkk +8-10 c: rjtvnjccwc +4-6 l: wmlljl +1-2 t: lsfz +1-2 k: zkkq +16-17 k: kkkdkkkkkkkkxkknkkk +1-2 x: pcnrxx +6-16 t: dttttttttttttttttt +2-4 m: rrhmrkwhdfsmjxq +12-19 v: dxvgvcgszzxvpczvxsp +7-11 d: xddfqnddgnd +8-9 z: zzzzzzzsz +2-4 q: qqqqqq +8-11 j: jkfgjkljjvd +5-12 h: hhjhmfhrhhhh +12-13 b: bbbbbbbbbbbrpbbb +10-14 r: bmrttrbrmvfgcrrrj +7-8 l: ljlllpll +8-10 m: mmzmmmmmmh +11-12 f: qpfffffnfffmff +2-7 c: qcwcdns +3-4 t: tctt +11-20 z: zzhzzzczzzpzprzkzzlk +5-6 v: vdvvtvv +10-13 z: zqzzzdcjzbzzzszh +11-20 k: xmckvrzfwrkkkjlhvtfk +1-9 d: dwddcdddqxrdqddqd +2-5 p: gwlpprkqkdnt +7-9 h: hbrhphhhhkhphhh +6-8 f: ffffxhfmw +1-10 p: pppppppppjp +1-3 k: wkrk +4-9 r: rrvrrrrrrrkrqrskr +5-20 c: dpclkznjtqdcvscwcnml +15-17 t: ttttttttttktttrtxzt +3-10 z: gjpszrzkkz +5-8 f: fffffffffkff +3-8 b: btjpwbxn +1-6 k: zkmkkskkktkkp +10-12 f: ffffffffffffffvfbh +8-12 b: jxkfhgllbbtbv +1-10 z: gcswlzkgxzxd +4-19 p: pjppbpljprptcppvcngp +1-16 v: trjvcgvvvvqvndmn +7-14 x: xrxxmzxvtxnlxx +2-3 q: wqnq +2-5 w: mwxswhpfwnmrm +13-14 w: wwwwwwwwwwwlwww +8-10 q: qqpqqqqrqs +6-9 k: sdhqvvpbfcx +1-5 v: vvqcw +2-3 k: tkfwjzrk +8-14 v: vsvvfvvfvvmlvvtvv +6-9 v: vvtvhvvvv +6-9 x: xxxxxvxxzx +14-15 z: dtdsfssszznpczb +2-3 q: qjqg +18-19 b: bbbbbbbbkbbbbbbbgpbt +2-4 j: vtjjnvpnvmmtddqznml +12-15 k: fknkkkkkkkkkkkk +9-11 c: tffkcwkdrvpd +9-10 x: xxqjxxxznx +5-6 m: mmmmmd +3-10 q: qzcqqjxlmjqqqqq +9-13 r: rbbbmkmpbkwzc +6-11 v: vvvhvvvvvvvvvvvvv +6-11 r: rrrrlrrtrrszrr +4-11 n: znpjndnvnnzc +9-13 r: mrxrwwkhkrrhbrrb +4-10 v: vvvvvvvvvvvvvv +5-8 r: kmppsrxk +5-6 k: lkksjk +2-6 d: gzdthhpglpgjdj +1-4 b: bnbb +8-10 b: bbbbjbbrbbb +14-16 f: fffffffffffffffff +5-15 j: jpxjjjgjjjjjpfjjj +3-5 z: gvxzz +18-19 g: wggggggggggggggggdgg +1-2 x: xpxxxc +13-16 f: ffdffxvfffwfxmfmfrf +6-8 b: bbbbrcbj +5-9 q: qrmgkqbql +3-6 q: qfqkvq +4-6 c: cccwgc +1-16 c: pccccccccccccccscc +7-10 m: mmmmmmdpmcmmmmmmmmm +6-7 r: rrprrpb +4-5 s: sxdsn +12-16 h: hhhxhhhhhhhbhhcq +2-4 l: rlccllz +12-14 g: gggggggggggmgmggggg +11-12 b: bbbbbbbbbbjxbbjb +3-5 r: rwcdz +3-5 d: ddddd +3-4 z: zzzzzz +7-8 c: cccccczhc +11-12 r: rrqrrrrrrtrrrhr +3-5 g: ggggnwgp +5-6 f: ffmfbf +2-5 g: zgfgggtgg +1-8 z: zwjmtrtgnzsjdmkzvk +1-6 q: qqjjqqk +7-10 j: jjmjjjjkgg +16-18 g: gggggggggggggggggggl +1-3 s: jhchssfsqs +11-12 m: mmmmmmzmmmzb +18-19 t: tttttttttttxtttttsht +8-9 t: tmttttttc +12-14 g: mmdzgggqwnwxmg +6-8 x: csmvxkfxkg +4-5 r: crrrz +2-4 f: fxpq +6-13 v: xvvvwvkvvvlvvdvg +3-7 j: wjjxjjkjcwjpjjj +12-16 g: xgblggrgggggggggpg +4-5 r: wrrrr +2-12 l: lllllllllllllllllkll +4-6 g: sbvghg +3-7 j: sjjccjlcsb +2-10 j: nhjssggdrv +1-2 n: nnnnnn +4-9 x: xxqvgxsgnn +18-20 m: mmmmmbmllmmmmmmmrmgn +8-9 n: nnnnnnnnqnnn +1-4 x: nxxzxxx +2-12 l: lsllllllllldllxllll +7-9 t: jvtjqtqkstttk +15-18 m: mmmmmmzmmmmmfmcmmwm +7-9 n: nnnnnnnnn +1-2 k: qkbm +5-11 m: msznmlmmmhghn +17-18 n: nnnnnnnnnhnnnnnnlknk +2-3 r: rrrr +1-5 n: nslzn +18-19 b: hnbcxvbbbmjgmrtbxbz +5-7 r: rrrrfrjr +8-13 x: xxkxxxxxxxxxxx +2-4 s: qjqg +2-14 h: hhhhhhhhchhhhmhhhh +2-5 k: kfjqgkvmkgxkn +10-14 v: vvvvvvvvvqvvvfv +5-14 b: bbbbbkbjbbdbbbbb +6-8 r: trrqqsrvz +13-15 d: ddwdnjdcqckdzdr +1-9 r: rrrrrrrrzrqzqrrrrrr +16-17 v: vvvvvvvpvvvvvmvjvb +2-3 t: xttsckjbbdtt +8-9 h: hhhhhhhhhh +8-10 x: cwxnpxsxpf +3-4 w: wwww +2-10 v: rvcgnvtpsv +12-17 f: ffffffffkfftffffn +4-6 n: hjdxnvbjrb +2-3 b: bsrb +3-8 g: kttgwvwfgdhkt +11-12 k: kkspkkkkkdckbkzkkk +3-4 g: ggjl +7-9 r: rrrsrptrrrrrprcrw +9-15 l: llhlxfldlclfzswgjlk +4-5 p: ppppdp +10-20 g: vhsxgvgwzkfsngszbgfm +8-9 b: vhxlqfbwbsxkbjmc +11-13 p: ppppppspkprplpppp +2-5 d: pbffwd +14-17 p: jplkcfzphzcdlpcplm +3-11 m: jmmwtzmwmbmm +4-8 j: xnsvfcrjsj +8-9 d: ddddmdgdt +2-12 w: wtwwwwwwwwwww +11-17 m: mmmmmmmmmmmfmmmmw +17-18 d: dddddddddddddddwfd +2-3 m: mrhmmm +3-15 l: zmvlldsrflxfhlll +6-10 z: zzzzztzzzz +4-5 j: sbrjj +4-9 s: hdssssbkmsrrkw +16-17 d: ddddddddddzddddbdd +8-11 l: lllkqlnkwcmw +17-18 c: ccccccccccccccccls +14-17 n: hjxnnpnhftlxshnjw +14-15 x: xxxxxxxxxxxgxdpxx +10-12 n: rnnnnnnnnjnpnnn +3-4 l: hvjk +1-7 k: kkkkkkrk +2-8 t: tvzgpsztkjxgzsqddqp +13-17 b: bbbbbbbbbbbbbbbbj +16-17 b: bbbbbbbnbbbbbbdbfbb +3-4 v: vnvvt +3-13 d: dkpdddddddddpdddd +7-12 f: ffffftfwfffffffffbfr +1-4 k: gppr +1-3 t: tttt +5-12 d: ddndddcpqjkddqwlddd +3-8 h: rphprwhhdh +5-6 b: jxbbwn +5-8 x: xlxxscmwxz +4-19 m: tlhhjnhjblzjrxpxgmm +7-10 f: fffffffffsfff +13-14 g: ggggggggggggdlgggg +3-7 j: kjjpmwl +4-6 t: zrtdgtf +4-6 l: lsllll +8-9 j: jjjbjqjzjjjjwj +4-14 x: xxxdxxxxxxxxxfxxx +6-7 w: wwxkzwwjzb +4-7 q: bcqxkhw +14-16 f: fdffzlffbfffpffffff +12-13 l: gllxlllnllxlrxzllll +3-4 m: kmdhnphcm +2-8 m: tmnpfmlm +7-14 x: xxxxxxxxxxxxxxx +2-3 z: zzcf +7-11 s: zvsrsstpssfhfmssss +2-11 j: njmlkghhrjjx +9-12 w: wwwwwwwwbwwww +12-13 l: llllllllllllb +1-4 j: jjjj +2-4 j: jjjxr +5-8 n: nnnffnvcnvbsnnw +18-19 h: hhhhhfhhhmhhhhhchqh +5-7 d: zdddzjcf +7-11 g: ggggggggggggg +1-3 t: ftrt +1-2 x: pxpxmxxxxfxxj +6-7 v: nkphvvv +6-7 x: rxxqxmx +3-7 j: pjfjjjxjjjj +14-15 p: zwpctlgtldwdppjhf +2-8 m: xmlhvvcmrbzfxmn +8-17 w: wwwwwbwwwwvgwhwsww +13-17 n: nnndnnnnnsnsnnnns +7-9 c: xnrnfzddc +1-5 s: ssssssss +8-10 z: zjzzzzhdzd +10-13 c: bvmrccnxcwdcz +5-9 p: pppphppppp +5-6 r: zdnmcrqkw +1-3 m: mmmm +3-8 l: ndllbnwdfmgvm +2-5 p: kpprp +2-3 s: sqfsssssssb +7-8 q: qqdqjwqqc +1-2 p: ppppp +6-7 j: jjjjjqjjjj +1-2 z: zzzz +4-11 p: pvgrdzppmqwzpptptrwk +3-4 r: rrvzr +1-11 r: rrrrrrrrrrrrrrrrrrrr +7-8 p: ppxppppp +15-19 v: vvqvdvlmhqvsnvvvnvdv +1-2 f: hfpljw +2-3 j: cjjjx +13-16 v: vvsvvvvsvvvvvjvkvvq +7-12 d: ddgdddrddqddnddddd +7-11 w: wwwwwwxwwwmwnt +4-6 h: lfrczh +6-7 r: rrtrhrrrrrrrh +3-8 m: lmwmmnjmmzs +5-6 k: bwkrkkkc +2-4 v: cqvz +3-4 f: pjjf +4-7 m: rmmjzct +1-3 t: tsttsxxhds +5-7 g: ggggdllggg +4-13 n: fjtmcnmvcrnfnxnwrfmq +5-8 w: schwwlhb +3-4 q: glqqwq +2-7 r: tkwdmwrxkrz +9-11 k: rbkvkkkdhlkkk +6-7 x: xxxxxjzx +10-16 r: rdhtslrmrrfkdcbq +6-8 w: bjjjwwwtvwwxwm +8-11 t: tvncrcktktts +6-8 c: ccccchcqc +9-12 x: xxxxxxxxxxxxx +7-16 d: hxljdhdqkwmnhfjd +10-12 l: lllvlxllllfmllmll +1-9 d: ddndsdsgd +2-9 g: ggqkpwmkc +15-17 s: sspszcsksssgzsmls +13-15 z: znzxzzvkpxzzzqzz +6-7 d: tcddfdjrwzrxgdnjcd +11-13 q: zbdbqxcqvpqgntmxq +2-5 k: kkkkfk +3-6 k: tkgxpsxjbkzcs +10-12 x: fxxxxgxxxsxwx +1-9 h: hhbbppghhhlmlxhw +6-8 w: wwwwxwwvnqw +13-16 g: gghgbggggdnggggg +4-12 p: pbpbppppqppqppppp +13-14 c: bcccccccccccdzcc +10-11 p: pppbppjpppp +5-6 p: pppppw +3-4 p: gdppzmcpcp +8-14 d: gdhddkldddxdddtdd +3-16 g: ggdgggggfgggggghgg +1-16 x: wgjdllqkjxxhnbvxmw +5-18 n: nnlnhngnsnnnnnnnndn +4-5 k: rkjvk +9-10 j: mpxjjjjjjjjqjzjkjp +7-8 k: kkhkbskk +8-11 b: bbbbbbbbbbbbbb +2-4 k: krskw +8-10 x: xxxxxxxxxxx +1-5 x: xfxxxtkxx +18-19 m: mmmmmmmmmmmmmmmmmxm +3-10 w: nwxlwvzsgkwkq +1-3 l: ktlll +11-12 z: sbslzvtzlzzzhg +3-10 z: wrzzrqwlzzg +2-6 k: kswbxkjtcqxwvxz +3-4 t: nvtt +3-5 w: wwnwg +11-18 f: mtfffjpffffgmvfslfv +7-9 m: brgcmrpxmzxttxnt +2-3 s: hssgzs +6-7 v: svvnbvv +16-17 s: csfmdrsgscjvbsqqq +7-14 g: ggggggggdggsggggg +2-3 p: dprwpp +4-5 s: sssxs +7-11 f: ffffffffffnf +6-7 n: njnlnnn +4-5 c: cccvccn +11-13 k: xswkdfpkkbkhskkkkmrm +5-8 l: lldlflllllllll +1-4 b: hbbx +3-9 m: mmmmmmmmmm +1-8 c: cprcfbrr +3-4 h: dvhh +1-2 l: lwlltl +4-6 q: qqvqqqqqqqq +4-9 b: vprbbbbxkgrqnn +9-11 t: qttxztttgtttztttt +5-10 r: rbqzrkctlhrr +1-6 p: zppfpqpppnp +5-7 r: rrrrxrhrrrrrrr +3-4 q: qqlq +1-9 s: vvsvsrsslsmssdqsjss +1-3 m: mmrqm +1-6 n: nnnnntn +3-10 n: lhnbhnpgvxqfbk +7-15 g: qhgbvggkggjggggjfwg +3-12 t: tdtwtdptndttqcjtdtl +4-10 x: xzxjsxxxxcxtxw +3-10 p: fpphpvlltk +1-4 s: dssstskszsssss +4-5 f: cffjtf +1-4 x: gxxxpx +3-7 h: gwxlrhhw +4-7 t: tttttttt +1-3 h: hgmhh +5-6 v: vvvvgbv +2-4 j: ncjjsf +3-6 j: tjfjmjc +1-3 p: fxbwnp +1-6 b: kfbbxb +1-4 x: pxxnx +10-12 r: rrrrbrrrrjrv +1-4 b: lbbbbbb +1-5 l: blzlt +13-17 g: gvgggggggggzfptgg +5-12 p: mlphpgdlmmjpnfrdj +4-10 h: xmphdjnxzh +15-18 m: smmmxmlmljwvmxlmkj +11-14 g: ggfgsgggvgdgggn +3-5 f: mffkf +3-7 d: dndhwqdpkdstpghdrc +5-7 f: fffflfff +3-9 w: kbwmvhpbwgtqbfdswkl +4-10 r: qjzrqfnvpmd +7-16 h: tshsnbhhlhmhhhhh +6-8 t: dcxtttkttttt +1-3 d: dcmcdqx +2-5 m: mmrmq +5-6 j: jjjjjkj +2-4 f: fdlprf +2-4 f: dfrfc +17-18 h: hkhhhhhhhhdhhhhhhhhh +8-18 s: sxpstpssrrrssblsdv +5-7 z: zzzzzzpzzzz +2-4 t: tggt +4-6 v: wrcbkv +3-4 b: wgbx +6-7 f: ffjbvfbg +1-14 b: rbbbbbbbbbbbbzbl +10-11 j: jjjjjjjjjdkj +6-7 b: zdbjhbh +3-4 c: wccccgc +7-8 n: fnnnnnwnmnnnnnfndnnn +7-8 b: bbbbbbtbb +4-16 j: rrjjmgnvsvddqkjk +3-5 j: pfjjs +2-5 k: hkkkd +4-12 l: lllczlllllllllll +7-15 p: thdkpvqpppmlppppv +6-7 x: xxxxjxcfx +11-13 s: tssssfsbdsbss +4-5 h: dlsmhlbwjhh +4-16 z: gcdzjwlxtnccsvngjzm +8-11 q: qdqtqqqkqtmqqqq +5-11 h: hhhhlhhhhhxhh +3-10 s: ssksssssnxsss +3-4 g: ttgh +2-5 j: skjxjnrb +1-4 l: lllklq +2-4 h: nhwzbffshjjqdhqgfd +6-9 l: llxslllrlhzwfbl +3-4 v: vvkb +7-12 t: rhtzdltmdgbfptcvfr +8-9 f: pfsfcffmgfffx +12-13 n: nnnnnngnnnntfc +3-5 z: dgzszvgzffswkjwnp +5-6 p: tvvphcj +10-11 s: gfpxwclsgvz +16-17 n: nrhcnnnlnrcnncnsn +6-8 d: dkcdzdzdsdncdddd +5-9 t: pgtttktwt +8-17 m: kczbmbkpxrpmbqpmmzd +12-15 g: gggtgggggggcgggxgg +5-15 r: hrznshmtrxwhqmf +2-9 k: ntjmwhqbmz +2-3 p: bprvhqpv +4-5 p: pvhfp +6-10 v: vtmcvvhcvt +1-2 p: gpphz +16-17 l: ppvhzpwtrkldlnsnlnl +16-17 m: kqbmmtmmmzmmmqmjw +18-20 k: khcsktxdxkbbvmkkkcxk +2-8 f: fqfqpfff +1-8 p: pktpkppphppppppppcc +2-4 g: fhgcf +4-6 g: ggggggggg +2-3 c: ccxf +7-16 r: rrrrrrtrrrrrrrrrrrr +2-4 n: nnqnn +3-4 l: llllllllllll +1-7 k: kzrbfgdb +9-11 q: qqqqqqkqhmdq +5-7 x: kpvkxgpnngx +5-8 r: wrtjcnnn +7-9 r: rrrrrrzrc +8-10 t: kgckbkgtst +7-12 g: gglgggggggggggg +3-9 t: dttgrtrttjj +6-12 c: cccccfcccccgpcccxr +7-8 b: vbbvbbpg +6-7 p: pjxpppkpd +12-14 z: zzzfkhmpzzfzdzz +14-20 b: bdbvbcbbbbfsbjhbrbhb +2-3 n: kqjvnn +4-5 m: mmmgm +2-4 q: xqwq +6-7 b: xbfbpmb +13-15 j: ghgxhdjngckxwzj +1-7 c: wnxnndbctg +2-7 g: ggggggggg +1-8 t: ttntttttmtnntt +4-7 j: jjjnzcjqbjjvjpdxjmx +14-15 d: ddddczddddsdddxdd +3-8 k: kkckkkkkk +6-14 q: qqqqqsqzqkqqqw +3-5 q: qqqqb +5-11 h: tdpkhpxqqgmnkhxlfl +7-9 r: jrxdqdcrrr +1-10 z: lwsllcvzbzzzzdzzgzr +4-9 w: wwsjbwwdhc +2-5 f: wjsffff +7-8 n: rbtktkmbnnt +2-3 k: kkkjcszknc +3-4 v: nqvlxkwrjblmgbvncvz +9-10 g: sglkwwxggmt +2-7 s: srcvkjxdtn +1-2 j: mdjjj +2-15 x: qxxsfddqknrbgmggm +7-8 h: hhshhqhl +4-5 p: kpppwp +4-9 p: czcdmbwnhztncrhgnmhb +7-14 z: gzzzqzzzjzdzzzzbzvfz +17-18 d: dddddnddddddddddcd +13-15 g: kxscchzmtgsvpnfbnrbt +12-15 n: nnnjnnngnknxnnfnhn +4-6 b: dczcbxf +12-13 b: bbbwbsbbblbbbbbbqbt +1-13 l: hlcnlllkgbltllf +4-14 k: vkxbzxqkmhdksw +10-12 z: zzzdzzzzzxvz +11-12 c: kcpncwcccbqc +5-8 j: jmzrzsjn +14-15 c: ccccccccccccccccc +11-12 v: vvvbvvllfpgn +15-16 t: thtttttwttttpttl +3-5 n: nnnnmnt +2-4 x: txknc +7-8 x: xxxxxxskxx +11-12 n: nlwnnpzgnnnnnnnnnn +4-5 b: bbbmb +5-8 g: gwggfcmcbgp +10-11 p: gpppzppdpvvppp +5-6 h: hhhhhch +5-6 p: gnkjsp +8-16 w: wcswwwwwwwwwtwww +7-8 h: hdhhhhhh +9-10 g: gggmggsglc +2-7 t: shbblrx +8-9 r: rhrwrkwrrcrrrr +9-11 b: bbbbbbbbbbbb +3-10 c: czbzjpsnvcwl +11-19 c: pccxcdncrtcccdbncbnc +7-17 p: ppppppppppppppppmp +10-12 c: ccchsfcccccc +18-19 b: bdtrbqbwkrlblxhcrbm +3-4 g: gggrgg +7-12 w: wthwwwwfwwfzkwhwwwww +3-5 d: jzddf +7-8 q: qqqwqwqv +4-7 d: dddddvddd +9-12 k: jxjcfmzkkwmkmhrr +8-13 d: dtdzwhgwzzmgv +9-12 z: trvwkzsjwzfzcp +12-13 r: rrrlrrrrrprdfxrrtz +7-8 f: gzbmlnkffkgjkrq +8-13 j: xslbjjgzrjbjms +2-4 n: nnjnn +1-4 f: djfgff +4-5 w: wwwww +5-6 m: mjmmwcw +3-6 v: vvhvmf +4-15 h: bhrktjhsgqfldbh +1-10 c: zccccccccjcrcccc +2-4 c: ccps +12-13 v: vvbvvvsvvvcvvv +6-7 r: rrrrrjs +9-12 w: wwwwwwwlwwwwww +1-3 w: wgwcwwwgxbnwwwtbms +3-4 p: qvpnp +14-15 h: hhhhhhhhhhhhhrq +6-11 q: qjdkqpqtqsq +4-6 t: xtltxg +2-4 g: gkgp +9-13 k: kkkkkkkkkkkkvkk +8-10 p: lnzkglhmdglppnzlrs +12-15 b: bbbbbbbbbbbjbvbbbbbb +1-3 j: jtzsjj +9-13 k: gkdkjkkdxxkkfk +2-5 g: dgkxh +2-10 j: zjjjxlkjjjpjqjzxnjss +14-18 h: tvhhrzhsggdgxhrxvhv +1-9 g: gggggggnggggggg +7-9 z: zzzzzzzzfz +9-11 v: vvvvvvvvrvx +13-14 b: bmrtbbtbbbdbbnbbbcr +12-13 k: kkkkkkkkkkjpmk +1-8 z: nnzzzzzlzz +3-5 g: mgcqv +2-3 m: wgmmpm +3-6 l: sllhsk +3-4 v: vlmv +2-5 t: gstgn +1-2 v: vtvv +8-9 j: jzjjjjjjl +7-8 z: zzzzzzxr +3-7 x: xxxnxxxxw +1-4 x: xxxlx +3-5 l: ldlmlkv +5-11 q: npqlqqqqbdkmqwq +2-6 m: mmmmmmm +4-5 d: bqbdddmphblbdtdh +4-7 l: lklllrl +7-9 d: mjdlgfwndnqr +2-10 w: wwwhwwwwwwwww +4-7 j: jjjbjpd +3-9 k: lwvkjxdkk +13-15 f: bdrtfvlfzfqgfmff +5-12 t: lldmbbtbrmtttrw +9-10 q: qvqvqqqtwpqxrqq +6-10 k: kckcsgtkrkcksz +17-18 t: tttttttttttttztttt +2-4 l: kdcvvsvqlx +12-15 z: zzzzzzzzzzzzzzlz +8-10 h: rhdkfxhflh +14-16 f: fffffffffffffxfcfff +8-11 k: kbfkkkkkdkkk +1-7 k: bkkkkktrk +9-10 b: bbbbbbbfbzb +1-3 t: tkmtt +3-4 m: mbwlmm +5-6 n: npnvndr +4-16 m: mtmmwmzmmmmtmmpnwmm +12-16 w: wwwwwwwwwwwzwwwcwkww +3-4 w: wwrpwmwwc +1-2 h: hhhh +5-9 t: tnvtrtrbfcvtx +2-11 q: qgqcstqbqkq +8-9 p: ppcgcxkppm +13-16 n: nnnnpndnnlnprnnfbnnn +7-13 x: xxcxxxpvxxxxwxvx +3-4 q: qqqz +17-18 v: vvvvfvhvxvvtvvvvvf +1-9 s: cssssssssds +2-9 z: zzpvwzzmzszmfwd +14-20 g: cghxgggggggggnggcsld +8-9 k: kkkkkkkxkkkkkk +4-5 b: blbnb +2-3 n: nnnn +3-4 b: bjqb +13-14 h: hhhhhhhhhhhhhhh +12-18 g: xggggggggggsgggglxgg +3-6 b: bbbbbbbbbbbbbbbbhd +7-13 v: vvvdvrnvcvvvwn +12-15 r: wrpcdrrrdrrrkfr +3-4 d: ddhd +12-13 k: kkkkkgkkkhkkk +8-9 z: dbzzzzzwfzjtzzzzxzdc +5-6 f: qfffkw +4-5 l: lllpwcvlx +2-10 m: nkchlsdsmt +4-8 t: tttmttttxtd +3-5 w: wlhwl +9-12 x: ggqlcwxbqtgx +2-10 b: rbpgvzwjtbj +2-7 h: hhhnhvl +8-13 m: cmmlsmlcmmsmk +3-5 s: hbsjstss +7-10 z: mtmzbtncjqzzz +3-4 p: hpppp +9-12 z: zznzzzzfpzzzzzz +9-16 s: sswcsssmtqsstlffqx +15-19 b: bbbbbbbbbbdbbbdbbbbd +13-16 b: bbbbbbbbbbbbbbbb +3-8 m: mmmmmmmmm +2-3 v: qvgzgrjgfvln +15-17 v: vwfvvvvvvvbmvvzvwvv +4-8 d: fddldwgbddddgddd +6-9 v: tvvxmmfzz +8-9 k: kkkkkkkfwk +4-6 d: dddldt +3-6 r: lrrrjrjn +1-6 t: tnttpgtt +1-16 g: rgggggggggggggggg +10-11 r: rtfdrqtrdkr +6-7 c: jcccczh +1-2 m: vnmmmm +14-15 f: ffffffffffffffb +1-7 m: smmvmmhxrmmwm +1-6 n: nnnnnnnnnnnnngznn +1-15 z: zzphzkhzzznzxzgznz +2-8 z: zhwfhkbgqr +6-7 f: ffsjfffff +5-6 r: rrdrrsrrrr +2-4 l: lllll +6-8 w: wxzvzqwg +3-10 l: gmxmtkkknlrlz +2-4 w: cmls +1-10 k: kkxkxkkkkkhfpkkhk +1-2 x: nxxx +3-8 x: llpxfhkxnsllggs +7-13 c: cghxfmcqcsrbx +2-4 l: lzll +9-11 f: qffbftpbgff +2-4 w: gwxndqdccmwwwzrmzq +10-15 w: khfvrdbpvfmwflww +15-18 n: nnnnnnnnnnnnnnnnnn +2-5 z: kkzrq +3-14 c: tcjmkcfdckqgbcw +13-18 b: bzgqmmgrzbbvbxtwgbxd +6-7 z: nvzmrqxbz +1-4 x: txxxb +1-10 z: hzzzzzqzzzzzz +1-7 n: nnnnwngnn +10-14 h: zmghfhnlhkqbwh +3-5 r: zkrnr +2-4 x: bxbw +5-7 t: rzmkvtttpttdzvvt +11-14 t: tttttxttttxttztmt +2-3 c: wvdvvc +1-4 d: qdhs +1-2 j: flfz +4-6 s: cdssrq +1-11 q: qvnpngslnqqwnvtmlk +8-9 n: mncnsnrjbl +2-9 r: pxjjzpmxm +2-4 q: nqzqnqfqsmw +2-14 p: djtfdmwphwkxwb +4-5 t: lbttt +8-9 n: nncnnnnvxnnxv +10-11 f: ffftffffffcfmfffz +3-9 l: rllszlqdl +7-11 h: hhnzdhhghhx +2-3 h: hsnb +3-9 v: pgxpfqsvg +5-6 q: qqqqqkqq +4-5 g: lgsxg +3-5 f: ftfsbd +1-16 p: xppppppppppjpppkpppp +1-19 z: xzzzzzzzzzzqzzzzzzrz +7-14 s: skmsmssjnssssv +10-11 d: vdtddmrdtdx +1-3 r: hmrwwn +1-5 b: vbbbbcbb +5-11 q: bxwlqgfqmgqcqn +6-7 g: hkgkkrbgddw +1-3 z: kzxz +9-11 n: nnnnnnnnrnnn +2-3 b: blbh +11-13 g: ggzgpggrqpgggggbtggg +12-15 w: wwwglwwwdjwcwwh +6-8 p: pppppfppx +10-12 f: fffffflfpwff +1-6 x: nlxxxx +1-3 m: vmxmmm +7-19 n: nnmdnnnnntznnnnnnzd +4-5 r: rrrsw +4-5 z: nxszzppxcdldz +3-5 q: tfsdqdklq +1-3 x: mxxx +6-10 w: wwwwwnwwwww +16-17 h: hhhzhhhhhhhhhhhzx +12-16 l: lllljlfllllllwllll +2-7 c: pcvchxpf +9-14 z: gxzjrzzzpszhzzz +7-8 z: zzzzzzzzv +3-14 l: llhllllllllllll +2-5 l: wpfgl +2-4 p: vfpqplbxpspzpmlf +8-9 h: bxxcwhcbq +12-13 c: xrdjccztqvvlc +3-6 f: xfrwfffmffzvwf +11-14 f: ffffgfflkkfffxfffff +7-9 c: zrlhgcgcbnbrt +8-20 r: rrfjmzgrrmprbrrcrgnr +6-7 v: rnhvqvv +2-4 x: xcxxwxxvxxxpxxxgv +3-4 m: zmvmm +1-4 l: llznls +4-5 h: rhcsh +7-10 c: rnjlmccrlm +3-7 q: qqhpxcg +1-4 f: fbfff +10-11 g: lgggggggglp +12-13 s: sssssssssssxs +12-13 w: wwwwwwwwwwwwk +4-8 r: rrrnrrrrrkr +2-9 d: mddgrdddddddddddddm +4-5 g: ggggz +16-19 k: kkkkkkkkkkkkkkktkkkk +7-13 n: qnnwgnnlnnspb +6-10 w: gzwwmfwxgrw +12-20 k: kkkkkkkkkkkjkkkkkkkk +6-9 f: fffjfnffbff +8-9 w: wwwwwrwswww +6-15 q: qqpqnqnqxjzqtvqgwkp +3-10 f: ffrffffffff +2-3 c: xccgfnxz +4-5 z: zzzxmz +3-5 f: xmxzpwzt +2-5 h: nghhhbsbhhh +7-9 f: jfffffffff +11-12 d: ddddddrdddrzd +9-12 d: dkxkdddddddvd +15-16 t: ttttttttttttttvt +2-3 b: bjsdvx +11-16 f: ffffffffpfmfffffff +7-13 z: kpvzczcgpcnjwmmspzz +3-4 w: thwdwwzx +2-3 t: tttstdz +4-5 k: kkgpkqkkrmk +13-18 b: kzvgqbfsdpkhkpdszbxm +8-9 h: hhhhmbhhjh +1-4 k: kkkkk +12-17 s: jdqnxssklhtnkttsm +4-11 n: nnnmnnnnnnrn +1-6 m: bmzbmlmmkmmtbmm +6-13 p: pfppprpppmlphpzp +3-4 w: wbws +2-7 p: fjxvpfq +1-3 g: ngxggggg +3-12 p: fvpzpcblqjhp +2-9 s: nfssdshhp +7-9 d: lxbszxdkvpwvfdn +11-12 b: bbbrzbqbqmgcl +5-8 l: rlllfllfll +18-19 t: tttttnbtttmtrttttqx +4-6 w: vzwqxwrwwm +7-9 c: hncwvgqccqphzcmqct +5-10 x: btxsfrqxxx +7-8 h: hhhhhhhthh +3-8 n: mbddzbvnxczhbnlx +2-9 d: dbmjjxzmfsdd +6-7 h: xpcbthhxrszqgzzh +9-11 d: dgdjmsdjdddddtdddd +6-7 b: bbbbbbsbb +4-6 z: zttxvz +4-8 l: rmdllsllxldckgl +9-10 r: rrxsrpfrtk +4-9 q: qqgpqknqxqqqqsqgr +5-7 t: mhhmttr +11-14 t: ttttttktttcttttttttt +1-6 l: llllltlllh +1-13 t: jttttrthtttvpttttttt +6-7 k: wkgkqjk +2-15 g: gqmlgtjqwgbgdgg +5-7 d: dqdjddd +17-18 c: ccccccccdccccccctcc +5-6 z: zzzzjs +11-12 c: cvzckcssnvcs +2-5 x: jxtqxcsppqmkkddkx +7-8 d: pddzhmfdddccxj +1-7 t: tgttttt +9-10 b: bbbbbbbbdb +14-17 c: cccccccccccccrccnccc +11-13 j: jhtjfdwwbjjjj +17-18 j: jjjjjjjjjjjjjjjjjj +4-16 m: mtmqmmmspmxmmmmvm +3-12 h: hzpjcdtnqcvchkx +4-17 r: rrrxrrjrrrrrrdhrjrr +10-11 v: jgvvrvvvvnvvnn +8-11 h: hhhhphhjhlhhwhh +7-13 h: cqwjhfkmrkqwcxdr +5-9 t: dttccdsthzctbvqw +7-9 d: fddhdthmdd +3-11 d: djdmdfpdrwds +6-12 t: klhgbgnrkttq +4-5 k: kkkkk +10-12 c: scjhrwzgcccb +11-12 l: lwllllllllmtl +3-8 j: jjjjjjjljj +2-9 v: rjmxfglqcgq +2-4 h: whhr +4-8 t: hwxtstdvxb +2-9 x: xxxxxxxxxxxxxxxxxx +6-7 l: llvrvsl +15-16 h: hhhhhhhlhhhhhhwn +1-2 p: kpppppppppp +10-14 g: xblfrggggggzjtg +8-9 v: vvvvvvvvz +8-16 m: mmmmmmmnmmmmmmmmm +8-15 b: lgzzqnhpzbmvfqb +8-10 j: jjjjjjjcjj +1-4 v: vvvcvvv +9-11 s: ssssstssmss +18-19 d: xdwnjcnwrdvfftdfzdm +3-5 h: zdxhb +1-2 s: brstss +3-4 l: llbl +7-12 m: pgmfvpmsmqmmhnhm +15-17 k: kklkkkkkkknkgnpfnl +6-7 c: jqcqjthbcqnz +4-6 p: pjwpkfbp +8-9 h: htkptkfrw +10-17 r: rrrrrrrrrrrrrrrrvr +6-11 h: nhhqjvkhwzxdf +2-4 n: hnvgdfnnvkn +3-9 l: llsllllljllml +6-8 r: rrrrrkrrj +6-8 n: ncnnnnsn +7-9 q: qqqqqgqqjqqqqqqqq +6-8 p: sptppppp +10-12 q: hfnwqvsqljqq +4-6 z: zszzbhzzzkg +3-5 b: bbhbbbb +6-10 v: svwvvnvmmvcj +3-7 q: qcbmqsqqqjqqd +11-12 w: wwwwwwwbwwdwwl +13-14 h: hhhhhhhhhhhhhbhh +2-9 x: kndwpxxxqxhxsfxcg +1-3 z: zzzzzzz +10-12 q: qqqqqqqqqqqzqqq +9-11 k: kknbkdkdhkkzk +6-7 g: gggvgcwg +6-7 s: bjtsscxs +5-7 x: xxcxxxrxx +9-12 w: wrwwwwwwpwwww +15-20 m: mdpgmbmsxfbhmvmzmmmm +11-14 k: kkkkkkkkkpkkkrkkk +17-20 n: nnnnnnnnhnnnnnnnnbnn +10-11 w: zwwwwwwwwhg +9-11 r: grrzcnsvsrk +9-15 l: glrdqzqjlfprpdldgsvc +2-6 r: rrgplr +5-7 q: kpqdbqk +7-9 t: jttttgnkt +2-13 x: xwxchfxdpxzlfxxxxxx +4-8 z: zzzzzzzvzk +11-13 g: ggggggggggkgxggkgg +2-3 w: kwkww +16-17 c: cccnvccccchjslcghccc +4-5 q: bqbdmlqkqmtltfl +2-6 x: gphkxx +5-6 w: wwbqwxwwxxvgtzgbf +9-13 q: qrqqqvqdqrbrq +1-2 w: wwtflrlzrnckcczdsw +16-17 j: jjjjjjjjjjjjjjjfj +1-4 s: sssssss +11-12 r: rmfrrrzrrrfd +4-11 k: kkkskdhkkkh +13-14 k: lzhkgbjxhlmljknc +2-7 k: xmwfmkk +9-11 v: kvzvvvwvpdvlvvlbv +4-11 s: shsblxpqczqhwtscqc +6-9 v: bzmqcvcfvwmh +4-5 m: mmmxhm +4-6 p: pqppqp +5-9 g: rghbksgggnns +4-11 q: qqqqqqqqrqqqqfqqxwjq +1-8 p: pppppppzppppppppppp +2-9 b: bbbbbrbbj +6-7 x: cxxfxxrxdpdhx +1-5 r: qrrrrrx +10-15 k: kkkkkkkkkkkkkkkkkk +6-10 r: rrrrrgrrrj +4-10 f: pjqfldsfzbgff +13-17 q: tbqntpzbqgsjqxqxq +5-10 f: fcrfsdxpfffff +5-11 s: sfxwrzcdzsngpjwwpp +5-7 w: cjwhwwwww +3-4 c: ccgt +1-8 c: nccfcccd +1-3 q: fqlqm +9-10 f: fftflsffbf +8-9 q: jfqkqqqns +1-3 r: rfrjr +1-13 f: ffffffffffdfzfffff +6-7 k: bkzdmkv +5-6 q: rpqqllqqbqqq +4-10 l: lblfvpkwmgqlfshqnpfj +6-7 g: gmhhhgg +1-6 q: qqqqqkq +9-11 p: pppppppgppphmbpk +3-8 n: nnghfhnnjn +2-3 d: vrdmd +9-10 g: gggggzggkvggg +3-4 g: gpgg +16-17 z: zzzzzzzzzzzzzzzzr +2-4 b: cvpbmnwnbrcbhbkgchkh +12-13 p: pppppppppppppp +2-3 c: ctzc +1-7 b: wbbbbbbb +7-9 d: dbddddddgd +12-15 q: mhqwpqqqqqqqsgl +4-5 h: bjhhhxpn +4-5 h: kmhqh +4-15 s: svsjtbsssssqsss +9-16 r: rrrrrrrrqrrrrrrrr +5-9 h: hgjzhllvhrn +5-8 d: ddhddmvzsq +2-4 p: pmqp +3-9 b: nrbnqmbdbnb +5-7 s: wstqqsbcss +1-14 x: fxrxxxxxxfxlxn +3-4 j: wjlb +1-2 h: hhghhvhhnhh +9-12 q: nqfgfkrsqxswwp +5-8 b: bbbbpbbbb +3-4 j: vzsv +3-5 m: nmmmzmhtdg +5-9 n: jdnxqkzfnj +6-7 m: rmmfcmnlm +7-8 t: tttthwtt +15-18 j: jjjjjjjjjjjjjjjjjzjj +3-5 d: rbcsdcvwx +5-6 z: zzzzgzzzz +3-4 t: tttqtt +1-7 h: hhlnhfhzxhhphhdhh +6-7 t: wtnttst +2-4 p: zvpl +3-4 k: swxgk +5-7 k: kkcrkkkkkp +3-9 x: xxhxxxxxnxxx +11-13 p: pdpppppppphpm +11-13 m: snglklmpcmmmm +5-10 j: cxjfwpxjwgjh +4-6 f: ffhffzfnf +11-15 p: pppppppppppppppp +3-6 h: hhhhmhhhhhw +6-7 q: vgldrqp +4-7 p: npzgpppdpjj +6-7 w: wwwwwwqww \ No newline at end of file diff --git a/src/main/resources/2020/day20.txt b/src/main/resources/2020/day20.txt new file mode 100644 index 00000000..b491df60 --- /dev/null +++ b/src/main/resources/2020/day20.txt @@ -0,0 +1,1727 @@ +Tile 2141: +#.#...#... +###..#...# +.....##... +..#.##..#. +.#....#..# +...####### +.....#...# +#.#......# +##........ +########.# + +Tile 3467: +..#.#....# +#.....#..# +....#....# +...#...... +#.#....### +.#....#..# +#......... +.....#...# +.##...#... +##.#..#.#. + +Tile 3389: +......##.. +.##...#... +.#..###... +....##.#.. +#..#.#.... +.#.##..#.. +#....##... +.#...#..## +..##.#...# +####..#..# + +Tile 2797: +#..###..## +#......... +#......... +##.#....#. +.........# +.#...#...# +.........# +..#.#....# +..#...##.. +...##..##. + +Tile 1321: +.#....#..# +......#..# +#.#......# +#..#.#...# +.........# +.#..##.... +...#.....# +#....#..#. +..##.##... +##.###.### + +Tile 2741: +..#.#.#### +#......##. +#.#...#.## +.##......# +..#.#....# +.#.#.....# +#........# +..#......# +#...#....# +...#..#..# + +Tile 3169: +.##.#.#... +#.#..#...# +#...###... +..#...##.. +.#..#.#.## +..#....... +...#...... +.......#.. +#.#....... +#.#.##..## + +Tile 1097: +.##.#..#.. +..#...##.. +###.#.#... +..#..##... +......##.# +...#..#..# +#.#..#..## +.##.#...#. +##.#..#... +##..#...## + +Tile 3457: +#.#.#.#### +..#.#.#... +..#....... +##.....#.. +#........# +.......#.# +#........# +#.......## +#..#.#..## +.##.##.#.. + +Tile 1471: +##.#.#.##. +.......... +...#...#.# +#...#...#. +.....#..## +.......#.# +........## +...#...#.# +.#....#### +.#.##.##.# + +Tile 1531: +#....#..#. +#.#....#.. +.......#.. +.##.####.# +#..#.##..# +#........# +##.#.#...# +#...#....# +.......... +...##..### + +Tile 1523: +##..##.##. +...#..##.. +#....#.#.. +....#.#### +#.#....#.# +....##..#. +#..#....#. +#..#..##.# +..#...##.. +.#..####.. + +Tile 1447: +.#..#...## +.........# +.......... +#.#....#.# +..#....##. +#......#.# +#.....#..# +#......#.# +.......... +######.... + +Tile 2179: +#..#...#.# +..#......# +........#. +#.....#..# +......##.. +#..#.##..# +#.##..#.#. +###.#..##. +...#..#..# +#.##..#.#. + +Tile 1789: +#.#.#.##.# +#..#.#.... +.#.#...... +#.#....#.. +##..#...#. +##..#....# +#.###..... +#..#.#.#.. +#.......#. +#.##..#### + +Tile 2521: +.###..##.. +..#.##.... +##.#.....# +..##...#.# +#.###.#..# +.........# +.........# +#......... +.....#.#.# +.#....#.#. + +Tile 3583: +..#..#.#.. +..#.....## +#......#.. +.........# +#...##.#.# +..#..#.... +....#....# +#..#..#..# +#..#..###. +##...#.#.# + +Tile 2633: +..#..#...# +.......... +#..###..## +###......# +..#...#..# +#.###..### +##..#.##.. +###.#.#..# +#....#.... +#.#.###### + +Tile 1667: +###.##..#. +........#. +..#...##.# +........#. +#..##....# +#.#..#..## +.##......# +..#....... +#..#..#..# +.###..##.# + +Tile 2003: +......#... +#.#....... +#..#...... +#.....#..# +##.......# +.....##.## +#.###..... +#..#.#...# +......#... +#.##...#.. + +Tile 1103: +###.###### +...######. +........#. +#....##..# +#.....#..# +#....#.... +#..##..#.# +...##....# +#......#.. +##...#.#.# + +Tile 3167: +..##...##. +##.......# +...#...#.# +.......#.. +.........# +........#. +##.......# +##.#.....# +..#.#..... +.#.####.## + +Tile 1031: +#.##....## +#.#..#...# +#...#..... +#.#....... +#.#..##... +#...#....# +##..#....# +.#.#.....# +#.......## +...#####.# + +Tile 2539: +##...#..## +..#....#.. +......#..# +#...###..# +...#...#.. +##....#### +#.......## +#......#.# +.........# +.##.#..### + +Tile 1871: +.#..#.#.## +...###...# +.........# +#...##.... +...###...# +###.#..#.# +#..##....# +##.....#.. +#....#..## +#####.##.. + +Tile 2383: +.#.....### +#.#....... +#.....#..# +.#...##..# +...#...#.# +#....#.#.# +...#....## +##.#..#### +...#.....# +###.##.#.. + +Tile 1237: +##.#.#.##. +.##...#### +#...#..#.. +##.#..#.#. +##....#.#. +....#..### +....#....# +#.......## +..##...#.# +#.#..#..## + +Tile 1093: +..##.###.. +....###... +#..#.#.... +#......... +.......... +..#....#.# +#.....#... +........#. +......##.# +.#...#..## + +Tile 1583: +..###.#..# +.........# +......##.. +#....#..## +.###...### +..##..#.#. +....##.#.# +#.....#.#. +##.......# +#.#.##..#. + +Tile 2243: +..#..##### +...#....## +#.....#..# +#......#.# +..#.#..#.# +.#...#...# +##.....#.. +##.##.###. +#........# +#..#...#.# + +Tile 1297: +..#......# +##..#..... +.##.#..... +.....##..# +.#....##.. +#.#.#...## +.#........ +.##.##.#.# +..#.###..# +#..#...#.. + +Tile 1877: +....###.#. +#....#.... +.##...#..# +.........# +.........# +.#..##.#.. +...#.....# +#.....#..# +...##..... +#.#.#.#... + +Tile 3779: +.#...##..# +.#.......# +#......... +#.......## +.....#...# +.........# +...#.#...# +#......... +..#..#.### +#.#####.#. + +Tile 2029: +....##..## +#..###...# +.....#..## +#...#.#... +##..###..# +#.#..##.#. +.......#.# +..##..#..# +..#....#.# +.##..##### + +Tile 3221: +.#..#..##. +.###..#... +....#.##.. +#.#.#.#.#. +#..#...#.. +.......... +#.#.....## +###....#.# +..###...#. +#......#.. + +Tile 3463: +.#.#...... +#...#..#.. +......#..# +#..#.##..# +#.....#..# +.#..###.#. +#####...#. +#.#....#.. +#......... +##.###.#.# + +Tile 3331: +##.###..## +##..#..#.. +.....##... +..#...#.#. +#..#.#...# +...###.... +.........# +.###....## +#...####.# +..#.##.... + +Tile 2473: +..####.#.# +##.#....## +......#.## +##.......# +##...##..# +##....#..# +.#.#.#.... +......##.# +..#.##.... +#..###...# + +Tile 2459: +##.##....# +.......... +#.#....### +#......... +##....##.# +...#...... +###....... +.......... +#.....#... +.#.###.#.# + +Tile 3877: +...#.#.#.. +#....#...# +.#......#. +......##.# +....#.##.# +.#.#..#.## +##........ +....#.#### +###...#.## +######..## + +Tile 2161: +..##...#.. +#....#...# +#.#.#.#..# +.##....### +...#..#... +#......... +.##....##. +.........# +#........# +.#.#.###.. + +Tile 3361: +#..##..... +.##.....#. +#........# +#..#...... +#......... +##...##..# +..#..#.... +#.#....... +...#.....# +###.#.##.. + +Tile 2089: +.##.####.# +...#....## +.###.#.#.. +.........# +..#.##..#. +.###..##.. +.......... +...##.#..# +#..#....## +#...####.# + +Tile 2711: +.##.#..### +#.#.....## +#..###.#.# +.##.....## +...#....#. +##......#. +#........# +..#....... +###..#.#.# +...#.##..# + +Tile 1753: +....##.### +#........# +#...#...#. +..##.#.... +#..#..#.## +#.....#..# +#......... +...#...... +##.....#.. +##..#..... + +Tile 2953: +.#.####..# +...#.....# +.##.....## +#...#..... +##........ +###.#..#.# +#..#.##... +#..#...#.. +#.#......# +..#.#...#. + +Tile 3593: +#..#.#..#. +#.#.....#. +#.#....... +#..#.....# +...#..#... +#........# +#....#.#.# +#..#...... +..#......# +...#..#.## + +Tile 1483: +..#.####.. +.#.......# +##........ +.......#.. +##..#....# +#........# +..#...#... +#......... +###....#.. +..#.#..##. + +Tile 1657: +#####..##. +.###....#. +...#...#.# +#..#....#. +#.#...#.#. +.....##.## +.......#.# +####...... +#..##....# +..#...#..# + +Tile 3307: +.#..##.### +....#..#.. +###..#..## +#.###..... +..###....# +#..#...#.# +.........# +....#.###. +..#......# +#.##.#.### + +Tile 3617: +...#.#.#.. +.......... +.#....#.## +.#.#...#.. +.#.....#.. +.##.#..### +#..#...... +#......#.. +.#..#...#. +#.##..#..# + +Tile 3001: +##...##### +..##.....# +#.....#.## +##........ +....#..... +#....#..#. +...##.#... +.......#.# +#.....#..# +#.####.... + +Tile 1013: +.##..#.... +#....##... +#...#...## +.#.###...# +....#..#.. +##...#..#. +..#....#.. +#...#..#.# +...#.....# +####.##### + +Tile 2801: +#...##.##. +#.....#... +......#... +#....#...# +...##..... +.#......#. +....##..## +#....##### +....##...# +..#..###.. + +Tile 3079: +..##.#...# +#.....#... +...#.....# +..#..#...# +#..#...### +#.##...... +#.###..... +#........# +#.....#.#. +..#.#...#. + +Tile 1231: +####.##### +..#.#....# +.#....#... +.#..#....# +..#......# +#..#.###.# +.#.......# +#.##...#.# +.....#.### +.###.###.# + +Tile 1171: +..#..#..## +#...#....# +#....#...# +#......... +###......# +#...#..#.. +..#..#.#.. +...#...#.. +.....#.... +###..#.### + +Tile 3319: +###.#####. +.......... +..##...... +#.......#. +#..#.#..#. +.#.##..... +..###..#.# +#...#...## +##.#.#.... +...##...## + +Tile 2129: +##...#.### +#........# +.....#...# +##.......# +#.#.#.#... +......#... +#....#..#. +.......... +.......#.# +.###.###.# + +Tile 3371: +.##....... +#....#.#.# +..#.#...## +#......... +.#.....#.. +#.....#.## +...#...... +##....#... +..#..##..# +#..#.##### + +Tile 1129: +#.##..#.#. +#......### +#.#....#.. +.####...## +#...#..#.# +#..#...... +.##.....## +#..#.....# +.......... +#.###..#.. + +Tile 1399: +#.....#.## +#........# +.....##... +........## +...#...#.. +#.###..##. +#..#.#.#.# +....##.#.# +#.##.....# +.#..###.## + +Tile 2503: +#...#...## +#..#.#.... +.....#.#.# +...#.....# +..#......# +..##.....# +.....#.... +...#...#.# +.#........ +#.###...#. + +Tile 3529: +.##...#### +.#.....### +#..#..##.. +....##.#.# +.......##. +#........# +.........# +#.##...... +##....#..# +....#.##.# + +Tile 1181: +.#.##.#.## +#..#...... +#........# +..##...... +##.#...#.# +.#.##..#.# +##........ +#..#..#..# +#.#...#..# +..#.#.##.. + +Tile 1759: +...#..#..# +..#...#... +##....#... +#.#..#.#.. +#.......## +#...#...## +##......#. +##...#.### +##...#.... +.##...#... + +Tile 2543: +######.### +####....## +##.#..#.#. +##...#.... +.......... +..#......# +#.......## +##........ +..###..##. +##....#### + +Tile 3613: +.##..#.... +......#..# +#......... +....##...# +....#....# +.#..#..... +....##...# +#.#..#..#. +#..#.....# +##.##...## + +Tile 3853: +....###### +.####....# +..###..... +#.#....... +#..#..#... +....#...## +##....##.# +#..##..#.. +#.#..#...# +..#######. + +Tile 3187: +.#..#.#### +#.##....#. +.....#.... +##....#... +.#.##.#... +#...##...# +#....#...# +......#... +#....#..#. +#..###.... + +Tile 2437: +#..#.##.#. +##...###.# +.....#.... +.#......#. +...##.#... +#..###...# +#....#.... +.#....#..# +.......... +.##.#.#..# + +Tile 2917: +#.....#... +.#.#...#.. +#.##.##..# +......#..# +...###.... +##.#...... +....#....# +###.....## +.#.#....## +####.#..## + +Tile 1511: +#...###.#. +..##.#..## +..#...#... +##.#..#.## +##....#..# +#......... +#........# +........#. +#.....##.# +.#.....##. + +Tile 2699: +.#.#...... +#........# +..##...#.. +......##.. +..##..#..# +#.###..#.# +#.#..#...# +#.##.....# +..###..... +###..##.## + +Tile 3259: +###.###..# +.........# +#.#.....#. +...#..#... +.##....### +##.......# +...#.#...# +...##...## +#......... +......#... + +Tile 1429: +....##.##. +.###...#.. +##.#...### +#......... +#....#...# +#.....#... +...#.##... +#.......## +.#......## +###.#.##.. + +Tile 2039: +#....###.# +.#..#.#..# +#.#.#...#. +..#....... +##...#..## +#.#....... +#......##. +..#....#.# +#.#....... +..####.#.. + +Tile 3637: +#.###.#.## +#......### +#......... +.....#...# +..#..#.##. +#..#....#. +........#. +..#....... +...#...... +...#.###.# + +Tile 1163: +##.###.##. +#.##.#.... +..#.#..... +#..####.#. +#..#...... +#......#.# +.#........ +.#.##..... +#.##....## +##.#...... + +Tile 3761: +...##.###. +.........# +....#..... +##.......# +#.......#. +...##..... +#.#....... +.........# +#.#......# +.##.###... + +Tile 1777: +##...##.## +....#..... +.#...#.... +#....#.#.# +..#.#....# +#....###.# +##...#.... +#...###..# +#...##..#. +......#.## + +Tile 2857: +.#..#.##.. +#..#.....# +##........ +...#.#..#. +.##..#..#. +#####.##.# +#..##..... +##...#.#.# +#...#..... +...##.##.# + +Tile 3061: +.#.#.###.# +#........# +.###.###.. +..##.....# +#...#....# +#.#.#..### +.##......# +.....##... +....#..... +.#..#..#.. + +Tile 1721: +..#..##### +.#....###. +#..#...#.. +#......... +#....#...# +...##..##. +#........# +#......#.. +#......... +....##.### + +Tile 2693: +.....#.#.. +.#......#. +.#.....#.# +#....##..# +#..#...... +####.##..# +#.#.....#. +.......... +#.#....#.# +#.##..#... + +Tile 1259: +#...#..### +#...#...## +##..#.#..# +#.#....... +#......#.# +###....... +#...#..... +...#.....# +.#...#...# +.#...##.## + +Tile 1291: +#..##.#... +#.....##.# +.#..#....# +#...#...#. +..###.#... +###......# +#..#...#.# +#....#.... +..##...... +#..#..#.#. + +Tile 1051: +#...####.# +##..#..... +.........# +.#..#..#.. +##...#..## +...##....# +##........ +.#......#. +...#.....# +###.###..# + +Tile 2719: +.#.##..##. +.#.....#.. +#.....#... +##.#.....# +#######... +##...##.#. +......##.. +........## +..#....### +#..#..#.## + +Tile 3533: +...##....# +##.......# +#....#.... +....##...# +.....##.## +....#..##. +#......... +###...#.#. +#......... +#..####... + +Tile 2659: +.##.#...#. +.#..#...#. +....#...## +.#..#.#..# +#.##.##..# +..##.....# +..#..#..## +..#....... +.........# +#....####. + +Tile 3517: +#..##.#.#. +.#...#...# +.#.#.....# +##.......# +..#....... +#......#.. +.........# +...##...#. +......#.## +..##...#.. + +Tile 2371: +###.##.##. +.#.#.##..# +.....#...# +#.#.#..#.# +####...#.# +#.#.#.##.. +..#.#..... +##........ +..#..#...# +#...#.###. + +Tile 1601: +.####..##. +#......... +......#... +#.#..##.#. +..##.#.#.# +#.......#. +#..#.....# +#.....#.#. +..###....# +.#..###### + +Tile 2273: +..###.###. +....#..... +.##...#... +#.#...#... +....#..... +.#.....#.# +.#......#. +.#.#..#... +........## +##..###... + +Tile 3917: +####.#...# +#...#...## +#.##...### +#..#...##. +....#....# +.........# +......#..# +###.#.#... +...##...## +#..#####.# + +Tile 3701: +#..###...# +###..#...# +#.#...##.# +.##.#.#..# +.##..#..## +##..#.#... +.##.#.#.## +....##.#.. +#.....#... +..##.##.#. + +Tile 2081: +...####.#. +........## +#.#...#..# +.###...##. +#..#.##... +#....#.... +#.#..###.. +........## +..#......# +...##..### + +Tile 2339: +#.#..#..## +.#..#...#. +........## +.##....#.. +#.....#.#. +........#. +....#...## +.#....##.. +#........# +#.##.#...# + +Tile 1373: +###.###... +.........# +#......### +#...##...# +.###....#. +#..#.....# +.......... +##..#..#.# +.###.#..## +###...##.. + +Tile 2837: +##....#... +...#...#.# +#......... +..#....... +##.#...... +.#....#... +.###....#. +##......## +.....#.... +.#.##..... + +Tile 3803: +#..#..##.. +.......#.. +##.###.... +#.#.#.#... +....##.... +#.###..#.# +....#...## +........#. +..##.....# +..#..###.. + +Tile 3559: +#....##.## +...##..... +..#..#...# +#........# +##........ +#.#....... +#.#..#.#.# +#....#..#. +#...#..... +##.#.#.... + +Tile 1549: +####.##.#. +......#... +#..#.#..## +#..#..#.#. +.#.....#.# +.........# +.........# +#....#...# +#.......#. +#####....# + +Tile 1699: +.#.##.#.#. +.#..####.. +.#.#...... +.###..##.# +#........# +##.#...... +.#.#.##..# +#.#..#.... +#.......#. +.###.##..# + +Tile 2647: +###....... +.......#.# +..#.#...#. +#..#...#.. +..##...... +#.#.#....# +....#.#.#. +#......... +#...#..... +#.###...## + +Tile 1361: +...##.#.#. +.......... +#......... +#.#....#.. +##..##...# +....#..... +#.......#. +.......... +#.##.#.#.. +#..##.#.## + +Tile 3851: +##........ +...##.#... +....#..... +....####.. +#.....#..# +#...#.##.# +#..#.....# +...#..##.# +#.#....#.. +#..####... + +Tile 3911: +##..##.##. +#.#.....## +...#.#...# +.....#.... +.#...#..#. +...##.##.. +#.#.#.#### +.......#.# +...#.#.... +##..#.##.# + +Tile 3719: +##.##.###. +....#..#.. +...#...... +#......### +.#.#....## +..###...#. +....#..#.# +.......... +#..#....#. +#####..### + +Tile 2239: +###.##.##. +###......# +#.##.#..#. +..#....#.. +......##.. +.....#..#. +...#...... +#......... +.......... +.#.....### + +Tile 1249: +#.#..####. +...#.....# +....#....# +.........# +.#.##...## +..#.####.# +...###.... +#......... +#.....#... +.#..#.#... + +Tile 2707: +.##.#..... +#.....##.# +.#..#...## +...#.#.#.. +..#....... +.#.#...#.. +#.....#... +#.##...... +.#........ +.###.#..## + +Tile 2897: +..###...#. +...#..#..# +#......#.. +#..#.....# +.....#.... +..##..#### +#...##...# +#.#......# +##......## +......#..# + +Tile 3623: +#..#.....# +##.#...##. +##.......# +#.#....#.# +.#....#..# +#.##..#... +.##....#.# +.#.......# +#.#.#..#.# +#..#.###.# + +Tile 2617: +.######... +#..#.....# +.......... +#####....# +....#....# +##.###..## +......##.. +.....##..# +#......... +...####.#. + +Tile 1049: +..#.##...# +.#.....#.# +......#..# +#####.#... +......#... +....#..... +#......... +#......... +##.......# +..#..#.#.# + +Tile 3019: +##.##..#.. +##...#..## +...#....#. +.......... +...#...... +#...#...#. +####.##.#. +###......# +.....#.... +######...# + +Tile 3067: +#...#.#..# +#.#.##...# +....#.#..# +##.#...... +....###..# +.#.....#.. +.#.......# +......#..# +##.#.....# +.#####.### + +Tile 3203: +#...###.## +#.#......# +..#..#..#. +.##...##.# +#.....###. +...##....# +#......#.# +.#........ +.#.#....## +##.#####.# + +Tile 2113: +.#.#.#..#. +#...#..... +###.....## +#.###..... +##........ +#...##.... +......#### +......#..# +#..###.##. +..#.###.## + +Tile 2591: +##..###... +........## +#........# +.....##..# +.........# +..#...#... +....#..#.# +#......#.. +...#...... +.##.##.#.# + +Tile 1499: +.....##..# +...#...... +.##.....#. +......##.# +.#........ +#..##.#... +....##...# +#........# +....#..... +.#.##.#..# + +Tile 3413: +#..#..##.. +.#..#..### +#..#....## +##.......# +#.###..... +#....#..## +#........# +.....#...# +#...#....# +#.#..#..#. + +Tile 3923: +.#...##### +#..####... +#.##....#. +#....##..# +#.#...##.# +..#..#.... +#.#......# +.#..#..#.# +#.##....#. +###.###... + +Tile 3527: +#.##...### +#......##. +#..#..#..# +....#....# +#.....#.## +.......... +#........# +#..#.#...# +.##..#...# +#.#.##.### + +Tile 2957: +###.#...#. +#.#..#.... +...#.....# +#.#......# +.##.....#. +.........# +....#..... +#......#.# +...#...... +#..##.##.. + +Tile 1481: +##....#... +...#...#.# +#.##...... +.......#.. +.#..#..#.# +.....###.# +#......... +.......##. +......#... +..###....# + +Tile 1747: +###..##### +..#.##.... +##.......# +.#........ +#.##.....# +...#...... +#........# +#.##...#.# +####...... +##.##...#. + +Tile 3659: +.##.###... +##..##.##. +####..#.## +....##.### +#......... +.##.#.#..# +.#...#..## +..####.##. +#..#..#... +..###...#. + +Tile 2621: +#####....# +...#....#. +.##......# +..###....# +...#..#... +.........# +#......... +.#..#..#.. +.#...##... +#......#.# + +Tile 2927: +.#..####.. +......#.## +.......#.# +#...#.##.# +##...#..## +#.....##.# +#.......#. +##........ +#.....#... +##.#.##... + +Tile 3727: +..#.....#. +#........# +####..#..# +##.#....## +...#...... +###....#.. +#..##..#.# +#.#.#...## +#...#..... +.####.##.# + +Tile 2803: +##.##..### +#....###.# +#.....##.. +#.#...#... +.#.#...... +#...##..## +......#... +##.....#.# +.##.#..##. +..##.##... + +Tile 2593: +.##.#....# +#.#.#.#... +#.......## +.......... +...####... +....##.... +#...##.#.# +#...##..## +.##......# +##....##.# + +Tile 3109: +.###.#..## +#......... +.#...#..## +##...#...# +#..#....#. +#......... +#........# +#.##..#... +.#.......# +#.#####..# + +Tile 3797: +#...##.##. +.....#..#. +##..##.#.. +#........# +.#...#.... +##..#.#... +##....#... +###.##...# +#......#.# +##.###..#. + +Tile 1367: +##.#..##.# +..#....... +.#.......# +...#..##.. +.##....##. +#..#.##..# +..#...#..# +#.#......# +#..#....## +...##..#.. + +Tile 2309: +##.#.####. +..###..... +...#....## +..#....#.. +.#....#..# +##....#..# +..#......# +..##..##.# +.....###.# +#..##.##.# + +Tile 2087: +.#.#.#.#.# +#.##....#. +#..#....#. +...#...... +#.......## +...#..#... +#...###..# +.#....#..# +.#.###...# +.#.####### + +Tile 2441: +....####.# +.........# +#.....##.. +.#..##.#.# +####.#..## +#.#.....#. +#.#.#.##.# +....#...## +###..###.# +.#.....##. + +Tile 3643: +##.#...### +..##....## +.....#.... +#.#.#.#... +...#.#.#.. +....##.... +....##.... +#.....##.# +#.......## +.......##. + +Tile 3251: +##...#.#.. +.#.......# +.#....##.. +..#.....## +.#.#...... +..#..##.## +.##..###.# +....#....# +##..##...# +#.#..###.# + +Tile 1787: +#.#.#..#.# +.......... +..#......# +.......... +.#......#. +..#....#.. +........#. +##....#..# +..##...... +###.#...#. \ No newline at end of file diff --git a/src/main/resources/2020/day21.txt b/src/main/resources/2020/day21.txt new file mode 100644 index 00000000..79091fe8 --- /dev/null +++ b/src/main/resources/2020/day21.txt @@ -0,0 +1,48 @@ +qgct fxctfc zbqfz zxdkrx hrqbs hgmsn ndqtf rmn cxfz slzctfh xvj xrqj nslqr bnxl rsprgcj vvchk gfhdct xsbt qbkjvg xtpdql mpvnt ssffbt gtl lxjtns prxmdlz mjlqj clg mrjqg qdtjjz fkxf vzzz qdfpq cqkrhx vbmz ljcvh mvdgf clmxkbn nmqlz vjzc bqrqj sqnbsg tn knprxg rbxz qzqzj qmcrpm grzv (contains wheat, eggs) +jthsmn qdtjjz qkhft slzctfh ksfbnhz rsprgcj tn clg zjtlrq ttqgh rclxmm llqfr kl qdfpq lxjtns cxfz mgx vjzc ncjv vrqb jmrx qmcrpm prxmdlz zsgnd vhbmztr gscdgj mrjqg sxxnb rkgbgn dxzmr nnxmgx cjp qzdpffs tbvh dxldm rxhrpjv jtgsn khqt jgdf jtlfh pdvqs kzpmt nslqr vzzz rmsgmj nkjcr bnxl lqtqm xlkgtc jcs cqkrhx xxhtdkp qnljhd kkhq gmdldb (contains soy, peanuts, sesame) +glx bzxh slrc qhzqq vdlj xmm vjzc dsksm qrnkl xpjd ttqgh qdfpq dtnzp tfrpccb lchdf sjg mgx xkzk qmcrpm jlfm knprxg xngkf mpvnt gfhdct vmcsb cjp zdvr ncjv ssffbt dxzmr xkkjl ltcxqdbm rxdns qdtjjz qpfh clg vzzz gtl prxmdlz jcs mct xsbt lxjtns hgmsn jbpz rxhrpjv fkxf vqbb qckgcc (contains peanuts, fish, sesame) +txhkk mvdgf llqfr clg vbmz tfrpccb rjmk bkzgpg cxfz qdfpq prxmdlz vqbb jmrx kl mjlqj zbqfz sfkf pgzgn qjtrpj jpdxvmv qpfh vrhj zpsbc vjzc ncjv crbxx cklx lxjtns zxdkrx gmdldb jgdf kvzpzvt fkhcbzbk rsprgcj rkgbgn mbllkbf grzv qc pdvqs jrbfkg kkhq qckgcc dxzmr qzdpffs hfjrp ljcvh vzzz fsjbdt qzqzj vsbttl qmcrpm tcnhp qrnkl hlsbn mgx (contains soy, eggs, sesame) +qzdpffs vvchk xtzt drqg tn mzr lxjtns grzv hjg hsfx qnljhd mpvnt zkvlf mmdmtg knprxg xjjk llqfr cklx rmc cxfz gpjkqrq zxjksd zpsbc xkkjl nkjcr mtzqr zsgnd jlrtmv vjzc qdtjjz fpqc crbxx ncjv cqkrhx lzkmdq vhcqpn mct fhtn qqgq xxhtdkp dsksm rxdns vrhj qgct mgx nslqr slg qhzqq jcs vzzz prxmdlz sskfj pgzgn gfhvs kcncjpk pbblp hbkmd clg fsjbdt qckgcc zjtlrq nnxmgx rkgbgn sxxnb tcnhp qmzzgr slzctfh vbmz bqrqj sjg zdxn rxhrpjv tfrpccb bkzgpg rgmlds ltcxqdbm rpmf (contains eggs, sesame) +zdvr zxdkrx gmcm xmm tbvh mct jlfm sfxsj qpfh ltcxqdbm jtlfh qmzzgr fkhcbzbk tfbpk lqkxpxr ssfb knprxg gxnjk dsksm mgx cjjd qckgcc tn gfhvs zjtlrq fhtn cqkrhx tcnhp qc qdfpq bkzgpg bzxh hbkmd rkgbgn lzkmdq hbpsp xkzk pdvqs vhbmztr ssffbt nfzz zsgnd dqf sdcdmn cklx xsrk pjlz ncjv vdlj hfjrp dxldm lxjtns gmdldb qzdpffs xtpdql slg pdfv jncfpc clg qhzqq prxmdlz vzzz dxzmr vvchk pgzgn (contains eggs, nuts, fish) +drqg sfkf kl pjlz bqrqj tcnhp gfhvs bnxl llqfr csdslq jglqz qbkjvg fsrmcx ffpfsv mgx bbltf xqpph ssb vzzz xrqj zdxn dsksm gmcm xngkf lqkxpxr xsbt cxfz xxhtdkp lxjtns vdlj rxdns rmsgmj qmzzgr rbxz jbpz vrhj rkms gtl clg pdfv prhkvr knprxg bqdtr qrnkl mzr gscdgj zpsbc zkvlf fkhcbzbk qzqzj prxmdlz qdfpq txhkk xvj jpdxvmv mjlqj mct rtkk mrjqg mpvnt fxctfc qjtrpj jmrx vbmz hfjrp zxjksd qmcrpm sjg vvchk xmm hlsbn sbkksv cklx jlrtmv sxxnb glx vsbttl jrbfkg mvdgf xsrk vjzc (contains eggs, sesame, nuts) +rmsgmj pdvqs xxhtdkp nmqlz sskfj cxfz xlkgtc jrbfkg ttjvqs tfrpccb xjjk knprxg mct qqgq ltcxqdbm zdvr dsksm pbblp mtzqr slg ncjv ssfb rbxz bnkss zjtlrq gxnjk gpjkqrq tcnhp xctvtxzl lqkxpxr fpqc ffpfsv vrqb jbpz slzctfh cjjd tn qdfpq hlsbn vzzz rtkk lzkmdq gfhdct rkms zkvlf pgzgn vqbb vrhj txhkk bqrqj mjlqj vjzc rmc ksfbnhz dtkcj nzqlgz jcs zdxn xngkf fhtn nkjcr sdcdmn gscdgj jthsmn dqf hrqbs jncfpc bbltf zbqfz clg jpdxvmv xsrk lxjtns khqt mmdmtg lchdf vbmz jmrx sbkksv sqnbsg drqg gmcm nnxmgx rxdns kkhq mzr rxhrpjv ssb bqdtr vvchk (contains shellfish) +mjlqj dxldm bqrqj zxdkrx lxjtns xctvtxzl kvzpzvt jncfpc nnxmgx xtzt ssfb mmdmtg mct ktzlr bzxh xjjk cxfz qmzzgr hlsbn jrbfkg vqbb gmdldb ndqtf zxjksd sqnbsg bnkss sfkf vrhj qnljhd ncjv nmqlz gpjkqrq slg kzpmt drqg xqpph cjp bnxl zpsbc rmsgmj zjtlrq qdfpq clg mvdgf rbxz jmrx qmcrpm jtlfh prxmdlz gtl ssffbt ktgqpk vhbmztr vzzz (contains eggs, sesame, peanuts) +vqbb xngkf nkjcr drqg sfkf xsbt jthsmn prxmdlz clg sqnbsg clmxkbn zdxn tbvh cqkrhx kvzpzvt rxhrpjv vmcsb dtnzp mvdgf qnljhd txhkk lxjtns mmdmtg ttqgh qdfpq pgzgn dqf ssb kkhq ncjv cxfz vzzz rmsgmj ssfb ltcxqdbm jncfpc vjzc csdslq bqdtr prhkvr rkms (contains soy, sesame) +qdfpq hgmsn jbpz sskfj xtpdql ljcvh mct qrnkl qmzzgr lqtqm xxhtdkp rxhrpjv ttjvqs bbltf rxdns vzzz prxmdlz hrqbs vdlj xmm drqg nfzz qckgcc gmcm hbpsp dsksm ffpfsv vqbb mjlqj mmdmtg jlrtmv ktgqpk hbkmd fpqc sfkf dqf ktzlr xkkjl rbxz tfbpk vmcsb tbvh kl gfhvs knprxg nnxmgx ksfbnhz fkxf bqrqj qhzqq bqdtr qjtrpj mbllkbf xsrk qbkjvg lzkmdq ttqgh rjmk gmltxp xjjk lqkxpxr cqkrhx cxfz crbxx vbmz zsgnd lxjtns jgdf hfjrp pdfv clg mpvnt bnkss gbk zxjksd nkjcr sdcdmn (contains wheat) +kl bqdtr mgx jcs nfzz knprxg lqtqm clg slg jglqz gmdldb sqnbsg qmcrpm pgzgn tbvh nzqlgz llqfr tfbpk fxctfc qnljhd cxfz vzzz nkjcr pbblp hfjrp clmxkbn rxhrpjv ncjv bnkss slrc prhkvr qpfh tcnhp xsrk kkhq hrqbs qgct gscdgj vbmz xrqj pdfv sfkf khqt xpjd rjmk lxjtns qdfpq vhcqpn ttqgh bnxl zjtlrq qqgq lchdf jgdf jpdxvmv mmdmtg sdcdmn (contains nuts, peanuts) +vrhj bnxl vsbttl qdtjjz ncjv bbltf mgx xpjd mbllkbf hgmsn xqpph vzzz dxldm tcnhp vhbmztr jthsmn mpvnt prhkvr gbk rxhrpjv ffpfsv clmxkbn rsprgcj qbkjvg tbvh rmc kvzpzvt qsgcg nnxmgx qdfpq xlkgtc rgmlds pgzgn bqdtr vdlj kkhq sqnbsg cqkrhx qgct ttqgh rkms xtzt nmqlz vbmz vmcsb mtzqr nslqr llqfr zxjksd cxfz fxctfc dtnzp slrc grzv nkjcr sdcdmn xtpdql gxnjk lxjtns mvdgf qzdpffs mct csdslq knprxg zkvlf vvchk nzqlgz crbxx pdvqs prxmdlz bnkss ktgqpk ltcxqdbm qrnkl gtl gmdldb jncfpc tn jmrx qckgcc gpjkqrq dxzmr rclxmm rkgbgn bqrqj xjjk (contains sesame, fish) +nzqlgz ffpfsv qjtrpj vjzc mzr bqdtr gmcm kkhq vmcsb vhbmztr ssfb hbkmd rxdns mjlqj knprxg qmzzgr qc tfrpccb cjp vzzz ltcxqdbm tqgjg mbllkbf sfxsj xngkf jtlfh ncjv hfjrp jmrx vvchk rclxmm dtnzp fsjbdt sfkf qbkjvg gmltxp jncfpc clg bzxh xxhtdkp xjjk dtkcj qdfpq bqrqj drqg gfhvs nfzz tfbpk jlrtmv prxmdlz zdvr fhtn sskfj qsgcg lxjtns (contains fish, eggs) +llqfr zsgnd vvchk hjg qmzzgr vzzz jncfpc gxnjk sfxsj fsrmcx zbqfz glx qzdpffs bbltf rkgbgn qc gbk xkkjl xxhtdkp tqgjg jmrx nkjcr slg rjmk vrhj nnxmgx gmcm rxhrpjv ltcxqdbm bqrqj ksfbnhz hbkmd rtkk mbllkbf bkzgpg ssb qjtrpj vbmz zjtlrq kzpmt clg qsgcg bqdtr mgx lxjtns crbxx qhzqq pgzgn sbkksv rgmlds jgdf jlrtmv ncjv ktzlr gpjkqrq cxfz qzqzj bqg dxzmr vhcqpn jpdxvmv pdvqs hrqbs rxdns kvzpzvt fsjbdt lzkmdq jbpz knprxg xsbt kkhq dtnzp qdfpq gfhdct sfkf tbvh cjjd vqbb xjjk (contains sesame, nuts) +qqgq xmm fhtn tcnhp prxmdlz sskfj ksfbnhz tbvh ncjv rkms nkjcr sjg grzv jmrx vhbmztr knprxg pdfv khqt qhzqq cjp zsgnd txhkk xpjd ltcxqdbm cqkrhx fkhcbzbk hbpsp slzctfh qsgcg gmcm tfrpccb jlrtmv qdfpq tfbpk vdlj fxctfc jpdxvmv gpjkqrq clg vhcqpn zkvlf crbxx zjtlrq ssfb ttqgh xqpph qjtrpj rpmf vqbb pgzgn hfjrp vzzz gtl vjzc mjlqj qdtjjz lxjtns qpfh zdxn xtpdql (contains fish, peanuts) +grzv pbblp vhbmztr qjtrpj zsgnd dxldm pdfv rxdns vrhj cqkrhx clmxkbn vsbttl lchdf slzctfh bqrqj vdlj mgx zxjksd ssffbt ncjv mmdmtg sqnbsg vzzz qckgcc jrbfkg lxjtns slg cklx zpsbc jlrtmv pdvqs ffpfsv jncfpc vrqb knprxg qdfpq rtkk dqf rbxz xpjd qc rmn ttqgh zjtlrq tbvh clg hfjrp bqg sdcdmn bkzgpg zdvr mct csdslq qgct gmdldb bnkss qsgcg prxmdlz xrqj dsksm (contains nuts, shellfish, fish) +rtkk jncfpc zxjksd zsgnd clg crbxx sdcdmn vbmz rkms hlsbn xsbt tfrpccb zdvr prhkvr vzzz slzctfh txhkk knprxg drqg slrc rgmlds xxhtdkp lxjtns mct qqgq grzv zpsbc gbk qmzzgr fpqc nnxmgx kl hjg jlfm kzpmt lqtqm xtpdql rmc hbkmd rxdns rmsgmj sqnbsg xqpph rclxmm zkvlf jmrx cklx mrjqg qmcrpm kcncjpk pbblp fkxf ncjv fsrmcx pgzgn xvj sjg rkgbgn cjp dsksm nmqlz zxdkrx sbkksv tcnhp ljcvh prxmdlz gfhvs mjlqj qc ssb cxfz bzxh dtkcj ksfbnhz hfjrp mgx mtzqr bqdtr sskfj cjjd ltcxqdbm fxctfc ktzlr nfzz dqf kvzpzvt (contains shellfish) +rtkk xrqj xctvtxzl gmltxp qzdpffs bqrqj gpjkqrq xpjd xngkf jcs nslqr slzctfh rsprgcj ksfbnhz qdtjjz jthsmn ttjvqs nkjcr xjjk qgct ncjv xkzk ktgqpk mct xlkgtc xsrk sdcdmn hrqbs jrbfkg jglqz vdlj slrc vqbb nzqlgz prxmdlz tcnhp qckgcc zxjksd vzzz bqdtr slg ffpfsv qkhft lqtqm clg dxzmr cxfz jtlfh jncfpc lxjtns gfhdct sjg ljcvh hjg qzqzj dsksm ktzlr knprxg rclxmm kzpmt vrqb rkgbgn sfxsj cqkrhx vhbmztr (contains fish, eggs, peanuts) +kkhq tbvh knprxg qdfpq rpmf rkms mct cjp ttqgh qjtrpj cklx rxdns tn rgmlds mrjqg mbllkbf qnljhd pdfv pdvqs jgdf pjlz ssfb xsbt clg crbxx qrnkl rsprgcj llqfr fxctfc clmxkbn jlfm txhkk hbpsp fsjbdt gmcm lzkmdq nslqr xjjk vzzz kl ssb ktgqpk prxmdlz nmqlz sfkf rmsgmj rkgbgn ssffbt gscdgj lchdf lxjtns gfhvs jncfpc csdslq xpjd qdtjjz hgmsn cxfz (contains peanuts, shellfish) +jlfm knprxg nkjcr slg vzzz fkxf ffpfsv rclxmm rmn ncjv cjjd mbllkbf xxhtdkp rtkk txhkk hsfx mvdgf clg qbkjvg fkhcbzbk sskfj fpqc khqt zjtlrq dqf cqkrhx hrqbs sfkf qdfpq vjzc vsbttl vrqb lqkxpxr cxfz bnxl xsrk hbpsp vqbb kkhq bnkss hfjrp qrnkl lzkmdq zkvlf drqg gfhdct lchdf pjlz lxjtns fsrmcx dxzmr (contains sesame, peanuts) +rxdns qhzqq clg mrjqg ndqtf jrbfkg cqkrhx sdcdmn qdfpq cxfz xvj fpqc xkkjl dxldm bnxl dxzmr fkhcbzbk vjzc hjg qpfh rpmf xpjd mpvnt nkjcr qzqzj drqg jbpz gbk fxctfc jlfm xtpdql bzxh sfxsj zxdkrx ffpfsv hfjrp tfrpccb khqt qc rkgbgn nmqlz rmn ssffbt slzctfh mzr xsbt qckgcc knprxg lxjtns prxmdlz gfhvs bnkss kcncjpk vzzz gscdgj mmdmtg ssfb zsgnd xxhtdkp (contains eggs, nuts, peanuts) +xtzt tfrpccb vrqb rxhrpjv cxfz gfhvs llqfr sqnbsg jlfm rsprgcj tn jncfpc rgmlds csdslq ssfb qdtjjz qmzzgr nslqr rmn fsrmcx gbk rjmk vbmz rkgbgn zsgnd prxmdlz qpfh dqf pdvqs vdlj zjtlrq rclxmm qrnkl qgct vqbb qzqzj rxdns zkvlf zdxn knprxg bzxh gmdldb cklx zxjksd vvchk zpsbc sxxnb lxjtns qdfpq ljcvh jthsmn ksfbnhz gfhdct zbqfz mjlqj ssb kzpmt vzzz fxctfc xngkf nkjcr sfkf kkhq jgdf clg bqdtr xxhtdkp (contains wheat, nuts) +cjjd ttqgh jthsmn cxfz dtnzp ksfbnhz slrc rtkk rbxz hjg clg tfbpk tqgjg kl lxjtns tn ncjv bnkss jtlfh xkzk vrhj crbxx ssfb zpsbc gmcm qc jncfpc mzr vbmz gscdgj qsgcg knprxg xqpph bnxl hfjrp nzqlgz qnljhd pgzgn vmcsb xmm qdfpq cklx ffpfsv sxxnb vzzz (contains nuts) +pjlz zbqfz xsbt cxfz vsbttl sbkksv mtzqr dxldm lqkxpxr vqbb gtl mjlqj vhbmztr slg glx khqt mmdmtg nslqr zkvlf cjjd ncjv tfrpccb xkzk xlkgtc kcncjpk jgdf hbkmd mbllkbf prhkvr kl vzzz rgmlds rsprgcj gbk lxjtns dtkcj bbltf rkgbgn knprxg prxmdlz qdfpq rpmf jtlfh xvj jtgsn vrhj bqdtr vvchk bqrqj jlrtmv gfhvs hsfx xtpdql cqkrhx xjjk (contains soy) +rmsgmj txhkk slg nfzz mmdmtg ssb lchdf mct csdslq pgzgn qgct xmm bnkss ljcvh gbk jmrx clg zsgnd vvchk ktgqpk bzxh fxctfc slzctfh tcnhp kcncjpk vrhj nkjcr cqkrhx clmxkbn gmltxp fpqc xtzt rclxmm sdcdmn qbkjvg dxldm dxzmr fkxf vqbb vhcqpn qsgcg lqtqm jbpz lzkmdq mtzqr xtpdql qc cjp sjg bkzgpg bqg rgmlds qdtjjz qckgcc prxmdlz mpvnt knprxg xngkf mjlqj nmqlz xxhtdkp zpsbc mrjqg qdfpq rmn cklx jpdxvmv glx xctvtxzl sfkf bqrqj zbqfz zkvlf rxdns gfhdct sskfj mgx qhzqq kvzpzvt cxfz gpjkqrq gmcm jglqz xkzk lxjtns xpjd rbxz xvj grzv hbkmd slrc dtkcj ncjv xqpph zdxn (contains shellfish, wheat, fish) +ttqgh qzqzj lxjtns rbxz xpjd dxldm fsrmcx pjlz nslqr khqt crbxx pbblp pdfv hrqbs mbllkbf rmc zbqfz prxmdlz ncjv llqfr gxnjk ltcxqdbm qdfpq gfhdct dsksm vhcqpn ssb cjp nmqlz vrqb cjjd slzctfh vqbb zsgnd rmsgmj ktzlr hfjrp cxfz vvchk qbkjvg gscdgj txhkk kcncjpk zpsbc mtzqr sxxnb jmrx knprxg nfzz vzzz fhtn rkms jncfpc nzqlgz jgdf ksfbnhz qgct (contains nuts) +ltcxqdbm clg xkzk jgdf clmxkbn bnxl pdfv nslqr ncjv rpmf ttjvqs lzkmdq vzzz jcs qnljhd hrqbs gscdgj txhkk tqgjg kvzpzvt knprxg fxctfc drqg dsksm ttqgh fkhcbzbk xsrk sjg gmcm xtpdql prxmdlz gfhvs qdfpq kcncjpk ktzlr qjtrpj cklx gpjkqrq jtgsn cxfz dxzmr qzdpffs sbkksv ssb sfkf jmrx nfzz vvchk xngkf gfhdct vhbmztr tn vrhj fkxf xkkjl mmdmtg mct kl lqkxpxr (contains soy, shellfish) +lzkmdq dsksm qzdpffs xctvtxzl nmqlz xxhtdkp lqkxpxr hjg zpsbc nkjcr qhzqq bzxh rsprgcj zxdkrx nzqlgz hbpsp dqf xsbt jpdxvmv qkhft csdslq xmm mbllkbf xsrk jbpz prxmdlz slrc qdfpq gmcm glx prhkvr zsgnd bqg fpqc clg zjtlrq nnxmgx pgzgn mzr mvdgf ncjv rgmlds knprxg dxzmr xvj gmltxp lxjtns mpvnt xtzt xtpdql zdxn kcncjpk gbk cxfz fxctfc sskfj sdcdmn bbltf vvchk jthsmn jmrx gmdldb cklx (contains peanuts, wheat) +rtkk kl fsrmcx prxmdlz lqkxpxr hfjrp fpqc jmrx vzzz xtpdql gscdgj ltcxqdbm zxjksd bnxl lxjtns bqdtr mrjqg qgct xlkgtc bnkss txhkk qkhft hsfx cjjd csdslq kzpmt gmdldb ljcvh clmxkbn xmm jglqz vrhj rmc xkkjl knprxg tfrpccb jtlfh lchdf rxhrpjv vjzc qqgq sxxnb qckgcc fxctfc tbvh xkzk jlrtmv qbkjvg rbxz hbkmd jthsmn bbltf nslqr mgx clg cxfz jlfm gtl kcncjpk cjp gpjkqrq qzdpffs xsbt xjjk qdfpq tfbpk ktzlr nnxmgx xxhtdkp prhkvr qrnkl fhtn cklx sqnbsg slg glx (contains wheat) +prhkvr tfbpk prxmdlz sdcdmn xrqj mvdgf sbkksv lxjtns hbpsp fsjbdt llqfr rpmf zpsbc rbxz mjlqj fsrmcx gmltxp mrjqg jtlfh bqdtr jpdxvmv tbvh bqrqj ndqtf bnkss sfxsj nkjcr xvj rclxmm sxxnb hgmsn knprxg qdfpq mmdmtg mgx jlfm cqkrhx fpqc zxjksd bkzgpg fkxf xpjd clmxkbn ncjv clg xqpph xsbt fhtn qzqzj nnxmgx lchdf bnxl gmdldb qnljhd khqt rmn vzzz dxzmr (contains nuts) +cxfz mjlqj lxjtns kvzpzvt mrjqg qmcrpm clg ssffbt ndqtf rmsgmj dqf ttjvqs ksfbnhz tcnhp gmcm zsgnd hbpsp xtzt qjtrpj jbpz slzctfh qpfh hjg xjjk knprxg fkhcbzbk prhkvr cqkrhx lqkxpxr zpsbc qnljhd xkkjl lchdf xtpdql vzzz sjg ncjv bkzgpg pdfv sdcdmn cjjd ltcxqdbm vdlj csdslq nnxmgx mct jtgsn qckgcc bbltf jlfm bzxh dtnzp tfbpk gpjkqrq xqpph qc bqrqj vvchk ssfb glx lqtqm xngkf nslqr qzqzj gbk sfxsj prxmdlz xkzk (contains soy, nuts, peanuts) +slzctfh mbllkbf xvj sfxsj xtzt rmc rkms qmcrpm hgmsn dsksm knprxg rsprgcj jpdxvmv qrnkl rxhrpjv rbxz xqpph sjg xctvtxzl mzr lxjtns ncjv dqf prxmdlz nkjcr nmqlz hrqbs gmltxp gxnjk sbkksv mtzqr mvdgf clg ndqtf jbpz kvzpzvt cjjd hfjrp gmcm jrbfkg xrqj zpsbc gpjkqrq bzxh qzqzj qdfpq qsgcg hbpsp hjg qmzzgr mct mgx qbkjvg jgdf drqg fxctfc dxzmr cklx qpfh jtlfh rxdns dtnzp xxhtdkp jtgsn zbqfz jlfm lzkmdq vzzz nnxmgx xtpdql xkzk vhbmztr dxldm gfhvs jncfpc qjtrpj ttjvqs ssfb bqg (contains fish) +prxmdlz mtzqr tfbpk xqpph hrqbs clg zxdkrx lchdf vzzz gmcm ksfbnhz dtkcj mbllkbf tbvh sqnbsg dtnzp qdfpq kkhq dxldm mzr xngkf qkhft jglqz hbkmd zkvlf ncjv cqkrhx xmm kzpmt gbk qhzqq mmdmtg xxhtdkp jpdxvmv kcncjpk mgx cxfz ktzlr hlsbn prhkvr lxjtns xpjd cjjd gpjkqrq sxxnb qjtrpj qqgq sbkksv mvdgf jtgsn slg ktgqpk fhtn rtkk rxdns qrnkl ssb dxzmr mct lzkmdq fsjbdt sjg rxhrpjv rkgbgn xctvtxzl mpvnt (contains wheat) +pdvqs rjmk clg mgx zdxn qzqzj qzdpffs rpmf jcs zxdkrx jtlfh rbxz kkhq rgmlds ljcvh sqnbsg dsksm zkvlf bqg qhzqq tn hsfx lchdf qgct lqtqm jthsmn lxjtns xctvtxzl nfzz hbkmd slrc pjlz jtgsn vzzz mjlqj kzpmt pbblp knprxg mrjqg txhkk mct ssfb bqrqj clmxkbn rmsgmj jlfm mmdmtg xsrk pgzgn prxmdlz jncfpc hrqbs bnxl nkjcr zjtlrq xrqj mvdgf gmcm tcnhp lqkxpxr zbqfz zpsbc gxnjk fsjbdt gbk kl hgmsn dqf rsprgcj vqbb qmcrpm jmrx qsgcg tbvh fsrmcx hlsbn lzkmdq slzctfh ssffbt gfhdct qc xkzk vvchk cxfz qmzzgr fhtn vrqb rkms kcncjpk pdfv gscdgj xtpdql cjp sfkf vsbttl sjg qdfpq (contains sesame, soy, nuts) +cklx vzzz fhtn ncjv hgmsn xkzk nslqr rmn ffpfsv fpqc qmcrpm zxdkrx gfhvs sskfj rxdns cqkrhx qjtrpj mvdgf xmm jncfpc vsbttl kl ssfb xsbt zjtlrq gmltxp mzr jtlfh ktgqpk knprxg xxhtdkp nzqlgz clg pdfv drqg qmzzgr lxjtns kkhq rgmlds glx bnxl qsgcg jbpz hlsbn qdfpq cxfz (contains shellfish) +kvzpzvt qgct mvdgf hgmsn jrbfkg qdfpq ssffbt gfhvs prhkvr clg bbltf rbxz lxjtns vzzz dsksm tqgjg txhkk slg gbk crbxx rsprgcj qnljhd qzqzj rmc vrhj hrqbs jgdf qbkjvg vqbb gmcm zxjksd khqt rclxmm ksfbnhz jtgsn mjlqj ssb gmdldb xlkgtc ktzlr ssfb qdtjjz cxfz knprxg rmn xmm ffpfsv vdlj qqgq bnkss xkzk ncjv glx mrjqg bqdtr pdfv lqtqm bqrqj dxldm nzqlgz gfhdct xpjd tfbpk vbmz jncfpc lchdf kkhq (contains nuts, fish) +bqrqj bqdtr vzzz jthsmn vmcsb fsrmcx ncjv xkkjl xqpph slg sdcdmn ssffbt gscdgj gfhvs xlkgtc zkvlf drqg mvdgf hbkmd nzqlgz dxldm slrc qc cjjd vjzc lxjtns zdxn rpmf vdlj xctvtxzl xvj tfrpccb jtgsn sxxnb bbltf kkhq fpqc clg kvzpzvt xtzt qdfpq nnxmgx cklx mrjqg xsrk ttjvqs lchdf qmcrpm kcncjpk nslqr rmc vhcqpn cqkrhx prxmdlz jrbfkg lqkxpxr rsprgcj bzxh lzkmdq ffpfsv vrhj cjp qrnkl qzdpffs vhbmztr hfjrp tcnhp dxzmr fxctfc jgdf rmn mgx rkgbgn gmltxp lqtqm jmrx kl vrqb ltcxqdbm fhtn knprxg (contains peanuts) +gmcm xxhtdkp cqkrhx lqtqm vzzz jpdxvmv grzv ncjv sskfj dxldm kzpmt zdxn zbqfz rclxmm fkhcbzbk vvchk cxfz prxmdlz lqkxpxr vjzc clg jgdf vrqb rsprgcj nzqlgz fhtn jmrx pjlz bnxl bnkss qmzzgr fxctfc qrnkl lxjtns qdfpq slrc slg tcnhp nfzz mbllkbf hlsbn kkhq zxdkrx gmdldb gscdgj (contains sesame, wheat, shellfish) +gxnjk lqkxpxr kvzpzvt vzzz cqkrhx jrbfkg lxjtns xtzt jcs qzdpffs txhkk kzpmt xkkjl vrqb mtzqr fkhcbzbk jtgsn mct prhkvr rmsgmj sdcdmn qkhft ndqtf mjlqj gtl tfbpk mgx jglqz ktgqpk zxjksd xrqj gfhvs knprxg clg hbkmd xmm vjzc rxhrpjv rmc vmcsb nfzz xpjd cjjd sjg ssb fpqc qdfpq llqfr jthsmn vqbb rkms ktzlr ncjv jncfpc qsgcg sfkf cxfz xngkf xxhtdkp glx qmzzgr hrqbs zpsbc bnkss dxldm vbmz tbvh cjp qzqzj (contains soy) +pdfv bkzgpg lchdf dsksm rkms vhbmztr ttjvqs slrc csdslq mtzqr mzr qrnkl slzctfh vhcqpn ndqtf bqdtr ncjv gfhvs dxldm qdfpq bqg sdcdmn nmqlz xtpdql prxmdlz dtkcj rbxz rjmk qc qkhft kkhq ffpfsv jtlfh vrhj vzzz fxctfc rmc mct sqnbsg pdvqs xkkjl dqf rmsgmj lxjtns rtkk jlrtmv jbpz jrbfkg zdvr nslqr hlsbn fsjbdt jncfpc nzqlgz llqfr sfkf ttqgh gmcm qnljhd pjlz ljcvh mgx fkhcbzbk gpjkqrq clg qsgcg vrqb xrqj cxfz jgdf dxzmr tcnhp rxhrpjv tbvh ktzlr (contains wheat, soy, shellfish) +tn bzxh bqrqj csdslq jlfm jtlfh qdtjjz bnxl jthsmn gmcm lxjtns kvzpzvt jpdxvmv xjjk nmqlz rgmlds hlsbn khqt jlrtmv qbkjvg prxmdlz bqg nkjcr vzzz jbpz knprxg qckgcc nfzz pbblp hgmsn hfjrp ktzlr ktgqpk hbkmd qmcrpm gxnjk xsbt qjtrpj fsrmcx gmdldb xctvtxzl cjp cxfz jtgsn rkms vvchk qdfpq rjmk sfkf rmsgmj xngkf zxdkrx mvdgf clg bkzgpg lzkmdq hjg (contains sesame) +kkhq crbxx bqg rkms ncjv rclxmm gfhvs lxjtns vzzz bbltf kcncjpk jncfpc jlrtmv dsksm slg mjlqj xngkf fpqc kl cjjd sdcdmn knprxg grzv rmc lqkxpxr clmxkbn vvchk qzdpffs ksfbnhz zjtlrq bqdtr bnkss xsbt fsjbdt rxdns rjmk slrc zsgnd cxfz xjjk bqrqj bkzgpg vdlj qbkjvg xpjd clg prxmdlz vjzc rbxz sjg rtkk ktzlr sfxsj jbpz khqt qjtrpj pjlz fkhcbzbk ttqgh ssfb ffpfsv xctvtxzl mpvnt rmn ssb hlsbn vrhj rxhrpjv qmzzgr rkgbgn (contains fish, soy) +rmsgmj ttqgh jmrx vrqb xlkgtc csdslq rjmk jncfpc vjzc qnljhd knprxg ssffbt zxjksd ltcxqdbm slzctfh vdlj pbblp rgmlds xrqj fsrmcx sdcdmn lchdf xkzk sbkksv cjp sxxnb cxfz jtlfh clg bzxh gscdgj khqt cqkrhx pdfv nmqlz pgzgn vsbttl gfhdct qc qhzqq xmm gxnjk zkvlf rkgbgn jgdf xctvtxzl zxdkrx rmn nkjcr mgx vqbb mzr prxmdlz bnxl cklx ncjv dqf qpfh rmc hbpsp lxjtns clmxkbn mct ljcvh ttjvqs xxhtdkp pdvqs vzzz qdtjjz (contains shellfish, fish) +cjp clg xsrk gxnjk hbkmd qzqzj mzr rmsgmj mtzqr qgct qmzzgr vdlj hjg bzxh nslqr drqg dtkcj prxmdlz fpqc fkxf tfrpccb csdslq mbllkbf mgx hlsbn knprxg gfhvs vzzz txhkk cqkrhx xjjk jlfm rpmf kl ncjv lxjtns nkjcr rmn qrnkl hsfx qpfh qdfpq fhtn zkvlf qbkjvg rxhrpjv qqgq hfjrp xctvtxzl rkgbgn ttjvqs jtgsn (contains nuts) +zkvlf rclxmm hlsbn gpjkqrq qqgq dxzmr xlkgtc hbpsp zpsbc tfrpccb gscdgj sxxnb ttqgh rxdns lqkxpxr fkhcbzbk mct bnkss prxmdlz rmsgmj qmcrpm kzpmt jrbfkg ncjv vzzz slzctfh xctvtxzl dxldm hsfx ssfb qsgcg cxfz sskfj xkkjl fhtn gxnjk xtpdql nmqlz vbmz ffpfsv jtlfh cklx gmcm nslqr llqfr qzdpffs rkgbgn sbkksv rtkk tqgjg clg nkjcr pgzgn pdvqs vrqb sfxsj lxjtns jgdf qdtjjz prhkvr pbblp knprxg vqbb qnljhd khqt jbpz vsbttl drqg qhzqq (contains soy, sesame, peanuts) +vhbmztr bqrqj jtlfh gmdldb xjjk jlrtmv tqgjg gfhvs ndqtf rgmlds sdcdmn fsjbdt zbqfz ltcxqdbm hbpsp jbpz dqf sxxnb rtkk ncjv prxmdlz sfxsj llqfr rkms cxfz xtzt glx mpvnt xctvtxzl zxjksd gtl zxdkrx knprxg kzpmt pjlz khqt qdfpq tcnhp bqdtr fkxf vjzc mjlqj fxctfc lzkmdq zsgnd clg pbblp kvzpzvt qjtrpj jncfpc nmqlz ljcvh vzzz fsrmcx (contains soy, nuts) +rxdns mtzqr ttqgh dtkcj tn knprxg xqpph qbkjvg nzqlgz hbpsp ncjv dtnzp rbxz jrbfkg ssfb gmcm qckgcc xsrk pbblp qmzzgr sfkf jmrx cjjd rkgbgn fpqc zxjksd gmltxp cqkrhx glx xkkjl sdcdmn gbk jtlfh gscdgj cxfz lxjtns gfhvs jgdf tqgjg xvj vsbttl qc qgct mgx rxhrpjv gpjkqrq qzdpffs prxmdlz xsbt qzqzj xtzt ssb zkvlf vzzz mrjqg qdfpq qrnkl dsksm ljcvh nfzz xngkf bnxl lchdf kvzpzvt rmn khqt ndqtf hrqbs xjjk qnljhd ksfbnhz mmdmtg mvdgf xlkgtc bkzgpg mbllkbf (contains wheat, soy, nuts) \ No newline at end of file diff --git a/src/main/resources/2020/day22.txt b/src/main/resources/2020/day22.txt new file mode 100644 index 00000000..bdf290ea --- /dev/null +++ b/src/main/resources/2020/day22.txt @@ -0,0 +1,53 @@ +Player 1: +43 +21 +2 +20 +36 +31 +32 +37 +38 +26 +48 +47 +17 +16 +42 +12 +45 +19 +23 +14 +50 +44 +29 +34 +1 + +Player 2: +40 +24 +49 +10 +22 +35 +28 +46 +7 +41 +15 +5 +39 +33 +11 +8 +3 +18 +4 +13 +6 +25 +30 +27 +9 \ No newline at end of file diff --git a/src/main/resources/2020/day23.txt b/src/main/resources/2020/day23.txt new file mode 100644 index 00000000..297c758d --- /dev/null +++ b/src/main/resources/2020/day23.txt @@ -0,0 +1 @@ +496138527 \ No newline at end of file diff --git a/src/main/resources/2020/day24.txt b/src/main/resources/2020/day24.txt new file mode 100644 index 00000000..30438c4d --- /dev/null +++ b/src/main/resources/2020/day24.txt @@ -0,0 +1,539 @@ +swswswswseswswseseswswnwsesw +nwewsewneswenwesenesenw +neeeenwseseewwnenenesweeeeene +seseewnwseseseneswseeseseseesesesese +swseswswswswswswswswweneswswsw +seswsesesenwsesenesenwseseseseseseseesew +nwneenwneswnwneneneseneswnwnewnwsenene +wswswwwswswsewneswnwnwsenwswswewesw +eeseeneeneeeneew +swnewnwneneeneneseneneneneneneenenenene +seewswnwseneswnenenwww +eneneswnenenwnwwneneneseneneneswneswne +nwewswesewseseeewneseseseseeese +enwsenesweswwsesewsesesesesewnewsene +wseeseseseseseseseseswsesenesesesesesese +nenewnenenesenwsenewneneneswneesw +eseeneseneesesesesweseseeseewsewe +nenenenenenewneneneneneseeneswnenenenenee +nwsenwnwnwnwnweneeswnwenenwwnwnwwnw +neewnewneeeneneseeneseneeneneneeww +neswswswneswseswwwnwwwwswseswsewnene +wnwnwenwwewswwnwnwwneswwsenwese +wnwsewewwwnenwwwwnwnwnwswnwnwnwnw +wewwwwwwswwnwsewwnwnw +wsenenewsewwnese +wnenenwswseesweene +nwnwnwnenenwnwnwnwnwnwnwnweswnwswnenwnwnenw +swseeewnenweenwenenwswsenesw +wswswswswnwsewswneswswseswneswneswsesww +seswneseswswswseswwwseswswneseswswswnesw +sesweseswnwswsweseswswwnenwnesenwsew +newwseneseeseeseseseseseesesesewse +swswewwswsweswswswwwwswwnwswsewnesw +seneeeeeseeseeseseeeesesesw +swsesenwnwseswwseswswseseseseseswseseswne +wswwwneesewnesenwwswwnwwswnw +eneeeneeeeeneneneneneneeesewwnene +swswswsweswnwswswswswswswswswswneswswsw +sweswwswswwswswswswswswswswswneneswwsw +wswwswswenenwewnesweesenesesenenwe +sweneneswnwnweswneneeneeneswneeee +swwsweswswnwswswswswsw +nenewnwsenenenenenenenesewnenenenenene +nwenenenenwnwneneenenwnwswswnenewnenw +seswwsweswseneswswnwswwnenenenwswsewswse +seneswsenwnwnwnenwnwnew +esweseneeewseweeseenesenwnwswe +wswswsenewenwswwwwwnewswswesewwsw +seesewenweeeweseswwseseeneese +wwwswwnewswwewwsenwneswwwwsesw +wseseseseneneseswswseseseseswe +enenenenenewswneneneeneneneenweew +ewseneseenwneseneswsewnww +ewwwwswwwswwswwwwswwswwwnw +neewseswesesesewsewwnwseseseeswe +swwswwswswwwswswswwswswnwwswswsewe +wneesenesweenwsenwsweneeeeseew +wseneseenenwwwneesweewnenenenese +seenwwneneenesenewswnenesewnesenesew +nwnenwsenwnwenenwnenww +nwnwneeswnwnwewnwwswswnwnewnwsenwnenw +swswwwwneswswsweswswneswswsewswswwsw +eneneeeeewneee +seswswswesweswwswswswswsenwsw +wswswseswwwnesweswsweswswwswwwsww +eeesweeneeewnwneeseeesweneeee +nenenenenenenwneswnenenenwnenenenenesenene +nwwnwwwwwwwwwwew +eseseseswswsewswsesenwswswseswsweseswse +nwwswnenenenwneneneneenesenenenenenesene +seseseseswneseswswnwseneseneweeneswse +nenewnwnwnwwnwwnwwwnwsenwnwsenwnwnw +wwwswnwnwwnwnwewnw +neswsenesewsesesesesesesesesesewsesese +esesesweseeseeeseseeeenwesewese +wnewewnwwnwswnenwswwswwnw +wnenesenwnenenenwsenenwswnesenenenenene +eneseeeeneeneenwneneneeweswenee +seswnwwswneswseswseswseseswswswesesesw +nwswseseeswswewswswsesenwwswwswesesw +wewsenwnwwnwnwnwnwwenwwwwnwew +enwwnwnwnwnwnwnwnwnwwnwswnwnwnwnenwsenw +nwsewewwnwnwswnwnwswwnwsenwnwneee +wwewwswsesenwwwswewwneeeneww +wnewsewsenwwwnwwwnwnwwwwwwnewsw +wnewnwnweewnwsenwnwnewswswnenwswenwnw +wnwwswswwwnwwwwwnewnweww +wwswseswwwswwswnwwwnenewwenww +wswwswwenwwswwswwswswwswswswesw +ewswwwwenwwsenewnwwww +sewnwneswseswseswwswsewswneswnwswseswnee +neenwswewsenwwswnwswswwswneewswwe +wwwnwwwwnewewwwnwwwswwww +esesenwseseeeswseeeseenweseesesese +esesesewseseseneseeseeswseesesesesese +seseseseseseseneseswseseseswsesesesewse +sesesewseeseseneeseseseeeewnesesese +swswswswswswswnwswswswwnwswweeswswsw +seseseswwseseseseseseseenesewseeenew +neeswnwswneewnenenenenenenwneswne +nenwnwenwnwnwnwnwnwnwnwnwnwnwswnwnwnwnw +sweeeeseeeeenweeeseenweseeee +nenwseneneeenenesweneesenenenwneenene +wwneswswwwwwswwswnewwseswwwwsw +swsenenwseswnwseseseneswnesesesesenewsenww +nweswwseseseseswnwnwsesesesenesesesesesw +eneseseswwsweseswswsesewseeswswswnw +nwnwnwwnwwnewwnenwnwsewnwseesewnw +seseeeeeesewnweeeeesweesese +eeeswneneneneswnenenenenenenwneeene +nwseseseseseseseseseeseseswseseseseesenw +swewwwnwswsweeswnwwwnwwwseww +nenenewewseswneneeneneswneenenene +sewnewwwwwwwwnwwwwnwwwsweww +nesenewneneneneneneneneswenwweeenesw +swswwwneswnesewseswswwswswnwwswsww +nenwnwnenwsenwnwnenwnwnwnwnwwnwnwneewswne +eenweeeeswseeenwseeseseseeesee +seewenenenenwswseneeneenwwneewnee +seseseeeeeseneseseseesesesewseese +wwwenwseswswswswswswewswswswwnew +swwwsewnwesewswneewwesenwnwwne +neseesenwneswenweeesew +nenwesewwneswseseeswseeseeeseese +wwwnwnwwswnewwnwww +eseseseeenwseeeeeeseeeseenewee +nwsenenewnwnwnwnenwnene +swswswswswseswswwweswseswseneseswswsw +nwnenwnenesenwnwnwsenenenwsenwwenwww +neswwwwwwswswnewswswsww +nenwsenenewwnwnwnenwnenwseseenwnenewne +wnwwwwsewnwnwnwnwewwwswnenwww +nwnwwnwnwnwsesenwnwnwnese +wwwnwwwewwwnwweswnwwswnwwnwnwnw +nwnenwnwnwneenwneswnwnwnenwneeswnenenwnw +sesewswswswneneswnwwsewswswnwswwnee +nwneneneneenenesweneeneneneeswnenee +neeswenenwweesenwseneswee +nenenwneswnenwnenenesw +nwwwnwswsewwnwwewewsenwnwnwwnw +nwnenwenenenenenwwnenenwnenwnwswneenene +wwnwwwwwwnwnwwwwwwewwwwe +eeneeeeeeeeweseeesweswnwnene +enenenenenenenenenwwnewnenenenenenwe +esweeswsenenenwswswswwwseswneswswsww +eeeesweneeneeweeeneeee +nwseseswswswwwnwenewnenwsw +sweeeswnwseneeeeeesweeneseweee +swswswswneweswswswswswsw +swwsewnwsweneswweswnwswwseswswswww +nwnenenenenenenenwnwnwsenenenwnesewnwnenw +swseeeseweseseseseseesesesenwsewnee +neneneswnenenwnenenenwnwsenewenwswseswsw +sweseseswnwswenwsesweseeeseesenenese +seewenwsesenweeeseeneseeseseeswee +eneeeseseeeeeseeswweeseeeswenw +wwswswswneswswswwwswwswswswswsw +eeneenenwneeeneneeeeneeswenene +swwswwwnwswwseewswswwswswwswswswwnw +nenenwnenenewnwnenwnenwnesenenenene +neeswnweswneneewneeneeeeeee +swneneswseswswseswswwswswswswswnwneswsw +enwenwnweeseeweswswnwsweeenweswe +newswnenesewwwsweswwswswwswswswsww +nwwwwwnewwwwwsewwwwwwewse +eneeenenenwneneeeneseswnenenenenene +wswwneswnwwsewswseww +nwnwnwnwsenwsenwnwenwwnwwnwewnwnwwnw +wseneneenewnweenewwnenenenwsenwne +eswneneneneenenenenwnenwnenwnenwnwwnenene +swseneseseswsweswseswsewseseseseseswsese +swswswwswwwswswswsewswwswswswsweswnw +swneewenenwneewnweseswnwwnw +wswwwwwewwwwwwwww +nenenenenenenenwswnenewswnwneneneneese +sewsesewsesesenwseneneseseeesesewe +swswswswewswswswswswswswnwswswswwwsw +wnwsenenesewnenenesewnwnenenenenenenenene +newwwsewsenwnwnwwwnwnw +neswswwswneswswswneswswseswswswwswww +nwsewwwswweswswwwwswnewswswwwwsw +seseseswseseswneswswseseseseswsesesesenw +senwwwseswswseseswwswnesewnwnenene +eneeeeeswneneeneesweeneenenene +eeeeeeeeeneeweeeeesee +nesenwneneenenenwnenwswnenenenenwnwnene +neenwnenenwwnwswnwnenwwswenwnwnwswnw +neeneneeneeneeeneeneneenwewenesw +nwseswswnweenewwnenwnwnwswneeswwnw +swnewwwnwnwseewweswwnwwsww +nwsesweweewwnwwwsenewnewwwnwwsw +seeswsenwnwwswseswswsenwesweenwsese +nwwseeeeeeeeeeeeeeeeeene +swneswswswseswswwseswneswswswseseswswsww +esesesesesesenwseseswsesenesewwsesesw +eneeneneneneeneewneeneneneneene +wwnwnwnwwnwnwsewnwnwenwwnwww +seeseseesesesesesesesenwnwseseswse +nwwnwewseswnwwswwnwnwwnwsenenwsese +nwneswnwnenwnwnwnwwnwnwwnwnwnwnwnwseenw +wsenwnewswwwneseweswnwwwsenenwnew +swesesewsewswswsweswswswenwswseswswsw +eweeseneeeeseeeseeeeee +swwwsweweewneswswnwsenwswswwswswsw +sweswnewnwneenwswweseeeneseseseew +nenenesenenenwneneseneneswnenenwnenenenwnw +swswswsweswwswswswswswseswswswnwswswnwsw +eeweeeseneeneeneeeneswwsee +ewwwwwnenwwwwwwwsewwwwnww +nenwswnenenenenenenenwnwnenweseneswnewnw +wswwnwwswwswnwwwwwwwswesesw +sweeneneswsewneeeneneneneneenenene +enenwnwsenwwnwswnwnenenweswne +eenwswwnwenwenwesweswnweswswsesww +swwseseswnwsesweseswseseswswswnwnesesese +seeeeeeeeeeswnee +newsesesenesesweswsesesesesewne +enwnenwnwnwwnwwswwnwsenenwnwnwnwnwsw +nwswseneeseswwnwswnwsweenwneswnene +neswswswseswswswwewsww +seseseseseseswseseseseseswnenwseseseesesese +seswseeneswnwswsewswseswseneswswswseswnw +neneesweeneenenwneseesweneeneneenw +swsenwswsenwseneesw +wnwwwswwswwwswswswswsewwneswswsw +wswwwswwwnwwwwwnesewswwwwe +swseswseneswsenesesewswseswseswwsenwe +newnweneneneneneneneseeneneneneneewe +eseseseseneeseswsenwsesesesesewenwew +wseeenwseseneseewswseenwseseseseese +wswwnewewseswwswwswnewwwneswsww +wsenenenwesenewewnwewseeeseswswsese +nenenenenesenenenesenenenenenwenwnenenene +eweseneneeewewne +seseswsenwesesesenwweeeseseeeesese +swenwwneseseweseneweswswseseswnwswswse +seeewnwnenwwswnwnwnwenewnwwswsene +seneswswneseeswnesesesenesesewnewseesese +swnenwnweneeswnwnwnwnw +nenenenwneenesenene +swsweswsenwseseswnwseneseseseswseseseswse +swneswswswswwswwswswnwewswsweswnwsw +nwenenewnwnwseeeseseswewnenenwswswnew +eeneseweseseseseewee +nwseseseswswwseswneseseseseseswse +nwwswswswwswwwwswnwswewwsewswe +eeeseewseeeeeeeeeeneeee +eweeeeseneeneneeneeneneeewew +nwsenwnenenenwnwnenenenwnwnwnwnenenewne +swswswswseswswseswswswswswswswswswnwnwswsw +swswswseswseseswseswswseswsenwnwswsesesesw +swnenenenenwneneneneneneneswneneneneneenene +neneneeeenenesenewneeneeneenenee +eesesesesesesesenwwnwseeesenwswswse +senwswnenwseneeswwseswe +eeeweeewseneneneeeeneeneee +eeeeneeenesweewenew +nwswwwenwsenwsenenwswwweswsewwnwne +swswswseswneseseneswnwseseswsesesweswswswsw +eneenwneneeeneseneneneeeesenwnee +swwnwwnwsenwswwswseenesewseenewwe +eeseseweeeewsenesesesewee +nwsenwnwnwnwnwnwnwwwwnwwwnwnwnwwenw +neneswneenenenesenenenenenenwnenwnwnesew +eseseeeseswswweesweeeneesenwne +swswswseswwswsenwneneseseseeswseswnwsw +nwnwnwnwwnwwnwnwwswnwnwnwnwnwnwenwnwe +wnenwnwnesenwnwswneneenenwwneenwnwnene +seewseseseseeeenweeeeneseseswsee +swsenwsenwnwseseseswesweseswnw +swseswswswsweswswseswswswswseswsenewswsw +seswseseseswwesesesesesesesesesenwswnese +wswnewwseswswwswwwswswneswswwseswsw +nwwsesweeseseeseenesesenweeeesesese +neseeeseewseeseseesewseeese +nwnwnenwnenenenwnenwnenenenwswnwsenenenw +eseeseeseeswseneseseseeeseew +swswswswsesweswsesesenwswseswsesesesesw +wnenwneseseesenwwnenwswswneneweee +newnenenenwnwenwenwswneneseneneswnene +nwwnenwneneneswnwneenenwnenenwnese +eweewwwwwnewwwewwwwnwwswse +ewsweenenwnwswswnwnwnwswwnwnw +esenwnwnenwnwwnwnwwwwewseswwwnwsene +wseeeeeeseseseenwseeeseeseswee +sesesesesenwnwsewswseswseeeseseswnewne +neneneeneswnenenenenewnenwnenenesenenene +wseneseweneeeeew +sesewseseeseswsenewsesewsesenesese +neeneneswseneesweeseeneneneenwnwe +swswseswswswswwneswswswswswswswswswsw +wwwwsewswwswswwswneswwwwswww +seseseseswneseseseseseeseseswsesewsesesew +nwnwnwswnwnwnwnwnesenwnwnwsweenwnwnwswnwnw +seesewnwswneweeenweeseeeseseneswe +seesesesesesewseneewesesesesesesese +nwneeeewewneneeenenesenwswswswe +seseewneneeneneneneneneswwnwneewse +sesweeswwnweseeeenweeeenwee +wwswwswwwnewsewwwnewswweww +swswswnwswnenweseseswswswnenwswswseswswsw +eseswneeeeeneseeenenweeswesesesw +seseseseswswseswseswswswsenwswesesesesw +sweeenenenenwswnwsweeneneswnweeesee +wnenwnwnenwnwwswnenwnwseee +newweneeeeeseneeneswneweneenee +wswswsweseeswneseswswswenewnewwse +swswswweeneswenwswnw +swswsenwswseswswsesenwsesesesesesesesee +nwnwsenwnwnwnwnwwnwnwnwnwnenwnwsenwnw +seswenwnenwsewnwwnenwsewwnwnwesene +enwseweenweseseseeswswseneswesene +newnesenewneneseneneneneswnewneneneenee +swwwswwnwewneswwwwswswwseswww +sesenwweneneeswesenwwewnenw +seneseeseswseseneseswsesesesesesesesee +neneeeeneseneweneneneseseewewwe +eseeseseseseseeswswseseneseneseesee +eseneswnewswneswwsenenenwnwsenwwsww +nwnwsenenenwnwnwnwnenwnwnwswnenwnwnenenenw +nenwenwnwnwswnenenenwnenenwwnenwesenenenw +swswswseswswswswswswneneseswswswseswwnwnw +eeeewneeeeeneeneswnwesesw +eneneneeesenenesenwnwneeeeseeenew +seswseswsweswswswswseswswnwseswswse +nenwswwswswswswwswnewswwswswwwswwe +nwwnwswseewwwwnwwnewswweenwnwnw +wsenwnwswnwnwwnwsenwenwwnwnwnwnwwwnenw +swsweswswseswswswnwswswswswswnwseeswneswsw +swneswswwswwswswneswswwseswseswswneswswsw +wwwnwwwnwwseewewwnwwswweswne +wwnwnewsenwnwwwwwnwnwnwnwnwnwnwnw +swnwnwnwneneneneeneenwswnwnenwnenenese +nenwsenenenenenewnenwnenenenenene +swswswwwwswswene +neneeneeneneswneswnwnesewneenwnwnenesw +wswwwwswwswneswswwseeswswwwww +nenenwswsenwnwsesenwnenenenwnwnwsene +nwenwseeeenesweswseweseseseenwnesee +esenwsesesewseseneseseseseswseseseswsese +eeeweenwnewseeeeseswsenenwesesese +weeeeneewseeneeeeesweeswne +seseswsenesesesesesewsesesesesesesesese +neneenwneweseseeeeweeeeeneeee +eeesweeenwneeswnenweeeeeeenee +ewwnwwnewweswnwwsewewwnweww +eseneeeweeeeeeeeenesweenene +swswswswswwwwwswwneswneswswswswswww +sweeeeeneeeeeeeeeeneswsee +swseswseswneswswswseswswswswswswswswwsw +swnwsenwnenwnwwnwnwnwnwwsenenwenenwnenenw +nwseseswseseseeswnwswseswseswseswsenwse +swswenwnwswwseswnwsewseeneswseneswswnw +newseseesewnwsweneseeseseewseseew +wwwwnwwwwwwwwwewewwwww +nwswnenwwnwwnwnweesewnwnenwnenwnwnwnw +swneeseewsesewseewseseneneseseeeee +senweswnwswesesweswsewseeswswnwse +neeneeeeeeneswneneeweeseeneee +nwwnwwnwwswwwnesenwnwwwwwnwwnwse +nenwnewnwnenenwsenenenwnwnwnwewnwnwne +wnenwnwwnwwwewswswnwwwwnwnwwwww +neneseneneswnenenwwneneneeeneeneeenew +swswwswswswneseswswswswswnwswnwesweswsw +eweweeeeeeneseeewee +nwwswwwsenwnewswwseswnewswnweww +swswsesewsweseneeswswswsweswnwnwnwswwsw +swseswswswswseseseseswswseseswnwnesesesw +nwsenesweswnwnwsesweeswewsesesenesese +nwseseswseseneswsesenwseseseswsesesesenwe +seseeseseseseseseeseseesew +nenwnenenewnenenwnenwneneeneswenenwnenw +wnewwswswseswnenweswswswswswnwswswswswe +neenwswwnenenenwnwswenwenwnene +nwnwnwenwnwnwnwnwnenwswnwnwswnwnwnwnwne +seewwsenwwwwweswswwnwwwwswww +nwnwwwnwnwsesenwneenwsenenwswwnwsenwne +nwnewnwenwwneswwnewwswswwnwwnwswnwnw +seeeeeeeswseseseseeseeenwsesee +wnesenwwwwwnewwwsewwswwwwww +nwnwnenwnenwnwnwnwnwnwwnwnwnesenwnwne +nenewnwnenwswsenwenwnwnwnwneewnenwne +neeenwneneeneswweeeeneeeneeeee +nwswenenwnwnwswnenenwnwnwnwnenwnenwnwne +neeswswswswswswswwswnwswwswswswswesw +nwnwnwnwnwnwswnwenwnwswnwnenwnwnwnwnwnwnwnw +newwnwwsewwwwsewwewwwswsenwsw +nwseswneswwswswwswwwswswwwwseswwsw +wwswswwwwwwsewswwnewwwwww +seseseesesesesewsesewsene +wswswswewswswwewwwswswnwwswnwww +swswseswswswnwswswswswwswswswswswswsw +nwsesesweewnwneswwnenwnwnwsenenwswsenw +swswseseseswswseseseseseswswsesesene +nwesewwnwneseeseneswsesesweneseenwswsw +eeseeesenwnweesweeeseeeesesw +neeswwnenwnenenenwneenenenenwneswsesw +nwwwesenwwnwnwwwnwwnw +nwwswwwwenwwnesesesewenewswsww +swswwwwswsewwswneswswswwwsewneswswsw +eneeneneswnwnenewseeneseneesenenewene +nwwswwnwnwwnwnwnwewwnewnwnwnwwnwe +nwsweswnewwwwsweswswwesw +nwneenenenenenenewswsewenenewsenenene +seswseeseseseneewsesweseseneseesesese +swswswsweeneeewewnewwnwswnewsw +wneswswwsewswneseswswswswwsw +eneneeneeeneseneneswneenwneneenene +enwnenwswsweneeswenwwseeee +nwnwnwnwnenenwenwnwswnenwnwnwsenwnwnwnenwnw +sesewsenwseseesewnwsenesesesesesesese +nesenwneneswenenenenewnesesenwewsenew +seseswnewswesenwneswwewwneeseeswse +wseeseenweeeeeeeewswneeee +nwsesesweswsewseseswsesesesewswseneese +nwnwwwwswwwnesewneewsw +nwwnwsenenwneneneswnenenwnwnwswnwnw +swnwnesewwwnwwwwnwwneenwswwwwww +seseseswwneswswsenewneswswwswseswswse +eseseweenenewseneseseseseswseesew +seswswswnwseseswswseseswswswswsenwsenwnwe +swswswwweswwswswwswswwwswswswsw +wnwwnwwwnwwseenwesenwwnwswnwnenw +nwnwnwnwenwnwnenwnwnwwnenwneenwnenwswnenw +nwwsesesenwweesese +nwswnwnwnenewsewse +eswswneswwwwwwwwwnewwwwswnew +wwwswsewwwwwnww +swswswwwwwewnwwsewswwnwewswnee +nenwewneswnenwswnwswewneneneseswenwene +wnewwwewswsewwwwswnwwwwwwwsw +seeseseesenwewseseseseseseseesesee +wwnwwwnwwwwsewnwwwswwnwnwwe +ewsenenenwswswswswnweseewnwswsesenwsw +wwewwwwwsewswwwnwswwnwwwww +neswsweneseneswwwenesewswswewwsw +neneenenwnwnwswneswneswneneneneswneene +seswnwsesweswsewswnwnwneswnwswnwseswnesw +neswnwnwnenwnwnenenenesenwneneenenenwswne +esenwsesweseneswesewswenweswnesewne +enwnwnwnwnwnwswnwnwnwnwnwswnwneneenene +eneeneswnwneeweneseeesweneneenene +seseweeneswnwseseenwseseseseseeese +eswenwneeenwneseeneeneee +seseswseseseseneeseseswwswwswseseesese +nwseswswswswseseseseneswseseseseseseswswse +nenwswnwswnwnwnwnenwnwnwnenwenwnwnwnwsene +seswwesesweswswswsenwnewwsweswsww +eeeeseseeseeeeesenweesweese +eesenwesweeeeneenweeseeeeee +esesesesweseeesesenesewseseeesee +neneeeneenewnenenenenenesewse +nenwsenwnwwnwenwnenwnwswnwenwnwnwnwnw +wwseneneswnenwneswnwsesenwweseenewnw +swwswnwswwsewswswswswwswsewswswnesw +seeeeneesweweeneeeeneneneeenee +swswswnwseswswswswswnwswswswneswseswesw +wnenwwnesewwswwwsewwwnw +nwsenenwnwwnesweseswnesenwnwnenewsew +ewnwswswwwswwswwnwswesweewww +seeseswsesenwsesenwnweswswswswsewswsene +nwnwnwswnenwnenwnwnenenwnesenwesenwwnew +nwnwwnwnwnwnwwenwsenwnwwwnwnwwnwnwnw +wwwnwwwwseewwwwewewnewww +neswwwswwwswswsenewswswwwwwswwsw +swsewseeseeswseswwswswsesw +swswwswesewswnwswswswwsww +swseswswseswswsweseseseseswnwseswswswsw +wsesesesesesesesesesesesesesee +wnwwswseseneneneenesenenenenenenwee +ewsweswsenwseswwwnweenwnewnwnesew +nwsewneswwwwswneeswwsw +nwnwnwnwnenwnwenwnwneeswnwnwnwnwswnwnwnwnw +ewneneswesenesenwnwnewseww +nwnenwnwnwnenwnwsenwnwnwnenenw +eeeeeeenweseenweeeenwseseesw +wswwswewswwswwswwsw +nweesewseweseenwseseee +nwnenwnwnenenenwnwswnenwsenwnenwnwnwwnenw +nwnenwnwnwnwsenwnwnwsewnwnwnwnwnwnwnwnw +nenwnwnwnwswnenwnwnwnwenwnwnwnwnwnenenw +sweeeeeneneweeeeeeneeeenw +neswsewnenwneswnenenenenwnwenenwnwnenwne +nwwnwswnwswnwnwnwnwnwnwnwnwnenwnwnwnenw +wsweenwenwewneeweeswswwewee +sweswnwwswswswnweswswneswseswswswsesw +swneswswwwswwswewewwswwwwwnese +nwswswswswswswswswswseswswnewswswswsw +nenwnewweewnwnwswnwwsewwwswsenw +seseeewewseseseseseseesesesesesesese +swseswseswswseseswnwseneseeswnweswsesw +wenwnwnwnwnwnwsenwnwnwwwwnwwnwnwswne +nenenenenwnenwnewnenwswnwneneneneneenenw +nwnenenenesenwsenewnewnenwnesenenwnenenw +neneneneeneesweeeneneneneeswenwne +neneenwneeneneeswneeeeenenenenene +swseswseswneswswseseswsesesewnesewneseswsw +swneseewneseswnwneenwswseseseeswese +nwswnwnwnwwnwnwnwnwnwwnwnwewnwnwnwse +nwswnwwnwwnwwwewwnwwwewseenwnw +eeewneneneneeeswseneeweneenew +nwswswswswswswswswswswswwswneseeneswswsw +nwwwnwnwwnwswswnwneewwnwnwnwnwnwnwnw +swswseseeswseswseswswsesew +seesesesesesesesesewseswseseseseene +eesweseeneseswnweseweenwseesesee +enwenwswnenwnwnenwwnenenenewnwswesenwnw +enwweeseenweseeeeswesweeeneee +nwnwseswnewenwnewwsesenwnewnwnwnenwnw +swswswseswweswswswswseeseswneseswsenwne +nenwnwnenwnwnenenesenewneenenenwnewne +swnwwnwswewnwwnenwsewewwwnwnwwww +swneswswwwswnesww +eeeswwnweseweseneeeswsesesesesee +swswwseeseswswswswswsenesenwswswsesenesw +swnewwesenwneswenwenwe +wnwnewwwsewwwwswseswwwswwwsww +swwnwenwnwwnwnwsewwnenwnwwnwwww +nwnwnwnwnenenewnwnenwnwsenenwnwnwnenwne +nwnwnwnwswnwnwnwnwswnwwwenwnwnwsenenwnw +neneneswneseswneeneswnwnenewenwenwswnwne +sweeneseseeseseeneswnweeseseseeee +enesesewwenwwwnewneswsewsewnwnw +swseseseseseseeseseseenwenwswswenwnw +swseseseeneseseswswseseseseswsewsesesese +nweseneswseesenwseswseseswse +swewswseseswwwseneswnesesene +sesesesweseseeneeseeseseseswenwsese +nenwwnenwnwwswwswswwnwnewnwwwnwnww +swswswswwsweswswewswswwswswnwswsww +swwnwswseswsweseswswnwnenwnwsweswee +nesewnwnwnwenwnwwnwwswnwnwnwnwnwnwnwnw +newnenenenenwnenenenenenenwnenenesenene +wwswewwwwswswwwswwnwwwewsw +seeeseeseeeseeseeseeesenwsesesw +neneswseeneneenenwnwnenwnenesenenenewne +nwwneneseswnenenesw +nwnwnwswnwnwnwnenenenwnwnwnwnwnwnwsenwsw +swnwwwnwewwwnwnwwnewwwwnwwnw \ No newline at end of file diff --git a/src/main/resources/2020/day25.txt b/src/main/resources/2020/day25.txt new file mode 100644 index 00000000..cb56879d --- /dev/null +++ b/src/main/resources/2020/day25.txt @@ -0,0 +1,2 @@ +1965712 +19072108 \ No newline at end of file diff --git a/src/main/resources/2020/day3.txt b/src/main/resources/2020/day3.txt new file mode 100644 index 00000000..3eed5d61 --- /dev/null +++ b/src/main/resources/2020/day3.txt @@ -0,0 +1,323 @@ +....#...##.#.........#....#.... +#.......#...#...#.#............ +#..#..#.#.##....#.#........#... +........##...................#. +........#...##...#.#.###....... +##............#...#.....#.##... +...........#....###...#.....#.. +.......#......#..##..#.....#... +..#.#..#....#.........#...#..#. +.........##......#.....##..##.. +........#.....#....#..##......# +..#..#.......#..............#.. +.....#.#....................... +.#.#....#.........#............ +.......#.....#.###............. +......##......#...........#..#. +.#...............##...#........ +.....#..##........###.........# +#...........#..#............#.. +.........#....#..#.#......#.... +.......#.........#..##......... +.##.....#..................#... +....#............#.#....#.....# +..#....#...##....#...#.#...#... +..........#................#.#. +#...#.#.#.####..#.#..........#. +..#...#.##......#...........#.. +..#.....#...#.......#......#..# +..............#.......#........ +.#..#..........#.....#...#..#.# +#........#...#......#.......#.. +#..................#........... +..#...#........#...#..#........ +..............#.....#.....#..#. +#.#.......#..............##.##. +....#.#.....##....#...........# +......#....#...#..#.......#.... +....#..#.#.....#..##.....#....# +...........#.......#.#.#....... +#.......#..##........#..#...... +.........#.##..#..............# +...........#............###.#.. +..#.....#.....##...#.........#. +....##............##........#.. +.....###..........#......##.... +#...##..#..#..........#........ +....#.....#.......#..#.#...##.. +.#....#........#.#.........#.#. +##...#.#.....#......#.......... +.....##.....#....#.....###.#..# +..............#..###..#...#..#. +....#...#....#.............#.#. +.#.........#.....#........#.##. +....#.........#..........#..... +.......#........#.#.#.......... +#........##....#.........#..... +..##..........#....#.#...#....# +#...#.#......#..##..........#.# +.....#..#...#..#............... +#...#..............#........... +.#...#....#..##.....#....#.#... +.#...#.......#...#..#.##....#.. +#....#........#....#...#....... +#..#......#.....#.....#..##.... +......#.#....##....##..#...#... +..#....#.#.###..............#.. +.#.##.......#.#.#..#...#..#.... +..#..........#.#....#..#.#....# +..........#...#...#..........#. +..........#.....#.#..#..#....## +.#.#...##...#...........####... +........##..#.#..........#.##.# +#......###...........#...#..... +..#.#....##.........##....#.... +#....#.##..##..#..#.....#.....# +.##.....##....##....#.......#.. +#...#.....##....#..........#... +............#.#.##....#....#... +....#............#.....#......# +....................#.......... +..#....................#..#.... +....#.....#........#..##...#... +#.....#.#....................## +.#....#.#.#...#..........#....# +....#...#......#...#.....##...# +.....#......................... +.......#..#.#...#...#...#.....# +...#......#.##.#...#..#...##.#. +...........................#..# +..#.#.....#........##.......... +....#...##........#.#.#..#...## +..##.....#..###.........##.##.. +.#..#.....#...#.............#.. +#..............##...#....##.... +.##......#.#............#...... +.............##...#.#.......#.. +.........#..#..#............... +........##......#....##........ +...#.........#.#.#............. +#..........#......#......#..#.. +.............##.#.#..#.#.#...#. +.....#.........#............... +..##.#..#.....##..#........#.#. +.#..........#.#.......#......## +.#........................#.... +#....#....#...#..#......#...... +........#.......#......#.....#. +.....#....##..#...###...#....#. +....#.........#....#......#.... +.............#...#....#.......# +.....#.........#..#.#.......... +.........#..#........#.#.#..... +......#.##......#....#.#.##.#.. +.#...#.#...#...#.#......#....## +.#................#......#..... +#.#.#...............#.......... +.....#.#.......#...#........#.. +#...#.#.#.##..#...........#..#. +.............###.........#....# +.#.....#.......##....##.......# +....#...#.......#.##.....#..... +...........##.........#...#.... +..............#.#..#.....#..#.. +#.#...#..#.#.........#......#.# +#.##.....##....#........#.#.#.# +##.#.###.........##.......#..#. +#.....#.....................#.. +.........##........#........... +.###........##....#...#........ +....#.#........##...........#.. +..........#.....#..........#..# +......#..............#......#.. +.....#...#......#...#...#...... +..........#.#..#....#...#..###. +#..##........#................# +..#............................ +.....#.........#.#............. +........#...#.....#...##......# +..#........#................#.. +......#....#..#......#......... +...........##....#..#.#........ +.....#.............###......... +#............#......#..#....... +..#..#.................#..#..## +.......#......#.....#........#. +....................#..#.##...# +.#..##...............##...#.... +...#...#....#........#......... +.....##...#.....###............ +.###.........#........#.....##. +.............#...#............. +...#.#...............#..##..#.# +...#...............#..#.....#.. +....#.#..................#...#. +..........#...........#.#...### +#...#......#................#.. +...#.#.......#...#......#.##... +......#..........#............. +##.......#.##.#...........#.... +......#...#.#.....#............ +.#.....#.....#.....#.........#. +..................#............ +.#.#.#.....#......#.##......... +.......#..##.##......#..#....#. +...#.#.#......#...#........#... +..#............#......#.......# +..#......#........#.........#.. +..#..#.#.#.....#.............#. +..#.#..##......#...#...##...... +.##...#....##.#.#...........#.. +..............#..#...#....#.... +.......#.#........#............ +.....##..###........#.......... +......................#........ +..##....#....#................. +.##.#.###.#........#.##..#...#. +##................#...........# +....#..##.....##............... +.#.....#..#............#.....#. +#.........#..............#..... +...##.#......#...#............. +................#.............. +...#.....#....##...#..#....#... +..............##..#...#.##..#.. +......................#..#....# +.......#....#..#.##.........#.# +#...#........##.......#........ +...##...............#.....#.... +.##...##...#................... +.........##.#...#.........#.... +............#............#..#.. +.............................#. +....#.#....#................... +......#......#...#..##......... +#........#.#.#.#.#......#....#. +.#.........#.#...#......#..#.#. +..............#....##.........# +.#.......#..#....#.#.#....#.... +...###.#.#..#...#....#....#.... +#........#....................# +......#...##.###..#..##...#.... +.....#........#.......#........ +#..#...........#.#............. +....##.#...#..##............##. +#.#..##..#...#...#.....#....... +..#.............#.##..#...#.##. +.#.....##.#..#...#...........#. +....#...#....................## +....##......#.###......#......# +...#...#.........#..#.##....#.. +#......#..#....###.........#... +#...........##.............#.#. +#..............##....#......#.. +.........#...#.#...#...#....... +....#....#............#.......# +........#...#....#......##..... +..........#.#..#.........#..... +#........#.##....##......#..... +...#.......#................... +###...#...#..#.##....#.....#... +........##..........#.##..#.... +.....#......#..#.....#.....#.#. +...#..#..##..###.....##.#...... +#..#......##...#............#.. +#............#....#..#......... +#........#.......#......#..##.# +...#.#.........#.#............. +#..............#..............# +#.#......#..........##......... +#..##...........#..##...#...... +.....#.#.....#......#.....#.#.# +.#.##...#...##...........#....# +#.............#........#....... +..##.............#...#......... +....#.#......###....#.......... +...#..#.....#..##.#....#...#.#. +.............##................ +#.#............#........#..#.#. +.#......#.....#...........#.... +...#.........#...........#.##.. +.....#...#.....#..#..........#. +........#.#...............#.#.. +.......#..#..#.....#.......##.. +.#...#...#..#...##...#......... +..........##....#..#.##..#..... +....#.................#...#.... +.........#...#......#....#....# +.........#..#...#.##........##. +#.#....##.......#.#............ +##.......##..................#. +......#...#......##............ +##.#...#.#...........#..#...... +.........#.........#..#.#...#.. +.#...#.......#.#...###......... +................#.#.....#...... +..#...#.....#........#......... +.........##.###.#.#.....#...#.. +#..#..........#....#.#...#...## +##.#.#....#..##.............#.# +.###....#..#...............##.. +............#......#.#.#....#.. +........#...#..#...#........... +##.........#................#.. +...###...#.#..#...#..........## +...#......#......##........#... +.......#............#.......... +.....#.....##....#.....###..... +.#...#...#.....#..#..#....#..#. +#.#........#..#.......##...#.## +.....#.....##..#.##........#..# +.....#...#...........#......... +..#....#.#...#..#....##...#...# +...........#...##.........#.... +..#....#....##........#.####... +#.............#.#.............# +...................#.....#.#..# +.#....#.#.............#.#...... +#...........#............#.#... +..#.........#.#....#.......##.. +#....####......#...#......#.... +....##....#...................# +....#.##....#.............#.... +.........##........#.....#..#.. +............#...#.............. +............#..##....#.....##.# +............#.....#......#..... +........#..#........##.#....... +...#.#........#..............#. +............#.........#..#.#... +................#.............# +..##..........##......#.#...... +..#..#.##....#.........#...#... +...........##...#.#.#.......... +.#.#.......#.#...#.........#... +.........#..#........#..#.#.... +..........##..#.##....#....#... +....#...............#.......#.. +##..........##................. +....#.#.#.....#..........##.#.. +..............#.##..........##. +##...............#...#..#...... +..#..#..........#......#....... +#...#..##.#.#.................. +....#....##......##.#...#....## +.#...#.#....##.............#..# +................#......###..... +..#..#.............#.#.......#. +..#..................#.......#. +.....#.......#....#.##...#.##.. +.....##.......#......#..#...... +#..#.......#........#.......... +..#...#..#....#.........#...... +#..#..#......##..#.##....####.. +......##.#.....#..#.......#.... +.##...#.....#..#...#.#......... +#.....#........###....#...#..#. +.#....#.#..#......#............ +.........#..#..#.....#........# +..#.......#..........#..#...... +......#.......##.#....#.#.#.... +.#............#.....#.......#.. +...#..#...............#........ +.....#......................... \ No newline at end of file diff --git a/src/main/resources/2020/day4.txt b/src/main/resources/2020/day4.txt new file mode 100644 index 00000000..ab0df046 --- /dev/null +++ b/src/main/resources/2020/day4.txt @@ -0,0 +1,984 @@ +byr:1985 +eyr:2021 iyr:2011 hgt:175cm pid:163069444 hcl:#18171d + +eyr:2023 +hcl:#cfa07d ecl:blu hgt:169cm pid:494407412 byr:1936 + +ecl:zzz +eyr:2036 hgt:109 hcl:#623a2f iyr:1997 byr:2029 +cid:169 pid:170290956 + +hcl:#18171d ecl:oth +pid:266824158 hgt:168cm byr:1992 eyr:2021 + +byr:1932 ecl:hzl pid:284313291 iyr:2017 hcl:#efcc98 +eyr:2024 hgt:184cm + +iyr:2017 pid:359621042 +cid:239 eyr:2025 ecl:blu byr:1986 hgt:188cm + +eyr:2027 hgt:185cm hcl:#373b34 pid:807766874 iyr:2015 byr:1955 +ecl:hzl + +iyr:2017 hcl:#7d3b0c hgt:174cm +byr:1942 eyr:2025 ecl:blu pid:424955675 + +eyr:2026 byr:1950 hcl:#ceb3a1 +hgt:182cm +iyr:2016 pid:440353084 ecl:amb + +hcl:a4c546 +iyr:1932 pid:156cm eyr:2034 hgt:193 ecl:zzz byr:2025 + +hcl:#ceb3a1 eyr:2020 pid:348696077 hgt:163cm +ecl:hzl +byr:1921 iyr:2016 + +ecl:gmt eyr:2031 iyr:2018 byr:1971 hgt:152in pid:454492414 +hcl:z + +hcl:#341e13 byr:1921 iyr:2020 +pid:072379782 eyr:2022 hgt:166cm cid:253 ecl:brn + +ecl:blu hgt:75in byr:1954 eyr:2026 iyr:2012 hcl:#623a2f pid:328598886 + +byr:2004 eyr:2035 hcl:#7d3b0c pid:359128744 iyr:2020 hgt:65cm +ecl:#70f23f + +eyr:1988 +pid:171cm byr:2003 +iyr:1984 +cid:50 +hcl:z hgt:66cm ecl:#7a4c6e + +pid:9632440323 eyr:1964 hgt:63cm +ecl:#fab0c5 hcl:z iyr:1945 byr:1986 + +pid:936403762 ecl:#337357 byr:1997 +cid:196 iyr:2020 +eyr:2030 hgt:165cm +hcl:#7d3b0c + +byr:1931 pid:488791624 hgt:169cm ecl:blu +eyr:2029 hcl:#fffffd iyr:2013 + +hcl:#733820 hgt:76in pid:517689823 +eyr:2028 byr:1988 +ecl:brn iyr:2016 + +eyr:2023 hcl:#fffffd hgt:190cm iyr:2015 ecl:brn pid:739536900 byr:1951 + +ecl:brn +byr:1986 cid:262 hcl:#efcc98 pid:880203213 hgt:185cm iyr:2018 eyr:2029 + +pid:181cm hgt:113 hcl:z ecl:#2c2d2c iyr:1961 byr:2021 eyr:2031 + +hcl:#ceb3a1 iyr:2020 +byr:1977 +hgt:192cm +pid:338237458 eyr:2030 ecl:amb + +iyr:1953 byr:2025 hgt:66cm eyr:1932 +pid:181cm +ecl:#6f0b15 hcl:f79cb7 +cid:109 + +hcl:#6b5442 pid:164cm ecl:blu +hgt:176cm byr:2015 +iyr:2010 eyr:2029 + +eyr:2035 +pid:085002665 ecl:#f88074 iyr:2018 hcl:#602927 +hgt:169cm + +byr:1958 +hcl:z +pid:0468194841 iyr:2016 eyr:2007 +hgt:152cm +ecl:#1c7a89 cid:124 + +hcl:z pid:233430735 byr:2021 eyr:2026 +iyr:1953 ecl:#64769d hgt:184 + +hgt:70cm pid:156397147 +iyr:2014 ecl:#d6ada0 +byr:2030 +hcl:#cfa07d + +ecl:amb +byr:1990 +iyr:2017 hgt:164cm hcl:10f33a +cid:293 eyr:2020 pid:332276985 + +pid:163252726 eyr:2026 +hgt:163cm +iyr:2011 hcl:#efcc98 +ecl:hzl byr:1936 + +hgt:157cm iyr:2019 pid:078770050 hcl:#efcc98 byr:1967 eyr:2030 +ecl:gry cid:190 + +hgt:184cm ecl:amb pid:851379559 hcl:#ceb3a1 byr:1946 eyr:2022 +iyr:2017 cid:280 + +hgt:171cm byr:1942 pid:830156471 hcl:#cfa07d ecl:gry eyr:2032 +iyr:2022 + +byr:2013 ecl:#67cbe8 eyr:2024 +pid:242908367 +hgt:76cm +iyr:2025 +hcl:796bda + +ecl:amb iyr:2019 +byr:1945 eyr:2021 hcl:#602927 pid:550065206 + +hgt:72in ecl:brn byr:1956 pid:253685193 iyr:2017 eyr:2023 +hcl:#6b5442 + +eyr:2032 iyr:2019 +hgt:176cm +ecl:oth pid:800237895 hcl:#888785 byr:1979 + +eyr:2026 iyr:2020 cid:226 pid:882830512 +hcl:#866857 byr:1929 ecl:amb +hgt:60in + +hcl:#cfa07d ecl:oth +iyr:2015 pid:807837948 byr:1966 eyr:2030 hgt:191in + +byr:1969 iyr:2012 eyr:2024 +cid:244 ecl:hzl hcl:#18171d pid:344160556 + +eyr:2020 pid:718422803 +hcl:#18171d +hgt:181cm +byr:1925 ecl:amb +iyr:2019 + +byr:1943 pid:740807220 hgt:72in ecl:amb +iyr:2013 eyr:2022 +hcl:#cfa07d + +hcl:#733820 +byr:1986 iyr:2016 hgt:184cm cid:333 +pid:768188726 ecl:oth eyr:2030 + +eyr:2022 byr:1996 hcl:#341e13 ecl:hzl iyr:2015 hgt:160cm +pid:516401532 + +hgt:182cm ecl:grn pid:336742028 iyr:2014 hcl:#34f021 byr:1967 +eyr:2029 + +byr:2030 +hgt:142 iyr:2029 eyr:2040 hcl:426fc5 +cid:312 +pid:169cm +ecl:#069ff7 + +hgt:169cm ecl:gry hcl:#6b5442 iyr:2012 byr:1949 pid:131835020 eyr:2022 + +hgt:70cm iyr:2012 +eyr:2037 +hcl:64fd76 +cid:175 pid:4880649770 ecl:grn byr:2029 + +iyr:2013 hcl:#7d3b0c eyr:2024 hgt:190cm pid:659772377 cid:226 ecl:oth byr:1958 + +ecl:lzr hgt:163cm pid:013605217 +byr:2000 +eyr:2020 +hcl:z iyr:2024 + +cid:131 pid:896076106 +hcl:#c0946f byr:1930 +hgt:162cm eyr:2023 ecl:oth iyr:2017 + +byr:1935 iyr:2012 +pid:942509879 +ecl:amb +hgt:185cm cid:152 eyr:2024 hcl:#866857 + +ecl:#e490a3 hcl:4813a2 hgt:176cm pid:778369210 iyr:2020 +eyr:2035 byr:2020 + +byr:2006 ecl:amb pid:148409219 +hgt:189cm +eyr:2021 hcl:z iyr:2028 + +hgt:188in hcl:#9ed525 +iyr:2018 ecl:grn eyr:2021 +pid:065515632 byr:2012 + +cid:109 hgt:167cm +pid:545112664 ecl:grn hcl:#a62fea eyr:2026 +iyr:2012 +byr:1921 + +pid:174997024 +iyr:2012 +eyr:2030 +ecl:grn +hgt:150cm +byr:1997 +hcl:#866857 + +pid:451921339 +hgt:181cm +hcl:#888785 iyr:2017 eyr:2026 byr:1936 +ecl:hzl + +hgt:187in +hcl:#866857 ecl:grn pid:623919686 eyr:2028 iyr:2011 +byr:2016 + +byr:2001 +ecl:gry eyr:2023 pid:324948416 +hcl:ef16f8 cid:139 hgt:184in iyr:2026 + +byr:1954 hcl:#341e13 eyr:2023 pid:129321944 iyr:2012 +hgt:183cm +ecl:amb + +hgt:164cm pid:596870080 +ecl:hzl eyr:2021 iyr:2017 hcl:#a97842 +byr:1951 + +iyr:2013 byr:1944 hcl:#cfa07d +hgt:168cm cid:72 pid:160531632 +ecl:grn + +iyr:2012 pid:900043442 hcl:#ceb3a1 cid:124 byr:1941 +ecl:blu hgt:156cm +eyr:2025 + +eyr:2021 hgt:61in iyr:2020 ecl:grn byr:1933 + +byr:1971 cid:175 +eyr:2028 hcl:#efcc98 iyr:2013 hgt:170cm +pid:225213589 + +pid:147112660 hcl:#ceb3a1 eyr:2029 hgt:159cm ecl:grn iyr:2014 +byr:1967 + +iyr:2015 pid:502975636 hgt:71in byr:1994 +hcl:#18171d ecl:amb eyr:2029 + +byr:1948 hcl:#b6652a hgt:171in pid:181cm iyr:2019 ecl:grt cid:87 + +pid:859849571 ecl:amb hcl:#6b5442 +hgt:193cm byr:1980 +iyr:2017 +eyr:2020 + +cid:125 pid:508147848 +hcl:06ea75 iyr:1997 byr:2010 ecl:#c707f7 eyr:1970 hgt:161 + +eyr:2020 cid:326 byr:1989 ecl:gry hgt:160cm hcl:#cc080c pid:319135853 iyr:2010 + +ecl:utc +pid:531595917 hgt:180cm byr:1987 +eyr:2024 hcl:#cfa07d iyr:2025 + +ecl:gry byr:2007 +eyr:2028 +iyr:2025 +pid:6072964414 hgt:59cm hcl:#888785 + +pid:791025828 ecl:hzl hgt:178cm +iyr:2017 +hcl:#733820 +byr:1960 eyr:2021 cid:66 + +byr:1991 iyr:1934 +cid:304 hgt:183cm ecl:grn +pid:408294229 +eyr:2027 hcl:#623a2f + +ecl:blu hgt:181cm eyr:2024 iyr:2010 +pid:633234602 hcl:#2ce009 +byr:1985 + +hcl:#c0946f hgt:192cm +iyr:2012 pid:120684397 ecl:grn eyr:2027 +byr:1974 + +eyr:2026 +pid:068304960 hgt:190cm byr:1925 iyr:2020 ecl:oth + +hcl:#733820 +hgt:168cm cid:307 iyr:2014 byr:1981 ecl:hzl pid:898831724 eyr:2026 + +hgt:73cm +eyr:2038 +byr:1980 ecl:gry iyr:2027 pid:678846912 hcl:z + +hgt:150cm cid:261 eyr:2021 +hcl:z pid:159cm iyr:2014 ecl:hzl +byr:1955 + +pid:#172650 ecl:gry eyr:2040 hcl:z iyr:2013 hgt:169cm byr:2008 cid:290 + +iyr:2017 byr:1998 +hcl:#ceb3a1 pid:274178898 eyr:2027 ecl:brn +hgt:183cm + +eyr:2024 cid:183 ecl:grn +byr:1946 +hgt:63in hcl:#6b5442 iyr:2017 + +hgt:97 byr:1990 +iyr:2019 +ecl:grn +pid:587580330 +hcl:#341e13 eyr:2022 + +ecl:oth +pid:441517075 hcl:#c0946f iyr:2015 hgt:188cm eyr:2024 byr:1920 + +hgt:191in pid:185cm iyr:1993 +hcl:93033d +eyr:2034 ecl:dne + +pid:591478424 ecl:grn hcl:#888785 +byr:1929 eyr:2023 hgt:173cm iyr:2017 + +iyr:1954 +hgt:63cm +hcl:bdf2e0 ecl:amb pid:#912f46 + +byr:1956 iyr:2012 hgt:73in pid:986643426 +ecl:blu +cid:235 eyr:2025 + +hcl:#cfa07d +cid:320 byr:1930 +hgt:172cm +ecl:oth eyr:2024 iyr:2019 + +byr:1935 hgt:182cm pid:22794407 hcl:1b96fb eyr:1961 iyr:1941 ecl:#5e80cd cid:70 + +iyr:2020 eyr:2021 +ecl:amb +hgt:59in pid:594829025 hcl:#93092e +byr:1976 + +hcl:#a97842 eyr:2030 +byr:1937 iyr:2018 cid:295 ecl:oth +hgt:166cm pid:282634012 + +hgt:171cm hcl:#623a2f byr:1956 +pid:068178613 cid:214 +iyr:2012 eyr:2026 ecl:brn + +byr:1921 +hgt:161cm hcl:#888785 +ecl:brn pid:010348794 +eyr:2023 iyr:2011 + +hcl:#a97842 iyr:2010 +byr:1955 eyr:2024 +pid:473791166 +ecl:brn +hgt:175cm + +eyr:2028 ecl:grn pid:186196675 byr:1945 hgt:155cm cid:349 +iyr:2011 hcl:#6b5442 + +hgt:161cm eyr:2030 cid:221 +pid:994494879 hcl:#733820 iyr:2012 ecl:blu +byr:1957 + +eyr:1993 iyr:2022 hcl:z byr:2020 pid:013428192 hgt:62cm +ecl:dne + +hgt:178cm eyr:2029 hcl:#733820 byr:1962 iyr:2017 ecl:blu pid:567713232 + +hcl:#fffffd +byr:1928 pid:390162554 +eyr:2030 cid:79 hgt:150cm ecl:amb iyr:2019 + +eyr:2030 cid:320 hgt:171cm hcl:#888785 pid:540720799 ecl:amb iyr:2012 byr:1979 + +byr:1921 +ecl:oth pid:204986110 eyr:2023 hgt:154cm iyr:2017 hcl:#341e13 cid:126 + +eyr:2020 cid:175 ecl:dne byr:1983 iyr:2016 hcl:#c0946f hgt:65cm + +hgt:191cm +iyr:2010 cid:295 byr:1984 eyr:2025 hcl:#cfa07d pid:799775698 +ecl:amb + +iyr:2020 cid:278 hcl:#c0946f byr:1970 pid:773144393 eyr:2024 hgt:180cm + +hgt:176cm +byr:1963 +pid:252396293 iyr:2012 ecl:brn hcl:#ceb3a1 +eyr:2030 + +pid:545130492 +byr:2030 iyr:2020 +hgt:190cm eyr:2034 ecl:blu hcl:#fffffd + +hcl:#a97842 pid:032201787 hgt:190cm ecl:gry +eyr:2028 iyr:2012 byr:1994 + +hcl:#a97842 pid:064591809 +ecl:hzl byr:1927 hgt:165cm +iyr:2011 +eyr:2028 + +cid:77 +byr:2005 +hgt:125 iyr:1923 ecl:#605d73 +eyr:2022 pid:90184674 hcl:z + +cid:301 pid:106820988 +iyr:2018 +hcl:#cfa07d eyr:2029 +byr:1993 +hgt:193cm ecl:grn + +hcl:#623a2f +cid:118 +ecl:oth pid:75827285 +hgt:189cm iyr:2010 +eyr:2030 byr:1976 + +ecl:blu iyr:2023 eyr:1996 +hgt:66cm cid:251 byr:1972 hcl:z +pid:557774244 + +byr:2002 +hgt:169cm pid:629420566 eyr:2026 ecl:grn hcl:#341e13 +cid:166 iyr:2019 + +iyr:2026 hcl:9b83a1 eyr:1979 +ecl:dne hgt:111 pid:176cm + +pid:#89718c byr:2026 +hcl:2ca5c7 hgt:142 eyr:2040 +ecl:lzr iyr:2029 + +ecl:grn +byr:2022 eyr:2020 +pid:7024869 hgt:123 iyr:2019 hcl:z + +hcl:#733820 hgt:155cm ecl:grn iyr:2020 byr:1955 eyr:2028 +pid:217362007 + +hcl:#18171d ecl:gry +byr:1971 hgt:193cm +eyr:2020 +pid:352009857 iyr:2013 + +byr:2018 +hgt:175in ecl:xry iyr:2015 +eyr:2036 +cid:171 pid:6132398 hcl:#efcc98 + +pid:839955293 +byr:1928 hcl:#fffffd ecl:hzl iyr:2011 +hgt:162cm eyr:2023 + +hgt:175cm pid:482827478 eyr:2028 +hcl:#6b5442 ecl:blu byr:1932 iyr:2010 + +iyr:2020 hcl:#866857 +ecl:brn byr:1933 cid:269 pid:003931873 hgt:188cm +eyr:2022 + +byr:1981 hcl:#fffffd hgt:160cm cid:311 ecl:brn eyr:2025 +pid:930857758 iyr:2014 + +hcl:#cfa07d hgt:73in +ecl:gry +pid:383281251 +iyr:2013 byr:1934 eyr:2026 + +byr:1988 eyr:2026 pid:458002476 +iyr:2017 +hgt:175cm ecl:amb + +eyr:1987 +byr:2020 pid:299341304 +hcl:#341e13 iyr:1935 cid:125 +hgt:168cm +ecl:gry + +iyr:2014 hcl:#b6652a pid:445799347 +hgt:188cm byr:1960 +eyr:2030 cid:290 ecl:amb + +eyr:2023 +hgt:75cm hcl:#733820 cid:195 byr:1933 +ecl:amb pid:062770586 iyr:2019 + +hgt:168cm +eyr:2021 +pid:725299968 ecl:grn byr:1932 +iyr:2016 hcl:#888785 + +hgt:161cm hcl:#ceb3a1 byr:1962 eyr:2026 iyr:2013 ecl:amb pid:695426469 cid:227 + +ecl:dne hcl:#ceb3a1 iyr:2013 eyr:2022 +pid:434786988 byr:1956 hgt:183cm + +pid:697500517 +byr:1968 hgt:169cm hcl:#fffffd ecl:grn cid:143 +iyr:2010 +eyr:2027 + +byr:2029 ecl:amb hgt:175in iyr:2015 hcl:#ceb3a1 +pid:39839448 +eyr:2021 cid:105 + +pid:0985607981 ecl:hzl iyr:2012 +eyr:2021 byr:2024 hcl:5cad22 +hgt:190cm + +hcl:#b6652a hgt:178cm cid:222 byr:1992 ecl:grn +iyr:2011 pid:419544742 + +iyr:2019 byr:1960 ecl:hzl eyr:2021 hgt:184cm cid:66 hcl:#866857 pid:412920622 + +eyr:2025 hcl:#888785 iyr:2018 byr:1956 pid:698098389 ecl:grn hgt:173cm + +ecl:blu byr:1935 +pid:354892542 hgt:161cm +iyr:2018 +eyr:2021 hcl:#b6652a + +ecl:oth cid:287 iyr:2028 byr:1953 eyr:2027 hcl:#7d3b0c hgt:151cm +pid:211411839 + +iyr:2018 byr:1934 hcl:#a97842 +pid:859748861 +ecl:oth hgt:175cm eyr:2025 + +byr:1930 iyr:2018 eyr:2022 +hgt:175cm +hcl:#292092 +ecl:brn pid:987163365 + +hgt:167in hcl:#888785 eyr:2040 pid:4646402867 byr:2013 iyr:1941 ecl:#389aec + +ecl:hzl hcl:#602927 +hgt:168cm eyr:2026 +cid:235 iyr:2016 +byr:1942 + +iyr:1975 pid:11337832 ecl:#a25273 hgt:151 byr:2017 + +eyr:1979 +hgt:71cm +byr:2003 hcl:7e7da7 pid:151cm ecl:#a8afb3 iyr:1937 + +eyr:2021 hgt:74in hcl:#cfa07d iyr:2014 byr:1932 +pid:641867677 ecl:grn + +ecl:gry hgt:185cm pid:556229206 iyr:2013 +byr:1984 +hcl:#fffffd eyr:2028 + +eyr:2020 byr:1989 +ecl:grn pid:618876158 hcl:z +hgt:176cm iyr:2025 + +eyr:2025 byr:2001 hcl:#cdb7f9 +pid:377402126 ecl:hzl hgt:184cm iyr:2019 + +byr:1939 hgt:180cm eyr:2029 ecl:oth hcl:#733820 iyr:2016 +pid:733456875 + +pid:883743276 +hcl:#7d3b0c eyr:2022 ecl:blu +byr:1928 hgt:150cm cid:150 iyr:2013 + +hgt:60cm ecl:#43f03d eyr:1994 byr:1975 +iyr:1980 pid:169cm + +hgt:104 byr:2029 eyr:2040 hcl:64a9b2 +pid:83898860 +iyr:1990 +ecl:#938bbe + +pid:284399238 ecl:gry hcl:#888785 iyr:2019 hgt:168cm byr:1944 +eyr:2022 + +hcl:#733820 pid:486515752 ecl:grn hgt:188in byr:1941 iyr:2017 eyr:2005 + +iyr:2010 +byr:1978 hgt:160cm eyr:2003 +ecl:oth +hcl:#efcc98 pid:584668011 + +byr:1944 ecl:gry pid:962700562 iyr:2011 hcl:#866857 eyr:2022 +hgt:191cm + +hcl:z pid:758583213 iyr:1941 ecl:gry eyr:2007 +hgt:67 byr:2022 +cid:215 + +byr:1988 +ecl:#ae2a9b hcl:#fe9d14 iyr:2012 +pid:411550516 hgt:169cm eyr:2038 + +pid:400034647 byr:1927 hgt:165cm +iyr:2017 ecl:brn eyr:2024 cid:144 hcl:#341e13 + +hcl:#733820 hgt:153cm eyr:2027 +byr:1935 pid:217121064 cid:120 iyr:2012 ecl:grn + +hgt:168cm hcl:#866857 iyr:2012 pid:1527348755 +byr:1946 eyr:2028 cid:184 ecl:amb + +hcl:#a97842 +byr:1967 +hgt:152cm eyr:2030 +ecl:blu +pid:929661915 iyr:2018 + +pid:671485026 +hgt:188cm byr:1974 iyr:2015 ecl:grn cid:268 eyr:2021 hcl:#c0946f + +pid:789877199 iyr:2011 cid:219 eyr:2029 +ecl:oth byr:1991 +hcl:#866857 hgt:154cm + +cid:137 pid:059579902 +eyr:2020 byr:1952 +hcl:#18171d iyr:2020 +hgt:172cm ecl:oth + +pid:182cm iyr:1997 byr:2012 +eyr:2034 +hgt:161in ecl:#528abf hcl:b7d2fe + +hgt:192cm ecl:oth iyr:2017 pid:264538307 byr:1994 cid:285 +hcl:#18171d eyr:2030 + +hcl:#efcc98 +pid:38036608 +eyr:2010 +iyr:2026 +byr:2027 +cid:239 ecl:zzz hgt:74 + +iyr:2012 +eyr:2022 hgt:178cm +hcl:#888785 +ecl:hzl +byr:1998 pid:000080585 + +pid:719620152 hcl:#b6652a cid:133 +ecl:hzl +byr:1983 iyr:2012 hgt:175cm +eyr:2024 + +cid:155 eyr:1977 iyr:2019 ecl:#28de8b byr:1941 hcl:#602927 hgt:173cm pid:493773064 + +iyr:2010 +pid:842124616 ecl:hzl eyr:2025 cid:146 hcl:#733820 hgt:166cm byr:1987 + +hcl:fd4dcf byr:2006 iyr:2011 pid:820797708 eyr:2020 hgt:189cm +ecl:gry + +iyr:1971 pid:22107293 hcl:#5b3f01 cid:257 +ecl:hzl +hgt:60cm eyr:2000 byr:1965 + +byr:1932 eyr:2028 +hcl:#6b5442 ecl:amb pid:947149686 +iyr:2015 hgt:187cm + +hcl:#a97842 +cid:260 +hgt:167cm eyr:2027 byr:1973 ecl:oth pid:741678753 iyr:2016 + +pid:334234443 ecl:gry hcl:#18171d eyr:2020 +iyr:2016 hgt:159cm byr:1926 + +hgt:118 eyr:1929 iyr:2013 +pid:987139064 +cid:196 +hcl:#cfa07d ecl:#f72601 byr:1929 + +byr:1924 +pid:623185744 iyr:2012 cid:341 hcl:#602927 hgt:192cm eyr:2022 + +iyr:2012 byr:1971 hgt:168cm cid:146 pid:673038025 hcl:#866857 eyr:2020 ecl:hzl + +eyr:2023 iyr:2017 +pid:205596613 cid:298 hcl:#341e13 +hgt:169cm ecl:oth +byr:1996 + +ecl:blu pid:775831730 +eyr:2029 iyr:1924 hgt:168cm hcl:z + +byr:2023 hgt:181cm +pid:4365105095 iyr:2021 +ecl:lzr eyr:2024 hcl:z + +hgt:184cm byr:1987 pid:175cm ecl:#83a5fa eyr:2023 + +eyr:2021 pid:422371422 ecl:oth iyr:2015 hcl:#866857 +byr:1963 hgt:174cm + +pid:006970943 +hcl:#2f22ef iyr:2020 +ecl:gry +byr:1922 +eyr:2024 hgt:163cm + +cid:160 byr:2015 +eyr:2038 hcl:z ecl:grt hgt:166 iyr:2026 +pid:#14978f + +hgt:178cm eyr:2021 iyr:2016 pid:471529794 +hcl:#b6652a cid:192 +ecl:grn byr:1970 + +iyr:2015 ecl:brn hcl:#602927 hgt:187cm +pid:729284172 +eyr:2024 byr:1932 + +cid:153 +ecl:dne eyr:2005 +pid:178cm iyr:2028 +byr:2029 hgt:160in hcl:482a92 + +byr:1995 iyr:2012 hcl:#866857 hgt:159cm +eyr:1950 ecl:gry pid:183cm + +pid:875885919 +hgt:159cm +iyr:2011 +ecl:gry byr:1988 hcl:#341e13 eyr:2028 + +pid:2390267705 hcl:#7d3b0c byr:2009 +eyr:2017 ecl:grn hgt:183cm iyr:2015 + +ecl:brn eyr:2029 hcl:#866857 iyr:2020 hgt:180cm byr:2001 +pid:668021168 + +hcl:#c0946f +eyr:2024 ecl:amb pid:013487714 byr:1965 hgt:172cm cid:320 iyr:2020 + +eyr:2025 pid:115479767 hcl:#866857 ecl:oth +hgt:163cm iyr:2010 byr:1999 + +byr:1967 iyr:2011 cid:112 hcl:#733820 +eyr:2040 ecl:grt +hgt:66 pid:804536366 + +hgt:163 pid:1764836278 eyr:2035 +iyr:2021 +hcl:z ecl:#f1bb27 + +hcl:#efcc98 hgt:176cm byr:1994 pid:590539278 ecl:grn iyr:2011 eyr:2021 + +iyr:2017 eyr:2024 hgt:167cm hcl:#b62e29 pid:495674801 +byr:1970 ecl:brn + +hgt:168cm pid:993244641 +byr:1968 +eyr:1926 +hcl:#b6652a ecl:brn +iyr:2023 + +hgt:63in hcl:z pid:594070517 +eyr:2021 ecl:oth +iyr:2017 +byr:2000 + +eyr:2030 pid:272955042 cid:319 iyr:2011 ecl:amb byr:1999 hcl:#888785 hgt:158cm + +eyr:2025 +pid:814305816 byr:1945 ecl:brn hgt:162cm iyr:2018 +hcl:#a97842 +cid:229 + +byr:1996 eyr:2026 pid:582584802 hcl:#c0946f iyr:2020 ecl:grn +hgt:162cm + +eyr:2027 +hgt:155cm byr:1925 +hcl:#888785 +cid:182 +iyr:2014 ecl:brn +pid:250884352 + +hgt:173cm cid:135 +iyr:2017 pid:661330507 byr:1950 eyr:2020 ecl:gry hcl:#18171d + +pid:208932950 +eyr:2030 hgt:179cm +iyr:2013 +ecl:oth +byr:1981 +cid:58 hcl:#6b5442 + +hcl:#f183e7 iyr:2014 +hgt:159cm pid:614579850 ecl:gry eyr:2029 +cid:186 byr:1962 + +eyr:2027 hcl:#db3405 byr:1938 pid:194516631 cid:167 hgt:177cm ecl:oth + +hgt:68in hcl:#733820 pid:228644594 eyr:2030 ecl:gry iyr:2010 cid:334 byr:1951 + +iyr:2017 hcl:#341e13 +pid:#6a28c9 hgt:154cm ecl:gry +byr:1966 eyr:2023 + +pid:250155574 cid:84 +hgt:157cm ecl:grn byr:1937 iyr:2017 eyr:2024 hcl:#b6652a + +pid:831823039 eyr:2028 iyr:2015 ecl:gry +hgt:192cm cid:137 byr:1922 +hcl:#6b5442 + +hgt:193cm byr:1941 eyr:2024 cid:56 +hcl:#623a2f ecl:amb +pid:351293754 iyr:2016 + +byr:1947 iyr:2012 ecl:hzl hcl:#602927 eyr:2028 pid:252010138 hgt:152cm + +hcl:#a97842 pid:801192586 ecl:hzl iyr:2018 hgt:193cm byr:1928 cid:323 +eyr:2028 + +hgt:151cm +pid:756347561 ecl:hzl +eyr:2024 cid:161 +iyr:2016 hcl:#623a2f +byr:2002 + +pid:648012871 iyr:2015 ecl:blu +eyr:2025 hcl:#623a2f byr:1973 hgt:177cm + +byr:1999 hcl:#ceb3a1 cid:345 eyr:2025 ecl:#b29a96 pid:093304949 +iyr:2017 hgt:93 + +hcl:#b6652a +iyr:2018 ecl:grn +byr:1951 pid:077278028 eyr:2024 hgt:62in + +hgt:164cm pid:410770618 byr:1958 +iyr:2019 +eyr:2030 +ecl:gry hcl:#fffffd cid:293 + +ecl:grt +eyr:2039 +hcl:z pid:188cm byr:2022 +iyr:2027 hgt:76cm + +ecl:grn iyr:2012 hgt:150cm eyr:2024 +byr:1926 pid:954310029 cid:64 +hcl:#fffffd + +ecl:oth eyr:2027 pid:091152959 hgt:180cm hcl:#ceb3a1 iyr:2015 cid:350 +byr:1924 + +iyr:2017 hcl:#49a793 eyr:2021 cid:144 byr:1966 +pid:717543257 +hgt:161cm +ecl:hzl + +eyr:2025 ecl:brn hgt:60in pid:391973520 byr:1928 cid:77 +iyr:2012 +hcl:#602927 + +iyr:2013 hgt:161cm pid:784483994 byr:1991 +hcl:#cfa07d +eyr:2024 ecl:grn + +ecl:hzl iyr:1967 byr:2009 cid:265 hgt:180in pid:168cm +eyr:1966 + +eyr:2024 iyr:2019 pid:534453983 +byr:2028 ecl:oth hcl:#341e13 hgt:193cm + +eyr:2029 iyr:2010 hcl:#623a2f ecl:gry hgt:152cm pid:572128647 +byr:1996 + +iyr:2014 byr:1981 cid:176 +ecl:grn hgt:183cm pid:974469723 eyr:2027 + +eyr:2029 pid:233353682 byr:1968 +ecl:gry hgt:181cm iyr:2011 +hcl:#efcc98 + +hgt:61 iyr:2005 cid:203 ecl:gmt pid:157cm hcl:z +byr:2013 + +iyr:2020 +byr:1923 ecl:blu eyr:2026 pid:069770502 hgt:69cm +hcl:z + +byr:1997 hgt:160cm +hcl:z iyr:2021 eyr:1920 pid:9374226872 + +ecl:hzl eyr:2024 pid:537492791 hgt:186cm byr:1952 +hcl:#cfa07d +iyr:2020 + +hgt:73cm byr:1974 +ecl:xry iyr:2016 cid:133 +hcl:e741f5 pid:186cm + +pid:161cm +byr:1950 +eyr:2028 ecl:hzl hcl:#7d3b0c +iyr:2014 hgt:158cm + +ecl:#2c491e +hcl:f8fe13 byr:2022 +hgt:137 iyr:1948 +eyr:2040 pid:#959a0f + +byr:1923 hgt:70in +pid:904825661 hcl:#b6652a iyr:2010 eyr:2020 +ecl:oth + +iyr:2013 +ecl:blu pid:858020233 byr:1950 hgt:61in + +hcl:#18171d +iyr:2016 +ecl:amb pid:613754206 byr:1975 hgt:164cm eyr:2025 + +byr:1938 +iyr:2017 hcl:#623a2f cid:191 eyr:2027 hgt:174cm pid:287108745 ecl:amb + +iyr:2025 hcl:#623a2f byr:2019 hgt:170cm +cid:233 pid:55323151 ecl:amb eyr:2037 + +ecl:amb +hgt:177cm hcl:#b6a3ce eyr:2025 byr:1967 pid:506927066 +iyr:2018 cid:93 + +byr:1964 hgt:173cm eyr:2030 cid:106 pid:587635596 iyr:2012 +hcl:#fb5993 +ecl:hzl + +ecl:lzr pid:190cm hcl:44746d eyr:1955 hgt:66cm iyr:1990 byr:2003 + +ecl:brn byr:1968 cid:216 hgt:181in hcl:#b6652a iyr:2016 eyr:2020 pid:0208311541 + +ecl:hzl hgt:181cm +eyr:1977 byr:2018 pid:527754216 hcl:#c0946f + +ecl:grn hcl:#efcc98 +byr:1935 eyr:2025 iyr:2018 hgt:65in pid:396444938 cid:293 + +hgt:64in ecl:oth +hcl:#18171d +pid:105602506 byr:1973 +eyr:2022 +iyr:2014 + +eyr:2039 hgt:64 +ecl:#ab45a8 byr:2009 +iyr:2025 pid:182cm hcl:d1614a cid:103 \ No newline at end of file diff --git a/src/main/resources/2020/day5.txt b/src/main/resources/2020/day5.txt new file mode 100644 index 00000000..82c6a7c9 --- /dev/null +++ b/src/main/resources/2020/day5.txt @@ -0,0 +1,774 @@ +FFFBFBFLRR +FFBBFFFRLL +FBFBFFBRLR +FFFBBFBRRL +BFFFBBFRRL +FFBFBFFLLR +FBFBBFFRLL +FFBBFBBLLL +BFFFBBFLLR +FBBFFBBRLR +FBFBBBBLLL +BFFBBBFLLR +BBFFBFBLRR +FBBBFFBRRL +FFFBFBBLRL +FFBFBFBRLR +FBBBBFFRRL +FBBBBFBLLR +BFBBBBFRRR +BFBFFBBLRL +FBBFBBFRLL +FFBBBFBRLR +FBBFFFBRLL +FBFBBFBLRR +FFFBBBFLLL +FBFFBBFLRL +BFFFBFFLLR +FBFBBBBLRL +FBBFBFFRLR +FBFBBBBRLL +FFBFFBFLLR +BFFBFFBRLL +FBBBBFFLRL +BFFBFBBRLR +FFBFFFFLLR +BBFFBBFRLR +BFBFBBBRRL +BFFBBBBLRR +FFBBBBBRLL +FFFBBFFRLR +BBFFFFBLRL +BFBBFBFRRL +BBFFBBFRRL +FBFFFFBRLR +FBBFBBBRLR +BBFBFFFLLL +BFBFBBBRLL +BFFFFFFLRL +FBFBFBFRRR +BBFFFFFLRR +FFFBBFBLLR +FBFFBFBRLL +BFBBFBFLLR +FFBFBFFLRL +BFBFFBFRRR +FBBBBBFRLR +FBBFFBBLLR +FBFBBFFLRL +FBFFFBFRRL +BFFBFFFLRR +FFBFBFBLRL +FBFFBBBLRR +BFBBFFFLLR +FBFBBBBRLR +FBFFFBBRRL +FFFBBBFRRL +FBBBBBBLRR +FBBBFBBRRL +FBBBFBBRRR +BFFFBFBLRL +FBBBFFBRLR +BFBFFFBRRR +BFBBFBBLRL +BBFFBBFLRR +FFFBFBFLLR +FFBBBBFRRL +BFBFBFFRRR +FBFBBBBRRR +BFFFBFFRLL +BFBBFBBLLL +FBFBFBBRLR +BFFFBFBRLL +FFBBFFBRLL +FBFFBBFRLL +FBFBFFFRRR +FFBFBBBLLL +BBFFBBBLRR +FBBFFBBRLL +BFFFFFBRRL +FBBFFBFLLL +FBFBFBFLRL +BFFFFBBLRL +BFFBBFBRLL +BFBFFBFRRL +BFBFFFFLRR +FBFFFBFRRR +BBFFBBBLLR +FBFBFBFRRL +BFFBFBBLRL +FFFBFBBRLR +BBFFFBFLRL +BFBFFBFLLR +BBFFBFBRRL +FBBFFFBRRL +FFBFFFFLLL +BFBFBFFLLL +BFBFFFBLRR +FBBBFFBLRR +FFBBFFBLLR +BBFFFBBLRR +BBFBFFBLRL +BFFFBBFRLL +FBFFBFFRRR +FFBBBFBLRL +FFBFBFFRRR +BFFFFFFLLR +BFFFFBBRRL +FBFBBBFLRL +BFFFFBFLRL +FBFBBBFRLL +FFBFBFBRRR +FFFBFBBRRR +FBBBFFBRLL +FBFFBBFRLR +FFBFBBFRLR +FBBFFFBLLL +BBFFBBBRLR +FBBFFFFLRR +BBFFFBFRLL +FBBBBBBRLR +BFBBFFBLLR +BFBFBBBLRR +FFBBFBBRLL +FFFBFBBLLL +BFBBBFFRLR +FBFBFFFLRL +BFFBBFBLLR +BFBBFFFLRL +BFBBFFBLRR +FBFFFFBLRL +FBFBFBFLRR +FBBFFFFLRL +FFBFBBBLLR +FBFBFBBRRR +BFBBBBFLRL +BFBFBFBLRL +BFFBFBFLRL +BBFFFFBRRL +FFBFFFBLRR +BBFBFFBRRL +FFBBBFFLRR +BFFBBBBLRL +FBBBFFFLLR +FFFBBBFRLR +BBFBFBFLLR +BFBFBFFRRL +FBFBFFBRRR +FBFFBFFLRL +FFBBFFFLLL +BFFBBFBLLL +BBFFFFFLRL +FFBFBBBRRR +FFBFFBFLLL +FFBBBBFLRL +FFBBFFFRLR +BFBFFFBLLL +FBFFFFFRRR +FBBFFBBLRL +BFFFFBFRRL +BFFFFBFRLR +FFBFBFFRLL +BBFFBFFRRL +FBFFBBBRRR +FFBBBFFRRR +BFFBBBBRLR +FFBBFBBRLR +BFBBFBBRLR +FBFFBBBLLR +BFFFFBBLRR +FBBFBFBRRL +FBBFBFBRLR +FBBBBFFLRR +FBFFFFBLRR +FFBFBBFLLL +FBBFFBBLRR +FBFBFFFLLL +FBFFFBBLRR +FBBFBFFLLL +FBBBFBFRLL +FFBBFBBLRL +BFBFFBBRRR +BFFBBBBLLR +FBFFBFBLRR +FBBBBBBLLR +FBBFBBFLRL +BFBFBFBRLR +FBBFFFFRLR +BFFBFBBLLL +BFBFFFBRLL +BFFBBBBRLL +BFBFBBFLLR +FBFFBFFRLR +BFFBBFBRRR +FBBBFFFLLL +BFFBFBFRRL +FBFFBFFRLL +FFBBBFFLRL +FBFFBFFRRL +BBFFBFBRLR +FBBFBBBRLL +FBFBBFBRRL +FBFBBFFLLR +BFFBFFBLRR +FFBBFBFRRR +BFFBBBFRRL +FFBFBFBRRL +BBFFBFFLLR +FBBBBFFLLR +FBBFBFBLLL +BFBBBBFRLL +FFBBBBFLLL +FBBBFBBRLL +BFFBFBFLLR +FBFFFFFLLR +FBBFBFBRLL +FBFBBBFLLR +FBFBFBBLLL +FFFBBBBLLR +FFBBBBFRRR +FBBFFFBLRL +BBFFBFBLLR +BFBBFFFRLR +BBFBFFBRLL +BFBBBFBLRL +BFBBBFFRRL +FBFBFFBRLL +BBFBFFFLRL +BFBFBFBRRL +BFFFBFFLLL +FBFFFFFLLL +FBFBBBBRRL +FBFFBFBRRL +BFBFBFFRLR +FBFBFFFRRL +BFBBBBFLLR +FBBBBBFLRL +FBBBFFBLLL +FBBBFFFRRL +BBFBFBFRRR +FFBFFBBRRL +FFBFBBFRRR +BBFFFBFLLL +BBFFBFBRRR +BFFBBBFLRR +FBFFFFBRLL +FBFFBBBLLL +FFFBBBFLLR +BBFBFFBLLL +FBFBFBFRLR +BFBFBFBLLL +BBFFFFBRRR +FBBBBFBRRR +FBFFFBBRLR +FFFBBFFLLL +FBBFFBFLRR +BFFFBBBRLL +FBBFBFBLRL +FFBFFFFLRL +FFBFFFBLLR +FBBFBBBRRL +BFBBFBFRLL +FFBBBBBLRR +BFFBBFFLRR +FFBFFFBRRR +BFFFFFFRLL +BFFBFFBRRR +FFFBBBFLRL +FFBFBFBRLL +BBFFBBBRRL +BBFBFFFRRR +BBFBFBFLRL +FBBFBBBLRR +FFBBFBFRLR +BFBFBFBLRR +FFFBBBBRRL +BFFFFBBLLL +FFFBBBFLRR +FFBBFFBRRL +FBFFBFFLRR +FBFFBBFRRL +BFBBFBBRRL +BBFFBFBRLL +FBBFFFFRRL +FFBBFFBRLR +BBFFFFBRLR +BBFBFBFRLL +FBBFBBBRRR +BFFBBBBRRL +BFFBBBBLLL +BFBBFBBRLL +BFFBBBFLRL +FBFFBFBLRL +BFFBBFFLLL +BFBFBBFRLL +FBBFFFBRRR +FFBFFBFLRL +FFBFFFFRLR +BFBBFBBLLR +BFBFBFBRRR +FBBFFFFLLR +FFBBFBBRRL +BFFBFFFRRL +FBFBBBFRRL +FBBFFFFLLL +BFFFFFFRRL +BFBFFFBLLR +BFBBFFBRRR +BFFBFFFLLR +FFBBBFBLLL +BFFBBBFLLL +FBFFFBBRRR +FBBBBBFLLL +BFBFFFFRRL +FFBBFFBRRR +BFBFBFFLLR +FFFBFBBLLR +BFBBFFBLRL +FBFBBFFRRR +BFBBBFFLLR +FBBFFFBLLR +BFFFBBFLRR +BFFFFBBRLR +FBFFFBBLRL +BFBBBFBLRR +FBFFBFBLLR +BFBBFFFRLL +FFBBFBFLLL +FFBFFFBRRL +FFBBFBBLRR +FFBFBBFLRL +FFFBBFFRRR +BFBFFBFLRR +BBFFFFBLRR +FFBFBBFLRR +FFFBBFFRLL +FBBBFBBRLR +BBFFFBBRRL +FFFBFBFRRL +FBBBBBBRRR +FFBBBFBLRR +FBBFBFFLRL +FBBBFFFRRR +FBBFFBBRRR +BFFFFBBRRR +FBBFFBFRLR +BFFBFBFRLR +BFBBBFFLRR +FFBFFBFLRR +BFBFFFBLRL +BFFBFBFRLL +FBBBBFBLLL +BBFBFFFRRL +FFBBFFBLLL +FFBFFBBRLR +FFBBBFBRRL +FFBBFFFLRR +BBFFBFFLRR +BFFFBFFRRL +FBFBBFBRRR +FBFFFBFLRL +BBFBFFBLRR +BFFBFBFRRR +BFFFFFFLLL +FBBBFFBLRL +FBBBFBFRRL +BFFBFFBRLR +BFBBBFFRRR +BFFBFFFRRR +FFFBBBBLLL +FFBBBFBRRR +FFBBFBFLLR +BFBBBFBLLL +FBBFBBBLLL +BBFBFBFLLL +BFBBBFBRRR +BFBFBBFRLR +FBFFBFBRLR +BFFBFFFRLL +BFBBFFBRRL +FFBBFBFLRR +FFBBBFBLLR +BBFBFFFRLR +FFBBFBBLLR +FBFFFBBLLR +FBBFBFBLLR +FFBBFBFRLL +BFFFFFBLLR +BFBFBFBLLR +BFBBFFBLLL +FBBBBFBLRR +BFBBBBFLLL +BFFBBFFLLR +FBFBFFFRLL +FBBBBBFLLR +BBFBFFBLLR +BFBFBFFLRR +FBBBBFFRLR +FFFBFBBRRL +FFFBBFBLLL +BFBBBBFLRR +BFBBBBBLRR +FBBFBBFLLL +BFFFBFBRLR +FBBFBFFLRR +FBFFFBBRLL +BFFFFFBRRR +BFFBBBFRLL +FFBFBFBLLL +BFBBFBFLRL +FBBBBFFLLL +FBBFBFFRRR +FFFBBBBRLR +BFBFBFFLRL +FFBBBFFRRL +BBFFBFFLRL +BFFFBBBRRL +FBFFFFFLRL +BBFFBFFRLL +BFFFBBFRLR +BFBFFBBRLR +FBFBFBBLLR +FBBFFBBRRL +BBFFBFFRLR +FFBFFBBRRR +BBFFFBBRLL +BFBFBFBRLL +FBFBBBBLLR +FBFBFBFLLL +FFBFBBBLRL +BFFBFBBLRR +BBFFFFFRRR +FFFBBFFLRL +BBFFFBFLRR +FFBFFBFRLL +FBFFBBFLLR +FBFFFFBLLR +FFBBBBFRLL +FFFBBFFLRR +BBFFFFFLLL +BBFBFBFLRR +FFBBBBFRLR +BBFFFBBLLL +FFBFBBFRLL +BFFFFFFLRR +FFBFFFBRLL +FBFFFFFRRL +BBFFFBBLLR +FFFBBFBRLR +BFFBBFFRRL +FBBBBFFRLL +BFBBFFBRLR +BFFFBFBLRR +BFBFFBBLLR +BFFBFBBRRR +BBFFFBFRRR +FFBBBFFRLL +BFBBFBBRRR +FFBBBBBRLR +BFFFBBBRLR +BFFFBBFLLL +FFBFFBBLRL +FFBBFBFLRL +FBFBFBBLRL +BFFBBFBRLR +FBBBBFBRRL +FBFBBBFRRR +BBFBFFBRRR +BBFBFBFRRL +FBBBBFBRLL +FBFFFBBLLL +BFBFBBFLLL +FBBBBFFRRR +FBBFBBFLRR +FFBFFFFRRL +FFFBFBFRLL +FBFBBFBRLR +FFBBBFFLLR +FBFFBBFLLL +FFFBBBBRRR +BFFFFBFRRR +BFBFFFFLRL +FBFBFFBLLL +BFFBBBBRRR +BFFBFBFLLL +FBFBBFFLLL +FBBFBBFLLR +FBBFBFFLLR +BBFFBFFRRR +FBBBBBFLRR +FFBFBBBRLL +FBBBBBBLLL +BFBBFBBLRR +FBFBFFFRLR +FFBBBBBRRL +FBFFFFBRRR +FBBFFBFRRR +FFFBBBBRLL +FBBFFFFRRR +BFFBFFBLRL +FFFBBBBLRR +BFBBBBFRRL +BFFFFBBLLR +BFFFFFFRLR +BFFBBFFRLR +BFFBBFBLRL +BBFFFFBLLL +BFFFFBBRLL +FBBFFBFRLL +FFFBBFBLRR +BBFBFFBRLR +BFFFBBBLRL +BFBBFFFRRL +BFBFFBFRLL +BFFBFBBRRL +FBFFBFFLLL +BFBBFFBRLL +BFBBBFFLRL +FFFBFBFRLR +BFFBFFBLLR +BBFFFFBLLR +FFBBFBBRRR +FBBFBBFRRR +FFBBBFFLLL +BFBBFFFLRR +FFBFFBFRRR +FBBFBBFRLR +FBFBFFBLRL +BBFFBFBLRL +BFFFFBFLRR +FBBBFFFRLL +FFFBBFFRRL +FFBFBFFRLR +FFBBBBBLLR +BFFBBFBRRL +BFFBFBFLRR +FFFBFBBRLL +FBFBBBBLRR +BFBFFFBRRL +FFBFBBBRRL +FFBFBFFLRR +FFBFBFBLRR +BFFBBFBLRR +FFFBFBFLRL +BFFBFBBRLL +BFFBFFFRLR +FFBBFFBLRR +FBBBBBFRLL +FBFBFBFRLL +BFBBBBBRRR +BBFBFFFLLR +FFBFFFFRLL +FFFBBFFLLR +BFBBFFFRRR +FBBBFBFLLR +BFBBBBBRRL +FBBBBBBLRL +FBBBFBFLLL +BFFBFFBLLL +BFFBFFBRRL +FBFFBFBRRR +FBFBFBBLRR +BFFFBFFRLR +FBFBFBBRRL +BFBBBBBLLL +FBFFBBFLRR +BBFFFBBRRR +FFFBFBBLRR +FBBFFBBLLL +BFFFFFBRLL +BBFBFBFRLR +BFFFBFFLRR +FBFBFFBLRR +BFBBBFBRLR +BBFFBFBLLL +FFBBBBFLLR +FBBBFBFRLR +FBBBBBFRRL +FBBBFFBRRR +FFBBBBFLRR +BBFFBBBRRR +BFFFFBFLLR +FBFFBBFRRR +BBFFFFFRRL +BBFFBBBRLL +FBFFFFBRRL +FBFFBBBLRL +BFFFFFFRRR +BFFFBBBLLR +FBFBBFBLRL +BFBFBBBLRL +FFBBFBFRRL +FBFFBBBRLR +BFFBBBFRLR +FFBFBBBLRR +BFFBFFFLLL +FBBBFFBLLR +BFBFBBFRRL +FFBFFBBLRR +BBFFFBBRLR +FFBFFBBRLL +FBFFFFFRLR +FBBBFBBLRL +BBFFFBFLLR +FBBFFFFRLL +BFFFBBFLRL +BFBBBBBRLR +BFFBFBBLLR +FFBBFFBLRL +BFBBBFBRLL +BFBBFBFRRR +FFBBFFFLRL +FFBFFFBLLL +FFBFFBBLLR +BBFFFBFRRL +BFFBBFFLRL +FBBFFBFLRL +BFFFBBBRRR +FFBBFFFRRL +FFBFBFFRRL +FBBBBFBLRL +BBFFBBFLLR +FBBBBFBRLR +BFBFFBFRLR +FFBFFBBLLL +FFBBBBBLLL +BFBFBBFRRR +BBFFFFFRLL +FBFFFBFRLR +BFBBBBFRLR +FBBFFFBRLR +BFFFFFBLRR +FBFFBBBRRL +FBBBFBFLRL +BFFFBFFLRL +BFBFBBFLRR +BFBBFBFRLR +FFBFFBFRLR +BBFFFBBLRL +BFBFFBFLLL +BBFFBBFRLL +FBBBBBBRRL +FFBBFFFLLR +FFFBBBBLRL +BBFFBFFLLL +FBBBFFFLRR +FBFBFBFLLR +FFBFBFFLLL +FFBFFFBLRL +BFBFFBBLLL +FBFBFFFLRR +BBFFBBFLRL +BFFFBFFRRR +FBFFBBBRLL +FFFBBBFRLL +FBFFFBFLLL +BBFFFBFRLR +BBFFBBFLLL +BBFBFFFRLL +BBFFBBBLLL +FBFBBFBLLL +FBBFBBBLRL +FBFFFFFLRR +FBFBBFBRLL +FFFBBFBRLL +FBBBFBFLRR +FBFBFFFLLR +FFBFFFFRRR +BFFBBFFRLL +BBFFFFBRLL +BFBBBFBLLR +BFBBFBFLLL +FBBBBBFRRR +FFBFBBBRLR +BFFFFBFLLL +BFFFFFBRLR +BFBFFFFLLL +BFBFFBBRRL +FFBFFBFRRL +FBBBFBBLRR +BFBFFBFLRL +FBBBBBBRLL +FFFBBFBLRL +FFBFBBFLLR +BFBFBBBLLR +FBFBBFFRLR +FBFBFFBLLR +BBFFBBBLRL +BFBFFBBLRR +FFBBFFFRRR +FBFBBBFRLR +BFBBFBFLRR +FBBFBFFRRL +FBFBBFFLRR +FBBFBFBRRR +FBFBBBFLRR +BFBBBBBLLR +FBFFFBFLLR +FBFBBFBLLR +FFBFFFFLRR +BFBFBBBRLR +FBFFFFFRLL +FFBBBBBLRL +BFBBBFFLLL +BBFFFFFLLR +BFFFBBFRRR +FBFBFFBRRL +FFFBBFBRRR +FBBBFBBLLR +BFFFFBFRLL +BFBFBFFRLL +BFBFBBFLRL +FFBBBFFRLR +BFBFBBBLLL +BFFFBBBLRR +BFBBFFFLLL +FBFBFBBRLL +BFFFFFBLLL +BBFBFFFLRR +BFBFFBBRLL +FFBFBBFRRL +FBFBBBFLLL +FBFFFFBLLL +FBFFBFFLLR +FBBFBBFRRL +BBFFBBFRRR +BFFFBFBRRL +BFBFFFBRLR +FBBFFBFLLR +BFBFFFFRLL +BFBFBBBRRR +BFBFFFFRLR +FFBFBFBLLR +FBFFFBFLRR +FFBBBBBRRR +FBBFFFBLRR +FFBFFFBRLR +BFFFBFBRRR +FBBFBBBLLR +BFBBBBBLRL +FBBBFFFLRL +BFFBBFFRRR +BFBBBFFRLL +BFBFFFFLLR +BFFBFFFLRL +BFBFFFFRRR +BBFFFFFRLR +FBFFFBFRLL +FFFBBBFRRR +BFFFBFBLLR +FBBFBFFRLL +FBBBFBBLLL +BFBBBBBRLL +BFFBBBFRRR +FFFBFBFRRR +BFBBBFBRRL +FBFFBFBLLL +FBBBFFFRLR +FBFBBFFRRL +FBBFFBFRRL +FBBFBFBLRR +BFFFFFBLRL +FBBBFBFRRR +BFFFBBBLLL +FFBBBFBRLL \ No newline at end of file diff --git a/src/main/resources/2020/day6.txt b/src/main/resources/2020/day6.txt new file mode 100644 index 00000000..7fdecb77 --- /dev/null +++ b/src/main/resources/2020/day6.txt @@ -0,0 +1,2262 @@ +gqraplu +jmwftidynvozkhe + +cbhejsplztndvig +duzpteclshfgbinvj +zvbhdtnigplsej +ztsbdixmegljhnvapy + +syrulqjamnixpwz +yrjinauqxlz +yrazqnujxli +zlnorxjiayqhu + +n +gn +n + +yx +oxh +fx + +joewxkpzyvldqfricsn +xqfsnyevltrmcdpiwz +pvyxdlnzcqwrseif +cagnvpqwfbzxuyreidl + +lqbpai +quplimxcojkrt + +sziyc +lsvkuhei +kctsidr +xkmousi +sbjnqgafwi + +ur +nu +u +u +u + +kgehjantorqdumzfwpivlb +dvziasuthgmplfwnrqok + +ejo +zs + +fgbmsua +gimuqbfv +lfzugbm +uvbfmgp +iagmbpfhu + +bqntdexkfvpwl +evjblkfxcduyn +trmxfbvklynz +svginkxflabh + +gdtafy +dtygafo +dagfyt +ydaftg +gdatyf + +ygwkouhpmqseb +plokghuzxwybeam +hncokugxmbpsye +ogfkejuvbmyhp +hmpnlcregoukqysb + +qgm +xhgjcpmt +elswfzdgvnoyiu +mgx +kagbr + +jxiaofcy +vrtpbkhles + +d +d +d +n +d + +yidoljquknxpeaz +jxevznrpdlkqsiumao +opilqzajdxnemukr +hewjdganufopkizxlqb + +prwydlbnkhgoqvsxmafeuj +hwegbjqxrlmfpvysnakduo + +ntdzifwmhxkcpg +gmciznhtu + +bvrcmgo +gvbrcom +movrbgc +vrmobgc + +uq +qeu +yequ +qpbumck +nqu + +m +wlgkmze +m + +ytazsmxvhpw +wphytzvax +zaxwyfthvpc +aphzswtxvyok + +xmd +xmd + +q +u +u +y + +nrwzuibkxy +yjekmus + +iah +liah +hapimu +auhi +whtia + +waxngytpedkcohu +nicsaypkvztwujleofxrh +qhopntywekxabuc +cpawenqyokthxu + +ztpgmojkuasni +tkgipajonszum +snzpkiaugmojt +uzniostakjpgm + +uvlxwrgyb +unywtravxlg +frglqxuiwy + +hnybo +nhyo +onhy + +qbiayve +tbmrhxc + +ifgubhacvkwndempsqyto +oeikgsmwvathyfqupzdnrb +aopbwqgtxfeikhvsdnumy + +sdcoulxfwkyh +ylshkufxod +kdptsfuohvxly + +lpinkvcmbjgfzstoyr +yonrjzpktmfbisc +ifkzmcopsrybtjn +zscptibfykromjn + +djfzwn +lsvbyqth +cfxed +dnzgw + +ukbx +bh + +mrxewvdultgp +pkwvlgjtmxid + +pax +xa +rjlxa +axp + +blpq +uyfaqwbpls +lnbqp +qplbzn +bnqpl + +viezwmdhxnbpcuq +snwlzhdycvbikqpu + +xjoarpudhzcqvbklsf +puqhzfxcraobkvsdl +svalkqorzuhxndcpfb +zqhkvusbcoalprfdx + +qrav +qrav +avqr +avqr +vqar + +mgizycqbaksjofwtdphn +qshodcwfbygpmtikjna +gbhdawmjyofsqtnckpi +mgufwjpithybodqscnak + +drkwnmigxc +xndwkrmi +kdxranwim +krxdwiynm + +nzvgidp +dzvpig +vzgdp +vpgdzh +pvzgd + +owzvyrsqlaefxut +afslqrywvueoztx +wzxqartvuioyelsf +evqlwzxustarfyo +zetoqsulxyfvawr + +rvydefukzonxmshw +yhxenwmdvsfz +hnzwxivsmdfbey + +hzqkpmrgeldniwo +nelihzrkpwmgdoq +zhdixrmpownegqbkl +lpjkgzhnurwymodesiq +hrgevlonqmbcdzikwp + +zmxskldyfobp +efwzjdyok +zyihvutofadk +dokzeryfgc + +inbs +bsni +snib +sbni +inkbs + +kuhimvsfetnobjayzrxpclq +mpyqbtfncerkujzlivaxhos +khxmojcyuvpqrbitlafzesn +yjckvrfontsphzabmleuixq +lhpjmaefbnkyciuortsqxzv + +zrlyvkgwsinbteaxcuqdmf +sqnagelwkbydrxtmufcizv +dicxqvlgoenabwrtkufsymz +exvqrkmulnsayzbwdcfgti +vkgulsxywafinecrbtzdmq + +whpx +hwpxtme +nwrvhpx +hpwx +rwxhp + +q +vz +q +x + +wyaum +ouzj + +nrqsahcif +bnia +nzia + +neditjrwlm +ncovfirzdl +qrhabpxkus + +ypbtzriv +dsgj +bfk +nq + +xuegjwzf +xbjonevumgf + +stxl +tsl +lstyf + +vcpja +pjacv +cvajp +jyacpv + +hurbisxv +vrusibhwx +khxiqsbturgl +szbahofeinjurx + +cdgbs +smpb + +nxapgmhuise +hlgafojqykxpwuv +rbhigaceuxmp + +ia +ia +ia +ia +ai + +romdclz +sbpyaqjeicfxwv +ogdhrcun +dklct + +bwpjlzmakrhtgcyd +lywtdgmrpzahkcj +zcywdpokjahmgrlt +thkcypzljgfadrmw +ahtdmzlrygpjfkcw + +lqozhpxswn +aegvhkjo + +mvrhzutxkewbyfdnqjgoics +efnzyojvstdhgqrcxwukbim + +eiqctujxmbovyapflhsnrd +amlunxrvdkpswzfcyoebqjti + +ftmj +fxntmhgzyva +rpamxuvse +trsxyfbg +wdcqkoli + +xsovbqdiaztnm +mjospzaqdcbvlyixn +obdqizsmavnx + +lyqonstrvwk +oswnltrkqvy +oqvlnkyswtr + +pzyxdkcb +msuyp + +jbtfnimyhgeau +ubjenfatihg +ipheugjnatbf + +bohtinfxd +whiofqdx +ifjgmrdeco + +i +i +i +ji +i + +ojvu +juv +ujv +jvu +ujvn + +qvjyraeugi +jaigryeuqv +auirgyvejq + +l +l +l +l + +wcvneqijzlu +jpfmawgnrts +tndmxhwjo + +ikybgcsdhfjqewramz +zdyiuchgwkreqbjafxp + +hwxbvmodf +vwfmbxdoh +bovxmfdwh +hofvwmdbx +wodvfbmxh + +kvqer +kverq +vqrke +kevqrmg + +lmcprdquzfojbwg +uzdljoqrphgcbfm +rpmnvlucjgzbfdqox + +anevrywoscfgmd +pkorawscmf +rcumfipoaws + +udfjiq +urqvjitfd +jfduqi + +al +l + +hqmtedniw +tnqdihmwez + +y +qy +y +ley + +ph +hp + +czogpbqrswyemujkdxvh +hbycpwtxueksovzrdgmnqj +ukoegrcvsbpwqymdjhxz + +ihly +nyd +vydw + +sjvkuolzixacqnbfm +milvqkuzfaxbjcnos + +vptqewkl + +jitqrhcebp +hmdjfebzynqoic +jehbiqsxcvw + +yvejfgpdhwr +sclkjzqgdaitbx + +molycdpuqtezsaikfgb +rawhmiuxgbsjkqpftzceyldo +ykpfmgcadezvsqtuboil + +cfy +fyc +fycjz +ycf + +nvgokp +dvlrym +vbxq +viec + +tshpkilmfn +rahptloqnmwze +hcdtgmlpjn + +warkbezshofylgpvc +smfyaicelhvpk +chpnfkyeaxqvsluj +hcqpatlmdvsfkyei + +mdvxgrpbnaeohkitc +cmkixqptgeo +mflsxckyzgjpuoe +pmdcxqevkorg + +jsqdlxcmrnkahgwipfeuz +zmbjurenytxsaglqpvfwhkic +ipxjszkgrwdhufaqcelnm +kelwzuhjsmxngripqfcda + +qjeilf +li +mswnadl + +edlsrkoungwibthcp +skwbtjpcervoldi +fseklbitcpomwqr +ktcprsbzweihol + +htdqfkovwjyezu +thobwyfzuldvjem +yvduezhfjtow +eyhwunjzkdvfto +fhejnzdytovwixu + +fwhtnj +hjwfntl +ftujnwh +hbtwjnf + +t +e +t +t +z + +nqxcusyotzefvph +yeocxkiutgmsqf +ckjyemquxsofwtgd + +tmzfevydagckuhqlx +byvufxtmcrlaqzed +upctzjfxaleysmdvq +evcxlnmfdtuyqza +tqoecfdzivxmuyabl + +shgxmojtwil +dzkqounrelcxw +bwfyohxl + +mcvryskujtwfegnqzpoabl +kqviphnbclosfegjw + +cm +cm +icm + +bgaxzljdmnikfwty +inflydazkjwrvmcb +mblkduehjyaqziwfn +ifbmwdjznyxgakol +imfdlwabhkynzj + +jlrwutvxeh +jlrdwhtvxeu +rjkhluwetxpv + +lwikdzhvmc +cyredwfnkizs + +gxb +x +x + +yeguzh +zgh +hpzc + +paglzktcsyewuvboq +cgloauxwzvqsyktepb + +y +m +b +b + +jogqmp +imogpj +mgnpjoa + +icgwq +cwig + +piyuamfk +idyufmopea +acfuzgniypm + +ipkmh +ibhklmp +phimk +tihpkm +pcvkhuzmyni + +jugsl +lujh +luyirmj +ljgsu +jlu + +gzbesjik +pzisbjekg +zjksigbe + +mdp +mdcp +omd +xqmwcdp +ikrfdyjlm + +wgdjmfbrntluzkysipq +pfiknrqtbzglyuwjsmd + +wgbfixvksaejo +jph + +wtsyo +ysw +qyl + +ulsbickanygpxqwzhmjf +faqugxicyljwpzhsnkbm + +zhrdfgxw +xgzqfmd +flkjdgxz +yzfcbdxvneg +ndxfgzo + +ilkpncyqfbvorhtwexjds +iaebcyqudfprh +mqefrdbhcpyi +cdrhypiefbgq + +zefqwirsglpjv +hdivwsnqb + +vzcexgstnfk +farxkgzcsbnevt +sfczvtgnxke +txepoknzgsvfc +ksnevtfxcgz + +yrlnqwvpmeiuxt +xqpirlhnymowuv + +xan +jpfa +aczoup +cja +aibgwevkh + +m +sml +opu + +rdbchfwvyamizs +bofxszcamyrjdh +rzsntcpmalgyh + +ftevgjrbkxmnuidsaqz +gexasrutkivfbdzqnjm +dnimrtkeugfzajsxvqb +quaxkivgnjdrtfbzems +qxriuendmbagfjzvkst + +wthspyrxaijgbkzumvolqe +ovrgyukexzmpqjhflwit +tizgwxorvepjkyhlqum +urlwhtzkvjdqgoximype +revuqwpogzimyhlxtkj + +edpukhotxswnb +dstnhbueokwpx + +yhqwopgnutivk +qiotnupkvyw + +znjofavtsgrkh +jvahkzotsfgnr +vhfnrsgtkzoaj +gfathnzrkosjv +tvzfsrkjohnga + +evyutzwhmxdk +zxrmsqvfbiwojpg + +re +ktrhjfiz +c +aldugvpqybnx + +waexnqfbrul +ertydvxu +urxe +echxuor +rxeu + +qtnxbpklyjiw +dmvocgqbp +berqpiuz +hrbkzqp +jrypbsqa + +brhqpmziaxfgle +rwuzlfenmihpg +lfcmprhazeig + +suzhwbrpe +clpusebrwai +pbeasgrofnwu +dvjwstpxqerkymub + +kbouvjnqaysmgrhtwp +szdvbjhwpxygunfomkt +gtkleonjbyhmipvsw + +mub +bmu + +cfhsjuqrin +jfinqcrbshu +nwyjcuflmsrgxdeqhi +fhiucqjrnso + +kdznqiyxu +emzsrpac +cszabv + +idvqsgemlu +sdlmevqu +qlmspeudv + +lo +ol + +zcdu +bcqmdupjzr +luazkdc + +wrju +wuj +jauw +cuwgj +jurw + +sypfjcxmkzh +vrgpzcytm +pcdzmyo +brmwegzynqcp +auzvcpqmy + +qdtxj +dpjq +qluajd + +bgvldaj +cxb +bxc +rubxf + +ziadtsbvuchlofeyjg +oajlevkdyirbtgqc +egldjvaiqtybkcor +litcrbeaojmdvgyx + +itcn +csjftqn +ntwc +tncw + +aqlmydwfn +nwliqmfjca +qwhlmnfa +nfamqlw + +igxtv +gvxt + +dlrkztoe +gbcdeotf +dyeoit +gcdetxo + +yuso +xaesw +zfsy +su + +wq +wq +wq +qxtw +qw + +fynaektqvcbozhdxpuw +wzirdbecylampuqs + +r +wcpazh +pbnyxkt +lgk +evdsiuq + +tshrjadlymb +hrftismyjald +emwljutyarqsdgho +stjxdhrlmapy +tajsdhmlrpy + +amb +jvadbm +fms +ramjv +hgtnqywzmkx + +skmwcopgnfhuab +mpjvx +mrtp +tympq +mp + +j +vjtu +scf +t + +avwomuriqfelzsdnhjybptkg +yeltqzspmdkihnjvuwfgboar + +nhkequsi +huifnmwsqg +mnosihugp +iuyhaslbjvntxr +piuzshno + +rdguywbhevoaf +aojdgvhbrqyew + +dtcipqw +dktic +cetsfid +idctm +citd + +xjnzvmlpi +vduwgtsy + +xfybrjwtkndm +guxtyvfabjn +jetfoqnxplyzi + +brosek +soberk +borsek +skrboxdze + +uadtqoi +itaqud +udqtia + +ijqrfe +ijqe +oqvj + +vernidqwmzpho +wpvzhmoeid +mviodhpzwe + +ikultrxhjoz +kihjlutzx +xihkzlujt +tuixjzhelk +jxhlutzik + +ztnmevyjlbisdfupgkrwq +iaxytmouwljksngh + +ya +y +y +y +y + +dfizts +fvslqiwtc +xdsgzitf +siptfmh +iskrnutyfe + +czlaqjrxoeivgpbsnkym +bxwldzaikpemjfyosqtgvhcrn +sqgaroynvkcbejiuzxlpm + +adtcenfvy +ajmwvsdkf + +hgpyaov +fqnaidbgruokxzhy +oawshgty + +vztswelufacbk +adkfuvmo + +ceqrx +ylgrm +xr +zihukwvrno +rjfm + +c +c +c +c +cy + +nkzfxij +pevkoxydw +uamtrbhlgcsq + +k +vk +xgk +nk +rk + +rokqypnfjm +fvkrpjygnibqmo +mpqykofjrn +fjnpqkmoyr +jqoymprnfkw + +sgpv +pumasyv + +euhbkzytq +khqdzyeno +gsfmzkhjeil + +g +g +g + +xnmucpeqvjizwhklbg +hesokupzcjlrt +uypfachlzejk +ekjuchltdfpz + +pwaefhvgskymuql +pykgwvcsqomhfbnajzeu +reqmsxkgpyfuwvaih +agqumvpyfktshxdwe + +npokjeqbiucfamxyrtw +haglxndtebiqojymwuzfr +iymxjtonrfbweqau +ecwbxyarjmtoqnuif + +wmv +qmof + +lvno +rupsvno +vfon +vdno + +r +rf + +cruektys +ckwuqeltbyr +cektyur + +omwygfcpaliuqvteshzdxn +vqbctzumoikefahdpnwglsx +litasvmxnoeudqgfphzwjc +desovqwhuimxzptngrflac + +zmyebqukpivjhorctsnldxag +snckjqrluyzwihaxmvpdoe + +awtsrxfhc +tiqphvdywaz +ihwta + +rfqnegxpmjtzcihskvab +etmvrxifkqsgjnpbzcah + +nabdje +aezxjn +bnezoa +ean +qrenga + +rlhxpyo +r +mnorl +tgwizrqvcbe +dr + +vpqbjyseizrtn +bljrtepdyqnvszi +zbtrnysjpvqei +bhgyqpvjenrtzis + +hkzcxmwug +wygxkuzm +wumxzgk + +rq +pq +fu +ibzwnx +hr + +duabykztcwnqxmflpse +qxzdpbnfwmstcuakryl +nlbctapxmkzuwdsyqf +dyslfpuwbitqnzxahjckom + +qoacdtzusvixrh +euzrowdtglmcikav + +outyzds +bdlyztwso +kbosyzwedgvjlt + +a +a +a +a +a + +poejxws +jwoexsq +exjsow +oexswj + +iwqaesxpufgmr +uxpwmfsaigq +awmuxpisgqf + +ycxhlrfpmnwtab +rulhtdsf + +jbgewroydxaiqfmkzv +kdvyifqtazmocnws +ktvhwaoiydqmfz +vmdokzqwayif +tkfwaimdzyoqv + +sjqhftbamkzwyorlpve +rsefbmpzhwvkajtqoyl +ajpmbotsqhevlyrwkzf +tmslfhqerjkvgxwayopnzb +tpseohzrvqyjmwlkabf + +rtuekjwpcabm +krbupeminyha + +lcgnpwvkeuaxsqhimzorbydft +hpjksmytlavfzcrundigqboexw +vhpbzfqemyockrxgniadtuwls +yowhvzpldfbtqgsxamcnkireu +kvfbynscmrdaupegltzixwohq + +g +igk +mwfen + +bujfzi +fbj +rfjb + +kzxnlwcj +cyezomtkwlj +cujwlzak +lawjczk +ckwsjlzx + +fwhyzdn +qjhcdaew + +ibrx +uqosfw +xiyre +gixryl + +ck +kcs +ukca +cks + +ex +w +ijmhbvkoe +alhq + +at +ta +uat +ga + +dcgitapjnokhsx +cbrxumnqijlfvozsy + +wfvcx +kop +ygensbhta +crqi +mdz + +dwhcuniof +ihwmnfu +ohnudfwi +kpnirgwjhuef +ihnwufq + +rlga +sparg + +hytsabludcfv +jewgmrznp + +vlmqbx +pwrcexfhkzgyns + +w +w + +av +zvma + +cpjklr +dyvns +a + +yn +ny +gcyn +umznyhv +yn + +wnvsafjgr +wfngjiasrv + +ievwnudhstf +fsuvhtiew +bheutiswvf + +udtnwkbheaf +kucylwvjxiqt + +hljtmwnzcdkrfisv +wdjhtlcnrskivz +wjdvntscexqlripkbzhgay + +bkjmqivtuanscydxp +cwqxidgpvbntusmakjy +tbjkvyaixsdcpmqun + +ftl +e +e +u + +hkjcgexiqbs +kbehocig +higkycoblet +nblicogkeh +gehikzbc + +waingcjboqylezdsu +nmyukizxdbwvoqgcaspf +tyqdnbgcsoujiazrw + +lfchjito +vlutojfcsh + +jovtwiuheqkrdxapcsfgm +cvawpxumglirokdtfqjhs + +kswydazphxc +xwhsayzkncde + +lahity +vfgipmabtyrn +yhidtsa +yati +aitqyh + +d +g + +rphofvxebzy +uzqfyd + +xyowpfhvtdkjersgalzi +bgalejwmkrhycopfvtidsxz +jauyptlhwrvgszfoexkind +rvkihpgyfawtlzdjxseo + +uqbnrhlasgdopwcvfemztkyjix +oafnpqgtdezrwlxkvmhcubsijy + +kgrovfpiatd +sdrxfik +hfibczyekmqrlu + +oydl +dohl +doyl + +bkvnawhqodjcrzpfxtl +lmxcgkfbtqnwyphrouzjvia +twpvoxkhaqzsnjlrfbc + +no +bnix +nabv +tdumsrc +a + +k +qsj +aqjs + +tzfuo +fzvxspjamchgio +fozbq +ozf + +atnxcrdus +rinqbdasxf +caursxdnl +zandsxr + +saryuioetn +apemtnioyr +alotvfiyngerq +ntpaoweruidy + +q +it +c +q + +hzoiptgj +wzpd +hpzdj +bzqkpv + +zsa +za + +ol +o +h + +xf +zndqlyf +fk + +ubaplvgsfqn +vlbqefsgpn +bqlsgnpfv +lbpvqgnsf + +nphoablwjs +hubyic +zfmgibxeh +hdbuyrg + +mtdi +dhntuckim +dtim +sfmeidt +dipxftm + +fxwnjhitovpde +vokwtfjspmedib +gqftcrelpovyzwid +dwepovfitan + +naphmuwlztbxsiqy +brpnyfqxto +dqtrnpykbxe +npdbjtoyxq +dvpqtbxyn + +tlhrgk +tkjh +cxbtov +tjy + +ukjgpahefm +eiajkdwmt +dxawynmebikj + +ozpmc +pmzco +pcmofz +mcpojz +zmovdcp + +szyamqourexh +qesympcalfokh + +fmlotwur +zdgwyiqmnk + +cyeqwlbki +dnufjzstpvhr + +w +w +w + +efzqnjvhplgrmy +bzmovalwqkyjgrxpf +riydsvtqcufp + +tclrg +rlycb +edzkrlc +clr + +ljpfkhrzgmno +zlhpkojfmrnxg +hgprkymfnzljo +dbhrgzklvnpioajtmf + +vybn +vybn +bynv +vnyb +vnyb + +pvakljgcefuyxzwr +uwcevpkflrxjgzay + +d +d +d +d +d + +siy +z +c + +fpusnocme +okum +wmubojtyiazg +lfxrkuqmdo +xoum + +z +i +i + +exoimtjhqap +xzbmulsdo + +nrkvlyhj +rqhjnkyv +nhkeyrvj + +fgdilbrjovqkxe +riknjxmocevudl +koyixrdeljv + +fv +vf +fv +ovf +vf + +e +qcdu +yk +aiwrtg + +aosmzekcfbg +cogzvamfkestxb +wucsqojzbfynrekgmap +mszbokgefalc +cbegakfsomz + +l +lr +l +l + +ipbrflxjntmyzwh +xthbpywzonkidrfj +vxtzirpjbnfwkyh +jbzfaiwtnuxyhgcspr +tkqhyxbnfizpjwr + +idz +ngmuvotyjqlw +fdpbz +bi +sfk + +u +u + +xiwtjalesvy +itsvdehxwy +wzbkiovpnesmxgrt + +hqalfwptvmydruokzejincgbsx +fuyjneqibopgvmdlratwhxkscz + +soehbfdlunqayzixpcg +djfeosucbgplqh +svpwhkurtfgqbdoe + +srjgvqtldz +vzqrdgoljt +lzsjqgdvrt +trlvdjzqg + +v +h +p +p + +cjnm +mcjn +pncjm +mncj +mjcn + +iok +iok +iko +iko + +xcwgjue +kgju +azogjuft +jgmuxwc + +msajntrlkxqeiohfv +getnrvjoflqxma +hfqmjnvagxlotre +jyovtledxrnfmqab +qxtverwjialonmf + +hksfi +beqrfzgoul + +czlmtbnrqjduah +rdzgbnmhiauslct +tcazsudprlhnbm +nwctrlxbhvudzmfea +tbcqnyzdrlmuha + +s +m +m + +qmxkiv +sqcxm + +kvtbyfazojer +rofevztkyajb +tkazojvbfery + +jrwld +ijward +jpyrdbwe +rjwd +rdwjm + +iwartbsghcj +itgwajlzs + +uoebjyairqxpn +ijauenbyxorq +arobqyxieunj +ruhiodexbyqja +jibecuxoryqa + +nk +nm +n +mwn +nw + +rkzdeiufl +knibderzmufl + +ophtrmdneysl +oelpndymtsrh +ptndroyehslm +trsendlympho +tmpnhyseolrd + +vjdes +avps +vs + +lrokj +rlvgocjwmnhpxye +ljrof +jqfzlro +jrlo + +ajz +mztjnk +dojlgbzv +jzy + +nqg +xgef + +qytgos +qgt + +uixtyzmjskabndwl +xzkujfpqrwtmdsioanb +gdztwsjmkxieuan +zwumkxqjdaivstn + +ybekpljqhwaozrsunvc +wabijepnshzvlmkucqoyr + +ywq +vwa + +ozxvnabjchsurkyit +hrcxntaiujfkbsvy +cvytrqdikuahbsjxgn +vkybjratchnfxius + +xkozfm +fthk +ujyprq + +dmavqeft +facmbgevqtk +qaftmev + +nqftsomeiwkh +kodtfarsqmpnwzev +gnwfskouxqmte +kqymjenlstowf +gqwmeckxfobstn + +w +f +f +f +f + +ynouhdazs +uhndzsqaoy +dyarhuzsnwo + +twvzmsuek +tulsmekz +sxmlidpuekz +zmsenujko + +pyid +pidy +irsmdz + +nglvrjkmh +altmnwkhfro +jrlzntym +unqrimlexbsc + +rzmfbjnvtuhalspydkq +kdctavibrufjzmpwhseql + +quj +uq +uirqdc +uq + +csorknptwzehgvx +olzknwjieyhv +aebwnhvqkoz + +onqbzfcsykjrhpuelmdvwt +gyunqefdoszkptcjlmhwb +aqbywdnxhjfuselkztopcm +pnlcosjfhymdwzvbutqeikr + +ncs +ey +dc +ypt +qhvgowiuabkrx + +o +o +o +o + +si +s +sq +ezsaux +rsf + +mxtindkegroflbps +wopfiexsrnylgd + +cdpszukwehnqyotbarjg +gohpwlyketrsza +hyokzsrgeapxltw + +ozbaxtrhsnjydpqfmlvckw +ykpqahmucslrzfwxodtv + +dro +dolr +idro +odr +drojmps + +f +f +j +f +f + +x +cxs +xm +xm +yx + +lmjxn +cdou +aqekouwci + +asqkcwirotd +iqctslwpkagro +qwvfrjeixoctasdk +ksfvrtcaoweuqi + +rcxjokgweimzaqlsyvh +eiszkpamocvhux + +svbneghqi +wlngkm + +yx +yx +yx +yx + +zgmtedunpharcvifyxsq +cdwyhxupfamtgzqjnosrevlik +rtshdumnvfxieypcgbqaz +nepzuxfaqbtmyrdhgiscv +yvcmtepxzqadfhrnuisg + +odvngjmuw +nmjguvo +ipsjlgvboumnyh +ujvmgond + +ibte +lbj + +vnyazpoqm +nyvouxaepms +mpgyvjoacwn +dymapvnkoh + +zvqmtfcbeikxwsgjudo +zjodgqbamcwnevukftx +tdwevmbqojukzfcxg +qwykzudcbgmofexajvt + +hagrex +egrxah + +z +z + +gmx +wxtmg + +vh +izshx + +vejrthqgixubla +xwroqnjvzkptfbh + +ngpauyltq +qftxapncled +qnpbwyualght +pytqnal +pwhqktlnua + +ofelsiqtakyvgcdubhprm +arucvsxkezgifobqp + +sybhmruftp +qmbyfrphsu +qyfrphbusm +fpusrhymb + +haekngcs +gahj + +ycatzehdimog +fvh +hqk +hq + +at +i +v +v +v + +fwsecblarvdo +sdoravlewcfb +ewjofrlavcdsbz +drfwcaoslvbe + +rwetumkldsgjfbqianohzv +svfkorqaduhlzigjtwben +nfwougzjylprdqtvhsbaeki + +zdwskmcux +tcpmxog +fudcnzxm + +wmcleqrfozgstuhandipbykv +wrfugkoblvazmsxpycjhtdqine +okzimeadcrpwybvlghstqunf + +croutqsxvyfg +qelbwgca +gcq +gqcilm +gqbpwcz + +vbjx +xfeojybgw +jbxu +ujxb + +humzypcl +mlcuh +mlchu +mwclhu +mcuhl + +slqntvhwxeby +vhwxbltseyqn +wtsxhvblneqy + +ikby +i +it +i + +loheyfgpaibvmkxn +auivtdszjelhmcgxp +iykrlbagmevnhxp + +itnaqvyzbjluexgposwc +xcoqgbusthpnvakzwlyie +unqgycsvtwozxiblpea +inzlgatuybvewqcxops +xtlqgaezvcuyionwbsp + +sdbugmnzcwfqyvakjerx +rebfqgcdmunxsyavwzjk +szdwkavcbujngmryexfpq +qevfkmrbxyungjzscadw +gquzdwsykraxjnhelfvmcb + +zocknmwfbitjuv +cbiojlnuzwt +nyzbcwitjuo +zocxjqntwiub +oajubtzrncwi + +iys +syi +wzispyhgb +insy + +udpvgixzhyobecns +hugvxskpeoc +sgpfoemxcujhvlw +gxcqoeuvhsp +coavprushteqygx + +zsqtvr +hqej +sicqg +hetqad +qlkmpyxuowbfn + +lopqfgtzsbny +puyfqbnlzsio +jnblqypsofzm +sbyzolfqpn +pfqblykunsoz + +iegjxynurlcftbzkph +gynlhpdrfezukxcjbst +cuzteyghlrxikfnbjp +kzenfpyhrugblxtvcj + +hlupx +fqpsux +xsqup +pxuwf + +gzt +zmgt +ngrmzlt +zgtcs + +nsp +s +is +s + +zsixudhgpcfblnqmve +qxgpsczindufeblvmht +xfnueqghlmsdbvcpiz +qibfmhgselxcdznpvu + +fkxcogmz +cxfmkogz +gxfokmcz +ayhgxkoqfclmz +ocxfkgmz + +qxtd +hxmwdgt +cdtix + +vfyb +epdk +p +npz + +bkvrjsygeczfpqomhuwdi +wlrodcybkztqujmheapig + +kftsrqpxazb +zfkxpqbs + +guysto +ysf +sfy +ysh +ys + +sh +o +vi +z +uh + +lbqrpxwsuvdec +fselpdtqkvbrgu + +hmwjzxectfnsiqyl +isxtqjywcnhfmze + +uefgopcqnktavdhljir +dvceuhtlqnkpfi +ficqudvlhntkep +invtfpzhldcuemkq + +gjlhmdyun +hlujdmgny + +zupwyo +wyonzpu +yozpuw +yojwpzu +ywpuzoq + +atculpzvwro +vazwctrpuo +tapwuzgvroc + +kwaxzer +kwerxza +wkrxeza +akzerxw +xwezark + +pazsg +apwsz + +tshprib +phisbr +pihrbs +phbsir +hrsibp + +ishtmycqw +thymsc +smtchy +ytscmh + +fwuhmsnvjclaipgbd +huogmlpcvdjwniazs +givwhcujkmsdnlzpax + +kfi +f +f +f + +rotszqynjuwvdcmb +utodajecnvhy + +xhmqfursgt +uthagrnfxscm +sqhtmfgwixrlyu +lwrfxytpgushm + +l +l +l +j +l + +jfgqrstv +izaod + +rdzqnehxmwlpobuskvjiy +uhkxpldyqnbwoszmiverj +zrgpckwdusmixnebvloyfqhj +uobekwirqxynzdmhvlspj + +qauvodcszfhleypxbgjrknt +yvfdoahkxjnslpgqbrcuzet +uqrdlzsnpyahtfboxcgvejk +yjqelcdxrzusghfabktnpov +oetuxsfzyvlrkhgbnqcdpja + +lsgzdmvcykr +zblvifkcpesjda +qulndsmtcwzokv + +gyvnbcsaljqrfo +jhbfxlmqizayrswnu +blsfnraqpyj +afhylsrjnbq + +gaklz +kaz +zatnkc + +ksgcejpyt +vtisnmp +ontfspa +tsp + +gpnklyvzdei +iylnwvzke +ziketylvun +vznyklebi +kvziajyqnhmcsel + +r +o +r +o +z + +ug +lug +ug + +ydgtezlosuirxqhck +zhgsqoeyxidctukrl +ritqhczsuekgdyxlo +reluzxtksoycdhqig +dcrziheolgsqkxuyt + +pxgmjlwzycrtuonv +xvrnlpyjzoutwgcm +lxgtpyuzojcwnvrm +ncvrlpmyjgzwutxo +lgcvojwxnuzmrpty + +tklvywfzjhx +uzkftyhvlbxw +ykhwftxzvl + +jukhnepb +nbukephj +puenjkhb +punjherbk + +ixsmkpvzqryd +xifdkpoejy + +ghldsu +orutphgf +uhgc + +pnkdgfcbmwlqjxh +uwkgyhnsjblmqcd + +cui +iucqvj +uxprfci +iwxcu +iurcx + +fomuvtrxj +txjumv +uvtyjmx +mujxtpkvd +utfyemxvqhj + +kahpnit +zdgtbcjehip +guwjihbtplr +mtxsivpqh + +hbmuerdji +pqjyxrlhnbi + +blup +fupb +bpu +pub +ubwmp + +ntyhgwjekrxsudz +bvdkzoprfutcjqgn +gsaekrjtnmzud +gnktzjxudr +nzgtjkulidr + +kvamjswfgoul +fmagujslv +jcugaslvfm + +bdtqeimuzpnhgavrw +ptmhzulsvqgnfrwkd +kcyturwmqhzgvdpn + +lkvzyhnug +zuglkyef + +xnsqbdhtiagwvrlpezyf +dlntjkpzugsqwaxeryhf +rpehgncayztmsqbfiwodlx + +fsbv +ryoptdf + +ebxfakjriydp +yijedfkprqba +praekbjifdy +ibaejpfrkdy + +myfvdnqsxiazjpg +jefvmxpaisdozlbcqn +hkxqjdpnafrmsztv + +faoknlebqpy +kpfylnaoeqb +oankeqybflp +nyeqkpfblao +kobelfpaqyn + +b +qierm +by + +rdhgxubnkcot +kbcouhmxtgd +smbtgcahuikyoxd + +csuqvbzmopehfanytxlrwkdigj +qrexnzoakupicfgthdsjybvmwl +wpfkachnjtxgdysboilmuezrqv + +ul +lu +lu + +qrb +bycr +pwe + +sbfiuhzw +msouybvlzrhwdfj +ihvzblw +xpbcqazwtekgn + +vouxdfiamelztswy +iflgzytmwsbduxe +iyfkjmspzwutxlde +ncldmpithsuyekwfbxgz + +ijxcbyp +jbpiycx +xybijpc + +wanuhtdyskljicxzebmfpvq +lyguehpfsvcmtbkndwao +pkbdywhsvmealfctrun + +ahbftkwivsczonj +nwkzvahfbycjitos +jmznkbieoswtvafhc +vztkiqjanhsbfwco + +olxzgkrjcandtwupehsqbify +rzcaekovyijgxtwnbdsqhpul + +azhycqgnxjpudrvfko +oxfnhvkqpdcrzjgay +hrebsqyjpaoglktdxznmcfv +rjvzcyhdqpagfonxk +jygkqxfhrcvodznpa + +pqkfrztwhgybncd +yhgpobeuwatmkzqxnrd +dzqgrvbyptkhnw +snyhilgrzwvqctkpdjb + +zcljnxvohbuqtyf +cyqlfrhnxujobz +bwxzhyoeusclfqnjmi + +gixeoy +igoeyx +gxoeyi + +xvfowdzkineas +dpinwxejkfsavoz +evkoxiznadfws + +pfrxj +dqearfgnt + +sfhkce +nvbdk +knv + +oxpa +poxa +nxvah +pxa +xam + +lafch +hafnxlc + +dorcjz +aolei + +nszybcuheqmt +szhjpvencm +zhnedscmp + +wfdatxbsk +ucwklisqtfn + +vguconbkqjmw +jnqvmgkwu +nqjwukgvm +jwvguqnmk + +grajfdibqoknsu +xecwhajtilpz +yihpzjam + +kjzlpfao +eprntujdzhxwql +vjlmcyazsp + +eyvi +tiye +iey + +mjlgsacntvyzqrdufhxpk +ftlzrhsjgvmnkupdxcqay +dyvhtcruxmapsnljzqkfg + +shj +lzsvj +sjh +msj +js + +zhoselpidtvnqac +cqitodanpuxvzh + +ih +tzhe +whe +mrdvh + +htacu +niatchu +yucath + +adhflbns +plhbdfas +afshldb +sdvhaiolqbgf +ksfdlhba + +frsy +frsy +srfy + +dcq +dkmeqcv +qdc +cdq +cdyq + +awgp +wp +fpyw + +kjph +xhkjp + +fjplvwnihqotkcsyd +tdvusiypqkjcfowlh + +quyzmxeprlgona +hwkseitjocfxr +dzpqolenxr +brpeyox + +bnjhzetoldk +ftnizogykhamjbul +zobtjesnklh +qbkrtjlnohsz +kbjpwoqznstlh + +w +t +wgq +sanxjuzypkf + +wkpzeigcxqob +wbgipzkqeoxc +ceqkgxbpizwo +qbozgixckepw + +vibupghywqco +vwiqhcgbpyou +vycqgohubiwp +obcguhvipqyw +pbujhvewogqyic + +qol +los +oghrfxa + +slorfjctxvw +jdfcyrtoxv +xuozvcernibftj +vcjfxwoytr + +awrehc +aicze +caeh + +qxvuhyp +hxvcpy \ No newline at end of file diff --git a/src/main/resources/2020/day7.txt b/src/main/resources/2020/day7.txt new file mode 100644 index 00000000..338516bb --- /dev/null +++ b/src/main/resources/2020/day7.txt @@ -0,0 +1,594 @@ +posh brown bags contain 5 dim coral bags, 1 plaid blue bag, 2 faded bronze bags, 2 light black bags. +vibrant lime bags contain 3 dull lavender bags, 3 dim crimson bags, 3 mirrored lavender bags, 2 muted cyan bags. +clear olive bags contain 1 wavy gold bag, 4 dim lime bags, 3 dull tomato bags, 5 dark turquoise bags. +dark purple bags contain 5 striped tan bags, 5 bright cyan bags, 3 dark indigo bags. +posh maroon bags contain 3 bright salmon bags. +dim violet bags contain 1 pale violet bag, 1 bright gold bag. +clear gray bags contain 1 bright gray bag. +light brown bags contain 1 light aqua bag, 4 vibrant yellow bags, 5 posh green bags. +muted yellow bags contain 4 drab bronze bags, 2 dull gray bags, 2 vibrant olive bags. +striped orange bags contain 4 mirrored brown bags, 4 plaid olive bags. +striped turquoise bags contain 2 muted indigo bags. +mirrored crimson bags contain no other bags. +muted teal bags contain 4 striped purple bags. +light purple bags contain 5 dim coral bags, 3 striped teal bags, 1 dim teal bag, 4 clear gold bags. +shiny olive bags contain 2 muted cyan bags, 1 wavy white bag, 4 light chartreuse bags, 4 mirrored indigo bags. +dim black bags contain 4 wavy lavender bags, 5 drab blue bags. +pale maroon bags contain 5 vibrant olive bags. +dotted maroon bags contain 2 faded lime bags, 1 clear turquoise bag. +light aqua bags contain 5 dark brown bags, 2 shiny gold bags. +vibrant beige bags contain 2 pale cyan bags, 2 dotted crimson bags, 2 vibrant teal bags. +striped white bags contain 2 shiny gold bags. +light orange bags contain 1 dim coral bag, 2 vibrant coral bags. +dull green bags contain 1 plaid green bag. +shiny turquoise bags contain 3 striped olive bags, 3 drab cyan bags, 2 dim lime bags, 3 muted brown bags. +posh chartreuse bags contain 2 mirrored indigo bags, 3 light black bags, 4 mirrored bronze bags, 3 light gold bags. +drab green bags contain no other bags. +drab plum bags contain 3 pale blue bags, 4 dull teal bags, 1 striped violet bag. +muted indigo bags contain 5 dark turquoise bags. +pale beige bags contain 4 wavy gray bags, 4 faded lime bags, 4 bright beige bags, 1 plaid violet bag. +vibrant blue bags contain 5 drab tan bags, 4 dull tomato bags. +vibrant turquoise bags contain 1 posh lavender bag. +clear maroon bags contain 2 shiny brown bags. +bright crimson bags contain 2 faded indigo bags, 4 dull teal bags. +wavy tan bags contain 5 dotted fuchsia bags, 2 muted fuchsia bags, 2 light white bags. +dim teal bags contain no other bags. +faded plum bags contain 1 faded cyan bag, 4 dull lime bags, 2 vibrant cyan bags. +vibrant orange bags contain 3 plaid salmon bags, 3 mirrored yellow bags. +posh gray bags contain 4 dark indigo bags, 3 light blue bags, 5 light red bags, 3 pale aqua bags. +dull aqua bags contain 1 dark fuchsia bag, 2 faded silver bags. +light bronze bags contain 1 muted indigo bag. +pale coral bags contain 1 plaid tomato bag, 4 faded plum bags, 2 mirrored turquoise bags, 1 posh lavender bag. +pale lime bags contain 1 dotted gray bag, 3 mirrored coral bags, 5 pale silver bags, 5 mirrored yellow bags. +shiny violet bags contain 2 faded orange bags, 3 muted indigo bags, 5 muted violet bags. +vibrant coral bags contain 3 posh fuchsia bags, 1 dim coral bag, 4 faded gold bags, 5 dotted violet bags. +dim magenta bags contain 3 pale purple bags, 4 plaid turquoise bags, 2 bright lavender bags. +dull brown bags contain 5 vibrant turquoise bags, 3 faded bronze bags, 3 striped tan bags, 4 dim gold bags. +bright brown bags contain 5 dark teal bags, 2 posh indigo bags, 4 drab fuchsia bags. +dim tan bags contain 4 dark magenta bags, 1 clear blue bag, 2 vibrant olive bags. +plaid black bags contain 4 pale indigo bags, 3 clear gold bags. +muted plum bags contain 3 faded brown bags, 5 drab orange bags, 5 dull turquoise bags. +light tomato bags contain 3 wavy coral bags, 2 drab green bags, 2 dull crimson bags. +dull cyan bags contain 1 clear blue bag, 3 clear yellow bags. +clear turquoise bags contain 5 pale black bags, 1 pale brown bag, 5 bright beige bags. +faded cyan bags contain 4 mirrored tan bags. +mirrored coral bags contain 4 pale gold bags, 5 wavy gold bags. +muted beige bags contain 4 faded crimson bags. +plaid tan bags contain 5 bright indigo bags. +faded gray bags contain 3 muted salmon bags, 3 shiny maroon bags, 3 faded orange bags. +vibrant teal bags contain 1 drab green bag, 1 pale black bag, 5 faded gold bags. +dim red bags contain 5 striped olive bags, 4 drab salmon bags, 4 dark magenta bags. +bright teal bags contain 4 drab green bags, 3 shiny brown bags, 1 mirrored crimson bag, 1 dotted purple bag. +wavy silver bags contain 4 wavy coral bags, 2 bright aqua bags. +drab gray bags contain 4 drab crimson bags, 4 faded turquoise bags, 3 drab lavender bags, 3 bright bronze bags. +vibrant gold bags contain 2 muted black bags. +faded brown bags contain 3 posh fuchsia bags, 3 faded tan bags, 1 dim olive bag. +pale red bags contain 4 clear orange bags, 3 striped green bags, 5 striped turquoise bags. +faded coral bags contain 3 dim lime bags, 2 pale indigo bags, 1 striped red bag. +muted cyan bags contain 5 vibrant aqua bags, 2 muted violet bags, 3 clear gold bags, 5 pale maroon bags. +bright silver bags contain 3 posh salmon bags, 1 posh silver bag, 1 clear teal bag, 3 dark gold bags. +vibrant magenta bags contain 2 dark violet bags. +mirrored magenta bags contain 4 drab teal bags, 1 dark purple bag. +posh orange bags contain 5 dim teal bags, 5 clear lavender bags, 2 dim coral bags, 3 shiny silver bags. +dotted gray bags contain 1 dim blue bag, 3 striped purple bags, 3 mirrored coral bags, 5 clear purple bags. +dark white bags contain 5 dim teal bags, 5 dark turquoise bags, 3 wavy indigo bags, 5 muted olive bags. +posh black bags contain 5 striped purple bags. +faded teal bags contain 2 muted beige bags, 4 dim blue bags, 3 light purple bags. +light maroon bags contain 5 dotted lime bags, 3 mirrored salmon bags, 2 dark coral bags, 4 muted violet bags. +striped violet bags contain 5 mirrored turquoise bags, 1 light green bag, 1 striped tan bag, 4 faded violet bags. +dotted red bags contain 4 bright aqua bags, 2 dull maroon bags, 3 plaid fuchsia bags, 2 dim green bags. +shiny salmon bags contain 4 pale chartreuse bags, 1 muted tomato bag. +posh beige bags contain 2 drab silver bags, 2 dull purple bags, 4 dotted magenta bags. +faded magenta bags contain 4 bright beige bags, 3 pale purple bags, 2 posh plum bags. +striped teal bags contain 2 light tomato bags. +shiny beige bags contain 3 posh turquoise bags, 4 drab lavender bags, 3 dark magenta bags, 5 dotted teal bags. +dull violet bags contain 2 dull teal bags, 4 shiny fuchsia bags, 2 bright coral bags, 1 pale bronze bag. +light fuchsia bags contain 2 pale crimson bags, 4 bright blue bags. +faded tomato bags contain 4 bright fuchsia bags, 3 posh tan bags, 3 dark blue bags. +posh tan bags contain 2 bright aqua bags, 1 mirrored purple bag, 2 clear lavender bags. +dim cyan bags contain 2 dim beige bags, 2 dotted orange bags, 4 muted orange bags, 3 light plum bags. +plaid chartreuse bags contain 2 light orange bags, 5 dim fuchsia bags, 2 mirrored gray bags, 4 mirrored tan bags. +drab silver bags contain 2 dim blue bags, 2 light lavender bags, 3 wavy tomato bags. +dull lavender bags contain 5 dull magenta bags, 3 dotted tomato bags, 5 faded gold bags, 2 pale tan bags. +drab cyan bags contain 3 pale plum bags. +faded green bags contain 3 light violet bags, 3 pale maroon bags. +plaid red bags contain 1 clear olive bag. +drab tomato bags contain 3 faded yellow bags, 5 striped fuchsia bags, 4 light gold bags, 1 faded bronze bag. +dotted black bags contain 5 vibrant aqua bags. +striped fuchsia bags contain 1 muted olive bag, 2 pale black bags, 2 light teal bags. +light coral bags contain 4 striped fuchsia bags. +posh coral bags contain 5 faded tan bags. +faded blue bags contain 3 dim chartreuse bags, 5 bright coral bags. +plaid green bags contain 5 striped plum bags, 3 faded turquoise bags, 5 bright beige bags. +dark cyan bags contain 2 bright turquoise bags, 4 plaid plum bags, 1 shiny green bag. +posh yellow bags contain 3 pale yellow bags, 3 muted purple bags, 1 light magenta bag, 4 light aqua bags. +mirrored turquoise bags contain 2 vibrant gray bags, 4 drab orange bags. +faded tan bags contain 2 drab orange bags. +posh plum bags contain 1 light gold bag, 4 posh orange bags. +muted chartreuse bags contain 2 shiny violet bags, 1 pale plum bag, 1 dim crimson bag. +muted white bags contain 5 pale brown bags, 5 clear lavender bags, 1 faded bronze bag. +pale plum bags contain 5 dotted violet bags, 5 mirrored gray bags. +plaid tomato bags contain 4 vibrant coral bags, 4 dim aqua bags. +vibrant cyan bags contain 1 shiny lavender bag, 3 faded orange bags, 2 striped fuchsia bags. +shiny silver bags contain no other bags. +vibrant aqua bags contain 3 plaid orange bags, 2 light blue bags. +dotted purple bags contain 4 faded gold bags, 4 clear green bags, 1 mirrored gray bag. +light chartreuse bags contain 1 bright black bag. +mirrored aqua bags contain 4 drab salmon bags, 2 striped red bags. +faded lime bags contain 4 faded gold bags. +clear indigo bags contain 3 dim tomato bags, 1 light purple bag, 3 dark salmon bags, 5 posh teal bags. +wavy violet bags contain 2 posh turquoise bags. +light blue bags contain 1 vibrant turquoise bag, 5 vibrant salmon bags, 2 light gold bags. +clear blue bags contain 4 bright aqua bags. +bright coral bags contain 1 light lavender bag. +light green bags contain 2 pale silver bags, 3 light lavender bags, 2 posh silver bags. +dark lime bags contain 4 muted crimson bags, 3 mirrored teal bags. +mirrored red bags contain 5 dotted cyan bags, 2 dull brown bags. +drab purple bags contain 2 bright salmon bags, 1 striped plum bag. +posh red bags contain 5 drab salmon bags, 5 posh gold bags, 1 vibrant crimson bag, 5 vibrant yellow bags. +clear red bags contain 5 muted white bags, 3 mirrored gold bags, 1 plaid blue bag. +drab fuchsia bags contain 4 drab salmon bags, 5 dark red bags. +dark tomato bags contain 4 plaid orange bags, 1 dull magenta bag, 5 striped aqua bags. +muted crimson bags contain 2 vibrant gray bags. +muted bronze bags contain 4 plaid beige bags, 3 striped red bags, 3 muted olive bags, 5 dotted indigo bags. +faded bronze bags contain 5 dim teal bags. +striped maroon bags contain 5 bright gold bags, 2 clear brown bags, 3 vibrant cyan bags, 4 dotted coral bags. +light cyan bags contain 5 mirrored turquoise bags. +mirrored cyan bags contain 1 muted olive bag, 2 drab salmon bags, 5 muted indigo bags. +plaid lavender bags contain 1 light teal bag, 4 dotted indigo bags, 5 faded green bags, 1 light aqua bag. +light gray bags contain 5 mirrored red bags, 1 plaid magenta bag, 1 pale black bag, 3 clear blue bags. +wavy indigo bags contain 3 dim teal bags, 2 shiny gold bags, 4 dim gold bags. +bright tomato bags contain 1 mirrored gray bag. +pale blue bags contain 3 vibrant teal bags, 3 muted magenta bags, 1 mirrored salmon bag, 4 striped cyan bags. +posh bronze bags contain 1 bright tomato bag, 2 bright teal bags, 1 dark magenta bag, 1 mirrored silver bag. +dotted violet bags contain 4 shiny silver bags, 5 drab green bags. +dark black bags contain 3 vibrant gray bags, 1 faded bronze bag, 2 faded gold bags. +muted gray bags contain 3 wavy orange bags, 2 mirrored tan bags. +shiny chartreuse bags contain 5 bright turquoise bags. +dull red bags contain 5 wavy olive bags. +dark orange bags contain 3 plaid bronze bags, 1 dark blue bag, 1 dim gray bag, 4 pale chartreuse bags. +wavy yellow bags contain 3 plaid indigo bags, 3 dull purple bags. +drab salmon bags contain 3 light blue bags, 2 dull brown bags. +drab beige bags contain 2 pale turquoise bags, 5 light gold bags, 4 bright aqua bags. +dull olive bags contain 2 pale chartreuse bags, 3 dull cyan bags, 5 mirrored teal bags. +wavy crimson bags contain 4 faded orange bags, 5 bright gray bags. +muted maroon bags contain 1 muted salmon bag. +mirrored white bags contain 2 light bronze bags, 3 clear brown bags, 2 dark turquoise bags, 2 dim indigo bags. +wavy gray bags contain 1 light lime bag, 1 faded turquoise bag, 4 muted teal bags, 2 dim crimson bags. +shiny gray bags contain 4 dull cyan bags, 2 clear red bags, 5 dark magenta bags. +dull orange bags contain 1 dull indigo bag. +drab maroon bags contain 5 light red bags, 1 pale orange bag. +shiny blue bags contain 3 striped magenta bags, 2 light violet bags. +pale lavender bags contain 5 faded tan bags, 4 light tan bags, 1 striped coral bag. +wavy magenta bags contain 4 dull crimson bags. +bright maroon bags contain 5 shiny salmon bags. +bright gray bags contain 5 light blue bags, 3 faded gold bags, 5 dull tomato bags, 2 faded silver bags. +muted aqua bags contain 4 mirrored purple bags, 5 light blue bags. +dull plum bags contain 3 shiny purple bags, 3 dim indigo bags. +light indigo bags contain 2 mirrored bronze bags, 4 wavy lime bags. +shiny crimson bags contain 4 dull violet bags. +dull lime bags contain 1 mirrored gray bag, 1 shiny brown bag, 5 dark fuchsia bags, 4 shiny silver bags. +drab chartreuse bags contain 4 muted purple bags, 5 bright magenta bags, 4 dark salmon bags, 3 pale indigo bags. +faded aqua bags contain 1 dotted white bag, 1 drab olive bag. +dotted magenta bags contain 5 wavy tomato bags, 2 striped fuchsia bags, 3 dull blue bags, 3 pale yellow bags. +bright tan bags contain 1 dark blue bag, 5 vibrant turquoise bags. +dotted fuchsia bags contain 2 dull silver bags. +dotted plum bags contain 1 wavy coral bag, 3 vibrant teal bags, 2 dim bronze bags, 1 pale salmon bag. +clear silver bags contain 1 faded orange bag. +faded beige bags contain 4 mirrored orange bags, 4 plaid white bags, 1 muted violet bag. +bright red bags contain 5 posh fuchsia bags, 4 striped cyan bags. +faded yellow bags contain 3 vibrant turquoise bags, 5 bright teal bags, 3 pale white bags. +light red bags contain 4 shiny bronze bags, 2 mirrored gray bags, 5 dark violet bags. +dim orange bags contain 3 dull brown bags, 3 dim turquoise bags, 3 bright chartreuse bags, 1 dark red bag. +posh salmon bags contain 2 faded lavender bags, 1 faded brown bag. +shiny white bags contain 5 clear crimson bags. +shiny black bags contain 2 vibrant coral bags, 2 wavy indigo bags, 4 shiny gold bags, 4 mirrored tan bags. +pale turquoise bags contain 2 dim olive bags. +vibrant maroon bags contain 3 striped turquoise bags, 3 clear magenta bags, 1 dark fuchsia bag, 5 dark brown bags. +wavy coral bags contain 5 vibrant aqua bags. +striped green bags contain 3 light magenta bags, 4 clear magenta bags, 1 light turquoise bag. +dark gray bags contain 3 dark aqua bags. +shiny bronze bags contain 5 vibrant turquoise bags, 1 faded gold bag, 5 dark fuchsia bags, 3 dotted cyan bags. +dull teal bags contain 3 clear cyan bags, 1 bright chartreuse bag, 2 dull gray bags. +dark fuchsia bags contain 1 dull silver bag, 3 dim gold bags, 1 clear teal bag, 5 shiny silver bags. +posh blue bags contain 4 drab teal bags. +drab violet bags contain 3 dim lavender bags, 1 vibrant aqua bag, 4 muted gray bags. +wavy white bags contain 1 dark coral bag, 2 dotted gray bags. +muted coral bags contain 1 vibrant teal bag, 5 dim tan bags, 4 light bronze bags. +dark silver bags contain 5 shiny purple bags, 2 posh indigo bags. +pale bronze bags contain 3 striped white bags, 1 pale aqua bag. +dotted turquoise bags contain 2 dark bronze bags, 2 mirrored turquoise bags, 2 clear yellow bags, 2 posh orange bags. +muted turquoise bags contain 1 faded blue bag, 1 dotted crimson bag. +faded indigo bags contain 5 mirrored blue bags, 3 striped crimson bags, 3 light green bags. +bright salmon bags contain 4 dim gold bags, 1 mirrored red bag. +mirrored violet bags contain 5 dull tomato bags, 4 shiny maroon bags, 3 dark green bags. +plaid blue bags contain 1 bright aqua bag, 1 light gold bag, 4 mirrored turquoise bags, 1 dim gold bag. +wavy green bags contain 5 light white bags. +vibrant gray bags contain 3 drab green bags, 5 faded bronze bags. +vibrant red bags contain 3 shiny lavender bags, 5 light indigo bags, 3 dotted chartreuse bags, 3 bright aqua bags. +dotted tomato bags contain 4 clear green bags, 3 vibrant gray bags. +mirrored teal bags contain 4 posh orange bags, 3 shiny gold bags, 4 clear magenta bags, 4 dull crimson bags. +muted brown bags contain 5 dotted cyan bags, 1 pale turquoise bag, 2 posh olive bags, 2 light black bags. +wavy beige bags contain 1 dull tomato bag. +pale white bags contain 4 drab orange bags, 3 dim tomato bags, 2 clear lavender bags. +mirrored purple bags contain 4 dim lime bags. +plaid orange bags contain 1 faded bronze bag, 3 dotted violet bags. +shiny lime bags contain 4 light green bags, 4 dim orange bags. +vibrant tomato bags contain 4 pale plum bags, 2 pale maroon bags. +bright turquoise bags contain 2 dim gold bags, 5 pale maroon bags, 5 dull tomato bags, 1 mirrored beige bag. +bright lime bags contain 4 clear beige bags. +shiny tan bags contain 4 bright beige bags. +mirrored green bags contain 5 wavy magenta bags. +posh green bags contain 1 plaid aqua bag. +vibrant olive bags contain 4 striped plum bags. +vibrant crimson bags contain 1 dim lavender bag, 5 faded bronze bags, 1 drab green bag, 3 plaid magenta bags. +bright gold bags contain 5 dark purple bags, 4 dark teal bags, 2 dark white bags, 4 striped white bags. +wavy chartreuse bags contain 1 wavy gray bag, 2 faded olive bags. +muted black bags contain 4 shiny gold bags, 4 vibrant turquoise bags, 5 shiny magenta bags. +pale salmon bags contain 4 dotted gray bags, 4 dim turquoise bags, 2 clear silver bags. +drab coral bags contain 3 shiny lime bags, 4 light green bags, 4 vibrant olive bags, 5 bright chartreuse bags. +pale green bags contain 2 clear green bags, 5 shiny green bags. +striped tan bags contain no other bags. +pale silver bags contain 4 shiny silver bags, 5 clear gold bags, 1 dim lime bag. +pale olive bags contain 3 muted fuchsia bags, 3 shiny tan bags. +bright cyan bags contain 4 clear lavender bags, 4 drab green bags, 1 striped tan bag. +drab teal bags contain 3 drab tan bags, 1 shiny bronze bag, 1 light green bag. +muted salmon bags contain 2 plaid fuchsia bags, 1 shiny purple bag, 4 wavy silver bags, 2 dark salmon bags. +shiny tomato bags contain 1 wavy turquoise bag, 2 pale gray bags, 5 bright red bags, 1 dotted aqua bag. +clear cyan bags contain 3 posh tan bags, 4 dim green bags, 3 plaid blue bags. +dim lavender bags contain 5 light coral bags, 5 dull indigo bags. +light gold bags contain 4 faded gold bags, 3 pale plum bags, 2 clear lavender bags, 1 dim lime bag. +muted tan bags contain 2 plaid gray bags, 3 muted fuchsia bags, 4 posh gray bags, 2 mirrored brown bags. +striped olive bags contain 2 dim lime bags, 3 dull tomato bags. +dim green bags contain 4 light blue bags, 5 dark turquoise bags. +pale tan bags contain 1 light indigo bag, 5 shiny chartreuse bags, 5 dim purple bags, 2 faded gold bags. +bright orange bags contain 5 striped white bags, 2 dim lime bags. +faded orange bags contain 1 plaid magenta bag, 2 striped olive bags. +posh olive bags contain 2 bright gold bags, 2 dull tomato bags. +dotted silver bags contain 1 wavy crimson bag, 5 light green bags, 5 striped plum bags, 5 shiny silver bags. +wavy turquoise bags contain 5 striped purple bags, 3 shiny blue bags, 3 dotted indigo bags. +plaid gray bags contain 1 posh teal bag. +dark magenta bags contain 3 striped olive bags. +drab magenta bags contain 2 drab plum bags. +bright beige bags contain 1 clear teal bag, 2 dotted violet bags, 5 posh lavender bags, 5 faded bronze bags. +dark tan bags contain 2 posh indigo bags, 3 light green bags. +muted blue bags contain 1 shiny fuchsia bag, 5 dark white bags, 2 dull brown bags. +wavy fuchsia bags contain 2 dotted salmon bags, 3 striped gray bags, 1 clear silver bag, 3 shiny maroon bags. +light plum bags contain 2 posh chartreuse bags, 3 pale orange bags, 1 striped violet bag. +dull indigo bags contain 3 dim coral bags, 5 bright orange bags, 5 shiny purple bags, 1 posh fuchsia bag. +light olive bags contain 2 clear plum bags, 2 dotted indigo bags, 1 vibrant maroon bag, 2 drab crimson bags. +pale magenta bags contain 4 plaid bronze bags, 4 muted aqua bags. +faded white bags contain 1 shiny salmon bag, 4 drab fuchsia bags, 3 striped cyan bags, 5 light bronze bags. +bright bronze bags contain 2 bright gold bags. +dim chartreuse bags contain 5 wavy beige bags, 1 mirrored silver bag, 5 pale brown bags, 4 pale silver bags. +bright black bags contain 1 light teal bag, 3 shiny bronze bags, 5 faded beige bags, 3 striped magenta bags. +clear coral bags contain 1 pale gold bag, 3 dim tomato bags, 3 dark violet bags, 2 dim purple bags. +dark indigo bags contain 1 vibrant turquoise bag. +mirrored tomato bags contain 1 drab yellow bag, 5 muted olive bags, 3 wavy black bags, 3 dotted lavender bags. +striped plum bags contain 3 faded bronze bags, 1 vibrant gray bag. +bright purple bags contain 3 muted gray bags. +muted gold bags contain 4 light indigo bags, 4 bright tomato bags, 3 striped tomato bags. +faded lavender bags contain 5 wavy indigo bags. +striped beige bags contain 2 striped fuchsia bags, 5 mirrored magenta bags. +faded fuchsia bags contain 1 mirrored fuchsia bag, 1 posh aqua bag, 4 clear coral bags, 3 mirrored magenta bags. +bright aqua bags contain 1 muted white bag. +pale crimson bags contain 3 light purple bags. +wavy aqua bags contain 2 shiny purple bags, 1 posh orange bag, 1 dark red bag, 3 drab lavender bags. +posh violet bags contain 4 wavy teal bags, 4 dull chartreuse bags, 4 wavy salmon bags. +light salmon bags contain 4 mirrored crimson bags, 1 striped red bag. +dim beige bags contain 4 dim turquoise bags, 4 drab fuchsia bags, 2 vibrant tomato bags. +clear yellow bags contain 5 mirrored orange bags, 3 dark teal bags. +pale fuchsia bags contain 1 mirrored bronze bag, 3 posh lavender bags, 2 shiny lavender bags. +posh gold bags contain 1 bright teal bag, 3 light green bags, 4 muted blue bags, 4 drab green bags. +striped aqua bags contain 4 wavy beige bags, 1 dotted indigo bag. +plaid indigo bags contain 5 striped green bags, 5 light purple bags. +muted tomato bags contain 2 posh tomato bags, 1 pale coral bag, 3 muted white bags, 5 dim orange bags. +mirrored silver bags contain 1 faded silver bag, 2 dull bronze bags, 2 dim red bags, 5 posh brown bags. +vibrant silver bags contain 5 striped olive bags, 2 clear olive bags, 5 bright coral bags, 1 plaid fuchsia bag. +dull chartreuse bags contain 1 muted aqua bag. +dotted green bags contain 4 vibrant white bags, 1 dim teal bag. +plaid cyan bags contain 4 faded bronze bags. +dark crimson bags contain 5 shiny purple bags, 1 dotted brown bag, 4 clear coral bags, 1 striped lavender bag. +muted orange bags contain 2 drab cyan bags. +dark salmon bags contain 1 pale black bag, 2 dull brown bags. +striped salmon bags contain 3 dim aqua bags, 1 clear purple bag, 3 muted crimson bags. +vibrant lavender bags contain 3 posh orange bags, 4 posh indigo bags, 3 plaid magenta bags. +shiny purple bags contain 2 dotted violet bags, 5 striped tan bags, 2 pale plum bags. +plaid lime bags contain 4 wavy salmon bags, 2 light magenta bags, 5 striped crimson bags. +drab blue bags contain 3 dull orange bags. +mirrored salmon bags contain 4 pale black bags, 3 posh tan bags, 4 vibrant violet bags. +muted red bags contain 3 light coral bags, 5 muted teal bags, 1 dark blue bag. +dotted olive bags contain 2 clear lime bags, 3 faded bronze bags, 5 shiny silver bags, 4 clear magenta bags. +shiny cyan bags contain 3 light green bags, 2 dull maroon bags, 1 pale aqua bag, 5 mirrored gold bags. +plaid teal bags contain 1 dull teal bag, 5 faded white bags, 4 vibrant purple bags. +dull silver bags contain 2 bright cyan bags, 3 clear green bags. +dim silver bags contain 5 dim orange bags. +dark red bags contain 1 shiny fuchsia bag, 5 drab orange bags, 1 dull lime bag. +dull gray bags contain 5 posh tan bags, 5 mirrored violet bags, 5 clear gold bags, 3 striped olive bags. +mirrored olive bags contain 3 mirrored yellow bags, 4 striped lavender bags. +dull gold bags contain 3 faded beige bags. +dim olive bags contain 5 dull maroon bags, 3 dull beige bags. +dark blue bags contain 4 dim lime bags, 4 muted indigo bags. +posh silver bags contain 3 posh lavender bags, 2 bright beige bags, 5 dim coral bags. +dotted indigo bags contain 2 pale gray bags, 4 light violet bags. +plaid turquoise bags contain 1 pale purple bag, 1 pale brown bag. +striped purple bags contain 2 shiny brown bags. +dull turquoise bags contain 3 dull teal bags, 3 dark coral bags, 4 dull silver bags, 4 faded violet bags. +plaid olive bags contain 3 dim green bags, 1 wavy chartreuse bag, 5 pale crimson bags, 5 mirrored green bags. +clear tomato bags contain 1 posh gray bag, 4 clear teal bags, 2 drab indigo bags. +dull tan bags contain 4 vibrant brown bags, 3 drab orange bags, 5 bright maroon bags. +dark gold bags contain 3 light teal bags. +faded olive bags contain 4 clear gold bags. +posh fuchsia bags contain 2 dull brown bags, 1 dull silver bag, 3 mirrored tan bags, 2 dim coral bags. +dull purple bags contain 1 dim turquoise bag, 3 plaid coral bags, 5 striped lime bags. +bright plum bags contain 3 pale green bags, 2 pale gray bags. +faded violet bags contain 2 plaid white bags. +striped lime bags contain 2 striped cyan bags. +clear lime bags contain 3 faded orange bags, 1 posh lavender bag, 3 dull lime bags. +drab red bags contain 2 dim gold bags, 4 dotted violet bags. +mirrored orange bags contain 2 mirrored gold bags, 1 dull gray bag. +drab white bags contain 1 vibrant silver bag, 4 bright cyan bags, 5 shiny red bags. +wavy red bags contain 4 plaid fuchsia bags, 2 pale maroon bags, 4 wavy indigo bags. +pale gray bags contain 2 dim gold bags. +mirrored blue bags contain 4 dull purple bags, 4 dull bronze bags, 5 faded violet bags. +pale aqua bags contain 2 shiny brown bags, 2 vibrant coral bags, 3 dark green bags, 5 bright beige bags. +plaid violet bags contain 2 dim tomato bags, 5 dim teal bags, 4 drab salmon bags. +shiny magenta bags contain 5 dull beige bags. +striped magenta bags contain 2 drab olive bags, 3 dim chartreuse bags, 3 plaid beige bags, 5 mirrored crimson bags. +faded black bags contain 1 bright coral bag, 1 mirrored magenta bag, 1 pale coral bag, 4 posh bronze bags. +plaid yellow bags contain 2 vibrant gray bags, 1 mirrored cyan bag, 2 light salmon bags, 1 light gold bag. +vibrant brown bags contain 3 light tomato bags, 1 dark red bag. +faded salmon bags contain 2 mirrored orange bags. +light beige bags contain 1 vibrant violet bag, 4 dim green bags, 2 bright aqua bags. +bright magenta bags contain 4 mirrored brown bags, 4 faded white bags. +clear violet bags contain 5 mirrored gold bags, 5 bright lavender bags, 5 dim red bags. +striped blue bags contain 3 clear turquoise bags. +mirrored fuchsia bags contain 2 shiny fuchsia bags, 5 faded bronze bags, 3 dull lime bags, 3 drab purple bags. +drab lime bags contain 4 pale yellow bags, 3 drab salmon bags, 5 clear beige bags. +wavy maroon bags contain 3 drab cyan bags, 5 light turquoise bags. +striped coral bags contain 4 dull magenta bags, 5 posh maroon bags, 3 shiny red bags. +wavy lime bags contain 1 plaid green bag. +dim maroon bags contain 4 faded lime bags, 1 striped olive bag, 4 dull bronze bags. +clear orange bags contain 5 posh bronze bags, 4 striped tan bags, 4 mirrored bronze bags. +vibrant plum bags contain 1 bright white bag, 5 light aqua bags, 4 mirrored fuchsia bags, 2 vibrant purple bags. +drab bronze bags contain 3 light gray bags, 2 faded orange bags, 4 pale black bags. +mirrored brown bags contain 1 light blue bag, 2 posh olive bags, 5 vibrant magenta bags. +mirrored gray bags contain no other bags. +dim aqua bags contain 3 bright tomato bags. +clear aqua bags contain 3 drab indigo bags, 4 light bronze bags, 5 drab teal bags. +dull yellow bags contain 4 dim magenta bags. +shiny indigo bags contain 4 wavy red bags, 3 dim salmon bags, 5 dull brown bags. +striped crimson bags contain 1 light green bag, 2 dull blue bags, 5 dotted olive bags. +mirrored yellow bags contain 4 dull maroon bags, 4 mirrored aqua bags. +drab aqua bags contain 1 drab teal bag, 1 dull gold bag, 4 dim red bags, 3 dim teal bags. +clear green bags contain no other bags. +plaid bronze bags contain 2 vibrant olive bags, 5 wavy green bags, 4 muted indigo bags. +mirrored black bags contain 2 striped red bags, 2 drab tomato bags, 4 shiny maroon bags, 1 striped gray bag. +muted purple bags contain 4 mirrored maroon bags, 2 dull white bags, 3 plaid salmon bags, 1 faded lime bag. +drab brown bags contain 3 vibrant maroon bags, 5 posh indigo bags, 2 light silver bags, 5 bright black bags. +light yellow bags contain 2 posh olive bags, 4 light turquoise bags. +mirrored indigo bags contain 5 pale maroon bags. +drab black bags contain 3 mirrored green bags. +shiny teal bags contain 2 dim plum bags, 4 dotted indigo bags, 1 mirrored lime bag, 2 light green bags. +striped chartreuse bags contain 2 dim olive bags, 1 wavy teal bag. +drab indigo bags contain 3 dull blue bags, 3 bright indigo bags, 1 dull purple bag. +faded crimson bags contain 2 vibrant gray bags. +posh white bags contain 2 shiny violet bags. +wavy purple bags contain 3 drab green bags, 5 muted purple bags, 1 dull teal bag. +dotted lime bags contain 2 drab teal bags. +dotted orange bags contain 2 bright salmon bags. +posh magenta bags contain 3 dotted silver bags. +striped yellow bags contain 1 dull chartreuse bag, 3 dark maroon bags, 3 faded orange bags, 3 shiny salmon bags. +dotted yellow bags contain 1 dim gold bag, 4 clear brown bags. +drab orange bags contain 2 mirrored crimson bags, 2 clear lavender bags, 3 faded bronze bags, 4 posh lavender bags. +dull coral bags contain 5 dim teal bags, 1 light gold bag, 2 drab lime bags, 3 faded lavender bags. +clear gold bags contain 5 drab green bags, 4 dim coral bags, 3 dim teal bags. +dim purple bags contain 4 bright aqua bags, 5 posh lavender bags, 5 vibrant salmon bags, 3 pale black bags. +clear salmon bags contain 1 vibrant orange bag, 1 faded orange bag, 5 dull tomato bags, 3 mirrored turquoise bags. +clear brown bags contain 5 faded bronze bags. +faded maroon bags contain 2 dotted blue bags, 4 plaid fuchsia bags, 5 light purple bags, 4 faded purple bags. +shiny red bags contain 5 mirrored crimson bags, 2 mirrored cyan bags, 2 dark bronze bags, 1 pale plum bag. +faded red bags contain 5 dotted yellow bags, 2 faded bronze bags. +dotted gold bags contain 4 vibrant coral bags, 1 clear turquoise bag. +wavy olive bags contain 5 light violet bags, 5 bright white bags, 3 vibrant chartreuse bags, 1 mirrored silver bag. +dark brown bags contain 3 muted blue bags. +dim salmon bags contain 1 dull silver bag, 5 vibrant purple bags. +dark chartreuse bags contain 3 dull beige bags, 3 light tan bags, 3 vibrant cyan bags. +clear tan bags contain 2 vibrant coral bags. +clear white bags contain 3 faded bronze bags. +dim yellow bags contain 4 plaid coral bags, 1 posh tomato bag, 4 striped turquoise bags. +bright indigo bags contain 4 dull magenta bags. +plaid gold bags contain 2 dark violet bags, 3 shiny blue bags, 5 drab indigo bags, 3 shiny orange bags. +dark aqua bags contain 3 faded indigo bags, 1 pale brown bag, 5 muted chartreuse bags. +light lime bags contain 5 muted teal bags. +dark teal bags contain 1 dark olive bag, 1 drab lavender bag, 2 mirrored purple bags, 1 pale teal bag. +faded turquoise bags contain 1 posh fuchsia bag. +mirrored plum bags contain 2 striped chartreuse bags. +clear beige bags contain 1 plaid blue bag, 5 faded gold bags, 5 mirrored crimson bags, 3 drab lavender bags. +dotted salmon bags contain 1 clear tan bag, 5 mirrored gold bags, 5 faded beige bags. +posh lavender bags contain 2 mirrored gray bags, 3 clear green bags, 5 dim teal bags. +bright white bags contain 1 posh gold bag, 5 mirrored silver bags. +dotted cyan bags contain 5 mirrored gray bags, 2 dull silver bags. +dim tomato bags contain 5 dull brown bags. +dotted brown bags contain 2 pale turquoise bags. +posh cyan bags contain 5 dim coral bags. +muted magenta bags contain 3 posh olive bags, 2 dark indigo bags. +pale purple bags contain 5 dotted cyan bags. +vibrant salmon bags contain 3 dim teal bags, 1 posh lavender bag, 2 pale purple bags, 4 plaid magenta bags. +mirrored gold bags contain 5 dark indigo bags, 4 mirrored indigo bags, 4 dotted cyan bags. +striped brown bags contain 5 posh tomato bags, 5 posh brown bags, 2 faded turquoise bags. +dark bronze bags contain 5 bright chartreuse bags, 4 striped teal bags, 2 muted black bags, 2 muted olive bags. +light silver bags contain 1 plaid cyan bag, 2 vibrant coral bags, 1 muted gray bag, 4 striped purple bags. +pale violet bags contain 3 posh teal bags, 1 dull beige bag, 2 plaid beige bags. +clear teal bags contain no other bags. +posh lime bags contain 1 dark coral bag, 5 bright teal bags, 5 bright cyan bags, 3 posh fuchsia bags. +light crimson bags contain 4 dotted beige bags. +muted lavender bags contain 1 light fuchsia bag, 2 shiny crimson bags, 2 drab purple bags. +plaid crimson bags contain 4 mirrored red bags, 1 posh chartreuse bag, 2 muted indigo bags, 1 plaid lavender bag. +light magenta bags contain 3 drab bronze bags, 1 dull olive bag. +bright yellow bags contain 4 plaid plum bags. +vibrant bronze bags contain 5 dotted red bags, 4 wavy silver bags, 4 dim lime bags. +bright blue bags contain 1 clear white bag, 1 wavy aqua bag. +dim turquoise bags contain 5 pale purple bags, 1 vibrant magenta bag, 1 vibrant turquoise bag, 3 shiny brown bags. +vibrant chartreuse bags contain 4 muted blue bags, 3 pale indigo bags, 1 dark black bag, 1 bright tomato bag. +light tan bags contain 2 mirrored beige bags, 5 dull turquoise bags. +wavy salmon bags contain 5 dull crimson bags, 2 bright salmon bags, 3 muted gold bags. +mirrored maroon bags contain 3 shiny brown bags, 1 shiny fuchsia bag. +pale teal bags contain 1 striped purple bag, 3 drab orange bags, 1 dull silver bag, 1 dark fuchsia bag. +striped tomato bags contain 2 dim orange bags. +light teal bags contain 1 dull tomato bag, 5 clear gold bags. +dark olive bags contain 5 striped white bags, 5 dim red bags. +wavy orange bags contain 1 clear green bag. +plaid brown bags contain 5 dull olive bags, 3 wavy gray bags, 1 dotted violet bag. +dim white bags contain 3 clear tan bags, 1 clear yellow bag, 1 pale crimson bag. +vibrant black bags contain 2 dim fuchsia bags, 1 dull lime bag, 3 faded magenta bags. +dotted aqua bags contain 4 posh tomato bags, 4 pale plum bags, 1 posh coral bag. +striped gold bags contain 5 dim orange bags, 2 drab green bags, 2 striped red bags, 3 muted violet bags. +dim gold bags contain 3 posh lavender bags, 4 drab green bags, 4 dim teal bags. +mirrored bronze bags contain 4 pale aqua bags, 4 faded orange bags. +mirrored beige bags contain 3 wavy gold bags. +dotted teal bags contain 3 dull indigo bags, 4 mirrored gold bags. +dark maroon bags contain 4 dark turquoise bags, 5 mirrored silver bags, 4 wavy bronze bags, 4 clear turquoise bags. +wavy teal bags contain 3 plaid fuchsia bags, 2 drab orange bags, 3 vibrant teal bags. +muted lime bags contain 5 bright blue bags, 3 light salmon bags. +plaid plum bags contain 2 wavy gold bags, 2 pale aqua bags. +striped indigo bags contain 5 faded black bags. +clear lavender bags contain no other bags. +dull tomato bags contain 3 dim lime bags. +shiny yellow bags contain 5 faded coral bags, 2 striped violet bags, 5 clear orange bags. +light lavender bags contain 5 dull maroon bags. +pale chartreuse bags contain 4 clear green bags. +posh turquoise bags contain 2 striped olive bags, 5 bright chartreuse bags. +bright lavender bags contain 4 dark white bags, 5 wavy coral bags. +shiny lavender bags contain 2 wavy lime bags, 2 wavy bronze bags. +light black bags contain 4 pale black bags, 4 pale purple bags, 5 drab lavender bags. +plaid maroon bags contain 1 clear teal bag, 3 clear lavender bags, 1 dim chartreuse bag, 2 vibrant teal bags. +striped cyan bags contain 4 posh fuchsia bags, 4 faded violet bags. +striped lavender bags contain 4 pale yellow bags. +posh purple bags contain 4 light tomato bags, 4 muted crimson bags. +dim crimson bags contain 5 wavy aqua bags, 2 pale maroon bags, 4 faded bronze bags. +muted fuchsia bags contain 2 striped gray bags, 4 posh gray bags, 5 clear white bags, 5 dotted orange bags. +drab turquoise bags contain 2 bright indigo bags. +vibrant purple bags contain 3 mirrored bronze bags. +bright olive bags contain 4 light bronze bags. +shiny plum bags contain 1 muted indigo bag, 2 light lime bags, 4 clear coral bags, 2 dim lavender bags. +dotted beige bags contain 1 plaid plum bag, 3 dark coral bags, 2 wavy indigo bags. +striped black bags contain 3 muted gold bags. +shiny orange bags contain 2 faded blue bags, 3 shiny green bags. +shiny coral bags contain 1 posh orange bag, 4 striped red bags, 4 muted yellow bags, 2 dull lavender bags. +vibrant yellow bags contain 2 dull fuchsia bags, 2 pale coral bags, 1 muted magenta bag, 3 drab turquoise bags. +shiny gold bags contain 5 mirrored crimson bags, 5 mirrored tan bags, 5 drab green bags, 5 shiny silver bags. +bright violet bags contain 2 vibrant white bags, 1 clear green bag, 3 faded yellow bags. +mirrored tan bags contain 2 dark black bags, 4 clear green bags, 2 bright cyan bags, 4 faded bronze bags. +posh indigo bags contain 4 pale plum bags, 1 dark brown bag, 4 dull crimson bags. +pale indigo bags contain 3 posh plum bags. +drab tan bags contain 1 light gray bag, 5 drab orange bags. +muted green bags contain 1 dotted violet bag, 4 dotted cyan bags. +light turquoise bags contain 2 posh brown bags. +dotted blue bags contain 1 posh purple bag, 4 plaid gray bags. +plaid silver bags contain 3 wavy maroon bags, 5 clear black bags, 5 shiny indigo bags, 2 striped gold bags. +dim plum bags contain 3 dotted fuchsia bags, 5 clear yellow bags, 4 striped red bags. +dotted chartreuse bags contain 1 clear yellow bag, 1 dim red bag, 4 dim turquoise bags, 1 mirrored orange bag. +dim blue bags contain 3 bright turquoise bags, 3 light blue bags, 2 wavy red bags. +faded gold bags contain 3 mirrored gray bags, 4 dotted cyan bags, 5 mirrored red bags, 4 shiny silver bags. +dull fuchsia bags contain 1 plaid cyan bag, 3 shiny purple bags. +dotted coral bags contain 5 muted aqua bags, 1 dark orange bag, 3 bright black bags. +striped bronze bags contain 5 mirrored purple bags, 2 wavy aqua bags. +faded silver bags contain 1 bright salmon bag, 1 striped olive bag, 3 vibrant turquoise bags. +vibrant white bags contain 5 muted crimson bags, 4 bright orange bags, 2 dark brown bags. +shiny fuchsia bags contain 2 dull silver bags, 1 wavy indigo bag, 5 shiny gold bags, 2 bright beige bags. +drab crimson bags contain 3 mirrored purple bags, 2 clear magenta bags, 3 light indigo bags, 5 clear brown bags. +posh aqua bags contain 2 dark brown bags, 2 shiny white bags. +pale tomato bags contain 5 posh gray bags, 1 wavy silver bag, 5 drab crimson bags, 2 dotted aqua bags. +wavy bronze bags contain 5 plaid coral bags. +dull white bags contain 4 shiny magenta bags, 1 clear olive bag, 5 posh silver bags, 4 dark blue bags. +shiny aqua bags contain 5 drab green bags, 4 dark maroon bags, 3 striped turquoise bags, 4 pale white bags. +wavy brown bags contain 1 faded gold bag, 2 bright aqua bags, 5 dotted tan bags, 3 vibrant crimson bags. +clear black bags contain 1 dull orange bag, 5 posh fuchsia bags, 2 mirrored cyan bags, 5 shiny gold bags. +posh tomato bags contain 4 pale plum bags. +vibrant fuchsia bags contain 4 drab olive bags, 1 drab bronze bag, 4 dull blue bags. +mirrored lavender bags contain 2 faded cyan bags, 3 mirrored bronze bags, 2 faded tan bags, 5 clear cyan bags. +mirrored lime bags contain 4 dull gray bags, 4 plaid beige bags. +faded chartreuse bags contain 3 light coral bags. +dim brown bags contain 3 pale yellow bags, 4 striped lime bags. +pale gold bags contain 3 striped plum bags. +mirrored chartreuse bags contain 2 striped salmon bags, 4 shiny teal bags, 4 wavy gold bags, 4 light magenta bags. +plaid white bags contain 5 faded orange bags, 4 dull tomato bags, 1 vibrant olive bag. +clear crimson bags contain 5 posh maroon bags, 5 muted white bags, 2 dim fuchsia bags, 4 pale maroon bags. +wavy tomato bags contain 3 dim tan bags, 4 dim orange bags, 1 mirrored tan bag, 4 posh indigo bags. +dim coral bags contain no other bags. +plaid magenta bags contain 2 clear gold bags, 1 posh orange bag. +wavy gold bags contain 1 plaid blue bag, 3 pale purple bags, 3 pale yellow bags. +wavy blue bags contain 2 light white bags, 5 pale magenta bags, 1 plaid lime bag, 5 faded cyan bags. +pale yellow bags contain 2 vibrant gray bags. +clear chartreuse bags contain 1 light gray bag, 1 dark tomato bag. +drab lavender bags contain 4 vibrant salmon bags. +dark turquoise bags contain 5 pale plum bags. +vibrant tan bags contain 5 plaid aqua bags. +vibrant green bags contain 4 vibrant red bags, 3 vibrant tomato bags. +plaid aqua bags contain 5 wavy silver bags, 5 faded silver bags. +pale brown bags contain 1 dark fuchsia bag, 3 drab green bags, 5 bright cyan bags. +drab olive bags contain 1 dull maroon bag, 4 dark maroon bags. +wavy cyan bags contain 2 muted blue bags, 4 clear beige bags. +dotted white bags contain 5 dull orange bags. +shiny green bags contain 2 vibrant gray bags, 3 vibrant tomato bags, 2 dark violet bags. +bright fuchsia bags contain 2 vibrant chartreuse bags, 2 dim orange bags, 4 clear orange bags, 5 posh fuchsia bags. +clear purple bags contain 2 dim gray bags, 1 shiny tan bag. +dotted lavender bags contain 3 posh gray bags, 4 dull beige bags, 5 plaid beige bags, 1 dull teal bag. +dull salmon bags contain 2 muted magenta bags, 4 muted purple bags, 2 light teal bags, 4 vibrant cyan bags. +dark green bags contain 3 clear lavender bags, 5 shiny silver bags. +dull maroon bags contain 2 dark fuchsia bags, 3 mirrored red bags, 3 mirrored gray bags, 5 dim lime bags. +clear bronze bags contain 2 dull turquoise bags, 4 dim olive bags, 3 wavy violet bags, 5 dotted bronze bags. +muted silver bags contain 1 clear green bag, 4 shiny tan bags. +dark lavender bags contain 5 dim gray bags, 4 dark teal bags. +light violet bags contain 2 light blue bags, 4 clear lavender bags, 4 dim teal bags. +vibrant violet bags contain 4 posh plum bags, 5 dark fuchsia bags. +posh teal bags contain 2 pale indigo bags, 5 plaid fuchsia bags, 3 muted gray bags. +posh crimson bags contain 5 bright gold bags. +dark yellow bags contain 4 muted gold bags, 2 dull aqua bags. +drab gold bags contain 4 dark maroon bags, 1 dim turquoise bag, 4 mirrored cyan bags. +dotted tan bags contain 5 plaid turquoise bags, 2 shiny aqua bags. +vibrant indigo bags contain 1 faded plum bag, 5 dark purple bags, 4 drab maroon bags, 3 dull teal bags. +muted olive bags contain 3 dull bronze bags, 3 drab salmon bags, 1 plaid magenta bag, 3 mirrored purple bags. +plaid purple bags contain 1 plaid turquoise bag, 1 muted olive bag, 1 shiny crimson bag. +dim lime bags contain 5 mirrored gray bags, 3 plaid magenta bags, 5 dark fuchsia bags, 2 bright beige bags. +muted violet bags contain 3 bright aqua bags, 2 pale brown bags, 3 dark fuchsia bags. +dark beige bags contain 3 vibrant fuchsia bags, 2 shiny white bags. +dim gray bags contain 3 mirrored violet bags, 1 plaid orange bag, 4 vibrant olive bags, 5 pale white bags. +pale cyan bags contain 4 dark red bags, 2 mirrored beige bags, 5 shiny purple bags, 3 dark fuchsia bags. +dim indigo bags contain 2 faded blue bags, 5 muted bronze bags. +shiny brown bags contain 4 vibrant salmon bags, 3 drab orange bags. +dull black bags contain 5 shiny cyan bags, 5 dark purple bags. +light white bags contain 2 mirrored beige bags, 2 faded turquoise bags. +dim fuchsia bags contain 4 drab salmon bags, 5 striped gray bags, 2 light gray bags. +striped gray bags contain 5 plaid white bags, 5 mirrored purple bags, 2 vibrant aqua bags, 4 muted indigo bags. +wavy lavender bags contain 3 dotted cyan bags, 3 bright chartreuse bags, 5 plaid black bags, 3 dotted gold bags. +dull blue bags contain 2 vibrant olive bags. +dark violet bags contain 4 muted white bags, 4 dim lime bags. +shiny maroon bags contain 3 dotted violet bags, 5 shiny brown bags, 2 light blue bags. +drab yellow bags contain 2 shiny fuchsia bags. +clear fuchsia bags contain 5 wavy gray bags, 4 wavy white bags, 4 drab gray bags, 4 bright indigo bags. +plaid coral bags contain 3 dull lime bags, 2 vibrant olive bags, 4 shiny gold bags. +dull beige bags contain 4 dull blue bags, 2 pale black bags, 5 dim coral bags. +plaid salmon bags contain 1 bright coral bag, 2 bright tomato bags, 4 dim tan bags, 4 shiny purple bags. +dim bronze bags contain 4 posh teal bags, 1 pale salmon bag. +dull magenta bags contain 3 dull lime bags, 2 light gold bags, 2 striped purple bags. +plaid fuchsia bags contain 5 dim lime bags, 5 bright cyan bags, 2 faded silver bags, 1 posh fuchsia bag. +dark plum bags contain 2 plaid green bags. +striped silver bags contain 5 clear silver bags, 2 dotted orange bags, 5 striped fuchsia bags, 4 posh bronze bags. +bright green bags contain 4 bright white bags, 4 mirrored lavender bags, 2 shiny blue bags. +wavy plum bags contain 4 light turquoise bags, 4 shiny violet bags, 5 dim blue bags. +bright chartreuse bags contain 5 dim gold bags. +dotted crimson bags contain 4 wavy beige bags. +dull bronze bags contain 2 muted white bags, 2 faded orange bags, 1 plaid blue bag. +dull crimson bags contain 5 pale black bags, 5 dim lime bags, 5 clear lavender bags, 4 faded orange bags. +striped red bags contain 3 shiny maroon bags, 5 muted yellow bags, 2 faded lavender bags, 2 dark olive bags. +clear magenta bags contain 4 dark coral bags. +plaid beige bags contain 4 vibrant purple bags, 5 drab salmon bags, 2 clear white bags, 5 dull olive bags. +dotted bronze bags contain 5 dull tomato bags, 5 clear lime bags, 2 clear gold bags, 5 mirrored indigo bags. +pale black bags contain 3 faded bronze bags, 3 dotted violet bags. +faded purple bags contain 1 light fuchsia bag, 4 dull violet bags. +clear plum bags contain 2 vibrant gray bags, 4 striped tan bags. +wavy black bags contain 5 mirrored turquoise bags. +dark coral bags contain 5 faded violet bags. +pale orange bags contain 3 mirrored red bags, 4 clear olive bags. \ No newline at end of file diff --git a/src/main/resources/2020/day8.txt b/src/main/resources/2020/day8.txt new file mode 100644 index 00000000..4d281cac --- /dev/null +++ b/src/main/resources/2020/day8.txt @@ -0,0 +1,591 @@ +acc -5 +acc +48 +acc -1 +acc +5 +jmp +426 +acc +8 +jmp +72 +acc +22 +nop +64 +acc +18 +jmp +447 +acc +9 +acc +21 +acc -1 +acc -18 +jmp +349 +jmp +475 +acc +10 +nop +273 +acc -12 +acc +16 +jmp +519 +jmp +315 +acc -15 +acc +7 +acc +41 +acc -3 +jmp +97 +acc +28 +jmp +245 +acc +20 +acc -13 +acc +14 +jmp +304 +acc +20 +nop +73 +acc +0 +jmp +308 +jmp +1 +acc +6 +acc -18 +nop -7 +jmp +327 +acc +39 +acc -14 +jmp +473 +jmp +1 +nop +31 +acc -17 +jmp +496 +nop +449 +jmp +163 +acc +50 +nop -31 +nop -11 +acc -7 +jmp +29 +nop +376 +nop +311 +acc +14 +acc -11 +jmp +24 +acc -13 +jmp +237 +jmp +518 +jmp +246 +jmp +380 +acc +40 +acc +17 +acc +42 +acc -14 +jmp +293 +acc +8 +acc +25 +acc +9 +nop +251 +jmp +464 +jmp +409 +jmp +452 +jmp +1 +acc -6 +jmp +230 +jmp +106 +acc -13 +jmp +40 +jmp +452 +acc +16 +jmp +37 +acc -11 +jmp +118 +acc -5 +nop +322 +acc +4 +jmp +425 +nop +61 +nop +190 +acc +37 +acc +44 +jmp +275 +acc +32 +jmp -78 +jmp +485 +nop -1 +acc +50 +jmp +424 +jmp +423 +acc +23 +jmp +460 +acc -11 +acc +10 +jmp -67 +acc -14 +acc -14 +acc +39 +acc -6 +jmp +331 +acc +12 +acc +7 +acc +29 +jmp +65 +nop -26 +jmp +1 +acc +45 +jmp +188 +acc +23 +acc +42 +acc +18 +acc +34 +jmp -94 +acc +35 +acc +0 +nop +282 +acc +33 +jmp +297 +acc +10 +acc +16 +jmp +142 +acc -9 +jmp +9 +acc +35 +jmp +15 +jmp +1 +acc -19 +acc +18 +jmp +156 +jmp +230 +jmp +421 +acc +33 +acc -2 +acc +24 +acc +17 +jmp -66 +acc +32 +acc +38 +jmp -76 +acc +13 +jmp +74 +acc +30 +acc +49 +jmp +220 +nop -44 +acc +36 +nop -23 +nop -29 +jmp +157 +acc -3 +acc -13 +jmp -124 +nop +350 +acc +29 +acc +7 +acc +42 +jmp +282 +acc -4 +acc +33 +acc +50 +acc +1 +jmp +101 +acc +13 +nop +369 +acc -11 +acc -2 +jmp +56 +jmp -5 +acc -1 +acc -1 +jmp +52 +jmp +246 +acc +38 +acc -11 +jmp +30 +acc +18 +nop +15 +jmp +67 +jmp -112 +acc -14 +jmp -8 +nop -73 +jmp +4 +acc +0 +nop +111 +jmp +317 +acc -17 +nop +108 +jmp +91 +acc +9 +jmp +324 +acc +35 +acc +9 +acc +31 +nop +208 +jmp +177 +acc -17 +jmp -135 +jmp +46 +nop +145 +acc +41 +acc -4 +acc -17 +jmp -147 +acc +8 +jmp +357 +acc +25 +jmp +231 +acc -19 +acc +46 +jmp +268 +acc -18 +acc +34 +jmp +3 +jmp -83 +jmp +294 +jmp +89 +nop +27 +acc +32 +acc -1 +acc +5 +jmp +230 +acc +9 +nop -92 +jmp -146 +acc +16 +nop +91 +jmp +251 +jmp +1 +acc +50 +jmp -49 +acc +28 +nop -60 +jmp -29 +nop +328 +acc -13 +jmp +115 +jmp +160 +jmp +1 +acc +34 +acc +44 +acc -18 +jmp +40 +jmp +305 +acc -18 +acc +44 +jmp -174 +acc +15 +nop -62 +jmp +275 +nop +34 +nop +59 +acc +27 +jmp -212 +acc +8 +acc +36 +acc +2 +jmp +27 +jmp -240 +acc +10 +acc +22 +jmp +225 +acc -13 +jmp +246 +jmp -230 +jmp +120 +acc -14 +acc -19 +jmp +261 +acc +8 +jmp -170 +acc -17 +acc +33 +acc +43 +jmp +16 +acc +6 +acc +25 +jmp +140 +jmp +12 +jmp -101 +acc +1 +jmp +67 +jmp +141 +jmp +219 +jmp -46 +acc +20 +acc +6 +acc +39 +acc +43 +jmp +32 +acc +46 +jmp -41 +acc -1 +acc +48 +jmp +220 +acc +13 +acc +33 +acc -9 +nop -206 +jmp -137 +acc +35 +acc +11 +acc -12 +acc -2 +jmp +1 +acc +11 +acc +15 +jmp -73 +jmp +1 +jmp +142 +jmp +1 +acc +29 +acc -7 +acc +45 +jmp -302 +acc -9 +jmp +5 +acc +14 +acc +5 +jmp -313 +jmp -86 +acc -11 +acc +13 +acc +3 +jmp +171 +acc -8 +acc +47 +nop +205 +jmp +181 +acc -19 +acc +26 +jmp -340 +acc +31 +acc +45 +acc +16 +acc +16 +jmp -41 +acc +44 +jmp +76 +acc +0 +acc +47 +acc +9 +acc -12 +jmp +159 +acc +21 +jmp -50 +jmp +1 +jmp -18 +acc +46 +jmp -5 +jmp +120 +jmp +51 +jmp +123 +acc +28 +nop -288 +jmp -293 +jmp -39 +jmp -309 +jmp -206 +jmp -274 +acc -10 +acc +39 +jmp +124 +acc +6 +acc -12 +acc -12 +jmp -294 +acc +30 +acc +42 +acc +30 +acc -17 +jmp -227 +nop -241 +acc +46 +jmp -64 +nop -106 +nop -25 +acc +48 +acc +48 +jmp -323 +acc +30 +acc -10 +jmp -382 +acc +44 +jmp -21 +acc -6 +jmp -102 +acc -17 +acc -13 +acc +23 +jmp -199 +acc +7 +acc +28 +acc +43 +jmp -186 +nop -105 +jmp -390 +acc +29 +nop +168 +acc +49 +jmp -9 +jmp -335 +acc +4 +jmp -86 +nop -348 +acc -17 +acc -12 +jmp +107 +acc +28 +jmp -72 +acc +17 +acc +31 +nop -10 +jmp -295 +acc +41 +jmp -271 +jmp -350 +nop -64 +acc -11 +acc +6 +jmp -198 +acc -5 +jmp -206 +acc +23 +jmp -390 +jmp +1 +jmp +1 +acc +9 +nop -91 +jmp -15 +acc +36 +acc +27 +acc +42 +jmp +18 +acc +20 +acc +10 +acc +44 +jmp +46 +jmp +110 +acc +31 +jmp -371 +acc +13 +acc -16 +nop -245 +acc +30 +jmp +38 +acc -6 +acc -14 +acc +21 +acc +46 +jmp -206 +acc +35 +acc +25 +acc +22 +acc -9 +jmp -92 +acc +20 +nop -113 +nop -189 +jmp -453 +acc +43 +acc -18 +acc -19 +acc -4 +jmp -364 +acc +35 +acc +44 +acc +19 +acc -13 +jmp -297 +acc -11 +acc +36 +nop -92 +jmp -93 +jmp -330 +acc +40 +jmp -248 +jmp -255 +acc +36 +acc +32 +jmp -190 +acc -15 +jmp -187 +jmp -23 +nop -268 +jmp -203 +acc -10 +acc +14 +acc -17 +nop -400 +jmp +61 +nop +60 +acc +17 +acc -9 +jmp -409 +acc +0 +acc +13 +acc +47 +acc -6 +jmp -102 +acc +37 +jmp -257 +acc -1 +acc +41 +acc +25 +jmp -397 +acc +9 +acc +31 +jmp -48 +acc -11 +jmp -332 +jmp -433 +jmp +30 +jmp +38 +acc +17 +nop -376 +nop -93 +acc +50 +jmp -249 +acc -10 +jmp -225 +acc +10 +jmp +35 +jmp -475 +acc +18 +jmp -250 +acc -12 +acc +25 +jmp -450 +jmp -411 +acc +45 +jmp -117 +acc -6 +acc +30 +acc -6 +nop -313 +jmp -271 +acc +22 +acc +13 +acc -12 +acc +4 +jmp -379 +acc +36 +acc +17 +acc +15 +acc +47 +jmp -417 +jmp +4 +jmp -332 +acc +23 +jmp -336 +acc +34 +acc +1 +acc +50 +acc +7 +jmp -466 +jmp -70 +acc +4 +nop +8 +acc +18 +jmp -28 +jmp -47 +jmp -410 +acc -1 +acc +3 +jmp -90 +acc +12 +acc +41 +jmp -98 +jmp -55 +acc +17 +nop -85 +acc +48 +acc +50 +jmp +1 \ No newline at end of file diff --git a/src/main/resources/2020/day9.txt b/src/main/resources/2020/day9.txt new file mode 100644 index 00000000..077d2442 --- /dev/null +++ b/src/main/resources/2020/day9.txt @@ -0,0 +1,1000 @@ +24 +27 +31 +3 +26 +29 +14 +16 +25 +15 +32 +6 +41 +22 +2 +1 +12 +8 +7 +4 +48 +13 +47 +34 +5 +18 +33 +11 +45 +3 +9 +10 +14 +21 +16 +15 +17 +20 +19 +6 +22 +23 +12 +8 +7 +26 +24 +13 +25 +27 +29 +18 +28 +35 +42 +30 +31 +32 +14 +33 +21 +46 +36 +37 +15 +19 +40 +63 +20 +22 +38 +67 +34 +39 +43 +41 +53 +29 +44 +45 +76 +84 +50 +35 +55 +42 +56 +74 +48 +73 +49 +58 +88 +51 +63 +64 +69 +68 +70 +71 +77 +78 +86 +85 +95 +90 +114 +138 +83 +91 +136 +206 +153 +97 +121 +119 +109 +115 +120 +131 +139 +137 +141 +207 +181 +155 +163 +173 +176 +174 +210 +180 +305 +192 +212 +369 +303 +228 +206 +224 +234 +229 +317 +251 +280 +350 +278 +296 +318 +379 +328 +336 +382 +497 +354 +372 +386 +440 +398 +418 +524 +587 +479 +430 +453 +707 +696 +812 +697 +664 +596 +574 +771 +722 +682 +1175 +690 +758 +1140 +726 +826 +784 +816 +897 +992 +883 +1066 +909 +1112 +1179 +1170 +1296 +1318 +2088 +1238 +1380 +1300 +1995 +1372 +1466 +1416 +1448 +1896 +1510 +1542 +2112 +1986 +1725 +1780 +3008 +1949 +1975 +3412 +2282 +2721 +2408 +2734 +2828 +2864 +3018 +3459 +2672 +2788 +2820 +2882 +2958 +3228 +3322 +4231 +3267 +4670 +3505 +3674 +4957 +4257 +4683 +4383 +5522 +4690 +5129 +5080 +5406 +5460 +5492 +5554 +6247 +8175 +5608 +10162 +8195 +9663 +6495 +6589 +6772 +7888 +10278 +8803 +9763 +8640 +13803 +9073 +10928 +10182 +9770 +10540 +10486 +10866 +10952 +11046 +14411 +14422 +12103 +17541 +16981 +18573 +13084 +18918 +24897 +14660 +16528 +17876 +17443 +17713 +18843 +19255 +19559 +19952 +24908 +20310 +35824 +21352 +25363 +24036 +23149 +31188 +25187 +26763 +27744 +29612 +39565 +38870 +40023 +32103 +57441 +38795 +38814 +35156 +36968 +38098 +39207 +39511 +44501 +41662 +43459 +64233 +91977 +47185 +65558 +48336 +51950 +54799 +66614 +90745 +82970 +71310 +76912 +67259 +69071 +74667 +79760 +72124 +73254 +86696 +134559 +86163 +120357 +85121 +115595 +109017 +95521 +146374 +99135 +100286 +103135 +106749 +121413 +140513 +136330 +138569 +139383 +141195 +172859 +142325 +145378 +151884 +157245 +171817 +186982 +198656 +171284 +237704 +180642 +202270 +194656 +195807 +243648 +240330 +305405 +209884 +276843 +274899 +310386 +275713 +279764 +302623 +483245 +287703 +393312 +297262 +309129 +367091 +471520 +412154 +375298 +455541 +376449 +382912 +668211 +470706 +493069 +450214 +484783 +585285 +486727 +977852 +550612 +555477 +578336 +590326 +584965 +596832 +606391 +673711 +664353 +1135059 +957433 +788603 +942268 +973281 +1005691 +759361 +1021318 +920920 +934997 +1378929 +1476397 +971510 +1037339 +1042204 +1796700 +1963894 +1133813 +1163301 +1175291 +1344326 +1385435 +1280102 +1338064 +1423714 +1934652 +2482088 +1760113 +1730871 +2285793 +1680281 +1972336 +2306355 +2421133 +1906507 +2008849 +2013714 +3844847 +2171152 +2761778 +3586788 +2501365 +2297114 +2338592 +3330221 +2618166 +2665537 +3010973 +5061092 +3103995 +3411152 +3440394 +3490984 +4269450 +4310828 +3652617 +3878843 +4807720 +3915356 +3920221 +4022563 +6889816 +4468266 +8460337 +6088153 +6806858 +4635706 +4915280 +4956758 +6931378 +6270783 +8936320 +6114968 +6515147 +6544389 +6851546 +7093011 +7143601 +7675180 +7531460 +7572838 +7794199 +8383622 +7835577 +7942784 +8490829 +11275124 +9103972 +11150853 +9550986 +9592464 +9872038 +11227541 +11071726 +12385751 +12630115 +14768191 +13658748 +13944557 +13395935 +13995147 +15248018 +14818781 +15104298 +19658746 +20778527 +18696436 +16219199 +15778361 +23309610 +23546133 +18654958 +18976010 +20622712 +22502153 +26625262 +20943764 +31323497 +36048062 +25015866 +28477529 +27054683 +27340492 +27391082 +28214716 +29923079 +39319148 +30882659 +31997560 +39640200 +34433319 +34474797 +61865879 +37630968 +39277670 +45995450 +39598722 +39919774 +45959630 +43445917 +64397876 +47998447 +54445765 +53230582 +59097375 +62648035 +68134490 +60805738 +76950116 +58137795 +69563279 +62880219 +77550742 +73710989 +68908116 +106136242 +72105765 +76908638 +121018014 +79197444 +106093952 +79518496 +83365691 +145084606 +96676499 +115878617 +120785830 +107676347 +111368377 +151624261 +118943533 +136591208 +127045911 +134985984 +127701074 +154459380 +131788335 +141013881 +142619105 +148426612 +156427134 +149014403 +281505291 +158715940 +180042190 +189459643 +239295604 +191042038 +228464834 +236664447 +300828020 +219044724 +226619880 +298985723 +255534741 +245989444 +373035355 +290504275 +259489409 +268714955 +272802216 +280802738 +283632986 +291045717 +394416056 +305441537 +307730343 +371084228 +338758130 +599549062 +380501681 +573630236 +410086762 +501267050 +527168722 +519872744 +528204364 +517665597 +373803594 +586244275 +574156492 +532291625 +540292147 +578243753 +1028435772 +685943218 +856423727 +574678703 +596487254 +613171880 +644199667 +646488473 +709842358 +986975474 +1101325214 +906095219 +1106448117 +937255484 +914095741 +891469191 +1145463505 +1049957222 +947960086 +948482297 +1152400245 +1072583772 +1106970328 +1118535900 +1299115098 +1600147354 +1510582995 +1828724675 +1221167176 +1209659134 +1323014238 +2220425353 +1594970770 +2066495986 +1820190960 +1797564410 +1805564932 +1998439519 +1851351225 +1839429277 +2355122639 +2169649473 +3405079861 +2542930856 +2021066069 +2662983240 +2179554100 +2225506228 +2328195034 +3219606695 +2821314530 +2430826310 +2532673372 +3060596453 +2804629904 +4702322845 +3392535180 +3415161730 +3617755370 +3603129342 +6150428742 +3644994209 +4167624311 +3860495346 +4009078750 +4190715542 +4200620169 +5337303276 +5865226357 +5593269825 +7921464859 +4405060328 +7032917100 +5845988040 +5252140840 +4963499682 +5491422763 +6135802714 +9136416972 +6219791634 +9692042932 +7770753653 +7018291072 +7220884712 +7248123551 +7505489555 +7654072959 +11223632642 +7869574096 +8199794292 +8391335711 +8605680497 +10556769507 +12509713835 +13364023478 +10454922445 +9368560010 +11337410803 +10215640522 +10743563603 +11099302396 +11711214397 +12355594348 +13238082706 +13440676346 +14672364031 +26678759052 +14469008263 +14726374267 +18613137699 +15159562514 +19911008689 +16069368388 +22571234870 +21724154358 +16997016208 +17974240507 +19584200532 +19823482455 +20112123613 +21314942918 +20467862406 +27406779191 +23656316868 +21842865999 +22810516793 +28113040377 +25593677054 +27909684609 +28167050613 +36515230030 +29195382530 +35653568920 +34310574799 +41753874688 +31228930902 +48279174226 +48580902783 +44534671151 +65410191556 +48377547015 +37558441039 +40052062938 +77474556756 +40579986019 +50977567406 +42310728405 +44653382792 +70220413014 +47436543053 +67744160932 +53503361663 +54789059584 +56076735222 +84732292565 +60424313432 +63505957329 +65539505701 +93030929807 +68787371941 +71280993840 +77610503977 +78138427058 +79869169444 +80632048957 +82211823831 +82890714424 +155612983814 +162342796542 +117656956067 +175242753638 +105077696224 +92089925845 +107860856485 +242986914570 +108292421247 +119042867364 +150999195772 +154171708264 +330855737452 +143677932759 +129045463030 +136820499541 +140068365781 +238503698238 +148891497817 +165102538255 +162080993275 +160501218401 +162843872788 +270203653027 +201933581788 +225949377314 +197167622069 +199950782330 +224120563588 +200382347092 +211132793209 +285711997358 +227335288611 +291889335818 +616567734810 +265865962571 +283217171294 +269113828811 +272723395789 +276888865322 +493822917606 +472137234815 +324924866063 +309392716218 +432284646302 +322582211676 +323345091189 +360011494857 +397118404399 +467799544359 +400333129422 +397549969161 +411083575539 +424502910680 +411515140301 +546002694133 +493201251182 +496449117422 +608142037357 +669404211075 +595305607465 +541837224600 +549612261111 +582116112007 +600233956511 +632737807407 +648269957252 +682593706533 +631974927894 +720132180837 +645927302865 +893999086583 +1019657177658 +1093907121755 +868132673781 +1328274218194 +809065109462 +822598715840 +836018050981 +904716391483 +1078565229429 +1315437788302 +1038286342022 +1131728373118 +1091449485711 +1123953336607 +1214853919414 +1149846217622 +1264709818540 +1232208884405 +1264712735301 +1454573643734 +1536691319377 +1940793482580 +1529197290299 +1454992412327 +2151385550776 +2353724130324 +2397329964080 +1631663825302 +3808297774058 +1645083160443 +3851903607814 +2116851571451 +1943002733505 +2578945748934 +2129735827733 +2215402822318 +2223177858829 +2877292044848 +2273799554229 +2364700137036 +2719705147628 +2793910025600 +2496921619706 +3996363962338 +2984189702626 +2991683731704 +6843587339518 +3086656237629 +3606377963103 +3276746985745 +3761399653035 +3574666558807 +3588085893948 +3761934731894 +3774818988176 +4708681576667 +4836556719079 +4072738561238 +5855692734679 +5374213664554 +4438580681147 +4496977413058 +5550546539974 +4638499691265 +5481111322332 +5216626767334 +5290831645306 +6661322796436 +5975873434330 +6070845940255 +6363403223374 +6674742131577 +6693034200732 +8103355376161 +6851413544552 +7162752452755 +11601333133902 +8483500564843 +9243046054226 +7847557549414 +11266705079636 +9077080372412 +8569715974296 +11406239274653 +8935558094205 +9135477104323 +10614373125595 +9855126458599 +9929331336571 +14352103871657 +11654234868680 +17307407326327 +13526155676129 +12046719374585 +14174201316416 +13038145354951 +17646796346708 +13544447745284 +19098172512825 +14014165997307 +15010310002169 +25440906396052 +16331058114257 +16417273523710 +20731315241092 +17505274068501 +17705193078619 +18071035198528 +18790684552804 +18864889430776 +18990603562922 +38038722567419 +19784457795170 +23455487012700 +25084864729536 +23700954243265 +28554757747453 +25572875050714 +31109180553479 +31828829907755 +31191244091992 +39455072393359 +31719359075926 +29024475999476 +32515584070670 +31341368116426 +34036251192876 +32748331637967 +33922547592211 +35210467147120 +35576309267029 +63939575729959 +36861719751332 \ No newline at end of file diff --git a/src/main/resources/2021-examples/day1-1.txt b/src/main/resources/2021-examples/day1-1.txt new file mode 100644 index 00000000..167e2917 --- /dev/null +++ b/src/main/resources/2021-examples/day1-1.txt @@ -0,0 +1,10 @@ +199 +200 +208 +210 +200 +207 +240 +269 +260 +263 diff --git a/src/main/resources/2021-examples/day1-2.txt b/src/main/resources/2021-examples/day1-2.txt new file mode 100644 index 00000000..348925e7 --- /dev/null +++ b/src/main/resources/2021-examples/day1-2.txt @@ -0,0 +1,10 @@ +199 (N/A - no previous measurement) +200 (increased) +208 (increased) +210 (increased) +200 (decreased) +207 (increased) +240 (increased) +269 (increased) +260 (decreased) +263 (increased) diff --git a/src/main/resources/2021-examples/day1-3.txt b/src/main/resources/2021-examples/day1-3.txt new file mode 100644 index 00000000..37f69528 --- /dev/null +++ b/src/main/resources/2021-examples/day1-3.txt @@ -0,0 +1,10 @@ +199 A +200 A B +208 A B C +210 B C D +200 E C D +207 E F D +240 E F G +269 F G H +260 G H +263 H diff --git a/src/main/resources/2021-examples/day1-4.txt b/src/main/resources/2021-examples/day1-4.txt new file mode 100644 index 00000000..94f9d56b --- /dev/null +++ b/src/main/resources/2021-examples/day1-4.txt @@ -0,0 +1,8 @@ +A: 607 (N/A - no previous sum) +B: 618 (increased) +C: 618 (no change) +D: 617 (decreased) +E: 647 (increased) +F: 716 (increased) +G: 769 (increased) +H: 792 (increased) diff --git a/src/main/resources/2021-examples/day10-1.txt b/src/main/resources/2021-examples/day10-1.txt new file mode 100644 index 00000000..1d2d383f --- /dev/null +++ b/src/main/resources/2021-examples/day10-1.txt @@ -0,0 +1 @@ +{<[[]]>}<{[{[{[]{()[[[] diff --git a/src/main/resources/2021-examples/day10-2.txt b/src/main/resources/2021-examples/day10-2.txt new file mode 100644 index 00000000..e756077f --- /dev/null +++ b/src/main/resources/2021-examples/day10-2.txt @@ -0,0 +1,10 @@ +[({(<(())[]>[[{[]{<()<>> +[(()[<>])]({[<{<<[]>>( +{([(<{}[<>[]}>{[]{[(<()> +(((({<>}<{<{<>}{[]{[]{} +[[<[([]))<([[{}[[()]]] +[{[{({}]{}}([{[{{{}}([] +{<[[]]>}<{[{[{[]{()[[[] +[<(<(<(<{}))><([]([]() +<{([([[(<>()){}]>(<<{{ +<{([{{}}[<[[[<>{}]]]>[]] diff --git a/src/main/resources/2021-examples/day11-1.txt b/src/main/resources/2021-examples/day11-1.txt new file mode 100644 index 00000000..03743f6c --- /dev/null +++ b/src/main/resources/2021-examples/day11-1.txt @@ -0,0 +1,10 @@ +5483143223 +2745854711 +5264556173 +6141336146 +6357385478 +4167524645 +2176841721 +6882881134 +4846848554 +5283751526 diff --git a/src/main/resources/2021-examples/day11-2.txt b/src/main/resources/2021-examples/day11-2.txt new file mode 100644 index 00000000..2c7d0972 --- /dev/null +++ b/src/main/resources/2021-examples/day11-2.txt @@ -0,0 +1,20 @@ +Before any steps: +11111 +19991 +19191 +19991 +11111 + +After step 1: +34543 +40004 +50005 +40004 +34543 + +After step 2: +45654 +51115 +61116 +51115 +45654 diff --git a/src/main/resources/2021-examples/day11-3.txt b/src/main/resources/2021-examples/day11-3.txt new file mode 100644 index 00000000..f11e0007 --- /dev/null +++ b/src/main/resources/2021-examples/day11-3.txt @@ -0,0 +1,131 @@ +Before any steps: +5483143223 +2745854711 +5264556173 +6141336146 +6357385478 +4167524645 +2176841721 +6882881134 +4846848554 +5283751526 + +After step 1: +6594254334 +3856965822 +6375667284 +7252447257 +7468496589 +5278635756 +3287952832 +7993992245 +5957959665 +6394862637 + +After step 2: +8807476555 +5089087054 +8597889608 +8485769600 +8700908800 +6600088989 +6800005943 +0000007456 +9000000876 +8700006848 + +After step 3: +0050900866 +8500800575 +9900000039 +9700000041 +9935080063 +7712300000 +7911250009 +2211130000 +0421125000 +0021119000 + +After step 4: +2263031977 +0923031697 +0032221150 +0041111163 +0076191174 +0053411122 +0042361120 +5532241122 +1532247211 +1132230211 + +After step 5: +4484144000 +2044144000 +2253333493 +1152333274 +1187303285 +1164633233 +1153472231 +6643352233 +2643358322 +2243341322 + +After step 6: +5595255111 +3155255222 +3364444605 +2263444496 +2298414396 +2275744344 +2264583342 +7754463344 +3754469433 +3354452433 + +After step 7: +6707366222 +4377366333 +4475555827 +3496655709 +3500625609 +3509955566 +3486694453 +8865585555 +4865580644 +4465574644 + +After step 8: +7818477333 +5488477444 +5697666949 +4608766830 +4734946730 +4740097688 +6900007564 +0000009666 +8000004755 +6800007755 + +After step 9: +9060000644 +7800000976 +6900000080 +5840000082 +5858000093 +6962400000 +8021250009 +2221130009 +9111128097 +7911119976 + +After step 10: +0481112976 +0031112009 +0041112504 +0081111406 +0099111306 +0093511233 +0442361130 +5532252350 +0532250600 +0032240000 diff --git a/src/main/resources/2021-examples/day11-4.txt b/src/main/resources/2021-examples/day11-4.txt new file mode 100644 index 00000000..49569b7a --- /dev/null +++ b/src/main/resources/2021-examples/day11-4.txt @@ -0,0 +1,107 @@ +After step 20: +3936556452 +5686556806 +4496555690 +4448655580 +4456865570 +5680086577 +7000009896 +0000000344 +6000000364 +4600009543 + +After step 30: +0643334118 +4253334611 +3374333458 +2225333337 +2229333338 +2276733333 +2754574565 +5544458511 +9444447111 +7944446119 + +After step 40: +6211111981 +0421111119 +0042111115 +0003111115 +0003111116 +0065611111 +0532351111 +3322234597 +2222222976 +2222222762 + +After step 50: +9655556447 +4865556805 +4486555690 +4458655580 +4574865570 +5700086566 +6000009887 +8000000533 +6800000633 +5680000538 + +After step 60: +2533334200 +2743334640 +2264333458 +2225333337 +2225333338 +2287833333 +3854573455 +1854458611 +1175447111 +1115446111 + +After step 70: +8211111164 +0421111166 +0042111114 +0004211115 +0000211116 +0065611111 +0532351111 +7322235117 +5722223475 +4572222754 + +After step 80: +1755555697 +5965555609 +4486555680 +4458655580 +4570865570 +5700086566 +7000008666 +0000000990 +0000000800 +0000000000 + +After step 90: +7433333522 +2643333522 +2264333458 +2226433337 +2222433338 +2287833333 +2854573333 +4854458333 +3387779333 +3333333333 + +After step 100: +0397666866 +0749766918 +0053976933 +0004297822 +0004229892 +0053222877 +0532222966 +9322228966 +7922286866 +6789998766 diff --git a/src/main/resources/2021-examples/day12-1.txt b/src/main/resources/2021-examples/day12-1.txt new file mode 100644 index 00000000..6fd8c415 --- /dev/null +++ b/src/main/resources/2021-examples/day12-1.txt @@ -0,0 +1,7 @@ +start-A +start-b +A-c +A-b +b-d +A-end +b-end diff --git a/src/main/resources/2021-examples/day12-2.txt b/src/main/resources/2021-examples/day12-2.txt new file mode 100644 index 00000000..7048cd54 --- /dev/null +++ b/src/main/resources/2021-examples/day12-2.txt @@ -0,0 +1,5 @@ + start + / \ +c--A-----b--d + \ / + end diff --git a/src/main/resources/2021-examples/day12-3.txt b/src/main/resources/2021-examples/day12-3.txt new file mode 100644 index 00000000..ef84176a --- /dev/null +++ b/src/main/resources/2021-examples/day12-3.txt @@ -0,0 +1,10 @@ +start,A,b,A,c,A,end +start,A,b,A,end +start,A,b,end +start,A,c,A,b,A,end +start,A,c,A,b,end +start,A,c,A,end +start,A,end +start,b,A,c,A,end +start,b,A,end +start,b,end diff --git a/src/main/resources/2021-examples/day12-4.txt b/src/main/resources/2021-examples/day12-4.txt new file mode 100644 index 00000000..62cc7147 --- /dev/null +++ b/src/main/resources/2021-examples/day12-4.txt @@ -0,0 +1,10 @@ +dc-end +HN-start +start-kj +dc-start +dc-HN +LN-dc +HN-end +kj-sa +kj-HN +kj-dc diff --git a/src/main/resources/2021-examples/day12-5.txt b/src/main/resources/2021-examples/day12-5.txt new file mode 100644 index 00000000..bbafd511 --- /dev/null +++ b/src/main/resources/2021-examples/day12-5.txt @@ -0,0 +1,19 @@ +start,HN,dc,HN,end +start,HN,dc,HN,kj,HN,end +start,HN,dc,end +start,HN,dc,kj,HN,end +start,HN,end +start,HN,kj,HN,dc,HN,end +start,HN,kj,HN,dc,end +start,HN,kj,HN,end +start,HN,kj,dc,HN,end +start,HN,kj,dc,end +start,dc,HN,end +start,dc,HN,kj,HN,end +start,dc,end +start,dc,kj,HN,end +start,kj,HN,dc,HN,end +start,kj,HN,dc,end +start,kj,HN,end +start,kj,dc,HN,end +start,kj,dc,end diff --git a/src/main/resources/2021-examples/day12-6.txt b/src/main/resources/2021-examples/day12-6.txt new file mode 100644 index 00000000..65f38333 --- /dev/null +++ b/src/main/resources/2021-examples/day12-6.txt @@ -0,0 +1,18 @@ +fs-end +he-DX +fs-he +start-DX +pj-DX +end-zg +zg-sl +zg-pj +pj-he +RW-he +fs-DX +pj-RW +zg-RW +start-pj +he-WI +zg-he +pj-fs +start-RW diff --git a/src/main/resources/2021-examples/day13-1.txt b/src/main/resources/2021-examples/day13-1.txt new file mode 100644 index 00000000..bc63ff84 --- /dev/null +++ b/src/main/resources/2021-examples/day13-1.txt @@ -0,0 +1,2 @@ +Congratulations on your purchase! To activate this infrared thermal imaging +camera system, please enter the code found on page 1 of the manual. diff --git a/src/main/resources/2021-examples/day13-2.txt b/src/main/resources/2021-examples/day13-2.txt new file mode 100644 index 00000000..282114cf --- /dev/null +++ b/src/main/resources/2021-examples/day13-2.txt @@ -0,0 +1,21 @@ +6,10 +0,14 +9,10 +0,3 +10,4 +4,11 +6,0 +6,12 +4,1 +0,13 +10,12 +3,4 +3,0 +8,4 +1,10 +2,14 +8,10 +9,0 + +fold along y=7 +fold along x=5 diff --git a/src/main/resources/2021-examples/day13-3.txt b/src/main/resources/2021-examples/day13-3.txt new file mode 100644 index 00000000..4a6d6fe3 --- /dev/null +++ b/src/main/resources/2021-examples/day13-3.txt @@ -0,0 +1,15 @@ +...#..#..#. +....#...... +........... +#.......... +...#....#.# +........... +........... +........... +........... +........... +.#....#.##. +....#...... +......#...# +#.......... +#.#........ diff --git a/src/main/resources/2021-examples/day13-4.txt b/src/main/resources/2021-examples/day13-4.txt new file mode 100644 index 00000000..eb2caa0f --- /dev/null +++ b/src/main/resources/2021-examples/day13-4.txt @@ -0,0 +1,15 @@ +...#..#..#. +....#...... +........... +#.......... +...#....#.# +........... +........... +----------- +........... +........... +.#....#.##. +....#...... +......#...# +#.......... +#.#........ diff --git a/src/main/resources/2021-examples/day13-5.txt b/src/main/resources/2021-examples/day13-5.txt new file mode 100644 index 00000000..8d475a31 --- /dev/null +++ b/src/main/resources/2021-examples/day13-5.txt @@ -0,0 +1,7 @@ +#.##..#..#. +#...#...... +......#...# +#...#...... +.#.#..#.### +........... +........... diff --git a/src/main/resources/2021-examples/day13-6.txt b/src/main/resources/2021-examples/day13-6.txt new file mode 100644 index 00000000..bfcca033 --- /dev/null +++ b/src/main/resources/2021-examples/day13-6.txt @@ -0,0 +1,7 @@ +#.##.|#..#. +#...#|..... +.....|#...# +#...#|..... +.#.#.|#.### +.....|..... +.....|..... diff --git a/src/main/resources/2021-examples/day13-7.txt b/src/main/resources/2021-examples/day13-7.txt new file mode 100644 index 00000000..d59120b0 --- /dev/null +++ b/src/main/resources/2021-examples/day13-7.txt @@ -0,0 +1,7 @@ +##### +#...# +#...# +#...# +##### +..... +..... diff --git a/src/main/resources/2021-examples/day14-1.txt b/src/main/resources/2021-examples/day14-1.txt new file mode 100644 index 00000000..b5594ddf --- /dev/null +++ b/src/main/resources/2021-examples/day14-1.txt @@ -0,0 +1,18 @@ +NNCB + +CH -> B +HH -> N +CB -> H +NH -> C +HB -> C +HC -> B +HN -> C +NN -> C +BH -> H +NC -> B +NB -> B +BN -> B +BB -> N +BC -> B +CC -> N +CN -> C diff --git a/src/main/resources/2021-examples/day14-2.txt b/src/main/resources/2021-examples/day14-2.txt new file mode 100644 index 00000000..71d2d9e5 --- /dev/null +++ b/src/main/resources/2021-examples/day14-2.txt @@ -0,0 +1,5 @@ +Template: NNCB +After step 1: NCNBCHB +After step 2: NBCCNBBBCBHCB +After step 3: NBBBCNCCNBBNBNBBCHBHHBCHB +After step 4: NBBNBNBBCCNBCNCCNBBNBBNBBBNBBNBBCBHCBHHNHCBBCBHCB diff --git a/src/main/resources/2021-examples/day15-1.txt b/src/main/resources/2021-examples/day15-1.txt new file mode 100644 index 00000000..ab80887e --- /dev/null +++ b/src/main/resources/2021-examples/day15-1.txt @@ -0,0 +1,10 @@ +1163751742 +1381373672 +2136511328 +3694931569 +7463417111 +1319128137 +1359912421 +3125421639 +1293138521 +2311944581 diff --git a/src/main/resources/2021-examples/day15-2.txt b/src/main/resources/2021-examples/day15-2.txt new file mode 100644 index 00000000..ab80887e --- /dev/null +++ b/src/main/resources/2021-examples/day15-2.txt @@ -0,0 +1,10 @@ +1163751742 +1381373672 +2136511328 +3694931569 +7463417111 +1319128137 +1359912421 +3125421639 +1293138521 +2311944581 diff --git a/src/main/resources/2021-examples/day16-1.txt b/src/main/resources/2021-examples/day16-1.txt new file mode 100644 index 00000000..6f3b77b4 --- /dev/null +++ b/src/main/resources/2021-examples/day16-1.txt @@ -0,0 +1,16 @@ +0 = 0000 +1 = 0001 +2 = 0010 +3 = 0011 +4 = 0100 +5 = 0101 +6 = 0110 +7 = 0111 +8 = 1000 +9 = 1001 +A = 1010 +B = 1011 +C = 1100 +D = 1101 +E = 1110 +F = 1111 diff --git a/src/main/resources/2021-examples/day16-2.txt b/src/main/resources/2021-examples/day16-2.txt new file mode 100644 index 00000000..e9e6c2dc --- /dev/null +++ b/src/main/resources/2021-examples/day16-2.txt @@ -0,0 +1,2 @@ +110100101111111000101000 +VVVTTTAAAAABBBBBCCCCC diff --git a/src/main/resources/2021-examples/day16-3.txt b/src/main/resources/2021-examples/day16-3.txt new file mode 100644 index 00000000..d2d7df74 --- /dev/null +++ b/src/main/resources/2021-examples/day16-3.txt @@ -0,0 +1,2 @@ +00111000000000000110111101000101001010010001001000000000 +VVVTTTILLLLLLLLLLLLLLLAAAAAAAAAAABBBBBBBBBBBBBBBB diff --git a/src/main/resources/2021-examples/day16-4.txt b/src/main/resources/2021-examples/day16-4.txt new file mode 100644 index 00000000..2651a833 --- /dev/null +++ b/src/main/resources/2021-examples/day16-4.txt @@ -0,0 +1,2 @@ +11101110000000001101010000001100100000100011000001100000 +VVVTTTILLLLLLLLLLLAAAAAAAAAAABBBBBBBBBBBCCCCCCCCCCC diff --git a/src/main/resources/2021-examples/day17-1.txt b/src/main/resources/2021-examples/day17-1.txt new file mode 100644 index 00000000..a07e02d3 --- /dev/null +++ b/src/main/resources/2021-examples/day17-1.txt @@ -0,0 +1 @@ +target area: x=20..30, y=-10..-5 diff --git a/src/main/resources/2021-examples/day17-2.txt b/src/main/resources/2021-examples/day17-2.txt new file mode 100644 index 00000000..b7bfb0fb --- /dev/null +++ b/src/main/resources/2021-examples/day17-2.txt @@ -0,0 +1,14 @@ +.............#....#............ +.......#..............#........ +............................... +S........................#..... +............................... +............................... +...........................#... +............................... +....................TTTTTTTTTTT +....................TTTTTTTTTTT +....................TTTTTTTT#TT +....................TTTTTTTTTTT +....................TTTTTTTTTTT +....................TTTTTTTTTTT diff --git a/src/main/resources/2021-examples/day17-3.txt b/src/main/resources/2021-examples/day17-3.txt new file mode 100644 index 00000000..d98a0fc4 --- /dev/null +++ b/src/main/resources/2021-examples/day17-3.txt @@ -0,0 +1,17 @@ +...............#..#............ +...........#........#.......... +............................... +......#..............#......... +............................... +............................... +S....................#......... +............................... +............................... +............................... +.....................#......... +....................TTTTTTTTTTT +....................TTTTTTTTTTT +....................TTTTTTTTTTT +....................TTTTTTTTTTT +....................T#TTTTTTTTT +....................TTTTTTTTTTT diff --git a/src/main/resources/2021-examples/day17-4.txt b/src/main/resources/2021-examples/day17-4.txt new file mode 100644 index 00000000..0d65d8dd --- /dev/null +++ b/src/main/resources/2021-examples/day17-4.txt @@ -0,0 +1,11 @@ +S........#..................... +.................#............. +............................... +........................#...... +............................... +....................TTTTTTTTTTT +....................TTTTTTTTTT# +....................TTTTTTTTTTT +....................TTTTTTTTTTT +....................TTTTTTTTTTT +....................TTTTTTTTTTT diff --git a/src/main/resources/2021-examples/day17-5.txt b/src/main/resources/2021-examples/day17-5.txt new file mode 100644 index 00000000..68f68519 --- /dev/null +++ b/src/main/resources/2021-examples/day17-5.txt @@ -0,0 +1,23 @@ +S.............................................................. +............................................................... +............................................................... +............................................................... +.................#............................................. +....................TTTTTTTTTTT................................ +....................TTTTTTTTTTT................................ +....................TTTTTTTTTTT................................ +....................TTTTTTTTTTT................................ +....................TTTTTTTTTTT..#............................. +....................TTTTTTTTTTT................................ +............................................................... +............................................................... +............................................................... +............................................................... +................................................#.............. +............................................................... +............................................................... +............................................................... +............................................................... +............................................................... +............................................................... +..............................................................# diff --git a/src/main/resources/2021-examples/day18-1.txt b/src/main/resources/2021-examples/day18-1.txt new file mode 100644 index 00000000..93e9d14a --- /dev/null +++ b/src/main/resources/2021-examples/day18-1.txt @@ -0,0 +1,7 @@ +[1,2] +[[1,2],3] +[9,[8,7]] +[[1,9],[8,5]] +[[[[1,2],[3,4]],[[5,6],[7,8]]],9] +[[[9,[3,8]],[[0,9],6]],[[[3,7],[4,9]],3]] +[[[[1,3],[5,3]],[[1,3],[8,7]]],[[[4,9],[6,9]],[[8,2],[7,3]]]] diff --git a/src/main/resources/2021-examples/day18-2.txt b/src/main/resources/2021-examples/day18-2.txt new file mode 100644 index 00000000..2d0ec334 --- /dev/null +++ b/src/main/resources/2021-examples/day18-2.txt @@ -0,0 +1,6 @@ +after addition: [[[[[4,3],4],4],[7,[[8,4],9]]],[1,1]] +after explode: [[[[0,7],4],[7,[[8,4],9]]],[1,1]] +after explode: [[[[0,7],4],[15,[0,13]]],[1,1]] +after split: [[[[0,7],4],[[7,8],[0,13]]],[1,1]] +after split: [[[[0,7],4],[[7,8],[0,[6,7]]]],[1,1]] +after explode: [[[[0,7],4],[[7,8],[6,0]]],[8,1]] diff --git a/src/main/resources/2021-examples/day18-3.txt b/src/main/resources/2021-examples/day18-3.txt new file mode 100644 index 00000000..f212f838 --- /dev/null +++ b/src/main/resources/2021-examples/day18-3.txt @@ -0,0 +1,4 @@ +[1,1] +[2,2] +[3,3] +[4,4] diff --git a/src/main/resources/2021-examples/day18-4.txt b/src/main/resources/2021-examples/day18-4.txt new file mode 100644 index 00000000..13fdd197 --- /dev/null +++ b/src/main/resources/2021-examples/day18-4.txt @@ -0,0 +1,5 @@ +[1,1] +[2,2] +[3,3] +[4,4] +[5,5] diff --git a/src/main/resources/2021-examples/day18-5.txt b/src/main/resources/2021-examples/day18-5.txt new file mode 100644 index 00000000..85acce58 --- /dev/null +++ b/src/main/resources/2021-examples/day18-5.txt @@ -0,0 +1,6 @@ +[1,1] +[2,2] +[3,3] +[4,4] +[5,5] +[6,6] diff --git a/src/main/resources/2021-examples/day18-6.txt b/src/main/resources/2021-examples/day18-6.txt new file mode 100644 index 00000000..70e9071b --- /dev/null +++ b/src/main/resources/2021-examples/day18-6.txt @@ -0,0 +1,10 @@ +[[[0,[4,5]],[0,0]],[[[4,5],[2,6]],[9,5]]] +[7,[[[3,7],[4,3]],[[6,3],[8,8]]]] +[[2,[[0,8],[3,4]]],[[[6,7],1],[7,[1,6]]]] +[[[[2,4],7],[6,[0,5]]],[[[6,8],[2,8]],[[2,1],[4,5]]]] +[7,[5,[[3,8],[1,4]]]] +[[2,[2,2]],[8,[8,1]]] +[2,9] +[1,[[[9,3],9],[[9,0],[0,7]]]] +[[[5,[7,4]],7],1] +[[[[4,2],2],6],[8,7]] diff --git a/src/main/resources/2021-examples/day18-7.txt b/src/main/resources/2021-examples/day18-7.txt new file mode 100644 index 00000000..d66a0b54 --- /dev/null +++ b/src/main/resources/2021-examples/day18-7.txt @@ -0,0 +1,35 @@ + [[[0,[4,5]],[0,0]],[[[4,5],[2,6]],[9,5]]] ++ [7,[[[3,7],[4,3]],[[6,3],[8,8]]]] += [[[[4,0],[5,4]],[[7,7],[6,0]]],[[8,[7,7]],[[7,9],[5,0]]]] + + [[[[4,0],[5,4]],[[7,7],[6,0]]],[[8,[7,7]],[[7,9],[5,0]]]] ++ [[2,[[0,8],[3,4]]],[[[6,7],1],[7,[1,6]]]] += [[[[6,7],[6,7]],[[7,7],[0,7]]],[[[8,7],[7,7]],[[8,8],[8,0]]]] + + [[[[6,7],[6,7]],[[7,7],[0,7]]],[[[8,7],[7,7]],[[8,8],[8,0]]]] ++ [[[[2,4],7],[6,[0,5]]],[[[6,8],[2,8]],[[2,1],[4,5]]]] += [[[[7,0],[7,7]],[[7,7],[7,8]]],[[[7,7],[8,8]],[[7,7],[8,7]]]] + + [[[[7,0],[7,7]],[[7,7],[7,8]]],[[[7,7],[8,8]],[[7,7],[8,7]]]] ++ [7,[5,[[3,8],[1,4]]]] += [[[[7,7],[7,8]],[[9,5],[8,7]]],[[[6,8],[0,8]],[[9,9],[9,0]]]] + + [[[[7,7],[7,8]],[[9,5],[8,7]]],[[[6,8],[0,8]],[[9,9],[9,0]]]] ++ [[2,[2,2]],[8,[8,1]]] += [[[[6,6],[6,6]],[[6,0],[6,7]]],[[[7,7],[8,9]],[8,[8,1]]]] + + [[[[6,6],[6,6]],[[6,0],[6,7]]],[[[7,7],[8,9]],[8,[8,1]]]] ++ [2,9] += [[[[6,6],[7,7]],[[0,7],[7,7]]],[[[5,5],[5,6]],9]] + + [[[[6,6],[7,7]],[[0,7],[7,7]]],[[[5,5],[5,6]],9]] ++ [1,[[[9,3],9],[[9,0],[0,7]]]] += [[[[7,8],[6,7]],[[6,8],[0,8]]],[[[7,7],[5,0]],[[5,5],[5,6]]]] + + [[[[7,8],[6,7]],[[6,8],[0,8]]],[[[7,7],[5,0]],[[5,5],[5,6]]]] ++ [[[5,[7,4]],7],1] += [[[[7,7],[7,7]],[[8,7],[8,7]]],[[[7,0],[7,7]],9]] + + [[[[7,7],[7,7]],[[8,7],[8,7]]],[[[7,0],[7,7]],9]] ++ [[[[4,2],2],6],[8,7]] += [[[[8,7],[7,7]],[[8,6],[7,7]]],[[[0,7],[6,6]],[8,7]]] diff --git a/src/main/resources/2021-examples/day18-8.txt b/src/main/resources/2021-examples/day18-8.txt new file mode 100644 index 00000000..1368dc4d --- /dev/null +++ b/src/main/resources/2021-examples/day18-8.txt @@ -0,0 +1,10 @@ +[[[0,[5,8]],[[1,7],[9,6]]],[[4,[1,2]],[[1,4],2]]] +[[[5,[2,8]],4],[5,[[9,9],0]]] +[6,[[[6,2],[5,6]],[[7,6],[4,7]]]] +[[[6,[0,7]],[0,9]],[4,[9,[9,0]]]] +[[[7,[6,4]],[3,[1,3]]],[[[5,5],1],9]] +[[6,[[7,3],[3,2]]],[[[3,8],[5,7]],4]] +[[[[5,4],[7,7]],8],[[8,3],8]] +[[9,3],[[9,9],[6,[4,9]]]] +[[2,[[7,7],7]],[[5,8],[[9,3],[0,2]]]] +[[[[5,2],5],[8,[3,7]]],[[5,[7,5]],[4,4]]] diff --git a/src/main/resources/2021-examples/day18-9.txt b/src/main/resources/2021-examples/day18-9.txt new file mode 100644 index 00000000..6b23a92a --- /dev/null +++ b/src/main/resources/2021-examples/day18-9.txt @@ -0,0 +1 @@ +[[[[6,6],[7,6]],[[7,7],[7,0]]],[[[7,7],[7,7]],[[7,8],[9,9]]]] \ No newline at end of file diff --git a/src/main/resources/2021-examples/day19-1.txt b/src/main/resources/2021-examples/day19-1.txt new file mode 100644 index 00000000..9704cbaa --- /dev/null +++ b/src/main/resources/2021-examples/day19-1.txt @@ -0,0 +1,9 @@ +--- scanner 0 --- +0,2 +4,1 +3,3 + +--- scanner 1 --- +-1,-1 +-5,0 +-2,1 diff --git a/src/main/resources/2021-examples/day19-10.txt b/src/main/resources/2021-examples/day19-10.txt new file mode 100644 index 00000000..a29e82d0 --- /dev/null +++ b/src/main/resources/2021-examples/day19-10.txt @@ -0,0 +1,79 @@ +-892,524,684 +-876,649,763 +-838,591,734 +-789,900,-551 +-739,-1745,668 +-706,-3180,-659 +-697,-3072,-689 +-689,845,-530 +-687,-1600,576 +-661,-816,-575 +-654,-3158,-753 +-635,-1737,486 +-631,-672,1502 +-624,-1620,1868 +-620,-3212,371 +-618,-824,-621 +-612,-1695,1788 +-601,-1648,-643 +-584,868,-557 +-537,-823,-458 +-532,-1715,1894 +-518,-1681,-600 +-499,-1607,-770 +-485,-357,347 +-470,-3283,303 +-456,-621,1527 +-447,-329,318 +-430,-3130,366 +-413,-627,1469 +-345,-311,381 +-36,-1284,1171 +-27,-1108,-65 +7,-33,-71 +12,-2351,-103 +26,-1119,1091 +346,-2985,342 +366,-3059,397 +377,-2827,367 +390,-675,-793 +396,-1931,-563 +404,-588,-901 +408,-1815,803 +423,-701,434 +432,-2009,850 +443,580,662 +455,729,728 +456,-540,1869 +459,-707,401 +465,-695,1988 +474,580,667 +496,-1584,1900 +497,-1838,-617 +527,-524,1933 +528,-643,409 +534,-1912,768 +544,-627,-890 +553,345,-567 +564,392,-477 +568,-2007,-577 +605,-1665,1952 +612,-1593,1893 +630,319,-379 +686,-3108,-505 +776,-3184,-501 +846,-3110,-434 +1135,-1161,1235 +1243,-1093,1063 +1660,-552,429 +1693,-557,386 +1735,-437,1738 +1749,-1800,1813 +1772,-405,1572 +1776,-675,371 +1779,-442,1789 +1780,-1548,337 +1786,-1538,337 +1847,-1591,415 +1889,-1729,1762 +1994,-1805,1792 diff --git a/src/main/resources/2021-examples/day19-2.txt b/src/main/resources/2021-examples/day19-2.txt new file mode 100644 index 00000000..af24610b --- /dev/null +++ b/src/main/resources/2021-examples/day19-2.txt @@ -0,0 +1,4 @@ +...B. +B.... +....B +S.... diff --git a/src/main/resources/2021-examples/day19-3.txt b/src/main/resources/2021-examples/day19-3.txt new file mode 100644 index 00000000..cc6219a2 --- /dev/null +++ b/src/main/resources/2021-examples/day19-3.txt @@ -0,0 +1,3 @@ +...B.. +B....S +....B. diff --git a/src/main/resources/2021-examples/day19-4.txt b/src/main/resources/2021-examples/day19-4.txt new file mode 100644 index 00000000..151c427e --- /dev/null +++ b/src/main/resources/2021-examples/day19-4.txt @@ -0,0 +1,4 @@ +...B.. +B....S +....B. +S..... diff --git a/src/main/resources/2021-examples/day19-5.txt b/src/main/resources/2021-examples/day19-5.txt new file mode 100644 index 00000000..68353468 --- /dev/null +++ b/src/main/resources/2021-examples/day19-5.txt @@ -0,0 +1,39 @@ +--- scanner 0 --- +-1,-1,1 +-2,-2,2 +-3,-3,3 +-2,-3,1 +5,6,-4 +8,0,7 + +--- scanner 0 --- +1,-1,1 +2,-2,2 +3,-3,3 +2,-1,3 +-5,4,-6 +-8,-7,0 + +--- scanner 0 --- +-1,-1,-1 +-2,-2,-2 +-3,-3,-3 +-1,-3,-2 +4,6,5 +-7,0,8 + +--- scanner 0 --- +1,1,-1 +2,2,-2 +3,3,-3 +1,3,-2 +-4,-6,5 +7,0,8 + +--- scanner 0 --- +1,1,1 +2,2,2 +3,3,3 +3,1,2 +-6,-4,-5 +0,7,-8 diff --git a/src/main/resources/2021-examples/day19-6.txt b/src/main/resources/2021-examples/day19-6.txt new file mode 100644 index 00000000..4e496e9e --- /dev/null +++ b/src/main/resources/2021-examples/day19-6.txt @@ -0,0 +1,136 @@ +--- scanner 0 --- +404,-588,-901 +528,-643,409 +-838,591,734 +390,-675,-793 +-537,-823,-458 +-485,-357,347 +-345,-311,381 +-661,-816,-575 +-876,649,763 +-618,-824,-621 +553,345,-567 +474,580,667 +-447,-329,318 +-584,868,-557 +544,-627,-890 +564,392,-477 +455,729,728 +-892,524,684 +-689,845,-530 +423,-701,434 +7,-33,-71 +630,319,-379 +443,580,662 +-789,900,-551 +459,-707,401 + +--- scanner 1 --- +686,422,578 +605,423,415 +515,917,-361 +-336,658,858 +95,138,22 +-476,619,847 +-340,-569,-846 +567,-361,727 +-460,603,-452 +669,-402,600 +729,430,532 +-500,-761,534 +-322,571,750 +-466,-666,-811 +-429,-592,574 +-355,545,-477 +703,-491,-529 +-328,-685,520 +413,935,-424 +-391,539,-444 +586,-435,557 +-364,-763,-893 +807,-499,-711 +755,-354,-619 +553,889,-390 + +--- scanner 2 --- +649,640,665 +682,-795,504 +-784,533,-524 +-644,584,-595 +-588,-843,648 +-30,6,44 +-674,560,763 +500,723,-460 +609,671,-379 +-555,-800,653 +-675,-892,-343 +697,-426,-610 +578,704,681 +493,664,-388 +-671,-858,530 +-667,343,800 +571,-461,-707 +-138,-166,112 +-889,563,-600 +646,-828,498 +640,759,510 +-630,509,768 +-681,-892,-333 +673,-379,-804 +-742,-814,-386 +577,-820,562 + +--- scanner 3 --- +-589,542,597 +605,-692,669 +-500,565,-823 +-660,373,557 +-458,-679,-417 +-488,449,543 +-626,468,-788 +338,-750,-386 +528,-832,-391 +562,-778,733 +-938,-730,414 +543,643,-506 +-524,371,-870 +407,773,750 +-104,29,83 +378,-903,-323 +-778,-728,485 +426,699,580 +-438,-605,-362 +-469,-447,-387 +509,732,623 +647,635,-688 +-868,-804,481 +614,-800,639 +595,780,-596 + +--- scanner 4 --- +727,592,562 +-293,-554,779 +441,611,-461 +-714,465,-776 +-743,427,-804 +-660,-479,-426 +832,-632,460 +927,-485,-438 +408,393,-506 +466,436,-512 +110,16,151 +-258,-428,682 +-393,719,612 +-211,-452,876 +808,-476,-593 +-575,615,604 +-485,667,467 +-680,325,-822 +-627,-443,-432 +872,-547,-609 +833,512,582 +807,604,487 +839,-516,451 +891,-625,532 +-652,-548,-490 +30,-46,-14 diff --git a/src/main/resources/2021-examples/day19-7.txt b/src/main/resources/2021-examples/day19-7.txt new file mode 100644 index 00000000..ca00bff7 --- /dev/null +++ b/src/main/resources/2021-examples/day19-7.txt @@ -0,0 +1,12 @@ +-618,-824,-621 +-537,-823,-458 +-447,-329,318 +404,-588,-901 +544,-627,-890 +528,-643,409 +-661,-816,-575 +390,-675,-793 +423,-701,434 +-345,-311,381 +459,-707,401 +-485,-357,347 diff --git a/src/main/resources/2021-examples/day19-8.txt b/src/main/resources/2021-examples/day19-8.txt new file mode 100644 index 00000000..e3762faa --- /dev/null +++ b/src/main/resources/2021-examples/day19-8.txt @@ -0,0 +1,12 @@ +686,422,578 +605,423,415 +515,917,-361 +-336,658,858 +-476,619,847 +-460,603,-452 +729,430,532 +-322,571,750 +-355,545,-477 +413,935,-424 +-391,539,-444 +553,889,-390 diff --git a/src/main/resources/2021-examples/day19-9.txt b/src/main/resources/2021-examples/day19-9.txt new file mode 100644 index 00000000..738dc326 --- /dev/null +++ b/src/main/resources/2021-examples/day19-9.txt @@ -0,0 +1,12 @@ +459,-707,401 +-739,-1745,668 +-485,-357,347 +432,-2009,850 +528,-643,409 +423,-701,434 +-345,-311,381 +408,-1815,803 +534,-1912,768 +-687,-1600,576 +-447,-329,318 +-635,-1737,486 diff --git a/src/main/resources/2021-examples/day2-1.txt b/src/main/resources/2021-examples/day2-1.txt new file mode 100644 index 00000000..b7172ac1 --- /dev/null +++ b/src/main/resources/2021-examples/day2-1.txt @@ -0,0 +1,6 @@ +forward 5 +down 5 +forward 8 +up 3 +down 8 +forward 2 diff --git a/src/main/resources/2021-examples/day20-1.txt b/src/main/resources/2021-examples/day20-1.txt new file mode 100644 index 00000000..8fa4bd47 --- /dev/null +++ b/src/main/resources/2021-examples/day20-1.txt @@ -0,0 +1,7 @@ +..#.#..#####.#.#.#.###.##.....###.##.#..###.####..#####..#....#..#..##..###..######.###...####..#..#####..##..#.#####...##.#.#..#.##..#.#......#.###.######.###.####...#.##.##..#..#..#####.....#.#....###..#.##......#.....#..#..#..##..#...##.######.####.####.#.#...#.......#..#.#.#...####.##.#......#..#...##.#.##..#...##.#.##..###.#......#.#.......#.#.#.####.###.##...#.....####.#..#..#.##.#....##..#.####....##...##..#...#......#.#.......#.......##..####..#...#.#.#...##..#.#..###..#####........#..####......#..# + +#..#. +#.... +##..# +..#.. +..### diff --git a/src/main/resources/2021-examples/day20-2.txt b/src/main/resources/2021-examples/day20-2.txt new file mode 100644 index 00000000..eb33d7e4 --- /dev/null +++ b/src/main/resources/2021-examples/day20-2.txt @@ -0,0 +1,5 @@ +# . . # . +#[. . .]. +#[# . .]# +.[. # .]. +. . # # # diff --git a/src/main/resources/2021-examples/day20-3.txt b/src/main/resources/2021-examples/day20-3.txt new file mode 100644 index 00000000..d671cab6 --- /dev/null +++ b/src/main/resources/2021-examples/day20-3.txt @@ -0,0 +1,3 @@ +0 10 20 30 34 40 50 60 70 +| | | | | | | | | +..#.#..#####.#.#.#.###.##.....###.##.#..###.####..#####..#....#..#..##..## diff --git a/src/main/resources/2021-examples/day20-4.txt b/src/main/resources/2021-examples/day20-4.txt new file mode 100644 index 00000000..c545714d --- /dev/null +++ b/src/main/resources/2021-examples/day20-4.txt @@ -0,0 +1,15 @@ +............... +............... +............... +............... +............... +.....#..#...... +.....#......... +.....##..#..... +.......#....... +.......###..... +............... +............... +............... +............... +............... diff --git a/src/main/resources/2021-examples/day20-5.txt b/src/main/resources/2021-examples/day20-5.txt new file mode 100644 index 00000000..d3f36f2f --- /dev/null +++ b/src/main/resources/2021-examples/day20-5.txt @@ -0,0 +1,15 @@ +............... +............... +............... +............... +.....##.##..... +....#..#.#..... +....##.#..#.... +....####..#.... +.....#..##..... +......##..#.... +.......#.#..... +............... +............... +............... +............... diff --git a/src/main/resources/2021-examples/day20-6.txt b/src/main/resources/2021-examples/day20-6.txt new file mode 100644 index 00000000..b88bd634 --- /dev/null +++ b/src/main/resources/2021-examples/day20-6.txt @@ -0,0 +1,15 @@ +............... +............... +............... +..........#.... +....#..#.#..... +...#.#...###... +...#...##.#.... +...#.....#.#... +....#.#####.... +.....#.#####... +......##.##.... +.......###..... +............... +............... +............... diff --git a/src/main/resources/2021-examples/day21-1.txt b/src/main/resources/2021-examples/day21-1.txt new file mode 100644 index 00000000..3f691947 --- /dev/null +++ b/src/main/resources/2021-examples/day21-1.txt @@ -0,0 +1,2 @@ +Player 1 starting position: 4 +Player 2 starting position: 8 diff --git a/src/main/resources/2021-examples/day22-1.txt b/src/main/resources/2021-examples/day22-1.txt new file mode 100644 index 00000000..25975df7 --- /dev/null +++ b/src/main/resources/2021-examples/day22-1.txt @@ -0,0 +1,4 @@ +on x=10..12,y=10..12,z=10..12 +on x=11..13,y=11..13,z=11..13 +off x=9..11,y=9..11,z=9..11 +on x=10..10,y=10..10,z=10..10 diff --git a/src/main/resources/2021-examples/day22-2.txt b/src/main/resources/2021-examples/day22-2.txt new file mode 100644 index 00000000..e6652950 --- /dev/null +++ b/src/main/resources/2021-examples/day22-2.txt @@ -0,0 +1,22 @@ +on x=-20..26,y=-36..17,z=-47..7 +on x=-20..33,y=-21..23,z=-26..28 +on x=-22..28,y=-29..23,z=-38..16 +on x=-46..7,y=-6..46,z=-50..-1 +on x=-49..1,y=-3..46,z=-24..28 +on x=2..47,y=-22..22,z=-23..27 +on x=-27..23,y=-28..26,z=-21..29 +on x=-39..5,y=-6..47,z=-3..44 +on x=-30..21,y=-8..43,z=-13..34 +on x=-22..26,y=-27..20,z=-29..19 +off x=-48..-32,y=26..41,z=-47..-37 +on x=-12..35,y=6..50,z=-50..-2 +off x=-48..-32,y=-32..-16,z=-15..-5 +on x=-18..26,y=-33..15,z=-7..46 +off x=-40..-22,y=-38..-28,z=23..41 +on x=-16..35,y=-41..10,z=-47..6 +off x=-32..-23,y=11..30,z=-14..3 +on x=-49..-5,y=-3..45,z=-29..18 +off x=18..30,y=-20..-8,z=-3..13 +on x=-41..9,y=-7..43,z=-33..15 +on x=-54112..-39298,y=-85059..-49293,z=-27449..7877 +on x=967..23432,y=45373..81175,z=27513..53682 diff --git a/src/main/resources/2021-examples/day22-3.txt b/src/main/resources/2021-examples/day22-3.txt new file mode 100644 index 00000000..aba75859 --- /dev/null +++ b/src/main/resources/2021-examples/day22-3.txt @@ -0,0 +1,60 @@ +on x=-5..47,y=-31..22,z=-19..33 +on x=-44..5,y=-27..21,z=-14..35 +on x=-49..-1,y=-11..42,z=-10..38 +on x=-20..34,y=-40..6,z=-44..1 +off x=26..39,y=40..50,z=-2..11 +on x=-41..5,y=-41..6,z=-36..8 +off x=-43..-33,y=-45..-28,z=7..25 +on x=-33..15,y=-32..19,z=-34..11 +off x=35..47,y=-46..-34,z=-11..5 +on x=-14..36,y=-6..44,z=-16..29 +on x=-57795..-6158,y=29564..72030,z=20435..90618 +on x=36731..105352,y=-21140..28532,z=16094..90401 +on x=30999..107136,y=-53464..15513,z=8553..71215 +on x=13528..83982,y=-99403..-27377,z=-24141..23996 +on x=-72682..-12347,y=18159..111354,z=7391..80950 +on x=-1060..80757,y=-65301..-20884,z=-103788..-16709 +on x=-83015..-9461,y=-72160..-8347,z=-81239..-26856 +on x=-52752..22273,y=-49450..9096,z=54442..119054 +on x=-29982..40483,y=-108474..-28371,z=-24328..38471 +on x=-4958..62750,y=40422..118853,z=-7672..65583 +on x=55694..108686,y=-43367..46958,z=-26781..48729 +on x=-98497..-18186,y=-63569..3412,z=1232..88485 +on x=-726..56291,y=-62629..13224,z=18033..85226 +on x=-110886..-34664,y=-81338..-8658,z=8914..63723 +on x=-55829..24974,y=-16897..54165,z=-121762..-28058 +on x=-65152..-11147,y=22489..91432,z=-58782..1780 +on x=-120100..-32970,y=-46592..27473,z=-11695..61039 +on x=-18631..37533,y=-124565..-50804,z=-35667..28308 +on x=-57817..18248,y=49321..117703,z=5745..55881 +on x=14781..98692,y=-1341..70827,z=15753..70151 +on x=-34419..55919,y=-19626..40991,z=39015..114138 +on x=-60785..11593,y=-56135..2999,z=-95368..-26915 +on x=-32178..58085,y=17647..101866,z=-91405..-8878 +on x=-53655..12091,y=50097..105568,z=-75335..-4862 +on x=-111166..-40997,y=-71714..2688,z=5609..50954 +on x=-16602..70118,y=-98693..-44401,z=5197..76897 +on x=16383..101554,y=4615..83635,z=-44907..18747 +off x=-95822..-15171,y=-19987..48940,z=10804..104439 +on x=-89813..-14614,y=16069..88491,z=-3297..45228 +on x=41075..99376,y=-20427..49978,z=-52012..13762 +on x=-21330..50085,y=-17944..62733,z=-112280..-30197 +on x=-16478..35915,y=36008..118594,z=-7885..47086 +off x=-98156..-27851,y=-49952..43171,z=-99005..-8456 +off x=2032..69770,y=-71013..4824,z=7471..94418 +on x=43670..120875,y=-42068..12382,z=-24787..38892 +off x=37514..111226,y=-45862..25743,z=-16714..54663 +off x=25699..97951,y=-30668..59918,z=-15349..69697 +off x=-44271..17935,y=-9516..60759,z=49131..112598 +on x=-61695..-5813,y=40978..94975,z=8655..80240 +off x=-101086..-9439,y=-7088..67543,z=33935..83858 +off x=18020..114017,y=-48931..32606,z=21474..89843 +off x=-77139..10506,y=-89994..-18797,z=-80..59318 +off x=8476..79288,y=-75520..11602,z=-96624..-24783 +on x=-47488..-1262,y=24338..100707,z=16292..72967 +off x=-84341..13987,y=2429..92914,z=-90671..-1318 +off x=-37810..49457,y=-71013..-7894,z=-105357..-13188 +off x=-27365..46395,y=31009..98017,z=15428..76570 +off x=-70369..-16548,y=22648..78696,z=-1892..86821 +on x=-53470..21291,y=-120233..-33476,z=-44150..38147 +off x=-93533..-4276,y=-16170..68771,z=-104985..-24507 diff --git a/src/main/resources/2021-examples/day23-1.txt b/src/main/resources/2021-examples/day23-1.txt new file mode 100644 index 00000000..6a7120d4 --- /dev/null +++ b/src/main/resources/2021-examples/day23-1.txt @@ -0,0 +1,5 @@ +############# +#...........# +###B#C#B#D### + #A#D#C#A# + ######### diff --git a/src/main/resources/2021-examples/day23-10.txt b/src/main/resources/2021-examples/day23-10.txt new file mode 100644 index 00000000..65857a08 --- /dev/null +++ b/src/main/resources/2021-examples/day23-10.txt @@ -0,0 +1,5 @@ +############# +#...........# +###A#B#C#D### + #A#B#C#D# + ######### diff --git a/src/main/resources/2021-examples/day23-2.txt b/src/main/resources/2021-examples/day23-2.txt new file mode 100644 index 00000000..65857a08 --- /dev/null +++ b/src/main/resources/2021-examples/day23-2.txt @@ -0,0 +1,5 @@ +############# +#...........# +###A#B#C#D### + #A#B#C#D# + ######### diff --git a/src/main/resources/2021-examples/day23-3.txt b/src/main/resources/2021-examples/day23-3.txt new file mode 100644 index 00000000..6a7120d4 --- /dev/null +++ b/src/main/resources/2021-examples/day23-3.txt @@ -0,0 +1,5 @@ +############# +#...........# +###B#C#B#D### + #A#D#C#A# + ######### diff --git a/src/main/resources/2021-examples/day23-4.txt b/src/main/resources/2021-examples/day23-4.txt new file mode 100644 index 00000000..ed7c0edd --- /dev/null +++ b/src/main/resources/2021-examples/day23-4.txt @@ -0,0 +1,5 @@ +############# +#...B.......# +###B#C#.#D### + #A#D#C#A# + ######### diff --git a/src/main/resources/2021-examples/day23-5.txt b/src/main/resources/2021-examples/day23-5.txt new file mode 100644 index 00000000..0c8079a3 --- /dev/null +++ b/src/main/resources/2021-examples/day23-5.txt @@ -0,0 +1,5 @@ +############# +#...B.......# +###B#.#C#D### + #A#D#C#A# + ######### diff --git a/src/main/resources/2021-examples/day23-6.txt b/src/main/resources/2021-examples/day23-6.txt new file mode 100644 index 00000000..0a8dfdac --- /dev/null +++ b/src/main/resources/2021-examples/day23-6.txt @@ -0,0 +1,5 @@ +############# +#.....D.....# +###B#.#C#D### + #A#B#C#A# + ######### diff --git a/src/main/resources/2021-examples/day23-7.txt b/src/main/resources/2021-examples/day23-7.txt new file mode 100644 index 00000000..9abde2e9 --- /dev/null +++ b/src/main/resources/2021-examples/day23-7.txt @@ -0,0 +1,5 @@ +############# +#.....D.....# +###.#B#C#D### + #A#B#C#A# + ######### diff --git a/src/main/resources/2021-examples/day23-8.txt b/src/main/resources/2021-examples/day23-8.txt new file mode 100644 index 00000000..647c8031 --- /dev/null +++ b/src/main/resources/2021-examples/day23-8.txt @@ -0,0 +1,5 @@ +############# +#.....D.D.A.# +###.#B#C#.### + #A#B#C#.# + ######### diff --git a/src/main/resources/2021-examples/day23-9.txt b/src/main/resources/2021-examples/day23-9.txt new file mode 100644 index 00000000..af622296 --- /dev/null +++ b/src/main/resources/2021-examples/day23-9.txt @@ -0,0 +1,5 @@ +############# +#.........A.# +###.#B#C#D### + #A#B#C#D# + ######### diff --git a/src/main/resources/2021-examples/day24-1.txt b/src/main/resources/2021-examples/day24-1.txt new file mode 100644 index 00000000..a41747d3 --- /dev/null +++ b/src/main/resources/2021-examples/day24-1.txt @@ -0,0 +1,2 @@ +inp x +mul x -1 diff --git a/src/main/resources/2021-examples/day24-2.txt b/src/main/resources/2021-examples/day24-2.txt new file mode 100644 index 00000000..ae8792a2 --- /dev/null +++ b/src/main/resources/2021-examples/day24-2.txt @@ -0,0 +1,4 @@ +inp z +inp x +mul z 3 +eql z x diff --git a/src/main/resources/2021-examples/day24-3.txt b/src/main/resources/2021-examples/day24-3.txt new file mode 100644 index 00000000..6b1b0e60 --- /dev/null +++ b/src/main/resources/2021-examples/day24-3.txt @@ -0,0 +1,11 @@ +inp w +add z w +mod z 2 +div w 2 +add y w +mod y 2 +div w 2 +add x w +mod x 2 +div w 2 +mod w 2 diff --git a/src/main/resources/2021-examples/day25-1.txt b/src/main/resources/2021-examples/day25-1.txt new file mode 100644 index 00000000..0f3c0cd3 --- /dev/null +++ b/src/main/resources/2021-examples/day25-1.txt @@ -0,0 +1,9 @@ +v...>>.vv> +.vv>>.vv.. +>>.>v>...v +>>v>>.>.v. +v>v.vv.v.. +>.>>..v... +.vv..>.>v. +v.v..>>v.v +....v..v.> diff --git a/src/main/resources/2021-examples/day25-2.txt b/src/main/resources/2021-examples/day25-2.txt new file mode 100644 index 00000000..3a71089a --- /dev/null +++ b/src/main/resources/2021-examples/day25-2.txt @@ -0,0 +1 @@ +...>>>>>... \ No newline at end of file diff --git a/src/main/resources/2021-examples/day25-3.txt b/src/main/resources/2021-examples/day25-3.txt new file mode 100644 index 00000000..38b1e385 --- /dev/null +++ b/src/main/resources/2021-examples/day25-3.txt @@ -0,0 +1 @@ +...>>>>.>.. \ No newline at end of file diff --git a/src/main/resources/2021-examples/day25-4.txt b/src/main/resources/2021-examples/day25-4.txt new file mode 100644 index 00000000..d23583e4 --- /dev/null +++ b/src/main/resources/2021-examples/day25-4.txt @@ -0,0 +1 @@ +...>>>.>.>. \ No newline at end of file diff --git a/src/main/resources/2021-examples/day25-5.txt b/src/main/resources/2021-examples/day25-5.txt new file mode 100644 index 00000000..5e9a19ec --- /dev/null +++ b/src/main/resources/2021-examples/day25-5.txt @@ -0,0 +1,4 @@ +.......... +.>v....v.. +.......>.. +.......... diff --git a/src/main/resources/2021-examples/day25-6.txt b/src/main/resources/2021-examples/day25-6.txt new file mode 100644 index 00000000..941bdc0f --- /dev/null +++ b/src/main/resources/2021-examples/day25-6.txt @@ -0,0 +1,4 @@ +.......... +.>........ +..v....v>. +.......... diff --git a/src/main/resources/2021-examples/day25-7.txt b/src/main/resources/2021-examples/day25-7.txt new file mode 100644 index 00000000..441e5ec0 --- /dev/null +++ b/src/main/resources/2021-examples/day25-7.txt @@ -0,0 +1,44 @@ +Initial state: +...>... +....... +......> +v.....> +......> +....... +..vvv.. + +After 1 step: +..vv>.. +....... +>...... +v.....> +>...... +....... +....v.. + +After 2 steps: +....v>. +..vv... +.>..... +......> +v>..... +....... +....... + +After 3 steps: +......> +..v.v.. +..>v... +>...... +..>.... +v...... +....... + +After 4 steps: +>...... +..v.... +..>.v.. +.>.v... +...>... +....... +v...... diff --git a/src/main/resources/2021-examples/day25-8.txt b/src/main/resources/2021-examples/day25-8.txt new file mode 100644 index 00000000..690edede --- /dev/null +++ b/src/main/resources/2021-examples/day25-8.txt @@ -0,0 +1,176 @@ +Initial state: +v...>>.vv> +.vv>>.vv.. +>>.>v>...v +>>v>>.>.v. +v>v.vv.v.. +>.>>..v... +.vv..>.>v. +v.v..>>v.v +....v..v.> + +After 1 step: +....>.>v.> +v.v>.>v.v. +>v>>..>v.. +>>v>v>.>.v +.>v.v...v. +v>>.>vvv.. +..v...>>.. +vv...>>vv. +>.v.v..v.v + +After 2 steps: +>.v.v>>..v +v.v.>>vv.. +>v>.>.>.v. +>>v>v.>v>. +.>..v....v +.>v>>.v.v. +v....v>v>. +.vv..>>v.. +v>.....vv. + +After 3 steps: +v>v.v>.>v. +v...>>.v.v +>vv>.>v>.. +>>v>v.>.v> +..>....v.. +.>.>v>v..v +..v..v>vv> +v.v..>>v.. +.v>....v.. + +After 4 steps: +v>..v.>>.. +v.v.>.>.v. +>vv.>>.v>v +>>.>..v>.> +..v>v...v. +..>>.>vv.. +>.v.vv>v.v +.....>>vv. +vvv>...v.. + +After 5 steps: +vv>...>v>. +v.v.v>.>v. +>.v.>.>.>v +>v>.>..v>> +..v>v.v... +..>.>>vvv. +.>...v>v.. +..v.v>>v.v +v.v.>...v. + +... + +After 10 steps: +..>..>>vv. +v.....>>.v +..v.v>>>v> +v>.>v.>>>. +..v>v.vv.v +.v.>>>.v.. +v.v..>v>.. +..v...>v.> +.vv..v>vv. + +... + +After 20 steps: +v>.....>>. +>vv>.....v +.>v>v.vv>> +v>>>v.>v.> +....vv>v.. +.v.>>>vvv. +..v..>>vv. +v.v...>>.v +..v.....v> + +... + +After 30 steps: +.vv.v..>>> +v>...v...> +>.v>.>vv.> +>v>.>.>v.> +.>..v.vv.. +..v>..>>v. +....v>..>v +v.v...>vv> +v.v...>vvv + +... + +After 40 steps: +>>v>v..v.. +..>>v..vv. +..>>>v.>.v +..>>>>vvv> +v.....>... +v.v...>v>> +>vv.....v> +.>v...v.>v +vvv.v..v.> + +... + +After 50 steps: +..>>v>vv.v +..v.>>vv.. +v.>>v>>v.. +..>>>>>vv. +vvv....>vv +..v....>>> +v>.......> +.vv>....v> +.>v.vv.v.. + +... + +After 55 steps: +..>>v>vv.. +..v.>>vv.. +..>>v>>vv. +..>>>>>vv. +v......>vv +v>v....>>v +vvv...>..> +>vv.....>. +.>v.vv.v.. + +After 56 steps: +..>>v>vv.. +..v.>>vv.. +..>>v>>vv. +..>>>>>vv. +v......>vv +v>v....>>v +vvv....>.> +>vv......> +.>v.vv.v.. + +After 57 steps: +..>>v>vv.. +..v.>>vv.. +..>>v>>vv. +..>>>>>vv. +v......>vv +v>v....>>v +vvv.....>> +>vv......> +.>v.vv.v.. + +After 58 steps: +..>>v>vv.. +..v.>>vv.. +..>>v>>vv. +..>>>>>vv. +v......>vv +v>v....>>v +vvv.....>> +>vv......> +.>v.vv.v.. diff --git a/src/main/resources/2021-examples/day3-1.txt b/src/main/resources/2021-examples/day3-1.txt new file mode 100644 index 00000000..a6366a8a --- /dev/null +++ b/src/main/resources/2021-examples/day3-1.txt @@ -0,0 +1,12 @@ +00100 +11110 +10110 +10111 +10101 +01111 +00111 +11100 +10000 +11001 +00010 +01010 diff --git a/src/main/resources/2021-examples/day4-1.txt b/src/main/resources/2021-examples/day4-1.txt new file mode 100644 index 00000000..669a51d2 --- /dev/null +++ b/src/main/resources/2021-examples/day4-1.txt @@ -0,0 +1,19 @@ +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 diff --git a/src/main/resources/2021-examples/day4-2.txt b/src/main/resources/2021-examples/day4-2.txt new file mode 100644 index 00000000..c74c6acc --- /dev/null +++ b/src/main/resources/2021-examples/day4-2.txt @@ -0,0 +1,5 @@ +22 13 17 11 0 3 15 0 2 22 14 21 17 24 4 + 8 2 23 4 24 9 18 13 17 5 10 16 15 9 19 +21 9 14 16 7 19 8 7 25 23 18 8 23 26 20 + 6 10 3 18 5 20 11 10 24 4 22 11 13 6 5 + 1 12 20 15 19 14 21 16 12 6 2 0 12 3 7 diff --git a/src/main/resources/2021-examples/day4-3.txt b/src/main/resources/2021-examples/day4-3.txt new file mode 100644 index 00000000..c74c6acc --- /dev/null +++ b/src/main/resources/2021-examples/day4-3.txt @@ -0,0 +1,5 @@ +22 13 17 11 0 3 15 0 2 22 14 21 17 24 4 + 8 2 23 4 24 9 18 13 17 5 10 16 15 9 19 +21 9 14 16 7 19 8 7 25 23 18 8 23 26 20 + 6 10 3 18 5 20 11 10 24 4 22 11 13 6 5 + 1 12 20 15 19 14 21 16 12 6 2 0 12 3 7 diff --git a/src/main/resources/2021-examples/day4-4.txt b/src/main/resources/2021-examples/day4-4.txt new file mode 100644 index 00000000..c74c6acc --- /dev/null +++ b/src/main/resources/2021-examples/day4-4.txt @@ -0,0 +1,5 @@ +22 13 17 11 0 3 15 0 2 22 14 21 17 24 4 + 8 2 23 4 24 9 18 13 17 5 10 16 15 9 19 +21 9 14 16 7 19 8 7 25 23 18 8 23 26 20 + 6 10 3 18 5 20 11 10 24 4 22 11 13 6 5 + 1 12 20 15 19 14 21 16 12 6 2 0 12 3 7 diff --git a/src/main/resources/2021-examples/day5-1.txt b/src/main/resources/2021-examples/day5-1.txt new file mode 100644 index 00000000..b258f682 --- /dev/null +++ b/src/main/resources/2021-examples/day5-1.txt @@ -0,0 +1,10 @@ +0,9 -> 5,9 +8,0 -> 0,8 +9,4 -> 3,4 +2,2 -> 2,1 +7,0 -> 7,4 +6,4 -> 2,0 +0,9 -> 2,9 +3,4 -> 1,4 +0,0 -> 8,8 +5,5 -> 8,2 diff --git a/src/main/resources/2021-examples/day5-2.txt b/src/main/resources/2021-examples/day5-2.txt new file mode 100644 index 00000000..b17a4597 --- /dev/null +++ b/src/main/resources/2021-examples/day5-2.txt @@ -0,0 +1,10 @@ +.......1.. +..1....1.. +..1....1.. +.......1.. +.112111211 +.......... +.......... +.......... +.......... +222111.... diff --git a/src/main/resources/2021-examples/day6-1.txt b/src/main/resources/2021-examples/day6-1.txt new file mode 100644 index 00000000..a7af2b1c --- /dev/null +++ b/src/main/resources/2021-examples/day6-1.txt @@ -0,0 +1 @@ +3,4,3,1,2 \ No newline at end of file diff --git a/src/main/resources/2021-examples/day6-2.txt b/src/main/resources/2021-examples/day6-2.txt new file mode 100644 index 00000000..09e953e1 --- /dev/null +++ b/src/main/resources/2021-examples/day6-2.txt @@ -0,0 +1,19 @@ +Initial state: 3,4,3,1,2 +After 1 day: 2,3,2,0,1 +After 2 days: 1,2,1,6,0,8 +After 3 days: 0,1,0,5,6,7,8 +After 4 days: 6,0,6,4,5,6,7,8,8 +After 5 days: 5,6,5,3,4,5,6,7,7,8 +After 6 days: 4,5,4,2,3,4,5,6,6,7 +After 7 days: 3,4,3,1,2,3,4,5,5,6 +After 8 days: 2,3,2,0,1,2,3,4,4,5 +After 9 days: 1,2,1,6,0,1,2,3,3,4,8 +After 10 days: 0,1,0,5,6,0,1,2,2,3,7,8 +After 11 days: 6,0,6,4,5,6,0,1,1,2,6,7,8,8,8 +After 12 days: 5,6,5,3,4,5,6,0,0,1,5,6,7,7,7,8,8 +After 13 days: 4,5,4,2,3,4,5,6,6,0,4,5,6,6,6,7,7,8,8 +After 14 days: 3,4,3,1,2,3,4,5,5,6,3,4,5,5,5,6,6,7,7,8 +After 15 days: 2,3,2,0,1,2,3,4,4,5,2,3,4,4,4,5,5,6,6,7 +After 16 days: 1,2,1,6,0,1,2,3,3,4,1,2,3,3,3,4,4,5,5,6,8 +After 17 days: 0,1,0,5,6,0,1,2,2,3,0,1,2,2,2,3,3,4,4,5,7,8 +After 18 days: 6,0,6,4,5,6,0,1,1,2,6,0,1,1,1,2,2,3,3,4,6,7,8,8,8,8 diff --git a/src/main/resources/2021-examples/day7-1.txt b/src/main/resources/2021-examples/day7-1.txt new file mode 100644 index 00000000..2bdd92f4 --- /dev/null +++ b/src/main/resources/2021-examples/day7-1.txt @@ -0,0 +1 @@ +16,1,2,0,4,2,7,1,2,14 \ No newline at end of file diff --git a/src/main/resources/2021-examples/day8-1.txt b/src/main/resources/2021-examples/day8-1.txt new file mode 100644 index 00000000..83696f2e --- /dev/null +++ b/src/main/resources/2021-examples/day8-1.txt @@ -0,0 +1,17 @@ + 0: 1: 2: 3: 4: + aaaa .... aaaa aaaa .... +b c . c . c . c b c +b c . c . c . c b c + .... .... dddd dddd dddd +e f . f e . . f . f +e f . f e . . f . f + gggg .... gggg gggg .... + + 5: 6: 7: 8: 9: + aaaa aaaa aaaa aaaa aaaa +b . b . . c b c b c +b . b . . c b c b c + dddd dddd .... dddd dddd +. f e f . f e f . f +. f e f . f e f . f + gggg gggg .... gggg gggg diff --git a/src/main/resources/2021-examples/day8-2.txt b/src/main/resources/2021-examples/day8-2.txt new file mode 100644 index 00000000..0e7fc8dd --- /dev/null +++ b/src/main/resources/2021-examples/day8-2.txt @@ -0,0 +1,2 @@ +acedgfb cdfbe gcdfa fbcad dab cefabd cdfgeb eafb cagedb ab | +cdfeb fcadb cdfeb cdbaf \ No newline at end of file diff --git a/src/main/resources/2021-examples/day8-3.txt b/src/main/resources/2021-examples/day8-3.txt new file mode 100644 index 00000000..c9f629b7 --- /dev/null +++ b/src/main/resources/2021-examples/day8-3.txt @@ -0,0 +1,10 @@ +be cfbegad cbdgef fgaecd cgeb fdcge agebfd fecdb fabcd edb | fdgacbe cefdb cefbgd gcbe +edbfga begcd cbg gc gcadebf fbgde acbgfd abcde gfcbed gfec | fcgedb cgb dgebacf gc +fgaebd cg bdaec gdafb agbcfd gdcbef bgcad gfac gcb cdgabef | cg cg fdcagb cbg +fbegcd cbd adcefb dageb afcb bc aefdc ecdab fgdeca fcdbega | efabcd cedba gadfec cb +aecbfdg fbg gf bafeg dbefa fcge gcbea fcaegb dgceab fcbdga | gecf egdcabf bgf bfgea +fgeab ca afcebg bdacfeg cfaedg gcfdb baec bfadeg bafgc acf | gebdcfa ecba ca fadegcb +dbcfg fgd bdegcaf fgec aegbdf ecdfab fbedc dacgb gdcebf gf | cefg dcbef fcge gbcadfe +bdfegc cbegaf gecbf dfcage bdacg ed bedf ced adcbefg gebcd | ed bcgafe cdgba cbgef +egadfb cdbfeg cegd fecab cgb gbdefca cg fgcdab egfdb bfceg | gbdfcae bgc cg cgb +gcafb gcf dcaebfg ecagb gf abcdeg gaef cafbge fdbac fegbdc | fgae cfgab fg bagce diff --git a/src/main/resources/2021-examples/day9-1.txt b/src/main/resources/2021-examples/day9-1.txt new file mode 100644 index 00000000..6dee4a42 --- /dev/null +++ b/src/main/resources/2021-examples/day9-1.txt @@ -0,0 +1,5 @@ +2199943210 +3987894921 +9856789892 +8767896789 +9899965678 diff --git a/src/main/resources/2021/day1.txt b/src/main/resources/2021/day1.txt new file mode 100644 index 00000000..42906ab8 --- /dev/null +++ b/src/main/resources/2021/day1.txt @@ -0,0 +1,2000 @@ +141 +152 +164 +163 +164 +179 +210 +209 +208 +236 +227 +228 +227 +223 +226 +225 +228 +234 +218 +215 +206 +215 +218 +215 +209 +226 +233 +236 +234 +232 +230 +225 +226 +224 +216 +213 +221 +224 +225 +228 +227 +198 +196 +190 +167 +177 +191 +186 +189 +184 +174 +163 +152 +164 +155 +158 +172 +170 +174 +181 +180 +189 +190 +185 +182 +183 +201 +209 +216 +217 +218 +219 +220 +213 +212 +215 +211 +216 +234 +233 +215 +208 +215 +210 +209 +215 +217 +213 +236 +237 +238 +237 +261 +263 +257 +259 +262 +277 +278 +275 +279 +271 +272 +282 +277 +241 +233 +225 +230 +235 +226 +225 +229 +231 +225 +223 +226 +217 +219 +223 +226 +217 +194 +203 +205 +209 +192 +184 +182 +189 +190 +189 +188 +186 +185 +212 +214 +211 +213 +234 +235 +234 +235 +223 +201 +207 +227 +222 +221 +239 +240 +229 +242 +245 +242 +261 +260 +253 +236 +230 +243 +263 +261 +257 +267 +261 +235 +244 +219 +220 +229 +239 +218 +229 +228 +235 +236 +237 +242 +225 +222 +230 +239 +240 +258 +259 +299 +328 +330 +331 +339 +338 +339 +340 +339 +340 +323 +320 +321 +322 +323 +342 +369 +388 +379 +363 +362 +369 +383 +395 +392 +365 +380 +411 +407 +408 +406 +405 +403 +405 +403 +399 +400 +385 +388 +390 +399 +401 +404 +408 +406 +389 +388 +391 +399 +410 +411 +412 +415 +408 +416 +417 +441 +442 +440 +442 +446 +443 +439 +440 +443 +479 +490 +495 +509 +486 +487 +519 +504 +510 +514 +504 +505 +507 +513 +511 +521 +522 +529 +534 +531 +533 +512 +522 +523 +540 +542 +562 +564 +567 +592 +599 +605 +625 +635 +639 +642 +643 +637 +631 +629 +628 +629 +628 +629 +621 +619 +618 +617 +618 +613 +612 +609 +603 +602 +592 +591 +590 +602 +600 +599 +602 +604 +602 +617 +615 +594 +578 +582 +585 +584 +595 +615 +614 +617 +614 +631 +660 +664 +653 +657 +667 +668 +667 +669 +659 +662 +659 +654 +648 +636 +637 +635 +647 +635 +644 +642 +639 +636 +641 +638 +637 +647 +646 +644 +643 +642 +639 +645 +649 +650 +656 +661 +644 +645 +646 +632 +640 +645 +646 +647 +648 +651 +645 +630 +635 +636 +640 +641 +643 +640 +636 +641 +648 +650 +659 +682 +675 +693 +686 +682 +677 +678 +679 +678 +682 +657 +641 +632 +652 +645 +659 +638 +634 +633 +635 +636 +622 +626 +625 +624 +646 +639 +640 +641 +638 +637 +638 +635 +636 +637 +638 +637 +640 +659 +651 +653 +647 +652 +643 +645 +652 +675 +668 +663 +666 +650 +651 +652 +661 +645 +640 +631 +632 +634 +637 +641 +642 +647 +660 +662 +664 +669 +668 +666 +683 +685 +701 +702 +683 +681 +676 +677 +683 +668 +647 +659 +661 +665 +666 +665 +659 +639 +644 +624 +622 +620 +617 +620 +636 +620 +621 +646 +644 +643 +650 +646 +639 +640 +647 +636 +633 +634 +633 +642 +643 +652 +648 +629 +642 +649 +633 +632 +633 +631 +626 +627 +641 +647 +646 +643 +644 +648 +656 +654 +672 +673 +666 +670 +676 +699 +704 +705 +672 +671 +670 +684 +685 +689 +688 +695 +700 +702 +733 +734 +706 +702 +713 +709 +714 +718 +716 +693 +699 +720 +701 +694 +700 +707 +708 +702 +703 +705 +719 +717 +719 +738 +726 +721 +719 +706 +712 +729 +730 +715 +717 +730 +733 +730 +749 +756 +759 +760 +758 +759 +768 +769 +777 +778 +780 +784 +803 +804 +820 +813 +816 +815 +820 +818 +804 +795 +794 +791 +792 +791 +802 +793 +794 +789 +793 +778 +776 +752 +756 +741 +745 +747 +748 +758 +762 +777 +779 +784 +785 +789 +790 +787 +791 +789 +772 +813 +816 +818 +811 +818 +823 +824 +815 +816 +819 +818 +819 +820 +821 +825 +827 +837 +821 +823 +812 +814 +816 +840 +855 +857 +855 +871 +881 +889 +893 +892 +897 +901 +902 +896 +898 +912 +913 +904 +905 +906 +902 +859 +863 +862 +865 +868 +896 +906 +907 +896 +897 +902 +903 +900 +901 +895 +897 +903 +907 +914 +916 +919 +920 +929 +932 +931 +932 +915 +920 +922 +909 +908 +907 +906 +908 +910 +908 +877 +878 +876 +873 +872 +883 +868 +872 +868 +862 +875 +881 +883 +885 +879 +877 +880 +882 +881 +882 +881 +866 +869 +867 +879 +865 +856 +855 +861 +871 +876 +864 +865 +849 +848 +842 +807 +805 +810 +836 +816 +815 +857 +859 +857 +864 +865 +868 +871 +875 +874 +868 +857 +840 +841 +840 +838 +845 +833 +844 +884 +883 +884 +880 +884 +876 +870 +890 +889 +882 +887 +890 +883 +881 +880 +882 +888 +884 +900 +889 +887 +890 +891 +892 +897 +908 +909 +906 +907 +884 +882 +883 +869 +883 +872 +870 +867 +870 +857 +858 +854 +853 +848 +857 +856 +857 +864 +860 +857 +873 +835 +836 +835 +837 +839 +840 +844 +846 +838 +839 +824 +827 +829 +820 +821 +820 +822 +794 +817 +845 +846 +848 +849 +847 +850 +828 +820 +821 +826 +835 +841 +842 +846 +855 +837 +839 +848 +864 +867 +869 +874 +894 +876 +877 +876 +873 +874 +868 +866 +870 +842 +844 +819 +811 +818 +813 +811 +812 +813 +820 +823 +818 +815 +819 +816 +817 +807 +806 +811 +813 +819 +825 +811 +829 +832 +825 +826 +831 +830 +831 +833 +825 +827 +815 +823 +812 +814 +815 +812 +834 +839 +845 +844 +849 +856 +855 +862 +866 +873 +859 +851 +843 +819 +804 +790 +824 +827 +823 +833 +832 +833 +849 +882 +892 +920 +911 +910 +909 +913 +905 +908 +909 +913 +914 +915 +932 +941 +942 +976 +977 +984 +983 +984 +989 +982 +986 +985 +992 +1001 +1022 +1024 +1010 +1007 +996 +978 +979 +969 +957 +951 +948 +946 +943 +930 +929 +922 +924 +923 +924 +953 +949 +950 +922 +890 +889 +882 +902 +901 +896 +871 +903 +909 +931 +937 +945 +953 +958 +963 +964 +994 +971 +970 +959 +968 +974 +973 +974 +973 +972 +973 +972 +973 +977 +1012 +1033 +1032 +1029 +1027 +1028 +1055 +1056 +1070 +1065 +1091 +1074 +1066 +1074 +1075 +1084 +1083 +1081 +1075 +1074 +1071 +1098 +1087 +1076 +1075 +1079 +1094 +1104 +1105 +1111 +1110 +1108 +1102 +1064 +1060 +1076 +1048 +1059 +1065 +1077 +1054 +1061 +1066 +1087 +1093 +1108 +1107 +1105 +1102 +1101 +1105 +1106 +1100 +1104 +1105 +1107 +1106 +1096 +1077 +1075 +1076 +1083 +1091 +1080 +1058 +1050 +1051 +1064 +1074 +1077 +1049 +1051 +1052 +1063 +1077 +1079 +1085 +1074 +1078 +1073 +1070 +1065 +1080 +1097 +1071 +1072 +1074 +1102 +1104 +1113 +1114 +1123 +1125 +1129 +1131 +1149 +1152 +1147 +1154 +1161 +1162 +1163 +1169 +1157 +1151 +1158 +1159 +1155 +1154 +1121 +1112 +1113 +1080 +1082 +1075 +1076 +1071 +1062 +1074 +1079 +1076 +1097 +1100 +1091 +1084 +1098 +1083 +1103 +1132 +1134 +1125 +1127 +1128 +1129 +1131 +1130 +1131 +1135 +1131 +1129 +1142 +1154 +1142 +1141 +1145 +1152 +1158 +1172 +1162 +1179 +1180 +1179 +1190 +1187 +1191 +1190 +1186 +1198 +1182 +1178 +1174 +1158 +1154 +1159 +1160 +1172 +1164 +1145 +1161 +1170 +1181 +1189 +1192 +1186 +1182 +1173 +1190 +1178 +1177 +1184 +1186 +1193 +1198 +1197 +1194 +1203 +1177 +1195 +1196 +1201 +1208 +1205 +1204 +1205 +1195 +1196 +1219 +1220 +1217 +1219 +1220 +1213 +1214 +1219 +1230 +1237 +1241 +1243 +1242 +1243 +1267 +1268 +1264 +1275 +1278 +1273 +1274 +1281 +1286 +1284 +1288 +1284 +1294 +1259 +1280 +1285 +1284 +1300 +1303 +1313 +1303 +1317 +1316 +1315 +1307 +1320 +1333 +1342 +1356 +1359 +1364 +1376 +1382 +1385 +1389 +1390 +1391 +1387 +1388 +1389 +1387 +1388 +1409 +1402 +1400 +1394 +1390 +1356 +1355 +1356 +1359 +1371 +1375 +1376 +1358 +1361 +1344 +1371 +1379 +1373 +1367 +1364 +1365 +1364 +1363 +1362 +1361 +1364 +1361 +1360 +1362 +1367 +1366 +1383 +1384 +1389 +1390 +1416 +1415 +1416 +1440 +1431 +1440 +1441 +1444 +1448 +1453 +1446 +1447 +1428 +1426 +1452 +1453 +1431 +1423 +1421 +1420 +1410 +1417 +1418 +1417 +1412 +1402 +1401 +1406 +1402 +1416 +1419 +1405 +1408 +1413 +1415 +1406 +1407 +1408 +1394 +1405 +1397 +1378 +1382 +1381 +1380 +1384 +1385 +1384 +1392 +1399 +1405 +1409 +1407 +1409 +1410 +1413 +1406 +1422 +1421 +1419 +1420 +1421 +1429 +1433 +1417 +1419 +1416 +1411 +1410 +1415 +1427 +1443 +1439 +1438 +1435 +1436 +1438 +1442 +1458 +1463 +1455 +1481 +1480 +1481 +1491 +1498 +1496 +1504 +1502 +1499 +1494 +1493 +1494 +1496 +1500 +1503 +1494 +1492 +1485 +1487 +1488 +1508 +1510 +1534 +1530 +1540 +1502 +1501 +1494 +1495 +1492 +1490 +1505 +1500 +1501 +1499 +1501 +1495 +1493 +1498 +1504 +1510 +1519 +1535 +1531 +1537 +1546 +1557 +1559 +1558 +1576 +1585 +1590 +1588 +1591 +1603 +1620 +1619 +1620 +1651 +1650 +1628 +1630 +1631 +1630 +1636 +1635 +1636 +1625 +1624 +1622 +1611 +1610 +1608 +1613 +1612 +1609 +1616 +1615 +1637 +1638 +1643 +1645 +1648 +1649 +1650 +1649 +1647 +1648 +1653 +1651 +1654 +1660 +1656 +1654 +1653 +1657 +1646 +1652 +1653 +1670 +1695 +1689 +1690 +1670 +1679 +1664 +1660 +1641 +1625 +1629 +1643 +1647 +1655 +1664 +1667 +1668 +1672 +1671 +1690 +1689 +1691 +1690 +1704 +1701 +1704 +1715 +1710 +1728 +1719 +1742 +1737 +1738 +1727 +1732 +1718 +1720 +1727 +1737 +1741 +1744 +1745 +1747 +1758 +1753 +1745 +1752 +1770 +1778 +1782 +1812 +1813 +1809 +1806 +1804 +1799 +1821 +1845 +1841 +1845 +1850 +1857 +1873 +1879 +1909 +1907 +1906 +1897 +1900 +1897 +1898 +1896 +1900 +1909 +1939 +1940 +1929 +1948 +1959 +1929 +1939 +1963 +1961 +1983 +1984 +1985 +1980 +1981 +1982 +1972 +1973 +1974 +1988 +1996 +1999 +1995 +1982 +1985 +1995 +2008 +2007 +2023 +2025 +2024 +2026 +2025 +2020 +2013 +2014 +2025 +2048 +2055 +2060 +2063 +2066 +2067 +2070 +2071 +2072 +2062 +2057 +2025 +2028 +2029 +2028 +2020 +2015 +2016 +2014 +2012 +2016 +2015 +2014 +2005 +2008 +2009 +2005 +1999 +2003 +1995 +1994 +1990 +1992 +1996 +1995 +1990 +1991 +1999 +2000 +1989 +1991 +1992 +1994 +2024 +2030 +2029 +2024 +2023 +2044 +2045 +2044 +2042 +2040 +2049 +2050 +2046 +2044 +2049 +2064 +2059 +2063 +2064 +2061 +2059 +2062 +2064 +2075 +2074 +2085 +2088 +2075 +2102 +2101 +2082 +2083 +2085 +2084 +2097 +2091 +2088 +2084 +2074 +2082 +2083 +2084 +2089 +2088 +2091 +2095 +2105 +2124 +2118 +2121 +2116 +2117 +2118 +2119 +2127 +2131 +2120 +2154 +2152 +2160 +2170 +2166 +2169 +2173 +2174 +2156 +2149 +2147 +2138 +2140 +2141 +2136 +2137 +2138 +2139 +2129 +2130 +2128 +2120 +2112 +2119 +2126 +2129 +2128 +2137 +2142 +2161 +2147 +2139 +2142 +2148 +2152 +2154 +2136 +2119 +2121 +2098 +2115 +2099 +2100 +2104 +2099 +2098 +2097 +2112 +2108 +2147 +2146 +2148 +2147 +2125 +2099 +2103 +2107 +2111 +2123 +2126 +2128 +2130 +2129 +2131 +2126 +2127 +2130 +2112 +2103 +2100 +2113 +2121 +2118 +2119 +2129 +2123 +2112 +2102 +2069 +2071 +2075 +2094 +2102 +2106 +2096 +2097 +2100 +2109 +2104 +2103 +2108 +2100 +2103 +2104 +2108 +2115 +2117 +2112 +2120 +2127 +2128 +2126 +2106 +2104 +2106 +2100 +2105 +2102 +2112 +2119 +2127 +2129 +2136 +2150 +2166 +2153 +2181 +2159 +2160 +2159 +2183 +2184 +2186 +2174 +2173 +2183 +2178 +2163 +2156 +2161 +2162 +2163 +2156 +2145 +2149 +2145 +2147 +2151 +2147 +2150 +2138 +2150 +2151 +2149 +2150 +2151 +2154 +2136 +2173 +2184 +2183 +2185 +2186 +2187 +2185 +2184 +2188 +2186 +2190 +2197 +2166 +2167 +2166 +2167 +2170 +2178 +2196 +2181 +2182 +2184 +2196 +2207 +2206 +2211 +2218 +2217 +2216 +2212 +2216 +2232 +2235 +2241 +2242 +2238 +2239 +2236 +2250 +2272 +2281 +2277 +2278 +2298 +2294 +2296 +2292 +2285 +2303 +2296 +2290 +2292 +2272 +2285 +2287 +2311 +2315 +2336 +2344 +2345 +2326 +2331 +2333 +2344 +2359 +2366 +2364 +2366 +2370 +2368 +2360 +2373 +2397 +2394 +2398 +2397 +2399 +2407 +2412 +2426 +2424 +2461 +2469 +2467 +2466 +2465 +2464 +2473 +2475 +2474 +2471 +2473 +2469 +2470 +2460 +2461 +2478 +2465 +2471 +2475 +2482 +2485 +2494 +2492 +2482 +2493 +2509 +2501 +2513 +2486 +2489 +2492 +2505 +2507 +2505 +2506 +2505 +2507 +2509 +2510 +2511 +2518 +2523 +2529 +2540 +2526 +2530 +2535 +2550 +2552 +2565 +2558 +2569 +2563 +2573 +2577 +2579 +2575 +2573 +2577 +2575 +2591 +2607 +2609 +2614 +2619 +2648 +2649 +2650 +2646 +2648 +2651 +2660 +2653 +2645 +2651 +2652 +2658 +2657 +2627 +2628 +2642 +2631 +2632 +2634 +2639 +2648 +2647 +2648 +2649 +2654 +2655 +2660 +2671 +2682 diff --git a/src/main/resources/2021/day10.txt b/src/main/resources/2021/day10.txt new file mode 100644 index 00000000..6981ec29 --- /dev/null +++ b/src/main/resources/2021/day10.txt @@ -0,0 +1,110 @@ +<<{<[<<<{<<(<({}())({}[]))[[{}[]]<{}[]>])[<[{}[]]{()()}>{((){})<<><>>}]>>[<(<<{}>>[<()()><<><>>] +{[[[{<[(([[{(({}))([<>[]]((){}))}<<<[][]>[{}{}]>[{()[]}(()())]>][[[{<>()}[{}[]]]]]]<{{{{()[]}}}[[{[][]}{{ +([((<(<(<<([{{[][]}([]<>)}({<>{}}[[]()])]<[[()()](()[])]([[][]](<><>))>>{{<(<><>)[<>()]>([[]()])}<<[[]()]<[][ +{{{([((([({[{{()()}{<>[]}}({{}{}}([]{}))]{([{}<>])<(<><>){[]<>}}}})({{{(()())[[][]]}{<{}{}> +{{([[((({(({({<><>}([]{}))([()()]{[]{}})}[[({}{})<(){}>]<<()<>>>]){[[[()()][<>[]]}<[{}()]{{}<>} +{([<[[<<({[<(<()<>>(()())){<<>[]><()[]>}>[({{}<>})]][[(<()<>>{(){}})[{[]<>}[[]{}])][[(()()){[][]}]<{{}{}}<[ +[<{[((<([[([<<{}()>{{}()}>{(()[])[<>{}]}]<{[<><>]{<>{}}}>)]{[{{{()<>}[{}<>]}<<()>{{}{}}>}]({{< +[<((<<({[{<{[[<><>](<>{})]{<()()><[]{}>}}<<[{}()]<[][]>><({}<>)>>>{<[[()<>]<{}[]>]<(<>()){<>{}}>>[{(()[])[{ +([(<<{{<[<(<<[[]{}]({}{})><[()[]]{<><>}>>[[{[]<>}[{}()]][({}{})({}())]>){(<{(){}}[{}[]]>[{[][]}<< +([<{<<<[[<{[{({}{})[{}[]]}])[[(({}{}){()<>})<[()[]]<[][]>>]<(<()()>{()()}){(<><>)([]())}>]>]]<<{ +[{((<<{[{[<<<(()[])[[][]]>>><{<{<>[]>{[]{}}>{<<>()>[<><>]}}[{{<>{}}([]())}{({}[])[<><>]}]>][(<({<>()}[[]{}])[ +<(<[[<{(<[(<[([]())]({<>()}({}()))>[({(){}})[[[][]][<>{}]]]){{[[<><>]{{}[]}]<[(){}]<{}()>>}(<(<>{ +{{{([[(<<<{[{(<><>){<>[]}}<<[][]><()<>>>]<[[(){}][<>[]]]{{()<>}[{}()]}>}[{{({}<>)}[[{}{}]{{}[]}]}[([()()] +{(<[{[{([({[[{<>}]{[<>{}]([][])}]{[(<>[])({}())]<{<><>}({}<>)>}}<[[(<>()){()[]}][<()()>{[]{}}]]<{[[]][[]()] +<{(({({(<{{<{{()()}<()[]>}{[[]()](<>[])}>}<<({{}()}<[]{}>)[{[]()}]><<<<><>>[<>[]]>>>}([<[{()[]}(()() +[[[{<({{[[<[{[(){}]<[]<>>}[[<>[]]{()<>}]]({<{}[]>[<>[]]}{({}{})<{}[]>})>{[[{[]{}}{<><>}]{( +<([<[(([[[[([<[][]>]<([]()){<>()}>){[{[]()}([][])]<{[]<>}({}<>)>}]<[[[[]<>][<>{}]]{{{}()]{<>( +<({{<<<{<<[[[<()<>>[()[]]]](<[{}<>]{[][]}>[{<>()}<()()>])]><{<[<()<>>[[]()]]<<[][]><()()>>> +[[{{(([[<{[[(<[][]><<><>>}[{{}()}]]{(<<><>>({}<>))[[[][]]<[]{}>]}]<[{({}<>)[[]]}({()()}[<><> +([<[([[<{<((<<{}()>[<>()]>)(<{{}()}>(<[]<>>{()()})))>({<<{(){}}{{}}><[<>{}]<<>{}>>>{([(){}](<>)){{()<>}({ +[{[[<((({[{[<[[]()]<{}[]>>{<{}<>>(<>[])}]<{({}{}){{}[]}}{[[]<>]([][])}>}(<{(<>)[()<>]>>(({{}()})[[{}[]]{[]} +[{[[({<<{([{{({}())[()[]]}<[<>()]({}{})>}({[{}<>]<<><>>}{{[]<>}{()]})][<([<>()]({}[])){[{}{}](<>[])}>[((() +{{((<[{{[[(<{({}()){()<>}}[{{}<>)({}{})]>({<(){}>[[]{}]}[[[]()]<{}>]))<<{[[]{}]({}[])}{<()>({} +<{<({[[({<(<<<[][]>[<>[]]><(()[])>>{([[]<>]({}{}>)})((<[{}][{}<>]>{(()<>)})<<<<>[]>[(){}]>[(<>{})<<>[]>]>)>} +[[[{[[{<{({<({{}<>}({}<>))>{[({}())]}})[<[[([][])][<{}<>><()<>>]]([[<><>]<[]()>]<({}{})(<><> +[<({{[(<{(<<((<>)<{}[]>){{<>[]}<{}{}>}>(<(<><>)<{}<>>><{{}()}[{}()]>)>([([[]{}][{}[]])]))}>((({{ +<<{({{(<([[(<[<>()]<<><>>>(<[]()>{{}<>})){{<{}[]>[()()]}<(<>[])<()[]>]}]{({<(){}>{[]()}}[(<> +(({<[({{[[{{[[()[]]([][])]{(<>[])<(){}>}}<<({}{})([]())><({}[])>>}<<<<{}[]>{[]{}}>(<[][]>[{}{}])>(({()<> +{[[([<[{[{<[[({}[])<{}[]>]([<>[]]({}{}))][({()[]}(()()))]>{<<({})([]{})>{[[]()](()()]}>[(((){})(()[]))<[[]<> +({[(<[(<({<[[[{}()]][<()()>[()[]]]]<{{<>[]}}[[[]{}]([]<>)]>>})<<{[<[()[]](()()}><(()())[<><>]> +((<[{([[{(([([<>()][[][]])]))}]])<{(<<{{<<[]{}>({}())>}}>>[{([[{{}()}{(){}}]](((()[])[(){}])<[<>< +{(<{[{<<(<<[<<{}{}>><[[][]}{(){}}>]{{{[]<>}[[]<>]}}>{({<{}<>>({}<>)}<<[]<>>>)[(<{}<>>(<>))<[ +[<({<<({[{[<[([]<>)]{[(){}]({})}>{{((){})}[<[][]>]}]({(<{}<>>(<>())){{[]()}(()())}}(((<>{}){()()}){{[]()}<<> +[[{{[<<[[[<<[{{}[]}<(){}>][{(){}}<{}[]>]>>(({({}{}}{<>{}}}([<>[]](()[]))))]{[[{((){})<<>()>}{{()[]}{<>()}}]< +{(([([<({[[{{[<>[]][<>[]]}[([][])[{}()]]}[([()()][{}()])([<>{}])]]][[{[([]{}){[]()}][<(){} +<{{[{<(((({[{<[]()>({}{})}]}))<[((<([]<>)[{}[]]>{<(){}>[[][]]}))[{<[()()][{}()]>(({}[])<<>[]>)}[((<>()){{} +[(<[{[[<{[([{{[]()}<()>}(([]())<(){}>)][(({}{})<{}<>>)])(<({{}()}({}))<[()[]]{<>[]}>><(<{}<>><{}<>>)<({}<> +{([({<<((({[({[][]})<{{}{}}<{}()>>]}<(<<[]()><()<>>>{{[]<>}([][])})(<{[]<>}[[]<>]>)>){([{<[]()>[<>[]]}[{<>< +[{{<<[<<<<{<({[]}[()[]]){{{}<>}[(){}]}>({([]())({}[])>)}><[[{[()<>]({}{})}<<<>{}>{()[]}>]{{[[][]]}(<<>()>< +(({({[{({[{[{([][])[[][]]}]{{{[]()}({}[])}({<>[]}(<>))}}[<<([]<>)>(<{}{}>{()})>[{[<><>][<>{}]}]]]}([{ +(({{<[{[([({([{}{}][{}<>])<<{}{}><<>()>>})]([((<[]()>[{}()])<<{}<>>((){})>)]<{[[{}<>]<[][]>]<(()[] +{<[({<[[<[(<<({}[])[[]()]>([<>{}]{{}<>})>[<<{}[]>{<>()}><[<>{}]({}[])>])]{{{({{}{}}<[]()>) +{<(({<[({<<[[[()[]]<{}<>>]]>><[{<{<><>}(<><>)>[[()[]]{<><>}]}[[{<><>}{{}<>}]({{}{}}[[][]])]]<<[{{}{}}<<>[]>] +[<{({{(({([{(<{}[]>(<>{}))<[[]{}](()[])>}<{(<>{})(<>{})}>])<<<<({}<>){<>{}}>[(()()>(()())]> +({((({[(<{{({({}())[[]<>]}([<>[]]{{}()}))<({{}()}<{}{}>)[{[]{}}({}[])]>}[([{{}<>}<{}>])[{{()[]}{{}()}}[([]{ +[<[{<{([<({<[[{}<>]{[][]}]{<<>{}><<><>>}>({[[]{}]<{}<>>}{{{}<>}(()[])})}){{{[<[]()><[][]>] +<<{<{[[{([{<[<{}[]>{[]<>}]<<{}{}>[{}[]]>>}([([{}{}]{<><>})[{<>{}})])]){{([[<{}[]>({}[])][[<><>] +([[(<([[[<[((([]{}){[]<>}))<{<[][]>[[]()]}[(()<>)<[]{}>]>]{[([[][]][()[]]){{(){}}[{}<>]}]}>< +<[{{<{<({{([[[[]{}]<{}()>><([]()){[]{}}>]<{<()[]>([]())}>)}<<{{((){}){[][]}}(({}<>)(()()))}([{[ +({{({[[{<({[({<>{}}[<>()])(([][]){{}{}])][({{}<>}(()[]))[<[]()><[]{}>]]}[{(<()[]><[]()>)[<{}()>{()[]}]} +<<<{<{[([[[[(<()[]>){<[]()><[]()>}]<<([])<[]<>>><[[]<>][<>[]]>>]<<[[()()](<><>)]({()()}[<>[]])>([<[] +((([{([({({<(<{}()>[()<>])<[{}<>]<{}[]>>>][{<[[][]]{{}()}>[({}()){[]<>}]}([{{}{}}[[]()]])])<[(({<>()} +([<<[(<{<<[<[{()[]}{()[]}](({}[]){{}[]})>]{([{()[]}])({{<>()}(()())})}>((({{()()}(()<>)}][[(<>()){()} +({[{[((<[<{<([[][]]{{}()})[{<>()}(<>{})]>{{{{}}}{{()}({}[])}}}>]<(<{<(<>())(()())>}>[<{[{}<>]{{ +{({[<{<[[[[<({<>{}}{()[]}){<[]()><[]()>}>([(<>())[[]()]](({}{})[()<>]))]]({([[<>{}]<{}[]>](<()()><()<>>)) +([<[<{<<<<((({<>}[<>{}])<({}())<()<>>>)[[[[]()][{}{}]]<(()<>)[<>]>]){{[({}())][([][])<()[]>]}{ +[{[({{<[{[<<[[<>()]]<([]())>><<<[][]>>{[()<>]{{}}}>>]}]{<{{{{[<>{}]({}[])}<{{}}{<>{}}>}{<({}){<> +{<<{{({([{[([{[]<>}{<>[]}](<()[]>))[([{}]<()<>>)<<<>[]>[()<>]>]]}{[{<[()[]][{}{}]>{[[]()][{}[]]}}({[[]{ +((<(<{{<([{[{{()[]}{<><>}}{{<>}({}{})})[([(){}][[][]])[<()[]><(){}>]]}<([(<>()){[][]}][([]())([]())])[ +<<{[{{<{<[[[<<()<>>[()[]]>([()]{{}[]})]](<[(()<>)[()[]]]>{<[{}{}]>[<<><>><<><>>]})][{((<{}{}>[() +<<<[[<[[([{[(<()><[]{}>)[(()[])[[]{}]]]{[{{}<>}[{}<>]]}}[(<<<>()><()[]>>[({}())<(){}>])[[[[][]][< +[[<(({[(([{{<([][])[[][]]>[{{}{}}{<>[]}]}<[(<><>)](<[][]>[<>{}])>}]{{{([(){}]([]))<[{}<>](())>}([[( +[<{[([<{({([((()>[{}[]])[(<><>){[][]}]])([{([]<>){[][]}}<(()[]){[]()}>]<((<>{}){[][]})({{}()}<()[ +((((<<<({([<{[{}()]{[]{}}}{({}[]){(){}}}>[[{()[]}[<>()]]<(()<>){(){}}>]]{[<(()())[{}[]]>(<<>()>({} +(<({((((<{{{[{{}{}}[(){}]][{<>{}}{(){}}]}([[{}[]]{<><>}]<[[]{}]<[][]>>)}({[[{}<>]<(){}>]}<{{<>[]}}<<<>[]> +{(<{(<{({(([{{()()}}][(({}{})<{}>)])<<(<()<>>{{}<>})(((){})[[]{}])><[[<>{})[<><>]][{()()}]> +<{[(<[[{(<({[<{}()>{{}{}}]{(()){[]{}}}}[{{[]<>}[{}{}]}])({({[][]}{[]()})})>(<{{(()[])<<>>>[<<>[]><[]< +([<[<[[{<[<(([<>{}]){[(){}]<()()>})<{([]{}}<{}<>>}{<{}{}><[]()>}>>(<<{<><>}(<>())>({<>}[{}{}])>(<(<><>) +([{[[(<[(([{[{<>[]}{<>()}]<[(){}](<>{})>]<<<<>[]>>{(<><>)<[]{}>}>])){{{{<([]<>)([]{})><{{}{ +[<{({{(({<[([[()<>]{[][]}]({<>[]}(()[])))](<<({}())([][])>[{()<>}(()())]><{[<>{}]<<>()>}[[{}()]{<><>}]>)>{ +{({{{{[{{[<{{<[][]>([])}<[[]{}][{}()]>}>]{{[[<<>[]>[[][]>]<<{}<>>(()<>)>]{[[<>{}]{{}[]}]}}<[[[<><>]<< +<({{({(({{<{{([]{}){<><>}}<(<>())({}{}]>}[{((){})(<>())}]>(({<[]()>([]{})}({{}{}}<<>()>)))}[[([<{}<>> +[[<{<{<((<<({(<>())(<>())}{{(){}}[{}()]})<(<{}<>>{(){}})>>{{({[][]}{{}[]})<<{}<>>(()<>)>}<<<<>()>>{({}{}){() +{[(<<<{(<{<<({<>{}}{()[]}>({<>[]}({}()))>>}>)<{(<(<({}[]){()[]}>)>((({()[]}[[][]]){<[][]><<>()>})[(([]<>)< +<[<[{<[{[[<([<{}()>[<>]]{[[][]]<{}()>}}>({{{<>[]}{()[]}}{{()}<<><>>}}<<([])([][])>{[{}<>](( +{[<<[[(<<{[<[[[]]({}())]([{}()][[]<>])>]}<({{(()[])<[][]>}{({})<()<>>}})([((()[])<[]<>>)<{(){}}([]()) +<{{<[[[(((<[{({}()){()()}}(<{}()>{()<>})]{{{()()}}{[[]{}]({}())}}>))<{<(((()<>)[{}[]])){[<[]<>>{{}() +<([((<<(((({{[{}<>]<[]<>>}(<[]{}><[]{}>)}[{{<>[]}}{(<>{}){[]<>}}])<<{(()())<<>{}>}[[{}[]][{}()]]>[<[[]() +{({{({[[({[<[<<><>)<{}{}>][<(){}>{[]{}}]>({(<>{})(<>())}<({})({})>)]})]<({[[({[]<>}{()()}){({}() +((([[(<(<[([({{}()})[{{}()}({}{})]]{({[]()}{{}()})(<()[]><<>[]>)}){{([{}()])}}]<[(<(<><>)[()[]}>[{{}<>}])]>>[ +{(([(<[[[[<<([(){}][<>[]]){({}())[[]{}]}>>[[<{()[]}{(){}}>(<{}{}><{}{}>)]<([()[]]<{}>)(<()[]>{ +{({([(<{<[[<<[<><>]<<><>>>>[<<{}<>>[{}<>]>{[[]{}][{}<>]}]]][{{<[{}[]]({})><[()()]>}}<[<{[]<>}[[]()]>]{[ +(((<{([<[(<[{([][])<[][]>}({{}<>}[{}{}])]>[[({[]<>}{<>{}})]})[{({(()[])([][])}{<()()>[[][] +<(<{{<([<(<{<{{}}{<>{}}>}([([]{}){(){}>]{<()<>>([])})>)<<({<[]<>>})({[()[]]}<[(){}]{{}()}>)>{[<<[][]>>({[]{ +({{(<(([[{((<<()[]><{}<>>>])}][<({<[{}[]][{}{}]><(()())([]())>})>{<(<{[]{}}{{}<>}>{{[]<>}{<><>}})>}]]{<[{[[ +{<[<([(((<[{[(())]}[(<{}()>)([[]][{}])]]{({<[]{}><()[]>}{{[]()}<{}<>>})}>){(({{<(){}>{<>[]}}(<(){}>( +([[{<{{{({{<[<[][]><()()>>><<[<>()]>>}{[[(())]<{[]<>}<()<>>>]}})(<({[([]<>)<<>[]>]({<>()}[ +{<[<<[((<<{<{([]<>)(<><>)}([()<>][{}[]])>}<<{{[]()}(<>{})}([<><>]({}[]))>{<[()<>]<{}()>>{<()( +{<{(<[[[<[{<[({}())<()<>>]>[{([]{})([]<>)}[<[][]>]>}][<([[()<>]{[][]}]){<[[]()](()())>({()}(()()))}>({<[()< +[{({<<<({{<[(({}[]){{}()})[{[]{}}{<><>}]]<{<[][]>(<>())}([<>{}])>>}[(<{{<>}([][])}>{{[[]()][[][]]}{<<>()>< +<<([{{[(<[([<{[]()}<<><>>><(()())<()[]>>][{<[]()><{}()>}{<<><>>[()<>]}])(<<<<>{}][{}[]]>[{<>}({} +((<<<<[{<[[<[{()()}<[][]>]{(()<>)}><{[[]{}]<{}{}>}>]<<{{[]<>}([])}{({}())([]{})]><[(<>())(<>{})]>>]><([<(([] +{[[<(<[({[[[{{<>()}<()()>}]]]}[({(<[[][]]>(<{}<>>))}[<{<[]{}>(()<>)}{<{}{}>[()<>]}>])(<{([[]<>]){ +{{<<{([<{[[[(<{}{}>[[]<>])({<><>}{{}[]})]]][([([()[]])[(()<>)<[]{}>]]<{{()<>}{[]()}}<<[]{}>{ +<(([[<(({{(<{{()<>}[<>()]}[({}())[[][]]]>{{[{}<>]((){})][<<>{}><[]{}>]})<<({{}()}<<>{}>){(<>())[<>{}]}>( +(<[(<<(((([<[<{}[]>][[()()]<<>()>]><[<{}{}>{()<>}](<()()])>][{{[{}<>]{<>()}}[<()()><{}>]}<(<{}{ +({{({[(<[{[<[((){})({}{})]([<>[]][[]()])>](<(<(){}><()()>)({<>{}}<{}()>)><{{<>()}(())}<{()()}<[]()>> +{<([(<<{([[[[(()<>)(()())]][[([]{})({}())]<[[]<>]{()[]}>)]([[<(){}>{<>{}}]((()())[()()])])] +(<<(((<[[{[{<[()<>]{<>{}}>([[]()][()()])}]{([<[]<>>{<>[]}]<<[][]>[{}()]>){<{[][]}[<>{}]><[<>[]]({}{} +<([[[(<[([{((<<>()>{()[]}){(<>())([])})[{<{}[]>([][])}[({}[])[<>()]]]}[(<<<>{}><()<>>><<<>[]>{( +[[{<[[(<<<(([(<><>)([][])](([]{}){[]{}}))[<[[]{}]>([[]()]{[][]})])>{{{[<()[]>[[]{}]][{()<>}[<>[]]]}} +([(<{<<(<{{{[[<>[]]<(){}>]([()[]][()[]])}{((<>()))}}{<[<{}<>>(<><>)](([][])<<>()>)}}}(<<[<{}[] +<[{{({{<[<[{(<<>[]>(<>()))<([]<>)[{}<>]>}]>{<<{<[]{}>(<>())}>([<(){}><(){}>]{[<>()]([]())})>}]>}})}}{((( +[<(((<{<<[(<{(<>[])}>){(<<{}<>>([]<>)>{<{}()>}}[[<{}{}>{[][]}](<<>[]>{{}[]})]}]><<([<[(){}]<()>><[(){}] +({[[(<[{(<((<[()[]]{[]<>}>){<(<>){()<>}>})(({<(){}>[{}[]]})[[(()[]){[]<>})<{[]()}>])>)<<<(<({}())(<>[]) +[{([<<<[{{([<<{}{}>>[{{}[]]]])}<<[<{{}}{<><>}>(({}{})[<>[]])]({[<><>]([][])}{(()<>)<<><>>}) +[[<(<<[{([[[[<[]{}><[]()>]][{[[][]]<()<>>}]]]{{{(<[]{}>(()<>))<(<>[])<<><>>>}]({{(()[]){{}()}} +({<<<{[<[[[{([{}<>]{<>()})(<<><>>)}(<(<>[])<{}>))][({<{}[]>[[][]]}(([]())(()[])))<<[[]()]{<><>}>> +[{<[[{{[<<([([<><>]([]<>))]({[()[]][{}{}]}{{()()}[[]<>]})){(<(()[])<[]()>><[[]()]<()<>>>)(<<()( +{<({((<([<(({{[]<>}[{}<>]}[<()[]><[]{}>]){<{[][]}{<><>]>})(({({}())[()()]}{[{}()][[]<>]}))>])<(<{(<{ diff --git a/src/main/resources/2021/day11.txt b/src/main/resources/2021/day11.txt new file mode 100644 index 00000000..b6997c36 --- /dev/null +++ b/src/main/resources/2021/day11.txt @@ -0,0 +1,10 @@ +2682551651 +3223134263 +5848471412 +7438334862 +8731321573 +6415233574 +5564726843 +6683456445 +8582346112 +4617588236 diff --git a/src/main/resources/2021/day12.txt b/src/main/resources/2021/day12.txt new file mode 100644 index 00000000..86357e38 --- /dev/null +++ b/src/main/resources/2021/day12.txt @@ -0,0 +1,25 @@ +ey-dv +AL-ms +ey-lx +zw-YT +hm-zw +start-YT +start-ms +dv-YT +hm-ms +end-ey +AL-ey +end-hm +rh-hm +dv-ms +AL-dv +ey-SP +hm-lx +dv-start +end-lx +zw-AL +hm-AL +lx-zw +ey-zw +zw-dv +YT-ms diff --git a/src/main/resources/2021/day13.txt b/src/main/resources/2021/day13.txt new file mode 100644 index 00000000..56c3fc94 --- /dev/null +++ b/src/main/resources/2021/day13.txt @@ -0,0 +1,800 @@ +440,442 +440,617 +132,849 +758,512 +956,840 +796,364 +413,476 +530,417 +484,467 +436,465 +1303,208 +524,61 +552,512 +36,371 +52,702 +229,646 +469,803 +103,483 +447,635 +605,630 +738,661 +1031,760 +164,547 +1169,131 +331,235 +686,793 +216,35 +997,591 +448,641 +534,9 +1064,592 +465,653 +249,421 +1198,617 +743,176 +318,124 +1173,646 +497,313 +970,287 +152,820 +20,484 +1303,14 +167,123 +763,656 +1237,581 +207,546 +1007,808 +1002,152 +1081,696 +905,365 +393,875 +47,865 +845,248 +1039,859 +0,476 +159,644 +1243,303 +238,220 +721,339 +982,866 +1146,570 +149,81 +917,507 +753,248 +602,35 +222,700 +1059,556 +569,245 +878,684 +1208,624 +261,834 +1235,7 +996,607 +300,616 +416,2 +870,4 +497,581 +75,439 +551,483 +150,686 +475,814 +303,93 +687,341 +857,523 +1057,878 +159,420 +806,119 +1133,813 +838,610 +236,427 +431,259 +62,714 +669,583 +510,722 +82,806 +589,339 +759,411 +863,635 +800,680 +495,474 +547,238 +544,856 +1044,158 +1279,665 +237,301 +105,422 +1079,246 +18,77 +566,892 +1059,281 +1228,579 +1039,478 +432,5 +964,781 +862,148 +415,561 +669,739 +566,35 +102,512 +1258,35 +341,645 +1123,704 +1059,439 +885,810 +1282,870 +862,746 +525,575 +364,523 +214,72 +447,348 +355,129 +656,540 +487,17 +1282,24 +487,877 +1228,200 +484,427 +624,793 +75,7 +1073,301 +692,735 +900,88 +534,522 +3,21 +1140,770 +1230,9 +405,459 +1146,771 +74,768 +492,862 +65,890 +805,627 +756,856 +1210,87 +440,4 +1015,208 +920,162 +736,437 +431,635 +459,656 +1280,465 +408,144 +544,663 +806,791 +1295,576 +1059,887 +782,35 +425,732 +440,218 +1133,135 +1140,124 +112,617 +321,561 +761,222 +279,582 +863,348 +428,486 +1222,674 +1031,281 +452,333 +80,9 +313,515 +1059,108 +435,14 +760,812 +1176,645 +346,113 +566,450 +375,582 +162,324 +57,472 +812,546 +423,742 +102,382 +567,785 +766,35 +62,610 +415,277 +137,696 +477,305 +935,613 +88,444 +0,521 +239,337 +393,427 +217,130 +793,763 +897,476 +897,771 +905,399 +189,696 +922,382 +1274,371 +668,383 +803,814 +979,21 +102,830 +460,800 +977,331 +135,474 +1103,187 +370,70 +1110,483 +333,779 +1133,533 +700,63 +1046,610 +1091,86 +0,885 +62,834 +566,483 +1047,100 +1206,229 +813,350 +446,831 +1059,729 +1143,17 +753,57 +162,772 +719,548 +353,522 +592,284 +333,245 +791,644 +641,67 +417,749 +231,191 +1212,842 +264,508 +547,126 +659,877 +74,220 +109,647 +465,708 +845,584 +261,610 +1133,725 +253,430 +3,588 +736,816 +820,137 +1091,360 +52,192 +110,215 +574,816 +80,78 +1057,430 +27,336 +873,316 +1134,511 +669,695 +636,270 +237,749 +1073,749 +1121,696 +542,254 +1074,427 +989,320 +477,589 +1171,317 +264,610 +326,28 +1059,837 +1287,823 +1146,261 +811,380 +12,383 +565,525 +1208,400 +813,331 +490,476 +813,544 +443,193 +589,644 +907,7 +211,389 +1004,858 +73,688 +279,281 +390,610 +504,238 +894,2 +893,749 +440,452 +390,490 +119,707 +641,585 +577,645 +1297,583 +1099,841 +393,35 +1222,187 +1133,471 +488,430 +959,534 +1111,176 +1248,714 +244,9 +736,116 +577,473 +348,36 +1304,842 +155,542 +264,490 +567,176 +1166,382 +30,465 +341,393 +497,350 +833,697 +12,119 +1248,732 +200,411 +692,159 +1048,856 +82,25 +1235,455 +971,19 +1108,58 +435,584 +705,630 +1064,302 +884,374 +592,869 +490,261 +202,781 +184,596 +510,721 +455,624 +299,336 +1099,389 +1280,17 +182,173 +380,262 +164,123 +73,287 +62,284 +1093,578 +1230,885 +738,25 +987,274 +388,382 +490,757 +823,877 +875,360 +308,742 +194,773 +393,162 +75,455 +940,701 +1304,780 +311,603 +514,530 +1200,679 +895,561 +1061,253 +870,890 +85,473 +1255,808 +918,856 +895,277 +1305,873 +520,137 +387,315 +355,317 +1061,813 +610,831 +251,729 +502,372 +792,583 +1046,162 +962,36 +31,665 +879,259 +504,791 +833,23 +300,54 +517,241 +917,162 +1087,523 +633,763 +88,226 +249,253 +487,547 +950,621 +100,628 +935,582 +592,197 +833,197 +219,808 +271,320 +1297,85 +674,284 +264,284 +858,561 +763,320 +845,696 +30,17 +119,187 +308,834 +897,418 +917,834 +1245,427 +1146,633 +395,618 +219,584 +1146,585 +791,784 +917,732 +495,584 +455,270 +1059,57 +58,658 +721,644 +760,677 +1155,94 +1237,688 +776,325 +1161,81 +863,796 +749,749 +77,701 +1173,241 +261,859 +1148,32 +885,165 +1108,836 +999,592 +1123,429 +1213,277 +351,375 +547,656 +492,235 +1310,418 +698,641 +196,161 +1057,464 +150,208 +984,802 +1191,707 +1184,159 +484,803 +1307,588 +410,437 +1175,577 +211,841 +1310,476 +833,589 +1094,35 +977,333 +425,696 +550,530 +241,418 +879,187 +355,782 +161,598 +1096,72 +6,780 +425,198 +1072,544 +62,361 +758,64 +663,656 +572,197 +618,523 +1307,309 +448,148 +1262,56 +1046,490 +760,866 +557,248 +187,280 +984,866 +452,360 +569,869 +321,320 +12,775 +815,306 +1163,603 +403,7 +104,530 +1049,57 +1126,596 +900,661 +6,114 +818,862 +710,68 +776,9 +923,315 +1217,749 +907,444 +647,686 +833,85 +1184,735 +560,775 +1266,63 +1151,420 +577,193 +552,46 +1088,194 +674,610 +535,348 +800,721 +331,469 +718,284 +1093,894 +858,333 +1230,610 +1146,137 +1158,820 +1213,617 +1225,623 +217,578 +905,495 +274,30 +100,807 +920,714 +191,110 +7,880 +97,84 +1119,110 +766,254 +177,725 +97,696 +437,670 +1002,834 +795,541 +159,758 +504,343 +405,399 +744,35 +544,640 +1066,437 +1268,253 +933,40 +253,878 +698,253 +1235,439 +539,172 +1250,176 +946,371 +1245,698 +452,113 +1046,714 +1310,9 +478,383 +238,350 +1200,215 +547,544 +80,437 +940,70 +1216,567 +1277,127 +351,534 +574,116 +1091,808 +269,248 +266,512 +572,25 +85,623 +776,522 +845,519 +1099,837 +269,646 +167,771 +1247,346 +763,126 +177,423 +244,457 +338,36 +52,411 +733,645 +65,843 +878,866 +303,808 +251,556 +1031,134 +331,425 +567,718 +7,208 +261,162 +618,511 +845,241 +98,822 +592,60 +465,696 +771,253 +870,218 +920,145 +497,331 +751,600 +490,570 +1069,421 +1233,249 +236,467 +967,592 +987,620 +1036,192 +874,168 +661,21 +1258,702 +969,249 +321,115 +539,253 +504,775 +214,822 +321,779 +624,465 +7,14 +698,170 +388,512 +669,311 +1207,483 +155,514 +65,4 +574,186 +89,189 +377,329 +599,416 +274,192 +311,592 +855,624 +1146,757 +144,494 +743,785 +517,455 +552,64 +162,130 +189,689 +989,561 +589,835 +62,473 +915,618 +57,422 +923,411 +1046,284 +1228,315 +674,270 +112,277 +763,574 +956,726 +1011,129 +251,281 +806,887 +823,140 +1007,136 +581,206 +217,316 +360,621 +875,584 +580,668 +1093,316 +572,869 +130,833 +1279,217 +378,277 +341,851 +505,135 +313,53 +1304,114 +477,169 +1262,504 +266,624 +933,329 +663,208 +170,124 +1228,763 +202,836 +907,439 +1173,696 +797,259 +955,765 +557,646 +303,534 +1049,837 +1173,86 +954,859 +144,721 +67,375 +1208,830 +758,624 +867,53 +1206,217 +231,152 +62,628 +140,588 +453,523 +969,501 +251,165 +251,837 +1079,424 +187,190 +750,119 +977,201 +393,60 +1307,21 +1280,57 +1153,133 +1103,707 +833,871 +760,364 +557,57 +766,856 +55,416 +641,739 +425,834 +870,442 +591,548 +618,371 +231,742 +1297,576 +1096,520 +321,574 +1011,336 +1072,350 +107,656 +1170,588 +1230,312 +428,408 +237,145 +97,617 +1081,646 +331,683 +977,245 +490,691 +796,530 +344,38 +137,86 +202,724 +182,845 +566,444 +920,490 +870,617 +313,527 +556,842 +1128,397 +900,200 +100,266 +30,205 +59,329 +822,464 +1248,749 +984,373 +602,262 +1176,25 +753,613 +343,302 +443,53 +401,16 +738,197 +878,28 +425,646 +878,194 +592,593 +393,837 +1084,180 +872,411 +517,186 +1119,784 +393,732 +271,859 +5,873 +992,124 +1173,808 +902,144 +793,455 +547,798 + +fold along x=655 +fold along y=447 +fold along x=327 +fold along y=223 +fold along x=163 +fold along y=111 +fold along x=81 +fold along y=55 +fold along x=40 +fold along y=27 +fold along y=13 +fold along y=6 diff --git a/src/main/resources/2021/day14.txt b/src/main/resources/2021/day14.txt new file mode 100644 index 00000000..5f2faae7 --- /dev/null +++ b/src/main/resources/2021/day14.txt @@ -0,0 +1,102 @@ +OFSVVSFOCBNONHKFHNPK + +HN -> C +VB -> K +PF -> C +BO -> F +PB -> F +OH -> H +OB -> N +PN -> O +KO -> V +CK -> V +FP -> H +PC -> V +PP -> N +FN -> N +CC -> F +FC -> N +BP -> N +SH -> F +NS -> V +KK -> B +HS -> C +NV -> N +FO -> B +VO -> S +KN -> F +SC -> V +NB -> H +CH -> B +SF -> V +NP -> V +FB -> P +CV -> B +PO -> P +SV -> P +OO -> V +PS -> C +CO -> N +SP -> B +KP -> H +KH -> S +KS -> S +NH -> K +SS -> P +PV -> P +KV -> V +ON -> N +BS -> C +HP -> K +SB -> P +VC -> B +HB -> N +FS -> V +VP -> K +BB -> N +FK -> S +CS -> P +SO -> F +HF -> F +VV -> C +BC -> S +SN -> K +KB -> H +BN -> H +HO -> S +KC -> F +CP -> S +HC -> S +OS -> K +NK -> N +BF -> S +VN -> B +SK -> K +HV -> B +KF -> H +FV -> B +VF -> H +BH -> S +NN -> O +HH -> K +CN -> H +PH -> V +NF -> S +OV -> P +OC -> V +OK -> H +OF -> H +HK -> N +FH -> P +BK -> N +VS -> H +NO -> V +VK -> K +CF -> N +CB -> N +NC -> K +PK -> B +VH -> F +FF -> C +BV -> P +OP -> K diff --git a/src/main/resources/2021/day15.txt b/src/main/resources/2021/day15.txt new file mode 100644 index 00000000..aec1dc0b --- /dev/null +++ b/src/main/resources/2021/day15.txt @@ -0,0 +1,100 @@ +9197799967142949711924912559857266425989892895795349989935678852856491866597249883454355721838994689 +9454699428952977916248797687374199797579937166959985575934687799286278395799834599823725191768264239 +1476124567678962892998242114658368169969196949893799969968932492875835669928535888516585889557294857 +5791918239996678837798182119995286749674958736799996579937942199999478117296491681956799173479469697 +7169635399716469741872348399984999149999916841724586589959931149912818998567241788593818767699883858 +2926741911914636315187918554497249439756557979631699768168949899866796175449994999986688215771687939 +5589949979145888769995885998892975199254611397986145389381187633664799879995799643887357299151772988 +8889465966717911191788336792214278123584765871499472917878297279329199386164989887784939824172612679 +4449128566587999796639991816798948898951855942998816126957898821255977428897977658516999988855449929 +3999895395663995233116579986688778269699389615982998939659193247918999668975597863299499276267179878 +9989933899158995519999896763539929676935591584991626616943495964888658981438483529376937899999918183 +4829998579654495951971971638691618176277519996856988429168266495831212992486396955413697829886599968 +1853513748489779798696199795337967571689486839899518982881879699995999878971985995885285319954968987 +3342299981292915486979299839195993258148889649679616595927478298168379999445161915519894982439638946 +5741832898766672398489974989541186971799425919242686599739939448731546446299879192192895526548848951 +3898679419518979696926476691872981828746218226918199699898828285487879261678997791767663979571336987 +4545997398729587476481757668995896459799851954917678912468571968713532133518634849896488769111976969 +7176919181998999666976198114775775798299797193972885999975499799991922929283534929891716288936629899 +9795297985299599814789928888579191456982553599491674489819963299121598519964298979361694995981918669 +5647159999798466469859785261859791688182892567989542289667144152647594189396864175439725912999894891 +6854155179889746985993265989674997919485741213772961693991919182852979468522779889946746945979139453 +6849999911316858193858699583834199555997997298798955876892868311369313778113995754199257992891592559 +1988966163847446296579892411648896918797968187847519149178391233772828798998561969939976192876594877 +7445186982744995399469915773579589785637114845746289739271566921956439346833864949599959561392652394 +3457499487895199558673758745718298693289788928968598234991939776753988979879884594869769919728168682 +6996592996822655364687387657828999681917991869422948671996356522399889425477419816794863249587691838 +6963522693998786991158579735619989997779699892985724296997797588989857395266828998498892969725581196 +9859966989665161194892178862589775985492499749698891478876986292862589878985699921967994865598972548 +1951799998898999888869856412883984488695132895819836992634797721986196995697288654968728619832457546 +7746279941985434489778669988695998998439885687679569278711958998865855737897118129117847196853321494 +9957647198999793952568873984933619771962796482459488211592975286761921259894198995991177799599947499 +5957899335983477859964986862162667699875586266873467199919735154293718617894984899199896937396169696 +4896218869754451981289699181969462479929965399769819937374193998929686992335854771796763991919183598 +7963369964836263326663688188689148549887888951793951217896899686213646979917379984981861249989999549 +5651487588851599919775191184948759985836569954819197496898639599422949846969583849582827172889781259 +9235786148996892968113972727222986857799699985848999699389987299798673597919859879142818978191972699 +6268697925898964971528988971776886593959277157692478749421918568187987285285135794835198267899129444 +9613855792729968968874877878798998856696549799999913939938579165969969665999919899989935397982894528 +4997991949899429999159159577397714989959998878621218913971667491519691231899789262795929815768874159 +9965848836163359381441957989236819923219977614754398952174759999868197879998492826999779999614619568 +9916479998414596768939496337988287974996399692819868258768657938573834799119189969847332997799632969 +5698447299748197429895187981999374113864719439577495356699467714279996684998225889418687785989668887 +9688999296549647577489651538861651536198886343717392492893999157912496817872939573767915879229444698 +7945998891978892984213828992819989424969949768551929992192128218217979514375299388969726393999499369 +3584919181979999899979852691745679631417252595865981248933848728931198122729313884939499699196979282 +8858721793437795394466977529919919969898771537432681496711998968886579589984829981259798525932187987 +9588959797973868917749898922898847727866979662399888886799981719567732464855989797669812177692858535 +7988797967989166987697149888751549873389785967924498738998179527778487979748999358518578993477944998 +8392255427879688981984196873699686714549989266862782196183895285962499989186484692151849999723391279 +8437165279966699964797868697998719161124994112294916994518516866198924776139989889587889979986973818 +9999579881886267995145198999799886398912847997191746855988699599911799599898975959729735998989189975 +8878929798597768927495551149914988384939936997932243691336699915979516239489822517874899851799315136 +7999937717928948478557923788987292447971689615966385935897391982999178899753365199984698878762193326 +8739178873349956119674999899899922517642862785199198189839768689799987895289957563983787873796927158 +3817196699929999634811599428583198399931978688187175989163313588911897784917986562919151677117114699 +5998827143845268748266989727984179597967556224858671494997248677843425189898194987624713779882979969 +1291199757967569999681279489899999698569168979799631778127984994974999291683887763915481598891197984 +6596739399885895975872877952961612873986668999381529399939575996779494715118543849969191539989723991 +6488878279986978392869749226828917999488959898183448591336188881881342378769238973895889159556799994 +7789977876961783236719451481787118498693824114361919936786189899181887229316982176859199279192424145 +8187849893991985235499899257668519419992986629984899637874749832449368983739929946889995497697325581 +1999982976844663788727661849815985519275791155239799816978282652839694868889597292189945989632996979 +5996994949412446932824171982727298987629311193781981698399298991594594318144966895296816539941754949 +4499757999646423149686819991849992649795216851367986996698575817689371687185996929563284536999154386 +2781727997917211978984917918358938837999218781629649869594796149935179779682659626959939761694881741 +9699391853588289298623919874976619984895139963999399988216318999974869174298698357691152898189998496 +4692148898295579969948321265945989989678928997293841391798864427891761873993391876712881438989147999 +9385356844999749799945931891327611796839596933696939993396192727919575919518191178749822279279367589 +4178987198748999878181711949999695619267692321571299944319696913971989366952788997529689965967283949 +9956943168197988495985856862549149864798959861938533689969366917899972839492619882179391815935536891 +9994859897582628653476292984929998647975796929748931992994879889878464879929465595995992499919947572 +6499868699811766722988787191388665966891869899747691981279799666949896666275972998579926239169811939 +2572961395969294529184998258989427519999852294469971796436995767291982749996658711449539791567874971 +9499369277479918778697894247918649998897952638574461819998871478917181981936547491991768414982337918 +9139161883819343891979967499192937131885599318821172899173915229917976858689192989939199991289159588 +4587788966993732467999991118887435975882488728997989199779497777813778259387411882768829389897869948 +6997871988679928999697816865977788699836897997854449113119982463997827969671859996988242232984999889 +7669989748189979988148659979989987372886949695793489235995874977587946688195985837946785781783754816 +9949977989988894882969918629379321181514166935688979461975779949979998632331698911979279798659979815 +5739999517928987777759268697378941991838969832887199538988396198131293696546792877869527666136992871 +6911198997889976167798919887987969916181719673692949986396122688692969199128693334898362117657497517 +9883388858893695671398924917987816149792972888297996689846999676959672799729896341199962982814179963 +1987996499791423676141938518943291126997238886492375594975195733297999897928779997671984971349299794 +9797999699795947998399566993717699681855989845386398419161478733246296117437796411784118959196917998 +8918619981898886893637776664327129356976966478348969779281122928599816797994927899617318362459879958 +9971138998498917194898897279183767784951818668325759559698816239496896576197991168919876998549693617 +8864749334257944937895657676795539372789673639872688475887819638876957529359787979549486769488261586 +5675561487189788698114476929665946299225219355166913169787589274369169599695999791361786439583994855 +9999956599855466924168799196849941988317721987382287618899839584541991357959855181948139679757198596 +9298494784765969999565792229687116986883978789756616279977893754489916919955299588991939854273184891 +1996653993894556999967399479699996198846899917783471221742335181981132427871897521999889788298436396 +9758778754778989199415992499539647886721912925345489999475288846844991977933449238525898929369479361 +3799665999998683118595895926116918889199463219817924394877958956698592828621676399199495183592857893 +5747926316986915679999389948959192389893246767655852888242899482429279815191681819582769989759282619 +8557944289929978419989549449497998796197294159289979966862799744989186832759979889797777669569898889 +8887698917197579219988794948269467999589319398686198699795225872219199592696935791919185797715588919 +1498696799724916519515862974893197748928697249299992999324589578163647988841492955996651937876156824 +8213962617983488919185253728699798941119614245999164229898897586922898965749999199113889146668885849 +9547881767999183972817991938941799195699921244999582934834983168189915191587942659337539518189911869 +9958877559791958745797981284916899539983986257869698291725831953753946984998659154999916977712958828 diff --git a/src/main/resources/2021/day16.txt b/src/main/resources/2021/day16.txt new file mode 100644 index 00000000..d1c52737 --- /dev/null +++ b/src/main/resources/2021/day16.txt @@ -0,0 +1 @@ +60556F980272DCE609BC01300042622C428BC200DC128C50FCC0159E9DB9AEA86003430BE5EFA8DB0AC401A4CA4E8A3400E6CFF7518F51A554100180956198529B6A700965634F96C0B99DCF4A13DF6D200DCE801A497FF5BE5FFD6B99DE2B11250034C00F5003900B1270024009D610031400E70020C0093002980652700298051310030C00F50028802B2200809C00F999EF39C79C8800849D398CE4027CCECBDA25A00D4040198D31920C8002170DA37C660009B26EFCA204FDF10E7A85E402304E0E60066A200F4638311C440198A11B635180233023A0094C6186630C44017E500345310FF0A65B0273982C929EEC0000264180390661FC403006E2EC1D86A600F43285504CC02A9D64931293779335983D300568035200042A29C55886200FC6A8B31CE647880323E0068E6E175E9B85D72525B743005646DA57C007CE6634C354CC698689BDBF1005F7231A0FE002F91067EF2E40167B17B503E666693FD9848803106252DFAD40E63D42020041648F24460400D8ECE007CBF26F92B0949B275C9402794338B329F88DC97D608028D9982BF802327D4A9FC10B803F33BD804E7B5DDAA4356014A646D1079E8467EF702A573FAF335EB74906CF5F2ACA00B43E8A460086002A3277BA74911C9531F613009A5CCE7D8248065000402B92D47F14B97C723B953C7B22392788A7CD62C1EC00D14CC23F1D94A3D100A1C200F42A8C51A00010A847176380002110EA31C713004A366006A0200C47483109C0010F8C10AE13C9CA9BDE59080325A0068A6B4CF333949EE635B495003273F76E000BCA47E2331A9DE5D698272F722200DDE801F098EDAC7131DB58E24F5C5D300627122456E58D4C01091C7A283E00ACD34CB20426500BA7F1EBDBBD209FAC75F579ACEB3E5D8FD2DD4E300565EBEDD32AD6008CCE3A492F98E15CC013C0086A5A12E7C46761DBB8CDDBD8BE656780 diff --git a/src/main/resources/2021/day17.txt b/src/main/resources/2021/day17.txt new file mode 100644 index 00000000..52bdf2b2 --- /dev/null +++ b/src/main/resources/2021/day17.txt @@ -0,0 +1 @@ +target area: x=175..227, y=-134..-79 diff --git a/src/main/resources/2021/day18.txt b/src/main/resources/2021/day18.txt new file mode 100644 index 00000000..5cb1e484 --- /dev/null +++ b/src/main/resources/2021/day18.txt @@ -0,0 +1,100 @@ +[[[[3,0],[0,0]],1],4] +[[[[3,4],0],[7,7]],[1,6]] +[[[[2,0],5],7],[[[3,1],[2,6]],[[0,8],6]]] +[[[[5,5],0],1],[[[0,0],1],[[0,6],[0,9]]]] +[[0,[0,[1,7]]],[3,[1,[7,6]]]] +[[[9,[5,2]],[[5,2],[6,8]]],[[[7,0],7],[[2,3],[9,4]]]] +[[[[3,8],7],[[0,7],[2,0]]],[0,[[2,9],0]]] +[[[7,[2,2]],[3,4]],[6,7]] +[8,[[[3,3],8],[[7,1],[6,7]]]] +[[9,[9,8]],[[1,[9,1]],[2,5]]] +[[[7,8],[[1,2],[2,6]]],[[9,7],[6,[7,0]]]] +[[[3,3],[[5,6],5]],[[[2,8],1],9]] +[[[2,[5,0]],[[9,9],[4,0]]],[0,5]] +[[[9,3],[[9,4],[5,8]]],[[[3,2],[7,1]],[[3,8],1]]] +[[3,2],[[6,[0,9]],[8,3]]] +[[[5,7],[[7,4],[4,6]]],[[[9,8],3],3]] +[[[4,[2,8]],9],[[[8,5],[9,7]],[[8,9],[2,6]]]] +[[[1,[2,4]],6],[[8,[5,2]],[[0,7],[4,1]]]] +[[[[4,3],6],[[6,4],[4,2]]],[[9,0],[[5,9],9]]] +[[[[3,0],6],[4,[7,5]]],4] +[[[[1,0],[7,1]],0],[[[8,5],8],2]] +[[[[2,9],[4,1]],[[8,9],[3,3]]],[9,[[0,7],2]]] +[[1,[4,[4,2]]],[[[3,5],[8,8]],2]] +[[[8,[1,4]],[[6,5],5]],[[7,[4,7]],4]] +[[[[0,5],2],[[9,2],0]],0] +[[[[6,2],[2,4]],[0,[7,3]]],[9,[8,[5,9]]]] +[[8,0],2] +[[[[0,2],2],[[9,2],[8,1]]],[[[7,6],[5,3]],6]] +[[[[8,7],[5,3]],[[3,0],8]],[[[8,4],[2,2]],[[8,1],2]]] +[[[[1,5],[4,6]],[[4,0],[2,4]]],[[1,1],[[0,7],[7,3]]]] +[[7,2],[[7,[6,7]],[8,5]]] +[[[9,7],[[6,6],9]],8] +[[4,2],[[[1,0],[9,1]],[[0,7],[8,0]]]] +[[[[5,9],5],[8,9]],[[2,4],[[5,2],[8,3]]]] +[[[[4,5],[7,0]],[4,5]],[[7,[6,4]],[[1,7],[6,3]]]] +[[2,0],4] +[[2,[[5,1],[2,1]]],[[5,[7,2]],[[2,3],[7,0]]]] +[[4,[4,9]],[9,[6,8]]] +[[[[6,1],[1,5]],[0,[4,0]]],[[[7,0],2],4]] +[[[[3,3],[2,2]],[[2,4],2]],[[8,[1,1]],4]] +[[[[1,5],8],[[9,4],[7,7]]],[[[8,7],[7,2]],[0,[7,3]]]] +[9,[[7,[0,4]],4]] +[4,[0,8]] +[[[[2,6],1],[8,[8,4]]],[[8,2],[1,[8,4]]]] +[[7,[8,[8,8]]],[4,1]] +[[0,6],[[7,[5,9]],[[7,1],8]]] +[4,6] +[[[[3,2],[5,6]],[0,7]],[8,[7,[9,5]]]] +[[[3,7],[4,5]],6] +[[[0,[3,9]],[9,1]],6] +[[[[7,3],8],[6,7]],[[1,0],[1,7]]] +[[[5,[4,8]],2],[[[7,1],6],[[0,3],2]]] +[[1,0],[[1,2],[[2,0],1]]] +[[8,[[6,1],[7,1]]],0] +[[9,[2,0]],[[7,[6,2]],4]] +[[[9,[9,4]],[[4,8],3]],[[9,0],[[2,2],[0,6]]]] +[[[7,5],[[2,9],6]],[[2,4],[[1,1],[8,2]]]] +[[[1,[6,3]],[[2,2],[1,8]]],[[[7,3],[6,0]],[4,[7,6]]]] +[6,5] +[[3,[9,[4,4]]],[[6,9],[4,5]]] +[[[4,[1,8]],[[4,0],6]],[[[9,0],[8,3]],[[8,6],[3,2]]]] +[[[8,[1,2]],[[3,9],6]],[[3,0],1]] +[[1,[2,[4,0]]],6] +[0,[[[1,3],[9,1]],[[3,8],[9,4]]]] +[2,[2,[[2,7],[7,8]]]] +[[[3,0],[[4,6],2]],[9,2]] +[[[5,[2,2]],[[2,7],[9,9]]],[[3,[4,4]],[8,[9,8]]]] +[[[[7,5],[7,9]],[[8,5],6]],[[1,[8,4]],[8,2]]] +[[[6,4],[5,5]],[[[8,1],5],[[6,4],[6,9]]]] +[[[[8,9],0],[[4,6],7]],[[[3,9],[6,4]],[8,[7,4]]]] +[4,[[7,7],4]] +[[[[4,9],[1,2]],[8,[4,7]]],[[8,[4,8]],[0,[5,4]]]] +[1,[7,9]] +[[[5,[2,0]],[[4,3],[6,8]]],[9,9]] +[[[[3,9],9],[4,3]],[1,[3,[8,1]]]] +[[[[8,7],[6,1]],[3,9]],[5,[[8,0],4]]] +[[[[8,2],[4,6]],[6,[9,9]]],[1,[[7,7],4]]] +[[7,5],[[5,0],[0,3]]] +[[[6,0],[9,1]],[[[4,3],[5,0]],[[9,5],[0,0]]]] +[8,[[3,6],3]] +[[[[9,3],7],[1,3]],[[[6,4],[8,4]],[1,5]]] +[[[[3,8],2],[5,4]],[[[1,8],5],[2,[2,7]]]] +[[2,9],[6,[0,2]]] +[[2,[7,9]],[[4,1],[[9,2],[0,7]]]] +[[0,[6,4]],[[9,2],[0,[0,7]]]] +[[[[7,2],[8,6]],[6,2]],[[[1,6],[2,2]],1]] +[[1,6],[[[4,3],[8,2]],[3,[9,4]]]] +[[9,[7,3]],[[[7,0],4],[[1,7],[2,2]]]] +[[7,[5,[9,8]]],[[[7,5],[7,6]],[7,[9,8]]]] +[[[[6,1],[4,3]],4],[[[5,9],4],2]] +[[[[5,1],[2,5]],0],[[7,[5,7]],[[4,4],9]]] +[9,2] +[4,[[[6,6],5],7]] +[[8,[[7,3],[0,7]]],8] +[[[3,4],[[2,3],0]],[[[9,6],[1,1]],[4,[0,4]]]] +[[[[3,3],[2,3]],[2,5]],[[4,[2,7]],3]] +[[[8,[0,3]],2],[4,4]] +[[[3,5],[[2,1],[3,4]]],[[0,3],4]] +[[[[4,1],4],2],[[[3,7],2],[[8,1],3]]] +[[[[0,6],[7,3]],[5,[3,9]]],[7,[[4,1],8]]] diff --git a/src/main/resources/2021/day19.txt b/src/main/resources/2021/day19.txt new file mode 100644 index 00000000..2cbcd2f3 --- /dev/null +++ b/src/main/resources/2021/day19.txt @@ -0,0 +1,748 @@ +--- scanner 0 --- +-373,-505,495 +726,-431,-735 +969,-333,525 +974,-314,431 +-282,574,699 +588,476,-482 +12,23,-110 +-347,-413,630 +-307,484,-878 +698,631,705 +760,538,748 +913,-376,524 +688,-374,-647 +-258,463,-934 +718,500,661 +-476,-823,-648 +-419,435,-860 +549,684,-453 +657,-349,-883 +-365,555,740 +-519,542,672 +511,436,-465 +98,-84,19 +-404,-506,511 +-570,-813,-631 +-436,-831,-723 + +--- scanner 1 --- +382,-438,840 +-403,544,749 +824,583,394 +-580,-795,-437 +-830,587,-494 +95,-16,-49 +660,-776,-365 +-662,-430,486 +665,-750,-317 +-513,-848,-520 +396,-449,873 +629,-774,-443 +-585,-442,577 +-706,568,-482 +-752,551,-598 +750,431,-791 +701,397,-848 +-18,-160,29 +831,633,628 +-443,-475,502 +-290,667,716 +-442,675,734 +801,531,561 +409,-498,724 +-527,-732,-378 +746,420,-850 + +--- scanner 2 --- +-757,416,-610 +630,444,-341 +-471,-355,-807 +-512,-587,748 +866,-507,940 +618,659,823 +-455,-706,841 +-522,429,-644 +861,-601,921 +309,-710,-826 +-29,-58,2 +-519,-544,-797 +653,377,-387 +805,-600,878 +-437,-528,-743 +-678,555,441 +-544,647,423 +-481,-571,749 +-614,375,-625 +300,-648,-637 +549,807,905 +64,50,130 +580,571,880 +-584,572,431 +356,-783,-718 +641,522,-355 + +--- scanner 3 --- +-397,741,649 +613,283,796 +-138,40,36 +560,267,677 +601,321,-513 +-36,-88,-134 +-884,-417,-545 +-891,-435,-712 +-641,-652,540 +-673,-728,470 +-617,575,-408 +304,-368,627 +682,-781,-355 +633,265,-717 +-489,733,486 +-550,684,566 +295,-418,674 +333,-402,854 +-479,610,-482 +-616,617,-548 +-865,-415,-662 +480,267,822 +815,-855,-362 +653,392,-662 +707,-919,-427 +-789,-585,482 + +--- scanner 4 --- +-893,708,478 +702,458,659 +-362,-770,-661 +668,-333,-616 +-458,699,-625 +664,371,701 +-455,-837,-636 +540,-648,591 +628,420,-341 +-821,846,453 +698,-631,631 +-586,-465,507 +571,414,639 +801,-368,-728 +609,-614,776 +647,379,-424 +-34,-124,39 +67,62,-47 +660,447,-578 +-531,-338,527 +-512,-735,-755 +-592,590,-679 +-886,782,345 +793,-409,-648 +-508,699,-613 +-735,-394,559 + +--- scanner 5 --- +507,-397,537 +754,617,-598 +-512,-507,655 +-769,835,-443 +-587,-564,642 +-517,722,494 +-222,-719,-274 +596,600,-558 +-284,-626,-335 +92,-7,-38 +973,611,780 +-433,895,535 +649,-426,523 +-674,-529,580 +-241,-625,-279 +592,-489,-530 +723,-445,-550 +685,583,-413 +715,-395,582 +913,764,801 +-462,718,457 +630,-402,-488 +-641,714,-472 +146,83,123 +-628,767,-519 +948,665,679 + +--- scanner 6 --- +-347,-802,628 +740,-472,669 +-407,-823,781 +814,-610,634 +560,660,451 +-690,466,-385 +59,-23,-55 +-813,-559,-380 +795,714,-860 +-372,-701,682 +510,-884,-376 +-724,536,617 +-635,391,600 +505,640,324 +677,-877,-358 +860,822,-796 +560,-858,-356 +709,608,380 +-728,508,-472 +-70,-108,50 +-671,-545,-409 +-605,-604,-378 +-566,576,634 +674,-609,676 +-597,528,-428 +867,689,-722 + +--- scanner 7 --- +-591,-929,-536 +442,553,477 +-562,-752,649 +399,-918,-480 +-436,-728,613 +-510,-873,-401 +-103,-138,128 +328,-839,-583 +-967,419,577 +-402,-920,-474 +685,433,-309 +754,-427,882 +275,605,454 +509,655,447 +-501,645,-431 +721,-416,896 +-584,611,-612 +719,304,-282 +-910,453,528 +-548,683,-493 +-484,-754,618 +-969,442,532 +605,-476,869 +443,-859,-559 +558,307,-310 +-12,-7,16 + +--- scanner 8 --- +-846,632,-808 +-753,513,-751 +331,-827,668 +621,484,742 +620,-449,-649 +600,552,595 +639,-503,-741 +-436,-646,-679 +-36,-79,-63 +605,-490,-506 +792,470,-744 +412,-904,606 +-454,713,743 +-481,702,777 +463,-798,635 +-754,497,-782 +802,281,-792 +-498,-872,782 +-576,681,720 +-446,-629,-585 +-532,-784,785 +738,454,-826 +590,572,812 +-370,-857,781 +-428,-721,-719 + +--- scanner 9 --- +-279,518,-679 +822,788,-555 +-665,-616,708 +590,-595,727 +663,-722,632 +97,14,179 +-352,-770,-485 +-787,674,944 +160,-104,6 +-651,-607,854 +-324,358,-718 +390,691,495 +924,775,-406 +-290,495,-793 +-403,-719,-404 +931,-557,-715 +913,783,-608 +881,-514,-590 +-664,768,877 +726,-574,606 +-701,714,804 +-239,-816,-374 +-625,-438,778 +385,741,585 +404,760,449 +806,-484,-669 + +--- scanner 10 --- +-825,-457,-510 +-416,358,-647 +521,-577,369 +-457,-465,496 +677,-750,-672 +-464,362,-748 +-407,-375,640 +718,-607,-687 +-402,-508,572 +-405,383,-619 +-536,462,527 +716,660,-449 +538,-671,379 +286,556,843 +-482,539,695 +-821,-437,-438 +-100,-73,-67 +571,648,-417 +446,-537,361 +522,587,818 +434,625,761 +-704,-478,-385 +664,-515,-706 +-530,446,581 +649,637,-403 +-5,66,97 + +--- scanner 11 --- +737,-219,-555 +-663,-771,440 +-586,676,-684 +359,763,-968 +-829,550,227 +500,759,328 +-618,606,-608 +-55,165,-84 +-670,-578,449 +500,811,223 +-772,489,333 +375,-410,659 +762,-291,-417 +-829,-409,-919 +-734,618,-751 +388,990,-934 +455,-349,714 +356,839,315 +-810,-526,-921 +-863,674,324 +339,-455,703 +-753,-683,524 +870,-226,-481 +350,810,-918 +-836,-576,-901 +74,39,-143 + +--- scanner 12 --- +620,-417,735 +-749,-645,-414 +477,-548,-412 +482,848,542 +-776,901,-452 +-132,87,-6 +-792,847,-370 +-965,911,-404 +741,-289,764 +-813,-836,933 +513,770,544 +-733,-644,-445 +-719,-817,928 +465,-563,-597 +436,583,-705 +-720,-774,872 +477,896,568 +473,497,-579 +437,-608,-570 +-537,822,423 +-672,741,367 +-614,-737,-388 +467,655,-630 +673,-430,688 +-610,930,376 +-188,-25,130 + +--- scanner 13 --- +-795,743,584 +-735,-655,-479 +403,-652,296 +-869,666,-558 +487,-795,-471 +-816,749,-625 +-651,-457,424 +362,-568,469 +325,-623,473 +530,588,-797 +-170,33,69 +410,395,705 +376,338,656 +-604,-444,477 +625,-883,-518 +542,-815,-534 +566,692,-875 +-771,869,620 +-45,56,-102 +-785,-775,-563 +-753,808,-572 +399,336,701 +-575,-316,356 +547,704,-751 +-729,-690,-518 +-797,821,615 + +--- scanner 14 --- +906,-535,672 +-840,-337,492 +-829,-312,464 +869,-495,468 +-781,-316,363 +71,-36,-1 +598,796,-581 +592,908,-608 +-639,705,-769 +546,809,606 +-475,710,-879 +633,-494,-452 +-541,524,726 +840,-595,608 +628,-704,-443 +-420,503,601 +624,-716,-443 +-699,-393,-806 +-424,483,673 +-576,690,-837 +-687,-342,-678 +-1,120,-99 +554,761,707 +515,765,-554 +-679,-408,-614 +566,889,728 + +--- scanner 15 --- +409,988,-523 +-459,868,-528 +502,973,-349 +57,154,-109 +579,-469,436 +543,-478,-669 +-686,-678,786 +542,-343,522 +880,733,694 +571,-451,-624 +-643,-634,-706 +583,-636,-609 +-859,-644,850 +10,11,17 +-656,890,669 +-627,-603,-705 +-438,925,-433 +-508,-660,-798 +-588,743,648 +-568,960,638 +573,-418,594 +-670,-596,840 +360,937,-330 +796,731,534 +689,745,607 +-427,891,-406 + +--- scanner 16 --- +-823,562,316 +368,476,811 +-737,522,456 +-753,-613,472 +569,532,-508 +-828,-667,631 +-452,894,-738 +386,-574,-884 +-456,953,-749 +-401,-458,-638 +-501,951,-772 +-671,-672,502 +647,-560,419 +-700,468,383 +354,545,765 +-10,84,-125 +112,124,23 +-371,-525,-536 +760,-645,463 +-378,-291,-586 +688,568,-580 +507,485,-546 +745,-651,475 +385,-701,-758 +349,495,675 +358,-735,-887 + +--- scanner 17 --- +778,811,568 +387,-443,-821 +-438,-781,-858 +-152,88,-129 +457,579,-448 +606,-427,-866 +-18,-69,0 +-770,-491,769 +-452,-814,-847 +-685,502,-522 +471,437,-564 +-721,376,-546 +538,-438,692 +529,-518,-854 +-716,424,-520 +-689,-371,793 +-731,617,652 +524,-325,616 +584,811,488 +647,840,550 +652,-309,714 +-762,689,727 +-706,-309,810 +-725,775,601 +-465,-665,-798 +524,496,-501 + +--- scanner 18 --- +446,708,451 +-653,-546,-866 +-714,-775,480 +65,33,-46 +-598,368,-941 +545,-648,737 +685,-548,766 +-530,501,-946 +-539,-453,-818 +661,-390,-943 +-816,-711,424 +552,450,-523 +480,430,-527 +-701,678,680 +-688,681,583 +-485,-469,-812 +425,836,463 +790,-369,-884 +-640,741,555 +-454,458,-891 +481,-588,803 +547,756,443 +427,471,-644 +689,-365,-932 +-714,-680,314 + +--- scanner 19 --- +-499,677,856 +-525,682,904 +-427,-496,701 +644,-694,-675 +483,-675,-712 +-501,646,778 +-543,-510,843 +640,694,-555 +613,722,-600 +-567,-456,-655 +-561,-417,-620 +673,692,663 +455,682,-540 +509,-623,469 +589,-817,469 +571,-686,440 +-721,418,-281 +578,-676,-577 +-511,-501,-740 +-692,539,-409 +-480,-563,784 +622,686,505 +748,723,591 +62,44,-2 +-645,486,-422 + +--- scanner 20 --- +808,-763,595 +-108,-142,81 +-8,32,19 +489,811,-772 +570,817,-853 +-416,-393,710 +-358,292,430 +-726,-843,-392 +-390,-377,577 +-730,475,-692 +-535,-377,657 +544,-700,-824 +477,-865,-783 +-646,-794,-453 +-672,542,-544 +521,693,900 +498,-637,-811 +-538,308,392 +774,-792,647 +601,585,920 +-742,618,-576 +428,781,-764 +807,-789,765 +-585,258,401 +-563,-851,-300 +602,674,813 + +--- scanner 21 --- +-666,722,-484 +-491,813,705 +-806,808,-524 +746,-892,-415 +-703,-662,598 +856,345,-840 +51,-59,12 +693,-801,-410 +-447,-364,-457 +817,300,-680 +544,-903,-423 +-620,656,710 +717,614,845 +762,-449,646 +-647,-760,689 +603,-404,637 +-659,-775,683 +667,-374,580 +931,311,-703 +678,653,815 +-650,738,651 +709,738,795 +-357,-369,-507 +-739,685,-430 +-311,-383,-438 + +--- scanner 22 --- +888,-585,-603 +-572,-609,569 +-493,-729,-833 +852,522,740 +-734,-684,591 +-577,-770,-660 +698,436,776 +899,591,-302 +32,-49,54 +589,-741,488 +913,-484,-549 +-591,422,-659 +857,498,-259 +447,-727,459 +-476,644,655 +-624,670,718 +-522,-807,-656 +770,519,-255 +-582,568,-673 +831,377,679 +-760,498,-633 +-647,-622,626 +-603,549,582 +655,-682,457 +853,-463,-702 + +--- scanner 23 --- +567,-750,-881 +-649,667,-700 +-385,658,701 +-399,800,730 +849,-880,388 +-698,-573,754 +-551,-328,-607 +-724,-523,734 +-717,-690,752 +688,584,682 +874,-808,250 +92,35,11 +626,677,725 +487,-689,-826 +451,-644,-870 +798,739,-505 +982,-873,314 +837,531,-476 +875,779,-488 +-563,682,-603 +180,-22,-174 +-652,727,-584 +-558,-521,-616 +-444,592,732 +-641,-416,-691 +668,715,638 + +--- scanner 24 --- +-288,581,-726 +-315,-775,396 +-318,-863,362 +570,515,-707 +-505,561,-736 +706,593,-688 +-380,690,440 +527,-599,-852 +-465,-789,-599 +786,812,404 +-358,493,-757 +825,668,377 +738,-351,421 +-494,-895,-548 +677,568,-751 +760,809,370 +-319,-848,234 +-323,711,345 +729,-432,253 +-357,722,318 +-432,-818,-467 +738,-382,358 +458,-647,-954 +446,-614,-880 +100,-21,-57 + +--- scanner 25 --- +-520,-766,-683 +-561,-939,-767 +446,-758,-559 +814,534,599 +-798,491,642 +-534,-579,223 +637,-651,628 +-71,34,-179 +758,399,680 +309,582,-916 +-681,463,-688 +-606,485,-526 +417,-879,-431 +-557,-534,221 +-726,610,606 +-760,429,689 +-483,-762,-738 +805,472,788 +248,675,-978 +639,-620,706 +-568,-530,280 +-668,520,-613 +253,581,-959 +493,-811,-572 +613,-615,754 +-84,-140,-28 + +--- scanner 26 --- +-589,648,-588 +636,927,249 +-548,-598,503 +456,656,-715 +-572,793,-677 +413,718,-622 +-756,687,636 +730,932,230 +421,-407,-639 +489,-561,-626 +531,-389,329 +462,-324,-658 +650,-446,422 +-291,-599,-618 +-703,734,649 +36,56,-73 +637,871,292 +-367,-631,-493 +-326,-711,-485 +666,-415,421 +-824,763,777 +-520,-571,458 +-606,608,-746 +-560,-413,518 +500,676,-584 diff --git a/src/main/resources/2021/day2.txt b/src/main/resources/2021/day2.txt new file mode 100644 index 00000000..d054d4e1 --- /dev/null +++ b/src/main/resources/2021/day2.txt @@ -0,0 +1,1000 @@ +forward 5 +forward 1 +forward 3 +down 8 +up 6 +down 5 +forward 6 +down 9 +down 7 +up 9 +down 9 +forward 5 +forward 3 +down 3 +forward 1 +forward 8 +down 8 +forward 6 +forward 9 +forward 5 +down 8 +up 1 +forward 4 +forward 8 +down 4 +forward 2 +down 1 +up 8 +up 9 +down 4 +forward 5 +up 9 +forward 1 +down 9 +down 7 +down 4 +down 6 +down 3 +forward 5 +up 4 +up 7 +forward 1 +down 1 +up 3 +forward 8 +down 8 +up 2 +forward 2 +down 7 +down 7 +down 4 +forward 3 +down 5 +up 8 +down 6 +up 2 +down 7 +forward 8 +down 7 +down 7 +up 6 +forward 8 +up 1 +down 4 +forward 1 +down 1 +down 9 +down 1 +down 7 +forward 2 +forward 3 +up 8 +up 1 +forward 4 +forward 7 +forward 9 +up 8 +down 9 +down 3 +down 5 +down 5 +forward 7 +forward 3 +up 7 +forward 6 +up 6 +forward 3 +down 2 +down 5 +down 2 +up 6 +down 5 +down 5 +forward 7 +forward 2 +forward 7 +down 6 +forward 1 +forward 8 +up 6 +forward 2 +down 5 +forward 3 +up 2 +forward 3 +down 2 +forward 4 +forward 6 +down 8 +forward 7 +forward 6 +down 1 +down 8 +forward 7 +up 2 +forward 2 +down 7 +up 6 +forward 7 +down 9 +down 7 +forward 4 +down 9 +down 4 +forward 6 +up 6 +up 5 +down 5 +up 7 +forward 6 +down 1 +down 5 +forward 1 +up 6 +forward 1 +down 7 +forward 7 +forward 4 +up 5 +down 3 +forward 7 +forward 6 +up 9 +forward 8 +forward 1 +up 2 +up 8 +forward 7 +up 7 +down 1 +forward 9 +down 5 +forward 5 +forward 2 +forward 2 +forward 6 +up 5 +up 1 +forward 6 +up 3 +down 7 +down 6 +down 1 +forward 1 +forward 8 +forward 8 +down 8 +up 3 +down 7 +down 2 +down 9 +forward 9 +down 7 +forward 4 +down 9 +forward 8 +down 1 +down 5 +down 9 +down 8 +forward 8 +down 3 +forward 4 +forward 6 +up 3 +forward 4 +down 9 +down 6 +up 6 +up 3 +down 2 +up 1 +forward 5 +down 7 +down 3 +forward 5 +up 1 +forward 2 +down 3 +down 3 +forward 6 +down 5 +down 7 +down 1 +down 2 +down 7 +forward 4 +forward 7 +down 7 +forward 6 +forward 2 +down 1 +down 8 +forward 5 +forward 5 +down 7 +forward 6 +forward 7 +up 2 +forward 5 +down 8 +forward 7 +down 7 +up 6 +forward 6 +down 2 +down 7 +forward 6 +forward 4 +down 5 +down 7 +forward 2 +forward 6 +forward 6 +down 7 +down 9 +forward 9 +forward 4 +up 9 +up 2 +up 2 +forward 4 +down 6 +forward 7 +up 5 +forward 1 +forward 6 +down 8 +forward 2 +down 8 +forward 9 +forward 5 +forward 1 +up 8 +down 4 +down 2 +down 9 +up 6 +forward 8 +down 9 +forward 3 +down 3 +down 9 +down 9 +down 6 +forward 7 +down 4 +forward 8 +down 7 +down 8 +up 4 +up 3 +forward 1 +up 9 +up 1 +up 9 +up 7 +down 1 +forward 5 +forward 7 +forward 3 +forward 8 +up 4 +forward 7 +down 5 +forward 9 +up 3 +up 3 +down 2 +forward 3 +up 3 +down 3 +down 4 +up 6 +down 7 +down 1 +down 7 +forward 1 +down 4 +forward 9 +down 9 +up 8 +up 5 +down 7 +up 1 +forward 6 +down 1 +down 4 +down 3 +forward 7 +forward 4 +up 6 +down 2 +down 1 +forward 1 +up 5 +down 2 +down 9 +up 2 +up 3 +forward 5 +forward 5 +down 8 +down 4 +up 4 +down 1 +forward 8 +up 7 +down 1 +down 4 +forward 3 +up 4 +down 4 +down 5 +down 9 +down 1 +down 7 +up 2 +down 6 +up 9 +down 3 +down 1 +down 8 +down 4 +up 2 +forward 6 +forward 9 +down 6 +forward 6 +forward 4 +forward 8 +forward 5 +forward 6 +forward 9 +down 3 +forward 8 +forward 6 +forward 7 +up 9 +forward 3 +up 3 +forward 5 +down 5 +up 9 +forward 1 +forward 9 +down 7 +forward 5 +forward 5 +forward 6 +forward 5 +forward 9 +forward 8 +forward 3 +down 2 +forward 6 +forward 8 +down 4 +forward 4 +forward 1 +forward 1 +down 2 +forward 2 +forward 5 +up 4 +forward 3 +down 3 +down 5 +down 6 +forward 4 +down 8 +down 4 +forward 5 +down 7 +up 3 +up 6 +forward 3 +forward 2 +forward 5 +down 9 +down 4 +down 8 +down 2 +forward 4 +forward 7 +down 4 +up 5 +forward 8 +down 8 +down 1 +forward 5 +down 6 +down 9 +up 6 +forward 9 +down 3 +forward 6 +forward 2 +down 5 +forward 1 +down 1 +down 1 +forward 2 +up 9 +down 1 +up 8 +forward 9 +up 8 +forward 2 +forward 8 +up 2 +forward 4 +down 5 +forward 8 +up 2 +up 1 +forward 4 +up 4 +up 3 +up 5 +down 1 +forward 3 +forward 6 +forward 9 +forward 6 +up 8 +forward 2 +forward 1 +down 2 +down 3 +down 2 +up 4 +forward 5 +up 2 +forward 3 +forward 9 +up 5 +forward 1 +down 7 +forward 9 +down 5 +up 7 +down 6 +forward 7 +forward 9 +up 6 +forward 3 +down 1 +forward 1 +down 8 +down 2 +up 9 +down 4 +down 4 +down 7 +forward 4 +forward 1 +forward 6 +down 9 +down 9 +down 9 +forward 1 +forward 6 +forward 3 +forward 7 +forward 3 +forward 9 +up 8 +forward 5 +down 1 +down 6 +up 8 +forward 3 +up 8 +down 6 +forward 6 +up 2 +up 8 +up 5 +forward 9 +down 4 +up 1 +up 3 +up 2 +down 9 +down 1 +forward 7 +down 2 +forward 6 +up 4 +down 7 +forward 1 +down 3 +down 5 +forward 1 +down 3 +down 1 +forward 8 +up 5 +forward 5 +forward 8 +forward 8 +forward 8 +forward 2 +down 3 +down 6 +up 2 +up 2 +down 1 +up 7 +down 9 +up 1 +up 4 +forward 1 +forward 4 +up 4 +up 6 +forward 5 +forward 2 +forward 7 +up 8 +up 3 +down 5 +down 9 +forward 4 +forward 5 +forward 5 +down 1 +up 8 +up 2 +forward 3 +up 2 +forward 8 +up 2 +down 6 +up 7 +forward 6 +down 3 +forward 3 +down 6 +forward 6 +forward 4 +forward 8 +down 8 +up 7 +down 7 +down 2 +up 5 +up 2 +down 4 +forward 5 +down 3 +up 4 +down 2 +up 2 +down 7 +forward 4 +forward 3 +forward 6 +down 2 +down 8 +forward 3 +forward 4 +forward 4 +down 4 +down 3 +up 6 +down 2 +forward 7 +forward 4 +down 7 +forward 1 +up 6 +forward 3 +up 3 +up 7 +forward 6 +down 9 +down 8 +down 3 +forward 8 +forward 1 +up 3 +down 5 +down 3 +forward 1 +up 9 +down 6 +forward 3 +down 9 +up 7 +forward 5 +forward 4 +forward 7 +up 3 +forward 3 +down 5 +forward 7 +forward 9 +down 6 +forward 7 +forward 5 +up 6 +forward 3 +forward 3 +down 7 +forward 4 +up 2 +forward 8 +down 7 +up 7 +down 7 +forward 6 +up 3 +forward 2 +up 7 +down 3 +down 4 +down 1 +forward 3 +forward 5 +up 7 +forward 3 +down 1 +down 2 +up 4 +forward 2 +up 5 +down 4 +forward 1 +down 6 +up 1 +forward 5 +forward 1 +down 8 +forward 7 +down 7 +forward 4 +forward 7 +forward 3 +forward 2 +forward 1 +forward 7 +down 1 +forward 9 +forward 9 +forward 8 +forward 9 +forward 8 +forward 5 +forward 1 +up 5 +forward 3 +forward 6 +forward 1 +up 4 +down 1 +down 9 +down 6 +forward 4 +up 9 +down 3 +forward 2 +down 3 +up 2 +forward 4 +forward 4 +down 7 +forward 9 +forward 3 +down 4 +up 4 +down 4 +forward 7 +forward 3 +forward 6 +forward 9 +down 4 +down 5 +down 2 +forward 4 +up 6 +forward 8 +forward 3 +down 2 +down 5 +forward 4 +down 8 +up 5 +down 3 +forward 6 +down 8 +up 9 +forward 3 +forward 8 +forward 6 +forward 7 +down 3 +up 6 +down 7 +down 4 +forward 2 +forward 5 +down 1 +down 5 +down 5 +forward 6 +forward 6 +down 1 +forward 2 +up 1 +down 2 +down 3 +forward 3 +forward 9 +down 9 +down 1 +up 8 +down 5 +down 2 +up 7 +forward 8 +up 7 +forward 3 +forward 6 +down 2 +down 3 +forward 1 +down 6 +down 1 +forward 4 +up 2 +down 3 +up 7 +down 3 +down 2 +up 8 +up 7 +down 3 +forward 4 +down 8 +up 2 +down 6 +forward 9 +down 1 +up 3 +up 1 +down 4 +up 6 +down 2 +forward 1 +down 6 +forward 4 +forward 3 +down 7 +down 2 +down 6 +down 2 +down 7 +forward 2 +down 1 +up 8 +up 6 +up 1 +forward 5 +down 9 +down 5 +up 7 +down 4 +forward 4 +forward 5 +up 5 +forward 6 +forward 1 +forward 5 +forward 1 +forward 6 +down 6 +forward 3 +up 4 +forward 6 +down 6 +forward 1 +forward 5 +forward 8 +down 3 +forward 6 +forward 1 +up 1 +up 7 +forward 7 +forward 8 +up 6 +forward 9 +up 5 +forward 1 +forward 5 +down 3 +up 3 +up 9 +forward 9 +forward 5 +forward 3 +forward 2 +forward 4 +down 6 +up 5 +down 2 +forward 5 +down 2 +down 5 +down 6 +forward 7 +down 2 +forward 7 +forward 2 +forward 8 +up 1 +forward 9 +down 2 +up 1 +down 9 +forward 8 +forward 3 +up 9 +down 1 +down 1 +down 8 +up 4 +up 9 +forward 9 +forward 3 +down 9 +forward 3 +forward 4 +down 8 +forward 8 +forward 7 +down 9 +up 2 +down 9 +down 8 +down 9 +forward 4 +up 6 +down 4 +forward 8 +forward 5 +up 2 +forward 5 +down 3 +forward 6 +down 5 +forward 8 +up 3 +down 5 +down 4 +forward 5 +up 3 +up 8 +forward 1 +up 8 +forward 4 +down 4 +forward 7 +forward 5 +forward 7 +forward 9 +up 1 +down 6 +forward 8 +up 1 +down 5 +up 6 +down 9 +down 5 +forward 3 +up 1 +forward 4 +up 4 +down 4 +forward 5 +forward 8 +down 2 +up 7 +down 6 +forward 7 +up 7 +forward 5 +down 2 +forward 9 +forward 1 +down 9 +down 8 +forward 7 +forward 7 +forward 1 +up 3 +up 1 +forward 2 +down 2 +up 9 +down 2 +forward 7 +down 1 +down 5 +down 4 +up 7 +forward 1 +down 3 +forward 9 +down 6 +forward 4 +down 4 +down 9 +down 3 +up 3 +down 3 +up 8 +down 2 +forward 1 +forward 5 +forward 5 +down 2 +forward 7 +down 7 +down 6 +forward 6 +up 5 +down 4 +down 8 +down 7 +forward 7 +up 3 +down 3 +down 3 +forward 8 +forward 5 +down 1 +up 6 +down 3 +up 2 +down 6 +up 7 +down 4 +up 2 +forward 4 +forward 9 +forward 9 +up 1 +forward 7 +up 7 +forward 7 +forward 6 +forward 3 +forward 1 +down 5 +down 3 +forward 4 +up 9 +down 5 +up 2 +down 6 +down 5 +forward 6 +forward 4 +up 7 +up 6 +down 9 +forward 4 +up 1 +up 6 +up 3 +forward 9 +forward 3 +forward 9 +down 7 +forward 6 +down 6 +forward 8 diff --git a/src/main/resources/2021/day20.txt b/src/main/resources/2021/day20.txt new file mode 100644 index 00000000..2afe0aca --- /dev/null +++ b/src/main/resources/2021/day20.txt @@ -0,0 +1,102 @@ +##..#######.#.#...##..#.#....#..#####..###...#..#.#..##....#.###..#.###..#.#.#.##.######.#.##.#.#..#######.####..#.#.#.##..##.#.#######...#..#...........###.#.........#..#....#.#..##.##....#.##.#...#.##..##....##..#####......#.#.##....#...#########...#..##...####.#####.##.#.###..##.##..#.#..#.......#..##....#.##.######.#.##..##......####...#.##..#...#.###.##..##...#..#####..#.#.###.#.##..##..#####...#.#.#...###..#.##.####.#.#..#####..##.##...#.#.#....####.##..#.##.###.....##.#....#####....###...##.#.#...... + +##.##...#.##...####.#.#..######......#.##.#.#.###......#.#...##..##.###.###.##.#..#..#.....#..####.. +#######...##..#....#..####..##.##.#.##.##.##..#...##.##..##..#..##....#########....##........###...# +##.#.###...#...###.#####..#..#.##..#....#####..##.#..#..#....##.#..#.#..#...#.##....##.##......##### +..#...##..##..#.###..###.#.###.##.#.###.##.####..#.#.##....#..##.###.##..##......#.#####.##..#.#.#.# +#.........#.##.#.#....#..#..##..###..###.#...##.#.#.###.##..#.##.......###.###...#..##.#####.#...#.# +.##..####.#.###.#..#.......####.....#.###...####.#.###..####..#.......##.##.##########..#.#.#..#.#.. +#..#.###..#.##..######.....#######.##.#.#...##..#.##...##..#.##..###..######..#.##.....##...#.#.#.#. +###..#..###.#.#.#...#####...#.#..#.##....##.#.##..#..###.#..##..####.######.#.#...#.#..#.####...##.# +#....#...#####.###.######..#....##.#....#####..#.#####...#.#...#.#.#.######...##...##.##..####.##..# +.###..####.#..##.#####.#...#....####.#.##..##..###....#.#..##...#..#..####.####...#...#....###..##.# +..#...####.##.#.#.##.#..##.....#.#.###.#.#.##....##........#...##...#.#.####.##..#...#.#.....#..#..# +.##....#....#.##.##.......####.#.###.#..##..#.#..#..#.....#.##.###..##.##..#.####.######.#.##..#.##. +..##.#..#.#..#.#....######.....#..##...#......##....#...#..#.#...#..#.#.#####....####.###.#.#####... +#.#...#.####.###..#.#.####.####...###.###.#.#..##........#..#...##.###....##..#..##.#.####.#.##..##. +###.###.#.#.......###.#....####..##.#....#.####...#..#.#.##.....##..##......#####...#..##.....##.#.# +#...###.#.#..#.#.#..####.######..#..##.###..#....#..#..##.##..##.###...####..#..#..####..#.#####.##. +..#.##....#.###...#######..##.#.##..###...#...#....####.#.##.####....##..###...##.#.####..#..#..#.#. +#######..#.#.#.#.###..###..###.....#####..######.#.#..#.#.#..#.#.#.#...#.#..##....#.####.###.##.#.#. +..###...##.#.#######.....###..##.#..###....##........##..#..#.##.#.####.##....#####.##..##...##....# +.#..#..#...##.#.##..#.#.##.##.######..#.####...#.......####....#.###..#....#.#........####.#...#.##. +##..#.#...#.#.##.#..#.##.......##.#..#.#.#.#.####.##....#.#...#....######.#......#.##.#.##...#.##..# +#.#.#.#########...#.##..#...###....#..#..#.###.##...#.#..#...#.#...#.###.#.#.##..##....###...#.#...# +##..###.#.####.##..##.##.###.##.#.#..##..#######...#...#.###.#.##.##.#...#.....#.#.#####..##.#.##.#. +...#..##...###########.#.#####.###.#.......#....#####..#.#.###..#....#...###...#..##.###...##.###.## +##.......#....####..#...##.####..#.#..#..####......#.....#.##.#.##..#...#.####.#.#.#.##...#...#..#.. +#.....##.#......##.####.##.#....#.####..#..##.#..#.##.#.#..###.##..#.#..####......##.#..##..####.... +.#.##.##..#...########.#.#.......#...#.###..#...#..#..##.#.#...#####..#..######..#..#.#...###..##.#. +##.##..##...#.##.##.#.###.#.....##.#...####.###.#.#..#...##.#.#...###..###..#...#.#..##......#..###. +####..#.#..#...##.###....#..##.##.##.#..#..#.##..##...#.#.#.#...#.#......####.#.#..#......##.##..... +##.....##..#...##.######.#....#.###....####.##.##.###.#.##..####.#...##.##.#.##.....#..###.#.....### +#.#..#..#.#....##.#.##.#...##.#.#..##.#.##...#...###.#...#####.#.....##.#.#...##.....######..#.#.### +...#.#..##.....####.#.#..#.#.###.....##..#.#..#.##..#.#.##..##...##...#.####.#.#.##...####.#.#.#.#.# +...##.##...#####.#.#..###.####.#.#.#.#.#####.#.######.####.#.#.##.####.####..###.#...###..#.#.#.#### +#..##.#.##.#..#.##.##...#.#.##.#.##..#.###.###..#.##....##.####....##..#.#.##.####.#....##..#.#..#.. +#.######.##.###.#.#...##...##...#.###..###.#.......#.###...#..##.....#..#.......##.###.....#.##..#.# +..#.##.#...##.#..#...###.#.##.###...#...#...#..###...#..#...######.###.#.....#.###.#..###.....#...#. +##.#.#.......###.#.#....#..#.#.#..#..#.###.##.#..#..###.###.#....#.......###....##.#.###.###.###...# +...##.###..#...#.#...##..##..#.#.#...#.##..#.....#..#...###..##.##.##.....####..#.#.#..##..##..#..#. +#......#####..#.###.....##...######.......#..####....#.#.#...#.#..#.####.#...###...#..#.#.##...#.#.. +#.##...#.##.##...##....#....####.##..#....#..##....#..#.##.......######.#.##.###.##....#.#.#.....##. +#####.#.....###....##..#####..#.#.##.##.#.#.#...####.###.###..#....#...##.#.#....#..####.#...###..## +#.#####..##...######.######....#.#.#..##.##.######..##...#...####..##.##.#.#....#.#.#.#..#...#...#.. +.###.#.##.#.#.##.##....#..####.#..##.#.##....###.##...#....#..###..##.#########..##.......##.....#.# +##..#.##..#..#.#.#..#...##...##########...##.##..#..#.#.###########.....#######....#....#.###.#...#. +...##.#..##...#..#.##...###...####.#...#####.####..#.###..###....###..#..#####.#.##.#.##....#......# +..##..##...###.#.#.#..#.#####..#.##..#..#...###.###..##....#.#.##...###..#.###..#.#.##.###.##....### +.#.#.#######.#..#.....#.##.###...##.##.###.##..##...###..#.##...###.#..##..###.#.####.#..##..##...#. +#.####.#.#....###...###....##...##.....#.###.#.....#..#...#..####.#...#..#######...###.#........#... +..##...#.#..###..##..#.#..####.#...#.##.#...#.#..###..#.##.#.#.#...###..######....#.###.#.#.#..##.#. +###.#.#.....###..#....###.#.......##...#..#.###..###.#......#...##..#.#..###..#.##.#.##.######.#.#.# +#...###.#.#....#.####....##.###...##..##....#####....#......#.#.......###...#.#..#.#....#....####.#. +#.#.##.######..#.#.######.#...#..###.#..####..#.##..###.#.#.#.###..#..#.#....#..#.##.#..##.####.##.# +#.##.#.###...#.##.#..#.#....#.####...#.###...#..###......#.########....#.#####..#.#.#..#...#.####.#. +####...#.#.##.###...##.#....#.#..######.#.######.#.##.#.#.#..#...#.###.#..#.####.#..#.#....#....#.## +##.##.....#.##..#......#....###.#..#######.#...##..#.#...##..##.#.#..##.###.######.....###.##.##..## +..####.##.#####....#.#..#.#.#.########.#.###........#..###...###........####.##.##.#.#..#.##.....#.# +...#.#..#.#.###.....##.#.##.#.##..#.##..#..####........###..####..##..#.####..#...#.####.##.#.#.##.# +.##.#.#..#####..#####.#.....##.#.####.#.###..#..##.#..####.###.##.###.###.#..#..##....#.##.....#.#.. +.#...####..##.###....##..#..##.###..#..##....#...##.###.###.#...##..###.#..##.#.##...##.##.#..##.#.. +.#.##.##.####.###.#.#..##.....####.##..######.###..#.#.##..##.#.#.....#.#############..#..#..###..## +.#.#..###...###..###.#....###.....##.#.#..###..####..##.##.#.##...########..##..####.##.##.##.#.#... +...#.##.###.#..#..##...#..##..#.....##..#.#..###..#...#...##.#.#..#.###.#####..#.....##...###.###### +##...#..##.#.##.##...#.....#....#...##.###...#####..#..##.##.###..#.###.##..#.#..##.##..#.#...###### +.##.#..###.###....#.###.#..#..#..##...############...#########.#..#.###...###....#..#.########.#.##. +.........###..##.####.#.#...#..##.#...###....###.##.######.#..#.#..###.###.#.###.##.##.##..#.#.#.#.. +.##....###.#.###.#.#..##...#.#...#.##....###...##.#..#######....##..#...#...#....##.##..####.######. +###.####...##.#.###.....#..######....###..#.#.#..#######..#..#.##.#.####.###.#....#..#.#...##..#.#.. +##..#.#####.###...#..#.......###.###..##.....##...#.##.##..###.####..#...#.#.##.#.#...##....#.##.### +#...####......###.##..#..####.##.#.###.##.#.#....#.....#..#...###..##..##..#.##..###.#.##.###....#.. +#..##.#..####...##.##.####..#....#......###...##.#.#..#.#.....#..##..###..#.##.##.#..####..##.#.#### +....#..#......##....###...#.##..##.#...#.....#..##.#.###..#...#...........##..#####....#..#.##...#.. +...#..####.#.#####.####...#..#..#..###.#.#.#.##.##......#.####........##.#.....#..###.#..#..##..###. +#######.#.#..#.##..#.#.##.#..#..#......#.#..####....#####.#.....###.#.#..##.#..#..##.#..###..#.###.# +#....#.#.##.##...#..##.####....###....#...#..###..##.######...#.##.##.##.#.#.#.#####.##.#.####.###.# +...#.#..#..#....#...###..#.#..#...#..##...#..##.#.###.#.##...#####......#.##.#..#.###..##.##...#.#.# +.#.##.....#####.#.#####..###.#.###....##...#.....##...###.##.#.#.#...##.......###....##..##...##.... +####.#...##.#####.##..####.########...#..#..#....#.##.###..###.##.##..###.###.######..##...#......## +.##...###..###..#.####.##.##...#.....####.###.##.#.##..#.#.#.#.#....##.#######.##.##..#...#....##### +.###.##....#.#......#.##....#..###.##..##..##..##..#.......#..#.#.###...#..####.##.#.##..###..##.##. +....######.#..#.##.##.#####..#.##.#.#.#.##..#..#.########.#####..###.###.#...#..##.#......##.#.#.#.. +.#.#.#...###.#.#.#....###.####..#.##....#......#...#.#.##.##.#..###.....#.#.##..##.#..###.#.#.####.. +##....########.#..#####...#.....##.#.....##.#...####..####..#......##...#..#..##..#..#.##..###..##.# +##..####.#####.#.#.#.#.###.###..#..#...##.#.#....#.#..#.#.###..#.##...#.#.##.#.##.##....#..######.## +#..#.....#.#..#.#.#..##..#....#.#.###.#.#..#..###..#.#...###..##...####.##..#..#...#.#...###.##..##. +...#..#...####.##.###.#####.###.##..###.#....##..##...#.###.#...#...#.............##...####.####.#.# +.###.##...##.#.###.#.#...##.#..#...#####..##.#.#...##.#######.####....####....#######.#...#.#.###... +....#.#...##.#.####.#####.#.######.#####.##...####...###.#.##.####..##.###.###....#.....#####.....#. +......##.#.#....#.#..##..#.#.###...##.##.####.#....##...##...##...#...#.###.#.##...#..####....##.... +.#####..#.#####...##.#...###.#.#..#.#..##..#.#.#.##..#.##....###..###..#..##...##..#.###.#.##....### +#####....#.#...##.###.#....###.##.........#..##..###.#...######.#..#.#.########.....###.#.#...#..... +.##.#.#####.#..#.#.#.###...########.###..##.#..#.####.#...##.#....#...##.######..##....##....##.##.. +###...##.##..####...#.#.#..##.....###..#..##..#.####.###..#.#.##.######...#.#...###.##..#....##.#.## +##..##.#..#..#.###.#..#..#....#..#....###.####.###...#.##.##.##......##.####...#.....#...#.#...#..#. +....#.##...#..##.##......#.#.#..####....#..#######.#...#...##..#......#.#........##.##....###....##. +##.#...#...##.###.###..####.#...#..##...##.###..#..###..#.....#...###..###.##..#..#####.....####.##. +.##.#...#..####..#.....##..###.#.#.#..#...##...###...#..##.....#..##...##..###.#..#####...##.#..###. +.#.#.#..####...#.###.###....##....#.#..#.#..#..#####.#..#...#.###.........##.####.####..#.##..##..#. +#..##.####.#..##....#.####.###...#.#..#####.##.#..#......###.##...#....#.##..#....##.#.....#.##.##.# +#..#..#.###.#..#.#.####.####..#.#.#..#.#...#....#######.####.............####..###.#..####.######.## +.#....####...#...#...#..#..##......#######.###.##..####.##.####.#####....##.###.#.###..#.#....#...#. diff --git a/src/main/resources/2021/day21.txt b/src/main/resources/2021/day21.txt new file mode 100644 index 00000000..ed248f76 --- /dev/null +++ b/src/main/resources/2021/day21.txt @@ -0,0 +1,2 @@ +Player 1 starting position: 7 +Player 2 starting position: 2 diff --git a/src/main/resources/2021/day22.txt b/src/main/resources/2021/day22.txt new file mode 100644 index 00000000..6ed28f65 --- /dev/null +++ b/src/main/resources/2021/day22.txt @@ -0,0 +1,420 @@ +on x=-22..28,y=-12..37,z=-34..11 +on x=-35..15,y=-10..40,z=-48..-2 +on x=-31..19,y=-4..43,z=-22..28 +on x=-48..-2,y=-36..13,z=-29..20 +on x=0..49,y=-14..30,z=-39..6 +on x=-8..41,y=-9..41,z=-42..7 +on x=-22..25,y=-16..28,z=-40..9 +on x=-11..33,y=-22..26,z=0..44 +on x=-13..39,y=-26..19,z=-31..15 +on x=-7..47,y=-1..44,z=-40..13 +off x=-47..-31,y=12..24,z=4..19 +on x=-23..30,y=-22..27,z=-9..35 +off x=-49..-33,y=36..46,z=28..42 +on x=0..48,y=-41..7,z=-18..31 +off x=-48..-34,y=-33..-18,z=-32..-23 +on x=-16..29,y=0..48,z=-12..37 +off x=-48..-32,y=-47..-31,z=-24..-8 +on x=-35..18,y=-11..42,z=-23..21 +off x=-5..5,y=-47..-31,z=-18..-4 +on x=-41..10,y=-39..8,z=-45..5 +on x=57743..70226,y=-61040..-49730,z=-9481..1779 +on x=34469..59935,y=-19657..-15459,z=52982..68107 +on x=2032..20175,y=43518..62126,z=58508..71090 +on x=31229..48351,y=22846..46374,z=58775..63336 +on x=50790..81085,y=-43836..-24658,z=16376..45716 +on x=28957..62666,y=-63812..-43726,z=-21518..-20032 +on x=-79145..-53125,y=-58835..-40328,z=-34032..-1191 +on x=-39963..-30908,y=61052..76815,z=-14209..4001 +on x=30995..46213,y=-188..23074,z=48848..73955 +on x=-30327..817,y=-92891..-71382,z=-556..15570 +on x=-66084..-49749,y=-70089..-44721,z=543..18051 +on x=-10435..875,y=1868..22100,z=-90712..-72390 +on x=-6457..23401,y=39789..59388,z=-64029..-59562 +on x=-48891..-19571,y=-60094..-41210,z=-63314..-59729 +on x=-84053..-64052,y=2084..16189,z=-31207..-1454 +on x=-52377..-25969,y=-90697..-66004,z=-17839..-5215 +on x=-7876..16576,y=25156..48291,z=-78019..-63073 +on x=-70710..-54783,y=28572..57892,z=2846..14577 +on x=69353..93836,y=-32370..-11069,z=-15941..8778 +on x=-92783..-71784,y=-17812..17198,z=2761..27075 +on x=45799..59502,y=-51290..-23552,z=35610..57193 +on x=-50227..-17040,y=46996..74417,z=28330..44175 +on x=8914..26079,y=-50911..-30028,z=-67490..-43942 +on x=-10960..6571,y=-75351..-66572,z=21851..44569 +on x=22699..44190,y=-83751..-52386,z=20341..36226 +on x=58542..77668,y=47268..63235,z=-3866..26621 +on x=73780..79320,y=-13674..519,z=-25349..-12369 +on x=61440..79923,y=7960..26241,z=-27706..-15327 +on x=38043..50418,y=44221..51183,z=-65245..-45723 +on x=22702..31491,y=-17144..312,z=-85339..-53805 +on x=21638..55787,y=44959..61008,z=-47808..-39438 +on x=-63113..-41252,y=-67744..-41914,z=-26758..-4882 +on x=63367..92148,y=30084..48195,z=-5852..-3181 +on x=11847..30590,y=66766..73165,z=19550..26333 +on x=-82252..-43217,y=16642..33032,z=31779..53160 +on x=376..8916,y=-85149..-77287,z=-3825..28320 +on x=-11778..4687,y=-65208..-43505,z=-56839..-41330 +on x=-59599..-26799,y=-43262..-22054,z=53184..68929 +on x=27880..45230,y=31092..48118,z=53472..65470 +on x=66503..87392,y=14887..44613,z=5640..29076 +on x=-18992..15785,y=70329..84705,z=-11543..3900 +on x=26450..55691,y=33724..51544,z=-67288..-47510 +on x=-55101..-20607,y=-54336..-50167,z=-63808..-39985 +on x=-58662..-44430,y=23514..35998,z=-57391..-35888 +on x=-30686..-14789,y=52951..78131,z=23020..30026 +on x=59723..89386,y=-1973..20344,z=-23466..16370 +on x=-28704..-19628,y=-26635..-10672,z=67912..92984 +on x=34109..52603,y=6207..33762,z=-78531..-54945 +on x=6969..35234,y=12510..46591,z=-88613..-51919 +on x=-16819..13310,y=-78286..-72895,z=-40672..-15821 +on x=12715..44649,y=59413..85803,z=12932..25405 +on x=39882..72763,y=-29701..-24955,z=30035..53183 +on x=61861..91147,y=-22736..-7422,z=4820..7751 +on x=25793..39413,y=46741..82626,z=5326..33146 +on x=-6107..19053,y=68420..92110,z=-36318..-16459 +on x=28551..40390,y=68467..76382,z=-16632..-2714 +on x=-45969..-23239,y=-62699..-36719,z=38811..56336 +on x=-76366..-72346,y=21237..38131,z=-10669..22165 +on x=44705..59494,y=6680..11337,z=49501..61061 +on x=2597..24468,y=14065..37612,z=61022..74073 +on x=35904..59720,y=-8301..13166,z=59515..64632 +on x=-19466..2821,y=54015..73358,z=37279..67387 +on x=22671..24877,y=-78893..-54761,z=30577..49365 +on x=-61910..-30004,y=-48658..-30216,z=-63277..-39443 +on x=31804..62778,y=-10031..4607,z=53321..66647 +on x=35353..59793,y=-64800..-45779,z=-45954..-25389 +on x=-54351..-23056,y=-85690..-64612,z=-11671..9856 +on x=46643..60469,y=-72975..-45242,z=-27257..-9772 +on x=-1587..22614,y=42774..64311,z=-75051..-55436 +on x=43500..63874,y=57617..69803,z=-9587..20014 +on x=-84644..-71132,y=20240..38502,z=20664..34375 +on x=40993..55870,y=-67190..-52687,z=-33480..-19778 +on x=-47052..-17260,y=-89061..-56609,z=-1611..29297 +on x=25170..40430,y=-74511..-62273,z=-42240..-11723 +on x=20724..48041,y=-49570..-30648,z=-65320..-52402 +on x=18971..41779,y=-74384..-55955,z=21290..42401 +on x=12372..25040,y=-19897..8311,z=-92628..-74366 +on x=-41481..-9209,y=-30115..-3165,z=61616..78046 +on x=-60608..-23394,y=-77847..-59531,z=23434..37967 +on x=-71858..-50069,y=-57588..-41250,z=-50072..-33315 +on x=37501..71584,y=31996..53811,z=27365..52251 +on x=-56165..-38552,y=44724..61002,z=23249..44903 +on x=33227..40766,y=61266..72042,z=-40028..-30190 +on x=-11144..9046,y=20660..52650,z=61730..86031 +on x=21865..39875,y=46084..72027,z=-41788..-32094 +on x=-30545..-4677,y=44278..74009,z=-59990..-47040 +on x=-48012..-35017,y=-70818..-58672,z=16398..44578 +on x=-60425..-50019,y=-59529..-42076,z=-36601..-4347 +on x=-5505..16222,y=77230..83177,z=-12302..11122 +on x=18568..47510,y=62799..88600,z=-6696..22060 +on x=34553..42144,y=67458..85473,z=-20865..3279 +on x=-70604..-50638,y=-37855..-14331,z=-37538..-26619 +on x=-18955..-3382,y=-15846..1586,z=65846..86641 +on x=-36618..-11388,y=-38199..-8026,z=-84356..-55275 +on x=14279..42431,y=39293..56427,z=50099..77725 +on x=28773..43843,y=51502..73850,z=4898..32973 +on x=-78414..-50811,y=-51353..-20494,z=170..25282 +on x=-2690..8500,y=42310..58100,z=45997..59275 +on x=-51673..-35241,y=-69072..-48834,z=23583..43079 +on x=-17870..16848,y=-3928..15129,z=-84692..-79036 +on x=-87341..-71032,y=-20078..212,z=1818..30236 +on x=71091..85417,y=-5563..16629,z=22831..30523 +on x=28443..44534,y=53772..78417,z=-11050..19315 +on x=-58440..-40362,y=-36161..-21536,z=51262..64247 +on x=-43628..-14975,y=21749..39527,z=-87409..-62207 +on x=-83544..-75074,y=-33970..-17359,z=-13538..9135 +on x=18355..46439,y=17596..51653,z=49322..73971 +on x=-10768..10856,y=-209..18736,z=-79866..-77867 +on x=-64915..-38455,y=-33420..-19423,z=-57336..-36896 +on x=-59594..-49691,y=39386..53637,z=-61118..-42358 +on x=22547..44540,y=41783..75825,z=-53800..-26170 +on x=52927..63056,y=-20945..13569,z=50274..69604 +on x=29639..47649,y=51463..74979,z=29464..61363 +on x=-62445..-46494,y=39646..59555,z=-47592..-26239 +on x=-30926..-7219,y=-76422..-53700,z=19664..37575 +on x=8068..25595,y=-15448..15190,z=-95311..-75741 +on x=-2315..14899,y=-94702..-78498,z=6767..13841 +on x=52658..77574,y=-1925..7965,z=37088..62731 +on x=-71749..-51034,y=-41036..-23998,z=-25383..-2310 +on x=-72935..-52021,y=4145..31708,z=28168..44264 +on x=-38524..-29058,y=54203..87398,z=-4270..8719 +on x=-18458..-547,y=-41938..-28075,z=55353..85466 +on x=63334..86680,y=-8977..5737,z=3089..23619 +on x=-76522..-51279,y=51711..63609,z=-1119..11074 +on x=43978..67672,y=-46119..-36350,z=-54348..-32116 +on x=-61977..-39979,y=48805..66908,z=-4087..15443 +on x=-38393..-15142,y=34482..45895,z=51707..73387 +on x=-15098..5245,y=64504..86193,z=11660..42572 +on x=20462..32546,y=67335..88945,z=-23808..-12174 +on x=-45710..-29866,y=-48713..-40225,z=36191..72881 +on x=-80647..-72347,y=6003..19378,z=6018..26968 +on x=-30135..-907,y=-40352..-17385,z=-74550..-69713 +on x=25651..40752,y=25704..44767,z=-69419..-53995 +on x=-65351..-49165,y=-665..33203,z=-58077..-53439 +on x=27847..41886,y=-57196..-51432,z=-60041..-31392 +on x=-74571..-65726,y=18936..34595,z=-14994..8307 +on x=3420..18201,y=59080..63744,z=-50796..-37402 +on x=-59725..-52919,y=25233..56324,z=36770..52550 +on x=25084..37742,y=-22473..13416,z=61111..89517 +on x=-31123..-9929,y=-38982..-28408,z=-76197..-54610 +on x=26239..39855,y=-67171..-50065,z=34490..46827 +on x=-31113..-2705,y=59178..87794,z=8623..21865 +on x=64246..81862,y=13839..27162,z=-37512..803 +on x=-38914..-20811,y=-35350..-18517,z=62773..89363 +on x=-79546..-58914,y=39361..40589,z=-23746..-1521 +on x=-92264..-60845,y=-16477..-4211,z=-34296..-15581 +on x=-81598..-55814,y=-8529..14390,z=-50600..-33531 +on x=50748..66514,y=56968..76774,z=-9752..13820 +on x=-80025..-55789,y=-41134..-19361,z=28348..54979 +on x=-28896..-19805,y=-68202..-37931,z=49748..61021 +on x=57234..73263,y=-37712..-1405,z=13150..46160 +on x=7376..29616,y=-8620..20535,z=-83248..-62090 +on x=44553..56109,y=32850..57714,z=25785..52790 +on x=-7717..25102,y=-7725..12431,z=59010..93276 +on x=-3663..20480,y=31992..48881,z=-80967..-61519 +on x=-54684..-38284,y=33082..51001,z=-47536..-31488 +on x=-24421..-10049,y=-73142..-50307,z=-47158..-25659 +on x=41005..51559,y=54743..68960,z=-32157..-19293 +on x=-8763..26625,y=66264..86593,z=-57863..-26158 +on x=39695..57854,y=-10327..960,z=-81724..-65077 +on x=41233..63655,y=-37542..-11744,z=-67651..-49824 +on x=-18469..-14312,y=36071..63118,z=56475..75090 +on x=-28731..-15639,y=-72916..-60994,z=17355..48092 +on x=-29016..-17872,y=1691..28301,z=-80313..-74087 +on x=-24861..-2063,y=-29881..-11428,z=-74927..-54438 +on x=-2908..8218,y=68593..71825,z=-42304..-36475 +on x=27546..51021,y=4696..22461,z=56219..85387 +on x=39005..55338,y=48826..72635,z=-24709..-1 +on x=47727..73855,y=-63059..-41116,z=-9038..23091 +on x=-19884..6774,y=-33156..-8931,z=72725..87601 +on x=-72461..-53556,y=-27699..-14981,z=19211..41822 +on x=63249..81403,y=-40188..-14765,z=6931..37685 +on x=63142..82981,y=-25106..-3270,z=20101..29453 +on x=31130..58947,y=3173..21337,z=-74916..-68397 +on x=-58714..-42813,y=11593..34345,z=34118..58810 +on x=-49518..-27875,y=-29607..-21358,z=-75178..-53370 +on x=69461..77175,y=15448..36416,z=-34182..-22402 +on x=35551..54657,y=-69428..-42048,z=-17045..6812 +on x=27635..38793,y=45411..69203,z=-50135..-43361 +on x=16688..38446,y=-61396..-37075,z=-64966..-31030 +on x=-35814..-19493,y=63372..81491,z=27500..54462 +on x=10356..30411,y=-74284..-55629,z=39846..45049 +on x=-38328..-4710,y=64415..79565,z=-43116..-22145 +on x=-29835..-5671,y=-90310..-76428,z=277..1869 +on x=48292..76832,y=37381..49402,z=34886..43306 +on x=19066..33779,y=-3597..8757,z=-76149..-71976 +on x=-26733..-12570,y=-35681..-26828,z=62655..71618 +on x=50628..68591,y=-51527..-24729,z=25316..59839 +on x=59379..62742,y=-57334..-46510,z=3134..10600 +on x=55393..77648,y=4221..37143,z=44784..65699 +on x=-15390..-5126,y=-3381..11074,z=73410..86424 +on x=-26889..-7086,y=-77791..-41328,z=-66410..-29235 +on x=-43347..-21552,y=57590..64785,z=28677..49316 +on x=-67247..-37242,y=-28533..-8487,z=-69945..-48320 +on x=-2207..27139,y=71426..90772,z=11875..24958 +on x=-7365..22762,y=-96133..-73290,z=-30621..-6784 +on x=44813..66334,y=-20573..-2018,z=-64230..-53722 +on x=51196..58944,y=-60144..-41259,z=18880..45821 +on x=-60386..-32399,y=-36568..-12315,z=40586..67416 +on x=-665..20331,y=-17403..-11184,z=-87940..-72839 +off x=32946..48821,y=-28974..-15614,z=64401..84617 +on x=-55785..-28569,y=65269..75512,z=-21176..-6442 +off x=32390..46916,y=-82938..-68118,z=-13863..21900 +off x=53888..71942,y=-46568..-32979,z=-34248..-19326 +off x=-81837..-78163,y=-5392..9087,z=-2450..18903 +off x=21995..44453,y=-40185..-33499,z=62135..76283 +on x=10308..40463,y=59540..77174,z=-61333..-36739 +off x=-94177..-61603,y=-22758..11823,z=-38788..-12954 +on x=53438..75655,y=25126..43060,z=-14518..7932 +on x=-19531..3177,y=4045..27930,z=-94265..-64178 +off x=-77480..-62456,y=41988..53394,z=-3296..5224 +on x=17779..35549,y=-83981..-44676,z=24943..61118 +on x=-71879..-58513,y=11898..41686,z=-30305..-14377 +on x=49017..68249,y=-15129..18976,z=48060..66574 +on x=-11838..7348,y=47553..63542,z=-67414..-47164 +on x=29088..44545,y=-50912..-15959,z=-70395..-57574 +off x=-43388..-23603,y=45905..62609,z=27676..53750 +off x=8215..38810,y=62437..78852,z=-38209..-33224 +on x=-64059..-27171,y=-60727..-35326,z=-61026..-43427 +off x=20457..53119,y=-60711..-47679,z=23184..55606 +on x=-70978..-46394,y=-65589..-44877,z=-10372..7338 +on x=-59744..-39936,y=48445..55988,z=-44347..-26762 +on x=-36717..-8107,y=26844..43311,z=-80832..-66912 +off x=72293..96031,y=3700..25701,z=-37561..-4131 +on x=-15500..16913,y=-79205..-68966,z=-39173..-4379 +off x=-756..21231,y=10628..37269,z=73578..82977 +on x=32058..55455,y=-6957..7461,z=45838..80279 +off x=-24364..-772,y=-85720..-66735,z=-48781..-36855 +on x=46435..56654,y=43815..66941,z=-25404..-13767 +off x=-88068..-77674,y=-10771..13874,z=-12402..-4509 +on x=-89131..-61902,y=-26569..-6043,z=-27916..-14242 +on x=32210..52737,y=-40074..-9230,z=42872..76038 +on x=56737..79302,y=24768..45359,z=-19322..4672 +on x=1759..24409,y=46620..57152,z=-71066..-48445 +on x=35478..60734,y=-39693..-22719,z=41724..51793 +on x=42961..64758,y=-12522..3554,z=52646..69182 +on x=-11351..-502,y=-40082..-24124,z=-75980..-63117 +off x=-40962..-6900,y=-5118..14251,z=-82423..-57286 +on x=-49095..-30797,y=1882..6948,z=-83530..-55361 +off x=-37135..-22299,y=-90205..-63314,z=-24970..4150 +on x=66749..74930,y=-44446..-9795,z=-16854..-4579 +on x=-63254..-52331,y=-68192..-44209,z=-35685..-8323 +on x=-78284..-55858,y=-43922..-30639,z=18437..29177 +off x=54114..79875,y=-17857..-2753,z=34356..52806 +on x=-4442..14186,y=29328..43813,z=-80985..-51107 +off x=-58292..-34166,y=35200..44230,z=-69669..-55147 +on x=18045..42192,y=-78983..-70509,z=1260..35570 +on x=37675..59839,y=-51270..-39433,z=-37248..-29925 +off x=-22757..-7114,y=-84027..-59378,z=-24973..-14829 +on x=24241..36320,y=52369..65837,z=31303..51099 +off x=5979..23857,y=9333..31171,z=-87793..-57399 +off x=49574..65617,y=-38214..-7290,z=-50479..-28030 +off x=-73979..-66980,y=-798..7274,z=-45325..-25314 +on x=-8945..-1295,y=-59463..-41375,z=52225..73615 +off x=18015..39217,y=32056..50406,z=-75587..-63271 +on x=-53213..-30694,y=-55350..-31907,z=49198..70681 +on x=-9682..8872,y=-52795..-28009,z=-82757..-59017 +off x=-83110..-67560,y=-37952..-10775,z=-19407..13655 +on x=-39964..-17588,y=52065..72360,z=4014..37773 +off x=56122..79842,y=-5178..21833,z=31724..59969 +on x=-20183..-4251,y=-12930..11778,z=77653..97600 +off x=31458..67825,y=9649..32029,z=41670..71827 +on x=-47523..-37181,y=-9554..-5366,z=-71284..-54135 +off x=-79907..-51809,y=-39505..-26324,z=-21886..8622 +on x=-49722..-26739,y=-4492..20265,z=-80362..-69563 +off x=30956..62691,y=22770..49749,z=57837..73923 +off x=63665..78972,y=-9429..11537,z=-61063..-23216 +off x=22797..28866,y=-83267..-52609,z=-50008..-23447 +off x=-9433..6781,y=-15625..9568,z=72480..99132 +on x=-39178..-2942,y=61606..79222,z=-12921..17911 +on x=-27409..-12810,y=-52323..-14724,z=70950..84284 +off x=25852..56927,y=-36323..-17730,z=-59374..-41271 +on x=-25411..1430,y=-71359..-48805,z=-54737..-38627 +off x=14921..35377,y=-63995..-41674,z=42383..70707 +on x=-81958..-63608,y=22908..36352,z=28840..42388 +off x=16786..42211,y=-73540..-54273,z=24103..37846 +on x=6690..26003,y=-68391..-40681,z=-57692..-53952 +off x=61396..83789,y=17549..42812,z=30784..43751 +on x=64100..88074,y=14435..30275,z=-26170..-9208 +off x=-21535..-16329,y=43013..49150,z=-80307..-58327 +off x=43392..60791,y=-67760..-57740,z=-3562..18983 +on x=53803..85117,y=-30851..-20415,z=11800..29393 +off x=-60548..-44088,y=-74749..-57558,z=-16897..-13294 +on x=-49335..-21672,y=-28001..3992,z=58205..86850 +on x=71619..75833,y=-41210..-28321,z=-3506..23850 +on x=-59162..-51706,y=-50779..-26256,z=-49407..-29710 +on x=-52052..-32903,y=16989..38661,z=-62750..-44298 +on x=27603..37228,y=-16325..-9791,z=51369..78290 +off x=-79181..-55186,y=26844..41675,z=-48211..-20069 +on x=-13372..-2778,y=-87434..-58366,z=13997..33615 +off x=-15866..1555,y=47047..63001,z=42221..60961 +on x=36372..49160,y=29641..52191,z=50265..54610 +off x=-50..22846,y=24999..49002,z=-90397..-70826 +off x=-53637..-33631,y=-70839..-47506,z=-40320..-30176 +on x=57782..80982,y=-13986..8709,z=-42185..-18601 +on x=-51683..-23658,y=-6359..15179,z=-75206..-63727 +off x=370..30490,y=44410..64293,z=49151..65936 +off x=46915..58565,y=-69733..-44180,z=-41213..-17210 +on x=28837..55823,y=-13583..10313,z=-85499..-50397 +on x=45884..74879,y=4208..23505,z=-57225..-37365 +on x=-16055..2075,y=-98025..-64232,z=404..15021 +off x=-6697..-284,y=-52120..-14644,z=61108..88330 +on x=-73126..-42133,y=-14478..-770,z=-67159..-42210 +on x=-78746..-55031,y=21688..48503,z=-43668..-17650 +off x=13011..19587,y=-76531..-58192,z=-21056..-6942 +on x=-3906..16882,y=38223..63854,z=-65796..-44021 +off x=75643..77858,y=-402..29624,z=-29755..-2860 +on x=18431..37928,y=-50506..-31706,z=65280..75113 +on x=-82626..-59287,y=-50984..-29586,z=-15689..-4450 +on x=35196..53027,y=26428..54765,z=57751..62588 +off x=23336..31485,y=-1303..18746,z=-94682..-64565 +on x=-3825..10918,y=-98053..-71932,z=865..16121 +off x=42549..65012,y=26302..54316,z=35324..58055 +off x=-30637..-826,y=69704..92482,z=8957..37872 +on x=9789..45193,y=-58252..-25098,z=55030..75560 +on x=-9204..9530,y=71096..78338,z=20937..35152 +off x=49102..65728,y=27717..54106,z=-51279..-22263 +off x=-73112..-53014,y=-17888..2555,z=34313..45513 +off x=19481..39159,y=-19753..16672,z=-84120..-70512 +off x=29245..51208,y=55393..75349,z=-26693..-9367 +off x=-32408..-12470,y=-86513..-71371,z=11659..34621 +on x=3836..19984,y=72474..77290,z=28159..42009 +off x=-65810..-45330,y=-40192..-17201,z=-36860..-23230 +on x=8693..27534,y=-32382..-13972,z=58478..81189 +on x=-43704..-20018,y=-33808..-23372,z=-78637..-61326 +off x=51547..78372,y=12517..15861,z=30172..52291 +on x=-33603..-11175,y=-36898..-7873,z=-90188..-68980 +off x=68965..88379,y=-35199..-18501,z=-16736..13433 +off x=-92562..-58792,y=-20585..-13928,z=7579..22007 +on x=-15258..-2610,y=69924..96628,z=-12430..15797 +off x=-30519..-8339,y=-12995..4240,z=63439..83735 +off x=-17707..10709,y=-26922..-18807,z=-96558..-63936 +off x=15322..27787,y=26350..47801,z=-67802..-46180 +off x=-84914..-54768,y=6968..34294,z=17631..34799 +on x=-7598..17160,y=37828..54405,z=-76895..-51602 +on x=11668..34456,y=40686..60885,z=-53707..-42575 +off x=-32256..-12704,y=-78957..-51139,z=-54900..-19346 +off x=19575..33292,y=-76785..-58856,z=-24794..-8650 +on x=-12555..10431,y=76180..91052,z=-7974..2379 +on x=-39693..-14106,y=7322..18221,z=-78159..-74632 +off x=-66375..-51676,y=-66860..-34841,z=-39129..-8655 +off x=-17258..-10828,y=12607..37266,z=61514..85164 +off x=-33610..-11456,y=-84257..-56108,z=-23442..-7294 +on x=14531..43763,y=53525..64606,z=-63336..-35807 +off x=-70597..-55320,y=-41967..-24265,z=25101..39095 +on x=-49603..-26677,y=-13219..1867,z=66460..87923 +off x=-60096..-23074,y=-70199..-42821,z=22480..37880 +off x=40348..69827,y=-51515..-33466,z=-52295..-34043 +off x=20389..44646,y=28477..41577,z=-72555..-44667 +on x=33741..54867,y=-36670..-7776,z=-72049..-55244 +on x=10950..46532,y=-54829..-45911,z=-73274..-40618 +on x=-67960..-44819,y=-45382..-24321,z=30618..47707 +on x=-58662..-48729,y=-65642..-29405,z=-56128..-29636 +on x=49272..79011,y=38939..52493,z=20586..30187 +off x=43410..60801,y=-61935..-34193,z=-32036..-22862 +on x=30969..60898,y=33040..50806,z=35073..57010 +off x=37114..59569,y=-71501..-44738,z=11340..32549 +off x=52829..76198,y=7688..34836,z=-67073..-40835 +off x=-92186..-63748,y=-11890..20416,z=-11446..1644 +on x=67652..84380,y=-40733..-18056,z=24324..41742 +on x=-62702..-39426,y=-43457..-16012,z=-69221..-51945 +on x=-73660..-53500,y=27383..37368,z=2421..23275 +on x=-77487..-46062,y=-50070..-24177,z=-47875..-27262 +on x=-945..14054,y=-49971..-42857,z=-76052..-46001 +on x=-43003..-22308,y=58137..82894,z=19469..47327 +off x=19774..38418,y=-33987..-16275,z=-69339..-64365 +on x=-21207..4193,y=-7234..-2286,z=-85723..-60361 +on x=72912..88857,y=2552..35986,z=20898..28896 +on x=54225..89222,y=15996..40989,z=-44532..-13768 +on x=-65712..-61563,y=-49387..-24770,z=-44808..-18999 +on x=-69404..-48271,y=-68838..-43356,z=-7999..13427 +on x=-14554..-6184,y=67577..76141,z=25618..45348 +off x=17080..39490,y=54822..76095,z=-33504..-20429 +off x=72126..88153,y=-25075..-2924,z=-35655..-21906 +off x=-9585..24318,y=-79462..-62167,z=36467..45387 +on x=50711..62365,y=8410..24520,z=44319..69714 +off x=26163..48176,y=49270..76862,z=25486..40214 +off x=-66006..-47007,y=26306..40268,z=-57257..-44008 +on x=-18103..978,y=-66402..-53423,z=-58187..-49950 +off x=-82231..-53929,y=-30302..-2792,z=-50350..-33862 +off x=-80773..-50142,y=26085..50767,z=-37036..-5317 +on x=-73412..-50645,y=-37254..-15738,z=27795..47197 +on x=53256..56693,y=-27500..-12752,z=39288..60009 +on x=9678..25000,y=9814..20035,z=-80762..-69083 +off x=75905..77562,y=-35226..-12588,z=-23403..2007 +on x=-74228..-51192,y=-60471..-47282,z=-18153..11152 +on x=-88144..-65383,y=27947..50190,z=-22007..7068 +on x=-57769..-30200,y=-74568..-46266,z=1997..7401 +on x=-53231..-25606,y=-1090..21355,z=57688..84914 +off x=3894..23908,y=-12364..22961,z=-89732..-71854 +on x=-29012..-9560,y=-78082..-62997,z=-29218..-8539 +off x=-35760..-28704,y=-69703..-59299,z=26665..59052 +on x=-9820..-311,y=-50467..-30267,z=45150..77323 +off x=-34746..-29058,y=53504..84718,z=15584..24656 +off x=-80685..-48403,y=-19777..4826,z=33281..66712 +on x=67395..77602,y=-46450..-19661,z=-31973..-18038 +on x=-70033..-64759,y=19552..51911,z=11121..35381 +off x=-73590..-42942,y=-46390..-22759,z=40874..56566 +off x=-36575..-18344,y=61042..86630,z=6307..26426 +off x=-46370..-27813,y=23975..41903,z=54255..72840 diff --git a/src/main/resources/2021/day23.txt b/src/main/resources/2021/day23.txt new file mode 100644 index 00000000..271a1000 --- /dev/null +++ b/src/main/resources/2021/day23.txt @@ -0,0 +1,5 @@ +############# +#...........# +###C#D#A#B### + #B#A#D#C# + ######### diff --git a/src/main/resources/2021/day24.txt b/src/main/resources/2021/day24.txt new file mode 100644 index 00000000..58566bd8 --- /dev/null +++ b/src/main/resources/2021/day24.txt @@ -0,0 +1,252 @@ +inp w +mul x 0 +add x z +mod x 26 +div z 1 +add x 14 +eql x w +eql x 0 +mul y 0 +add y 25 +mul y x +add y 1 +mul z y +mul y 0 +add y w +add y 12 +mul y x +add z y +inp w +mul x 0 +add x z +mod x 26 +div z 1 +add x 13 +eql x w +eql x 0 +mul y 0 +add y 25 +mul y x +add y 1 +mul z y +mul y 0 +add y w +add y 6 +mul y x +add z y +inp w +mul x 0 +add x z +mod x 26 +div z 1 +add x 12 +eql x w +eql x 0 +mul y 0 +add y 25 +mul y x +add y 1 +mul z y +mul y 0 +add y w +add y 4 +mul y x +add z y +inp w +mul x 0 +add x z +mod x 26 +div z 1 +add x 14 +eql x w +eql x 0 +mul y 0 +add y 25 +mul y x +add y 1 +mul z y +mul y 0 +add y w +add y 5 +mul y x +add z y +inp w +mul x 0 +add x z +mod x 26 +div z 1 +add x 13 +eql x w +eql x 0 +mul y 0 +add y 25 +mul y x +add y 1 +mul z y +mul y 0 +add y w +add y 0 +mul y x +add z y +inp w +mul x 0 +add x z +mod x 26 +div z 26 +add x -7 +eql x w +eql x 0 +mul y 0 +add y 25 +mul y x +add y 1 +mul z y +mul y 0 +add y w +add y 4 +mul y x +add z y +inp w +mul x 0 +add x z +mod x 26 +div z 26 +add x -13 +eql x w +eql x 0 +mul y 0 +add y 25 +mul y x +add y 1 +mul z y +mul y 0 +add y w +add y 15 +mul y x +add z y +inp w +mul x 0 +add x z +mod x 26 +div z 1 +add x 10 +eql x w +eql x 0 +mul y 0 +add y 25 +mul y x +add y 1 +mul z y +mul y 0 +add y w +add y 14 +mul y x +add z y +inp w +mul x 0 +add x z +mod x 26 +div z 26 +add x -7 +eql x w +eql x 0 +mul y 0 +add y 25 +mul y x +add y 1 +mul z y +mul y 0 +add y w +add y 6 +mul y x +add z y +inp w +mul x 0 +add x z +mod x 26 +div z 1 +add x 11 +eql x w +eql x 0 +mul y 0 +add y 25 +mul y x +add y 1 +mul z y +mul y 0 +add y w +add y 14 +mul y x +add z y +inp w +mul x 0 +add x z +mod x 26 +div z 26 +add x -9 +eql x w +eql x 0 +mul y 0 +add y 25 +mul y x +add y 1 +mul z y +mul y 0 +add y w +add y 8 +mul y x +add z y +inp w +mul x 0 +add x z +mod x 26 +div z 26 +add x -2 +eql x w +eql x 0 +mul y 0 +add y 25 +mul y x +add y 1 +mul z y +mul y 0 +add y w +add y 5 +mul y x +add z y +inp w +mul x 0 +add x z +mod x 26 +div z 26 +add x -9 +eql x w +eql x 0 +mul y 0 +add y 25 +mul y x +add y 1 +mul z y +mul y 0 +add y w +add y 14 +mul y x +add z y +inp w +mul x 0 +add x z +mod x 26 +div z 26 +add x -14 +eql x w +eql x 0 +mul y 0 +add y 25 +mul y x +add y 1 +mul z y +mul y 0 +add y w +add y 4 +mul y x +add z y diff --git a/src/main/resources/2021/day25.txt b/src/main/resources/2021/day25.txt new file mode 100644 index 00000000..d866af10 --- /dev/null +++ b/src/main/resources/2021/day25.txt @@ -0,0 +1,137 @@ +vvvv.>>...v....v>....>...v.v....v>>v>v..>...v>>>v>.>v.>.>>......>.>..>vv.vv.>>vv>..>.>v...>...>.>.v>..v>>v>>v>>.>.>..v..>v.>.v....v..v>>v>> +...>....>..v......>v>......v.v...>.v>..>.>>..v.v>...v.>v>.v.>.vv.>>>.>v...vvv>>.vv..v.>v>.>....>>.vvv....vv>.v.>.....vv.v...>>>vv..>v>..... +v...v>v.vvv..>.vv.v....v.>>vvvv>v.vvv....>.>v.vv...v...>>...v.>....>.>>.v.>......>v>.vv.>..>>v.vv>.v.>.vv>..v.v>>>>vvv..>v........>vv>..>v. +...>..v>v>v>v.>v..v.>v>>>.>>.>>vvv..v...vvv.>.v>.v..v.v...v...>>v>>....>>...>vv.>v.>>.>v>..v>vv>....v.>...>.v>..>.>>.>v...>.>v...>....v..>> +.>.....>...>>>>..v.v..>.>>v....>v..>....vv..>.>.>vv..>>v.>.>..v.vvv.>.......v.v>v>..>.v...>.v.v>v..vv..vv>..>.vv.>.vvvv>..>v.>>vv...>.v>v.v +.vv>.>.vv>>vv..vv>.v..>>>v..>.v>..>v.....>v.v.>..>v..>>v...v.>>.v.v...vv.....>..>>.....>>.vv>.....>>>.>v>...>v..vv.>..>>..v...v..v..>...>.. +>>....>...v..>>...>>>.....v...>>.>.v.>vv.>..>vv....v.v.....>.vv..>>.v>.v>v.>>......>>..>v...v...>...v.>v.>v>.v.>..>v.>....>>v.>>.>.....>... +.>>vvvv.v>>>>vv.v>...>v...vv.vv.>>v.....vv..v>.vv..>.v.>..>....v...v...v..v>.v.v.vv.>vvvv>..>..>.>.v.v.v.v>...>v..vv>.v>vvv..v.....>>.v>>v. +..>.vv>..>>.>.>>>...v.....v.....>>>..>..>>.v...>>>>..>>.>.>>..>.>......v.v>v...v>.v.v.>>v>.v......>v..v.vvv>>>v>....>v..>>.v>vv.vv.>.v..v.> +.v.v....>vv......>>v....>vv......>>.>....v..>vv>v..>>>.>.vv.....vv.....v...>v..v...v.>.>v..v.>.....v.>.>>.v...>>.>.>.v..vvv....>>>.>v>vvv.. +>>...v>>..>..>.vvv....vv..>vv..v.vv>.vvvv>>>..>>>..>.>..>....>v>.>v......>vv.>...>..>vvv..v>>.>v..>>>.v...>v.vv>..v.v..vvv....v.>>.v...v.>v +...>>>>vv.>..v....vv...>.v..vv>.>>...v>>.v>......>v.v>.vv.....v.>..>>>.>v...vv..>..v.>>...v>..vv.>...>v....>v...>..>..>.vv>>.>vv.v.v>.v..vv +.v....vvv>vv.v.>..v>..>.v.>>v..v>..v...v.vv>>....v.........>..vv..>>...>v..>.>v.v>>v.v>>>...v>.v>.v.v..v>....>.v..vv.vvv>>>.v.v>.>v.v>>>.>. +..>>v>>.v>vvv.>>......v>>.....>>v>.>..vv......>>.vv>...>.>.>....>.>.>>.v....vv>v...>..>.>>>.v.>...vv...>>.v>>..>.v>...vvv>v.>.>..>.v>....v. +.>>....>v.>>>>vv>..>..v...>..v>>.>v..v....>vvv>>>>vv...vv>v>v.>>vvv>>>v..>>>>.>.>.>.v.v.v.v>.v>.v...>..v..>.>>v>.>.vv...v..v>.v..vv...vvv.> +.v.>v..>..v.v.v...v....>.vv>>v.vvv.>vv>>.v..v..v>v..vv.>>vv>>.>>v...v.>.>..>>>.v.v.>..>>..vv...>.v.>>...>v.>vv...v...>vv.>..>v.v.vvv>.v..v> +>..v>.v..v.>v...vvv.vv...>>>.>..>vv>.v>..v>v.v..v.>....>>..>>.>>>..>>>>>vv...v.>>.>v..v...>.>vv..>.>..v>>..>..>>.v>....v>>v.v.....>>...v... +>.>.....>..>..vv..>v....vv....>v.>......v>.>vv>vv>..vv.v.....v.>>>>..>>v.>.>....>v.>.....>...v...v.v..>.v..v>>.vvvv.>..>v..>.>vv..vvv..v.v. +..vv..v...vv.>.>.v>v....v..>vv.>v...>>v...vvv>vvv....>v>v>.......>>>.v.v...v...>.>v..v>.v>>...v....v>.>..vvv>>>.vvv.v.v>vv>.vvv>..v>.....v. +..v.....>>..>>v>>..>.v.v.vv.v....vvv.vv.....>v>.>v.>.vv....>....>v>...v.v...>>.>....v...vv.>....v>..v.>>.v...vv.>..v.v..>vv..>..v>>v..v.vvv +vv>vvvv..vv..v.v.>>>>.>>>>>v>v..>>.vv.>>>..>....v.vvv>.v.v..>>.v>.>>v.v...>.v>>v.>>.vv..>>>>vv..v>>v>v.v...>.....v.v>.v>>.>.v...v..>...v... +...>..v>v..v>.....v.vvv.vv.>>>..>>>>.v..>..>v.v.>v..v.vv..v>.v.>.>v.....vv>.>>..>.vvv...>>...>.>v.>.v>.v.v.vv.>>.>v..>..vv.vv>>>..v.v>...>. +....v.v>.>v.v.>>>.>.v...>vv.....>.v>v.....>.>.>>>v.v>....vv>vvv...>..>..v..>vv>v.v>>v.>v.v.v>.vv.v..vvv..>.v.....v.>.>>.vv.vv..v>v.>.>..>.> +.v.>.>.v.v..v..v.>v..vvvvv.>.v.>>v......v...>.>.v.>v..>..vv.>.>v..>..>>v>v..vvv...v...vv>..v....v....>....v.>>.v>>>..>..v.>.v.>v.>....v.... +>v.vvv>>..v>>>>.v.v.v.v.v.v......>v..v.>>vv...>..>.v.....vv>.>v.....v.v.v>>>..v..v...>vv>..v.....>...vvv>...v>.>..>....vv>.v>.....v.v>..... +....>..v>.v...>..>..>..v.>..>..v.v......>.v>.v..v>.v>..v..v>.v>.>.v..>..>v..>.>>..v..>vvv>..vv.>>.>v.v.>.>vvv.>..>......>v>.v.v...v>>.>>>.> +.>vv>v>...v...>..>.v...>>...v.v>>..>.vv....vv...>.>....vv.>.>.v.>>.>v>...v.v..>..>>...>...v.v.>v..v>..v>..>.v...v>.>.>vv.v>..>v...v....v.v> +>v.v.>.v>>..>v.v..>>..>v.v.>v..v>v.vv>...v>>.>v>v.>v..>>..>....v.vv>vvv....v>vv.vv>vvv..>>........>>>.v....>>.v..>.v....>.v..>..v>v......>. +.>.v..>.>>..v.vv....vv..v..>.>.v..>...>v...>v.>.vvv>>v.vvv..v.>.v...>>>v.vv>>>v.>>v.v..>v.v..v..>>..v......v>v>v.v..v.>>>.>.>vv.vv.v>..v..> +v>...>>v..>....v>>>..v>>>.vvv.>.v..>..vv.>...v.v..v.vvv...v.vv.v>...v........v>v.>v.....>>...>v.v>.>...>>.>>.>>v.v>>v.v..vvv..vv.>..>.v>..v +.vv.v>...>>>..>.>v>.>.>..v.vv.>..v>...v>.v..v...>vv.>>v...>>.>.>.v.>.>.....>v.>.vv>.>.v...>...v>.>v.>.v.>>v.v>..v>.v>.>.v.v.>v.vv>>>.v.vv>> +v...>...vvv.>>>vv.>v.v...>>>>v>>>.vv.>..>.>vvv.v.>.....v..>>>v>..v>....>.>>.>..v...v>.>>..>..v.vv..v.v.>vv>..v..>>>.>>>v.>...>>..>>v.v.vv.. +>..>..vv.vv>...>>..>v....v>v..>.>....>>>...v.>>.v>...>..vv.....>>.>vv..>.vvv..>>>.v..v>>>.>v..v>..v..v>..v.v.vv.>>vvv..v>.>>..>v>vvv>v>>v.. +v.v>>v....>.....>v.>.v.>v..>.>.v.>v....vvv.>....>>>..>.>.>.>vv>.>v..vv..v..>.v>vv>vv..v.v...v..v......>>..v.>...>>vv.>v..>v.>.>>v.>vv.>.v.. +>..v>..>vv.....v.v...>.vv..>.>vv>v......>...>.vv.v..v..>.v.v>>..v.>..>vv.>.>>vvv..v>..vvvv..v.>v>vv.v..v>>>>v>vv>.>.>>.v>v.v.>..v>.>v.v.v.> +vv..vv>v..v..>vvv......vvv.vvvv>>.>.v.v...>v>...v>..vv..vv>>v>.v.>>v.>>.vvv.v...v>>..>>>v..>..>.....v>>.>>v....>.v>.v>.v..vv..v..>.....vv>v +v>..v>.>v.>.>>>v.v.vvvvv>v.v>..>.vv>...>>..v.>v.>v....v>..>v...v>.>>...>v..>>.v..>>v..v..>>.>.vv.v..>.>>v...>.>>......v>>.>vv...>.>.v..>... +..v.v....v.>v>.v>v.v...>vv>..vv..vv...v>>>v...vv>.>>..v...>v....v...v>.v>>>.v....v..>v.v....>.>..>.>>v.v.v>.>.....v.>vv.>.vvv.>v>>...v...v> +vv>..>..v>>>v>.v>v>...>.>>.v..>>>>..>>.v>v.vvvv..>.>>v.>v>>>..>>...>>.v.....>..>.>vv.vv.>>>.>>v>v..vv>vvv.>v.....v>.v>v.>>.vv>>.vv.v>...v.v +vvv..>..vv..vv>v.>vv.vv.>.>.>..v>.vv.vvv>v>.v.v>.>>v..vv.v...v.>..>.vvv>...>v..vv.>v..v...>.>..v>v.vv..>..vv.v>v.vv.v.>v.....>>>.......v..> +v......v.>>>>...vvv.>..v..>.>>v....vvv.>>.>...v..v.vv.>......>..>......vvvv.v..>.......v..>>..>>>v.>>>..>.v...>vv.v>>...v>>.....>>vvvv..v>. +.v.....>...>.>......>..vv>..>....v>v.>.v.v...v..v>.>..>.>.v>v.>.>v..v...>.>v.>.vv.v>v.....>v....v.>v>..>.v...v>.>.>...v.v..>v..v..v..>v...> +>v.>>>.>.v>.>v....>>..>....>.v.>>>...vvv.>.v...>v>.v..>..vv>..v>.v..v...v..>..v.>v>v.......v.>.....v>.>v>v>..v.v>.>>....>v>>.....>>.>v..vv. +.v..v..v.v>..v..>..v.vv.v>v>>..v>.v....>v......vv....vv.vv>>v.v....>..>..>>.>vvv.v.>.>.>v.v>>v.>>>.vv.>v.>.....>..v..v.>.>..>.v.>>.>v.>vvv> +...>...v.>........v....>v....>..>.>>..vv.....v>vv.....>>.vv.>..v.v..vvvv>vv>...vvv..v.>..v...v.>>>..>>.>v..v..vvvv>>.>.>v.vvv.vv.v....vv.v. +v..v>..>>.v.>>.v.v>.>.v>v..>>v.v>v......>>....>...>.>>.v>.....>>>>...>..>>.v.v>.v.v..>>v>.>.v.>...>....>v>v>vv...v.......vv>.v.>>.v>v.>>v.> +>.>v.vv>vv>>v>.....v>...>.....v>.v.v.v.>>>.v....>..vv.v.>>..>..v..vv.v..v.v>>....v>..>..vv>.vv>..v.v.v.>.v.>v.>........>>>>.v.>..v..v>.>.>> +...>..>.vv.>...v...v.v.v.>...v>.>...v.v..>.>vv.>..vv..>.v>.vv.vv>vv..>>v.>>v>.>.v>v....>.v.>vvv..v..vv....v...>.v>.>.v>vv.>>....>>.v>>.v.>. +vv..>....vvv.>..>.v.v..>...v>..vv.vvv>.v>.v.>..>vv.v>.>...>.v.>.>>>...v...v...v.v.v.>v>v>.>.>v.>v>.v>..v..>v..v>....v...>..>.....>v>..>>vv. +...v.>..>.....v.v..vv....v....v....>.>>..v...vvvvv.v.v...v..v>.>.v..>.>..v.....v...>.>v.>.....>..vv...>>.v.v.>>.>>.v>>>>>v.>>...v..v.v...v. +.....v..>.>..vvv..vv>vv>>....vv..vv>>v.v>...>v.v.v>>.....vv>...>v.>...>.v>v...v.v.v>>>>>.vv>v>v...v>..v...v..>.v>v>>>vvv..v.>.>>>...v....v. +v>>>.>v..v>.vvv.v..vv.>v.>..vvv.v...>.vv>.v.v>>...>v....v>.v....>...>v.v..>...v>>...>>>...v..>v>...>.v>.vvv>v...>..>>>vv>.v..vv>>>..v...v.> +>...v>>..>>....>.>v>.>>v...>.>>>vv...v.>.>.......v...>>.....>.vvv>...>>.v>vv>...>.>v.v.>.v.v>v..v>vv...>.>>...>.....>.v..>vv.>>.>>.>...>... +.v...>vv>...vv>v.>....>>.v....>....v.vvv>>..v>....>.>>....>v.....>v>.v..>v>vv..v.v>.>v..>vv>..>..v...v.>.>>...>>vv>v>v..>......>.v.v>....v> +v...v...v>>v...>vv...>vvv>>v..v....>.....>v>.>>v>..v.>.>>>>.>.>.>...>v>>.vv.....v>..>>>v....v....v.>......v...v>v>>..>...v.>>..v.....vvv>.> +v>>.v>v...v.>>v.v>>...>.v.....>vvv.>v...v>.v.v>.v..>v.....v.>v..>>v>v.......>v>v.v>.v>vv>v..v..>>......vv..v.>v.vv>.vv.v.>v..>.v>vv.v>.>.>. +v.vv>..v.v...>vv>>..>...>>>...v...v.>v>>>>v>vv.v..v.v..v>>v.vv.>>.v.>vv..vv...v..>vvv>>>.vv..v.v..>.v.......v.v.v..>.v>..>>v>.>v.>vv.v....> +v..v.>..>.......v>>v..v.>.....v.v....v..>.v.v>v...vv..>.v>.>vv>v..>v>>.>...>......v>...vv.v.v...>>....>v>...v...v..>>vv.>>.v>..v.>>.v.v.... +>v>..>>...>v>.>..>>..>vv..>..>v..v.v.>>..v.>v.v>>vv.>>..>.vv.v.v.vv...>>...>>v>.v.vvv....v..v.>.v>v>>>v>.>...>vv>...>..>>>v.v.vv....v>>v>v> +>..>>>>.....>v.>...vvv..>..>...>....v.vv.vv>v>vv...>...v>>..>>v...vv..vv>..>>.v..vvvv>..v....v....>vv.v>...v.v..>v>......>....v>.>..>v>...> +..vvv>.>..v...v..>.>v.>.......>.....>v>...v>.>>>>>..v.>...>vvv.v..>vvvvv.>.>v.>.v......>v.....v>v.>..vv.>.v>.......>.vvv.>>.v>.v..>.>v.v.v. +.....vv>.v>v.>>v..v...>..vv>.v.>v...>vv.>...>...>..>..>>.v.....v..v...vv...v>.>.....v...v>.vv>.v..>>v>....>.>>v.>vv>.v..>..>......vvvv..>.v +.v>..v>..>.....vv..v>..>....v..v.>v>....v.>vv>v.....v....vv..>.v>..v>.vv>>>.>>..>v..>>..>>....>.v>>>>v.>.v..>>........v.vvv>v.>..>v>>>v>v.. +.>vv.>.....v..v..v>.v...>v>v.vv..v>..vv..>.>v...>...v.vv..>...>..v>>.>v.>>.v...>>>>v.v..>>.v.v...vvvv>.v>v...v.v..>vvv>...>>..>.>v>>>.v>>.. +>..v>>v.v>...v>vv>...v>vv..>vv>>.v.vv.vvv.>.>v>>v...>.v.>v..v.>..v>..v.vv.....v.>>.v.>..>....>>....>..v.vvv>>>>..>....>.v>......>...>>>.... +>.>vv.>v>v.>.>.>>..v..>..>.>v......>..>...>v.vvv>>v...>..v........>.v>...>>...v>.....>v.v....>v.>..>.>vv....>....v.v..v.v>.vv>>..v.vv>.>.>. +v.>.v.>v..v>.>.......>.v.>>.v..>....v>.v.v>.>..v..v.>>v...v...v>....v.v.>>v.>.>.v.>.>v>v........v.vv>.v...>>...v.v...>v..v......vvv.v.>>.v> +v.v>v>.>.vv.>..>>.>v.v..>....>.>.>v.>v........>.vv....>>>>vv>..>.>v>.v.>>v>..>>.>>.>...v.....>.v>v>..>.v>.v>>>v.>>>vv.>.>....v>>v.>.>.>.>>v +..v..>..>......v....>....vv..>..>...>.v.....>>.vv...vvv..v>.>>v>>v..>.vv.>>.v.v>>v>>>>>v>.>>.v>.>v>...v..>...v..>.>>.>.>.>.v.>....>.>.v.... +..v...>..>v.v.vv....v.>.>vv.v.>.v.>>v.vvvv.v...>>v.........v>>.>vv>..vvv>vv.v>>.>vv>v.>.>.v.v..>v>.>v.vvv....vv..>.v..>v.>......v.v>..>..v. +..vv>v>..v>>v.v>.v.>vv.vv.vv>....>.>>>>.>......>...v.>.v>...>..>.....>.>...>.>..v>.>v..vv>>..>>..>>.>>.vv..>>v>>..v..v>.v..>...>v.v>>..>>>> +.v.v.>.>...>...v>..v>...>.vv..v..vv>>....v..v>>>.>...>v>.v..>vv.>.>>>....>v>....>>>v.v.>..>..>>..v>>.v.vv.v.v.>vv>v.....v.>..v..vv>...v.>>. +..vv.v.>v...>v.....v.>v..v....>v>>.>.vv.>.>.>....vv.....>>vvv.>.v>>>.v.>v.vv.v....>..v..>v>v.>>.>v..>.>.>.v.>vv.vv...>v>....>v..>.v>.>>.... +vvv....>vv>v.v>>>.v>vv..>v.v..>vvv>>.v.>>v>>.>vv>v.v>v.v.>..v.v..v>>v........v.vv.>.v>...>..>...v>>.>.v.....v...vv.vv>.v.vv>>.v>v>v>vv.>>>v +..vvv>...vvv>>.....>...v...v>.v..>>v>>vvv...>v..vvv..>>..>>.>>>>..vvv>>vv>vv>>...vv.>.>v>>>.>...>.>.>.v.v..>.>>...v.>>..>>>.>v>>.vv...v>>.. +.>>v.vv.v.>v.>....>.v.v>.vv...vvv..v>.v>>>v>>.>..v.v...v>.vv.>.v..v..vv.>.>.>.>....v..v>>v.vv.>.>v>.v....>v>v..>.v.>..>.v>v>>v>>v>v.>.v.v.. +>.v>.v..>...>v...>...>.>>>v.>.>v>.v.>vv..v..v.v..>.>.>>>v...v.........>..>>vv...v>vv..>v>>.v..>vv....>..>..v>.vv.>v..>v>>>.>>v.vvv.>..>>>v. +>vv..>.>...>.>.>>....v>vvvv>...v.v.>..v>vv>>...v..>>..>>>>v.>v>...>>....>v>v>..vv....>>....>>>.>..>.>.>.v....>v>..v.>.>>>....>vv.>.>v.>v..> +v>...>..>.>>>.v>>v.>>.>...vv.>..vv.....v........vvv>>..>>>.>.v>.>v>>v>v.v...>..v.v>..>...>>v>>.....v>.>>v>...v.>.v>....vv>.v.v.vv.v.......> +.v>.v.vv.v..>v..v...v..>.v>.v..v>v>......>>>.>..v>..v>vvv.v.vvv.v..>.......>..>>.v.....>...>>>..v.>>>>.>.>v>.>.>..>>vvv.....vv.>.v.v>.....> +>v..>.v......v.......v.>>>v.>vvv.......>v>v...>>vv.v.>.....>v.......v>v>>..v>....v..v..>.>...>v>..v.>.>v>v.>....>v...>...>vv...vv.vv>>v.>v. +>v>.v..v..>v.v....vv.v.>vv.>.>>.vv......vvv...>v>.>v..v>...vvv.....>..>.>v>.>.v>.v.v..v.>.v>.v...>v>v.vv..>.>>.>..>...>v.>>v>..>v..>>..>..> +..>>..>v>v>...vv>..v...vv..>.>v.>>>.>v..>..v>....>....v....>.v.v>>>v.v>.vv.>.>>v.vv...>vvvv.v>.>>v>>>...v>..>.>>..v..>>..>..>.v>v..v...>.v> +>v>v..vvv.v.v.>.vv..>.v>.v.>.v>..v..>.>>.>v.>v.......>..v.v.>..>.....v>.>..v>>....v......>v..v>>v..v>>...>>.>..v..>.>>...>.v.v..v>>.>>>>v.v +>.>>..v>v..vv.>vv.>..v..vv>>v...>...>....v.vv>v...v.>.>..>>>v..v......v>v.v..v>v>...>vv....>v>v.>>>.v.v>.v>....>v...v.>vv..v>.>v.v..>...>.> +v.v>.v..>.v...>>..v....>>.v>....vv....>>>..>..>>>v.>v>.....v.>.vv.>....v.vv.vvv.v.v>.vvv....>.......>.v>v>>..v>.vvv>.>vvv.v.>...v.>v>.v>vvv +v.>..v...vv>.v.>...>.vv>v.>..v>...v..>v....vvv..>.v.v.vv.>..>...v...>v..v.....v.>>v....v.v..>.>..>vvv.>..>..v.>..>..v.>..v.>....v..>..>>... +vvv.....v>v>v>>>.>...>..>>v......>..v>.>>vv..>>...>.>>>>v>..v.......>>.....v..>v.v.v>>>>...v.>..v.....>.>.v..v>v.v>>>>.>>>...>.v>.....>.>v. +.>..vv...>>.v>v......vv.>.v>>v...>...v..>.>>.v.v>...>vv.>..v..v...v>>>>>v>v.....>..vvv>>.v...>v.vv>..v..>>...>.>>.v..>>>..>.v>>....v>>>.... +....v>vv>>.v..v..>>..v..>.v..v.v.>......v>.v...vvv>v>>.>..v.>>>.v>v.vv.v.>.vv...v...v.>vv>>..>..v>v>>vv..>>>v>..>.vv..vvv.>...>>vv>.vv>.>.. +.>v>>.v>...>..>...vv..>>vv.vv.v.v.....v>v.......v>>.v.........v.>>..v>.vv..v.>.>.v.>>.v>.v>.>.vv...>>...>.>>..>.v...v..v.>v.>>>v>.>v......> +.vv>.>.>.....v.>>.....v..>vv.....v>v..>...v>..vvv>>vv.>v.>v.........>...>>>.v...>>v.>v.v>>......vvv.v..vv.>.v>.v>>vv>v>v.>vvv.>v..v......vv +..v..vv..>>>>vv>>>>v>.v.v>v..v.v>.v>v>>.v..v>v>>>.>...>.v>vv.v>.>>..vv>.>.vv.....v.vv..v>.>.v......v..>v>.>...>>>>..v.v>.vv>...>.vv.v>...>. +v.....v...>.....>v.v.....v.vv...vv>.v>.>>..vvvv>.....v.>.vv>...v>..v...v..v>.>.>>..v.v..>>>>.v..>..>.v>>>.v>v>....>.>>.>>>.....v>.>>v.vv... +>vv...vv.v...v..vv..v.>v>.>.vv.v...vv>>v.vvv.>>.v..v.>......vv>.>..v.>.>vv>.v.>>.>.>v..>>.>>v.>v..v>>...>>....>v....>..>>...v...>>..>....>v +v>>.....>...>v.v..>.....>.>>.v>>..>v.v...vvv>v.>....v...>.v..>.>v.v>...v.v.>.>>...v....>vv.>>>......>v.>v>v>>..v..>v>..v>vv.....v..>>v.v>v> +>.>..>v>v.>v..>v>..>.vv.v>>v.v....>..>.v.v>>v>.>v.>.v>v>.>>.>v.v.v.>.v>.>..>>>>>..>.>..>>.>.>...>>..>>>..>.v.>..>vv.>>.>.v.>vv.v.>>.v...>v. +...>vvvv.vv>.>.>vv.v>>..>.v>>..vv>>.>v.>>>>.vv>v.v.>v..>vv...>...>..v>.........>.........v>>.>....vvvv.v..>v...>>>....>>v..>v.vvv>.v....vv. +....v>.vv>..>>>v.v...>v.v.vvv.>.>...>..vvv>v..v....v>.>>...>>.>v...v..v>v.vv>..v.vv...vv>v..>.v>v.v.v.>v.>.>vv.v.>v..v.....>.>v>.>..>..>.vv +..>v>>.>v.v.>>v.v>.>>>>...v>>v.vvv.>>.>..v>v...>.v>..vv>>.v>.v.>....>v.>.....v..v.>vv>>>.>.v>>..>.v..>.vv>..>...v.v..>>.>.v>....>v>>v.v>..v +>..v.v...vvv>...>v.vv.v..>.>v...v>.>.vvv....v>.>.>.>v>>....>>...v.>>>..v>v..>.v.v..v.vv>...>..v>>.vv.v>..vv..v....vv>>..>v.v..v>>v.>..v.>.. +....v....v>v.>.....>vv....v.v...v>>>.>.v....>......>v...v....>v..v>v..v....>>>>v>>.>..v.v......v>.v....v>.>..>.>>v.>>>...v.vv.>vvv.v.vv..vv +..>>..>v.v.>v.v>v.>>.....v........vv.>v.>.vv.v...v.v.>.>...>v.>>v...v.>.......v..>.vv...v.>..>>v>.v...vv>v....vvvvvv>...v.v>...>..>..>>>v.v +...>v.....>v>..>v.>v.>.v>.v.vv.v>.v>..>v>>.>>v..>..v..>.>v....v.v.>>>.>v...>>>>..v..vvvv.v>vvvvv...>...v>v>>.vvv..>.v...v...>>..v..>.v...>. +.v...v...v..>.v>.>>..>...>>.vv>>v..>v..>v>..v.v.>v.v>.vv..v.v.>.>v..>..v..>...v>v>v.>>..>v.>>..v.....>..>.....v>..>>.vvvv.>.v>.>>>>v.v>.... +v.v.>v..>..>v.v>.v..>>....>>vv>v...>>..v....v........>v>v.>.>.v.>.v>v>...>>.v.v>vvvv.>..>>v>..>.v.v>.v>..>...v>.v>v>>v.........>>.vvv..v.v> +>>.>.v.>.....>v>.......>v.v.v>.>v..v....>v...>.v.vv...>.>.v...v>..v.v>..>.v.v.>v.>.>.>vv>.>>vv..>v>>..vv.v..>v..>..v....>v>vv>v>>>.>v..>.v> +v.....vvvv>...v>..vv.>vv..vv.>vv...v>>>...vvv....>>v...v....v>.>vv>.>>>vv>>>>....vv..v>>>>..v..>.v...>.v....v...>v>.>.>>>v>...>..v.v..>>v>v +...v>v.>v.>vvvv>..v>...vvv.>......vvv..vv>.>.....>>.vv.>.>.>>..>>>>>..v>v.vv.>.>>vv>v>>v>..>..vvv.v>...>.vv...>v.>..v>.v.>.>vv.v.>...>vv..> +....v.vv.>>...v.vv>.>>>.>..>..v>vvv.v>v.>>>...v>v.>.vvv.>>...>.vv>>..v.....v..v.>>.v>....>.v..>.>v.>.v....>.>.v..>v>>>v.>v.v.>v>vv.>.v>.vv. +v.v>.vvv..>>v.>..>.>..>..>..v>.v.>v..v..>>v>>v.v.v.>..>.vv....v>>.v.>....>.>>vvv>...>.v.v>..vv.>.v..>v....v....vv....v.>..>.v>....v.....v.v +.>..>>vv>>.v>>v..>.v>>..vv.v>>>.>>>v.v>..>...>..vvv..>vv.>v>>>.>>>v.......v....v>v.>v.vv>...>...>>...v>v>..v.>>..v..>>>>..v.......v>.....>> +.......v>.vv.v.>>v.v>v.....v.vv>v>>....v>v..v>>v.v...v>...v.>v..v..v>v......>.>.>...>>....>.v...v.v>v.v...vv>...>>...>.>.>>.>>.>.>..v.v...> +v.>.>v..v>>.>>.v>.v.>>v>v..>v..>..>.....v>....v>>v>.>...>v.v..>vv.>vv.>>...v.>..vv..>...v.>..v......v.>...vv>v>>>>vv.>vv>.>.>...>...>>vv.>> +.>.>v>>.>.v.>......v.v.>v>>v..v.v>....>.....v.>.v.>.>>>v.v>>vv...v..v>>>>.v...>>>.vvvvvv..>..>..>vv>.vv.>.>.>..>>vvv.v.>....v>vv..>vv>v.vv> +.>>v..v>...v......>.>..>v..>.....>.>v..vv.v>>vv>.vv...>...v.v>....v>...>.v>>...>.....vv>.>vv>..>.v.>.>v....>v..>..v>>>v.>...>.>v.>.>v.v>.v. +.>v.>>v.v....v.......>.v.v.v..>v....>v>.v>.>v>>..>v.v>>.>>.vv>>vvv.>v>v.....>>vv.v.v.v.....>.>.vvv>v>...>..v>.v.>>>>>..>v>.>v.>>v>>v....v.v +vv..>.>>.>.vv..>..>...v.....v....>.v>v....v.vv.v...>.vv..v>>.....v.>......>.....vvv..v>v>.v...v>.>v.v..>..>.>vv....>>.>>v>.>.v..v>vv.v>.v.. +v>.v...>v..v..vv>>v..>v.v>.vv>>..>>>.v.>.....>v..>v.>v....>vv...>.>>>.>>v.>.>v..>.>v.>>..>v...>>.>.>v..v.v.vvvv....v.v>.>..>>>..>vv>...vvv. +v>>.....>vv.>....v>.>>v..vv.>vv...>v>.vvv...v>...v.v>.>...v.>.>>v.v..v>.....vv.>..>>.vv.>..>.v.>v>..v.vv.v.v...v.v..v>.v.v......vv>...>..>v +.>...v.>.v..>vv...>.vvv..>>v..>..v.>.....>......>>>.v.vvv..>>...v>.>.vv.v>..v.vv>vv...v>.vv>..vv.>...v.v..v...v..v.>...vvvv.>..vv..v...vv.. +>..>>>.v>..v......v.>.....>v.>>>..>.>>..>>v.>>vv>.>....v>v.>.v..v>..>..v..>v..v....>>>>...vv..>...>.......>.>.v>....v.v>>.v.>.>v>.>>>v..>>> +..>.>vv......>.v>>.vvv>..v.v.>.v.>>>>.v>>v>......>>>>.>>.....>.>..>.vv..v.>..v>>vvv.v>...v..v.>.v..>.....v>vvvv.v.vvv>.>v..v>>.v>v...>..v.> +>..>..>..vvv.>.>.>..vv>....>v>.v.>v.>>>...>>.v.>.>.>.>...vv..v>..>vv...v>..v..v.>..>.>v>......v.....v.v.vv...>v...vv>vv.>>.v..v..v.v..v...v +.>...v..v...v.>..v..v>v.v....v>.vv.>.vvv.v.>>.v..vv...>>..v.>>.v>.>.>..>vv>vv.v...>.v>>........>.>v>...vv.vv>v..v>.>.v.>v.v..>..vv>.v..>... +.v.v>...>v....v....>>>vv..>>v..>....>vv.>.>...>>..v.....>v.>.>...v.>v.>v>..>.v.>.....v.>>>v>>>v..v.v>>>v.>>..v..v....vvv..v>>.>>>v......v>> +..>.v.>>>.v....>..>vv...vv>>.>v.>>..v.v>>>.v.>v>.v..>>>....>vv................>>>.>.>..v>...>...v.>>.v.>>>.v....>>>.......>v>vv.v....v...>. +vv.......>v.v.v.>..vvvv>.>>vv...>..>.>>v...v.>v.v>.>..v.....vv..v..>.>>....v..vv.v.vv>..vv>v>vv>v>...>.v.>>....>.>>...>vv>>.v..>v.>.>>v.... +v...v.vvv.v..v>...>.>...v..v.vv..>.........vv.>vv.....v>v.v....>.v.v>>v>.>..v>>v>..>..v>.>v.v.v.v..v>>v..v..>...v.v.........>>v.>...v.v.v.> +.>...v...v.vvv.>v.vv.>>>.v.v.vvv>.....v>v.v>....v.>>....>....v..v>.vvv..vvv..vv.v.v.v>.>.v>v..v>.v.>>..>.....v.>.>.v....>>>>.>vv>.v..vv>..v +>>.v..v..v>v>..vv...>.v..v.>..vv.v.vv.>>v..vvv>>vv..>..v.v.v.vv>>..>v.>>.>...>v.>.v.>......v>..vv..>v...>...>...>.>>>v.>>..v.>....v.vv.v>.> +....vv.......v.v.>.v>v.v...>...v>.v>.....v>.>v....>vv>>>>v.vv>>v...>..>>.>>...>>..vvvv..v>>>.>>v..>vv.>v>..v......>v...v>>.v..v.v.....>..>. +>.v>>v..>>>..vv>.>>>..vv>vv.vv...>...vvvv..v.v>v..v.>v>....>..>.vv.vvv.>...>v.vv..v.v>>...>v>>..>v.vvv.vv.>>v......>.>.v>>..>>..v....>...v. +vv.>>vv.....>.v...v.........>...>>>>>.>>....>vvv.>..v..>v>>....vvvv>v>>vv..>..>vv.>v..>>>.>.....v..v>>...>>v.>.>..>vv...v.v.>v..vv.>..v>>v. +...v...>.v...v>.>>...>v>vvv...v>v.vvv>>..>v.......>...>.vvv.>vv>.vv....>vv.>v>.>.>....>v...>>.>.v....v>>v>>.>v>v.>>>>.>vvv>..v..>>v.vvv...> +>.>>v.>.vv>.v>.>..>.>.v.v...v>..>>....v..>>v..>.v>v.......v.v.v>v..v>vvv.>>>.vv...>.>vvv>vv.....>>.vv..v>v.>>vv>.vv.v>.>>.vvv.>...vv.vv.v.. +..>v...v.v.....>v>>>>..>.>..>.v...>.>.>>..v.>v>.v>>v...>..>..v.v..>vvvv.>>.v>...>vvv...v...v....>..>.v>>>....v..>....vv.>v.>.v>v....v.vv.v. diff --git a/src/main/resources/2021/day3.txt b/src/main/resources/2021/day3.txt new file mode 100644 index 00000000..e0461ad7 --- /dev/null +++ b/src/main/resources/2021/day3.txt @@ -0,0 +1,1000 @@ +001001100101 +010100011100 +100000110001 +001111110101 +100010110101 +111010100100 +011011000110 +100000011101 +011001100111 +000001011110 +000010100011 +110100111110 +001101100101 +011011011101 +010000011010 +011100100100 +001111000011 +100111000111 +100111100011 +101100011011 +001110101101 +110010101000 +111110110111 +111100100010 +001001000000 +001111101011 +101100110011 +011010001111 +100010100001 +110011001010 +101000001100 +111010101100 +101010101100 +110011101000 +001110010110 +010101001001 +000010101100 +010101101010 +111001101100 +010000000000 +011011111000 +001110110011 +101000001011 +110101100101 +111001010111 +110001111111 +010010100110 +011010011001 +011101100000 +100110010101 +111000101101 +110011110000 +011001011000 +001101000010 +001110011111 +100010101100 +010011100101 +000011110000 +101100001111 +010001011000 +001101011101 +011110001110 +111110101101 +010000000011 +111000000011 +000100010100 +111110011001 +111001010011 +011000100010 +100001110000 +111111000100 +010100101110 +010011100110 +101100110111 +101001101001 +000001110111 +101100000001 +011010111011 +110011011111 +001001011001 +010110101100 +001100101100 +101001011101 +100101000010 +010101000010 +111101011110 +000000100010 +111010010010 +100001111011 +110000010011 +000101111001 +111101100111 +110101011100 +000111110101 +011110111001 +010000101011 +001001011000 +010110011100 +111111111000 +110100000101 +110101010011 +010011110010 +100110111100 +111000001101 +110001001001 +111101111100 +111111101001 +100101001010 +010101010100 +010010001111 +000010110000 +011001110110 +111101111011 +011001011100 +110101010101 +110111011111 +110101111000 +110010100110 +110000000010 +011001100001 +011000110010 +010110100000 +011110000001 +100101011010 +100111111011 +001110000011 +100110011011 +000100011101 +110000110110 +000001000010 +011111111010 +001010100100 +011000100100 +001100001111 +010111100111 +010001101101 +011001010000 +001010101000 +001001100011 +000011001010 +010010010100 +100001011000 +000011011011 +111011110111 +100010010000 +111001110000 +011100010100 +000101101011 +010000000010 +001101110100 +111010111111 +011000011110 +111110000110 +011011011011 +010001000100 +110111010010 +001110010100 +001001011010 +010111100011 +110110110101 +110101000101 +001011100011 +001111010110 +110111011000 +110001011110 +011101000001 +101111100000 +110001101110 +010101101100 +010010100010 +000111101010 +010000001010 +011001000010 +100000010110 +111101010010 +111011001011 +000010100010 +011111111001 +111001001011 +101001111010 +110100000001 +010010101111 +110011111001 +110111100110 +100111001111 +100101101001 +011111100100 +011111011011 +111100101101 +110010000111 +110110010000 +011101111011 +001101101000 +001001100110 +110001101000 +111100101110 +000101110111 +011110101111 +000100010010 +011010000011 +010010100001 +111001111110 +001111101010 +101110100011 +100111111001 +110110011010 +000100001000 +111011010010 +011001101110 +001011011010 +101110111100 +110011010110 +001010100011 +111010111110 +011100010011 +100011010100 +110000111010 +110001010001 +001111101001 +010011100111 +101010111010 +110101001101 +000100111000 +100101001001 +101110111011 +001110011000 +011000010010 +001000010001 +000111011101 +100000111100 +001110000100 +011111111100 +000100100100 +100101001000 +100011011110 +011110100010 +011110111110 +010001010110 +000101000000 +001001100000 +010001101100 +110010110101 +100001000010 +100001001001 +000111000011 +111000100010 +000000011101 +111111000110 +100111100100 +111100011101 +101011110011 +001010110101 +100000000110 +111100011001 +010110010010 +000010010010 +001011111001 +001000011100 +011000011000 +111111110000 +100001110010 +011011110010 +000110011101 +001101001010 +011010100111 +100000011100 +001000111011 +011010100110 +000001111111 +001010010111 +011100001010 +110110001000 +110010101111 +111100010111 +100001111010 +101110010110 +000010110011 +111001010100 +101101110110 +111111111100 +011101101011 +011011110100 +111010100011 +001101000110 +111101111001 +110001111000 +010110000111 +110110100101 +111101011100 +100001000011 +010011101000 +000111110000 +111011110100 +011010111110 +101011001000 +111100110101 +100100001001 +100011110100 +010101010011 +010110011011 +100111001101 +000111001010 +110111011011 +100000111011 +111011000001 +011111100011 +110010000010 +100110101111 +101001111000 +111001111010 +000111111000 +111110100100 +111001111011 +100010110111 +110111001111 +100011001001 +110011001101 +100011101111 +011011110000 +101100011110 +110110111011 +011010100000 +111000000010 +000010010011 +110101101001 +101011011101 +011101100110 +111111000010 +010110100101 +010010011110 +010000101111 +010110101001 +001111010101 +111000101110 +100000010111 +111001000101 +111101101100 +011000000110 +000001110010 +110011010001 +011110011011 +100000010001 +000100100001 +011110001100 +001101011111 +100000000001 +000010011001 +110111000110 +100110110111 +011000110000 +100101000101 +100100111110 +000101010100 +001110100111 +111011001010 +010111001001 +110101001110 +111000100111 +000101011100 +100010111000 +000111110111 +010110010100 +110101100100 +111000011111 +000101001100 +000001011111 +011001111101 +110001111001 +111111110100 +010100111111 +011001100110 +010110101101 +011111011001 +101000010100 +010001100101 +101000100101 +001001010010 +000100011000 +000000000111 +001110011001 +100000001011 +011011101001 +111001000000 +110011100000 +011001100011 +000010011100 +000111000000 +000110011111 +010100011101 +001100010111 +100011000001 +001011000110 +010000011111 +011101001100 +101111011110 +000101001001 +110100101100 +000100010101 +010011001000 +010000010100 +111111010000 +000101000111 +000010010110 +001010000001 +100110110010 +010101100010 +111110010100 +111011111110 +010110110101 +011111000011 +001001001000 +101100001101 +100010101001 +010001101011 +000011011101 +010110011111 +101001001010 +100100001111 +100110100011 +000101001010 +100000100101 +011000100110 +110100000110 +000000010101 +000011110010 +100010010101 +001000100111 +111010000101 +000011000010 +000101001110 +000100110000 +101110010001 +101110100100 +111111001101 +111011101110 +010011000100 +000001001000 +100010111110 +111100101001 +001011111101 +000110000011 +100111111100 +111000000110 +001001011110 +111011110000 +110110000110 +110110011100 +010111111010 +011011001110 +110110001100 +000111100010 +011001100101 +111111000011 +011001111000 +110111010100 +000011111010 +011111101001 +011001011010 +010111101101 +001100100110 +001110101100 +001011011111 +000110001010 +100100001101 +011001101111 +010000100110 +110110010100 +000000110010 +011000101101 +110101111011 +110011111011 +010010001000 +001101110000 +100111100000 +111001011100 +001000110010 +011000011100 +001110010111 +010111011101 +010001110001 +111111101110 +000010111000 +001001000110 +101101100010 +000010000000 +111100100100 +101111011010 +111110011111 +010011110100 +010010010001 +011100011101 +111100000100 +011110011000 +000101100000 +101000111100 +101011110001 +001010000100 +001100101110 +010101010101 +111101110010 +011110100100 +001101100000 +000000110011 +100101100000 +101111100011 +101010101001 +100110110011 +000110100010 +101010000100 +001011010011 +010100110101 +000011101101 +100001001100 +111101101110 +100111101001 +010110111010 +011110000110 +100101011101 +000000001000 +000111001011 +011001000101 +011101001111 +111010001011 +010011011111 +101100001011 +001110110001 +101110110100 +100100011000 +000111010111 +111011111011 +011011100111 +110000110010 +101110110000 +010001111011 +010011111100 +110100110011 +011000111110 +000010111010 +001110001001 +011001100000 +100100100110 +011111001010 +000101000100 +101001010010 +010011101100 +110100101110 +010110001001 +111000011011 +010001110000 +011111011000 +010011000011 +001100001010 +100011100010 +011011111100 +010110101111 +000101100001 +101101100000 +111000110101 +110011010100 +000111011010 +011111010010 +111011111000 +100101110111 +000000111111 +011100110010 +110110011011 +010001011101 +100110110000 +110111110010 +010001111101 +100001101001 +110000111111 +010111110000 +100011001000 +011000101111 +111100100101 +010111010010 +111100110110 +101001100010 +110100010000 +110010111000 +011100010010 +000000001001 +010100011110 +110101010110 +111100100001 +111000010010 +110000010111 +001011100000 +001001010101 +110101101111 +001010010101 +010000110100 +111001011010 +000001111100 +101101011111 +110100111011 +100111010000 +110001110100 +101011000110 +101100111110 +001010010001 +011111101011 +010100001001 +010110100001 +000000110000 +110010111111 +111010000100 +111100001111 +100100110000 +001000110001 +011010001011 +110101111010 +001110000001 +000010100110 +010101111010 +011110100101 +011011100100 +000000011111 +100010011001 +100101000100 +110010011011 +011000000000 +001111111110 +001111010011 +100000110111 +100011011000 +110011111110 +010001000001 +011100011111 +101110001000 +101110000111 +001101100011 +111100100000 +101001110010 +100011110110 +100110101101 +011101100100 +111001011110 +110001101101 +100101101110 +111101001100 +100100100001 +100000011110 +000000000011 +010100010111 +001010010110 +110010110000 +100011110101 +110110110110 +100101101100 +000111011011 +001001001011 +101111010010 +011011010111 +010001100001 +111110101100 +010100100010 +001101101111 +011111100001 +100011011111 +110011111100 +100110001110 +101010100000 +100111011010 +101110101001 +101111001011 +110111000010 +100110001001 +000011111101 +110100010011 +101001000010 +101101011100 +001110010010 +001111000010 +110011101110 +001010011000 +011001000011 +110001101111 +001011001011 +011001111111 +000101010101 +101101100110 +110100101101 +011000111000 +011110100011 +010101110111 +110010001000 +101110100010 +111010001010 +011000001010 +001010110111 +110011111111 +011111101010 +000101110000 +101101000001 +111110111001 +110010111011 +100111101111 +101111000100 +011101110000 +001101010010 +110110011101 +000110000001 +001011111011 +011100001111 +110010101100 +110010010100 +110010100000 +110110000100 +010110011001 +100101101101 +010010010101 +101011111000 +100001001000 +011100011110 +101110010011 +110110001010 +110010110001 +110000000100 +011000000011 +000011111000 +010111000111 +000111000100 +111101100100 +101000101111 +001000000110 +000100000001 +101001100101 +001001111110 +001000010011 +111100001110 +001010111011 +011110011101 +001111101000 +000001110100 +110101000110 +000101000010 +001110101010 +101101011101 +011100101001 +011110000000 +001001101011 +001001011111 +011101111101 +101111100111 +001110110110 +011010110001 +011111000001 +000100101101 +001010010011 +010010110000 +111011101111 +110110000111 +001011110101 +100001101011 +110101100000 +010011111101 +000101110010 +100100111010 +101101101111 +010110111001 +110100110110 +111111001111 +100110010000 +100010100000 +011001101000 +000000111010 +010001100000 +000011001101 +111100011111 +100010111011 +000010100111 +100101000001 +011001001010 +100101010001 +101001001101 +010011101001 +000001000101 +000010011000 +111011100001 +001100111010 +010011011000 +000001011101 +010100111001 +001010110000 +011011101000 +010010111011 +100101100100 +010111000011 +001001111001 +011111011110 +011110111011 +101010010111 +101101111011 +001100011101 +011011010010 +000011000100 +010010110010 +001111011110 +011100011001 +011011101111 +010110101010 +111011010000 +111111010110 +001100110110 +010000110111 +000011110100 +011011000001 +101100101110 +100011001110 +011000010100 +000110001011 +011000000001 +000000111100 +101100110101 +111110010011 +111110101001 +110110101111 +101110110101 +110101111001 +000010001101 +111010101000 +010010100101 +001111101111 +100110100110 +000001010000 +000011110101 +110100111000 +101010111100 +000000010100 +010100010101 +010001100010 +100011010010 +011101001001 +000010101111 +000101000101 +001001101100 +111111100101 +100111111010 +110011101011 +000011100000 +111111011100 +010100001010 +000011100110 +110011111101 +001100000000 +011010101111 +101010101011 +111011000111 +010100110010 +011110110101 +010000011001 +100011010110 +000000001110 +000010101101 +111110100011 +111110010000 +101011101010 +011011001101 +101011111111 +100101101011 +111001000100 +010010000101 +011001010101 +110001100010 +010100001101 +111111101101 +101101000111 +001110110101 +001101000101 +001000100110 +000011011000 +101001001001 +010001001000 +110110111010 +111110011100 +000111111100 +000110101111 +000001110001 +011101101010 +100001001101 +010100010011 +001001001110 +111110110101 +001110001011 +111010101110 +100111000000 +110100000010 +000010111110 +100100000100 +111111001000 +111010001000 +101011100111 +001111111100 +001001101110 +011000001111 +001001100001 +001110000110 +111011011011 +001010101111 +101110110110 +110010000110 +001100010100 +110100111001 +111111110110 +100011001011 +111111000101 +000111010010 +010100100110 +101010110110 +011110110100 +110110101100 +100100111111 +101101110100 +010110101110 +101001101101 +001101010011 +001000100101 +010111010011 +000011110011 +010011111111 +101000000110 +010001111110 +100111010010 +010100010100 +110100001111 +001100000001 +010010110110 +011010011011 +101000010001 +101100010110 +111010011000 +001001101111 +111101010001 +010101111111 +000111010110 +010111100100 +000111101111 +110010100001 +100101111100 +010010010011 +100100001000 +010110000001 +000011000110 +101100110100 +000001100101 +010110101000 +101010100010 +101001110000 +101111000001 +110001111110 +101011010101 +111000010001 +010000101101 +000101010011 +101100011100 +010101000000 +010001110010 +111000001010 +101001011100 +001101111101 +111000101011 +100100000000 +010001011111 +000101000011 +111000011000 +000000100101 +110100001010 +011111111101 +100001010100 +110000011000 +011110011100 +000000110110 +101100100101 +000110001110 +110101110100 +010011111011 +101011100110 +110110010101 +001110011100 +110101110000 +111001001111 +000010101011 +010011100001 +100101010111 +000111100101 +000011001110 +111001000111 +011001100100 +001110001101 +110101010100 +100101100111 +011001000000 +100000110100 +100011101101 +100100110101 +011000110110 +101110011011 +110101100001 diff --git a/src/main/resources/2021/day4.txt b/src/main/resources/2021/day4.txt new file mode 100644 index 00000000..d567a2bf --- /dev/null +++ b/src/main/resources/2021/day4.txt @@ -0,0 +1,601 @@ +0,56,39,4,52,7,73,57,65,13,3,72,69,96,18,9,49,83,24,31,12,64,29,21,80,71,66,95,2,62,68,46,11,33,74,88,17,15,5,6,98,30,51,78,76,75,28,53,87,48,20,22,55,86,82,90,47,19,25,1,27,60,94,38,97,58,70,10,43,40,89,26,34,32,23,45,50,91,61,44,35,85,63,16,99,92,8,36,81,84,79,37,93,67,59,54,41,77,42,14 + +63 5 10 69 57 +64 88 27 40 76 +59 20 58 90 6 +74 32 72 16 26 +50 17 7 93 94 + +92 77 33 44 14 +35 25 47 91 7 +99 6 56 82 10 +41 93 70 5 85 +81 97 58 96 29 + +24 53 4 8 23 + 0 13 48 47 83 +55 56 72 50 52 +82 33 58 16 11 +91 7 89 9 81 + +86 70 16 4 34 +49 69 37 78 11 +22 47 59 20 38 +33 82 60 63 56 +18 74 36 7 99 + +64 45 72 86 7 +34 50 94 0 85 +15 69 2 26 32 +62 96 41 17 78 +63 5 99 79 47 + +62 63 24 37 50 +89 80 40 41 13 +32 64 95 93 66 +45 3 23 78 48 +60 26 31 61 99 + + 6 63 66 67 15 +33 43 62 95 89 +72 61 60 2 10 +29 7 9 50 18 +28 36 3 53 30 + +91 4 57 74 66 +49 36 54 7 89 +33 65 59 14 92 +63 42 0 20 11 +64 32 96 18 58 + +85 59 33 18 99 +90 4 1 51 35 + 2 57 9 5 78 +30 53 25 23 80 +74 76 20 19 21 + + 5 42 50 72 90 +58 63 49 17 31 +39 76 8 19 41 + 9 59 61 23 54 +91 57 18 70 69 + +90 6 36 71 78 +73 75 56 43 35 +92 31 21 47 86 +69 10 52 80 55 +68 30 22 45 34 + + 4 15 88 6 38 +46 37 34 23 91 +50 98 89 3 79 +90 93 60 56 20 +40 8 30 69 1 + +13 62 39 56 78 + 6 7 17 94 5 +44 77 76 81 20 +91 64 34 99 45 +63 37 3 2 66 + +57 19 63 59 8 +83 51 58 21 4 +54 61 56 9 95 +92 52 84 67 66 +80 34 1 97 69 + + 0 95 89 40 51 +58 90 97 85 61 +64 47 10 37 26 +19 63 7 71 81 +20 25 57 55 21 + +72 6 39 97 58 +50 63 2 46 86 +73 12 59 37 66 +93 77 47 34 67 + 5 4 98 51 48 + +96 5 17 68 73 +55 13 88 3 52 +95 62 18 83 63 +31 15 99 20 93 +29 50 0 74 22 + +11 84 79 92 67 +36 23 76 14 80 +82 72 53 3 85 +46 71 89 25 40 +51 81 29 0 65 + +68 24 96 87 5 +53 10 95 89 81 +88 80 23 12 50 +65 16 45 29 62 +33 97 91 60 43 + +36 77 68 20 51 +93 71 28 70 97 +10 9 16 15 67 +42 78 62 34 38 +60 74 18 91 53 + +65 35 40 34 71 + 0 84 13 81 95 + 2 31 46 24 76 +67 28 83 63 25 +62 93 10 14 68 + +17 36 72 65 49 +29 9 22 42 58 +76 20 57 3 54 +13 37 88 62 24 +66 78 55 30 48 + +55 18 97 40 30 +76 69 22 86 98 +48 96 20 65 1 +77 45 91 82 25 +56 70 66 34 58 + +15 59 37 69 66 +51 16 25 0 79 +76 72 68 70 20 +95 33 82 27 52 +53 65 40 45 92 + +65 18 54 9 28 +47 11 84 89 71 +52 96 83 57 86 +55 0 56 72 20 +26 19 81 60 64 + +97 28 89 55 11 +33 92 50 86 79 +81 37 0 94 64 +44 76 68 58 26 +57 65 60 78 93 + +62 4 55 50 74 +86 46 89 20 68 + 1 52 78 73 19 +14 10 0 40 28 +69 35 26 22 7 + +29 15 9 27 8 +98 22 69 14 44 +75 24 66 63 90 +62 72 87 32 31 +26 59 85 82 77 + +90 42 40 10 48 +73 8 57 18 29 +67 76 5 72 93 +43 27 28 82 80 +62 41 36 61 21 + +25 64 69 6 65 +40 36 16 81 34 +63 38 80 55 29 +20 50 90 21 72 + 4 17 83 27 92 + +96 89 9 62 78 +18 47 82 80 73 +75 38 51 3 50 +48 19 99 54 6 + 4 28 63 98 43 + +37 68 13 30 23 +82 14 65 60 27 +43 74 62 46 99 +80 26 15 9 20 +58 44 92 76 64 + + 2 80 99 17 43 +37 48 65 52 40 +81 90 83 78 72 +77 21 56 66 68 +92 22 10 61 49 + +72 27 88 7 57 +51 73 31 55 23 +39 48 12 91 2 +92 42 71 93 4 +26 38 36 22 75 + +37 2 9 10 52 +33 45 11 67 25 +31 6 5 79 14 +70 39 99 8 81 +65 87 83 68 77 + +54 89 78 49 63 +39 33 27 98 28 +79 61 20 2 25 +92 12 13 29 30 +51 77 94 38 46 + +28 87 30 75 9 +48 8 23 60 89 +79 2 21 18 6 +25 69 24 15 71 +44 36 59 31 68 + +16 0 69 19 9 +68 15 90 8 87 +75 21 12 97 39 + 5 83 55 23 72 +43 60 58 13 76 + +53 29 98 73 13 +58 30 10 68 21 +32 81 66 6 82 +97 45 15 7 92 +19 75 90 36 67 + +66 14 39 62 89 +94 42 20 46 48 + 0 7 92 4 86 + 3 84 60 37 55 +27 64 1 30 82 + +78 82 57 44 47 +86 11 62 52 99 + 7 70 17 60 15 +45 19 4 91 75 + 3 6 24 94 81 + +38 2 59 51 17 +76 64 19 78 7 +55 42 39 47 56 +79 65 37 57 40 +53 66 73 83 68 + +38 49 65 79 82 +15 63 53 32 21 +48 1 3 81 69 +94 87 20 6 59 + 8 50 96 71 76 + +17 28 41 24 69 +20 96 9 57 85 +70 15 53 38 52 +79 84 37 73 64 +40 30 25 56 1 + +68 11 49 37 46 +24 63 72 35 29 +92 62 89 73 28 +64 58 9 3 39 +13 45 10 19 20 + +54 41 49 33 60 +85 56 0 77 51 +81 12 13 20 27 +36 24 69 39 80 +14 83 57 50 91 + +19 68 61 56 11 + 3 74 6 25 22 +71 10 21 7 29 +92 12 51 84 30 +41 72 85 36 91 + +16 86 37 88 22 +48 18 4 89 55 +58 83 44 7 43 +28 76 15 11 35 +81 52 29 23 64 + +52 42 98 0 31 +92 47 41 87 33 + 6 35 69 44 17 +91 50 89 75 3 +57 61 81 60 21 + +40 86 78 2 58 +76 73 31 19 14 +50 21 53 83 45 +68 9 22 70 69 +54 1 85 90 44 + +13 20 96 89 22 +85 62 19 99 66 +18 46 28 14 39 +12 21 34 1 81 +40 77 25 4 7 + +21 76 60 10 9 +34 29 59 48 40 +30 2 36 82 66 +12 95 80 72 58 +74 3 46 37 49 + + 6 30 25 12 22 +33 65 4 89 59 +86 94 70 49 16 +11 76 66 84 45 +50 31 46 73 36 + +89 4 99 23 84 +72 90 83 44 20 +33 66 91 35 26 +81 85 24 10 55 +45 43 7 78 53 + +55 62 19 44 63 +12 90 77 28 7 +80 92 15 41 11 +58 24 47 66 82 +48 88 37 60 46 + +48 16 86 94 14 +22 43 46 67 1 +91 88 49 79 28 +19 12 35 85 42 +13 26 68 95 97 + +23 67 33 85 82 +21 71 84 8 58 +20 41 53 22 99 +92 89 59 16 19 +79 93 39 83 80 + +98 96 24 47 15 +79 97 19 64 84 +62 91 38 30 65 +74 25 92 16 50 +51 41 34 18 35 + +55 9 27 95 90 +31 11 50 84 71 +37 61 62 60 88 +24 94 29 42 77 +17 83 47 74 91 + +74 19 3 13 29 +48 17 26 42 22 + 9 25 8 55 38 +33 52 90 84 39 +82 50 60 41 35 + +33 7 28 66 21 +98 32 41 81 19 +46 34 10 50 47 +20 68 2 93 25 + 5 85 69 53 39 + +91 83 59 37 8 +51 39 81 48 19 +55 86 73 54 20 + 5 7 18 1 36 +44 75 43 76 23 + + 6 38 71 57 77 +95 75 0 32 5 +64 41 51 91 30 +99 79 8 16 55 +88 97 53 47 85 + +58 23 14 93 59 +67 47 49 2 24 +75 92 31 52 29 +30 7 10 40 55 +20 19 35 72 84 + +75 6 67 76 13 +18 32 27 17 71 +60 4 48 53 84 + 8 23 33 91 68 +24 42 56 50 45 + +52 55 68 62 89 + 9 64 14 58 50 +46 8 94 12 24 +72 47 42 76 61 +97 40 25 7 31 + +13 83 14 29 58 +70 33 28 71 9 +16 90 45 30 99 +84 0 41 79 51 +60 55 35 31 57 + +93 21 42 67 20 +88 73 40 9 1 +92 58 15 83 57 +30 86 36 97 89 +38 22 72 37 24 + +37 38 78 93 50 +44 65 52 54 79 +73 27 6 35 91 + 8 26 63 7 12 +25 17 60 4 14 + + 0 30 70 99 23 + 2 75 51 10 87 +12 91 4 69 8 +81 62 26 72 33 +31 17 46 73 96 + +53 44 78 46 19 +40 85 77 98 50 +71 30 68 0 73 +31 43 83 92 6 +52 45 11 37 1 + +91 67 8 35 36 +23 52 51 83 70 +92 32 27 72 16 +63 54 75 38 97 +45 96 11 13 79 + + 2 62 8 53 3 +63 94 81 61 25 +10 91 9 87 84 +85 59 80 54 0 +43 77 21 89 75 + +12 34 29 68 14 +77 81 67 15 9 +17 85 26 30 86 +33 10 31 23 69 +59 42 24 88 89 + +14 80 84 22 23 +85 93 83 91 6 +57 27 51 95 46 +67 1 24 76 86 +55 19 94 8 61 + +87 42 82 81 98 +43 8 51 92 60 +17 14 96 36 34 + 2 19 70 15 78 +93 35 74 53 3 + +53 34 22 41 59 +58 18 30 71 37 +60 8 74 1 5 +96 52 87 17 85 +57 31 24 72 32 + +58 51 98 28 29 +81 76 49 24 60 + 3 33 22 57 86 + 1 67 46 20 56 + 5 16 2 8 6 + +67 51 43 89 94 + 4 96 50 9 8 +22 87 77 38 35 +39 37 17 59 32 + 5 25 26 83 81 + +15 12 6 27 76 +80 70 87 36 55 +69 35 91 98 18 +89 59 92 5 29 +84 10 86 63 39 + + 3 94 38 93 28 +88 57 42 97 14 +89 36 35 85 9 + 5 29 51 31 69 +46 10 25 0 15 + +87 46 49 60 22 +30 64 93 20 66 +95 86 71 21 11 + 0 58 53 18 97 +62 63 3 1 96 + +56 86 71 30 36 +19 27 16 94 53 +46 81 25 44 55 +75 7 97 76 96 +93 79 22 78 50 + +30 14 68 16 59 +23 60 77 37 4 +22 43 53 34 81 + 7 54 38 39 96 +25 86 64 46 44 + + 2 72 69 90 58 +50 77 16 0 14 +75 1 92 66 29 +71 59 54 67 4 + 3 53 49 9 46 + +21 22 25 42 7 + 4 95 82 91 27 +29 33 30 64 61 +74 80 26 83 70 +31 88 93 52 96 + +51 45 43 70 87 +48 77 27 53 19 +41 83 17 99 49 +94 59 95 58 55 +75 86 44 91 82 + +64 88 91 68 19 +57 60 80 46 98 +20 4 38 32 69 + 8 9 22 70 39 +85 28 97 2 71 + +65 42 46 75 48 +26 66 97 16 74 +51 67 94 89 4 +61 9 54 22 2 +82 8 83 5 90 + +18 51 61 57 11 +41 79 30 78 69 +75 14 81 40 88 +93 76 25 64 47 +24 34 94 46 89 + +74 8 3 64 59 +67 49 26 32 83 +85 0 5 71 90 +16 27 81 98 56 +79 23 76 20 43 + +37 6 24 16 69 +41 82 51 4 35 +79 94 99 42 12 +30 81 60 3 36 + 8 22 11 32 48 + +68 9 1 47 21 +61 55 5 19 73 +29 0 48 4 31 +63 50 93 15 72 +39 98 57 70 65 + +34 55 82 26 10 +62 85 68 69 36 + 5 46 54 50 17 +86 95 72 49 29 +76 91 43 37 97 + +41 76 5 33 59 +81 51 99 86 34 + 0 39 64 27 83 +40 69 37 91 45 +55 49 54 9 61 + +92 34 81 10 80 +64 85 69 28 66 +89 93 22 45 7 + 8 35 90 16 87 + 4 78 44 13 67 + +30 21 24 26 40 +59 17 4 47 73 +10 31 88 12 29 +56 98 69 2 7 +13 58 91 55 36 + +25 28 69 4 19 +45 62 32 16 98 +20 88 6 97 18 +91 71 10 80 31 + 1 66 89 12 21 + +85 34 16 30 71 +47 15 46 24 61 +79 69 23 38 96 + 0 14 80 97 86 +48 92 22 26 98 + +96 94 98 27 56 +64 83 46 30 5 + 3 43 70 67 21 +62 0 92 1 65 +36 26 35 61 76 diff --git a/src/main/resources/2021/day5.txt b/src/main/resources/2021/day5.txt new file mode 100644 index 00000000..0d0563de --- /dev/null +++ b/src/main/resources/2021/day5.txt @@ -0,0 +1,500 @@ +777,778 -> 777,676 +500,510 -> 378,510 +441,657 -> 441,638 +724,480 -> 724,778 +702,85 -> 44,85 +973,961 -> 28,16 +913,125 -> 483,125 +714,895 -> 870,739 +273,774 -> 273,795 +623,450 -> 623,616 +157,49 -> 987,879 +430,775 -> 382,775 +58,938 -> 718,278 +290,366 -> 604,680 +75,252 -> 760,937 +46,947 -> 788,205 +731,197 -> 28,197 +25,15 -> 964,954 +317,440 -> 66,691 +166,427 -> 544,805 +686,800 -> 50,164 +858,569 -> 447,569 +596,50 -> 596,327 +739,218 -> 739,278 +382,852 -> 382,960 +11,984 -> 970,25 +911,390 -> 790,511 +739,299 -> 739,254 +989,172 -> 989,567 +36,335 -> 249,335 +60,900 -> 121,900 +299,380 -> 299,178 +701,932 -> 701,224 +626,282 -> 641,282 +83,532 -> 83,91 +246,125 -> 95,125 +73,446 -> 308,446 +902,907 -> 26,31 +841,298 -> 841,547 +264,737 -> 974,27 +170,199 -> 170,120 +135,428 -> 319,244 +431,240 -> 431,691 +406,935 -> 889,935 +192,526 -> 192,82 +236,54 -> 236,574 +667,369 -> 667,559 +501,42 -> 620,42 +130,973 -> 208,973 +213,639 -> 542,639 +943,266 -> 247,962 +545,864 -> 423,864 +252,698 -> 359,698 +314,501 -> 314,948 +203,974 -> 472,974 +947,125 -> 175,897 +956,544 -> 512,544 +862,264 -> 549,577 +606,138 -> 606,862 +239,123 -> 902,786 +201,643 -> 201,473 +916,375 -> 916,807 +10,10 -> 988,988 +490,659 -> 490,559 +72,66 -> 967,961 +215,225 -> 215,281 +930,856 -> 203,856 +172,481 -> 172,23 +867,684 -> 349,166 +843,45 -> 843,971 +250,779 -> 884,779 +973,464 -> 973,794 +543,868 -> 39,364 +968,424 -> 968,289 +470,489 -> 936,489 +411,573 -> 411,206 +120,691 -> 120,401 +134,649 -> 412,649 +452,203 -> 452,597 +155,604 -> 155,278 +914,854 -> 685,854 +38,972 -> 975,35 +153,403 -> 418,403 +731,152 -> 295,588 +242,560 -> 513,289 +930,619 -> 506,195 +547,320 -> 899,320 +237,368 -> 479,126 +417,842 -> 26,842 +213,581 -> 506,288 +741,597 -> 742,596 +79,440 -> 79,108 +424,946 -> 985,946 +535,833 -> 716,833 +249,328 -> 772,328 +616,905 -> 981,905 +46,877 -> 227,877 +841,770 -> 747,770 +202,44 -> 633,475 +556,354 -> 556,829 +617,864 -> 129,376 +318,310 -> 318,927 +259,300 -> 259,485 +167,482 -> 167,265 +349,184 -> 885,184 +616,199 -> 921,199 +710,162 -> 710,373 +499,87 -> 499,214 +905,51 -> 258,51 +134,739 -> 858,739 +879,428 -> 496,45 +208,599 -> 208,908 +68,225 -> 268,225 +581,456 -> 86,456 +898,318 -> 278,318 +84,910 -> 940,54 +344,206 -> 798,660 +51,75 -> 909,933 +783,780 -> 94,91 +907,935 -> 808,836 +556,736 -> 556,592 +39,611 -> 859,611 +29,73 -> 29,438 +898,390 -> 898,518 +777,647 -> 163,33 +144,962 -> 523,962 +827,676 -> 469,318 +267,647 -> 360,647 +742,438 -> 660,438 +214,76 -> 214,873 +550,177 -> 923,550 +182,191 -> 329,191 +765,737 -> 765,118 +387,322 -> 895,322 +174,785 -> 714,245 +733,453 -> 852,453 +497,136 -> 131,502 +574,931 -> 574,568 +282,198 -> 282,412 +971,324 -> 940,355 +827,358 -> 130,358 +954,726 -> 311,83 +207,195 -> 936,195 +42,935 -> 921,56 +955,46 -> 35,966 +627,361 -> 627,888 +37,202 -> 91,202 +697,599 -> 155,57 +227,264 -> 285,264 +50,790 -> 797,43 +717,693 -> 88,64 +145,234 -> 628,234 +358,791 -> 835,791 +765,739 -> 765,888 +900,204 -> 581,204 +544,789 -> 367,789 +508,424 -> 689,424 +23,964 -> 976,11 +404,728 -> 404,949 +327,891 -> 327,431 +596,204 -> 596,95 +686,201 -> 686,982 +132,836 -> 132,11 +574,434 -> 574,862 +41,60 -> 936,955 +283,246 -> 283,11 +29,226 -> 962,226 +483,916 -> 483,562 +962,913 -> 131,82 +455,316 -> 729,42 +858,503 -> 165,503 +795,68 -> 388,475 +697,477 -> 986,477 +932,633 -> 932,114 +376,730 -> 270,730 +598,672 -> 833,672 +69,46 -> 935,46 +178,95 -> 862,779 +633,73 -> 34,672 +488,690 -> 517,661 +784,450 -> 784,986 +955,560 -> 955,760 +651,959 -> 172,480 +406,330 -> 406,439 +955,737 -> 987,737 +194,272 -> 843,921 +18,553 -> 93,553 +422,387 -> 249,387 +318,79 -> 494,79 +181,814 -> 709,814 +63,62 -> 987,986 +636,357 -> 162,357 +973,15 -> 27,961 +444,415 -> 58,415 +884,531 -> 447,968 +320,928 -> 73,928 +154,357 -> 426,357 +200,482 -> 367,315 +505,872 -> 505,861 +314,432 -> 502,244 +912,676 -> 912,618 +683,590 -> 881,788 +761,708 -> 761,758 +40,941 -> 543,438 +847,370 -> 801,370 +701,297 -> 619,297 +140,618 -> 725,618 +72,24 -> 968,920 +767,396 -> 434,63 +710,918 -> 213,421 +917,770 -> 92,770 +20,979 -> 987,12 +909,62 -> 152,62 +932,987 -> 56,111 +460,382 -> 797,719 +518,388 -> 964,388 +456,299 -> 456,15 +84,783 -> 786,783 +982,669 -> 58,669 +140,156 -> 140,130 +613,264 -> 613,582 +267,636 -> 267,805 +141,631 -> 762,631 +575,26 -> 243,358 +318,900 -> 704,514 +118,914 -> 118,757 +952,846 -> 99,846 +673,353 -> 673,633 +422,130 -> 228,130 +738,52 -> 717,73 +307,307 -> 126,307 +484,161 -> 942,619 +576,886 -> 52,362 +375,297 -> 505,297 +950,82 -> 243,789 +411,57 -> 411,844 +879,137 -> 879,334 +483,703 -> 483,213 +192,24 -> 74,142 +561,286 -> 263,584 +493,121 -> 493,604 +715,576 -> 715,945 +238,258 -> 461,258 +331,470 -> 851,470 +435,22 -> 435,273 +315,377 -> 135,557 +128,195 -> 794,861 +391,143 -> 391,580 +33,680 -> 814,680 +611,50 -> 611,79 +650,28 -> 650,57 +196,538 -> 622,964 +333,222 -> 333,457 +313,254 -> 803,254 +508,581 -> 41,581 +40,411 -> 55,411 +458,600 -> 775,283 +105,678 -> 105,345 +397,546 -> 814,963 +915,669 -> 915,793 +773,952 -> 395,574 +884,198 -> 404,198 +408,929 -> 408,623 +123,158 -> 340,158 +418,927 -> 757,588 +304,338 -> 304,990 +505,184 -> 505,28 +938,869 -> 938,181 +11,959 -> 949,21 +232,949 -> 232,660 +479,826 -> 479,69 +323,427 -> 834,427 +460,385 -> 460,94 +199,529 -> 493,823 +767,58 -> 134,691 +901,320 -> 861,320 +31,354 -> 28,354 +335,165 -> 980,810 +586,394 -> 277,394 +106,807 -> 567,346 +814,987 -> 79,987 +166,766 -> 166,990 +883,213 -> 676,420 +458,454 -> 936,454 +878,953 -> 878,682 +868,340 -> 868,503 +778,252 -> 778,159 +237,611 -> 928,611 +221,357 -> 643,779 +793,775 -> 509,491 +719,78 -> 719,878 +764,722 -> 107,65 +696,323 -> 696,816 +49,726 -> 385,726 +730,974 -> 386,974 +973,310 -> 973,748 +12,173 -> 200,173 +164,482 -> 473,482 +802,807 -> 648,807 +104,843 -> 747,843 +154,919 -> 802,271 +919,837 -> 150,837 +882,930 -> 882,752 +717,468 -> 461,468 +925,112 -> 925,329 +714,688 -> 714,66 +35,781 -> 737,79 +644,139 -> 819,139 +340,500 -> 340,195 +10,909 -> 524,909 +914,790 -> 82,790 +962,271 -> 257,976 +352,170 -> 352,239 +666,39 -> 614,39 +854,937 -> 818,901 +88,865 -> 852,101 +121,796 -> 907,10 +836,572 -> 836,649 +976,953 -> 976,54 +566,584 -> 566,216 +927,702 -> 927,703 +896,441 -> 896,741 +20,30 -> 958,968 +934,804 -> 238,804 +562,323 -> 12,323 +789,550 -> 356,550 +906,225 -> 906,886 +513,819 -> 513,157 +129,80 -> 977,928 +37,815 -> 50,802 +325,30 -> 899,604 +183,614 -> 647,614 +497,170 -> 662,170 +598,134 -> 228,134 +57,636 -> 57,390 +11,938 -> 649,300 +911,952 -> 850,952 +35,950 -> 698,950 +161,239 -> 536,239 +359,569 -> 359,238 +711,945 -> 599,945 +866,756 -> 866,987 +674,978 -> 96,400 +254,653 -> 254,590 +655,810 -> 256,810 +942,892 -> 394,344 +895,744 -> 895,408 +549,478 -> 395,478 +162,193 -> 162,527 +347,242 -> 823,242 +251,867 -> 251,77 +167,233 -> 285,233 +189,969 -> 866,292 +847,118 -> 52,913 +206,650 -> 131,725 +34,790 -> 34,824 +872,441 -> 475,838 +242,538 -> 718,62 +456,514 -> 233,514 +384,761 -> 640,761 +782,388 -> 782,949 +928,809 -> 928,618 +461,415 -> 869,823 +240,487 -> 215,487 +970,687 -> 737,920 +63,749 -> 63,493 +274,99 -> 462,99 +941,989 -> 58,106 +142,594 -> 788,594 +120,705 -> 535,705 +680,248 -> 631,248 +544,807 -> 544,737 +972,606 -> 972,706 +846,800 -> 84,38 +836,108 -> 35,909 +691,290 -> 691,377 +979,883 -> 293,197 +766,851 -> 955,851 +737,551 -> 713,551 +247,70 -> 247,592 +855,153 -> 715,13 +432,263 -> 797,263 +495,839 -> 184,839 +544,923 -> 544,45 +887,676 -> 875,676 +922,230 -> 922,900 +168,612 -> 31,749 +505,446 -> 625,326 +504,370 -> 504,511 +943,538 -> 943,784 +653,40 -> 653,712 +613,973 -> 760,973 +152,824 -> 550,426 +335,35 -> 57,313 +614,334 -> 614,938 +399,205 -> 961,767 +387,903 -> 583,903 +218,395 -> 190,395 +935,524 -> 935,402 +821,111 -> 821,372 +609,621 -> 220,621 +503,288 -> 467,324 +641,139 -> 641,369 +420,924 -> 420,532 +344,504 -> 344,698 +340,96 -> 169,96 +835,505 -> 640,700 +464,344 -> 464,133 +946,396 -> 946,10 +295,313 -> 437,171 +330,286 -> 291,286 +608,653 -> 608,613 +360,410 -> 749,410 +115,288 -> 115,334 +915,550 -> 915,858 +902,16 -> 143,775 +201,901 -> 170,932 +37,968 -> 987,18 +40,332 -> 586,878 +271,407 -> 271,858 +836,674 -> 624,674 +308,715 -> 361,715 +733,818 -> 449,818 +23,36 -> 862,875 +278,655 -> 685,655 +924,764 -> 924,913 +479,250 -> 850,621 +312,116 -> 468,272 +10,954 -> 891,73 +554,313 -> 918,677 +846,773 -> 846,476 +681,948 -> 681,961 +418,835 -> 263,835 +352,222 -> 557,222 +782,188 -> 782,11 +609,845 -> 954,845 +866,882 -> 310,882 +479,180 -> 119,540 +278,866 -> 140,866 +874,617 -> 505,617 +491,942 -> 280,942 +584,574 -> 839,829 +475,466 -> 620,466 +652,215 -> 652,85 +906,746 -> 906,824 +381,317 -> 749,685 +294,837 -> 294,165 +450,893 -> 430,893 +99,374 -> 99,864 +919,313 -> 99,313 +187,91 -> 187,304 +654,982 -> 654,324 +662,223 -> 471,223 +848,554 -> 848,13 +14,851 -> 14,855 +438,287 -> 531,287 +611,277 -> 309,277 +630,379 -> 630,99 +621,531 -> 787,531 +12,292 -> 12,11 +18,985 -> 162,985 +49,919 -> 530,438 +329,828 -> 369,868 +725,976 -> 725,267 +826,591 -> 826,562 +249,651 -> 280,651 +467,461 -> 759,461 +720,968 -> 745,968 +414,29 -> 54,389 +204,740 -> 91,853 +694,300 -> 694,393 +517,748 -> 517,231 +465,946 -> 718,946 +252,322 -> 902,972 +109,641 -> 692,641 +973,969 -> 104,100 +302,368 -> 302,914 +385,19 -> 385,192 +460,851 -> 387,851 +310,221 -> 660,571 +684,147 -> 642,147 +371,711 -> 169,913 +810,727 -> 810,559 +428,576 -> 88,236 +381,33 -> 655,307 +37,428 -> 37,68 +11,29 -> 962,980 +880,698 -> 227,45 +624,361 -> 624,351 +487,917 -> 183,613 +725,498 -> 725,889 +880,71 -> 27,924 +856,752 -> 274,752 +541,419 -> 516,419 +803,688 -> 152,37 +835,304 -> 964,304 +480,249 -> 74,655 +742,883 -> 213,883 +943,41 -> 378,41 +869,924 -> 869,563 diff --git a/src/main/resources/2021/day6.txt b/src/main/resources/2021/day6.txt new file mode 100644 index 00000000..ac8320d3 --- /dev/null +++ b/src/main/resources/2021/day6.txt @@ -0,0 +1 @@ +2,5,5,3,2,2,5,1,4,5,2,1,5,5,1,2,3,3,4,1,4,1,4,4,2,1,5,5,3,5,4,3,4,1,5,4,1,5,5,5,4,3,1,2,1,5,1,4,4,1,4,1,3,1,1,1,3,1,1,2,1,3,1,1,1,2,3,5,5,3,2,3,3,2,2,1,3,1,3,1,5,5,1,2,3,2,1,1,2,1,2,1,2,2,1,3,5,4,3,3,2,2,3,1,4,2,2,1,3,4,5,4,2,5,4,1,2,1,3,5,3,3,5,4,1,1,5,2,4,4,1,2,2,5,5,3,1,2,4,3,3,1,4,2,5,1,5,1,2,1,1,1,1,3,5,5,1,5,5,1,2,2,1,2,1,2,1,2,1,4,5,1,2,4,3,3,3,1,5,3,2,2,1,4,2,4,2,3,2,5,1,5,1,1,1,3,1,1,3,5,4,2,5,3,2,2,1,4,5,1,3,2,5,1,2,1,4,1,5,5,1,2,2,1,2,4,5,3,3,1,4,4,3,1,4,2,4,4,3,4,1,4,5,3,1,4,2,2,3,4,4,4,1,4,3,1,3,4,5,1,5,4,4,4,5,5,5,2,1,3,4,3,2,5,3,1,3,2,2,3,1,4,5,3,5,5,3,2,3,1,2,5,2,1,3,1,1,1,5,1 diff --git a/src/main/resources/2021/day7.txt b/src/main/resources/2021/day7.txt new file mode 100644 index 00000000..9ee8ca0f --- /dev/null +++ b/src/main/resources/2021/day7.txt @@ -0,0 +1 @@ +1101,1,29,67,1102,0,1,65,1008,65,35,66,1005,66,28,1,67,65,20,4,0,1001,65,1,65,1106,0,8,99,35,67,101,99,105,32,110,39,101,115,116,32,112,97,115,32,117,110,101,32,105,110,116,99,111,100,101,32,112,114,111,103,114,97,109,10,51,13,782,658,1369,575,693,395,898,552,57,374,155,541,279,428,338,390,0,181,952,350,123,57,483,449,715,672,619,910,254,308,104,682,560,928,406,4,1328,878,36,1397,1111,1586,548,106,284,20,462,1248,1033,229,108,336,888,289,464,757,19,58,1,262,1202,576,101,928,265,781,145,829,1183,1220,181,194,1181,11,792,1542,1330,728,273,493,1753,327,1736,33,1547,750,1623,374,1603,26,116,169,1270,191,11,47,312,136,46,486,1478,28,64,258,74,351,85,105,1137,531,1573,56,676,532,141,955,98,4,541,1546,1771,432,844,228,103,281,404,2,1431,865,1094,12,134,483,152,308,135,135,257,439,5,174,906,148,1000,160,304,190,478,199,395,693,257,84,148,140,76,354,595,1,633,284,24,83,782,1359,1187,351,290,704,23,692,952,1417,192,868,349,56,936,279,277,115,1579,476,261,50,46,1144,568,11,495,170,726,888,548,509,1265,179,93,834,180,143,866,899,292,958,126,1608,1066,327,1149,74,227,346,110,736,592,989,27,12,123,325,650,49,76,0,299,85,261,729,1135,46,479,879,226,1146,781,852,426,184,274,1323,449,419,90,758,378,134,219,333,833,55,59,358,175,293,36,100,27,764,564,188,814,612,299,1057,829,322,235,122,330,280,1397,654,370,320,770,1082,92,1513,1085,563,455,322,664,14,1122,40,381,750,145,381,422,553,227,20,503,368,43,316,71,479,438,222,204,355,67,264,882,1168,416,14,74,371,293,3,1005,237,422,570,1391,818,451,987,529,79,28,664,454,820,1425,50,49,32,486,397,680,1247,207,6,742,84,1362,540,233,1082,847,28,199,84,111,858,362,23,1755,61,144,652,82,1379,372,329,900,255,850,1006,21,1345,252,938,214,394,12,333,354,834,298,132,246,167,140,423,50,35,463,1502,390,672,2,123,78,588,1202,523,1507,64,68,130,511,263,734,112,1463,1097,99,552,53,1189,343,496,16,260,225,1065,855,12,24,88,958,848,173,1131,1639,559,344,216,19,872,287,288,911,775,1722,1049,17,223,375,378,1109,977,520,350,138,376,75,638,284,167,328,467,146,1379,947,149,890,661,56,1339,148,346,693,52,812,963,198,120,1194,231,7,1558,148,545,325,1038,57,52,936,117,531,684,266,687,394,851,1068,571,627,558,172,998,909,1403,358,13,419,0,1247,81,46,647,833,1370,340,287,74,51,691,198,129,257,769,108,163,480,295,150,1944,1897,161,1081,1521,733,351,376,126,191,94,228,76,957,652,487,805,10,347,217,394,1142,725,780,50,234,654,233,119,1035,226,110,757,75,6,13,649,396,13,191,115,368,60,731,485,621,1454,669,518,29,41,495,768,504,209,222,1168,34,1061,1654,973,979,55,802,139,489,386,757,1258,1720,757,994,172,572,266,15,267,830,1105,30,112,188,26,54,205,1206,1193,688,8,1149,1355,983,1073,434,62,1242,264,181,146,8,20,968,418,607,105,22,221,392,127,388,1055,98,241,58,805,2,801,925,241,931,1184,472,563,167,398,388,1290,111,237,1167,332,293,166,51,319,201,40,128,58,90,270,525,1171,1222,1129,1657,525,427,69,340,547,1486,174,383,900,763,160,193,696,896,477,564,558,870,294,868,951,267,178,454,35,1042,627,1451,740,2,107,4,632,114,754,83,244,43,699,83,1001,226,404,956,522,73,505,193,662,548,525,110,1241,415,794,1954,1062,1217,32,98,4,355,143,146,900,369,1418,250,404,703,469,34,326,62,231,564,44,655,511,1139,1010,1438,354,1117,591,118,509,496,1438,232,1179,526,259,984,643,169,165,50,1136,86,702,412,1762,62,219,1089,687,10,29,330,893,1658,732,48,806,1158,854,14,44,548,627,811,41,1212,341,474,943,25,699,204,1449,769,134,23,28,1216,622,1371,366,233,8,29,615,16,166,256,324,169,657,21,854,674,10,1217,1499,1512,88,369,771,60,317,28,1251,14,1318,376,264,55,658,1873,1280,581,850,147,267,1147,150,6,18,1166,331,163,281,773,1284,501,588,1055,681,41,506,270,104,1212,440,181,1177,257,1444,406,111,662,75,28,214,892,349,380,1677,1885,88,398,713,1596,99,541,219,149,1222,455,29,78,217,618,33,94,335,1050,848,958,67,12,61,9,1133,96,151,1057,60,167,324,99,49,1159,571,270,1291,217,276,42,8,20,652,949,134,132,552,365,112,355,952,167,33,1053,994,445,277,652,569,1594,248 diff --git a/src/main/resources/2021/day8.txt b/src/main/resources/2021/day8.txt new file mode 100644 index 00000000..8402be30 --- /dev/null +++ b/src/main/resources/2021/day8.txt @@ -0,0 +1,200 @@ +bg gcdaeb aebg efabdcg abdce cafdbe fcbdeg bdacg gbd cafgd | daecb dcbae gb eabg +eabfdc fgd cegd aedgf fbacgd dceaf dg aebdcgf efbag edgfac | cgebadf dgce deafc acdbfg +dcgfb fe bcgefd adecfb fgdec dfe egadc fadgceb facbgd befg | fdacgb fbcdg dcefbg bcdfg +gebdcf eg ecgabd gabed agdfb dbace fgbacde facebd egd gcea | agdbe gde deg agcebd +efb fgeacbd efcdb adfe fcdabg cabfd dcebg deafcb cgbfae ef | bgcde adcgbf feb adfe +gfdcaeb cdgfa agefc cge cgadfb fegdbc ecda eagbf gdfcae ec | dfbecg degcaf gafcd cge +eacbdg gdfb dfcbge cgd egcdf gd bfedc aedcfb fcgea bdafceg | gd gcbefd begadcf gcd +gafced dcge ec gafcbde efgca agefb defabc eac cafdg dagbfc | fegba edcbagf efacg eca +ebfdc dbfae cbfgd agbecd ced ec dcefbga ecfg fgbdac fbedcg | ce ce cgadfb ecd +dgbfe gcbdaf cbegfa gfcda gadfce gbafedc ecg ce cgdfe aecd | efbcgda fbaegc cdae dcae +fca gcbfed ecadfbg fbgcda gfbdc cfadb afcbeg fa baced fagd | afc fdcbge af badcfg +fdegc defgacb acged gf deacfg cfg fbaecg abcgde dfag befcd | fgc egfdc cdaebg ebgcad +afgdbce ebfcd dfbecg bafged bg bcged egcda fabcde bdg fbgc | dbg gbd dgfeab fdebc +ecdbfa cage cdaegf dfgea cadbfge dbagfc ea dbfge efa cfdga | ea afe fgcad dgfcab +dafge cebf cgebd ecbgadf gbf bf debgf cdgfbe dbgcae gdacbf | defag edbcg becf bgf +gdb egfabc dbcfeg fagd gd abcde gdabfe fabge fcabedg debga | gfda bdg gaebf gbd +cbdfg fbcdgea ebdc bc cgb egfdb facgd egdfcb fbgade facbeg | gcfbd dbce dcbe fbdceg +fg afg agedcb fbdgeac gbfca eacgfd fceab cgabd bfdgac bgdf | bgdf afebgcd dbgafc bdfg +fbagced cegfd feabc dfbacg bg eagb bcaefd abegfc gfb ebfcg | gfb gb gbf gdfce +dfceba bdcaf decab ea bae acebdfg egabfd bdgec cbadgf efac | dcbeg bdceafg ae abcfd +gbfeac deagc geafc efgb agfcdeb dbacgf ecbfa cfg fg edbcaf | cgeda fegb aebfc gf +acgbfed cabdef gfbcde abced ca dbafgc adc fcedb feca aebdg | gecfdb caefdb baedcf cgeabfd +ed bdge dceagb gafceb dce cgaed bdgecfa gabec fdagc aedbfc | acdeg dce dcbega dfgca +ecgdb cbefdg fgbc cfegad cf fce fadeb bdgeac agecfbd fdcbe | fc bgdace cfe edfacg +ed fdbgc cfeab adbgfc adgebf ebdcf fgedbc gecd def dcgaebf | dfagbc bagdcf gdce ed +bgdfa gefbcd fdceab fe fabde edf caebd acfe deagbc dcbfeag | fe fbgedc abecdg fdebac +bafgde cfgba dcbag fcbgae dafc fdgebac da bdcagf gad cgdbe | dfca ad dga fcbgdea +abecgd agbec bcfegd gfacbde ca bafced fabeg acb cgbed agdc | gdceb cfdbage afbdgce begac +cfb gdafb dfcgba facbde cdefabg egdcf gfcbd cb agbc febgda | cb efbacd agbc cb +bdce dgaec dcefga dcaegb fbgae dba db afdbcg fceagbd gdabe | eagbdcf bd febgacd cebd +bad fgeab bd agfdce fcadeb agdec edbfgca dcbg bcegda edgba | dbfeac bfecda bfgecda dbgc +egcbfad gdfec faced ecdgfb decfga fac fa fdag cfbgae baced | gcfaed aedcfg fadg fa +ebfdc gadcfb fcgdea ace abcde ea gecdabf gdcba gbae dacbeg | bfdgac gadcb acbgd ae +gcafe abfged egfadbc fbdec dg gdebfc gfedc dbcg fcbead gde | gdbc faegc gde deagbfc +decabg gdcfa dfbca cgdefab bdegfa afcdeb bdcea bdf bf becf | aebdfc efbc dfegab bf +cdfegb gcdaf fa bfdacge egfa daf gdbac degcf adfecg ebcfda | cedgbaf fdgec afd gadcf +gd bcfde adegfc cegbfd gdc dgbe bdgcf gfaebcd cabfg edacfb | daecgf agbcf caebfd cbedaf +decbf ebcfg egcaf gfaecb gbf gaeb cadegf ecgfabd agdbfc gb | fgb dfcgae cfbge abfgce +bgfed cedgf cegabf gfc fc eagbdc caegd fcad dbaecgf dfceag | fcda efdbg fedgb bfaedcg +dcafbg aebdc fgdcb efc fgedca fe gbfe fdbagec cfebd cebdgf | gbef gfcbd cef ef +fabdgc cbd db cfgda cfabd eacgdf dagb abefdgc fbeac gdfcbe | bfdca ebdagfc dcb bdag +bgdface geabdc edabg aeb agec ea fcagbd acdfbe acdbg bdegf | cbedgaf bgcaed ea abfedc +abfeg fedbag fbegc dcgfbae fbgcd ec abefcg eafdcg fec aebc | gabef ec geabf fcgdb +gdcbef edfbg cg cafgbd gedc gcefb acfegdb eacbf dbfgea gcb | cgb bfdge gefbc agbfdc +gecbfad fdga debagc da bcdgaf abcfd abcfg bad dfebc aefbcg | cbfga dbcaf cfbda fgad +cbegdf cdga bfaecg egdfc dfaceg fbedagc dgeaf ga gfa efbda | gcdaef agf fga efdag +abd dcaf ad cbgefd abcge ecdbfag cbedf fgbade adebc acdebf | bagec dcfa ad dbaec +efcdb cedgaf edfcab dgecb dgbf egd baegc dg efdgbc gbefcda | afcdeb dg cfbdge gcbed +bgdfca bgf bfgac gdfc cedabg gabedf fdbagec cebfa gbdac fg | facbg cfagb abcgd edagbc +ebagdcf ecgbfa bgadf bdfac cfb cbdgfa ceadb cf dgcf fabdeg | cdfab eagfdb gdfeba fc +gbc bc fegac cfgeda gfcba acbe bcegfd abfgd dgaefcb ecbgfa | edfbgc ecab cbfag efagdbc +de gacfeb fabce ecgbdf adbef cbgdeaf aced dfe bfadg fcabde | gbdefca daefb cgedfb cead +dbf edbfa bedcgfa begafc fdega db cadb facebd fcaeb fdcgbe | bcgfea cbefda fabce cabfe +fcb cegbdf fgdeb fcdeb cfdae cgdb cfgabe bc agcbfde aebfdg | gcdb fcb bdefg edfbg +gfead fgdcbe egdfacb gacd cdf ecgfda edacf adbgfe dc ebcfa | agdc fdc geacbfd fagdbe +gcfabe cefag dafg agecd ad decbg fcedgba cedafg cda ebcfda | aebcfd bfdeagc afecg cgbedaf +gcefdb aecbfgd fdegb ga fgcbda eagf aedgb dceba befdga gad | edagfb gad fgae ebgad +abdfge gfcea bcdg decabf gadbf cafgd dc cdf cdabgf dfceagb | gfdca bcagdf eagdbf dfc +ab dfagbe efbacd fba acfdeg efgad eabdgfc bfgea egcbf adgb | dafgbe gbafe ab dagbcef +febgd gbf bf cdebga gdebc bfcedg befc agcedfb cbgafd agfed | bf degaf gcdeb fbg +cegdfa db cafegdb decga gbd aedb gecfb bdcgfa cdagbe becdg | agbdefc cadbefg fgbce db +gcdfabe fcabg gafdc fbagec bf agbce gbf dcebga feab gcfdbe | cegba fb bdcgefa bgf +bfc cedafb bacfg gedcba acdbg dcfbega gdfb acfge bf adbgcf | fb fcb bf dfcbea +bdgca fca edfbac gcdf fc cbgeda afbgc afebg fbdgac gfeadbc | bfcdga adbfce gbedca cf +cf abdfce fabdg bcdgfa fgcb caebdfg cgdfa ecadg cdf gbedaf | fc acdfbg gcbf cfd +dcbea dfgcbe dbefag dcbaf cgfa fa cbgdf bfa begcfda adgfcb | fba abf edcbfg gcbdef +gd fgbacd geda dfecb cdg ceagb ecgdb dceafbg afcgeb cdebga | dacfbge efacgb eadg gdcbe +dfbcae fe bfcgea cefg fgeab fgdab dgecab fdgeabc eagbc aef | ef fbdcaeg aefcbg efa +fdcgb cdeabf gdafcb efcg bfagced fe gfebcd gdbfe feb bgeda | fcgbd fe bdegf gefc +cdgaeb gfeabdc dbfg bdc gcadbf fdbac db gcabf cgeafb eafcd | decfa bdfg bfadcg bd +fdgea ab eafb dafcge cdbaefg eadbgf edacbg fbdgc gfbad gba | ba ab ab gdbfae +bacdfe defab fbeg egfad dfbagce fg febgda gfdbca fga gdaec | dgbfac dcgae bedfa bfeg +feadb cbd fgbedac bdceag bcaf aefcdb cb decbf edgcf bfdeag | fabged egdcf fbgdace bfedca +cdafe agfedbc gebc aeb fegdba cabgfe cfbea dabcfg eb cbgfa | gacbdf egfbcad cadfe gcbe +deg dbecg abdce agcfebd dg defgcb fagecb febgda fcdg ebfgc | debfcg egcbafd cfadbeg cgdf +cebfad efc dbcfg gfdcbe cfdgba agfed ec becg dfgec gedbfac | bgfdc fce gfedc gbfadc +eabdcf bfcgd gabdfe bacfe bde eadc cbdagfe ebcfd ed afegcb | cdea fcgeba cbfgd bafdeg +gcdab bdafge dc aefcdg acbgfd bdfc cdg eagbc gdeacbf fgadb | dfbc gaedfbc bcfd bdcf +efdca gced dbagefc afdeg feagbd fce ce dcabf adcegf efcabg | gfebac ecafd adbegfc abfdc +bfadcg cgfda bc fbcegd fbac ebagd cagbd egcafbd cbd dfgaec | dbeag cb adgcb abdgfc +dgbef gbacf bcde cd degafc dbefag fcd gcdbf bedcfga cebfgd | cd bdcgf ebdc bagcf +gc fegdac dgefa cefab bcafdeg decg fcg dafbcg fegbda ecgfa | ceagf cg gfeca cgf +fbage cfdaegb dcfgb dbae gefacd de cbagef gfbed deg ebgdfa | fgdace fegcba ed dge +geb ebfacg gbeca gcbedf eafb egadc fbcag cfadbg fbecgad eb | fcgab baef bdagcf gfebac +egbcaf fcgab gaebdf bf dcfeabg befc aebgc bgf adcgf bgdaec | gbface dcbage fgb abcge +bgcdae fdab becadf fa beacd fae gebfc fdeagc acfeb ecabfgd | cfbea fdaebgc afe gfdeca +gefc bgadf dcebfa ef gcaebd dcbafeg cgdbef dbcge efd fgbed | acbfde gcbde dbecg fe +cadefb degbc degfb dc dfcabeg ced cabeg cbefga adgcbe agdc | efdbac acgd agebdc ecd +fcgbea gdfceb eadcb gdef gdbcafe fdc fdbec febgc bcgfda fd | cfd dfcegab dcbfga fd +gabdec dgfcea dagbe gf dgf cabgfed bagf befcd bfdage fbdge | gfcabed bfdge fagb abecdgf +abc gdcea cgbfad egcfabd eafb gfceb cfaebg fbdegc gecba ba | cab ab efcdbg efcgadb +bafdcg gdbaef cf abfc dceag fcg fadgb ebfgdac fdcga ecdgbf | gedfbc gadce adcge fcg +afb fadce dafcb ab degfbc abdcefg gabdcf fagbde bdfgc abgc | dfacbeg ebdagf afb acfdb +cfaedb dce edgcbaf bgdfc dcefb ce cbea fdgaec aebfd fgadeb | ced acgdef dfeagbc ce +egfcdb cdfgbea cgafb efgd gcdbae ecdabf bcdge df bfd fcdbg | cdebg df bfd dfebcg +gbecdfa ce ebacd dgafbc bec dfabc baedg bgacfe efdc fdbeca | cfdba ecb ec bgecfa +cadfbe bfgdeac gdeab ebfcg degfb dfag edf degabf gcebad fd | fgbed abcfde becgf begdf +fgd egdbf fgbce gcbaed dabeg dafe fd cagbefd bgedaf abfcdg | fadbgc df dfea adebfg +fdb gcadbfe fd acbde gdcf cfgbe gfbcde bdfec gabcfe ebagdf | dgfebc dgcf bfgec fcbgdea +dgcbf daegfcb ec cfae dbcega cge gbaecf fgbce fagedb befag | fcgbae cbgedaf bcfega fcae +cbadge eg dbecgf edbgf dcabef gecf fgbad ebg edbcf adcbfge | egb eafdbc geb bdfga +afebg gfcaeb bgfdce cfea af bgade fba bcefg edfgcab cadgbf | ebcfg cfageb gdbae egabd +agfdc fegb badfg fbcdgea dfbaec gdeab eafdgb abf bf cdaegb | gadbe cbdfae gdafeb gdabef +cgdeba gadcbf gebca ad afegbdc acgbfe gcade fegcd dac bdea | ebgcad becgda cad dac +becafdg gd cdg cgebfd efbcg cbaed febgac becdg bdfg ecfgda | cbgfe gd adcbe efdcagb +efcb aebgfd aecdfgb gdcaf bfa bf aecfgb cadebg gbfac ceabg | bcfe fb bf fcbe +bgaf bgedcfa ecdbfa cgfea gea baefc ag cgdfe gdcaeb ecfbga | gea ebcaf gfecd ega +adfegb degcb dgb bg adgfceb cdeagf acged gdecab abcg cfdbe | gedac gfbdace becgd ebgacd +af fgcdba bgecf bcfage dgcfeba cfa ebfa cegfbd fecag edgca | bgfaced fa fa cbgef +egbfcda deacb gfdacb fdcabe bgedc ae fade afbcd gfcaeb bae | ea bcaedfg gcaefb deaf +feagd becafg ebca eb geb cdafgb feabg faegcbd cebgdf bcagf | afcbeg afgcb facbgd fgdea +cdbfea efagd bafegc deb dgaecb dbgae db ecagdbf dbgc ecabg | gdaeb bdcg aegdcb agefd +abe cdbgafe cabef befgc fbadce ba facgde adfce bacged badf | abcedg adefc bfad bfda +beafc efdabc fbdgae dcaegbf beadc adcgb ecabfg decf de dea | egbdfa fedc febca fcabe +bd dbeg dcbfeg cgfad dfbgc ebcgf bgecaf cfadeb fbd abfdgce | deagcfb gfdca fbgec decbfg +febadgc df gecfa cebad fdeac fad gadebf dbfc eacdgb cfeadb | bafdcge afcdgeb cdgaebf fda +cgedabf debfga gfe fg gfba gacfed dfbeg bdfea dbcefa bdgec | dceagfb ebdfa dbfeg fadeb +egafcb cg ceg ebgcfad dacbef afedg gcbdea bcfae cefag gbcf | gdfea egc ecgaf fdgbcea +egfba adecfb gc cfg cfdbeg gdac eafgcd dfcea cgefa bfaecgd | gc aecdbf cgf dcbegf +abcfde eafbd dagfebc bgea aefdg dga dgbfac faebgd edcfg ga | eabg eabcgfd abeg deacbfg +ac fbgeda begcfa decgf gfcbad eagcbdf gbaef eabc gac egcaf | eafdgbc fgabdc agc cagfe +abdfg gefba ecafb eg egf febcdag egac beagfc edgcfb acbdfe | bcafed gfe eg febdgc +fgcba bge efgcab bfgae adbecg fcge defgcba bedfa abgcfd eg | ge abdef badef gfcdeab +gdecbf fcbdae acedf acfb cdbae cgdeba fc gafed fgacdbe ecf | bacf bdaecg cebad cfgdbea +abfcde fa afd degba cdgbeaf bafed eadcgf cbaf bdcfe cedbgf | dgbae bfedc fcba aedgbfc +egfadc ec ecbf abgcd gfdbae eac abedf fegacdb bcedfa cdbae | ce cdbga ceabd beagdf +bdcae bfc fb bfcdeg ebacgd aecfgdb bfdcea acdfg cbadf baef | cfbdae fbc abgedc fcb +bf afged adbegc ebfc gbadfce bdf fbcdeg bdcge efgdb fbadgc | cfeb ebcfgad febgcda fbd +fbeda dfega bf becda fba dfcb cagbed abfdec cfagbe aebdcfg | bdcf eacbd abdecg ebafdc +baecfd dg gbdc edagb bdaec ebgaf bcefadg dge eagcbd acgfde | deg dg deg bdacef +degabf gdbef cedg bgfcd dfacegb dcb dbgfec fcagb cedabf dc | gecd bdc gbedf acbfg +efdag ce cabe bcfdga egcad gcbad bdagce cde cdfebga dfgecb | agdec cde dagce cgade +adbgc bgecd ebdgcf dgafbce abcefg gefdab ec edcf dgfbe ebc | geabdfc edagbf efdc ec +deagf bdcf dgc fbegcd deabcfg cd edfgc aebgcd fecgab efcgb | gcefbd fbdc edcfbg efgbc +fbgedc bacged egbacf cbf gaecb fc fdcbeag ecaf cbgaf agdbf | cfagb bgacf eacbgd fgbca +abdeg gdcea bdfega fgadb eb bgfe aecdfb facbdg gdebfca abe | aeb efacdgb eba be +fcdgab cbgfa gc gfdc bcg fageb cbfgdea cgaebd fcdab dceafb | fcabg gc cfdg bcadfe +dfgcb ebgadc efb ecgba becfg feagbd cgebaf ceaf cgfbdea fe | fe bfe bef fcbgd +fabde cbdg gcbae fegbac acfgde edgab bedgacf deg cdbega gd | dcgb cgfeda eafdb egd +gfac bcaegf cf fcb ebcda edcbgaf dgfbce agfeb geafdb cabfe | ecadb fc ebadgf efcba +fbgcad bfcae cf afbeg dcfe cbf cbgaed ceadb bcedaf fabcged | adfegbc fbc ceabd fc +dabf dacbg fgabc db cgdafeb eacbgf cgfdba bgd dgcae gdfceb | bacegf cbgfed bd bd +dfec dgcabe cf bfdca fgadbce bfceag edabc fcb fdabg bcfeda | fbc bdfga efdc cbefag +edcbga fcagb gb dagcef fgeb egcfa dfbagec agb gcfeab dcfba | bcdefag ceagbfd efbg fecga +eacdgf cb ebc afgecb dbeaf cbfea ebfcdga edfgcb egafc acgb | efbad cebaf deafb aedbf +gedba fegdbc dgf deafg gceadf afcdeb gfca fg eadfc dbcfgea | gdacfbe gf faecbd egfad +fe gef adebgc fcde eadgc gfcaed bfcga gafce bdgcfea fbgeda | dabfge cefd afdgce feg +gafd feadbc cfbage ceabdgf edgcb acgbf ad fbadgc acdgb adb | ecbafd cdabg abd bad +gea defga egdc dafbg fbadec fbcega aedcf ge cgafde cabdfge | ge fdceag efcad cdbfea +gecdbfa bgdfca cdbfa ecdfba dgfca cbag ga ebdagf fdgec gaf | fgcdeab bcedaf gbca cgab +defcgb edcfg gcadf fac dgfcae bgafec cfagebd aced ac afdgb | afdcg dgfce fcegbad ac +eab cfdega ab bfgaec gbdfeca gdeca dfecb abgedc ebacd badg | gcafbed ecdagf bcfgade ba +cbd acdfbg bgefda cb fgedbc acfb bafdegc dgafb dbacg gaedc | bc baefgd gbdefa cb +edc gfead edgbfa efbca dc dcgbafe dcgf aecfd gafdce bdcgea | bfeca fbaec bfaec fdaec +dagef efgcbad gcbd ebagfc db eafcbd efcgb deb bedfg cfedgb | cgadbef bd dgacbfe befgd +gcefbad cebgaf efcgb bdge bdafc cdfgea de dfe bfdgec cebfd | dfecb de fdebc fde +fe aef cgbea dbfcga dfagce cbafed cebagdf cgeaf afcdg efgd | fadbce fe aegdcf ef +adbgf dcbfae cebgdaf bf gafde gdcba cdaegb fab gcbf dbcafg | adbgf gbedacf afb gcbaefd +cfagb geb dagbcf edbfa egdfacb efgba fcbeag eadcbg gecf eg | ge cfeg bafde afdbe +ge bfedca adgbf dfceb dfgaec egfbd gfcdbe fcgedba gebc ged | fcbde cgdafeb cdfaebg eg +cdebaf cgdefb fdbcega bdaf fgecad afc af abefc acgeb bcfde | abfd fbad fdecb geabc +edfga dcagb afgcbd facb dbegcf fb bgf gfcbdae gabfd cegadb | fbdcga fbdga fb gfb +dcegba dfb adbec cdbafe df fcbeg dbfce dfabcg edfa cbedafg | fd efgcb cbafed dagceb +afcbe cfa agbef bfgacd cf cgef cbgeafd aefbgc gefbad abcde | gfcabde afc fca fabgde +bacdge dfbc bc ecgfdab edgbcf cgafde gbaef cgefb ecb edfcg | bgdcef bgedafc cdaebgf cbfd +egdc cbdgfa def dcafe de dcgaf abefc dbaegf fdgcea ebgacfd | edgc gbcedaf fgcaed geadcfb +dbac bfdge cgb bcgde cb gbfdcea acfebg bdcgea adecfg edgca | dgeac feabcg aegcd gcb +dcbeg dcgef acdfg efabgcd dfaceb efgb fbcdge aegbcd ef efd | dfbcge bgef gcdef cfdag +dfgb gfc afcde egbcd cfgde cdbegf agbecf gf bcdeag fgdebca | becgd gf edgabc dfcabge +cd bdaefg cabfed cdgfbae bgceda eadbg egdc cabgd bcd fagbc | dbgac fedacb edbfacg dgce +acde faegd dfa bgeaf efacgd fbagcd da bcaefdg ecdgf febdgc | dfegc dgbcef adf cedfag +fag cbafe ecbfag gcbdf edfcba cgea bagefd agdcefb ag bagcf | fcabg ebagcf gdcfb egfbda +badf fgdbace gfced fdcea efacbd ade bcfeag ad cabef dacgbe | afbd edgcf fabd fagebc +ac cfdabge bgac gfade fdbgc dac dbcfge dgcfa dcgfba fbdcae | cbagdf geadf dbcagf adc +dcgba dc gadfeb fcdg baedcf aegbc dbacgf eagbfdc bdc gbdaf | abgcd cbd gbfad gbcea +bfagec fcbeg ce dfagcb bfcade ebc dfegb acgdbfe gcae agcbf | gcae afdgbec bfagc ebagfcd +bgacf gfdabc abgcef fdab cdbag decbg geadcf ebfacdg ad cad | bcaefg cgbdaf bgcaefd agbcf +fbadeg gbe dgcbea gb bcgd bdecgaf agecb cegda cefadg bacef | aedgc cgdb aegcd agdcef +gbecdf aefg eg gec bcefa gcbad egcba cefbad fecgab badfecg | ge afbec edfcba agcfdbe +fbga cedbf ba ebagdf baegdfc aeb bagced gfcdea bfead afged | gdafce ba eba efcdgab +beafdc bca defac ab edfcga edcbg cabed bacgdfe gbadcf eabf | cfdage cafbde efcbda cdgeaf +efg agfcde abgfd efbc cdebg febgd ef cdgbae fegbdc befgcad | ef efbc dfgba fge +acgfb eabgc cfdab fg afg gcef gfdbea becfag beafdcg gebcda | fgec gefc agbefc cgfdeba +adfeg cgdfeab feba fgeabd dgabe egbcfd aebgdc def cgdaf ef | febgda adfgc bgdcea gadfe +cgabf bcg bfgd edbcgaf acegf adbefc ebadcg bg cdbfa cbfdga | eadcbf deagfbc fcage dfbgac +dge ceabdg fdbce cedgb acfdgb cbdagfe gdabc gabe fdaceg ge | eg gde cdebf abecdg +cdage eagcf ade gebcaf faecgd gcbed abdfeg cdaf ad degbcfa | bdgec aegcd adcgbfe feacbg +debg gec dbfegca ge acdeb acgfd abegfc bcadge eadgc efdacb | cfdbae ge cgabef dgafc +gcfabe ed adcgf febac bgdfea dfaec deafcb acfbegd dcbe ade | fcgda dea fcdag de +bdfecg adgbefc dfbeg dabecf agefd gdba ad dfa faecg beadfg | cgfabed abdg cfdgbae adefbc +cdbge cbaegd cde afcdbg cbadegf efgadc agdcb fgcbe ed daeb | ecd ecd dcgeab dbcge +ebcg fbgae fbaec cefbgda ecf bdfac efbadg gfceda cfbage ec | cfdage ec caebgf cgeb +cgfbead fed fgecda dfeagb ecfg efcda cfbda fe dcbgae edacg | fedac efd ceadg cgdae +dgbae acbfedg acbe ceagd gacebd dgbefc cadfg ecg fdbaeg ec | dgfbae ec fedbcag abec +ecbgadf ab afbe fgcba fgcead bgfaec cgafe dgabec dfcgb abg | bafe bfea cgbdea ba +cf dfbce dfc befda abdefcg gaebdc dfacbg cefg gbdec fgbedc | cdf cabgdf cfdabg bgecd +gbadef bcfd gabedfc bd cbfag fegbac gcdab gafbdc dgeac bgd | db dbaegf gaebfd cgaed +ebgafc ecg agfcd ecab dbfgea eagcbfd edcbgf bgaef ce acegf | egbfa bcgfaed abec ce +acdfbg afgdb ea bea ebgda agecfbd bcgde cfgeab aefd defgba | agbed ae fgbaed defa +gcebadf ed bafce bgcfad daefb bfadg aefbgd fgcdeb daeg ebd | cdgfba ecbfdg edbaf gade diff --git a/src/main/resources/2021/day9.txt b/src/main/resources/2021/day9.txt new file mode 100644 index 00000000..c75e9233 --- /dev/null +++ b/src/main/resources/2021/day9.txt @@ -0,0 +1,100 @@ +9821016789345689876545245989999932987654349769898765104567898765634567899765432123788999891045698701 +7632145894234599987432134567898799999979498956789854323458999854323456789898321094567988789234987612 +6543234789345987654321015778987678987898987545678987634569899843212349899987432989679875678949896543 +7654345678956798765692126789854567896587898621567898545698789765103478999876549878998754599998789654 +8765496789987899976989238898763459965456999533478999768789678973212567899989698767898765989987678967 +9876787898798989899879345997652378954345987644567899878893467895323878989998987658999879878876567998 +6987898987689876789768959876543789993234599785698999989912457895456989878987898767899998767765456899 +5798999996579765878957892987984578989356679876789998692101567896569999765496789878989789856312345788 +4569899987498654567898901499876789678967889987896987543213456998778998954345678989775698543201234567 +3659789986329943458999212345987894569898995498945998764394967899989987893236789998664987656312345678 +2545678965439892347895425457998913456789654329434898765989898901298546789959899899543498765453456789 +1234568896798789456789434569879324599998993210125679899876789312987634567892998798992379879567867899 +0123456797987689967897545698765434987876789321234567989865695459896523498921987657989467988789878978 +1294968999996579898998656789876549976745898934545679876974489598765434789439876545878989499999989767 +2989899998765458789998767897997698865434567896898789995432378999876555678998765434567894345678997656 +9878789987654323678999898956798987654323456987899893496321267899989666789019896325679921234899876545 +7654678998765412567899999543459876543212369898934912985432456789999879894323998437789210345799985632 +6543568999654323456999897632498765432101458799329899876543569899985997995439896558994351456989994321 +9854567898798654567896789321239878543212345679498798997854679999874356789998797667895942349878989990 +8767698999899766878925459210123987654323457789989657998965989398765234567895689978999893598769878789 +9878989896999987989412368991234598765454769898878945899876793219876347698924567899998789699754965679 +7989876765788998994323456789947699876767899987653434678987894101987456999213345978987678987643434678 +6799995454567899987434569896899789989878978998762123789098999919598567895101234569876549876542123689 +5678989323456799876565678935678993497989767895421012392129998798439878963214395678987634984321034599 +4895678910167976987676789124569012976593656789532323679245987656522989954323689989876545695432234569 +3434799321279875498787891013689929876432545678993434568956798743210197895434567899987656987954345778 +2223789534569989329898999124567898954321434567989546979767898654321356789545679989998967899876456989 +1012578945678998910949678935678987895910125789879999899898998765432459997676989878999878956987867891 +2123459656989987921234568945989876789891234598767889789999649899543567898787894567898989347898978932 +3436578987899976899499689656798765676799345987655678678998767988999878939898923456957893236799989893 +4547678998999894988988998767998654545678957898743244569759889876789989923969212367898994345689998789 +5789789349987673976567899879876543234569768997542123458945998765678998799654323459999987658789989656 +6998993299876542987678943989995432123456979876543764567896987654589987678976434598989998767898978942 +9887894986987431099789992199986543434567895998654876678929876543498943569996565987878999878987867891 +8656789875698549129897889249897696545678934569765987989210987654567892456789699876569689989876545990 +7645878954987678998965678956798987858789124579876898999391998765678921239999987943489597898787434689 +5434567893298899987654667897899298767891035899989929998989899877889210198789876542123456789632123599 +2123678942109959876543456989999019888989186789891012987678789988994323987678998753244897896521012678 +1034589543212345987632345678978999999679997898752129876567679999995439876567899894556789965432123789 +2137897654323459876321234789567989656567898999643498765434567999987656985498956965678890986563234599 +3246789765434598765430125897679878643456789998756569876323456789598767976989999876899921987784346789 +4557999876545679898641236998789966532345899899867891987212345895459899899876989987999932398765659897 +5768954987786789989752347939899854321236998789878990195323467932378998789765678998989893459876789956 +6879543098899899879765458949998767432347897678989989996934589549999987678954367899876789598987892345 +7889632129978999769878569998769876543456976456799879889895697698789996589895256989865679987798931234 +8996543234567898754989678999654987656567965345898767679789899789678985456789345679654598765679892349 +9987656745678987643298789998743298777678954234987654545699967998799876789895458989765987654566789598 +9898787898789999732109898999856899988989432129876543236789656899893997897987667899879996532345699987 +8789898989898998743412967899987967799996573236987664127894346789965698976498788921989987621234789876 +7678949678987987658583456999998956667899794345698543234993237899876989899329899990199998710123898765 +7543234567896798867678967898999345556798989456987656786789379912999876788934998789239879823939999654 +7654949698965679878789989987893212445987678998998767897895467902987665677945987698998765439898998743 +8969898989754567989896899876789901239879567899999878998996598929876554566899876567899876598767897632 +9997767879543456798945698765899892398768456789898989879987679939875432345789985458912998987656789541 +9986556568912345987656987654356789987654345698767694767998789898954321234679876345793989876545997679 +8765432457893959898979876543245678998743256789654543459899899767899434348789965457989878976434569898 +7654321348999898769899985432123899987654569896543232498789987856798995679892396769876767994323498987 +9874210156789787656789876543012790198767698989692101987679876543456789989921987898765456789434987876 +1984321347896576545699987654125691239988987678989919976567985532345999897899598999876345699949876545 +2995432348954321034989998876234789545699876563479898765459874321248789766998439998765236789899975434 +9876543456796542129878969984345897676798987432365679876398765210123678955987645989854101896789964323 +6987678567897656298767456798767898987987654321234795988987654321234569543499659876543212345899873210 +5498987678998967987658345679878999898999865672347894399598765432345678932398767997654345456998754321 +6399798789899879876543238899989998789999876989456789212459976576556789543459898998785456767898765452 +7987659896789989998630127678999989679899987896567893101969897677679897659569989129886578898969876599 +9876545965678999987621234569999876567789998999879964239898798988989998998998678998997889949658987987 +9987631274798999876542355679987654345678939989998999398787689899196569896987589897698995432347899876 +9999820123457899876543498789898543234599649878987678987654578789023498785876456797549876545756998765 +8987634799598910987656569898765455125989998769876587898743434679234987654212356789432987659867987654 +7898545678919999998767898999874321039878898654322456987652123678949799765101347894321098792998996543 +6999657889209878999898987598765432398767789863210345698543234589998652976432456985432129891239987432 +5878968994398767892999763459876543987654598754321239789654345678999430987543479876549298910129876521 +4659878965943658991987642398989656798543459865434678998766556789987521987674569989998987621234987632 +3234989879892345789986543987898767929432123998765989659877677894987432398989678999887996545345698783 +2123699998789496892397959876789878912949234899876796546989788943596543459998789898656989656957989894 +1014568987678989989998999765678989109898946798987895432399899912987896578959895697645678969898979965 +2123456798545678979899987854569993298767958897699976541034987893498997989543934985434567899789569876 +3654567899434989656789876543458954987658969989549865432123456794579989895432129876323458987693456987 +4765878998745699967895998652367969876549878978934976543234569896989877789541034965434569876532345698 +5878999987658999878944349763456893989689989569019987894345698999998765678952199876545679986321236789 +7989398798867989989431239854567892199789893459198898765467987898987654567893988998756798765445789899 +9895497659978978998532345967678943239897654598976789876879886767897653678999877899767899876556895978 +8789989431299567897644459878789765456998765987865678987998765458975542768998756789898954987667954567 +7655978990123456789765567989899876769999979896754569899019876769654321658789546678969993298778943458 +6544567789236767899899698998910987878989998765443475698998989989643210145678934589654989109899432346 +5432345678945988912998999987891298989878987654321254567897694498754321234789123498799878912954321234 +4321234989856789923987899876789349998969899863210123458976543239865632355678934599988767899765432345 +5430129899767899899876798765478956997658789654431734567899854129876548766789545989877656778998545458 +4321239788978998798995459854357899876545678966545675678998765934987656878999769878965437567987657867 +5432998657899987656789345965456798765434567899656789789219999896798787989659898767894323456898768978 +9659876545699986547893239879767989854323456998767890998909878789899898997545999656789214356789899989 +8769985434589997656792123989979876543412397899878921457898767679989949876434398769898901234589998991 +9898767124567998767891012995989989872101289998989762345987654568975439877321239898987892345678987890 +9949656012369899889952129894398799965432378987899843569898743678954321965452345987676789657989996789 +9239743223456789996543298765219679878554567896987654698769832367895932987565459976585778967898965678 +8949854337567894987964987674101567987669878965498765987654321456789793498976798765434567898987874567 +7698765445878943299899876543212346798778989874349876799776532368995689569987998654323456999876553656 +8549977656989654998754987894334587899899498763256997899897543479434568978999876543213797898765432347 +7632988767899879879543498985455679945954349854367898965999654567925678989456988654435678999897321055 +6543499878921998765432459876576789656891298768478999654298776778936899994345699766576789998765432123 diff --git a/src/main/resources/2022-examples/day10-1.txt b/src/main/resources/2022-examples/day10-1.txt new file mode 100644 index 00000000..f428b7b3 --- /dev/null +++ b/src/main/resources/2022-examples/day10-1.txt @@ -0,0 +1,3 @@ +noop +addx 3 +addx -5 diff --git a/src/main/resources/2022-examples/day10-2.txt b/src/main/resources/2022-examples/day10-2.txt new file mode 100644 index 00000000..37ee8ee1 --- /dev/null +++ b/src/main/resources/2022-examples/day10-2.txt @@ -0,0 +1,146 @@ +addx 15 +addx -11 +addx 6 +addx -3 +addx 5 +addx -1 +addx -8 +addx 13 +addx 4 +noop +addx -1 +addx 5 +addx -1 +addx 5 +addx -1 +addx 5 +addx -1 +addx 5 +addx -1 +addx -35 +addx 1 +addx 24 +addx -19 +addx 1 +addx 16 +addx -11 +noop +noop +addx 21 +addx -15 +noop +noop +addx -3 +addx 9 +addx 1 +addx -3 +addx 8 +addx 1 +addx 5 +noop +noop +noop +noop +noop +addx -36 +noop +addx 1 +addx 7 +noop +noop +noop +addx 2 +addx 6 +noop +noop +noop +noop +noop +addx 1 +noop +noop +addx 7 +addx 1 +noop +addx -13 +addx 13 +addx 7 +noop +addx 1 +addx -33 +noop +noop +noop +addx 2 +noop +noop +noop +addx 8 +noop +addx -1 +addx 2 +addx 1 +noop +addx 17 +addx -9 +addx 1 +addx 1 +addx -3 +addx 11 +noop +noop +addx 1 +noop +addx 1 +noop +noop +addx -13 +addx -19 +addx 1 +addx 3 +addx 26 +addx -30 +addx 12 +addx -1 +addx 3 +addx 1 +noop +noop +noop +addx -9 +addx 18 +addx 1 +addx 2 +noop +noop +addx 9 +noop +noop +noop +addx -1 +addx 2 +addx -37 +addx 1 +addx 3 +noop +addx 15 +addx -21 +addx 22 +addx -6 +addx 1 +noop +addx 2 +addx 1 +noop +addx -10 +noop +noop +addx 20 +addx 1 +addx 2 +addx 2 +addx -6 +addx -11 +noop +noop +noop diff --git a/src/main/resources/2022-examples/day11-1.txt b/src/main/resources/2022-examples/day11-1.txt new file mode 100644 index 00000000..30e09e50 --- /dev/null +++ b/src/main/resources/2022-examples/day11-1.txt @@ -0,0 +1,27 @@ +Monkey 0: + Starting items: 79, 98 + Operation: new = old * 19 + Test: divisible by 23 + If true: throw to monkey 2 + If false: throw to monkey 3 + +Monkey 1: + Starting items: 54, 65, 75, 74 + Operation: new = old + 6 + Test: divisible by 19 + If true: throw to monkey 2 + If false: throw to monkey 0 + +Monkey 2: + Starting items: 79, 60, 97 + Operation: new = old * old + Test: divisible by 13 + If true: throw to monkey 1 + If false: throw to monkey 3 + +Monkey 3: + Starting items: 74 + Operation: new = old + 3 + Test: divisible by 17 + If true: throw to monkey 0 + If false: throw to monkey 1 diff --git a/src/main/resources/2022-examples/day11-2.txt b/src/main/resources/2022-examples/day11-2.txt new file mode 100644 index 00000000..c08542de --- /dev/null +++ b/src/main/resources/2022-examples/day11-2.txt @@ -0,0 +1,74 @@ +Monkey 0: + Monkey inspects an item with a worry level of 79. + Worry level is multiplied by 19 to 1501. + Monkey gets bored with item. Worry level is divided by 3 to 500. + Current worry level is not divisible by 23. + Item with worry level 500 is thrown to monkey 3. + Monkey inspects an item with a worry level of 98. + Worry level is multiplied by 19 to 1862. + Monkey gets bored with item. Worry level is divided by 3 to 620. + Current worry level is not divisible by 23. + Item with worry level 620 is thrown to monkey 3. +Monkey 1: + Monkey inspects an item with a worry level of 54. + Worry level increases by 6 to 60. + Monkey gets bored with item. Worry level is divided by 3 to 20. + Current worry level is not divisible by 19. + Item with worry level 20 is thrown to monkey 0. + Monkey inspects an item with a worry level of 65. + Worry level increases by 6 to 71. + Monkey gets bored with item. Worry level is divided by 3 to 23. + Current worry level is not divisible by 19. + Item with worry level 23 is thrown to monkey 0. + Monkey inspects an item with a worry level of 75. + Worry level increases by 6 to 81. + Monkey gets bored with item. Worry level is divided by 3 to 27. + Current worry level is not divisible by 19. + Item with worry level 27 is thrown to monkey 0. + Monkey inspects an item with a worry level of 74. + Worry level increases by 6 to 80. + Monkey gets bored with item. Worry level is divided by 3 to 26. + Current worry level is not divisible by 19. + Item with worry level 26 is thrown to monkey 0. +Monkey 2: + Monkey inspects an item with a worry level of 79. + Worry level is multiplied by itself to 6241. + Monkey gets bored with item. Worry level is divided by 3 to 2080. + Current worry level is divisible by 13. + Item with worry level 2080 is thrown to monkey 1. + Monkey inspects an item with a worry level of 60. + Worry level is multiplied by itself to 3600. + Monkey gets bored with item. Worry level is divided by 3 to 1200. + Current worry level is not divisible by 13. + Item with worry level 1200 is thrown to monkey 3. + Monkey inspects an item with a worry level of 97. + Worry level is multiplied by itself to 9409. + Monkey gets bored with item. Worry level is divided by 3 to 3136. + Current worry level is not divisible by 13. + Item with worry level 3136 is thrown to monkey 3. +Monkey 3: + Monkey inspects an item with a worry level of 74. + Worry level increases by 3 to 77. + Monkey gets bored with item. Worry level is divided by 3 to 25. + Current worry level is not divisible by 17. + Item with worry level 25 is thrown to monkey 1. + Monkey inspects an item with a worry level of 500. + Worry level increases by 3 to 503. + Monkey gets bored with item. Worry level is divided by 3 to 167. + Current worry level is not divisible by 17. + Item with worry level 167 is thrown to monkey 1. + Monkey inspects an item with a worry level of 620. + Worry level increases by 3 to 623. + Monkey gets bored with item. Worry level is divided by 3 to 207. + Current worry level is not divisible by 17. + Item with worry level 207 is thrown to monkey 1. + Monkey inspects an item with a worry level of 1200. + Worry level increases by 3 to 1203. + Monkey gets bored with item. Worry level is divided by 3 to 401. + Current worry level is not divisible by 17. + Item with worry level 401 is thrown to monkey 1. + Monkey inspects an item with a worry level of 3136. + Worry level increases by 3 to 3139. + Monkey gets bored with item. Worry level is divided by 3 to 1046. + Current worry level is not divisible by 17. + Item with worry level 1046 is thrown to monkey 1. diff --git a/src/main/resources/2022-examples/day11-3.txt b/src/main/resources/2022-examples/day11-3.txt new file mode 100644 index 00000000..78fd058f --- /dev/null +++ b/src/main/resources/2022-examples/day11-3.txt @@ -0,0 +1,4 @@ +Monkey 0: 20, 23, 27, 26 +Monkey 1: 2080, 25, 167, 207, 401, 1046 +Monkey 2: +Monkey 3: diff --git a/src/main/resources/2022-examples/day11-4.txt b/src/main/resources/2022-examples/day11-4.txt new file mode 100644 index 00000000..ce28a32f --- /dev/null +++ b/src/main/resources/2022-examples/day11-4.txt @@ -0,0 +1,69 @@ +After round 2, the monkeys are holding items with these worry levels: +Monkey 0: 695, 10, 71, 135, 350 +Monkey 1: 43, 49, 58, 55, 362 +Monkey 2: +Monkey 3: + +After round 3, the monkeys are holding items with these worry levels: +Monkey 0: 16, 18, 21, 20, 122 +Monkey 1: 1468, 22, 150, 286, 739 +Monkey 2: +Monkey 3: + +After round 4, the monkeys are holding items with these worry levels: +Monkey 0: 491, 9, 52, 97, 248, 34 +Monkey 1: 39, 45, 43, 258 +Monkey 2: +Monkey 3: + +After round 5, the monkeys are holding items with these worry levels: +Monkey 0: 15, 17, 16, 88, 1037 +Monkey 1: 20, 110, 205, 524, 72 +Monkey 2: +Monkey 3: + +After round 6, the monkeys are holding items with these worry levels: +Monkey 0: 8, 70, 176, 26, 34 +Monkey 1: 481, 32, 36, 186, 2190 +Monkey 2: +Monkey 3: + +After round 7, the monkeys are holding items with these worry levels: +Monkey 0: 162, 12, 14, 64, 732, 17 +Monkey 1: 148, 372, 55, 72 +Monkey 2: +Monkey 3: + +After round 8, the monkeys are holding items with these worry levels: +Monkey 0: 51, 126, 20, 26, 136 +Monkey 1: 343, 26, 30, 1546, 36 +Monkey 2: +Monkey 3: + +After round 9, the monkeys are holding items with these worry levels: +Monkey 0: 116, 10, 12, 517, 14 +Monkey 1: 108, 267, 43, 55, 288 +Monkey 2: +Monkey 3: + +After round 10, the monkeys are holding items with these worry levels: +Monkey 0: 91, 16, 20, 98 +Monkey 1: 481, 245, 22, 26, 1092, 30 +Monkey 2: +Monkey 3: + +... + +After round 15, the monkeys are holding items with these worry levels: +Monkey 0: 83, 44, 8, 184, 9, 20, 26, 102 +Monkey 1: 110, 36 +Monkey 2: +Monkey 3: + +... + +After round 20, the monkeys are holding items with these worry levels: +Monkey 0: 10, 12, 14, 26, 34 +Monkey 1: 245, 93, 53, 199, 115 +Monkey 2: +Monkey 3: diff --git a/src/main/resources/2022-examples/day11-5.txt b/src/main/resources/2022-examples/day11-5.txt new file mode 100644 index 00000000..24a64895 --- /dev/null +++ b/src/main/resources/2022-examples/day11-5.txt @@ -0,0 +1,4 @@ +Monkey 0 inspected items 101 times. +Monkey 1 inspected items 95 times. +Monkey 2 inspected items 7 times. +Monkey 3 inspected items 105 times. diff --git a/src/main/resources/2022-examples/day11-6.txt b/src/main/resources/2022-examples/day11-6.txt new file mode 100644 index 00000000..24379809 --- /dev/null +++ b/src/main/resources/2022-examples/day11-6.txt @@ -0,0 +1,71 @@ +== After round 1 == +Monkey 0 inspected items 2 times. +Monkey 1 inspected items 4 times. +Monkey 2 inspected items 3 times. +Monkey 3 inspected items 6 times. + +== After round 20 == +Monkey 0 inspected items 99 times. +Monkey 1 inspected items 97 times. +Monkey 2 inspected items 8 times. +Monkey 3 inspected items 103 times. + +== After round 1000 == +Monkey 0 inspected items 5204 times. +Monkey 1 inspected items 4792 times. +Monkey 2 inspected items 199 times. +Monkey 3 inspected items 5192 times. + +== After round 2000 == +Monkey 0 inspected items 10419 times. +Monkey 1 inspected items 9577 times. +Monkey 2 inspected items 392 times. +Monkey 3 inspected items 10391 times. + +== After round 3000 == +Monkey 0 inspected items 15638 times. +Monkey 1 inspected items 14358 times. +Monkey 2 inspected items 587 times. +Monkey 3 inspected items 15593 times. + +== After round 4000 == +Monkey 0 inspected items 20858 times. +Monkey 1 inspected items 19138 times. +Monkey 2 inspected items 780 times. +Monkey 3 inspected items 20797 times. + +== After round 5000 == +Monkey 0 inspected items 26075 times. +Monkey 1 inspected items 23921 times. +Monkey 2 inspected items 974 times. +Monkey 3 inspected items 26000 times. + +== After round 6000 == +Monkey 0 inspected items 31294 times. +Monkey 1 inspected items 28702 times. +Monkey 2 inspected items 1165 times. +Monkey 3 inspected items 31204 times. + +== After round 7000 == +Monkey 0 inspected items 36508 times. +Monkey 1 inspected items 33488 times. +Monkey 2 inspected items 1360 times. +Monkey 3 inspected items 36400 times. + +== After round 8000 == +Monkey 0 inspected items 41728 times. +Monkey 1 inspected items 38268 times. +Monkey 2 inspected items 1553 times. +Monkey 3 inspected items 41606 times. + +== After round 9000 == +Monkey 0 inspected items 46945 times. +Monkey 1 inspected items 43051 times. +Monkey 2 inspected items 1746 times. +Monkey 3 inspected items 46807 times. + +== After round 10000 == +Monkey 0 inspected items 52166 times. +Monkey 1 inspected items 47830 times. +Monkey 2 inspected items 1938 times. +Monkey 3 inspected items 52013 times. diff --git a/src/main/resources/2022-examples/day2-1.txt b/src/main/resources/2022-examples/day2-1.txt new file mode 100644 index 00000000..db60e363 --- /dev/null +++ b/src/main/resources/2022-examples/day2-1.txt @@ -0,0 +1,3 @@ +A Y +B X +C Z diff --git a/src/main/resources/2022-examples/day3-1.txt b/src/main/resources/2022-examples/day3-1.txt new file mode 100644 index 00000000..f17e7267 --- /dev/null +++ b/src/main/resources/2022-examples/day3-1.txt @@ -0,0 +1,6 @@ +vJrwpWtwJgWrhcsFMMfFFhFp +jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL +PmmdzqPrVvPwwTWBwg +wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn +ttgJtRGJQctTZtZT +CrZsJsPPZsGzwwsLwLmpwMDw diff --git a/src/main/resources/2022-examples/day3-2.txt b/src/main/resources/2022-examples/day3-2.txt new file mode 100644 index 00000000..c6fcad8f --- /dev/null +++ b/src/main/resources/2022-examples/day3-2.txt @@ -0,0 +1,3 @@ +vJrwpWtwJgWrhcsFMMfFFhFp +jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL +PmmdzqPrVvPwwTWBwg diff --git a/src/main/resources/2022-examples/day3-3.txt b/src/main/resources/2022-examples/day3-3.txt new file mode 100644 index 00000000..17a80616 --- /dev/null +++ b/src/main/resources/2022-examples/day3-3.txt @@ -0,0 +1,3 @@ +wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn +ttgJtRGJQctTZtZT +CrZsJsPPZsGzwwsLwLmpwMDw diff --git a/src/main/resources/2022-examples/day7-1.txt b/src/main/resources/2022-examples/day7-1.txt new file mode 100644 index 00000000..d424780a --- /dev/null +++ b/src/main/resources/2022-examples/day7-1.txt @@ -0,0 +1,2 @@ +$ system-update --please --pretty-please-with-sugar-on-top +Error: No space left on device diff --git a/src/main/resources/2022-examples/day7-2.txt b/src/main/resources/2022-examples/day7-2.txt new file mode 100644 index 00000000..09a921e5 --- /dev/null +++ b/src/main/resources/2022-examples/day7-2.txt @@ -0,0 +1,23 @@ +$ cd / +$ ls +dir a +14848514 b.txt +8504156 c.dat +dir d +$ cd a +$ ls +dir e +29116 f +2557 g +62596 h.lst +$ cd e +$ ls +584 i +$ cd .. +$ cd .. +$ cd d +$ ls +4060174 j +8033020 d.log +5626152 d.ext +7214296 k diff --git a/src/main/resources/2022-examples/day7-3.txt b/src/main/resources/2022-examples/day7-3.txt new file mode 100644 index 00000000..5916a41a --- /dev/null +++ b/src/main/resources/2022-examples/day7-3.txt @@ -0,0 +1,14 @@ +- / (dir) + - a (dir) + - e (dir) + - i (file, size=584) + - f (file, size=29116) + - g (file, size=2557) + - h.lst (file, size=62596) + - b.txt (file, size=14848514) + - c.dat (file, size=8504156) + - d (dir) + - j (file, size=4060174) + - d.log (file, size=8033020) + - d.ext (file, size=5626152) + - k (file, size=7214296) diff --git a/src/main/resources/2022-examples/day8-1.txt b/src/main/resources/2022-examples/day8-1.txt new file mode 100644 index 00000000..16d6fbd6 --- /dev/null +++ b/src/main/resources/2022-examples/day8-1.txt @@ -0,0 +1,5 @@ +30373 +25512 +65332 +33549 +35390 diff --git a/src/main/resources/2022-examples/day9-1.txt b/src/main/resources/2022-examples/day9-1.txt new file mode 100644 index 00000000..67a6cf00 --- /dev/null +++ b/src/main/resources/2022-examples/day9-1.txt @@ -0,0 +1,12 @@ +.... +.TH. +.... + +.... +.H.. +..T. +.... + +... +.H. (H covers T) +... diff --git a/src/main/resources/2022-examples/day9-10.txt b/src/main/resources/2022-examples/day9-10.txt new file mode 100644 index 00000000..63f97c75 --- /dev/null +++ b/src/main/resources/2022-examples/day9-10.txt @@ -0,0 +1,21 @@ +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +#......................... +#.............###......... +#............#...#........ +.#..........#.....#....... +..#..........#.....#...... +...#........#.......#..... +....#......s.........#.... +.....#..............#..... +......#............#...... +.......#..........#....... +........#........#........ +.........########......... diff --git a/src/main/resources/2022-examples/day9-2.txt b/src/main/resources/2022-examples/day9-2.txt new file mode 100644 index 00000000..e99ce0b5 --- /dev/null +++ b/src/main/resources/2022-examples/day9-2.txt @@ -0,0 +1,9 @@ +..... ..... ..... +.TH.. -> .T.H. -> ..TH. +..... ..... ..... + +... ... ... +.T. .T. ... +.H. -> ... -> .T. +... .H. .H. +... ... ... diff --git a/src/main/resources/2022-examples/day9-3.txt b/src/main/resources/2022-examples/day9-3.txt new file mode 100644 index 00000000..8f58e320 --- /dev/null +++ b/src/main/resources/2022-examples/day9-3.txt @@ -0,0 +1,11 @@ +..... ..... ..... +..... ..H.. ..H.. +..H.. -> ..... -> ..T.. +.T... .T... ..... +..... ..... ..... + +..... ..... ..... +..... ..... ..... +..H.. -> ...H. -> ..TH. +.T... .T... ..... +..... ..... ..... diff --git a/src/main/resources/2022-examples/day9-4.txt b/src/main/resources/2022-examples/day9-4.txt new file mode 100644 index 00000000..9874df2d --- /dev/null +++ b/src/main/resources/2022-examples/day9-4.txt @@ -0,0 +1,8 @@ +R 4 +U 4 +L 3 +D 1 +R 4 +D 1 +L 5 +R 2 diff --git a/src/main/resources/2022-examples/day9-5.txt b/src/main/resources/2022-examples/day9-5.txt new file mode 100644 index 00000000..e0ed935a --- /dev/null +++ b/src/main/resources/2022-examples/day9-5.txt @@ -0,0 +1,167 @@ +== Initial State == + +...... +...... +...... +...... +H..... (H covers T, s) + +== R 4 == + +...... +...... +...... +...... +TH.... (T covers s) + +...... +...... +...... +...... +sTH... + +...... +...... +...... +...... +s.TH.. + +...... +...... +...... +...... +s..TH. + +== U 4 == + +...... +...... +...... +....H. +s..T.. + +...... +...... +....H. +....T. +s..... + +...... +....H. +....T. +...... +s..... + +....H. +....T. +...... +...... +s..... + +== L 3 == + +...H.. +....T. +...... +...... +s..... + +..HT.. +...... +...... +...... +s..... + +.HT... +...... +...... +...... +s..... + +== D 1 == + +..T... +.H.... +...... +...... +s..... + +== R 4 == + +..T... +..H... +...... +...... +s..... + +..T... +...H.. +...... +...... +s..... + +...... +...TH. +...... +...... +s..... + +...... +....TH +...... +...... +s..... + +== D 1 == + +...... +....T. +.....H +...... +s..... + +== L 5 == + +...... +....T. +....H. +...... +s..... + +...... +....T. +...H.. +...... +s..... + +...... +...... +..HT.. +...... +s..... + +...... +...... +.HT... +...... +s..... + +...... +...... +HT.... +...... +s..... + +== R 2 == + +...... +...... +.H.... (H covers T) +...... +s..... + +...... +...... +.TH... +...... +s..... diff --git a/src/main/resources/2022-examples/day9-6.txt b/src/main/resources/2022-examples/day9-6.txt new file mode 100644 index 00000000..e9234b4b --- /dev/null +++ b/src/main/resources/2022-examples/day9-6.txt @@ -0,0 +1,5 @@ +..##.. +...##. +.####. +....#. +s###.. diff --git a/src/main/resources/2022-examples/day9-7.txt b/src/main/resources/2022-examples/day9-7.txt new file mode 100644 index 00000000..aa6aae7e --- /dev/null +++ b/src/main/resources/2022-examples/day9-7.txt @@ -0,0 +1,167 @@ +== Initial State == + +...... +...... +...... +...... +H..... (H covers 1, 2, 3, 4, 5, 6, 7, 8, 9, s) + +== R 4 == + +...... +...... +...... +...... +1H.... (1 covers 2, 3, 4, 5, 6, 7, 8, 9, s) + +...... +...... +...... +...... +21H... (2 covers 3, 4, 5, 6, 7, 8, 9, s) + +...... +...... +...... +...... +321H.. (3 covers 4, 5, 6, 7, 8, 9, s) + +...... +...... +...... +...... +4321H. (4 covers 5, 6, 7, 8, 9, s) + +== U 4 == + +...... +...... +...... +....H. +4321.. (4 covers 5, 6, 7, 8, 9, s) + +...... +...... +....H. +.4321. +5..... (5 covers 6, 7, 8, 9, s) + +...... +....H. +....1. +.432.. +5..... (5 covers 6, 7, 8, 9, s) + +....H. +....1. +..432. +.5.... +6..... (6 covers 7, 8, 9, s) + +== L 3 == + +...H.. +....1. +..432. +.5.... +6..... (6 covers 7, 8, 9, s) + +..H1.. +...2.. +..43.. +.5.... +6..... (6 covers 7, 8, 9, s) + +.H1... +...2.. +..43.. +.5.... +6..... (6 covers 7, 8, 9, s) + +== D 1 == + +..1... +.H.2.. +..43.. +.5.... +6..... (6 covers 7, 8, 9, s) + +== R 4 == + +..1... +..H2.. +..43.. +.5.... +6..... (6 covers 7, 8, 9, s) + +..1... +...H.. (H covers 2) +..43.. +.5.... +6..... (6 covers 7, 8, 9, s) + +...... +...1H. (1 covers 2) +..43.. +.5.... +6..... (6 covers 7, 8, 9, s) + +...... +...21H +..43.. +.5.... +6..... (6 covers 7, 8, 9, s) + +== D 1 == + +...... +...21. +..43.H +.5.... +6..... (6 covers 7, 8, 9, s) + +== L 5 == + +...... +...21. +..43H. +.5.... +6..... (6 covers 7, 8, 9, s) + +...... +...21. +..4H.. (H covers 3) +.5.... +6..... (6 covers 7, 8, 9, s) + +...... +...2.. +..H1.. (H covers 4; 1 covers 3) +.5.... +6..... (6 covers 7, 8, 9, s) + +...... +...2.. +.H13.. (1 covers 4) +.5.... +6..... (6 covers 7, 8, 9, s) + +...... +...... +H123.. (2 covers 4) +.5.... +6..... (6 covers 7, 8, 9, s) + +== R 2 == + +...... +...... +.H23.. (H covers 1; 2 covers 4) +.5.... +6..... (6 covers 7, 8, 9, s) + +...... +...... +.1H3.. (H covers 2, 4) +.5.... +6..... (6 covers 7, 8, 9, s) diff --git a/src/main/resources/2022-examples/day9-8.txt b/src/main/resources/2022-examples/day9-8.txt new file mode 100644 index 00000000..60bd43b4 --- /dev/null +++ b/src/main/resources/2022-examples/day9-8.txt @@ -0,0 +1,8 @@ +R 5 +U 8 +L 8 +D 3 +R 17 +D 10 +L 25 +U 20 diff --git a/src/main/resources/2022-examples/day9-9.txt b/src/main/resources/2022-examples/day9-9.txt new file mode 100644 index 00000000..1390c680 --- /dev/null +++ b/src/main/resources/2022-examples/day9-9.txt @@ -0,0 +1,216 @@ +== Initial State == + +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +...........H.............. (H covers 1, 2, 3, 4, 5, 6, 7, 8, 9, s) +.......................... +.......................... +.......................... +.......................... +.......................... + +== R 5 == + +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +...........54321H......... (5 covers 6, 7, 8, 9, s) +.......................... +.......................... +.......................... +.......................... +.......................... + +== U 8 == + +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +................H......... +................1......... +................2......... +................3......... +...............54......... +..............6........... +.............7............ +............8............. +...........9.............. (9 covers s) +.......................... +.......................... +.......................... +.......................... +.......................... + +== L 8 == + +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +........H1234............. +............5............. +............6............. +............7............. +............8............. +............9............. +.......................... +.......................... +...........s.............. +.......................... +.......................... +.......................... +.......................... +.......................... + +== D 3 == + +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.........2345............. +........1...6............. +........H...7............. +............8............. +............9............. +.......................... +.......................... +...........s.............. +.......................... +.......................... +.......................... +.......................... +.......................... + +== R 17 == + +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +................987654321H +.......................... +.......................... +.......................... +.......................... +...........s.............. +.......................... +.......................... +.......................... +.......................... +.......................... + +== D 10 == + +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +...........s.........98765 +.........................4 +.........................3 +.........................2 +.........................1 +.........................H + +== L 25 == + +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +.......................... +...........s.............. +.......................... +.......................... +.......................... +.......................... +H123456789................ + +== U 20 == + +H......................... +1......................... +2......................... +3......................... +4......................... +5......................... +6......................... +7......................... +8......................... +9......................... +.......................... +.......................... +.......................... +.......................... +.......................... +...........s.............. +.......................... +.......................... +.......................... +.......................... +.......................... + diff --git a/src/main/resources/2022/day1.txt b/src/main/resources/2022/day1.txt new file mode 100644 index 00000000..335bff59 --- /dev/null +++ b/src/main/resources/2022/day1.txt @@ -0,0 +1,2237 @@ +8462 +6981 +3714 +4409 +8186 +3614 +2218 +7558 +6702 + +2947 +4727 +6396 +5718 +2361 +1970 +1583 +2816 +2995 +6914 +4313 +1401 + +1643 +7815 +2162 +8841 +7671 + +5740 +5471 +4838 +2281 +2784 +4587 +1497 +2074 +1161 +4388 +2233 +4795 +2011 +5438 + +14064 +9646 +2537 + +2064 +2833 +1164 +14379 + +6008 +4327 +4709 +5412 +2745 +5680 +5322 +4375 +4064 +4822 +6523 +6824 +6822 + +12100 +24791 +18239 + +9704 +8218 +9949 +3078 +9407 +3732 +4281 +6727 + +9833 +2549 +5042 +7053 +6116 +9624 +5393 +8359 + +4195 +7869 +15434 +6997 +5776 + +2487 +7843 +2739 +5227 +4088 +6281 +7078 +4291 +5461 +4838 +7936 + +5449 +5754 +4685 +7642 +7244 +4912 + +4020 +18761 +17710 +8736 + +6204 +1295 +3812 +5078 +4627 +3818 +4351 +5202 +2542 +2728 +3036 +5026 +5146 +5771 + +8809 +5364 +22076 + +3846 +2867 +10260 +3321 +7715 +7670 +1326 +5480 + +2613 +1442 +3771 +1692 +6131 +3945 +4591 +5165 +1648 +6084 +4952 +4295 +4390 +3935 + +4403 +6299 +4307 +5329 +4235 +4779 +4498 +6871 +5739 +4102 +6815 +1975 +4056 + +3875 +2650 +5888 +1605 +3972 +4781 +5694 +4150 +5765 +3919 +4260 +6339 +5614 +4597 + +1829 +4292 +4756 +4348 +3051 +2662 +4018 +1498 +3391 +1776 +1919 +3141 +3938 + +17338 +10081 +22228 + +10554 +2454 +2879 +3605 +3717 +5477 +4826 +3133 + +2221 +1431 +3235 +3371 +1364 +2137 +1774 +2015 +5115 +3331 +3588 +3264 +2401 + +5770 +3408 +1153 +6106 +3261 +2801 +3380 +1377 +2126 +5516 +4087 +2353 +1039 +1909 +5374 + +15655 +12356 +7421 +12094 +1776 + +16080 +7634 +4329 + +9409 +10153 +10744 +2145 +5796 +1586 +3622 +3635 + +1314 +5713 +5566 +6397 +2033 +1083 +7096 +6595 +6652 +4872 +4444 + +9731 +12016 +10148 +7358 +10025 +7471 +1346 + +1189 +2777 +4153 +1415 +9311 +6324 +4108 +7104 +8467 + +9326 +3339 +5048 +8225 +1647 +3640 +2922 + +3110 +15978 +17916 + +4502 +4106 +5683 +8061 +6507 +3591 +4560 +4620 +7036 +5762 +1470 + +7613 +12487 +1257 +10687 +4374 + +14169 +1170 + +2310 +10184 +6759 +12955 +3895 +6388 + +19637 +11418 +4728 +10935 + +8856 +9067 +7661 +3795 +3895 +7974 +2340 +3395 +1442 + +4258 +3584 +1935 +2919 +3870 +1078 +4163 +5192 +3363 +2386 +5897 +2922 +1619 +4872 +1903 + +8638 +8492 +1883 +10979 +2715 +3274 +7286 + +10670 +13042 +13137 + +3729 +1312 +1981 +2754 +4417 +1466 +7675 +2290 +5074 +5666 + +13836 +1263 +24451 + +6390 +8913 +12614 +6468 +2541 +13763 + +4673 +7245 +9128 +4712 +3838 +4596 +6620 +5459 +6350 + +4454 +5111 +3862 +1374 +2091 +2522 +6196 +2052 +1399 +6151 +1987 +3678 + +7427 +6633 +1447 +1854 +6601 +3459 +4633 +1339 +2955 +3929 +1057 +1910 + +1896 +2326 +2173 +1062 +5249 +3730 +4479 +6377 +2833 +4106 +4126 +4492 +2132 +4484 + +3465 +5345 +2295 +5946 +2465 +5684 +5573 +4449 +5983 +4863 +3678 +6007 +1249 +1563 +5270 + +3334 +1612 +3210 +1215 +4474 +2893 +4987 +2355 +3912 +5019 +4544 +1446 +3076 +4833 +4889 + +8299 +3042 +5715 +8442 +10294 +3697 +2071 +1482 + +2461 +6281 +3382 +1175 +7048 +2050 +1470 +5249 +7622 +6950 +4962 + +8573 +6266 +12922 +11159 +1493 + +6320 +4365 +7883 + +17708 +18169 +11780 + +8023 +7870 +4647 +6059 +1094 +1888 +8696 +2077 +5882 +3320 + +3180 +5779 +2360 +6811 +7802 +1662 +3157 +7373 +4282 +5282 + +3162 +5081 +1917 +1149 +2325 +6862 +4536 +2776 +6418 +4161 +6919 +1766 +2387 + +11508 +6617 +1521 +6854 +4799 +1463 +11379 + +12419 +4634 +8522 +3323 + +43380 + +1529 +2302 +6234 +5285 +6071 +3741 +6783 +3271 +1451 +3379 +1032 +1218 + +53976 + +3746 +2269 +4878 +5085 +1873 +3582 +2155 +6638 +2804 +3910 +5384 +4865 + +4905 +2648 +2320 +1775 +3803 +1137 +2405 +1974 +1667 +5677 +3687 +2476 +5332 + +2511 +2805 +3088 +5437 +4000 +5283 +6220 +3387 +1962 +2868 +2084 +5740 +4899 +5846 + +20975 +15672 + +11633 +12928 +17372 + +10964 +6326 +3115 +18901 + +2151 +6218 +2619 +8294 +12292 +12179 + +5390 +4373 +3685 +2236 +7107 +11917 +3701 + +5696 +1751 +6613 +6606 +1288 +5362 +6157 +6236 +3649 +4023 + +5290 +7999 +10040 +3338 +7547 +7575 +6369 + +3358 +6414 +2066 +2012 +3849 +1421 +2962 +4607 +3548 +6637 +5759 +4800 +5974 + +3209 +11201 +10317 +7340 +1073 +11610 + +5148 +2081 +5577 +5340 +7634 +4998 +7107 +6923 +1673 + +4809 +6274 +4140 +2993 +3003 +2973 +9914 +1878 + +3190 +5792 +3561 +2917 +4408 +1443 +4373 +1241 +3288 +5703 +4155 +5764 +4857 +5828 +4089 + +7390 +5924 +7987 +2919 +4474 +7700 +5457 +7926 +7539 + +5344 +5739 +4883 +1156 +5896 +5991 +7625 +2118 +3292 +7562 +1820 + +6485 +7804 +6886 +7436 +6163 +2618 +3119 +7144 +6274 +2792 +7602 + +4912 +6024 +5984 +2408 +1685 +1702 +5851 +2756 +1341 +4558 +1073 +4394 +6014 +1395 + +6662 +6573 +6043 +7402 +5790 +6942 +4171 +4043 +3077 +5672 +4984 + +1292 +6545 +2265 +6121 +2385 +2229 +6870 +6579 +1549 +6030 +3423 +1830 +6027 + +6361 +5979 +6532 +7110 +1881 +4659 + +9825 +4176 +4534 +1732 +4816 +6604 +8182 +2391 + +2309 +5266 +5879 +2463 +3636 +4958 +6308 +2091 +2588 +1841 +6899 +5666 + +9351 + +3824 +5754 +2710 +3782 +2784 +4535 +6157 +1055 +3569 +6498 +2679 +2949 +3285 +2519 + +5661 + +4565 +8056 +1975 +6947 +7508 +5570 +3727 +3287 +1794 +4933 +6458 + +6171 +9991 +10533 +6503 +1450 + +18391 +9046 +17384 +18940 + +5583 +5102 +2869 +5328 +2041 +4327 +1656 +2874 +2811 +5765 +4568 +5280 +2770 +1147 +6082 + +1512 +5928 +8631 +3263 +5569 +3693 +5060 +1810 +8327 +2900 + +21146 +13775 +13189 + +2853 +1782 +1461 +2560 +2046 +2773 +2453 +1218 +3545 +6013 +5893 +1853 +1926 +1847 +5914 + +15312 +22899 + +2752 +1253 +1448 +2627 +1161 +3661 +3457 +2992 +4606 +3206 +3145 +3639 +2833 +3687 +2148 + +6668 +3671 +3484 +2000 +2149 +3748 +1256 +3168 +6889 +5046 +6594 + +7437 +5596 +6744 +6863 +7397 +5922 +1897 +4042 +3993 +2569 +2509 +6048 + +10456 +7724 +2668 +4749 + +11329 +5011 +4007 +10189 +6972 + +4514 +1702 +2925 +1828 +8000 +5724 +3567 +1190 + +2949 +7487 +6652 +1472 +5965 +3071 +6990 +3356 +5283 +6487 +1990 + +31016 + +3585 +6168 +6826 +6184 +4985 +6209 +7290 +5732 +4058 +7919 +2152 + +18469 + +5945 +4318 +3986 +3386 +7037 +7149 +5313 +6521 +8266 +6665 + +39430 + +2779 +2507 +4473 +1635 +6487 +6823 +5443 +7274 +4722 +6267 +6421 + +8443 +3747 +3863 +6109 +1369 +8602 +4231 +7029 +4102 +2876 + +1013 +2319 +1800 +5256 +9521 +12068 +2116 + +11032 +1733 +6220 +7666 +3891 +3761 +6096 + +3434 +4984 +3662 +3070 +3560 +4494 +1485 +3460 +3851 +1007 +2615 +5349 +4254 +5248 +2140 + +3469 +2318 +4553 +1058 +1122 +4413 +3672 +6019 +1616 +3557 +3211 +2938 +4390 +2685 +3250 + +1446 +5593 +4857 +2389 +6242 +2724 +1425 +7948 +7140 +7839 +6895 + +5659 +4475 +5467 +1742 +1243 +8125 +2044 +3449 +5796 + +3012 +12758 +2478 +11102 +2615 +7856 + +5170 +5356 +1141 +1513 +1650 +4280 +2441 +4572 +6556 +6821 +3519 +3330 + +4799 +6959 +1737 +1502 +3510 +2089 +6946 +1303 +3574 +6382 + +6579 +2997 +1700 +6006 +1855 +2135 +10659 +2237 + +55371 + +1551 +2828 +3490 +2030 +5126 +4109 +2305 +4994 +4733 +1693 +3338 +3996 +4181 +3896 +1092 + +1846 +4756 +9555 +7994 +8733 +1489 +4585 +5954 +6058 + +48724 + +3025 +6315 +1398 +2563 +2661 +6414 +1230 +1290 +1898 +1493 +1347 +3971 +4248 + +8315 +17843 +17103 + +4287 +2732 +2284 +3036 +6831 +2890 +7588 +7268 +1464 +2247 +1306 + +4480 +1267 +5209 +3558 +5311 +2958 +3054 +4265 +3836 +3300 +1867 +1892 +5756 +3293 + +7569 +9154 +4238 +1586 +7972 +9683 +5373 +3431 +4990 + +9579 +6370 +1128 +3575 +5785 +5055 +8228 +1914 +6012 + +5171 +3810 +3053 +1775 +2437 +1751 +5214 +6904 +3496 +5429 +2340 +5683 +3428 + +27584 +19252 + +23558 +8432 + +8727 +6023 +1708 +1839 +6467 +2494 +6788 +6905 +2160 +2380 + +1023 +2142 +10754 +7460 +5136 + +4181 +1605 +2243 +9554 +4041 +4423 + +38394 + +5137 +2560 +1230 +7342 +5300 +3089 +1281 +7567 +1529 +3628 + +4026 +8121 +4227 +14794 +7567 + +4344 +12998 +5424 +2987 +10128 +8362 + +9373 +5522 +2017 +10260 +5263 +3402 +7981 + +6772 +2092 +6024 +4548 +1229 +2486 +4733 +3112 +4908 +3598 +5839 +2922 +4936 + +7723 +2389 +2100 +4448 +7255 +3430 +2808 +4832 +5848 +7024 + +4664 +4953 +4403 +3171 +6125 +4154 +2921 +3502 +7290 +6371 +2314 +1391 + +4967 +5243 +6186 +3218 +2082 +4625 +5827 +2257 +2186 +5716 +1032 +1796 +2609 +5704 + +66296 + +6973 +4755 +6328 +6720 +8118 +2696 +4449 +3474 +5110 +5852 + +8320 +10410 +7618 +6504 +1892 +9355 +2792 +6286 + +47376 + +1448 +1176 +6150 +3289 +1759 +5919 +2579 +5630 +3798 +6203 +4909 +5294 +1471 +4537 + +7656 +12471 +14457 +11694 +8007 + +3990 +8373 +1412 +1462 +5601 +8555 +8500 +2545 +8920 + +1312 +6198 +2638 +1095 +5201 +4953 +3056 +2526 +3699 +5639 +4583 +4737 +2245 + +7833 +5242 +6384 +7309 +3805 +6525 +6070 +6074 +5899 +2583 + +65699 + +6154 +3691 +1858 +5141 +6915 +2134 +2131 +5295 +4071 +4552 +1753 +6950 +3909 + +2587 +1337 +3790 +3137 +6150 +1698 +3950 +4046 +2308 +3871 +1824 +1533 +1930 +3360 + +10305 +13340 +6892 + +4945 +6137 +10521 +2418 +9791 +7035 +4151 +5497 + +25807 +25417 + +5771 +6122 +4596 +4022 +9682 +4696 +8749 + +1028 +6870 +3606 +4626 +4557 +6908 +5503 +1803 +2561 +2487 +3368 +5319 + +2027 +4102 +5920 +3335 +5804 +3829 +5977 +1592 +2113 +3771 +3938 +3417 +2550 +1980 + +3321 +4002 +1229 +3591 +3851 +1384 +2618 +4049 +3336 +2035 +1231 +2126 +1901 +2834 +5604 + +45987 + +3667 +3442 +2721 +5515 +9294 +4897 +7333 +2518 +4009 + +5686 +2042 +1130 +5463 +2814 +2780 +1037 +5490 +3188 +2882 +3742 +4048 +3203 +1785 + +20148 +14705 + +6293 +1673 +6865 +2414 +6552 +3886 +5944 +6538 +2569 +3770 +7698 + +1588 +2025 +2071 +4336 +4768 +1826 +2939 +3016 +1529 +3092 +1326 +5698 +5864 +4837 +4188 + +9974 +3626 +6637 +6988 +7509 +9460 +7542 +7164 + +5343 +1913 +12824 +13105 +13538 +1114 + +4699 +4692 +4170 +6325 +1634 +4627 +2721 +5309 +3772 +2132 +1894 +5094 +6416 +2492 + +22223 +15163 +3520 + +9437 +25803 + +2519 +7012 +2571 +6251 +1380 +5344 +6362 +2465 +4457 +1071 +5560 +1992 + +5522 +3334 +2597 +2382 +4118 +1624 +6175 +4656 +6525 +6593 +4459 +1349 +1403 + +1443 +7693 +10526 +9927 +9729 +3172 +7632 + +3154 +6472 +3815 +3055 +1009 +8458 +3250 +1864 +6734 +8458 + +3155 +2476 +6384 +2045 +2773 +7447 +7646 +1186 +5360 +4499 +2502 + +9675 +8902 +12054 +9405 +8558 +8901 + +3605 +2465 +9906 +5145 +13502 +9839 + +9207 +7212 +4778 +9929 +6582 +9680 +3349 +1813 + +4483 +15153 +22152 + +24781 +33010 + +19696 + +6451 +5583 +3639 +3565 +7956 +4005 +5236 +3053 +2192 +5485 +3143 + +3990 +1296 +4262 +4493 +4072 +5136 +4507 +4191 +6636 +5514 +5759 +6471 +3567 + +2296 +5998 +6269 +3935 +1929 +3188 +5768 +2547 +1318 +3689 +1161 +3894 +1206 +1304 + +2942 +2195 +5594 +8418 +3600 +6710 +4414 +7753 +1672 +1878 + +6682 +9976 +18511 +17026 + +7606 +3587 +2427 +9258 +8752 +7387 +4096 +3911 +6200 + +4364 +8277 +5476 +1718 +3530 +6895 +4822 +3970 +3368 + +12691 +3502 +4641 +8562 +8062 +5216 + +7316 +7688 +5102 +7950 +4291 +9711 +3202 +7487 + +57056 + +4268 +1730 +3617 +5257 +5760 +3222 +3497 +4891 +1584 +2587 +5954 +3391 +1203 +2673 + +15671 +11805 +1242 + +5560 +1774 +2332 +2068 +6859 +3012 +6677 +6255 +1178 +3695 +5131 +2075 +1398 + +8310 +2657 +1795 +14376 + +4270 +1931 +6894 +5011 +3766 +1028 +1405 +3768 +5249 +3972 +5799 +4704 + +4331 +3682 +1748 +6674 +4191 +4711 +4971 +3329 +5968 +1971 +1533 +5559 + +4569 +5005 +4292 +3541 +4578 +5532 +4163 +2555 +1936 +5767 +1299 +5620 +4897 +5824 + +2350 +3735 +7113 +6094 +7952 +5611 +3634 +8849 +5171 + +7046 +11580 +1720 +1574 +12103 +5747 +5966 + +10027 +6090 +9627 +4738 +9248 +5177 +3622 +5265 + +4617 +8158 +2629 +4317 +8707 +1442 +1944 +3006 +7283 +4939 + +2744 +3616 +1211 +4479 +5857 +6062 +5475 +1369 +7243 +4930 +5514 +3919 + +5938 +2249 +18108 +6713 + +6017 +1815 +2551 +2246 +5082 +3795 +3673 +1083 +5008 +6903 +6492 +1272 +1494 + +5350 +4727 +5366 +1227 +6846 +1355 +5226 +7069 +3365 +4011 +2857 +1696 + +2732 +3684 +5801 +3059 +1099 +5909 +4528 +2645 +2363 +1622 +3335 +2903 +4690 +1443 + +2445 +4940 +4878 +5229 +6686 +5416 +8016 +5249 + +1875 +2976 +3545 +2571 +2691 +5763 +4373 +5126 +5078 +2895 +3976 +1934 +4212 + +1649 +2120 +2801 +1222 +4478 +7415 +7956 +2507 +3464 +1512 +3680 + +3087 +5058 +5726 +4050 +5667 +1709 +4970 +1805 +4369 +3211 +2953 +1847 +5848 +3365 +5717 + +18473 + +2897 +15970 +13899 + +2396 +2432 +4315 +1646 +2933 +3701 +3034 +6228 +4978 +1254 +5964 +4797 +3712 +4613 + +3583 +4652 +2589 +3126 +1356 +3268 +4372 +5851 +3159 +2936 +2568 +1631 +4557 +4254 +5537 + +1796 +1304 +1129 +3237 +7542 +4587 +3158 +3055 +5129 +5981 +3396 + +2326 +2916 +7617 +1438 +1205 +4903 +7842 +6171 +6042 +6076 +8009 + +60341 + +10527 +30521 + +1882 +7475 +4092 +10469 +11258 +2361 +6750 + +7307 +10450 +2273 +3998 +4324 +4453 +5606 + +14605 +8618 +19203 +6177 + +40070 + +13758 +9814 +16312 +14985 +8629 + +20716 + +2344 +9535 +6583 +10900 +12041 +3724 + +3075 +11273 +9002 +9802 +1148 +9197 +10064 + +25216 +11228 +15709 + +21181 +10820 +8812 + +3073 +5764 +8201 +4269 +3302 +1795 +5387 +2618 +7288 +8388 + +24566 + +7608 +1738 +3212 +7028 +6321 +1087 +3361 +1698 +5582 +4314 + +9189 +9689 +7007 +2845 +1086 +9086 +1795 +6550 +7610 + +1139 +4157 +4135 +9875 +7720 +8262 +2666 +7147 diff --git a/src/main/resources/2022/day10.txt b/src/main/resources/2022/day10.txt new file mode 100644 index 00000000..b531dcaf --- /dev/null +++ b/src/main/resources/2022/day10.txt @@ -0,0 +1,146 @@ +noop +noop +addx 15 +addx -10 +noop +noop +addx 3 +noop +noop +addx 7 +addx 1 +addx 4 +addx -1 +addx 1 +addx 5 +addx 1 +noop +noop +addx 5 +addx -1 +noop +addx 3 +noop +addx 3 +addx -38 +noop +addx 3 +addx 2 +addx 5 +addx 2 +addx 26 +addx -21 +addx -2 +addx 5 +addx 2 +addx -14 +addx 15 +noop +addx 7 +noop +addx 2 +addx -22 +addx 23 +addx 2 +addx 5 +addx -40 +noop +noop +addx 3 +addx 2 +noop +addx 24 +addx -19 +noop +noop +noop +addx 5 +addx 5 +addx 2 +noop +noop +noop +noop +addx 7 +noop +addx 3 +noop +addx 3 +addx -2 +addx 2 +addx 5 +addx -38 +noop +noop +noop +addx 5 +addx 2 +addx -1 +addx 2 +addx 30 +addx -23 +noop +noop +noop +noop +addx 3 +addx 5 +addx -11 +addx 12 +noop +addx 6 +addx 1 +noop +addx 4 +addx 3 +noop +addx -40 +addx 4 +addx 28 +addx -27 +addx 5 +addx 2 +addx 5 +noop +noop +addx -2 +addx 2 +addx 5 +addx 3 +noop +addx 2 +addx -25 +addx 30 +noop +addx 3 +addx -2 +addx 2 +addx 5 +addx -39 +addx 29 +addx -27 +addx 5 +noop +noop +noop +addx 4 +noop +addx 1 +addx 2 +addx 5 +addx 2 +noop +noop +noop +noop +addx 5 +addx 1 +noop +addx 2 +addx 5 +addx -32 +addx 34 +noop +noop +noop +noop diff --git a/src/main/resources/2022/day11.txt b/src/main/resources/2022/day11.txt new file mode 100644 index 00000000..f505c2ec --- /dev/null +++ b/src/main/resources/2022/day11.txt @@ -0,0 +1,55 @@ +Monkey 0: + Starting items: 83, 97, 95, 67 + Operation: new = old * 19 + Test: divisible by 17 + If true: throw to monkey 2 + If false: throw to monkey 7 + +Monkey 1: + Starting items: 71, 70, 79, 88, 56, 70 + Operation: new = old + 2 + Test: divisible by 19 + If true: throw to monkey 7 + If false: throw to monkey 0 + +Monkey 2: + Starting items: 98, 51, 51, 63, 80, 85, 84, 95 + Operation: new = old + 7 + Test: divisible by 7 + If true: throw to monkey 4 + If false: throw to monkey 3 + +Monkey 3: + Starting items: 77, 90, 82, 80, 79 + Operation: new = old + 1 + Test: divisible by 11 + If true: throw to monkey 6 + If false: throw to monkey 4 + +Monkey 4: + Starting items: 68 + Operation: new = old * 5 + Test: divisible by 13 + If true: throw to monkey 6 + If false: throw to monkey 5 + +Monkey 5: + Starting items: 60, 94 + Operation: new = old + 5 + Test: divisible by 3 + If true: throw to monkey 1 + If false: throw to monkey 0 + +Monkey 6: + Starting items: 81, 51, 85 + Operation: new = old * old + Test: divisible by 5 + If true: throw to monkey 5 + If false: throw to monkey 1 + +Monkey 7: + Starting items: 98, 81, 63, 65, 84, 71, 84 + Operation: new = old + 3 + Test: divisible by 2 + If true: throw to monkey 2 + If false: throw to monkey 3 diff --git a/src/main/resources/2022/day2.txt b/src/main/resources/2022/day2.txt new file mode 100644 index 00000000..d7d6a83d --- /dev/null +++ b/src/main/resources/2022/day2.txt @@ -0,0 +1,2500 @@ +B Z +B Z +C Z +C Z +B X +C Y +A Y +B Z +A Z +A Y +C Z +C X +C Z +C X +B X +B Z +B Z +A Z +C Z +C Z +C Y +C Z +B Z +B Z +A X +A Y +B Z +B Z +C Z +B Z +B Z +C X +C Z +A Y +A X +A X +C Z +C Z +B X +C X +B Z +A Z +B X +B Z +B Z +A Z +B Z +A Y +C Z +C Z +B X +C Z +A Z +C Z +C Z +C Z +C Z +A Z +B Z +C Z +A Z +C Z +C Z +C Y +A Y +C X +C Z +C Z +C Z +C Z +A Y +C X +A Y +A Y +C X +B Z +A Y +C Y +C Z +B Z +C Z +B Z +B Z +B Z +C Y +B Z +A Y +C Z +C Z +A X +C X +C Z +A X +C Z +C Z +C X +A Z +C Z +C Z +B Z +C Y +A Y +C Y +C Y +A Z +B Z +C Z +C Z +C Z +A Z +C Z +B X +C Z +A Y +C Z +C X +C Y +C Y +B Z +C Z +C Z +A X +C X +C Z +C Z +A Z +B Z +B Z +C X +C Z +B Z +C X +B Z +C Z +B Z +B Z +B Z +B Z +C Y +C Z +B Z +C Z +C Z +C Z +C Z +B Z +C Z +B Z +C Z +B Z +C Z +C Y +C Z +C Z +C X +C Z +C Z +C Y +C Z +C Y +C X +B Z +B Z +C Z +A Z +C Z +C Z +C Z +B Z +C Z +B Z +C Z +B Z +C Z +C Z +B X +B Z +C Z +C Z +A Z +A Z +B Z +C Z +C Z +A Z +B X +C X +A Z +C Z +C Z +B Y +B Z +B Z +A Y +B Z +C Z +C Z +A Y +B Z +C Y +A Z +C X +A Z +A Y +C X +C Y +C Z +B Z +C Z +A Y +B Z +B Z +C Z +C Z +C Z +C Z +C Z +B Z +C Z +A X +C Z +C Z +A Y +C Z +A Y +C Z +B Z +C Z +A Y +C Z +C Y +C Z +B Z +C X +A Y +C X +A Y +B X +C Y +B X +C Z +C Y +C Z +C Y +C Y +B Z +C Z +A Y +C X +C Z +C Z +B Z +A Z +C Z +C Z +C Y +C Z +C Y +B X +C Z +C Z +C Z +C X +A Y +B Z +C Z +C Z +C Z +B Z +A Y +A Z +A Y +B Z +A Z +A Y +B Z +C Z +A Y +A Z +B Z +B Z +B Z +C Z +C Z +C Z +C Z +C Z +C Z +B Z +C Z +C Z +C Z +A Z +A Y +C X +C Z +A Z +C Z +A Y +C Z +A Y +C Z +C Z +A X +C Y +C Z +A X +C X +A X +B Z +C Z +A X +C Z +B Z +A X +C Z +A Y +A Z +C Y +A Y +C Y +A Z +B Z +A Z +B Z +C X +C X +C Z +C Z +B Z +A Y +C Z +A Y +C Z +B Z +B X +B X +B X +A Z +B Z +C X +C Z +A Y +C Z +B X +A Y +C X +B Z +C Z +C Z +C Z +C Z +A Z +B Z +B Z +B X +A Y +C Z +C X +A Y +C Z +C Z +C Z +A Y +A X +B Z +C Z +A Z +C Y +A Z +B Z +A Y +C Z +C Z +B Z +A Y +B Z +A Z +A Y +C Z +A X +C Z +C Z +B Z +C Z +C X +A Y +A Y +B Z +C Z +B X +A Y +C Z +C Z +A X +A Z +C Z +C Z +A Y +C Z +C Y +A Y +A Y +B Z +C Z +C Z +C X +C Z +A Y +B Z +C Z +C Z +A Y +B Z +C Z +C Z +B Z +A Y +B Z +C Z +C Z +C Z +C X +C Z +C Z +C Z +C Y +C X +C Y +C Z +B Z +A Y +C X +B Z +C X +C X +C Z +A Z +C Z +B X +A Y +C Z +B Z +A X +B X +C X +C Z +C Z +B Z +B Z +C Z +C Z +A Y +B Z +A Z +B Z +A Z +A X +C Z +A Z +A Z +B X +A Z +B Z +B Z +A Y +C Y +B Z +B Z +B Z +B Z +C Z +B Z +C Z +B Z +C Y +C Z +C Z +C X +C Z +C Y +C Y +C X +A Y +C Y +B Z +C Z +A Y +A Z +B X +C Z +C Z +A Y +A Y +A Y +C Z +A Z +C Z +B Y +A X +A Y +C Z +A X +B Z +C Z +C Z +B Z +C Z +A Z +C X +C Z +B Z +B Z +C Z +B Z +A Z +C Z +C Z +A Y +B Z +A Y +B Z +C Z +B Z +C Z +B Z +B Z +A Y +C Y +B Z +C Z +A Z +B Z +C Z +C Z +A Z +B Z +C Z +A Y +A Z +C X +B Z +A Y +A Y +C Z +A Z +B Z +B Z +C Z +C Z +C Z +C Z +A Y +A X +C Z +B Z +C Z +C Z +C Y +C Z +A X +A Z +C Z +B X +A Z +B X +B X +A Y +A Y +A Y +C Z +C Z +C Z +A Z +C X +A Y +C Z +B Z +C Z +A X +B Z +A X +A Z +C Z +C Z +C Z +B X +B Z +C X +B Z +C Z +C Z +C Z +A Y +B Z +B Z +C Z +A X +B Z +A Y +C Z +A Y +A Y +C Z +C Z +A Y +C X +C Z +A Y +C Z +B Z +B Z +C Z +C Y +B Z +B Z +C Z +A Y +C Z +B Z +B X +A Y +A Z +C Z +B Z +C Z +C X +A Y +A Z +A Y +B Z +A Z +B Z +A Y +A Y +B Z +C Z +C Z +C Z +A Y +A X +B Z +A Y +C Z +B X +C Z +C Z +A Y +C Z +C Z +C Y +C Z +C Y +B Z +B Z +C Z +C Z +B Z +B Z +B Z +C Z +B Z +B Z +C Z +C Z +C X +C Z +C Z +B Z +B Z +C X +A Y +C Y +C X +B Z +C X +B Z +C Z +A Z +C Y +C Z +C X +B X +A Y +C Y +A X +C Z +C Z +C Z +C Z +A Y +C Y +C Z +A Y +C Z +C Z +B Z +B Z +B Z +C Z +C Z +C Z +C Z +C Z +C Z +B Z +C Z +B Z +C Z +B Z +C Z +C Z +B Z +C Z +C Z +C Z +A Y +C Z +C Z +A X +C Z +C Z +A X +B Z +C Z +A Y +C X +C Z +A Z +C Y +A Y +C Z +B Z +C Z +B Z +C X +C Y +B Z +C Z +C Z +A Y +C X +C Z +C Z +B X +C Z +C Z +C Z +C Z +A Z +A Y +C Z +B Z +C Z +B Z +A Y +B Z +C Z +B Z +B Y +C Z +B Z +A Y +C Z +C Y +C Z +A X +B Z +C Z +A Z +A Z +B Z +A X +B Z +B Z +C Y +C Z +C Z +B Y +B Z +C Z +A Y +B X +B Z +C Z +C Z +C Z +B X +A Y +A Y +B Z +B Z +C Z +B Z +C Z +C Y +B Z +B Z +B X +A Y +A Y +A Y +B X +C Z +C Z +B Z +C Z +C X +B Z +C Z +C Z +B Z +C Z +C Z +A Y +B Z +A Y +C Y +B Z +B Z +B Z +C X +C Z +C Z +C Z +C X +C Z +A X +B Z +C Z +C Z +A Y +B Z +C Z +A Y +C Z +B Z +C Z +C Z +B Z +B Z +C Z +C Z +C Y +C Z +C Y +C X +C Z +C Y +C Z +A Y +B Z +B Z +A Y +B Z +B X +B X +A Z +C Y +C Z +C Z +B Z +C Z +C Z +C Z +C Z +C Y +C Z +B Z +C Z +C Z +C Z +B Z +B Z +C Z +B X +C Y +A X +C Z +A Z +C Y +C Z +C Z +B Z +C Z +C Z +C Z +B Z +A Y +A Z +B X +C X +A Y +A Y +C Z +C Z +C Z +C Z +C Z +C Z +C Y +C Z +C Z +C Z +A Y +A Z +C Z +A Y +C Z +C Z +B Z +B Z +B X +A Y +B Z +C Y +C Z +B Z +A Z +A Y +A X +C Z +B Z +C Z +B Z +B Z +C Z +C Z +C Z +C Z +A Y +A Z +C Z +C Z +A Y +C Y +C Z +A X +B X +B X +C Z +C Z +B Z +A Y +A Y +A Y +A X +C Z +B Z +B Z +B Z +A Y +C Y +B Z +A Z +C Z +B X +C Z +C Z +C X +C X +C Z +A Y +B Z +C Z +A Y +C Z +A X +C Z +B Z +B Z +B Z +C Z +B Z +C Z +A Z +C Z +B Z +C Z +A Y +C Z +A Z +C Z +C Y +B Z +A Z +C Z +B Y +A Z +C Z +A X +C Z +B Z +A X +C Z +B Z +C Z +C X +A Y +C Z +B Z +A X +C Z +B Z +C Z +A Y +C Z +C Z +C Z +B Z +C Y +C Z +C X +A Z +C Z +C Z +B Z +C Z +C Z +C Z +A Z +C Z +A Y +A X +C Z +A Y +C X +C Z +B Z +C Z +B Z +B Z +A Y +B Z +A Y +A Y +C X +B Z +C Z +C Z +C Z +C Z +C Z +A Y +B Z +C Z +A Y +B Z +C Z +C Z +A Y +B Z +C Z +C Y +B Z +C Z +B Z +A Z +C X +B Z +C Y +C Z +C Z +C X +C X +A X +C Z +B Z +A Z +C Z +B Z +B X +C Z +C Z +C Z +C Z +B Z +B X +C Z +C Z +C Z +B Z +C Y +B Z +B X +C Y +C Z +C Z +B Z +A Z +C Y +C X +C Z +B Z +C Z +C Z +C Z +B Z +B X +C Z +C Z +A Y +C Z +C Y +A Y +A Z +B Y +C Z +A Y +C X +C X +C X +C Z +B Z +C Z +C Z +B Z +C Z +A Y +C Z +C Z +B Z +C X +C Z +B Z +C Z +A Y +C Z +C Z +C X +C Z +B Z +C Y +C Z +A Z +C Z +B Z +A Z +B Z +C Z +A Y +B Z +C Z +C Z +B Z +A Z +C Z +C X +C Z +C Z +A Y +A Y +A Z +C Z +A Y +A X +C Z +C Z +C Z +C X +A Z +C Z +A Y +C Z +C Z +C Y +C Z +C Z +B Z +C Z +C Z +B Z +B Z +C Z +C Z +C Z +B Z +C Z +C Z +C Y +B Z +C Y +B Z +B X +C Z +C Z +A Y +B Z +C Y +B Z +B Z +B Z +B Z +C Z +C Y +A X +C Z +C Z +C Z +C Z +C Z +B Z +C Z +A Y +C Z +C Z +A Y +A Y +C Z +C Z +B Z +B Z +C X +C Z +C Z +A X +C Z +C Y +C Z +B Z +C Z +A Y +C Z +C Z +C Z +C X +A Y +C Z +C X +B Z +C Z +C Z +C Y +C Z +A Y +B Z +B Z +A X +C Y +C Z +B X +A X +C Z +C Z +C Z +C Z +C Y +A X +B Z +C Z +C Z +A Y +B X +A Z +A Y +B Z +C Z +C X +A X +C X +C Y +C Z +B X +A X +C Z +C Z +B X +A Y +A Y +A Y +C Z +C Z +A Y +C Z +A Z +A Y +C Z +B X +C Z +C Z +C X +C Z +C Z +A Z +B Z +A Z +C Y +C Y +C Y +C Z +C X +C Z +A Y +B Z +C Z +B Z +C Z +A Y +C X +C Z +C Z +B Z +C Z +C Y +A Y +B Z +B Z +B X +B Z +C Z +A Y +C Z +B Z +A Y +C Z +C Z +B Z +A Y +C Z +C Z +C Z +C Z +A Z +A Y +C Z +C X +A Z +A Z +C Z +C Z +C Z +A Y +B Z +B Z +B Z +B Z +C Z +C X +C Z +C Z +B Z +B Z +C Z +C X +A Z +A Y +C Z +B Z +C X +C X +A Y +A Y +C Z +B X +C Z +C Y +C X +A Y +C Y +C Z +C Z +B Z +A Z +C Z +C Z +C Z +C X +C Z +B Z +A Y +C Z +B Z +C Z +A Y +A Y +B X +B X +B Z +C Z +C Z +C Z +C Z +C X +C Z +B Z +C X +C X +A Z +B Y +C Z +C Z +C X +B Z +C Z +C Z +A Z +C Z +C X +A Y +A Z +C Z +B Z +C Z +B X +A Y +C Z +C Z +B Z +C X +B Z +B Z +C Z +C Z +C Z +B Z +A Z +C Z +A X +C Z +C Z +C Z +C X +C X +B Z +C Y +C Z +C Y +A Z +A Y +A X +B Z +A Y +C Z +C Y +B Z +B Z +B Z +B Y +B Z +A X +C Z +A Y +B Z +A Y +C Z +C Z +C Z +A Y +C Z +B Z +C Z +A Z +C Y +C X +A Y +A Y +A Y +B Z +C Y +C Z +C Z +C X +B Z +A Y +C Z +C Z +B Z +A Z +C Z +B Z +C X +C Z +B Z +C Z +C Z +B Y +B Z +C Y +B Z +A X +C Y +B Z +C Z +A Y +C Z +A Z +C Z +B Z +A X +C Y +C Y +A Y +A Z +B Z +A Z +C Z +C Y +C X +C Z +A Y +C Z +A Y +C Z +C Z +C Z +C Y +C X +C X +B Z +A Y +C Z +A X +C Z +A Z +C X +A X +A Z +A Y +C Z +C Z +C Z +B Z +B Z +C Z +C Z +C Z +A Y +C Z +A Z +C Z +C Z +C X +C X +C Z +C Z +C Z +C Z +C Z +A Y +B Z +B Z +C Z +B X +C Y +C Z +C Z +C Z +A Y +B X +C Z +C X +B Z +A Z +B X +C Z +C Z +B Z +C X +B Z +C Z +A Y +C X +A Y +A Z +C Y +C Z +C Y +C Z +C X +C Z +C Z +C Z +C Z +C Z +C Z +B Z +C Z +B Z +C X +C Z +C X +B Z +A Z +A X +C Z +A Y +C Y +C Z +C Z +C Z +B Z +B Z +A X +C Z +B Z +C Z +C Z +A X +C Z +B Z +C X +C Z +C Z +C Z +C Z +B X +C X +B Z +C Z +B Z +A Y +C Z +A Y +B X +C Z +C Z +C Z +C Z +A Y +C Z +C Z +B Z +C Z +C Z +B Z +A Y +C X +C Z +C Z +A Y +C X +B Z +B Z +A Y +C Z +B Z +C Z +A Y +B Z +A Z +C Z +B Z +C Z +B Z +C X +B Z +C Z +C Z +C Z +A Y +A Y +C Z +B Z +A Y +B X +C Z +B Z +C X +C Z +B Z +B Z +C Y +C Y +A Z +C X +C Z +B Z +A Y +C Z +C Z +B Z +A Y +B Z +A Z +C Z +B Z +B Z +B Z +C Z +C X +B Z +C Z +B Z +C Z +C Z +A Y +A Y +C Z +C X +A Y +B Z +C Z +A Z +C Z +B Z +A Y +C Z +C X +C Z +C Z +C Z +C Z +A Y +C Z +C X +B Z +B X +C Z +A Y +C Y +C Z +C Z +C X +C Z +C X +C X +C Z +B Z +B X +A Z +A Z +C Z +C Y +A Y +C Z +A Y +C Z +C Z +C Z +B Z +B Z +C Z +B Z +C Z +C Z +C Y +B Z +B Z +C Z +C Z +B Z +C X +A Z +C Z +C Z +A Y +A Y +A Y +C Z +C Z +B Z +A Z +A X +A Y +C X +C Z +B Z +C X +C X +B Z +B Z +B X +C Z +C Y +B Y +C Z +C Z +C Z +B Y +A Y +A Y +C Z +C Z +C Z +C Z +C Z +C Z +C Z +C Z +B X +A Z +A X +C Z +A Y +A Z +C X +C Z +C Y +C Z +C Z +C Z +B Z +B Z +A Y +A Z +C X +B X +B X +C Z +C Y +C Z +C Z +C Y +C Z +C Z +A Z +B Z +C Z +A Y +C Z +C Z +C Z +A Y +C Z +B Y +B X +C Z +A Y +B X +C Y +A Y +C Z +C Z +C Y +A Z +B Z +C Z +C Z +B Z +C Y +C X +C Y +C Y +B Z +C Z +B Z +C Z +A Y +A Y +A Y +B Z +C Z +A Z +C Z +C Y +B Z +B Z +C Y +C Z +C Z +A Y +C Z +C Z +B Z +C Z +C X +A X +A Y +A Y +B Z +C Z +B X +A Y +B Z +C Z +C Z +B Z +A Y +C Z +C Z +B X +A Y +C Z +B X +A Y +C Z +C X +A Z +B Z +B Z +C Z +C X +A Y +C Z +C Z +A Y +B Z +C Z +A Y +C Z +A Y +C Z +B Z +C Z +A X +B Z +C Z +C Z +C X +B Y +A Y +A X +C X +B Z +C Z +C X +B Z +C Z +C Z +C Z +C Z +A Z +C Z +A Y +B X +C Z +C Z +B Z +B Z +C X +B Z +B X +C Z +C Z +C Z +A Y +C Z +C Z +C Z +C Z +A Y +A Z +B Z +C Y +A Z +C Z +C Z +C Z +B X +B Z +C Z +B Z +C Z +C X +C Z +A X +C Z +C Z +C Z +C Z +C Z +A Y +A Y +B Z +B Z +B Z +B Z +C Z +C Z +C Z +C Z +A Z +A Y +C Z +A Z +A Y +C Z +C Z +C Y +A Y +B Z +C X +B Z +A Y +C Z +A Y +C Z +B Z +B Z +B Z +C Z +C Z +A Z +A Y +C X +A Y +C Z +A Y +C Z +C Z +A Y +B Z +C Z +C Y +C Z +B Z +B Z +B Z +C Y +C Z +B Z +C X +B Z +A Y +B Z +C Z +A Y +C Z +C Y +C Z +C Z +C Z +C Z +B X +B Z +C Z +C Z +A Y +C Y +C Z +C Z +C Z +C Z +C Z +C X +B Z +C X +A Y +B X +A Y +C Z +B Z +A Y +B Z +C Z +A Y +C Z +C Z +C X +C X +C Z +B Z +C X +C Z +A X +A Z +C Z +C Y +A Y +A X +B Z +C Z +C Z +B Z +A Y +C Z +A X +B Z +B Z +A X +C Y +C Z +A Y +B Z +C Z +C Z +C Z +B Z +C Z +B Z +C Z +B X +B Z +C Z +A X +C Z +A X +C Z +A Y +C Z +A Z +C Z +C Z +C Z +B X +A Y +A Y +A X +B Z +B Z +C Y +C Z +B Z +A X +C Z +A Y +C Z +C Z +B Z +C Z +C X +B X +B Z +B X +C Z +C Z +B Z +A Z +C Z +C Y +C Y +C Z +C Z +C Z +C Z +C Z +C Z +A X +A Z +C Z +B Z +B Z +B Z +C X +A Z +C Z +C Z +B Z +B Z +C Z +B X +C Z +B Z +C Z +C Z +C Z +C Z +A X +A Z +A Y +C Z +A Z +A Y +C Z +A Z +C Z +A Y +C Z +B Z +C Z +A Y +C Y +A Y +B Z +A Y +B Z +C Z +B X +C X +C Z +B Z +A Z +C Z +B X +C Y +C Z +C Y +A X +C X +C X +B Z +A Y +C Z +A Z +B Z +C Z +C X +C Z +C Z +C Z +C Z +C Z +B Z +B Z +C Z +C Z +C Z +C Z +C X +A Z +C Z +A Y +A Y +C Z +C Z +C Y +C Z +A Y +C Z +B Z +B X +A Z +A Y +A Y +C Z +A Y +C Z +A X +A Y +B X +C Z +C Z +A Z +C Z +A Y +B Z +A Y +C Z +C Z +B Z +C X +C Z +C Z +C Z +C Y +C Z +B X +C Z +C Z +B X +A Z +C Z +C X +C X +B Z +C Z +C Z +B Z +C Z +C Z +B Z +B Z +B Z +B Z +B Z +A Z +C X +C Y +C Z +A Y +C Z +B Z +A Y +C Z +C Z +B Z +B Z +C Z +A Z +A X +A Y +C Z +A Z +C Z +C X +B Z +C Z +A X +B Z +B X +C Z +C Z +C Z +B X +C Z +B Z +B Z +A Y +A Y +A Z +C Z +C Z +C Z +B Z +C Z +B Z +C Z +A Z +C Z +C X +C Z +C Z +C Z +B Z +A Y +C Y +C Z +C Z +C Z +C Z +B Z +C Y +C Z +A Z +C Y +C Z +B X +A Y +A Y +A X +B Z +B Z +C Z +A Y +B X +A Y +C X +C Z +A Y +C X +C Z +C Z +A Z +C X +C Z +C X +C Z +A Y +C Z +C Z +B Z +C Z +C Y +A Z +C X +C Y +C Z +C Z +C Y +B Z +B Z +C X +C Z +C Z +C Z +C Z +B Z +C Z +C Z +C Z +B Y +C Y +C Z +B Z +C Z +C Z +C Y +B Z +A Y +A Z +C Y +C Y +C Z +C X +C Z +A Z +C Z +C Z +A Y +A Z +C Z +A Z +C Z +B Z +B X +B Z +B Z +A Z +C Z +A Y +C Z +C Y +C Z +A Z +B Z +B Z +B Z +C Z +B Z +A Z +A Y +C Z +C Z +C Z +C Z +C Z +A Z +C Z +A Z +A X +B Z +A Y +C X +A Z +B X +B Y +A Y +B Z +A Z +B Z +B Z +C Z +A Z +B Z +B Z +A Y +C Y +C Y +A X +C Z +C Z +C Z +C X +C Z +C Z +C Z +C Z +B Z +A Y +C Z +C Z +C Z +A Z +C X +C Z +B Z +C Y +B X +B Y +C Z +C Z +A X +C Y +C X +B Z +B Z +C Z +B Z +C Y +C Y +C Y +C X +C Z +C Z +C Z +C X +A Y +C Z +C Z +B Z +A Z +C Z +A Y +B X +C Z +C X +C Z +A Z +B Z +A Y +C Z +C Z +C Z +A Z +C Z +C Z +C X +C Z +C Z +B Z +C Z +B Z +C X +C Z +A Y +A Y +C Z +C Z +B Z +C Z +C Z +C X +C Z +A Y +C Z +C Z +C Z +B Z +C Z +A Y diff --git a/src/main/resources/2022/day3.txt b/src/main/resources/2022/day3.txt new file mode 100644 index 00000000..e12b761c --- /dev/null +++ b/src/main/resources/2022/day3.txt @@ -0,0 +1,300 @@ +NJvhJcQWTJWTNTFFMTqqGqfTmB +VwVzPldRZVLVRmfsvfjvqfmm +ZDPDHZHVcvDhbvnv +FHHwHBzzVCWWmmCzCPrVmgBwbLTtRFFbbbttRGRLjTcLpbbT +vhZZvdsNSdSMdNvjncppCLcLnGnj +CDZZsNZMZqdNSdlNZCqrzPHDzgrgzwVVWwmwwm +ndlndntsFJntFvccLjjLrjBShcBBfc +GpCGHzVwmmzqQWSSSfWHBhQL +mpCMGGCZVzVwGGVwmJsZnFtZnTSTJtdsvl +nCnPDGmDNmVCsVQDmGSWqvzchWSjjcWGqS +gTnBRLpfTRnrTdZgdLfRdrThvqcvWWhFFWvcFSSgjqqzjv +pfZfTMwrbLTTfsbmQtlVtHHnbs +wNdSdsbTvTZMTvTv +rrdRWdWQhFVdHWBGWQmmmnnMvCfmnhvmCmtZ +rJrVDRWpGddpbSlNSlspPP +chTNrthMMwWMTjfsmRzZszJpwm +BLnFFCngbcBnbbldDlpRjGpmsCzGsGsRGmmG +dqvnvlgbqtcPPMhH +QcLNqZbCzJDQBJJRpwzRpdnRldgnpf +GmmmvVGsHrWffrlwdCWd +CMsFVVFjCmFStGQbbLZNBbJBcTjc +LQVggbQvcLbQLHgvVLhWGGsChssrMWfzGccc +qDnRTTRqJttPfWMChJhGslWlzh +qRTRwPBTBtRZdnjnqqqnQVbjbNLFbbfLgVmgHLQm +cZbzwCwZPlJcMLrNSNfHWNBBNZ +vsQsDCqtsDhmtjVrBNWNjBHrhr +TtDTGnvTlgbbRCGg +BgBlplHlsgNNsJlVpBtPwJhMPRRQSSttRtSP +bvhTnmdFTzddStwStQRddt +ZnZDLvnvqZzbbhFzzmTbnFsVjVlNgsCCNVsVLpNWVgsB +TdptqrrcVGhhzFtw +DRnSfwJlDmmDDVGv +RCSQNSCQZndwbcMqQrBB +wvRlrlwVwwqzgbZRdCJBWfmdzCWfBdhf +cFcsQpNtLLsGTtNGpMdPmDdPBmmBvJPWvDtC +TpjssTFFvLLLcFFQpwbwwHngjHRrZRqZVH +mqqddrPPcPmqPDlrQnjTrbvMvbHzzsjjpTvz +gtBWgGgVhLGWHzMDztzstDHj +hfWRhBBNBGgLNQDPwdNPcPdw +LhQzdhhbTzpMhddhhhTzhnZcBFllHZFtrrHZHMHFjlHr +mwwssqDvjptrvplr +NCSgVDPDwmDgVJVpLfTznQJdhfLhnhQQ +GzjzDhjhhZzcrRgQCBjBPBBjQCgT +vHHHmntsbSgLwbsSmNHbwNbvpqPCBVppCpFTpTPTBtqWBCqV +NJbwNSwdndvmvwhGhgzcfMcDJfgJ +GncgDvvcMGnttjDvrgRRFSZZLZFWdJFJwGQwZBWZ +bPqpChPfsshfZZBdZdLTFZ +lNqqsClmbsNlPbHqPsmblmsrHdvdMngcVrjggvrvggRDcn +bDvtgVVVpMQvjQWmQL +rwTflmlfZJBBdQWQWjQqdM +HsJJmZZwscHrwTrcRbzpcbPgtCSbgz +CsCsRvshMjpbqCqf +ncblgDBgtDmmmTlBgwlgbHHqMFHLqPDMHPHHpqWfFM +TcBctSmTZTtSTzsZvsvJZRsGVb +znznvngttwltzlLwhtThHbqHPvNbNHSSHmmNWHjP +FBcLrRMFQpPqpPSpqHHW +fRQMJZJfrcMcMVrQJJftnwCzVCltgTnstTVnVL +MfLlRfCMrLzRlQgwNqQFcsGd +jtTjjBTvbdqcGjqFcj +vvShDSBDppzhCmzq +plWMptTvfrnncvcRfwqzqLGhzhzThNzNNJqD +jSdSHFPQQbdPCQCssjSbBmhJGNZZNGNqqJNBlJqqLh +VCCCVCQgjdddjCgljCjbbwgRRttgrpftfWrgvpwpnf +MWlbBcPjjvvjPWWMPqgRQZfJZDGGbRZJffQQwh +HrHrnncHpzrJQJfVDQVR +zzsSTtSTLzsspSdtTmHHmpmtFgqcgPlgFqWBqqqBMdWWvFlg +nSqBbJbqlnBBClVZcMgZVgcP +FQwrwHrRwWWFBRPNgNgcCGZZZC +rWFWFTwpwwWzHrnDbfJDLDbBBbbz +BMmNtLMMtFCNFNMvvLmcndpgcdgppPrgrGPPrgJD +WVWWhbTtVnGpjrrPhr +HWssSTHWfRHRsQQFLvfvFFCLCNMNlt +sTmDsQffVrrLCjTFltTFWL +BnwwQBJbJndMMRzMwCLlWlLWWCWLLtRlWF +cqqBMcMqwnznMGzcvDmQhrvssHmPDVssrP +pQGQGJDDrDVJbbfVzvvgPcCZwhZhncscZWWc +SqMMlBBljMmRlchhPTqThCZnPs +FMjMBmjRNFHQJJpHVhVDhG +tHNNdBdNtBBBMgsMpsZm +wVPzVvbwqzhrVqvjqzzsZpDsZDsZmsCPCgZgCM +bVbvLThvvbrWqHmmnJLdHdJQLn +PzTspPZpdLLDZTplPLpPDpvbfhnqNvqzfvNMzQQfNwnQ +GWRHmjmFWMMSnhbhHw +JWWcmtBrBtWBFWGJpsgTgldhLVLpJl +DwLMDzLMhvMcwvgdVqWWlCVgvlqF +TTSBBRpbStHZVgjWFldjRVlV +SnbTBdJBmnpQzMPDMcMznr +nNlMNBPPNtJQnbZhZsgSbh +czzCjcwTdvSbgQNcgNQq +VTdNdGDTzDTdlFFPtBrtLtDr +FMbbfMlzvFsmgVZmmg +SrNTHGmdSQDqLhtQhhgggs +dRDTSDPPcHRdHGDHlwJBbmwljmMcfjbW +sQgWLtqLtWhdqlpNZRpG +blTHTjlvTCJnJvRZdGGhHHGZhFGV +CCDlJclnCmbrmBMgcwcLWtcBsB +vqPWWvqwwCFvFZfZPRFRrcGQrQwsDrNcrwnbDNcQ +LVgJLSBBVtzTLzBMmTMJmLnnDNQcrsGbsQbNbrbDjs +zggVSmmhVdfqFhvHWG +WwdndGGmmmLwwwmRwWSncLRnZqZqhqZthBtqtBqZBgtdtvMH +FfHHzlQQDsFzzrNsVTfttZvTvttTqqtbqb +lQjFDNQFPjCsVCCDjGCwwSGGnccwcHppGp +mrjggcFsFMjdjZRpSZpn +NCqfLCFNbQPzPPlPzNfSRTRZdSdWWwndpqRSSd +vDvzzbPQFNCFtllLLNMBhMcDHGBGMggMmcBc +jhjlBvvnjbtDNPjtSjBDBbDNgHggrQrhghRQrqRrZcRwwqVg +pLdTMsWdLLmpMdqZZdPdVqZgHPwH +WLTCGmMLfPSlbGjlnnJD +gtbwhgHbHgqqbgQthgQLtZZCRjMcjjnRnrRNJmMRJrNhRc +bGWVTTvDvfpVFFBpvvVTdRDMJcrccCrJnMRnNnNCcc +FVWTBsdvdTzTBFWssVQtLgSQtHqqPzPbqHbw +dlzrPTSSjSrllzWhsvVmVtTRTWtf +bJMpLGcqGhNbJQttVQmmvRWWsp +qLbMwqqbGHFGzrlZrjhPHCrj +rNrrffVlqqrfLlPpltcBBTTGRzzZRPRsBTcJ +msbsmWSsMmQwjdMbWMhMhQmcRZRzGjTBGTBcBJBjCHJGcC +FwWbvdhbmrsFrfrgsN +rHjrQHdhdQrvSddcHWLssBSVVpBSWWWWWf +JNfTGtqDwVWBMBMpwM +qlltZgfJFvcRgcRjvc +CqfcwfDqwwmRnnqmRdNRBTRTRrdGdNpTvF +WVbzsZszBbrsvpdMpdQM +tJhbVZHWLLHDgnSwnSSgHB +TZCqqlTsqpZVVsZQJSBSLpLmppnJzmFz +brSgNtGjjRjRRjDddDtrRJcJJbJmmwcmBmnPcJFwFB +jgdRtMjNNjfqlMvShvSZSZ +dJTdqCwMNCgqTQllGBdlGBmmmZ +fcVfVcnbVfrwDLWVfncZBQPlBHRGljLZQjHGQl +brwnnfSFDvfzCTqFzgMJTh +njnsPBjjsrrnGLnbTTjGvcldQPCMllNzMvRQPCdd +ggZgfZtmZVpqZqZWDgFmgqfCcQRcRcWhQcccQddMcvRQdQ +tfqgggVgHpDwDtfwbGLJRjbLjsrLTj +JmrfrmTlDWTfgQCdHCdpqBvQdD +jsZtVzNsSNVQQHnBlVQR +PljljFjPljSsLPtFLTTgTcFrrfMJmrrmrr +hmGcmmndhmGnfmtGnDzFLwrFJQsQFzNFrNJG +ZSqPlSWcWlbgqWVTVWRVZPrjQqjzjFNJzLsNJsLJNqNL +RHcWTZbSMMMPgZcWgSWPPbVMDnBffmtdpDBddfnnvmCdfC +vSJvsbFfJfvqCsTHJswssJnLTZjjhzrrzLrzLMrzhdjM +pBNQDPcpmWDcBNgMMnZPVjdddnndhH +QWlDgmpmgDBlGRgDDgffSqwSwGCwHfvqwSFJ +jvlgvMJclPdGdtdcjMVmMHbFHFVHWHbZHZ +CwhLzLhzQpnqfpfqDVHCHbsbDFZDmHmj +LnBzfQjSzQrPvJvdSSrr +wpcvcsqclDCnVCVvWfnZ +BLRMRtbnbbBLNCjNCjVVZhbC +rFgMPSRnrRpmqpJwqFDs +LZQNQbMrZppLNLQplvlGLNvVmmmfjbwVCfjbwJwCmBCwfj +ShTPRFtTHZPCsnwswsFwCF +WtHRPdThSqZTRtDqtdRWTdpGDLLzrNczvzMGLlQLGDDM +hdcffBvldjhCMljqPwWwWNwWdwqHZr +LtQmbQRVsZQZMZPQSN +tmMRsJMpDhjJzJhv +wNQCMFCDQDBmrHmmRWrrHN +SShLnfqpcqpSZSfrzJvRVrvfrrJH +cRpqdGclpScltTQQtsFQMQsTCT +NCjggZmgfBgnBmgWbcwcTFctcWWfvb +HsDGthRGrtppSQpbFFJTVcJdFbTRvd +rPDGhDDrSzZLtzBLZMCB +RsBBMBsCBlFFCgRsBJzlMjMPNSdPhSrSrzLbmSDrDNmDSd +pZHZZJpGHHHpTTHvTncZqVLdqLbhLrDLdhrSLLbLDDdD +tGtwnJccvCtCffMBgt +wbddvVjfwPhbjjbDbbvbjvTNCNmfHZfpCZRJNzCmJmnJNC +BslcLtclZWsZJWNrRRNRpRmR +BSLBlScGtFMcssMBBFGLlQZTDZQjPddVwwbTdvvdhTZb +NSZHzmLZBnzHmLLzLSntDttDDtddhDtttDWW +QgfjsrrvNNJwtMddcvcvtq +jrfgfQpQrTTVLSNBClFV +GQWcWWPPQRcrJQNDdRcDmmLCFSnqNSmqhCNvFnql +zHfwjzpMjwZmCLqvvnlljC +ZgtVZBtHHZtgQGgPrbPRJdPv +TWdWpJTJTdgLWfWLlLFLrfrgBGsNqhGslBGHqSNqqBNshnws +ZpQmjzbZZCjZCCCPZtttRCCwsBnHNssBHbShsshHqsGBqN +RDRRPpPCzmZCtRpVVJFrfTfWFLLJggJrDv +pDDFlglsvFMgntlTMMqNffmTdfddRM +jhGJLVCHQpHGQCCzLjWdTTdZZdNdcRWNccWfNN +jQjSGjrjCQLhzVSLSCSHGDpngbrnDFtFBwBglBnBvg +wsLzstsgszcpcGLHGpcgcghlDBvQvjQvbFbQCbJBtCCJJv +mnSqRSSqSRThWRnmWWRSJDFTFCFCblbBCFQFCjFj +rZRRWqSSdZZfMVnZLspPsMgHpzMhHGPg +mwHrCLSWWwrsHCHDDsVrsmhfFZFnSSBlFlgZbbgBglbggj +GJdpcRtGJvNRdcPtdpJJdbQZfjfQBlnQBjnBtbfFnB +qcPpqqzFzJqvPVCCmWrVwhrWrz +jjMbvbhDvnRjNRGMmjbMZftSSwwwthJSffStctcwqd +lTQrVlpCVvCcfdcSJqLVcw +srHFWCHrFlrHlrsBsprljjRmDZZnmbDngNBgbNZv +MgTlQJlTQJZWpgLrRssrVqqqpRts +bBNbbzSSjMBPjzhMjsPtRVVRVPRqLttGGs +SjHBbfjNCDfjZgTlZdMJnDJW +lpThgTwtplhghgwhThqnnrdZctSZSjSZcRSRfbdrrc +RBVBGvmBmfdrcvrbbr +PmVGNGmmGRLLQwwLqTnglQ +nHwnBwBTnFHQwRsMhwghmzcm +GtprdCpdtqWdbqbrfdnPPszsWmRzRnShPszS +dGptbCfCrlnVDBJNLDLLVDLQ +CZtCjhTndCzqbCNq +dwpGvpsmwGslDszrNNrzqDMzWMgJ +vmcGccvpBVPTVTjTdTTTdZ +jWZhvZLjZfCZDwrDrSSzJGhVdJccscGsgV +blMBlRqqqgSJLBLcsJ +blmHLmFMMMnRqLmMMFqHmfPDfjQDnCDDQrZvfCjvDr +rnvnHrDLFZmMFLvrHQBMGQggBztzglplRl +sbWWhdNzsshsfhcsjJJPPbWdtQGVGllRTRjRRgBgQlpRlppB +PPCCwNWhPhNfWCzbqmFnDFFnCDLSrvZS +GChNjwWlWJWTJZBggvdgnQgdhdnd +HPsHfHHrpHDpFFrcSfsfpCMmQdntLBMgtmtBgDdLLC +SqpPscpPzpSWzjlCjjCGjl +nvgLvcLgvgvngbLprpJNTDCCRNVJrNPlDDTV +WZsMtsffGQtMzWFqFmWmWsVNJNlDwwCDVRTwJlCCDVLz +BQfGZGmmsMWFstWFmfMsfBccdncbpbSbvbbvHnLbpc +tsmDsvswNZmcZTccfh +zCTpGCbWBRWFWHGRFZJbMbJfnrhnhfMnnZ +TzFGFBRLdpHHNNQddDQDvwQN +fhBBpJgdHddjZQfmVmNzNNLmFN +qvMRrvlbwqlbTTMBMvLssFNmVzzwFDmLLzVD +TRSRWqRRMcBHhGHcdGgPGp +lSjHmtmnpHStblnpSlHSrtmMzLWzqzqCZDDTzTTWqMFqCqVV +sLRLLfPPRQfCTqqVVqFT +dNJgRPNQNsJJhBRvdJvQvNNsjSrrSmrcctpbpHtBrBjLjmSH +nwFwpppjfwSlpLTsqsTgNshhjM +ccBRGvtsmgGNPqNNGP +BCcJHvssdcWBCVmVHSSrZrwVzblpwbzZnf +rcfQRrBPPczjcRBctZDNlnVNHbgZGjVDjN +TvMsFJGSFMhJnNZlwVVnDNTZ +qhSqqmqLCLhFdJLqSvLhmQRQRWcRPczPtzrCrWGRBp +JVhdPhsFPFqLDBHVdHLPvhHDCMwcgJJwbwRgnnCMbwGwcmGC +fzjzpTZTQQQLwCbgGgbMmQcR +jzNpTzfSZtfNSWZlVVtdFFFDHHqLHVqv +TwSNnSnSGVTpNppGlPTlTcVqQrRhVBqdqBRqZqQZqQ +DcDCMfDbCMHJdrRBqbdjRBRZ +gvftMCJHcHfCDmDLgfMmMmmWlwWnWsTTwlGTlWTwppNlGL +pbGMbllDQPhhWWQDpPgVGlMCvRRrQLcCCcfBBQzLBcvQBv +wqnJjSmjrstdqwwFBLcRsBRRszzLFC +qwdddTJTdHtjndqJqHZHmwVWGpDbGTlbWWpWWrPGhhhM +WGllqLjjLCpSffmBmvfpHs +dnrQwZzRTdZwnCThdzzFTVmcBHBJBmsHfBPHcfvcSVHs +QgQrzCdrTRCZzrZLbjGLqNMWGgNNLt +sgPnhPPTTPTTwlJfwNHlqcfs +LMCpFbLLbRpMGbMcCFLVlNlNqrHqVfbHHwNDwr +GjBcCCtWMtMRZTSvgWQTngvg +BCMtJJMpRDlMMvBJBBnfjtcjPhPmZgnhgdcf +NrsrsqFNvrVLVGVrsHsqFgfmcPGdcmhfjdPgfjcnZd +zFTzsNqHqFssLVLQqNTFbsBDwCCwvWlDwRMRCTRBDMDS +zQtLgvggSRtgvVRtLvvnzdnjnGwGdmmrlpnlGz +JssBFpqsDqPNnlWWjrrjqrnj +DHDFBNDfPbJBsFHNMPvpvStQvMRVTtgVTVtv +FvzttFvBTJJzLbvwhCnnVnWwjCnBNC +mQdZgZPDPdPPSsMSQPdZgCwVGmnwnWpGnGhqNWjWCG +ggdDgfQSdcjtFHjlLJfF +ghcgScNNSsCvGSzmpVFlZbrzcFcV +MWWRLRqqqdQwTtLjjmqMlFpFlzVnbFVDwplFzlDr +LHMHqdHWjdQMdMtLHHLtWjJRsGCGSNghmSvPBJBNhsGfvfGP +CbVqqqDbcbMHnnDqcCbrRFCfBvvwGjzrBwQGzrwwBjGwBQ +sTPmpNWdWPTJssSSLPfNljjBvflGtjwwBzMG +mmWgmgSZLTLMZWpnhqZbhFFCnhqnnn +QQmjmZqnmQrfTZlbbcVbBcfbHfzf +vpdSNShNppFdSRtdGBqvJBDlDzqbPPHVBH +tRNSNRFhNpSRhFRMFtGhRGswLZZsZqWnmrmZwqwsTZmmmQ +gGWCllFCGWtGGWdlGlWNZdwpnnSbwpMvpphZpndn +RsshDDLcQVMSJQwJwnvw +HVPzrPcDNhPFGhPC +jtHQGHjGGtdTLjnqTQlmvRPRPBBwRBnFPPWP +hZbzNzVrczZzcbNssVspZZVvBwbmPmJPWmvbBRvPlmvRJF +fzNVDsZMhzpVhpVhlZcMNfcDDdQTLTjGDTCqGCjtSQHdHL +GrbFggGrTrzSrgfwJjdTmwmNJZJd +VMPQplPDptchwdsjmlml +MqMWtBDPPWDWHQtvqQtWPjbzCGLgSBgGbzgrzFgnnz +fcJccCcwcDfcpbRnCfWJnQJqtqtqPQdsGdgPsgTQqg +LSjVMhzSFFrljdNbltNGtgdqQq +MMhSHFFMLzBWDcHHcfcHwb +rwmWtJWMwSNRJMtwNmMrrSsmtTjjlgqnTqZZZPlHnTngTTgn +BGqGqqFBFggjjdGHlj +QDhhLbDQCDFMNcmhRhqJNW +BnRnRvMnLGLSCHvvSnlRfWbbTNQJsJsbNbJTBfQT +tzMmmMwjhcpFjDmMcptrcjzFQggfQPTsWsfgNbbgfhJbPhQT +FdzcrtDwDMtcwtFGRZdRLvdnHRSZZv +HVpsSpvjpNjsBmbGFBnMNnDM +WRRWhZtfrVtLJrBZMnDmDbnZBTGF +thhPLzWzhzwPtLRLWrQlpPvvClcVcCppSvpl +lZPbhnZLRPnnPZZPdlGMBWcBMgMQHBBcvvvzBL +jpFjmwwwCDDbsjvjjgcvQgcNBQ +rbFmppbwhqhGRGZr +ggrLwFgWCBwbMWBbFwLMgNBZdmZHclJPllnJlNRPmSNZRR +ppszzDfhDfhsqpnvDVTfGpSPlPmclHcdRcZmmmdPPGSP +pvtDDVDVpqDfzDfngBLCwQrgCtCwFwrg +pbGjFFGGDjpbsGsmNhNFNRBBBtRhhhHv +JnczJVCvwWJvhPgghgNtNtNJ +nwVSSzdzzqSpvQSZQG +mssLLttQrsMrMzLCRmMmrrSQpvWpDNlBTBDlvNTccDQl +HdHJwJqVPwHnqJwbjJbGjnSgSTWPpNgWWpgBBgcvDWWN +ZHVwVZGwwdndqJVJqfHbGwnwrRLtLMftMvMMRrhmLMthhLmz +RgHGLbTqlZlPRZPHfvvfZttJnvfvjnzr +sVcChDVDccwNhhvjTvVzWJjnzFff +mpNcCMTCGmLqBLGH +wVJwHJHVMtMpBmDDWPQVPWDGDD +zCrlZzCblBvnCDWNGLmvGDLPNG +dqZglgbzrzbbgZqzTFSBHHFJSSSfjjSMfwhj +NMWJSjLMCnHHNMNNHWCHMbVVGBPZTrPVPBVDrBSDGTTr +zvttlFpgdtldwwvftPDPTWQdBZrsrWrGBZ +hFlFmhRFvfCbmWJWHcnj diff --git a/src/main/resources/2022/day4.txt b/src/main/resources/2022/day4.txt new file mode 100644 index 00000000..4a830016 --- /dev/null +++ b/src/main/resources/2022/day4.txt @@ -0,0 +1,1000 @@ +71-87,70-88 +8-92,6-97 +7-68,8-69 +47-47,47-48 +74-94,51-93 +48-63,48-49 +26-57,57-58 +62-63,11-76 +16-66,15-47 +27-65,27-62 +19-81,19-81 +19-19,18-18 +4-5,5-15 +75-84,39-75 +96-96,20-83 +1-59,28-60 +13-14,14-88 +15-96,96-99 +4-64,1-4 +22-95,42-95 +52-53,52-78 +58-75,63-67 +25-75,63-76 +10-19,9-37 +46-81,65-65 +4-61,5-62 +66-66,67-67 +45-82,83-96 +74-96,95-96 +41-98,41-99 +22-92,21-92 +22-29,1-32 +85-86,36-84 +21-21,22-90 +13-83,15-82 +75-75,41-75 +78-78,1-78 +14-93,14-48 +58-87,58-58 +16-87,88-90 +23-64,24-58 +2-71,1-2 +31-52,53-70 +65-95,66-96 +5-42,4-41 +1-79,2-80 +4-71,36-72 +94-95,4-94 +23-89,24-79 +8-53,32-53 +51-59,30-59 +13-55,13-55 +13-72,46-71 +9-78,8-9 +57-74,56-69 +91-91,91-91 +8-31,4-31 +39-54,36-85 +7-35,6-65 +5-83,8-80 +5-93,5-95 +44-53,52-52 +11-94,10-93 +1-6,7-99 +42-61,33-61 +7-29,8-80 +4-5,5-31 +42-42,43-83 +43-81,63-82 +6-96,98-99 +22-83,7-86 +19-83,18-60 +39-40,40-41 +6-99,5-5 +16-94,16-94 +51-53,23-52 +4-84,4-83 +8-67,67-68 +3-85,2-3 +21-50,44-48 +42-85,43-86 +19-69,20-70 +15-15,15-86 +70-78,71-78 +12-46,45-88 +33-87,32-90 +21-90,20-94 +4-99,3-3 +50-87,4-91 +3-91,3-4 +9-41,9-42 +41-54,40-54 +46-46,10-45 +59-87,58-78 +72-97,71-71 +1-87,87-88 +32-33,31-80 +29-97,98-99 +73-75,74-76 +41-93,30-92 +1-82,15-49 +13-41,14-42 +19-39,39-40 +8-92,34-92 +10-49,11-94 +19-81,11-82 +95-98,25-95 +16-89,2-16 +51-85,52-68 +19-95,18-53 +1-14,1-15 +25-25,25-28 +14-35,14-15 +31-66,32-67 +20-93,19-69 +68-82,68-82 +17-69,68-71 +4-84,5-83 +1-76,4-77 +3-92,39-94 +95-97,30-88 +51-98,71-98 +29-74,75-99 +12-19,14-19 +27-99,26-99 +17-77,16-75 +1-2,3-38 +38-38,37-99 +13-45,14-46 +25-93,26-94 +88-90,88-91 +40-57,39-56 +23-23,24-67 +28-92,94-99 +1-71,1-71 +41-96,40-95 +4-97,3-98 +9-25,4-24 +70-71,70-70 +14-54,13-39 +10-40,10-40 +63-87,16-82 +41-94,40-57 +60-90,61-91 +14-92,14-15 +6-92,16-91 +21-77,21-77 +70-71,59-70 +19-69,61-69 +97-97,4-98 +12-79,12-80 +15-86,86-89 +49-67,19-66 +63-91,92-94 +6-98,5-98 +15-15,15-68 +9-17,17-97 +5-87,4-87 +3-96,14-84 +21-83,21-82 +1-92,92-92 +1-37,5-38 +17-93,11-98 +38-66,21-67 +1-65,2-66 +7-91,6-48 +2-29,3-30 +36-79,7-84 +78-79,75-79 +69-83,79-83 +34-67,39-68 +2-93,92-93 +7-53,5-7 +90-91,18-90 +73-93,55-74 +24-81,98-98 +2-76,18-71 +28-94,94-94 +13-14,9-13 +40-64,41-63 +89-98,1-87 +87-98,71-97 +31-53,32-67 +14-32,15-32 +11-96,37-61 +69-70,69-89 +22-32,15-46 +33-47,47-87 +4-6,7-73 +26-70,1-71 +5-91,1-90 +6-55,5-54 +5-71,4-5 +55-86,54-70 +13-33,34-34 +53-93,93-99 +31-96,31-99 +47-72,46-71 +54-73,53-98 +44-92,45-72 +1-10,11-17 +53-77,53-96 +52-74,53-75 +30-95,30-98 +3-58,58-58 +32-92,32-33 +2-3,3-33 +25-43,20-42 +10-80,65-81 +5-97,6-98 +37-41,36-53 +57-79,78-88 +24-89,23-89 +97-97,70-96 +40-69,40-70 +10-90,89-92 +42-86,43-87 +26-84,27-85 +15-15,16-99 +7-68,67-67 +3-97,1-96 +1-98,4-95 +2-99,2-99 +66-66,12-66 +57-89,90-93 +18-93,32-88 +37-77,37-76 +74-74,60-74 +4-83,7-73 +17-98,18-99 +1-82,5-60 +73-89,4-55 +15-81,3-15 +51-93,74-93 +16-18,17-37 +69-69,69-99 +30-97,30-31 +16-80,5-85 +2-13,3-14 +76-95,34-85 +35-83,82-83 +14-15,15-85 +5-93,7-66 +24-71,42-90 +23-36,9-35 +31-79,31-79 +15-71,53-72 +69-73,68-75 +3-89,3-89 +14-81,67-98 +82-87,86-93 +67-69,68-68 +7-78,7-7 +2-85,3-85 +16-72,16-71 +2-98,1-1 +28-31,27-43 +88-93,58-68 +13-88,3-12 +17-91,18-98 +91-99,65-99 +1-60,8-42 +16-84,16-88 +10-49,50-50 +20-21,20-71 +59-85,59-85 +53-62,61-76 +18-53,51-51 +65-94,15-66 +17-72,40-68 +53-76,21-75 +54-96,96-96 +2-17,17-17 +73-93,29-94 +1-5,4-59 +1-98,1-97 +12-77,12-81 +84-97,84-85 +1-77,43-78 +45-91,45-90 +69-94,36-44 +11-97,10-94 +6-70,6-65 +42-56,8-41 +48-54,45-55 +23-88,24-88 +28-92,69-95 +9-15,8-13 +46-81,74-82 +66-88,8-67 +24-32,33-33 +12-90,11-93 +28-56,27-55 +33-56,33-34 +40-85,44-86 +15-70,2-15 +71-90,68-80 +14-93,12-96 +4-96,3-95 +18-18,17-32 +78-79,46-78 +4-62,62-63 +59-84,5-59 +15-24,15-16 +24-84,14-91 +19-92,10-46 +3-4,4-72 +21-90,18-21 +95-98,58-83 +19-97,14-99 +5-97,4-98 +21-78,20-93 +14-15,14-98 +54-60,53-67 +8-40,40-89 +29-70,30-71 +9-9,8-8 +90-98,89-89 +69-98,98-99 +3-91,3-4 +10-94,11-95 +59-83,48-83 +1-5,5-95 +91-97,37-92 +14-96,14-88 +2-86,86-89 +8-40,39-40 +52-80,53-80 +57-81,33-85 +24-89,23-25 +36-65,18-65 +3-58,2-54 +74-90,31-74 +11-94,11-12 +21-70,22-71 +19-72,20-73 +33-34,34-94 +30-96,79-96 +5-92,4-5 +23-84,24-82 +32-33,34-76 +13-64,13-14 +38-41,42-70 +24-86,76-92 +61-70,11-70 +48-95,49-96 +77-83,83-95 +13-63,14-64 +7-52,51-53 +42-61,43-51 +67-93,66-93 +4-23,24-24 +13-14,13-13 +41-93,42-92 +14-79,13-78 +64-83,78-82 +2-89,5-89 +19-19,18-18 +58-76,47-76 +88-97,4-89 +65-74,65-66 +39-97,40-50 +74-98,75-97 +14-15,14-67 +13-95,12-94 +12-79,13-79 +11-68,12-69 +57-87,86-86 +7-21,6-82 +76-83,25-77 +7-10,5-12 +98-98,8-99 +2-93,3-94 +5-13,4-12 +78-81,78-80 +98-99,11-99 +52-67,53-66 +86-86,82-87 +4-65,4-65 +60-96,59-95 +7-87,8-94 +53-88,87-93 +4-10,3-69 +2-21,21-65 +10-35,2-9 +3-56,4-6 +65-99,64-99 +22-95,43-96 +37-75,36-86 +60-92,16-45 +33-81,99-99 +2-49,48-48 +44-99,44-99 +8-79,78-80 +81-90,1-82 +98-99,28-99 +44-98,43-88 +48-78,30-98 +45-91,46-99 +3-91,3-91 +90-90,23-91 +24-75,30-75 +10-75,11-59 +10-43,11-44 +21-31,20-21 +2-2,3-97 +51-51,51-51 +22-67,67-67 +94-97,95-99 +98-98,63-97 +92-93,92-93 +7-88,7-89 +67-93,67-68 +48-92,47-91 +13-83,83-85 +6-7,6-79 +34-92,35-92 +39-42,35-41 +44-95,57-96 +8-61,7-7 +39-39,34-39 +28-57,28-57 +33-39,32-32 +15-15,15-72 +29-92,28-91 +76-87,85-96 +15-37,8-14 +39-54,39-40 +7-48,6-48 +55-75,51-74 +16-78,16-79 +34-34,35-84 +7-61,8-62 +80-92,31-50 +37-41,40-56 +3-82,82-99 +14-74,15-30 +91-91,18-91 +10-97,98-99 +76-96,76-77 +17-97,98-98 +24-89,23-24 +14-90,15-91 +89-98,90-99 +55-64,54-70 +17-99,18-98 +4-4,3-84 +42-99,43-61 +99-99,4-89 +21-86,22-86 +79-96,37-79 +99-99,36-96 +67-79,69-80 +27-55,27-28 +27-77,54-64 +99-99,18-95 +17-96,18-96 +15-45,14-45 +28-30,27-47 +61-83,82-84 +39-47,41-44 +57-95,94-94 +22-42,21-46 +6-75,75-75 +6-97,1-97 +26-49,27-50 +54-96,54-96 +63-87,46-86 +21-70,69-71 +61-90,89-91 +81-87,60-81 +5-94,6-6 +6-85,10-84 +37-40,36-39 +74-76,75-77 +9-96,99-99 +20-20,21-49 +1-2,2-89 +17-59,58-99 +20-91,20-91 +79-91,79-87 +51-92,91-93 +90-96,9-91 +72-82,43-98 +55-99,54-55 +3-20,6-81 +26-98,26-97 +7-97,7-8 +26-71,19-70 +24-60,97-98 +90-91,33-91 +12-69,11-68 +16-34,4-15 +8-24,18-25 +92-97,3-87 +44-96,96-96 +10-51,9-58 +3-62,4-63 +10-68,2-69 +21-85,85-86 +26-26,14-25 +46-87,1-99 +47-85,48-66 +15-89,89-98 +86-86,85-85 +45-62,52-63 +10-93,87-90 +19-83,21-30 +22-87,88-94 +27-96,28-96 +77-80,19-77 +4-22,21-21 +19-97,20-84 +43-94,22-95 +69-69,10-69 +1-94,1-94 +72-90,79-91 +16-16,17-67 +11-12,11-51 +94-96,12-65 +33-91,32-97 +38-38,30-38 +47-49,48-51 +92-96,18-92 +6-89,6-7 +32-32,33-37 +11-98,98-99 +13-38,38-39 +66-67,61-66 +81-83,4-82 +15-95,5-95 +82-99,13-97 +98-98,70-98 +16-19,12-20 +3-96,2-96 +25-70,26-71 +66-73,1-72 +4-79,69-78 +14-88,13-87 +89-91,26-90 +12-80,3-11 +42-91,90-92 +19-20,20-82 +89-91,33-90 +45-85,2-92 +43-90,91-96 +43-77,43-90 +12-94,19-95 +89-90,38-89 +95-98,96-98 +11-18,17-69 +3-52,1-4 +7-53,52-81 +61-72,66-73 +4-69,37-69 +29-94,30-75 +32-94,56-95 +1-98,3-94 +94-94,74-94 +13-70,14-85 +4-52,25-53 +65-91,83-87 +7-10,11-11 +31-32,39-77 +35-58,36-48 +28-66,27-76 +56-56,57-67 +13-64,13-64 +34-75,33-44 +2-88,1-99 +14-51,51-69 +14-75,10-89 +31-92,40-44 +32-41,42-89 +87-98,16-95 +49-50,50-91 +66-74,38-95 +74-75,74-88 +18-80,19-85 +1-98,1-98 +83-87,8-84 +58-91,52-92 +1-70,1-99 +18-40,12-18 +9-25,9-24 +31-73,17-83 +43-46,42-45 +3-5,4-83 +14-70,29-55 +1-76,62-77 +4-18,5-18 +72-97,71-71 +69-69,5-69 +92-94,73-93 +63-94,64-93 +32-69,13-69 +25-81,26-82 +18-66,5-92 +32-34,8-33 +5-46,4-88 +41-83,12-41 +35-63,51-63 +15-87,15-90 +18-82,17-18 +19-41,18-20 +10-93,10-10 +30-71,50-70 +10-64,9-72 +76-77,5-77 +59-59,59-59 +3-54,2-72 +7-8,7-25 +74-79,74-92 +9-9,10-55 +6-94,58-94 +27-86,60-86 +17-99,14-98 +23-26,21-25 +5-85,4-6 +60-86,20-85 +52-91,92-94 +74-74,45-75 +2-4,3-95 +67-93,47-93 +95-98,95-98 +93-93,50-93 +82-83,18-82 +6-97,5-7 +7-98,8-99 +24-63,12-64 +16-57,15-56 +1-92,1-96 +51-81,84-91 +2-88,1-1 +34-34,35-70 +91-98,9-67 +51-94,2-79 +5-99,6-98 +32-92,32-92 +4-69,3-3 +65-83,64-84 +63-65,11-64 +58-58,50-60 +21-88,74-86 +40-76,40-55 +47-49,16-48 +76-76,35-76 +52-72,71-71 +7-59,6-58 +2-84,1-3 +32-99,22-96 +8-23,8-22 +11-11,11-47 +29-29,30-85 +89-92,87-91 +12-36,12-37 +2-91,50-97 +12-34,29-35 +75-88,20-75 +7-88,7-7 +25-35,6-36 +35-41,34-87 +68-72,28-78 +12-99,1-98 +16-76,2-75 +6-75,7-76 +6-97,5-99 +4-98,4-97 +1-2,1-99 +3-91,91-92 +41-87,6-88 +40-61,9-79 +7-93,7-92 +71-72,72-85 +24-94,23-23 +42-90,89-90 +3-76,33-77 +55-58,56-59 +40-87,88-98 +16-16,17-99 +40-98,92-99 +33-39,23-38 +21-60,15-59 +40-44,40-44 +81-84,85-85 +33-96,40-67 +15-93,91-94 +82-83,81-95 +20-90,90-91 +37-58,38-58 +47-47,46-59 +3-71,2-2 +37-73,72-73 +12-86,86-87 +15-26,4-27 +21-22,21-31 +78-92,30-93 +2-85,2-85 +92-92,6-93 +15-79,80-80 +56-56,55-60 +14-61,61-79 +4-51,51-52 +8-8,7-7 +47-52,22-53 +41-85,77-85 +56-81,19-78 +78-88,62-87 +40-96,44-95 +56-58,28-58 +7-70,6-69 +8-44,8-9 +36-84,13-35 +67-93,77-93 +6-87,5-5 +59-86,9-60 +35-48,35-53 +81-96,82-97 +11-49,1-10 +14-14,15-27 +28-68,90-92 +46-46,47-61 +66-66,66-98 +1-40,2-40 +68-85,50-88 +25-25,26-97 +30-56,36-57 +40-96,39-97 +23-99,23-24 +88-97,61-88 +24-26,23-67 +92-99,93-93 +15-66,14-16 +13-76,12-75 +25-44,19-25 +6-13,9-14 +24-24,12-24 +10-98,99-99 +26-98,26-72 +2-47,2-47 +27-87,27-51 +40-89,41-74 +1-92,91-92 +8-99,7-98 +68-85,13-68 +71-93,70-70 +63-84,8-89 +17-73,85-85 +48-80,48-48 +73-91,94-99 +54-72,2-42 +15-78,15-78 +27-62,28-40 +10-60,12-60 +11-92,11-99 +7-7,8-97 +5-54,4-5 +9-85,84-84 +36-83,52-82 +1-92,1-2 +55-70,56-71 +35-36,36-92 +27-60,60-79 +1-95,1-97 +11-89,10-10 +24-90,42-83 +2-96,2-2 +25-88,97-99 +3-96,4-97 +22-88,22-23 +4-4,5-77 +5-54,55-90 +40-44,19-43 +4-60,3-94 +22-93,22-93 +9-83,24-83 +14-91,15-84 +1-82,1-84 +70-70,70-90 +29-87,87-93 +26-46,27-46 +10-70,8-10 +5-96,9-94 +18-84,18-85 +45-81,13-45 +35-77,35-78 +8-62,63-67 +14-84,17-72 +75-93,75-76 +33-99,30-32 +32-37,31-43 +29-29,30-52 +96-96,27-64 +68-70,65-70 +74-87,3-73 +1-71,1-1 +1-38,38-58 +61-61,34-61 +11-97,12-64 +1-98,3-98 +5-58,6-59 +22-59,58-84 +44-68,43-63 +18-53,52-52 +23-38,24-39 +79-96,30-80 +4-97,3-99 +1-85,1-85 +19-19,20-55 +28-73,29-29 +5-69,3-89 +30-30,31-85 +27-81,28-92 +37-65,36-69 +4-93,93-93 +42-42,43-55 +11-97,22-98 +4-90,5-68 +41-65,10-65 +20-80,21-21 +9-85,10-53 +13-89,13-88 +99-99,85-96 +98-98,11-97 +29-30,10-29 +76-90,73-78 +14-76,77-93 +60-70,59-75 +20-53,19-52 +65-66,1-65 +45-52,52-53 +13-84,18-84 +11-42,11-24 +14-47,5-15 +37-37,19-38 +34-43,42-42 +75-87,74-86 +23-64,22-23 +29-92,36-93 +7-98,7-8 +1-2,1-2 +3-92,3-92 +10-63,15-62 +4-96,3-95 +30-85,42-86 +67-81,5-68 +7-94,8-94 +10-82,2-83 +15-69,1-49 +84-91,55-81 +84-95,55-84 +10-10,9-98 +11-30,12-30 +31-31,31-66 +3-66,86-99 +7-77,6-76 +35-60,5-93 +73-98,34-99 +29-32,29-32 +4-20,3-99 +12-35,18-36 +10-73,72-72 +5-89,89-90 +12-12,1-11 +14-40,7-14 +11-99,6-98 +63-63,62-93 +19-91,18-90 +80-88,15-80 +36-75,22-37 +73-75,13-74 +43-92,42-91 +20-91,19-93 +18-94,17-99 +72-91,72-92 +80-82,26-55 +28-88,88-88 +12-51,12-51 +3-5,5-99 +17-57,9-58 +89-94,16-88 +2-97,1-99 +98-99,92-98 +56-67,6-94 +32-81,55-81 +50-75,31-75 +41-42,32-41 +16-73,4-36 +8-98,7-7 +24-51,43-50 +64-87,61-65 +30-44,30-44 +21-26,20-82 +14-41,9-41 +2-72,3-92 +42-66,43-67 +2-99,98-98 +22-99,21-83 +40-72,22-71 +8-75,14-74 +22-92,23-95 +32-61,7-60 +7-19,19-54 +46-51,62-91 +4-98,3-4 +60-65,51-60 +4-79,79-87 +19-91,19-97 +26-55,62-93 +5-5,5-99 +61-67,62-67 +26-71,5-25 +50-61,8-60 +4-87,2-88 +7-7,8-70 +23-98,23-92 +24-25,22-24 +2-4,3-87 +4-58,3-5 +6-56,55-97 +2-15,14-60 +51-51,1-52 +65-68,1-48 +21-52,52-53 +14-95,13-14 +38-39,40-83 +31-48,17-30 +2-43,3-3 +66-85,73-84 +28-80,21-80 +31-98,32-98 +50-64,23-63 +9-80,9-80 +38-67,4-49 +2-94,2-94 +19-27,28-74 +98-98,41-89 +9-95,21-66 +30-53,27-54 +8-8,9-80 +8-9,8-97 +33-63,32-86 +8-9,8-77 +44-89,44-81 +48-74,47-73 +34-35,35-38 +64-85,31-64 +20-76,4-76 +5-5,4-93 +11-88,98-99 +47-48,9-48 +54-82,28-87 +34-59,35-52 +8-81,80-82 +8-95,8-93 +6-66,7-35 +6-82,12-76 +64-77,19-76 +34-63,18-33 +1-99,2-61 +74-86,73-73 +46-92,34-93 +73-73,72-73 +47-48,47-70 +44-94,43-43 +22-51,26-52 +1-2,1-66 +18-23,15-22 +24-24,10-24 +12-88,89-98 +12-64,65-65 +16-32,16-32 +23-77,76-90 +75-86,85-99 +26-67,27-98 +66-98,67-97 +9-19,19-19 +20-59,21-60 +71-97,43-71 +21-44,22-50 +74-77,76-77 +19-46,20-47 +54-95,95-95 +95-95,79-96 +94-95,32-95 +14-15,15-69 +48-48,47-90 +18-85,18-85 +56-78,77-79 +22-51,5-57 +5-45,6-46 +11-13,12-13 +69-90,21-69 +4-97,3-97 +77-77,59-77 +16-60,17-61 +13-69,14-70 +20-22,5-21 +32-91,79-92 +33-52,33-52 diff --git a/src/main/resources/2022/day5.txt b/src/main/resources/2022/day5.txt new file mode 100644 index 00000000..9916e15d --- /dev/null +++ b/src/main/resources/2022/day5.txt @@ -0,0 +1,503 @@ +move 1 from 8 to 7 +move 1 from 2 to 7 +move 6 from 9 to 8 +move 1 from 9 to 1 +move 1 from 9 to 1 +move 3 from 3 to 6 +move 3 from 3 to 9 +move 1 from 9 to 2 +move 5 from 7 to 9 +move 9 from 1 to 6 +move 3 from 4 to 9 +move 2 from 9 to 2 +move 1 from 4 to 2 +move 1 from 3 to 9 +move 8 from 9 to 4 +move 14 from 6 to 7 +move 1 from 3 to 2 +move 5 from 4 to 2 +move 5 from 5 to 7 +move 4 from 2 to 1 +move 2 from 4 to 9 +move 1 from 4 to 3 +move 3 from 5 to 7 +move 1 from 8 to 6 +move 2 from 8 to 7 +move 2 from 1 to 2 +move 1 from 9 to 7 +move 2 from 1 to 3 +move 5 from 6 to 5 +move 4 from 5 to 7 +move 3 from 8 to 4 +move 20 from 7 to 1 +move 11 from 7 to 5 +move 1 from 6 to 9 +move 3 from 9 to 2 +move 12 from 1 to 9 +move 2 from 8 to 3 +move 4 from 2 to 8 +move 8 from 2 to 1 +move 4 from 8 to 9 +move 1 from 2 to 5 +move 12 from 9 to 7 +move 4 from 4 to 9 +move 4 from 9 to 5 +move 13 from 5 to 4 +move 4 from 4 to 7 +move 1 from 7 to 9 +move 2 from 9 to 5 +move 9 from 1 to 2 +move 1 from 8 to 3 +move 5 from 4 to 2 +move 1 from 3 to 6 +move 7 from 2 to 8 +move 6 from 1 to 6 +move 6 from 8 to 7 +move 6 from 2 to 1 +move 3 from 9 to 3 +move 7 from 3 to 7 +move 4 from 4 to 9 +move 1 from 8 to 9 +move 1 from 3 to 9 +move 1 from 2 to 4 +move 1 from 9 to 6 +move 5 from 1 to 9 +move 1 from 4 to 9 +move 2 from 9 to 1 +move 8 from 6 to 7 +move 4 from 9 to 7 +move 2 from 5 to 2 +move 2 from 1 to 9 +move 14 from 7 to 4 +move 22 from 7 to 2 +move 2 from 7 to 4 +move 3 from 7 to 5 +move 9 from 4 to 7 +move 6 from 2 to 4 +move 8 from 4 to 3 +move 14 from 2 to 9 +move 2 from 3 to 9 +move 3 from 2 to 9 +move 4 from 4 to 2 +move 1 from 4 to 5 +move 1 from 1 to 4 +move 5 from 7 to 8 +move 1 from 1 to 3 +move 4 from 5 to 2 +move 6 from 3 to 9 +move 1 from 3 to 4 +move 4 from 8 to 9 +move 2 from 4 to 6 +move 4 from 5 to 3 +move 1 from 7 to 6 +move 1 from 8 to 5 +move 3 from 3 to 1 +move 33 from 9 to 5 +move 5 from 2 to 1 +move 1 from 3 to 5 +move 1 from 7 to 6 +move 18 from 5 to 1 +move 1 from 2 to 8 +move 6 from 5 to 4 +move 1 from 8 to 7 +move 2 from 4 to 1 +move 4 from 1 to 2 +move 19 from 1 to 2 +move 4 from 6 to 8 +move 4 from 1 to 8 +move 14 from 2 to 9 +move 5 from 2 to 4 +move 1 from 8 to 2 +move 8 from 2 to 5 +move 5 from 8 to 4 +move 4 from 9 to 7 +move 1 from 8 to 1 +move 16 from 5 to 4 +move 15 from 4 to 5 +move 1 from 9 to 5 +move 5 from 7 to 6 +move 2 from 7 to 6 +move 1 from 1 to 9 +move 7 from 6 to 7 +move 1 from 8 to 5 +move 1 from 1 to 9 +move 12 from 5 to 7 +move 7 from 5 to 9 +move 12 from 7 to 2 +move 1 from 7 to 4 +move 7 from 4 to 7 +move 2 from 9 to 4 +move 5 from 4 to 9 +move 8 from 2 to 3 +move 4 from 2 to 4 +move 9 from 4 to 8 +move 6 from 3 to 5 +move 8 from 7 to 3 +move 1 from 4 to 3 +move 7 from 8 to 9 +move 4 from 5 to 4 +move 6 from 3 to 1 +move 4 from 3 to 4 +move 1 from 3 to 6 +move 6 from 4 to 9 +move 1 from 6 to 5 +move 17 from 9 to 4 +move 3 from 7 to 3 +move 1 from 7 to 9 +move 2 from 5 to 3 +move 2 from 1 to 3 +move 2 from 8 to 9 +move 1 from 5 to 1 +move 14 from 4 to 5 +move 2 from 3 to 2 +move 1 from 7 to 6 +move 10 from 9 to 4 +move 12 from 9 to 4 +move 9 from 4 to 5 +move 1 from 2 to 9 +move 13 from 5 to 9 +move 2 from 5 to 1 +move 1 from 2 to 9 +move 3 from 4 to 2 +move 12 from 4 to 7 +move 8 from 5 to 7 +move 1 from 1 to 9 +move 1 from 6 to 4 +move 1 from 5 to 4 +move 1 from 4 to 8 +move 5 from 3 to 4 +move 10 from 9 to 6 +move 3 from 6 to 2 +move 7 from 6 to 5 +move 6 from 5 to 4 +move 1 from 8 to 5 +move 1 from 1 to 4 +move 2 from 7 to 2 +move 5 from 4 to 9 +move 2 from 5 to 8 +move 1 from 1 to 3 +move 2 from 1 to 7 +move 6 from 7 to 9 +move 9 from 9 to 8 +move 1 from 1 to 3 +move 4 from 2 to 7 +move 11 from 7 to 3 +move 11 from 8 to 6 +move 7 from 3 to 1 +move 4 from 7 to 2 +move 3 from 2 to 9 +move 8 from 1 to 5 +move 2 from 7 to 5 +move 2 from 2 to 9 +move 2 from 3 to 9 +move 11 from 4 to 7 +move 7 from 9 to 5 +move 6 from 6 to 5 +move 2 from 2 to 9 +move 1 from 2 to 3 +move 6 from 9 to 4 +move 3 from 9 to 1 +move 4 from 3 to 5 +move 6 from 7 to 1 +move 2 from 6 to 3 +move 2 from 9 to 2 +move 3 from 3 to 2 +move 3 from 6 to 8 +move 2 from 7 to 5 +move 20 from 5 to 6 +move 8 from 5 to 1 +move 1 from 5 to 9 +move 2 from 8 to 4 +move 1 from 8 to 7 +move 16 from 1 to 8 +move 8 from 8 to 9 +move 4 from 2 to 4 +move 1 from 1 to 5 +move 1 from 5 to 4 +move 3 from 8 to 4 +move 14 from 4 to 6 +move 5 from 8 to 7 +move 6 from 7 to 8 +move 29 from 6 to 2 +move 3 from 9 to 8 +move 21 from 2 to 3 +move 1 from 8 to 3 +move 6 from 9 to 4 +move 8 from 3 to 5 +move 7 from 8 to 4 +move 7 from 3 to 9 +move 3 from 7 to 2 +move 12 from 4 to 8 +move 2 from 3 to 1 +move 2 from 9 to 1 +move 1 from 6 to 7 +move 1 from 7 to 6 +move 1 from 6 to 3 +move 3 from 1 to 8 +move 2 from 4 to 1 +move 4 from 6 to 1 +move 5 from 2 to 7 +move 1 from 1 to 2 +move 5 from 1 to 2 +move 2 from 8 to 1 +move 1 from 4 to 5 +move 9 from 8 to 4 +move 3 from 7 to 9 +move 7 from 5 to 7 +move 2 from 5 to 9 +move 4 from 9 to 2 +move 3 from 3 to 2 +move 5 from 2 to 7 +move 2 from 8 to 2 +move 2 from 7 to 3 +move 1 from 8 to 6 +move 2 from 1 to 2 +move 1 from 6 to 7 +move 1 from 8 to 1 +move 12 from 7 to 1 +move 5 from 2 to 7 +move 7 from 4 to 2 +move 2 from 4 to 1 +move 5 from 3 to 8 +move 7 from 1 to 9 +move 4 from 7 to 1 +move 7 from 1 to 5 +move 12 from 9 to 2 +move 27 from 2 to 4 +move 3 from 8 to 9 +move 6 from 2 to 5 +move 6 from 1 to 8 +move 1 from 7 to 6 +move 9 from 5 to 2 +move 3 from 9 to 2 +move 13 from 4 to 5 +move 10 from 2 to 7 +move 1 from 9 to 8 +move 11 from 5 to 7 +move 1 from 8 to 7 +move 1 from 2 to 6 +move 13 from 4 to 3 +move 23 from 7 to 4 +move 1 from 6 to 9 +move 1 from 2 to 4 +move 7 from 3 to 5 +move 1 from 9 to 8 +move 19 from 4 to 1 +move 2 from 4 to 1 +move 1 from 7 to 6 +move 1 from 4 to 5 +move 1 from 5 to 7 +move 11 from 5 to 1 +move 2 from 5 to 4 +move 2 from 6 to 9 +move 3 from 8 to 2 +move 2 from 8 to 1 +move 3 from 2 to 1 +move 1 from 9 to 5 +move 6 from 1 to 3 +move 1 from 9 to 7 +move 2 from 7 to 5 +move 2 from 8 to 6 +move 1 from 3 to 2 +move 2 from 8 to 5 +move 1 from 2 to 1 +move 3 from 4 to 1 +move 3 from 5 to 1 +move 2 from 5 to 1 +move 2 from 6 to 9 +move 1 from 9 to 6 +move 1 from 4 to 5 +move 1 from 9 to 8 +move 1 from 8 to 6 +move 8 from 1 to 6 +move 7 from 1 to 8 +move 9 from 1 to 6 +move 1 from 5 to 3 +move 3 from 8 to 4 +move 11 from 3 to 4 +move 1 from 3 to 6 +move 10 from 6 to 8 +move 13 from 1 to 6 +move 3 from 4 to 5 +move 7 from 8 to 6 +move 3 from 8 to 5 +move 6 from 5 to 3 +move 22 from 6 to 9 +move 4 from 3 to 6 +move 4 from 9 to 5 +move 1 from 1 to 5 +move 2 from 3 to 4 +move 2 from 1 to 5 +move 1 from 9 to 2 +move 5 from 8 to 3 +move 2 from 9 to 2 +move 11 from 6 to 9 +move 3 from 2 to 7 +move 1 from 6 to 7 +move 12 from 9 to 8 +move 4 from 7 to 1 +move 12 from 4 to 8 +move 2 from 4 to 7 +move 1 from 1 to 8 +move 1 from 5 to 1 +move 19 from 8 to 4 +move 4 from 5 to 1 +move 1 from 7 to 4 +move 1 from 7 to 1 +move 3 from 3 to 4 +move 2 from 8 to 4 +move 1 from 5 to 7 +move 1 from 7 to 9 +move 8 from 1 to 8 +move 1 from 1 to 4 +move 1 from 3 to 9 +move 1 from 3 to 5 +move 1 from 5 to 2 +move 7 from 8 to 7 +move 16 from 4 to 7 +move 1 from 7 to 4 +move 3 from 8 to 2 +move 14 from 7 to 4 +move 1 from 5 to 8 +move 5 from 7 to 5 +move 16 from 4 to 5 +move 3 from 5 to 4 +move 3 from 2 to 1 +move 1 from 7 to 9 +move 11 from 4 to 2 +move 3 from 8 to 6 +move 2 from 1 to 8 +move 1 from 4 to 9 +move 18 from 5 to 1 +move 1 from 8 to 7 +move 3 from 7 to 9 +move 18 from 9 to 3 +move 3 from 6 to 9 +move 7 from 1 to 6 +move 1 from 8 to 4 +move 1 from 4 to 9 +move 3 from 6 to 4 +move 5 from 9 to 2 +move 2 from 4 to 7 +move 7 from 2 to 8 +move 1 from 7 to 3 +move 2 from 6 to 8 +move 1 from 9 to 5 +move 1 from 6 to 8 +move 1 from 4 to 8 +move 1 from 5 to 3 +move 1 from 7 to 5 +move 8 from 8 to 7 +move 10 from 2 to 6 +move 1 from 9 to 3 +move 6 from 6 to 2 +move 5 from 6 to 2 +move 7 from 2 to 7 +move 12 from 1 to 6 +move 2 from 2 to 1 +move 1 from 2 to 5 +move 4 from 7 to 6 +move 12 from 3 to 1 +move 2 from 7 to 2 +move 9 from 3 to 8 +move 1 from 2 to 6 +move 1 from 5 to 4 +move 9 from 6 to 5 +move 1 from 7 to 6 +move 1 from 4 to 9 +move 9 from 6 to 7 +move 7 from 8 to 3 +move 6 from 3 to 1 +move 4 from 8 to 3 +move 5 from 3 to 1 +move 1 from 9 to 8 +move 2 from 8 to 9 +move 5 from 5 to 7 +move 14 from 7 to 8 +move 1 from 9 to 4 +move 2 from 2 to 1 +move 3 from 5 to 3 +move 2 from 3 to 1 +move 1 from 4 to 6 +move 6 from 8 to 6 +move 6 from 8 to 3 +move 3 from 6 to 1 +move 2 from 8 to 9 +move 19 from 1 to 6 +move 3 from 9 to 3 +move 6 from 3 to 4 +move 6 from 6 to 2 +move 4 from 3 to 9 +move 1 from 7 to 9 +move 2 from 5 to 7 +move 5 from 9 to 6 +move 6 from 7 to 2 +move 11 from 2 to 5 +move 2 from 7 to 4 +move 4 from 4 to 3 +move 2 from 4 to 8 +move 12 from 1 to 2 +move 1 from 8 to 2 +move 8 from 5 to 7 +move 2 from 4 to 9 +move 2 from 7 to 1 +move 4 from 2 to 3 +move 1 from 8 to 6 +move 1 from 1 to 5 +move 2 from 9 to 1 +move 2 from 7 to 3 +move 2 from 5 to 2 +move 1 from 5 to 7 +move 2 from 7 to 8 +move 1 from 5 to 7 +move 5 from 3 to 4 +move 3 from 1 to 7 +move 1 from 2 to 4 +move 15 from 6 to 1 +move 4 from 4 to 1 +move 4 from 2 to 3 +move 8 from 3 to 2 +move 5 from 2 to 4 +move 1 from 8 to 6 +move 1 from 8 to 9 +move 1 from 3 to 1 +move 3 from 7 to 3 +move 5 from 7 to 6 +move 4 from 2 to 9 +move 6 from 2 to 6 +move 4 from 9 to 6 +move 12 from 1 to 5 +move 6 from 4 to 1 +move 1 from 3 to 6 +move 4 from 5 to 8 +move 7 from 5 to 3 +move 3 from 8 to 2 +move 1 from 2 to 3 +move 1 from 9 to 5 +move 1 from 4 to 5 +move 1 from 8 to 5 +move 8 from 6 to 9 +move 10 from 1 to 4 +move 3 from 6 to 1 +move 9 from 3 to 6 +move 1 from 3 to 8 +move 1 from 2 to 4 +move 6 from 9 to 1 +move 1 from 1 to 4 +move 10 from 1 to 6 +move 1 from 8 to 6 +move 13 from 6 to 7 +move 1 from 2 to 1 +move 1 from 9 to 6 +move 9 from 7 to 5 +move 1 from 9 to 4 +move 3 from 7 to 1 +move 3 from 5 to 6 +move 10 from 4 to 7 +move 5 from 6 to 5 +move 3 from 4 to 5 +move 13 from 6 to 9 +move 7 from 5 to 3 +move 6 from 3 to 2 +move 5 from 6 to 4 +move 4 from 2 to 8 diff --git a/src/main/resources/2022/day6.txt b/src/main/resources/2022/day6.txt new file mode 100644 index 00000000..d549e648 --- /dev/null +++ b/src/main/resources/2022/day6.txt @@ -0,0 +1 @@ +rqwqtwwrmrqqrcrtrpppjrjgrgjgqgttgbbhppftpfpdpmpsstffqvfqvvdjjpllltqltqtrrzlllbldbdsdqqgpqggzccgbgnnmjmljmljldjldjjlnnhndhdmmslmslmlhmmntnrtnrnbrbqrqhqfftwftfsfzfcfrrzllchcwwtwstwwjwrjjfwwgzwzqzpzhzqhqbhqhssltsszhsszdssrwssdppjcpjjrwjwnwjnnzjjhsjhsjsjvvtffffqfflglwglgbgpbgbgghfghfhdfhdfhfssqppvlvslltwwhwvwpwgggnpnnmqnntqnnlhhdbhdbbtvvcrrcgrrdrvrjvvlmlnmndnmnrncnznsnsqnsswrwzwmwzzbpbhphqhpqpbpqpjpjvpvwpvwppdvdhdccqbccfncctrcrjcjjdsdhdnhhwpwlwwbmbhmbhhpzhhccvffqqnsqqmnnspnnpfpzppspgsppgbbdwbbdcchfhgfhfllljtllnjlnlddvcdvdqvvqwqppprtpthtthqqfbqqpfpzfpfcfsscrsccbgbngbbgdbbpgpqqlmqlmmgffqqqsbqbtblbwbqqvbqvbqvvnzvzpvvqhvqqtltptllbflbflbflltddlblflvfvbffmsffhlhshmmgbbgjjdndqqmqllzjzvvhjhnhcnchhznnhhppwqpwpffwvwzzppwpfwftwtnnqbnqnrnrzznffzzblzlvzlzrrszscsqcssbggcgvvddsttgqqgwgcclzzszddlvddvbddrlrcllrblrrhlldzdtdccqllsblsszlszzdllhjljhhhzhffdwfdwfddwdtdrtdtntddldsllqffdvdhdpdhdrdprprrhggdqgghggmwgmghhchlhmllrnrdrcrqccbqqfbqbccjpjhhvppcwpwffmmzzfqflfjfdfbfqqtmthmttwftwwpmpzplzzpvvgppsbpbccbtcbcddzbzwwmsscrcctgtgjgtjthhjzzcqqmmmvccwjcwjwzzwnnwgwtgwwbsbvbccrscccnggfjfwfjfrfsfddncdncndnqqwzzmssbdsbswswdddpdqdbddcvcmmwwssrtrrlddndmdtmtdmttwwmsmffwqwvwbwhbbqfqqgcqcmctctntjntnbnrbrmbbqtqccqbcbvbnbqnnghgbbmfmwmdwmdmpmwppdwpdwwnzwnwrnwrnntqnttcmcqqbrqrttsjtstcscpcspsnswsggrhggjrjjbhhbnbmmdlmddtqdtdrdwwjvjgjjdhjdddbwwsfflppbwbcbpbjjzqznnrwnnvmvjvwvqqrlljgjmjjqhjhwjhwjjsvsnvvlwlqqjpjjbsjjcddtfthffrqfrqrfqfrfllfzzqllztltnltntpttqmmgwmwwwjjdrjrzrlrwlwzzzzphpphvphvphvpvdvfdflljgglrlrqlrrfpfqpqnpqpmmblbflbfbpfpwpjwpjpbjpjmjljblldbllnrnjjjljrlrcrrgzgbbzrznzzhnzhhtmhmqhmqqnzzvfzvzfftjftfvvpmvppwzzhnzhzvvwzwwqcwctwwgrrtgglgngsgvgwvwpvpbbrvrvwrvwvbwwpsprrrcbbpqppfjjjqnjndnmddvsvlslmmwwdwcchmmrjmjwwsrwrhwwpcgmpmvbdmlmqbnblbbgtmtgqslnvcnmwrflrnwhqzrsnwhncwdvbcpjrqsscwzrjvslhscpvmqjnltwhshjmbhgttbzllrvpnhgdmwtddbwmpgbhrndpgwzfvqdmpcvhlnjnqbwqmshgwhmfjgsbscsjtfbfvmlljqwwjtnltbzjpcqdfmdldvmsnmzqmghcvhlpjzzszcpvldrflbcppzwgppfpbslplrqwgbfwpwbtbnrmbrrrpqndzvhmlhvtlnjvhdrhhvmwzjntsgffjsdpdlhnlslnbmbsmdsvpmpbjpjcwhbpfnhbmttfglglnnhhcqvbpvnrwcszwjsdhqwctrpgsrcbfpzhbnrbllrlflqdlgzwpwgwwvmbsppbcjcdltbgwfndqjlvndhtclfmwnqrbfvvqdzspfcslplhtmsqqtrcdvbhfscvnmzplcglwnzbvgflclclqmdgfzjqqrrmpcqrzgqcnzbmncmvdzrmmvfqrrqzqbjmjgjwmfbnmmgvmzsgjjspjqbvfhrdvllgqsffjnfqdthjbjwhwqdqhsnctwgbszvrsbwbpptcjjvftnhdmwmhtjrjrlrdrqjznhqftgtldnpbrlprjmplmwdbzqpmwwvcqccjlhqbhcjprvrfmmfmljwmbrlhcglthgbmrfmbpsztfcglpzlfbpjhmvcmvrprmvmrvvgbbllzschwshhfbnmgwrbhlqvsdjdmmbtjzthwssghtqvhtqcswdhbwhphhsrwhwwtslwvrhpgqfmftnrtqpwfqqdgftdlqfndjlzhvlrthnqdqrzpprdgwwqlplrmqtdqgbdntmjcjhlbbmctvnnhtppfbjpsbmndbdplqlfqfhzqvtqcvmprwbhdtjrqrqvmcssqnfqwtchmjfjlpwsghplbthdnbhfbhhphdmlmtjcvmzjbnqbfldrvlmjfnnrlsnwrtnrpfqdhchltmbvjzhgjwzblqdthmffztqvzzfszmdqdzlfpbfgjfdjqscrhvjflbllnlghncczrlpcbwpnmzcnqhbfnlmnbqvmwvbchwhlfcssctsdcwmtfdgbhljwprfncdgwlgzzmvfqrdsmlwbrmbmtzqqdqdpzvtbstscglrwdpndnstrhgjchnpzsvcjngmzsddwsbllpvqqzzjlmsbncbndqmqphzqzcngjzpfnjmsvngtcvhhjsssrnhjrsmvbsrdjcrppvgsqbqjzbrhjqlgmqfclbrdhwwjdlsjnmjcjrmsstngswrhmdqthprcbrndfpdjgpqtfmmfvbztqdhzhzbzhjjpfgnvrmspdvmhfvbvztmlrhfqfdcfnzzndlfldpfhrbjrwlwnprdmqjwppbrdjhpbvnrvjlrbwdwttzhqqgcclbwghbgrhcvwjrrchqgzztrjgrltcpdscjdfcphndfzdqsbpsjrljdnflfvrzcrjflddfgpvnpmdqbhzwbfrpzsnpbcbgfchvvmqpnfpvvdvhfnpbfzwmbnlpqzgrpwtsjbpzdrsfmnfqwqvpgnrjhmvmphlfdpfhdjljlzftdzdvhjrvjdctwfrctglwmrtdlrvmhcqvfvpgmstghczmvclptzspdsrlvrgvjtvflhsmqswdpqjrrnhgrggzmcpqsctqbhpqrsbstwzgzghqgltcpbrhbcdqlhfjhlcrnhrpjdzlzqqprvzntbjztqgdqqttmbpbcfbjmdjqsflbczmfnsjdzcnnmjjllhvwbwlgrlpvbffwjvctwnrsfqdnwntscpsjnshhdmcqmcpscrmzltldwlmfnbhbtprsgtsbvzfrsfpvmqjzjqqhwdjjzvbhrvtbscrcpzrqsbgfbpwqfmbsrlhhtntjmtrtlwqsdbmgtdlrwfdnmwwzlltbrjgghbstbnffzmzzdlcdgvmrzsjnqjvczmhrgwbrblrqfmzbbcnfsbfpgjsmptzbclfdnwfgbzlpbgqrdhdmfjdnlzczdpvtbzdmrthslngbrldllfcjplhglmwsfpqjnrgpgqfmbbwchbrqqsncfwnmgdmtchdhlzzqjvtvtvgqbtwvwpsjqwdqhrlfmdgdzchvfbcmqjllpjtnphwqvfwpcjmzqhsbwlcmbsgththrsjtnzlsrcptgtrfcwptbstcsdzbwjljzjztzbqsjdvwglpbpgdjtthjjmsnljltglqcszbzqmblfpncntjzzhmjffldcrcvjjswvzlfffrmsgjtpzggtlpfwpwbmhmggpnmzwrgdjrhglnhfdcjdfjtdjvrnlgqtfqmpgjcvcmnwhhbczwwntfbmgssglngqlttfpcznswvmbprsrzljtlwlljnbbrnwdvvlsbdv diff --git a/src/main/resources/2022/day7.txt b/src/main/resources/2022/day7.txt new file mode 100644 index 00000000..659f8b07 --- /dev/null +++ b/src/main/resources/2022/day7.txt @@ -0,0 +1,986 @@ +$ cd / +$ ls +dir bnl +dir dmpsnhdh +272080 dncdssn.hdr +dir fcnqg +6067 hjpmqrq +dir jvwtm +dir ldztz +dir lmmw +dir wthvqw +dir zpdnprb +$ cd bnl +$ ls +dir dhw +dir dmpsnhdh +dir lmw +dir vgbqbrst +$ cd dhw +$ ls +237421 vccwmhl +$ cd .. +$ cd dmpsnhdh +$ ls +dir chf +dir mjpbhjm +dir zwhpwp +$ cd chf +$ ls +4679 lmw.wmp +217367 wwnfv.qqr +dir zfgznbz +$ cd zfgznbz +$ ls +179409 cnj.gdn +171574 vglqg +$ cd .. +$ cd .. +$ cd mjpbhjm +$ ls +dir crf +dir hqnj +dir lmw +18783 lmw.rwr +302608 twpq +166891 vqczlg +$ cd crf +$ ls +32183 dltmqht +240428 frqqdsr.hbf +224910 sgtnrvrt +$ cd .. +$ cd hqnj +$ ls +261723 cgstb +77979 dmpsnhdh.cmd +$ cd .. +$ cd lmw +$ ls +50307 fcqrwd +$ cd .. +$ cd .. +$ cd zwhpwp +$ ls +141133 gdngm.mps +$ cd .. +$ cd .. +$ cd lmw +$ ls +dir dvv +267473 jmqgrh.dlz +295139 rrqjwpm +$ cd dvv +$ ls +114536 gmlmbrrw.wdm +102061 lmw +$ cd .. +$ cd .. +$ cd vgbqbrst +$ ls +105102 dmpsnhdh.bgl +269054 gmwgjf.fzz +dir jbdtpnw +245266 jzsjvgl +216220 lmw.gtb +dir rflp +dir twpq +$ cd jbdtpnw +$ ls +27543 cjvvmzp +$ cd .. +$ cd rflp +$ ls +137601 frqqdsr.hbf +83444 rrqjwpm +$ cd .. +$ cd twpq +$ ls +dir rlbsdj +36846 tnrqzjdd +$ cd rlbsdj +$ ls +56078 bvndq +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd dmpsnhdh +$ ls +dir fnpwwhtj +dir lmw +9090 mgjpsvl.jlh +186374 pbb.zln +$ cd fnpwwhtj +$ ls +dir cgp +$ cd cgp +$ ls +81938 hjpmqrq +281971 jvszf +151057 wmr.bnf +$ cd .. +$ cd .. +$ cd lmw +$ ls +dir bfbv +56929 pbb.zln +dir rrqjwpm +dir sngm +$ cd bfbv +$ ls +92667 qrrttb.jgp +$ cd .. +$ cd rrqjwpm +$ ls +25739 cqljn.zqw +91325 dncdssn.hdr +$ cd .. +$ cd sngm +$ ls +282163 jgrj +dir lmw +237524 lmw.dff +153497 lmw.ntg +dir lqd +dir szn +143535 tvpvc.qpr +98326 vbfgh +$ cd lmw +$ ls +32484 dncdssn.hdr +dir glwr +$ cd glwr +$ ls +144719 frqqdsr.hbf +$ cd .. +$ cd .. +$ cd lqd +$ ls +231401 dncdssn.hdr +dir jnjqmvg +dir lmw +199704 rrqjwpm +$ cd jnjqmvg +$ ls +104947 trpsrfjz.brg +$ cd .. +$ cd lmw +$ ls +230298 rrqjwpm.nnv +158947 wfv.qrb +$ cd .. +$ cd .. +$ cd szn +$ ls +197974 frqqdsr.hbf +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd fcnqg +$ ls +251609 dncdssn.hdr +289497 jdjmftqs +228459 qbmthcq +$ cd .. +$ cd jvwtm +$ ls +dir dmpsnhdh +47959 pbb.zln +dir tlr +dir twpq +dir wbgcsw +dir zjmldjdh +$ cd dmpsnhdh +$ ls +247567 bnl +102471 bnl.wdm +80054 fhqvp.hfm +dir llhp +dir mnsbh +dir mpplsfjp +20844 mtvl.lmp +$ cd llhp +$ ls +180255 dmpsnhdh +$ cd .. +$ cd mnsbh +$ ls +267627 dmpsnhdh +$ cd .. +$ cd mpplsfjp +$ ls +dir bnl +233742 tcnpvqc.tdr +$ cd bnl +$ ls +243223 fcqrwd +$ cd .. +$ cd .. +$ cd .. +$ cd tlr +$ ls +dir vcsngm +dir wndmt +$ cd vcsngm +$ ls +36434 czs.dnv +$ cd .. +$ cd wndmt +$ ls +dir fvmtfcqd +dir nvdb +dir nwqqgl +dir sbspgnpm +$ cd fvmtfcqd +$ ls +237025 nzttjt.rzh +$ cd .. +$ cd nvdb +$ ls +235328 dnrqwqtp.vfc +51984 rhblt.mfz +51332 rjhvhw +$ cd .. +$ cd nwqqgl +$ ls +203534 cjghw +dir cljbrh +$ cd cljbrh +$ ls +133820 lmw.dnd +$ cd .. +$ cd .. +$ cd sbspgnpm +$ ls +270010 hjpmqrq +$ cd .. +$ cd .. +$ cd .. +$ cd twpq +$ ls +dir dmpsnhdh +dir hbchdjjp +247649 hjpmqrq +29891 rrqjwpm +72407 twpq.crb +$ cd dmpsnhdh +$ ls +251490 dncdssn.hdr +222231 hjpmqrq +102058 pbb.zln +$ cd .. +$ cd hbchdjjp +$ ls +70058 dprrmd.qcd +230958 tsdbl.bnq +$ cd .. +$ cd .. +$ cd wbgcsw +$ ls +292028 bhtfcf +dir bnl +dir bqq +dir ctnlpgt +247888 hblhfvwj +dir hbqm +277949 pbb.zln +106225 rrqjwpm +125927 ssqpmlfb.gwm +dir zqmjwsgz +dir zwwphs +$ cd bnl +$ ls +dir fbbr +240500 frqqdsr.hbf +dir mzfrdl +25137 srqlww.mcj +dir tqgrdz +dir ztrnq +$ cd fbbr +$ ls +84414 mjbw.dhs +$ cd .. +$ cd mzfrdl +$ ls +135647 bccwgn +dir cjdptqgh +dir hwdnrqns +dir prq +$ cd cjdptqgh +$ ls +147946 mdgl.drz +11972 pbb.zln +$ cd .. +$ cd hwdnrqns +$ ls +dir dmpsnhdh +$ cd dmpsnhdh +$ ls +254432 phthmn +$ cd .. +$ cd .. +$ cd prq +$ ls +75827 dmpsnhdh.rtl +$ cd .. +$ cd .. +$ cd tqgrdz +$ ls +251475 bjwnll.rlw +$ cd .. +$ cd ztrnq +$ ls +208497 bnl.dtr +179376 gqnbswcj.hht +$ cd .. +$ cd .. +$ cd bqq +$ ls +202201 bnl.lbm +$ cd .. +$ cd ctnlpgt +$ ls +269484 vsfvzrpr +$ cd .. +$ cd hbqm +$ ls +74455 bvnfz +42748 pbb.zln +$ cd .. +$ cd zqmjwsgz +$ ls +146194 pbb.zln +$ cd .. +$ cd zwwphs +$ ls +209587 mtbzd.nwb +$ cd .. +$ cd .. +$ cd zjmldjdh +$ ls +dir cdq +dir mdclfbs +dir tfc +132043 wrm +$ cd cdq +$ ls +289173 twpq.mrn +$ cd .. +$ cd mdclfbs +$ ls +64639 bnl.jwf +dir hpdgt +72868 hznfj.nmj +159467 lmw.bfz +$ cd hpdgt +$ ls +52760 fcqrwd +54661 tzgt.hvh +$ cd .. +$ cd .. +$ cd tfc +$ ls +185481 bwntlh +18925 fcqrwd +$ cd .. +$ cd .. +$ cd .. +$ cd ldztz +$ ls +128430 bwz.fcz +dir dmpsnhdh +dir lbqgz +dir znrnj +$ cd dmpsnhdh +$ ls +238193 dncdssn.hdr +285939 hwfngq.dpw +$ cd .. +$ cd lbqgz +$ ls +171931 vgrp +$ cd .. +$ cd znrnj +$ ls +153738 vmwwbjqd +$ cd .. +$ cd .. +$ cd lmmw +$ ls +dir bqqnsfdj +163303 fcqrwd +43453 frqqdsr.hbf +33319 hjpmqrq +dir rlpcqtzg +$ cd bqqnsfdj +$ ls +dir bnl +2251 hjpmqrq +14707 rrqjwpm +dir tlnbvhdl +$ cd bnl +$ ls +33357 bnl.fqp +151237 bnl.vbs +40294 dmpsnhdh.hwz +76455 dncdssn.hdr +290341 hjpmqrq +dir lmw +dir nqw +$ cd lmw +$ ls +dir sfj +$ cd sfj +$ ls +156532 fcqrwd +$ cd .. +$ cd .. +$ cd nqw +$ ls +59928 dncdssn.hdr +$ cd .. +$ cd .. +$ cd tlnbvhdl +$ ls +183301 hjpmqrq +$ cd .. +$ cd .. +$ cd rlpcqtzg +$ ls +258638 dqt.mlc +$ cd .. +$ cd .. +$ cd wthvqw +$ ls +224501 pbb.zln +$ cd .. +$ cd zpdnprb +$ ls +dir bnl +dir ffg +dir jljlwpsv +212081 lrzc.lhj +dir rrqjwpm +dir twpq +dir vlgsrtm +$ cd bnl +$ ls +124009 hjgjf +74860 hjpmqrq +84996 lrdl.swf +dir pnzmp +$ cd pnzmp +$ ls +dir btbtlrs +128636 nfzf +$ cd btbtlrs +$ ls +107651 hhzbwd.wzj +$ cd .. +$ cd .. +$ cd .. +$ cd ffg +$ ls +57918 jwzbs.tnt +$ cd .. +$ cd jljlwpsv +$ ls +188175 dmpsnhdh.nnb +46693 fcqrwd +111557 pbb.zln +$ cd .. +$ cd rrqjwpm +$ ls +dir bftw +dir ccsfws +87225 mccw +290654 pbb.zln +147394 twzqc.pbz +52983 wsvgf +dir wwfgbzqh +$ cd bftw +$ ls +dir brl +167154 crs +dir lmw +dir rrqjwpm +dir twpq +174963 twpq.wjl +dir vnfhb +dir wcldzp +$ cd brl +$ ls +297937 wspcnp +$ cd .. +$ cd lmw +$ ls +166695 mcjql.jrv +$ cd .. +$ cd rrqjwpm +$ ls +198762 mwn +$ cd .. +$ cd twpq +$ ls +141835 jlwf.hcd +$ cd .. +$ cd vnfhb +$ ls +128626 tvmwhq.wfn +$ cd .. +$ cd wcldzp +$ ls +dir ncq +dir twpq +$ cd ncq +$ ls +dir wrtw +$ cd wrtw +$ ls +133331 fcqrwd +$ cd .. +$ cd .. +$ cd twpq +$ ls +151811 fcqrwd +$ cd .. +$ cd .. +$ cd .. +$ cd ccsfws +$ ls +100548 twpq.ppm +$ cd .. +$ cd wwfgbzqh +$ ls +dir lmw +dir mfms +dir pjbjgbcl +204154 qtflzwm +226500 vdmjj.htj +dir wzqbwr +$ cd lmw +$ ls +dir bgl +95150 dncdssn.hdr +119653 frqqdsr.hbf +97941 hjpmqrq +dir jqthwzj +$ cd bgl +$ ls +dir lmw +dir rrqjwpm +$ cd lmw +$ ls +233655 wmdldvbz +$ cd .. +$ cd rrqjwpm +$ ls +242918 frqqdsr.hbf +227581 hjpmqrq +dir hsvnmlp +dir nsch +25524 pbb.zln +dir qlgg +dir twpq +67453 twpq.fms +$ cd hsvnmlp +$ ls +264517 pbb.zln +$ cd .. +$ cd nsch +$ ls +7898 cmsdzh +233270 dmpsnhdh.bsq +101256 frl +133902 jzvh.vdv +dir lmw +dir sgjsg +130245 wcftvft +$ cd lmw +$ ls +69572 bnjnc.csp +$ cd .. +$ cd sgjsg +$ ls +38856 tnzpz.tbq +$ cd .. +$ cd .. +$ cd qlgg +$ ls +276013 frbstg.pzb +$ cd .. +$ cd twpq +$ ls +136454 fhwz.bqb +94099 rglp +114026 tsrt.cbd +26252 zhclpzm.rqf +$ cd .. +$ cd .. +$ cd .. +$ cd jqthwzj +$ ls +128200 lmw.btl +$ cd .. +$ cd .. +$ cd mfms +$ ls +274935 dmpsnhdh +76547 lchwq.dsd +215701 pbb.zln +dir rmwtvjt +$ cd rmwtvjt +$ ls +74490 hjpmqrq +$ cd .. +$ cd .. +$ cd pjbjgbcl +$ ls +231757 cjcpwwc.wbf +dir cswvftzs +dir jtvtg +dir lmw +dir tnctbjr +dir tqsrfhdr +$ cd cswvftzs +$ ls +dir dchqnbns +dir smf +$ cd dchqnbns +$ ls +94111 szl.hqs +$ cd .. +$ cd smf +$ ls +dir dlnsgvl +dir zglt +$ cd dlnsgvl +$ ls +dir dsz +$ cd dsz +$ ls +156473 hjpmqrq +$ cd .. +$ cd .. +$ cd zglt +$ ls +295383 frgg.sdp +$ cd .. +$ cd .. +$ cd .. +$ cd jtvtg +$ ls +202254 bftv.rqb +58419 lmw +$ cd .. +$ cd lmw +$ ls +8097 fcqrwd +$ cd .. +$ cd tnctbjr +$ ls +250830 frqqdsr.hbf +dir gzrcqr +$ cd gzrcqr +$ ls +dir fnzgsnv +$ cd fnzgsnv +$ ls +117215 hjpmqrq +$ cd .. +$ cd .. +$ cd .. +$ cd tqsrfhdr +$ ls +96381 lmw +$ cd .. +$ cd .. +$ cd wzqbwr +$ ls +149066 dmpsnhdh.vnd +dir dpbcgfdr +dir swp +14495 twpq.gsb +dir zhj +$ cd dpbcgfdr +$ ls +12909 dmpsnhdh +dir jvn +173491 mnhpr.lpr +222018 rfqfjmd.jqq +205077 wbbdrpr.hzj +dir wzpbbbhm +$ cd jvn +$ ls +117656 vqddrqlq.nfd +233109 vqqvh.swz +$ cd .. +$ cd wzpbbbhm +$ ls +143534 pbb.zln +$ cd .. +$ cd .. +$ cd swp +$ ls +131295 pbb.zln +$ cd .. +$ cd zhj +$ ls +166268 pbb.zln +33734 rrqjwpm.blg +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd twpq +$ ls +dir bppvlwqs +dir bvh +dir rmcdr +dir tdn +2230 whb.lfb +dir wwtwnvh +$ cd bppvlwqs +$ ls +195026 hvlhgsw +279259 rrqjwpm +$ cd .. +$ cd bvh +$ ls +dir lmw +$ cd lmw +$ ls +66958 pdqnd +$ cd .. +$ cd .. +$ cd rmcdr +$ ls +dir dmpsnhdh +182930 grj +dir pmrdhrth +119725 qpcqclqh +77890 sjgfjz +142855 twpq +dir zbmcrvbh +$ cd dmpsnhdh +$ ls +dir rrqjwpm +188474 zgjzpbl.vgv +$ cd rrqjwpm +$ ls +dir bnl +dir lmw +7598 vsntvs.pdv +$ cd bnl +$ ls +245600 lmw.mgf +$ cd .. +$ cd lmw +$ ls +73396 hjpmqrq +$ cd .. +$ cd .. +$ cd .. +$ cd pmrdhrth +$ ls +173155 rrqjwpm.pjw +178530 smgpzs.qtj +$ cd .. +$ cd zbmcrvbh +$ ls +124201 fcqrwd +135578 hjpmqrq +54356 hnztplsp.qlh +dir lmw +58350 pbb.zln +dir qfrvdm +dir rcg +15267 rwbzjpt.djn +$ cd lmw +$ ls +dir bbbll +28362 bfgfwlf.wvg +229637 dmpndms.fln +146121 dncdssn.hdr +131039 frqqdsr.hbf +152805 hjpmqrq +dir mlz +$ cd bbbll +$ ls +169940 dncdssn.hdr +216888 pbb.zln +248369 tjpmlr.vmf +$ cd .. +$ cd mlz +$ ls +115167 bhfv.fts +$ cd .. +$ cd .. +$ cd qfrvdm +$ ls +284564 pbb.zln +$ cd .. +$ cd rcg +$ ls +dir sqzjz +$ cd sqzjz +$ ls +116435 jrstpcpl.zsq +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd tdn +$ ls +143971 cmg +133317 fcqrwd +dir pstpclp +133161 tddv +$ cd pstpclp +$ ls +267351 hjpmqrq +86930 rrqjwpm.dvl +$ cd .. +$ cd .. +$ cd wwtwnvh +$ ls +256584 frqqdsr.hbf +114564 twpq.wrd +$ cd .. +$ cd .. +$ cd vlgsrtm +$ ls +148089 bnl.jzj +119796 cjfphsfw.hnd +197668 cpw +dir dmpsnhdh +dir fjsglr +dir lmw +dir lqgrft +9231 pltdltrs +dir rmdp +109777 rncfff.fll +dir vgjzqjpq +dir ztnqnfnq +$ cd dmpsnhdh +$ ls +dir lltnrdtv +dir scthsg +$ cd lltnrdtv +$ ls +179511 pcvmpz +90913 tbr +$ cd .. +$ cd scthsg +$ ls +dir rrqjwpm +$ cd rrqjwpm +$ ls +188629 fcqrwd +$ cd .. +$ cd .. +$ cd .. +$ cd fjsglr +$ ls +139754 fcqrwd +dir pnsjwfzc +$ cd pnsjwfzc +$ ls +113848 lmw +$ cd .. +$ cd .. +$ cd lmw +$ ls +54999 dmpsnhdh +dir ffhcf +251476 frqqdsr.hbf +dir jpgqspqw +198972 nhfclq.pbh +180380 nqmjnvc.fvr +dir pfsjwmbc +213768 rcvccgcd +$ cd ffhcf +$ ls +40478 svmwstq.sjj +$ cd .. +$ cd jpgqspqw +$ ls +22181 hjpmqrq +$ cd .. +$ cd pfsjwmbc +$ ls +dir bcvchw +$ cd bcvchw +$ ls +225892 bnl.nwc +$ cd .. +$ cd .. +$ cd .. +$ cd lqgrft +$ ls +dir rrqjwpm +dir twpq +$ cd rrqjwpm +$ ls +54786 fcqrwd +3053 tthhqjm.ntd +$ cd .. +$ cd twpq +$ ls +109355 bnl +dir lmw +dir mhgqt +301291 rrqjwpm.lrm +271233 twpq.srp +$ cd lmw +$ ls +dir lmw +dir lngbszqm +$ cd lmw +$ ls +139640 pbb.zln +$ cd .. +$ cd lngbszqm +$ ls +98279 mqvq.gsj +283599 rvjd.dvt +$ cd .. +$ cd .. +$ cd mhgqt +$ ls +208165 fcqrwd +$ cd .. +$ cd .. +$ cd .. +$ cd rmdp +$ ls +dir bqn +170956 fcqrwd +90954 snnttp.gld +$ cd bqn +$ ls +75628 hdrgbrpc +$ cd .. +$ cd .. +$ cd vgjzqjpq +$ ls +dir bnl +dir wpfw +$ cd bnl +$ ls +25911 pbb.zln +$ cd .. +$ cd wpfw +$ ls +247784 bzll.ltc +$ cd .. +$ cd .. +$ cd ztnqnfnq +$ ls +dir dtpzsrfc +214055 srgzhp.nlr +$ cd dtpzsrfc +$ ls +142652 bhgwj diff --git a/src/main/resources/2022/day8.txt b/src/main/resources/2022/day8.txt new file mode 100644 index 00000000..f4b72dda --- /dev/null +++ b/src/main/resources/2022/day8.txt @@ -0,0 +1,99 @@ +301201331333030024002151134115545441525510053410321024643223304253251423014345311431413433341211111 +210313031411030140245452501003514242514125366210551353634546632015232323540022212401412031113310333 +201223331222432221305443412445304401201165033624245311620346242360420521343514132520204104244200322 +210003034413133345421153101053132524226234460546142402452466345321440520524311212410303224012242000 +002232200024321241105051144044530503201446133504652500410463241436361361002024122340512441243222203 +102023303032432341105353554225663326563653250523350302104003635340436625240235531151145343032212033 +011432423042054254520503506222252050256315142254016650105015643542660231044302233035322122100032212 +034421243321311550201305666136554451350322354144633556333022003664006612152610511132354312443134400 +302214114340201552153246320504242003513464536535521715125521314654606653312124014223422135000032024 +022203301311105514431426025115566414166144753435463146324664616502342356626446124204455213422314241 +133202031100242023236362026113243573426315617627527543647213541517440126016042624554125530550304004 +412414223443004100621020255403316757326244275247134627215636656313472021156626214003511121524211201 +100020113553530111635403433310123371416566464531664371236763762654672716453255155611041431321301000 +040442015403322353635250250156757514552341246114755653427321572644373333764015356451022003122252214 +131335400000330152046666616363523347474566725475326875713565751313316433363251655012415235210153134 +212205354412516232346215667365363413636143322285687428338237666271455444277511521334662020135104441 +400134535100103465544240377332663352346366464426356585587388572154627365567576126334445412551245044 +313125111102350042411627156361342341273445272266422466584446423554731131743433165124231111435223052 +414211350002631116406722423146474385423846752263457355267246283862347153516722261451645234034250125 +142350115212334322146515331713325337468443588225285768685574226644533724475335124115505531225141432 +221420101060222256363211452511352288853828648746647256668823328327287747564123275261621500245133411 +453113024555202631573132336658242736347325874252333535256677587837657678625214457745232452150220123 +555034246226545644223655121622358344733858586769673974337826765554468355524344661464661052120504131 +101440210460332606657775163743688753344448398636494466664973768385765272752651367426304666101123130 +532232304344031236635141354227547676887398783998657559945898897482268637355733664642700640525354230 +254425530336536647234251648333783825963356648666958849583777336977537428866623134526176025236412301 +052420045556125743544677352453853565968669799673389736356646485675748435258353372737571166544644253 +144212521432144457427473545763356688633446594997933764479494846866798222377556235341461400160564305 +414546463341545336547365484645276357553584336774496855639397587938638557263543347554553131065014354 +213110564326373147676363536832594994448537796457645847754798668996863976763583886251625241215423451 +402441605154657151126587562648764444548399868584444984666447398399475652866688642677426256050111044 +030505222044142675156675655568358889949479978645448697784665774359755689243645735162215642560304321 +002364341155613641588426677659986477446964688986679878477959859546863555528383865312255533510006644 +315603002442216142126278638843367593346876468657757444768587498693659647788784456647117426311553113 +534026231247517653336254847934574378679647999777747989757856888763437583487626885465121722135401110 +152663134317453637627862365337774534996567697946779555455989744649937645994653657567156245462533302 +415120400426463528567443378965654344948544677795568678979865564545598768643876476547177613642314014 +212134106151643463482274255887744459499685657799867587677998674896776889393348337484463153571460162 +123265543627354585248835586978887467585449979975988897979955857994455783796697728544256417663200436 +253156122444754335226888665898754494695989955588988885866899669459797535776733282376417141555433640 +105125666421254638626347936375599547788669998799766755958796875664688687698846364536875113743306636 +543154323554211424234263689757375946445859555669888666959896575566688549986398632678217421361116016 +534446627674264324833537896437597864966965789556679958788689859997595593943745863828822163463613245 +456422412772232364425647578537895646785958867897868976696886585987468565967685553265682333333642602 +155305566576114247342276876599654498977865685987867897688785559595497686574858683675725765634063131 +350133405277354723553294549397478955987876557987698878889985757654986568886863447837277147741536410 +013062547146413742675348465764876557565879576696666889866579778749764578444847765768252647361443506 +312465621677151875655585995745694878655956799697796697686885558978975449756474748887586542411256255 +423204362353178745852254637935464664778869968879677697777878575777556878634856584473864213312622015 +534661567344614365768387877864878845767598869677978779767787858784584759476648665773358427645311651 +430011475352152575755679953749774454789788589769698678798856669687965675695986644657485514217351666 +542102111432167877663467859536777594767895986867898886766676976869846495867599543374583332731266033 +625000474732136887874855736749589476996659798967789898789776587976889996948384763734447643736220025 +315666062115612845335864885945654758789765698688877769667668867576798855583978955268844425122514014 +152600463716132562642488647595685976468985656996977998778955585795596495844759888838286175352560414 +006166514645376457676454676698858546456775687876679968965697579748769964686887987774361312361623112 +630201542341341448626638885984646765658869666987886976795798598788495887683399383777375346636211550 +036646423755734847267336476354564466955596575589776859595968578788654499546534758266652277357366530 +453243636357156364866489789657955759776966959655868798956766987954989947943863354645777345476202531 +530105612477445332537878834449565659485976667656597697775688857778754844458355277846316112626121162 +055455363734131537735589765579697845958456556556686566965687745949576967556763233558753142411453220 +106052304147675524263254984449336844955757978879668668576768676787755787574533445667862426312335351 +133545504422337378456858864594449878578885567885775668878958786485657683335482267532317234560541422 +200255566345515714753376495455776859698895897588685996587586745857468367437854554745116413532363200 +350510465672221255867873257334876685756745545667796896497688464848948768947422782828661471761064122 +525006435255273146277854349566333878494888868995668459955986944485699959837552728523754132365504644 +455465632474322677526353348496893746878784677485547847847759558643378358396575444475242721722332551 +341264465466426473255828826967974346556896576764466849697759555548879644597626468762475471232114332 +143015600661254143155723453874645479598897489897887869959899767545558694586565824554175726556330040 +133114601616545361237744836629659733553959758846995589848895753645437876746537567247223752042644353 +434245136445331567724385257642784846854365449776854954774496353883589792252488545733673623365531411 +242355400240614257475587442835547333788435758749676988545464355973893552465258322436517445530103424 +150522445522362651727687768785836854563533374767758439957544655684349342343244731321332645111541021 +552400436500115714126552863645543555378537389683366874478896898884353658447572421457611323114255212 +304202302265264467247666485428778363698453577569497785947535758344375242826567265416457044433163541 +233353455013125235351275368356247267348486886475363374634485474876565735683724532261524142510630102 +440535161152151631635373575637235623878689436669334497565478939626735535482665761716504623034023120 +530315220006363246522576534738725655632837547375957696853688457354338383534653311344113001640515414 +204313020634510554536253474458753547425233336944493739858844757374686252224513224773652513353305442 +303341052510105201513731753724282223364752725537642288866686622588863837445543126664241453441235310 +020424153032624323671363111463422353477742627478683844868633432636588536274451572264610340614104555 +234413051424523314161146731763467724436346548732688655832363463687352214147256367321403115315443500 +012242303516512442500774532142266284382765822428622346384737664242643615627661273552155526054233342 +414111403514124460666037555342627216676675426728525487642273658483463277637667635142640425425132342 +030230422403061322643446763675767367778368767234652457668385774272636771211474352411225452213412310 +032113014010425161346051473351752565267374786865733735338367253243133431751566100563025504520403342 +412304104125143243301236345151712624614211575411475821376435722564217622616521260005512052222004343 +220120030303233310444012046257231472762352112415164732622531735165124331120326541545011444410002400 +014433054545451316643032015010316146277161216552272145522146562717437536450604320052302441034404241 +343434423453055414653253445655564632771244123251647272745743671776331230215004615545255055050133340 +201000210435340452132116022411356245227731333555165752717373435156310453501204235431002250524221113 +132100434242305201202434465065260455543457427521464157317741755225245256645305422324552252031144120 +202441110432420500412256514006155406431013256445476676323751251451145064255351541053031130431201234 +020212022220112430245130010061216066220264013366625475240550163452521001005224125240541123033121143 +132244304123021525001211154544140012602120125510011436101445405650606625263223310430540142302200433 +103142142201203130045124150512613540504163320002045004044613203062515015344450101154534004044231012 +221234114210331020511522535110011636160005413424224560604634052506210501451443521502544433404042033 +001233231400214434040102054514026055053336624361305231213331535242260044242320014551114014133012203 +013221201313013142535111451534205341402225520043535003305340330410530234344250234251433044340323003 diff --git a/src/main/resources/2022/day9.txt b/src/main/resources/2022/day9.txt new file mode 100644 index 00000000..28ee1161 --- /dev/null +++ b/src/main/resources/2022/day9.txt @@ -0,0 +1,2000 @@ +R 2 +U 2 +L 2 +U 1 +L 1 +U 1 +R 1 +L 2 +U 2 +R 1 +D 2 +U 2 +R 1 +D 1 +L 1 +R 1 +L 2 +U 2 +L 2 +D 1 +R 1 +U 2 +L 2 +U 2 +R 1 +D 1 +L 2 +U 2 +R 2 +L 2 +U 2 +R 2 +L 1 +U 2 +R 2 +D 1 +L 1 +R 2 +U 1 +R 2 +D 2 +L 1 +R 1 +U 1 +R 2 +L 1 +U 1 +R 1 +L 2 +D 2 +R 2 +D 1 +L 2 +R 2 +L 1 +R 2 +D 1 +R 2 +D 2 +L 1 +R 1 +U 2 +L 2 +R 2 +D 1 +R 2 +U 2 +L 1 +D 2 +R 2 +L 2 +D 2 +U 1 +R 2 +U 2 +R 2 +D 2 +R 1 +U 2 +D 2 +R 1 +L 1 +R 1 +U 2 +D 2 +R 1 +U 1 +R 1 +L 1 +U 2 +L 2 +D 2 +U 2 +D 2 +R 2 +D 2 +L 1 +U 2 +L 1 +R 1 +D 2 +L 1 +U 1 +D 2 +U 2 +D 2 +R 2 +U 1 +R 1 +U 2 +D 1 +R 2 +D 2 +L 3 +U 1 +D 2 +U 3 +R 3 +L 1 +D 2 +R 1 +D 3 +L 3 +R 1 +D 3 +L 3 +D 1 +R 3 +D 1 +L 1 +D 2 +R 3 +D 1 +U 2 +R 2 +L 1 +D 1 +R 3 +U 2 +L 3 +U 2 +D 2 +R 2 +D 3 +U 1 +D 3 +L 3 +R 2 +L 2 +D 3 +L 2 +U 3 +R 2 +D 1 +R 2 +U 3 +R 3 +U 3 +L 1 +R 3 +D 2 +R 1 +L 3 +R 1 +D 3 +L 3 +D 1 +U 2 +R 3 +U 3 +D 1 +L 2 +R 3 +L 1 +D 2 +L 3 +D 1 +L 3 +D 1 +U 2 +D 3 +R 2 +U 1 +L 3 +R 3 +L 2 +R 1 +L 2 +D 2 +R 3 +U 3 +R 3 +D 2 +U 3 +D 2 +R 3 +D 3 +R 2 +U 1 +L 3 +U 2 +R 2 +L 2 +U 1 +L 3 +D 2 +U 2 +R 1 +L 2 +D 2 +U 3 +R 2 +D 2 +L 3 +U 1 +L 1 +U 2 +R 2 +U 1 +D 2 +U 2 +R 3 +L 1 +U 1 +D 3 +U 4 +L 3 +D 2 +L 3 +U 4 +D 2 +R 4 +L 4 +U 2 +D 3 +U 2 +D 3 +L 3 +U 2 +D 3 +L 1 +U 1 +R 1 +L 4 +R 3 +D 3 +L 2 +U 3 +R 2 +L 1 +U 4 +D 3 +U 1 +L 2 +D 4 +L 1 +R 3 +D 4 +R 1 +L 1 +U 3 +L 3 +D 3 +R 3 +U 1 +L 4 +U 3 +R 3 +L 3 +U 2 +R 3 +L 3 +R 1 +D 3 +R 3 +L 4 +R 3 +D 4 +L 3 +U 2 +R 4 +L 1 +U 1 +R 4 +D 3 +U 1 +R 1 +D 1 +U 3 +R 2 +L 1 +D 1 +L 3 +D 4 +R 4 +U 4 +D 1 +R 3 +D 3 +R 3 +L 4 +R 4 +L 2 +R 2 +D 3 +R 4 +D 2 +U 4 +L 3 +D 1 +R 2 +U 2 +R 3 +D 1 +R 3 +D 1 +L 1 +U 4 +L 2 +U 4 +L 4 +U 3 +R 4 +L 3 +R 3 +L 4 +U 4 +R 4 +D 2 +R 2 +D 3 +U 4 +D 1 +U 1 +D 5 +U 3 +D 5 +U 5 +D 3 +L 3 +U 3 +D 3 +R 1 +D 3 +R 4 +U 4 +D 1 +R 5 +D 5 +R 2 +U 5 +L 2 +U 2 +D 2 +U 4 +R 1 +D 1 +L 2 +R 2 +D 1 +L 5 +R 5 +D 4 +R 5 +L 1 +D 2 +L 3 +U 2 +D 3 +L 1 +R 5 +U 3 +R 1 +D 3 +R 1 +U 1 +R 3 +U 2 +D 5 +L 5 +R 1 +U 3 +L 4 +D 2 +R 1 +D 3 +U 4 +R 3 +L 4 +U 2 +D 3 +U 1 +R 5 +D 3 +L 2 +U 3 +L 5 +U 3 +L 3 +D 5 +L 5 +U 3 +R 2 +D 5 +U 4 +L 5 +U 1 +D 5 +R 3 +D 1 +L 5 +R 2 +D 2 +U 5 +R 1 +D 2 +L 3 +D 2 +L 5 +D 2 +U 5 +L 2 +R 3 +L 3 +D 3 +U 2 +R 5 +L 1 +U 5 +R 5 +L 2 +D 5 +R 3 +L 2 +U 2 +D 3 +R 4 +L 1 +R 3 +D 5 +R 3 +D 4 +R 2 +D 5 +R 3 +L 3 +R 2 +U 2 +L 1 +R 6 +U 6 +L 6 +U 2 +R 6 +D 4 +U 1 +L 1 +R 1 +D 1 +L 6 +D 6 +U 4 +L 6 +D 3 +R 1 +U 1 +D 3 +R 3 +D 5 +U 1 +L 2 +R 6 +U 5 +D 6 +L 6 +R 2 +U 1 +D 1 +L 4 +D 5 +L 6 +U 1 +L 6 +R 5 +U 5 +D 3 +L 5 +R 2 +U 3 +D 1 +L 2 +U 2 +D 1 +L 5 +D 1 +U 5 +R 4 +L 2 +R 5 +D 3 +U 3 +R 2 +U 3 +D 6 +L 5 +R 1 +U 5 +L 1 +R 6 +D 6 +R 6 +L 1 +D 2 +R 5 +L 4 +D 3 +L 5 +R 4 +L 6 +U 1 +L 2 +U 3 +R 4 +D 3 +R 3 +L 1 +D 4 +L 2 +R 5 +D 2 +R 2 +D 5 +U 2 +L 4 +R 4 +U 4 +R 1 +D 3 +L 6 +U 5 +L 5 +D 6 +U 3 +D 6 +R 6 +D 3 +U 6 +L 6 +D 3 +L 6 +R 3 +D 2 +L 4 +D 5 +L 5 +D 2 +L 6 +R 1 +D 1 +L 4 +U 6 +R 1 +L 5 +D 7 +U 2 +R 6 +D 7 +L 2 +R 3 +U 1 +L 3 +R 2 +U 7 +D 7 +U 7 +D 4 +R 2 +L 7 +R 7 +L 5 +R 4 +U 5 +L 5 +U 6 +R 2 +D 3 +L 2 +U 6 +D 5 +R 2 +D 2 +R 5 +U 7 +R 3 +D 1 +L 5 +R 1 +U 3 +D 6 +U 6 +L 7 +U 4 +L 6 +D 1 +L 7 +U 4 +D 7 +L 1 +D 6 +L 2 +R 5 +L 7 +U 3 +D 2 +R 7 +L 2 +U 6 +L 3 +U 6 +L 5 +R 2 +L 7 +D 3 +L 7 +R 1 +L 1 +R 5 +D 6 +L 2 +D 5 +L 4 +D 3 +U 5 +D 1 +R 4 +U 1 +L 2 +R 3 +U 7 +D 6 +U 2 +D 4 +U 5 +D 5 +U 7 +R 2 +D 1 +U 2 +L 2 +U 3 +D 1 +R 4 +D 1 +R 3 +U 1 +R 7 +D 4 +R 3 +D 2 +L 2 +U 4 +L 2 +U 6 +L 4 +D 6 +U 3 +L 1 +U 4 +R 7 +D 6 +L 2 +D 7 +R 4 +U 5 +R 4 +D 5 +R 6 +D 4 +R 4 +U 2 +R 3 +L 7 +R 8 +D 8 +R 5 +U 2 +D 6 +L 2 +R 4 +U 3 +L 1 +R 2 +D 5 +L 1 +D 5 +L 5 +U 1 +R 8 +D 1 +U 1 +L 1 +R 8 +L 3 +R 6 +L 1 +U 3 +R 6 +L 5 +U 2 +L 8 +R 4 +U 4 +R 6 +U 5 +R 1 +L 2 +R 5 +D 1 +U 4 +L 3 +U 3 +R 1 +U 3 +R 8 +L 1 +U 2 +L 7 +D 6 +L 6 +R 4 +D 2 +R 2 +L 8 +D 4 +R 4 +U 4 +L 6 +D 3 +R 7 +D 8 +U 4 +R 4 +U 2 +L 8 +D 5 +L 4 +U 7 +D 8 +U 6 +R 6 +L 5 +D 5 +L 2 +D 1 +R 1 +D 4 +R 5 +L 7 +D 8 +U 2 +D 3 +L 5 +R 4 +L 7 +R 3 +L 1 +D 8 +R 5 +L 8 +R 8 +D 1 +R 4 +D 1 +L 2 +D 5 +L 7 +U 1 +L 4 +R 5 +L 3 +R 9 +D 9 +L 4 +R 6 +L 6 +R 1 +L 3 +R 5 +D 8 +L 1 +U 2 +R 8 +U 7 +D 6 +L 8 +D 1 +L 9 +D 5 +L 1 +D 6 +L 8 +R 2 +L 6 +R 4 +U 1 +R 6 +L 5 +R 5 +L 6 +R 8 +D 5 +L 4 +R 2 +L 7 +R 2 +U 9 +L 6 +R 2 +U 7 +D 4 +U 2 +L 2 +U 8 +R 8 +U 3 +R 6 +D 6 +L 2 +D 4 +L 4 +R 2 +L 1 +U 8 +D 2 +R 2 +L 1 +R 7 +L 8 +D 8 +L 4 +U 4 +R 5 +U 1 +D 8 +L 8 +R 9 +D 6 +L 1 +D 5 +L 9 +U 6 +D 6 +U 3 +D 5 +R 5 +U 9 +L 2 +R 5 +U 9 +L 1 +D 4 +U 4 +L 5 +D 6 +R 3 +L 6 +U 3 +R 4 +U 5 +L 5 +D 8 +L 6 +U 4 +D 1 +U 7 +D 2 +L 3 +R 7 +U 1 +R 4 +U 4 +R 9 +U 3 +D 2 +L 6 +R 9 +U 3 +L 8 +R 10 +U 3 +R 8 +D 8 +L 1 +U 4 +R 5 +U 8 +D 10 +U 10 +L 7 +D 5 +L 2 +R 7 +L 1 +U 10 +R 1 +D 1 +L 5 +R 7 +U 6 +L 3 +R 7 +U 4 +R 3 +U 3 +R 4 +U 8 +L 8 +D 6 +L 5 +U 10 +L 9 +R 3 +U 10 +D 9 +U 5 +D 10 +U 7 +D 6 +U 9 +L 8 +U 3 +D 6 +R 9 +U 9 +D 4 +R 8 +U 7 +R 6 +U 5 +R 5 +U 3 +D 4 +R 9 +L 7 +D 7 +U 1 +L 3 +R 4 +D 8 +L 4 +D 6 +U 1 +R 7 +D 4 +L 9 +D 2 +R 4 +U 10 +D 5 +U 6 +D 6 +R 5 +U 6 +D 6 +L 7 +U 4 +D 1 +L 6 +R 8 +L 7 +U 8 +L 2 +R 6 +L 9 +D 2 +U 9 +D 5 +U 10 +D 1 +R 9 +L 6 +D 7 +U 1 +D 4 +L 3 +R 7 +U 1 +R 6 +D 4 +R 1 +D 4 +L 8 +R 1 +U 10 +D 1 +U 5 +R 6 +U 5 +D 2 +U 10 +R 8 +L 7 +U 6 +L 4 +R 6 +L 7 +U 3 +R 4 +D 1 +L 4 +R 7 +D 2 +L 4 +U 3 +D 6 +U 10 +D 5 +R 8 +U 5 +L 9 +D 4 +L 4 +D 8 +U 9 +R 2 +U 4 +R 4 +U 9 +D 1 +R 7 +U 5 +L 2 +U 10 +R 4 +D 1 +L 3 +R 11 +D 7 +U 7 +D 7 +L 11 +U 2 +D 1 +U 1 +R 1 +U 3 +L 6 +U 10 +L 4 +U 5 +L 10 +D 1 +U 8 +R 7 +L 4 +U 7 +L 9 +U 6 +L 11 +U 3 +R 8 +L 6 +D 9 +L 9 +D 1 +R 7 +L 11 +D 9 +R 7 +U 2 +D 11 +L 4 +D 4 +R 11 +D 7 +U 2 +D 7 +R 2 +D 1 +L 6 +D 11 +R 3 +U 7 +L 10 +U 7 +D 2 +R 2 +U 1 +L 9 +R 11 +L 3 +R 7 +L 2 +D 11 +R 1 +D 4 +R 3 +L 10 +U 5 +D 3 +R 10 +D 8 +U 1 +D 2 +R 10 +L 8 +R 1 +D 8 +U 6 +R 8 +D 8 +L 2 +D 7 +U 4 +L 5 +R 4 +D 4 +U 7 +D 11 +U 11 +R 4 +L 6 +U 3 +L 10 +U 1 +L 11 +U 3 +D 6 +L 11 +R 4 +L 3 +D 12 +L 7 +R 9 +L 9 +U 10 +L 1 +D 6 +L 10 +U 3 +R 6 +D 5 +L 6 +R 8 +D 4 +R 6 +L 6 +D 9 +L 1 +D 11 +U 6 +L 3 +R 10 +U 12 +R 11 +D 10 +U 5 +R 6 +D 12 +U 12 +R 8 +U 5 +D 1 +R 12 +D 1 +R 7 +U 8 +D 5 +U 7 +D 3 +R 7 +D 8 +U 11 +R 2 +U 4 +L 2 +R 1 +L 3 +U 9 +L 5 +D 11 +R 10 +L 3 +U 3 +D 3 +R 1 +L 8 +D 6 +R 7 +U 11 +L 6 +D 1 +R 12 +D 8 +U 7 +R 2 +U 5 +R 4 +U 10 +L 8 +D 5 +U 10 +D 3 +L 6 +R 4 +L 9 +D 6 +R 7 +D 4 +U 10 +D 1 +L 6 +R 1 +L 7 +U 5 +L 9 +U 12 +L 7 +U 6 +D 6 +U 9 +L 7 +U 4 +D 5 +L 1 +U 5 +D 1 +L 10 +D 2 +R 3 +D 13 +U 11 +L 1 +U 1 +D 1 +R 12 +U 13 +L 5 +D 11 +L 9 +U 11 +L 2 +R 6 +D 7 +L 2 +U 5 +R 2 +U 10 +L 9 +D 7 +R 12 +D 10 +L 12 +D 8 +L 8 +R 12 +D 11 +U 12 +L 1 +U 2 +D 6 +R 3 +D 2 +U 9 +L 10 +R 4 +U 2 +D 10 +U 7 +R 6 +U 9 +R 4 +L 3 +U 13 +R 9 +U 6 +D 8 +L 5 +R 11 +L 6 +R 12 +D 5 +U 7 +R 11 +D 1 +L 9 +R 12 +U 2 +R 5 +U 1 +R 9 +U 6 +D 4 +R 2 +U 2 +D 5 +L 9 +R 6 +U 4 +L 6 +R 9 +L 4 +U 3 +L 9 +R 6 +L 5 +D 6 +L 3 +R 6 +L 3 +D 9 +U 5 +D 1 +R 5 +L 3 +U 9 +R 7 +L 8 +R 6 +L 7 +U 4 +D 13 +U 2 +L 1 +U 11 +R 8 +L 13 +D 1 +U 4 +L 13 +D 1 +L 8 +D 13 +L 2 +R 2 +D 1 +L 14 +U 7 +R 11 +L 1 +R 4 +L 5 +R 11 +U 7 +D 8 +L 3 +U 1 +L 12 +U 13 +D 9 +R 1 +L 11 +U 12 +D 5 +U 10 +D 10 +R 9 +L 1 +D 5 +R 7 +L 1 +D 13 +R 10 +U 2 +R 3 +L 14 +D 7 +R 12 +U 13 +L 2 +U 13 +L 3 +U 5 +L 11 +R 8 +D 11 +R 6 +L 11 +R 5 +L 3 +U 1 +L 5 +R 13 +L 12 +D 10 +R 8 +D 6 +L 1 +R 10 +U 5 +R 3 +D 11 +L 8 +R 4 +D 2 +L 1 +R 7 +U 3 +L 14 +R 3 +L 4 +R 13 +L 10 +U 3 +D 1 +L 11 +U 1 +D 6 +R 10 +U 1 +R 2 +L 7 +U 3 +L 5 +U 4 +D 7 +R 8 +U 12 +R 6 +L 2 +D 5 +L 11 +R 4 +L 4 +R 6 +L 3 +R 10 +U 4 +D 9 +U 1 +D 4 +L 12 +D 13 +L 1 +D 6 +R 8 +L 1 +D 9 +L 8 +U 3 +D 3 +U 2 +R 11 +U 10 +L 5 +D 11 +U 12 +D 3 +R 15 +L 1 +R 5 +D 9 +U 15 +D 2 +L 9 +U 9 +D 15 +R 4 +L 9 +R 8 +L 12 +D 5 +R 12 +U 9 +L 9 +U 7 +L 12 +R 11 +U 9 +L 15 +D 9 +L 4 +R 4 +U 13 +D 7 +R 7 +D 8 +U 5 +D 5 +L 15 +D 2 +R 8 +D 10 +R 5 +U 13 +R 1 +L 8 +D 12 +R 2 +L 4 +D 9 +L 9 +D 7 +R 5 +U 15 +R 9 +L 2 +R 8 +U 11 +D 15 +U 13 +D 5 +U 5 +R 11 +U 7 +R 11 +D 12 +U 6 +D 6 +L 8 +D 8 +R 14 +U 13 +R 11 +D 1 +R 4 +U 14 +R 11 +L 8 +D 2 +U 13 +R 15 +L 10 +D 2 +L 3 +R 9 +U 2 +R 8 +U 15 +R 3 +D 4 +L 7 +D 7 +R 1 +D 13 +R 1 +L 13 +U 9 +L 13 +U 10 +L 15 +D 5 +R 11 +D 3 +U 3 +R 4 +L 7 +R 1 +U 13 +R 9 +U 7 +R 10 +D 5 +U 7 +R 6 +L 14 +U 2 +R 8 +D 2 +U 16 +D 12 +R 11 +D 4 +L 8 +U 8 +L 13 +D 5 +R 4 +U 8 +D 15 +R 8 +D 13 +R 16 +U 4 +D 3 +U 5 +D 8 +R 16 +L 13 +U 3 +D 6 +L 9 +R 10 +D 6 +R 16 +D 15 +R 11 +L 8 +D 8 +U 4 +R 16 +D 1 +U 11 +L 15 +R 7 +D 2 +R 1 +D 4 +L 1 +U 15 +D 16 +R 3 +U 10 +D 9 +U 6 +D 15 +R 11 +L 6 +R 2 +U 14 +R 4 +L 15 +R 15 +D 16 +U 9 +D 2 +L 8 +D 15 +R 5 +U 13 +L 15 +D 1 +R 4 +U 14 +D 15 +L 15 +U 13 +R 16 +L 7 +R 4 +D 13 +L 15 +D 3 +L 7 +D 4 +R 12 +D 10 +U 8 +D 6 +L 13 +R 15 +U 12 +L 4 +R 16 +D 1 +R 14 +L 9 +D 13 +U 2 +D 9 +U 16 +L 15 +R 12 +L 14 +R 6 +D 1 +R 2 +L 15 +U 7 +L 16 +U 15 +D 11 +R 11 +L 3 +R 11 +L 15 +U 17 +L 14 +R 4 +U 15 +D 6 +L 2 +R 7 +L 16 +U 4 +L 14 +U 9 +L 7 +D 16 +R 4 +D 2 +R 15 +L 6 +R 6 +D 1 +U 5 +D 14 +U 4 +D 11 +R 5 +U 16 +L 3 +D 7 +R 10 +L 3 +D 8 +L 10 +U 1 +D 16 +L 6 +R 6 +L 14 +R 6 +U 11 +L 17 +D 7 +R 2 +L 12 +D 15 +U 16 +R 2 +U 3 +R 16 +U 12 +L 3 +U 5 +D 1 +R 12 +U 17 +D 11 +L 16 +U 13 +L 5 +D 1 +R 2 +L 10 +U 12 +D 7 +U 6 +R 4 +U 5 +L 3 +R 16 +D 1 +U 14 +R 15 +D 6 +U 14 +R 4 +L 6 +D 11 +R 16 +L 15 +U 7 +L 10 +R 5 +L 15 +R 12 +L 17 +U 5 +D 14 +L 6 +R 2 +U 5 +R 10 +L 8 +D 2 +U 17 +L 13 +D 17 +L 5 +R 11 +L 3 +U 11 +R 1 +L 3 +D 1 +L 7 +D 14 +R 13 +U 9 +D 7 +L 15 +U 5 +D 4 +R 7 +L 10 +D 6 +R 18 +U 5 +R 18 +U 6 +D 17 +U 8 +R 16 +D 12 +R 12 +D 9 +R 9 +U 4 +R 16 +L 1 +D 12 +L 12 +R 11 +D 15 +U 13 +L 8 +R 4 +L 1 +R 1 +D 11 +R 15 +D 3 +L 17 +D 17 +R 11 +U 13 +D 11 +R 4 +D 17 +U 8 +L 1 +D 2 +L 16 +D 6 +L 15 +D 17 +L 8 +U 5 +D 15 +L 15 +U 11 +D 9 +L 18 +U 18 +R 14 +L 4 +U 17 +R 11 +D 18 +U 2 +R 9 +D 15 +R 5 +L 13 +R 2 +L 18 +D 5 +U 14 +L 17 +R 3 +U 4 +R 15 +U 1 +D 15 +U 12 +D 17 +U 11 +L 3 +R 10 +U 13 +R 12 +L 10 +R 1 +D 4 +U 2 +D 14 +R 14 +U 5 +R 16 +U 17 +R 16 +U 18 +R 6 +U 5 +R 18 +U 12 +D 7 +R 9 +L 1 +U 15 +D 10 +L 4 +U 9 +L 3 +U 1 +R 12 +D 14 +U 13 +L 10 +R 8 +U 5 +D 7 +U 1 +L 13 +U 14 +D 18 +L 13 +D 12 +R 2 +L 6 +D 17 +L 18 +R 6 +U 4 +L 7 +R 8 +U 5 +D 1 +L 3 +U 10 +R 5 +D 7 +U 16 +R 12 +U 8 +L 18 +R 1 +L 11 +D 14 +L 19 +R 15 +U 14 +L 8 +R 14 +U 13 +D 18 +U 14 +L 14 +U 11 +L 10 +D 11 +L 11 +R 15 +L 12 +R 10 +L 9 +R 9 +L 9 +D 3 +R 9 +L 6 +R 8 +D 7 +L 18 +D 12 +R 3 +U 7 +R 18 +U 9 +L 14 +D 12 +L 10 +U 15 +L 11 +R 17 +D 7 +R 5 +L 3 +U 13 +D 7 +U 13 +R 16 +D 2 +L 7 +R 15 +L 14 +U 19 +D 3 +L 19 +D 11 +R 8 +D 6 +U 12 +R 5 +U 6 +L 7 +R 4 +L 3 +D 6 +L 17 +U 16 +D 11 +U 12 +D 4 +R 6 +D 10 +L 3 +D 15 +R 5 +L 6 +D 11 +U 17 +L 14 +D 15 +L 1 +D 6 +R 16 +D 11 +U 2 +D 2 +U 7 +D 10 +L 11 +D 19 +L 12 +D 3 +L 18 +U 3