diff --git a/2025/Cpp/AdventHelpers/include/AdventHelpers/AdventOfCodeSolution.h b/2025/Cpp/AdventHelpers/include/AdventHelpers/AdventOfCodeSolution.h index acbbfcf..e5ac008 100644 --- a/2025/Cpp/AdventHelpers/include/AdventHelpers/AdventOfCodeSolution.h +++ b/2025/Cpp/AdventHelpers/include/AdventHelpers/AdventOfCodeSolution.h @@ -1,13 +1,62 @@ #pragma once #include "AdventHelpers/InputFileHelper.h" +#include namespace AdventHelpers { - class IAdventOfCodeSolution { + class AdventOfCodeSolution { public: - virtual void SolveExample(AdventHelper::InputFileHelper& inputFile) = 0; - virtual void SolveProblem01(AdventHelper::InputFileHelper& inputFile) = 0; - virtual void SolveProblem02(AdventHelper::InputFileHelper& inputFile) = 0; + virtual std::string SolveProblem01(AdventHelpers::InputFileHelper& inputFile) = 0; + virtual std::string SolveProblem02(AdventHelpers::InputFileHelper& inputFile) = 0; + + inline AdventHelpers::InputFileHelper* GetExampleInputFile(); + inline AdventHelpers::InputFileHelper* GetProblemInputFile(); + + void SolveAll() { + auto* exampleInput = GetExampleInputFile(); + if (!exampleInput) { + std::cerr << "Failed to load example input file." << std::endl; + return; + } + + auto* problemInput = GetProblemInputFile(); + if (!problemInput) { + std::cerr << "Failed to load problem input file." << std::endl; + AdventHelpers::InputFileHelper::destroy(exampleInput); + return; + } + + // Problem 01, example input + std::cout << "Solving problem 01 using example input..." << std::endl; + auto exampleResult01 = SolveProblem01(*exampleInput); + std::cout << "|- Got result: " << exampleResult01 << std::endl; + + // Problem 01, puzzle input + std::cout << "Solving problem 01 using puzzle input..." << std::endl; + auto problemResult01 = SolveProblem01(*problemInput); + std::cout << "|- Got result: " << problemResult01 << std::endl; + + // Problem 02, example input + std::cout << "Solving problem 02 using example input..." << std::endl; + auto exampleResult02 = SolveProblem02(*exampleInput); + std::cout << "|- Got result: " << exampleResult02 << std::endl; + + // Problem 02, puzzle input + std::cout << "Solving problem 02 using puzzle input..." << std::endl; + auto problemResult02 = SolveProblem02(*problemInput); + std::cout << "|- Got result: " << problemResult02 << std::endl; + + AdventHelpers::InputFileHelper::destroy(exampleInput); + AdventHelpers::InputFileHelper::destroy(problemInput); + } }; + + AdventHelpers::InputFileHelper* AdventOfCodeSolution::GetExampleInputFile() { + return AdventHelpers::InputFileHelper::create("example-input.txt"); + } + + AdventHelpers::InputFileHelper* AdventOfCodeSolution::GetProblemInputFile() { + return AdventHelpers::InputFileHelper::create("puzzle-input.txt"); + } } diff --git a/2025/Cpp/AdventHelpers/include/AdventHelpers/InputFileHelper.h b/2025/Cpp/AdventHelpers/include/AdventHelpers/InputFileHelper.h index 9cc8e57..bbc4044 100644 --- a/2025/Cpp/AdventHelpers/include/AdventHelpers/InputFileHelper.h +++ b/2025/Cpp/AdventHelpers/include/AdventHelpers/InputFileHelper.h @@ -3,7 +3,7 @@ #include #include -namespace AdventHelper { +namespace AdventHelpers { // Interface class InputFileHelper { public: diff --git a/2025/Cpp/AdventHelpers/source/InputFileHelper.cpp b/2025/Cpp/AdventHelpers/source/InputFileHelper.cpp index db7f6d9..872fbe7 100644 --- a/2025/Cpp/AdventHelpers/source/InputFileHelper.cpp +++ b/2025/Cpp/AdventHelpers/source/InputFileHelper.cpp @@ -4,7 +4,7 @@ #include #include -namespace AdventHelper { +namespace AdventHelpers { // Opens file, reads each line into mLines vector. Returns null on error. InputFileHelper* InputFileHelper::create(const char* filename) { InputFileHelper* inputFileHelper = nullptr; diff --git a/2025/Cpp/AdventHelpersTester/AdventHelpersTester.cpp b/2025/Cpp/AdventHelpersTester/AdventHelpersTester.cpp index 1882af3..cb261a3 100644 --- a/2025/Cpp/AdventHelpersTester/AdventHelpersTester.cpp +++ b/2025/Cpp/AdventHelpersTester/AdventHelpersTester.cpp @@ -5,32 +5,32 @@ // Interface -class ExampleSolution : public AdventHelpers::IAdventOfCodeSolution -{ -public: - virtual void SolveExample(AdventHelper::InputFileHelper& inputFile) override; - virtual void SolveProblem01(AdventHelper::InputFileHelper& inputFile) override; - virtual void SolveProblem02(AdventHelper::InputFileHelper& inputFile) override; -}; +//class ExampleSolution : public AdventHelpers::IAdventOfCodeSolution +//{ +//public: +// virtual std::string SolveExample01(AdventHelper::InputFileHelper& inputFile) override; +// virtual std::string SolveProblem01(AdventHelper::InputFileHelper& inputFile) override; +// virtual std::string SolveProblem02(AdventHelper::InputFileHelper& inputFile) override; +//}; int main() { - auto* inputHelper = AdventHelper::InputFileHelper::create("input.txt"); + auto* inputHelper = AdventHelpers::InputFileHelper::create("input.txt"); std::cout << "Hello World!\n"; - AdventHelper::InputFileHelper::destroy(inputHelper); + AdventHelpers::InputFileHelper::destroy(inputHelper); } // Implementation -void ExampleSolution::SolveExample(AdventHelper::InputFileHelper& inputFile) { - -} - -void ExampleSolution::SolveProblem01(AdventHelper::InputFileHelper& inputFile) { - -} - -void ExampleSolution::SolveProblem02(AdventHelper::InputFileHelper& inputFile) { -} \ No newline at end of file +//void ExampleSolution::SolveExample(AdventHelper::InputFileHelper& inputFile) { +// +//} +// +//void ExampleSolution::SolveProblem01(AdventHelper::InputFileHelper& inputFile) { +// +//} +// +//void ExampleSolution::SolveProblem02(AdventHelper::InputFileHelper& inputFile) { +//} \ No newline at end of file diff --git a/2025/Cpp/AdventOfCode.slnx b/2025/Cpp/AdventOfCode.slnx index 1f3aa7a..d404874 100644 --- a/2025/Cpp/AdventOfCode.slnx +++ b/2025/Cpp/AdventOfCode.slnx @@ -5,4 +5,5 @@ + diff --git a/2025/Cpp/Day01/Day01.cpp b/2025/Cpp/Day01/Day01.cpp new file mode 100644 index 0000000..cde9c9d --- /dev/null +++ b/2025/Cpp/Day01/Day01.cpp @@ -0,0 +1,130 @@ +#include "AdventHelpers/AdventOfCodeSolution.h" + +#include +#include +#include + +class Dial { +public: + Dial(bool debug = false, int initialPosition = 50, int minPosition = 0, int maxPosition = 99) + : mDebug(debug) + , mPosition(initialPosition) + , mMinPosition(minPosition) + , mMaxPosition(maxPosition) + { + + } + + // Returns number of times it passes 0 + int TurnLeft(int amount) { + int clicksAtZero = 0; + + if (mDebug) std::cout << "Turning left " << amount << " from " << mPosition; + + while (amount > 0) { + if (mPosition == 0) { + mPosition = mMaxPosition; + } + else { + mPosition--; + if (mPosition == 0) clicksAtZero++; + } + amount--; + } + + assert(amount == 0); + if (mDebug) std::cout << " Ended at: " << mPosition << std::endl; + + return clicksAtZero; + } + + // Returns number of times it passes 0 + int TurnRight(int amount) { + int clicksAtZero = 0; + + if (mDebug) std::cout << "Turning right " << amount << " from " << mPosition; + + while (amount > 0) { + if (mPosition == mMaxPosition) { + mPosition = 0; + clicksAtZero++; + } + else { + mPosition++; + } + amount--; + } + assert(amount == 0); + if (mDebug) std::cout << " Ended at: " << mPosition << std::endl; + + return clicksAtZero; + } + + int GetPosition() const { + return mPosition; + } +private: + const bool mDebug; + const int mMaxPosition; + const int mMinPosition; + int mPosition; +}; + +class Day01Solution : public AdventHelpers::AdventOfCodeSolution +{ +public: + virtual std::string SolveProblem01(AdventHelpers::InputFileHelper& inputFile) override { + Dial dial; + int password = 0; + + for (const auto& line : inputFile) { + assert(line.length() >= 2); + char direction = line[0]; + int amount = std::stoi(line.substr(1)); + + if (direction == 'L') { + dial.TurnLeft(amount); + } + else if (direction == 'R') { + dial.TurnRight(amount); + } + else { + assert(false && "Invalid direction"); + } + + if (dial.GetPosition() == 0) { + password++; + } + } + return std::to_string(password); + } + + virtual std::string SolveProblem02(AdventHelpers::InputFileHelper& inputFile) override { + Dial dial; + int clicksAtZero = 0; + + for (const auto& line : inputFile) { + assert(line.length() >= 2); + char direction = line[0]; + int amount = std::stoi(line.substr(1)); + + if (direction == 'L') { + clicksAtZero += dial.TurnLeft(amount); + } + else if (direction == 'R') { + clicksAtZero += dial.TurnRight(amount); + } + else { + assert(false && "Invalid direction"); + } + } + return std::to_string(clicksAtZero); + } +}; + +int main() +{ + Day01Solution solution; + solution.SolveAll(); +} + diff --git a/2025/Cpp/Day01/Day01.vcxproj b/2025/Cpp/Day01/Day01.vcxproj new file mode 100644 index 0000000..b419ecd --- /dev/null +++ b/2025/Cpp/Day01/Day01.vcxproj @@ -0,0 +1,140 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 18.0 + Win32Proj + {ea6fa096-2ae5-4dd8-9834-b032b6ba9e6b} + Day01 + 10.0 + + + + Application + true + v145 + Unicode + + + Application + false + v145 + true + Unicode + + + Application + true + v145 + Unicode + + + Application + false + v145 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp20 + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp20 + + + Console + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp20 + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp20 + + + Console + true + + + + + + + + {df572ffd-18c6-4b8d-8d35-4855f9a05376} + + + + + + \ No newline at end of file diff --git a/2025/Cpp/Day01/Day01.vcxproj.filters b/2025/Cpp/Day01/Day01.vcxproj.filters new file mode 100644 index 0000000..c4b0742 --- /dev/null +++ b/2025/Cpp/Day01/Day01.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + \ No newline at end of file diff --git a/2025/Cpp/Day01/example-input.txt b/2025/Cpp/Day01/example-input.txt new file mode 100644 index 0000000..d03fad7 --- /dev/null +++ b/2025/Cpp/Day01/example-input.txt @@ -0,0 +1,10 @@ +L68 +L30 +R48 +L5 +R60 +L55 +L1 +L99 +R14 +L82 \ No newline at end of file diff --git a/2025/Cpp/Day01/puzzle-input.txt b/2025/Cpp/Day01/puzzle-input.txt new file mode 100644 index 0000000..d882fb6 --- /dev/null +++ b/2025/Cpp/Day01/puzzle-input.txt @@ -0,0 +1,4168 @@ +R2 +R6 +L19 +L50 +L44 +R50 +R48 +L35 +R5 +R11 +R15 +R47 +R29 +R6 +R33 +R43 +R25 +R42 +L34 +R22 +L4 +L35 +R4 +R28 +R29 +L8 +L14 +L25 +R9 +L37 +L42 +R26 +R27 +R47 +L21 +R31 +L9 +L6 +R26 +R44 +R2 +L38 +L14 +R21 +R49 +L47 +R23 +L25 +R20 +L13 +R12 +L46 +L66 +R12 +L41 +L92 +R19 +L89 +R30 +L39 +L30 +L24 +R13 +R75 +L92 +R58 +R68 +R32 +R12 +L33 +R49 +L28 +R41 +R24 +R76 +L62 +R14 +L93 +R25 +R75 +R68 +L19 +L49 +R13 +R71 +R16 +L4 +L40 +R31 +L75 +L90 +L40 +L82 +R63 +L99 +L56 +R17 +R40 +R94 +L59 +R12 +L3 +R91 +R66 +R34 +R525 +L325 +R53 +R168 +L212 +R291 +L16 +R81 +L65 +L37 +R76 +R25 +L64 +R10 +L310 +R28 +R42 +L70 +L984 +L59 +R159 +R54 +R30 +L39 +R19 +L880 +L824 +L64 +L22 +R10 +R20 +L17 +L103 +R3 +R82 +L85 +L30 +R35 +L605 +L75 +L44 +R19 +R88 +R12 +L35 +R435 +R42 +R59 +R13 +R71 +L698 +R80 +L67 +R87 +L87 +R35 +R65 +L69 +R102 +L33 +R60 +R9 +L553 +L16 +L880 +L20 +R16 +L16 +R704 +R496 +L16 +L83 +R73 +L98 +L43 +L908 +L38 +R27 +R80 +L94 +R66 +R82 +L48 +R376 +L76 +R70 +R63 +R48 +L36 +L32 +R81 +R6 +L62 +L486 +R48 +L20 +L65 +L31 +L40 +L90 +L71 +R17 +L36 +L64 +L72 +R37 +L65 +L2 +L17 +R58 +R58 +L44 +L153 +L43 +R490 +L47 +L73 +R33 +R40 +L48 +R50 +L73 +L68 +L21 +L91 +R7 +L838 +R91 +R91 +R98 +R42 +L78 +L67 +R28 +L42 +R19 +R76 +R49 +R75 +L714 +L61 +R75 +L79 +R33 +L954 +R37 +L37 +R74 +R26 +L646 +R15 +L69 +L27 +R327 +L43 +R61 +R66 +R616 +L68 +R51 +R57 +L40 +L98 +R598 +R7 +R93 +L10 +L12 +L15 +R71 +L842 +R908 +L546 +R46 +L949 +L551 +R23 +L28 +R93 +L47 +R31 +L54 +R82 +R582 +R18 +L55 +L45 +L67 +L595 +L599 +R61 +L55 +L45 +R596 +L317 +R955 +L491 +R857 +R80 +L80 +R37 +R97 +L87 +R353 +R16 +R56 +L71 +R80 +L25 +L56 +L40 +R40 +R261 +R39 +R869 +L748 +L44 +R812 +R11 +R39 +L8 +L231 +L66 +R345 +R21 +L39 +R62 +R84 +R23 +R876 +L106 +L47 +R1 +L54 +R6 +R1 +L578 +L12 +L17 +L72 +R72 +R52 +L29 +R17 +L53 +R13 +L18 +R318 +L54 +R37 +R17 +L86 +R86 +L96 +R15 +L19 +R91 +L91 +R92 +R22 +R95 +R39 +R90 +L738 +R53 +L53 +R78 +L22 +L259 +L97 +L94 +R94 +R16 +L28 +R12 +L25 +L68 +R56 +R99 +L62 +R87 +R68 +L55 +L38 +R46 +R663 +L8 +L63 +L46 +L47 +R41 +R68 +L65 +R49 +R58 +L46 +R15 +R10 +R63 +R42 +R23 +R516 +L381 +R24 +L81 +L64 +L85 +R6 +R43 +L35 +R59 +L68 +L90 +R91 +R72 +R2 +R520 +R191 +R98 +L748 +L35 +L83 +R50 +L6 +L79 +R18 +L14 +R14 +L428 +L2 +R10 +L556 +R2 +L84 +R30 +L24 +R52 +R91 +R194 +L885 +R39 +R66 +R76 +L81 +L54 +L546 +R81 +R46 +R73 +L171 +L629 +R80 +L37 +L83 +R40 +R72 +L134 +R62 +R4 +R9 +R43 +L56 +R94 +L6 +L83 +R7 +R90 +L83 +L719 +L49 +R49 +L57 +L988 +L54 +R818 +R81 +R242 +L42 +R11 +R50 +R60 +L421 +R73 +L427 +L83 +R88 +L52 +R94 +R89 +L82 +R687 +R74 +R27 +L57 +R66 +R45 +R68 +R38 +L148 +L36 +R36 +L212 +R81 +L35 +L34 +L83 +R783 +L7 +L93 +R372 +L72 +R382 +R318 +R47 +L147 +R8 +R25 +R67 +L8 +R92 +L34 +L95 +L48 +R11 +R28 +R7 +R47 +R90 +L49 +R20 +L61 +L91 +L9 +L512 +L88 +R53 +L35 +L197 +L10 +R83 +R6 +L86 +L217 +R3 +R607 +R93 +R331 +L31 +L297 +R24 +L959 +R52 +R380 +L54 +R75 +R46 +R46 +R7 +R923 +R57 +L97 +R3 +L28 +L40 +R362 +L57 +R57 +R38 +R38 +R24 +R62 +R38 +L93 +L7 +L62 +R69 +L503 +R41 +R36 +R396 +L77 +L66 +R66 +R62 +R3 +L565 +L42 +L58 +L311 +L78 +L33 +L67 +R589 +R814 +R86 +L124 +L8 +R59 +L71 +R73 +R982 +L54 +L522 +R265 +R178 +R57 +R229 +R28 +L92 +L174 +L888 +R440 +R22 +L864 +R32 +L12 +L156 +R62 +R43 +R573 +R22 +L57 +L42 +R918 +L19 +L55 +L6 +R29 +R59 +R473 +R51 +R73 +L11 +R83 +L96 +R10 +L64 +R54 +R767 +L46 +R79 +R636 +L16 +L79 +L6 +L91 +L94 +L50 +L412 +R272 +R88 +L10 +L12 +R74 +R67 +L67 +L346 +L854 +R155 +R54 +L16 +R307 +L8 +L492 +R12 +R88 +L18 +R62 +R15 +R48 +L21 +R80 +L91 +R25 +L29 +R29 +R9 +R91 +L96 +R96 +R20 +L79 +R97 +R75 +R31 +R56 +R87 +L63 +R95 +R8 +R67 +L94 +R5 +L502 +L78 +L55 +L83 +R15 +R98 +R411 +R89 +L115 +R65 +R84 +R76 +R43 +R693 +L91 +R56 +R489 +R47 +R24 +R26 +L764 +L11 +L22 +R836 +R96 +R16 +R12 +R50 +R46 +R14 +R86 +L30 +L642 +L84 +R556 +L713 +L43 +R950 +R50 +R31 +L340 +R18 +R91 +R426 +L949 +L957 +L20 +L31 +L969 +L49 +R49 +L39 +R546 +L77 +R78 +L961 +L47 +L67 +R14 +L47 +L30 +R8 +R22 +R642 +L56 +R53 +L41 +L35 +L63 +R94 +L994 +R90 +R97 +R13 +L80 +R743 +R67 +R70 +L60 +R68 +L951 +R86 +R19 +L786 +L375 +L101 +L22 +L26 +L52 +R81 +R277 +L358 +L23 +L5 +R21 +L848 +L10 +R90 +R9 +L34 +L10 +L72 +L73 +L160 +R50 +R513 +L48 +R2 +L2 +R70 +L66 +R20 +R41 +L65 +L843 +L48 +R80 +L92 +R53 +L84 +L72 +R6 +R72 +L16 +L95 +L82 +R44 +L23 +L606 +R89 +L166 +L16 +L29 +R43 +L15 +L13 +L27 +R95 +R69 +R355 +L94 +R89 +L74 +R112 +R548 +L60 +R62 +R38 +R89 +L89 +R64 +R81 +L45 +R81 +R14 +L498 +R2 +L253 +L46 +L14 +L61 +L3 +L14 +R32 +R61 +R30 +L712 +R24 +L40 +R43 +L746 +L28 +L573 +R39 +L98 +R560 +L729 +L71 +L303 +R3 +L154 +R88 +L2 +L488 +R76 +L14 +L95 +R589 +R6 +L67 +L39 +L12 +L88 +R291 +R309 +R423 +L41 +L80 +L46 +L856 +R48 +L48 +L28 +L72 +R97 +R40 +L12 +R872 +L12 +L485 +R99 +R41 +R92 +R21 +L457 +R95 +L73 +R38 +L2 +L78 +R68 +R140 +R160 +L494 +L491 +R11 +L15 +R74 +R31 +R91 +R12 +L137 +L533 +R52 +L63 +R61 +R557 +L1 +L99 +R886 +R66 +L754 +L98 +L48 +R178 +R236 +L75 +L91 +L74 +R74 +R592 +L82 +L19 +R98 +L789 +L71 +R71 +L78 +L34 +L38 +R49 +L99 +L76 +L24 +R62 +L96 +L62 +R96 +R637 +R63 +R75 +L87 +R87 +L16 +R459 +R39 +L227 +L30 +L87 +R1 +L17 +R97 +L99 +L495 +R70 +L70 +R22 +R31 +L66 +L68 +L25 +R6 +L62 +L81 +L57 +R16 +L37 +L79 +R17 +R69 +L602 +L84 +R724 +L47 +R6 +L99 +R94 +L78 +R64 +R81 +L369 +L76 +L75 +R588 +R15 +R77 +R85 +R910 +R78 +R22 +L57 +R957 +R51 +L59 +L46 +L38 +R51 +L58 +L1 +R89 +R83 +L86 +L86 +L4 +L96 +L222 +L78 +R698 +R2 +L16 +R316 +R27 +R7 +L734 +L18 +R34 +R17 +L152 +R28 +L24 +L72 +L11 +R56 +L58 +R61 +L61 +L43 +L57 +R457 +R97 +L551 +L3 +R79 +R89 +L68 +L74 +L5 +L765 +R95 +L251 +L82 +L402 +R67 +R317 +L14 +L86 +L82 +L40 +L61 +R283 +R92 +R8 +L50 +L98 +R31 +L99 +R519 +R84 +R13 +R34 +L74 +R58 +R82 +R4 +R96 +R89 +L12 +R30 +R81 +R23 +R87 +L65 +R27 +L11 +L49 +L698 +R98 +L80 +R80 +L37 +L63 +L7 +R637 +L67 +R74 +L52 +R77 +R342 +R96 +L28 +L249 +L42 +R19 +R68 +R32 +L82 +R16 +L73 +L1 +R162 +R264 +R17 +L3 +R33 +R37 +L40 +R91 +L60 +L21 +L88 +R70 +R65 +R13 +L16 +L584 +L42 +L58 +R16 +R84 +R4 +L4 +R34 +L34 +R526 +L26 +L961 +R77 +R84 +R52 +L35 +L33 +L5 +R121 +R74 +L16 +L258 +L98 +R98 +R16 +R41 +L66 +R903 +L10 +L84 +R3 +R871 +R26 +R46 +R54 +R931 +L87 +R756 +R26 +R74 +R31 +R69 +R85 +L695 +L77 +L13 +R336 +R30 +R4 +R41 +R99 +L83 +L82 +L45 +L24 +R42 +R782 +R26 +R574 +R30 +R70 +L11 +R79 +L668 +L292 +L29 +L35 +R953 +R40 +R63 +L262 +L78 +L60 +L36 +L264 +R78 +L657 +L904 +R31 +R77 +R75 +L95 +R787 +R41 +R67 +L2 +R24 +L40 +R18 +R18 +R40 +L64 +L94 +L19 +L21 +R30 +L34 +R44 +R23 +L634 +L84 +L21 +L19 +L65 +L181 +R11 +R79 +R91 +R221 +L5 +R93 +R615 +R521 +R36 +R77 +L75 +L59 +L75 +R51 +L77 +L23 +R36 +R77 +L26 +L635 +L74 +R54 +R85 +R83 +R86 +R38 +R53 +L792 +L39 +L46 +R77 +L28 +L62 +R91 +L60 +R79 +L97 +L83 +R55 +L47 +R34 +L59 +L34 +L9 +L774 +R57 +L49 +R509 +R102 +R57 +L64 +L195 +L235 +R97 +L62 +L81 +R86 +L23 +R18 +L51 +R560 +L9 +L33 +R33 +R31 +L38 +R7 +L88 +R88 +R28 +R52 +R20 +L65 +L560 +R62 +R619 +L56 +L30 +R30 +R13 +L65 +L17 +L85 +R29 +R55 +L60 +R633 +L70 +L84 +R68 +L17 +L47 +L53 +R65 +R801 +R949 +R61 +L60 +L16 +R82 +L16 +L66 +R81 +L24 +L62 +R5 +R77 +R23 +L72 +R34 +L89 +L57 +R28 +L47 +L97 +L99 +R899 +L53 +R47 +R66 +R11 +R829 +L59 +L41 +L57 +R545 +R36 +L24 +R714 +R86 +L628 +L72 +L648 +R76 +R63 +L691 +R32 +R35 +L42 +L99 +L87 +L39 +R92 +L82 +R27 +R63 +L38 +R804 +R34 +R95 +L95 +R67 +L41 +R74 +R46 +R737 +R17 +L43 +R943 +L48 +R48 +R19 +L56 +R89 +L52 +L32 +R732 +R40 +L57 +L8 +R306 +R619 +L32 +L7 +L661 +L72 +L591 +L37 +R74 +L74 +L65 +R22 +R42 +R1 +R12 +R94 +R90 +R78 +L74 +L26 +R26 +R87 +R21 +R10 +R59 +L66 +L540 +L71 +R82 +R51 +L33 +R80 +R20 +L213 +L78 +R42 +L8 +L143 +L21 +R21 +R78 +L16 +R70 +L32 +R79 +L79 +R70 +R30 +L98 +L73 +R60 +L37 +R48 +L50 +L23 +L27 +R410 +L55 +L55 +R94 +L20 +R26 +R40 +L433 +L824 +R39 +L53 +R477 +R10 +R8 +L972 +R95 +L87 +R90 +L911 +L779 +L484 +R48 +R36 +R63 +R10 +L825 +L570 +L58 +L20 +L853 +R53 +L97 +R2 +L58 +R54 +L95 +R99 +R50 +R78 +L33 +L76 +L32 +L792 +R44 +R64 +L48 +R30 +R10 +R766 +R48 +L74 +L40 +L75 +L48 +L60 +L417 +R75 +R17 +R808 +L70 +R25 +R95 +R782 +R198 +R70 +L78 +R46 +R44 +L12 +L82 +R781 +L896 +L37 +R34 +L79 +L39 +L25 +R43 +R699 +R16 +R48 +R14 +L77 +L98 +L20 +L82 +L39 +L51 +R90 +L14 +L973 +L52 +L22 +L1 +L38 +R87 +R39 +R2 +R64 +L10 +R18 +L57 +R2 +L345 +L78 +L84 +R62 +R13 +L799 +R1 +L76 +L539 +R7 +R93 +R51 +R49 +L99 +L1 +R57 +R98 +R75 +R70 +L78 +L555 +L66 +R3 +L92 +R488 +R165 +L50 +L16 +L899 +R5 +R95 +R34 +R75 +L707 +R98 +R12 +R53 +L28 +L71 +R34 +L88 +L12 +L30 +L70 +L28 +L89 +L80 +L95 +L8 +L51 +L190 +R95 +L98 +R44 +R627 +R56 +L39 +R91 +L35 +R904 +R76 +R21 +L53 +L49 +R901 +L48 +R48 +R81 +R91 +L25 +L83 +L20 +R56 +L81 +L19 +L39 +R39 +R97 +R3 +R72 +L83 +R80 +R31 +R73 +R96 +L69 +R93 +R7 +L302 +L98 +L46 +R50 +R96 +L59 +L42 +L28 +R81 +R53 +R20 +L22 +R97 +R87 +R13 +R627 +R59 +L11 +R25 +L28 +L60 +R126 +R67 +L15 +R10 +L84 +R84 +R89 +R75 +L64 +R71 +L74 +L516 +L91 +R10 +L32 +R32 +L12 +R12 +R35 +L85 +R74 +R22 +L46 +R9 +R91 +L76 +L488 +R614 +R50 +R12 +R88 +L807 +L64 +L31 +L17 +R43 +L98 +L826 +R6 +L50 +L1 +L64 +R109 +R40 +L40 +R52 +L252 +R78 +R422 +R749 +R43 +L92 +L18 +R718 +R75 +R6 +R19 +R39 +R54 +L29 +L65 +L99 +L11 +R54 +L89 +L73 +L74 +R93 +R801 +R99 +R36 +L62 +R51 +R578 +R397 +R55 +L240 +R12 +R73 +R7 +L67 +R38 +R96 +L71 +R40 +R43 +L44 +L42 +R59 +L87 +R28 +L256 +L944 +R28 +L587 +R7 +L948 +R93 +L93 +L18 +R18 +R32 +R762 +R49 +L43 +R12 +R46 +R42 +L808 +R8 +L90 +R90 +L40 +R63 +R77 +R61 +L599 +L1 +R39 +L40 +R30 +L17 +L85 +R12 +L86 +R241 +R78 +L85 +R6 +R206 +R5 +L65 +L41 +L59 +L158 +R58 +R66 +R49 +L75 +L59 +R74 +R45 +R85 +L45 +R60 +L7 +L889 +L1 +L349 +R746 +L72 +R72 +R17 +R83 +L517 +R73 +L89 +R33 +L25 +L214 +R3 +R91 +L55 +L88 +L14 +R147 +L3 +R74 +L40 +L76 +L26 +R60 +R57 +L83 +R192 +R51 +R49 +R49 +R451 +L74 +L49 +R10 +L85 +L63 +L316 +R82 +L5 +R85 +L85 +R19 +R481 +L330 +R30 +L64 +R64 +L74 +L54 +L802 +R95 +R35 +R29 +L276 +L999 +L16 +L964 +L374 +L49 +L94 +L42 +L507 +R41 +R73 +L9 +L20 +L93 +R5 +L14 +L91 +R23 +R881 +L4 +L62 +R505 +R46 +R11 +R5 +R95 +R17 +R65 +L82 +R31 +R50 +R579 +R40 +L38 +L18 +L66 +R72 +R37 +L76 +R64 +R25 +R65 +L865 +R75 +L42 +R67 +R34 +R97 +R45 +R136 +L12 +L52 +L48 +L30 +L70 +R407 +L27 +L44 +L57 +L84 +L47 +R52 +L66 +R66 +R70 +R30 +R55 +R345 +R63 +R37 +R4 +R878 +R744 +L26 +R7 +L507 +L26 +R24 +L51 +R557 +R951 +L67 +L88 +R640 +L10 +L876 +R798 +L52 +R41 +L41 +L30 +R57 +L27 +R2 +L4 +R2 +R92 +R34 +L48 +R448 +R97 +L101 +R78 +R635 +R65 +L67 +L65 +L68 +R163 +L63 +L8 +L892 +L131 +L69 +R910 +L10 +L10 +L30 +R25 +R795 +L79 +R99 +L21 +L79 +R148 +R52 +R64 +L64 +L84 +R77 +L82 +L62 +R53 +L2 +R1 +R52 +R47 +R12 +R55 +R133 +R71 +R40 +L909 +R98 +L777 +L23 +L80 +L7 +L13 +L682 +R28 +R79 +R65 +L65 +R34 +L78 +L890 +R69 +L5 +R45 +R73 +L75 +L69 +R19 +L59 +R94 +R17 +R54 +R38 +R8 +R37 +R793 +R770 +L86 +L30 +R16 +L58 +L42 +L71 +L44 +R291 +R24 +L56 +R39 +R590 +R10 +L983 +L20 +R73 +L58 +R88 +R18 +L1 +L81 +R81 +R97 +R41 +R88 +L67 +L359 +L13 +L72 +L94 +L21 +L97 +L62 +R67 +R92 +R56 +L56 +L65 +L35 +L22 +R48 +R856 +L81 +L404 +L42 +R45 +L303 +L42 +L55 +R429 +R71 +R86 +R14 +R820 +L92 +R58 +R14 +R73 +R27 +R62 +R38 +R63 +L11 +R58 +R32 +R4 +L346 +L56 +L51 +L767 +R63 +R56 +L45 +L65 +L35 +L30 +R15 +L90 +R98 +R88 +L61 +L80 +L6 +R66 +L88 +R20 +L66 +L466 +R470 +L94 +L60 +L416 +L14 +L86 +R6 +L82 +R60 +L84 +R46 +L46 +L85 +R44 +R41 +R69 +R989 +L158 +R445 +L45 +L73 +R64 +L26 +L9 +R85 +L41 +L36 +R236 +R40 +R39 +L48 +L97 +R66 +L31 +R61 +R98 +R32 +R33 +R7 +L25 +R525 +R471 +L71 +R14 +L14 +R49 +R633 +R30 +R88 +R75 +R39 +R10 +L836 +L15 +L83 +L44 +L12 +R35 +R38 +L532 +R24 +R19 +L18 +R6 +L560 +R34 +R1 +R19 +L76 +L6 +L18 +L17 +R52 +L35 +R78 +R19 +R3 +L488 +R68 +L80 +R84 +R350 +L57 +L77 +R931 +R13 +L83 +R39 +R841 +R40 +R130 +L70 +R991 +R68 +L35 +L65 +R40 +R46 +L86 +R48 +R752 +R8 +R56 +R97 +L361 +L72 +R8 +R31 +R33 +R75 +L17 +L88 +R63 +L3 +R87 +R29 +L46 +L129 +L971 +R77 +L57 +L478 +R58 +L27 +R30 +R69 +L72 +L41 +R58 +R83 +L15 +R67 +L65 +R24 +R13 +L29 +L32 +R37 +L14 +L372 +R98 +R604 +L49 +R90 +R843 +L367 +R467 +L21 +L79 +L276 +L63 +R39 +R2 +L2 +R6 +R96 +L55 +L47 +R69 +L11 +R64 +L522 +L78 +R80 +R798 +R856 +R78 +L5 +R71 +R54 +R346 +L59 +R87 +L70 +R42 +L46 +R46 +R22 +R78 +R387 +R13 +R51 +R16 +R33 +R14 +L62 +L2 +L93 +L10 +L107 +R14 +L981 +L73 +L56 +L44 +L50 +L50 +R8 +R586 +R6 +L71 +R71 +L79 +R79 +L182 +L43 +R925 +L95 +L5 +R49 +L349 +R67 +R92 +L8 +L51 +L85 +R85 +L3 +L97 +L34 +R183 +R471 +L12 +L8 +R99 +L35 +L461 +R97 +R85 +L85 +L58 +L7 +L35 +R75 +L22 +L701 +R41 +R747 +L47 +R59 +L52 +R18 +L18 +L836 +R36 +L5 +R5 +R79 +L82 +R41 +L328 +R4 +R86 +L31 +R31 +L38 +R13 +L375 +L76 +R594 +L112 +L6 +R193 +R45 +R62 +R267 +L85 +R18 +L51 +L542 +L807 +L68 +L765 +R528 +L61 +R66 +R40 +L240 +L16 +L84 +R37 +L58 +R21 +R68 +L796 +R24 +L68 +R66 +R9 +L379 +R495 +L19 +R37 +R8 +R40 +R14 +L42 +R43 +R41 +R21 +L67 +R46 +L25 +R84 +R52 +R48 +R419 +R383 +R30 +L3 +L34 +L95 +L21 +L79 +L842 +L803 +L62 +R7 +L49 +R67 +R39 +R43 +R7 +L74 +R67 +R90 +R10 +R6 +L16 +L62 +R68 +L9 +R58 +R34 +R66 +R79 +R10 +L82 +R48 +R869 +R31 +L94 +R6 +L38 +R26 +L75 +L86 +L5 +L1 +R74 +R16 +R77 +L34 +R72 +L67 +L47 +L762 +R234 +L53 +R96 +R53 +R55 +R20 +L67 +L861 +R89 +R772 +L262 +L638 +L52 +R52 +L81 +L64 +L55 +L466 +L60 +R615 +L769 +R80 +R17 +L92 +L68 +L57 +R50 +L50 +L13 +R30 +R82 +L97 +L586 +R17 +R63 +R732 +L66 +L62 +R14 +L14 +R95 +R53 +L105 +L6 +R19 +R85 +L38 +R20 +L958 +L68 +L52 +L71 +R26 +R45 +R47 +L956 +R64 +R65 +R135 +R68 +R41 +L48 +R42 +L508 +R89 +R97 +R308 +L97 +R848 +L40 +R42 +L42 +L606 +R6 +R8 +R92 +R3 +R368 +R18 +R36 +L788 +R76 +R87 +R94 +R892 +L86 +R59 +R41 +L420 +R46 +L24 +R98 +L77 +R977 +L47 +L67 +R8 +R64 +R42 +R59 +R40 +R501 +R86 +L366 +L83 +R63 +R633 +R7 +R23 +R99 +L10 +L77 +L95 +L90 +L72 +L50 +L40 +L654 +L74 +L57 +L74 +L69 +R33 +L830 +R52 +R586 +L17 +R49 +L91 +L22 +L78 +R653 +R65 +R19 +R91 +R89 +L46 +L67 +L264 +R80 +L396 +L47 +R31 +R26 +L69 +L53 +L57 +L837 +L82 +L32 +R39 +L312 +L29 +L22 +L62 +R87 +R35 +R78 +L90 +R90 +L27 +L14 +R41 +L68 +R68 +L67 +R44 +R66 +R96 +L44 +R5 +R777 +L68 +L19 +R10 +L12 +L36 +L48 +L24 +L4 +R92 +R32 +R73 +L6 +L22 +L87 +R77 +R91 +R56 +R65 +L65 +R71 +L93 +R70 +L430 +R389 +R4 +L283 +L12 +L193 +L14 +L91 +L94 +L23 +L37 +L32 +R787 +L1 +R811 +L22 +L27 +L54 +R92 +L9 +L13 +R22 +R896 +R47 +R12 +R952 +R87 +L59 +L35 +L91 +L9 +R1 +L201 +L96 +R78 +R33 +L15 +R10 +L219 +R9 +R72 +L72 +R67 +R53 +R80 +R78 +R63 +R73 +L14 +L53 +L47 +R57 +R50 +R793 +R99 +L61 +L56 +L64 +L68 +L21 +L29 +R2 +R82 +R16 +L975 +L85 +L42 +L70 +R72 +R62 +R26 +R74 +R38 +L790 +L10 +R78 +L89 +L89 +R520 +R48 +L68 +L48 +R30 +L601 +L81 +R994 +R6 +L48 +L62 +R28 +R782 +L181 +L19 +L49 +R49 +L67 +L872 +L60 +L62 +L38 +L47 +L54 +L19 +L60 +R68 +R6 +R78 +L4 +R7 +L576 +R14 +L6 +L49 +R58 +L960 +R33 +R12 +L2 +L67 +L21 +R88 +L7 +L241 +L77 +R925 +R21 +R79 +R71 +L971 +R17 +R83 +L65 +R55 +R21 +R87 +R50 +L505 +R298 +L60 +R88 +R30 +L52 +L47 +L59 +L37 +L80 +R3 +R497 +L253 +R29 +R54 +R46 +L61 +L39 +L29 +L321 +R380 +L96 +R66 +L5 +R5 +L78 +R179 +L382 +R7 +R74 +R31 +R14 +R87 +R81 +R79 +R11 +L574 +L81 +L85 +R810 +R27 +L59 +L443 +L62 +L36 +R90 +R10 +L810 +L553 +R587 +L5 +R21 +R31 +L71 +L35 +L58 +R77 +R22 +L6 +L63 +R9 +L420 +R15 +R459 +R634 +L63 +L63 +R74 +L40 +R58 +L62 +L60 +L321 +L57 +R51 +L49 +L71 +R969 +R62 +L62 +L56 +L639 +R95 +L33 +R37 +L804 +L585 +L20 +L95 +L242 +L40 +L728 +R43 +L573 +L60 +L78 +L147 +L75 +R29 +R53 +L37 +R55 +R14 +R86 +R82 +L46 +R64 +R52 +L52 +R58 +R42 +L90 +L2 +R18 +R74 +L78 +R78 +L38 +L62 +R16 +L410 +R33 +R90 +L50 +L51 +L62 +R34 +R14 +L714 +L85 +R85 +R253 +R40 +L30 +L37 +R674 +R27 +R873 +L49 +L44 +L60 +R64 +L66 +R55 +L16 +L20 +R88 +R48 +R83 +R96 +R70 +L9 +R564 +R67 +L784 +R969 +L19 +L11 +R399 +R62 +R78 +L65 +L45 +L55 +L855 +L45 +R977 +R34 +R89 +R80 +R320 +R87 +R76 +L46 +R483 +L92 +L74 +R45 +R768 +L5 +R58 +L78 +L8 +R886 +R43 +R57 +L89 +R55 +R448 +L86 +R50 +L78 +L36 +L85 +L57 +L718 +L30 +R26 +L45 +R45 +L604 +L73 +L4 +L33 +R14 +L261 +L6 +L33 +R847 +L21 +L1 +L25 +R123 +R50 +L818 +R53 +R77 +L417 +R31 +R70 +R239 +R944 +R40 +L92 +L93 +L94 +R98 +R84 +L95 +L53 +L47 +R31 +L61 +L26 +L44 +R20 +R80 +L85 +R88 +R42 +R18 +L73 +R10 +L39 +L87 +L32 +L22 +L77 +L43 +R67 +R33 +R623 +L58 +L98 +L18 +R51 +R207 +R93 +R39 +L39 +R55 +L70 +L86 +L99 +R41 +R59 +L74 +L11 +R93 +R92 +L68 +L89 +L383 +R40 +L98 +L19 +R91 +L74 +R821 +R959 +R76 +R94 +L412 +R6 +R56 +R41 +L41 +L16 +L84 +R6 +L445 +L230 +R55 +R14 +L77 +L15 +R90 +R402 +L68 +L28 +L4 +L44 +R744 +L61 +R43 +L67 +L101 +L58 +R905 +L89 +L78 +L94 +R797 +R3 +R83 +L98 +L85 +L32 +R32 +R42 +L42 +L98 +R205 +L7 +R87 +R513 +L91 +L563 +R31 +L44 +R72 +R995 +R631 +R369 +L57 +R92 +R65 +L54 +R31 +R72 +L788 +L668 +R81 +L74 +R26 +L26 +R24 +R752 +R13 +R64 +L53 +R26 +L38 +R12 +R29 +L243 +R34 +L92 +L62 +L14 +R948 +R69 +R73 +R63 +L75 +L131 +R72 +L54 +L303 +R55 +L369 +L70 +L30 +R44 +R707 +R43 +L442 +R72 +R25 +R35 +L84 +R841 +L50 +R9 +L95 +L5 +R99 +R55 +L54 +L4 +R4 +R72 +L21 +R67 +R63 +R16 +L97 +L98 +L402 +R43 +R5 +L95 +R197 +R150 +L74 +L26 +L12 +L20 +L12 +L70 +L44 +L42 +R79 +R21 +R22 +L22 +R839 +R38 +R23 +R99 +R1 +R19 +R56 +R13 +L38 +R60 +L18 +R8 +L37 +R60 +L23 +R37 +L33 +R473 +R23 +R24 +R21 +L815 +R17 +R53 +L23 +R811 +R12 +L61 +L58 +R24 +L44 +L136 +R575 +L84 +L16 +L53 +R53 +R85 +L191 +R681 +R84 +R41 +L74 +R21 +L383 +L29 +L902 +L33 +L92 +R75 +L83 +R96 +L57 +L21 +L81 +R584 +R79 +R66 +L66 +R21 +L21 +R15 +R55 +L69 +R99 +L57 +L191 +R342 +L1 +R7 +L87 +R415 +R45 +L61 +R403 +L136 +R30 +L54 +L66 +R65 +R98 +L50 +L2 +L9 +L52 +R74 +R387 +L17 +R17 +L212 +R12 +L68 +R67 +L27 +L37 +L35 +R76 +L676 +L39 +R39 +R27 +L23 +L13 +L91 +L474 +R74 +L48 +L52 +R19 +L49 +L70 +L143 +L21 +R64 +L72 +L28 +L76 +R29 +L88 +R35 +R96 +R133 +R71 +R96 +L96 +L738 +R22 +L22 +R87 +L993 +L56 +L27 +L131 +R58 +L71 +R71 +R94 +L94 +L47 +R26 +R21 +L66 +R382 +R84 +R19 +R75 +L94 +L38 +R46 +L112 +L38 +R79 +R82 +L61 +L21 +L39 +L69 +L1 +R87 +R7 +R78 +L36 +R48 +L68 +R9 +L94 +L59 +L458 +L932 +L24 +R96 +R15 +L97 +L21 +L79 +L36 +L76 +L49 +R61 +R21 +R79 +L84 +R70 +R79 +R32 +R61 +R43 +R712 +R487 +R509 +L50 +L59 +L57 +R57 +L921 +R16 +L95 +L74 +R74 +R44 +R892 +R21 +L27 +L30 +L52 +L248 +R98 +R2 +R38 +R60 +R421 +L92 +R95 +R82 +L25 +R27 +R36 +R62 +L4 +R31 +L68 +L88 +L75 +R36 +R65 +L1 +R75 +L41 +L34 +R92 +R14 +L13 +L54 +L64 +R88 +R10 +L73 +R243 +R57 +L6 +L94 +R32 +R31 +R55 +L118 +L49 +L51 +R58 +R42 +L3 +R3 +R270 +L72 +L85 +R87 +R56 +L56 +R73 +R79 +R90 +L42 +L32 +L83 +L6 +L33 +L51 +L18 +R78 +L55 +L16 +L64 +R280 +R10 +L48 +L40 +L574 +L848 +R747 +R70 +R58 +R28 +L3 +L473 +L50 +L79 +R602 +L88 +R14 +R4 +R70 +L122 +R22 +L34 +L466 +L52 +L29 +R81 +L991 +R55 +R574 +L82 +L543 +R87 +L53 +R835 +L82 +R97 +L84 +L93 +R42 +R73 +R454 +R11 +L76 +R76 +R662 +L23 +R38 +L498 +R63 +R58 +L1 +R227 +R874 +R75 +R76 +L41 +L9 +L329 +R50 +R78 +L30 +R927 +R49 +L228 +R782 +L68 +L32 +R715 +R57 +R28 +R74 +L78 +L69 +L72 +R15 +R45 +R10 +R43 +L14 +R95 +R51 +L409 +R44 +R989 +L24 +R43 +R57 +L55 +L45 +R71 +L14 +R843 +R295 +R13 +R92 +R97 +L62 +R86 +L21 +L254 +R725 +L87 +R16 +R43 +R70 +R75 +L13 +R125 +R69 +R21 +L90 +R34 +R17 +L6 +L14 +L1 +L8 +L245 +R23 +L111 +R85 +L517 +R66 +R67 +R5 +L19 +R294 +L70 +L94 +R63 +L97 +L72 +L99 +R29 +L30 +R65 +R37 +R21 +L88 +L35 +R14 +R86 +R65 +R72 +R963 +L88 +R88 +R14 +L14 +L24 +R94 +L964 +R39 +L45 +L32 +R32 +L438 +L28 +L34 +L47 +L46 +L55 +L652 +R62 +L507 +L89 +R87 +R5 +L61 +L39 +L665 +R82 +R670 +L445 +R50 +R93 +L43 +R42 +R21 +R37 +R76 +L34 +R25 +L18 +R44 +R52 +R69 +L205 +L77 +L232 +R63 +L463 +L235 +L167 +L798 +R51 +L45 +L57 +R51 +R2 +R498 +R59 +R1 +L60 +L41 +R76 +R740 +R53 +R72 +R59 +R41 +L98 +R5 +R93 +L314 +R41 +R25 +L52 +L93 +L76 +L326 +R33 +L227 +R791 +L735 +R72 +R57 +L13 +L583 +R50 +L99 +L875 +R35 +R86 +R2 +L17 +L185 +L261 +L636 +R95 +L37 +R417 +R25 +L50 +R8 +L258 +R12 +R74 +R42 +L28 +R63 +R54 +L2 +L21 +R79 +L63 +L10 +R88 +R63 +L78 +R69 +R758 +R55 +R92 +R25 +R28 +R9 +L99 +R89 +L550 +L28 +L21 +L18 +L54 +L63 +L65 +L89 +R7 +R541 +R41 +R81 +R784 +R231 +R67 +R37 +L81 +R554 +R227 +R42 +R158 +L30 +L44 +L51 +R67 +R458 +R89 +L973 +L31 +L49 +L21 +R78 +L10 +L98 +R15 +L12 +R12 +R26 +L26 +R3 +L3 +L95 +L749 +L64 +L27 +L65 +L82 +R82 +L72 +R3 +L31 +R93 +L974 +L542 +L677 +L24 +R624 +L64 +R64 +R445 +L45 +R23 +R26 +L594 +L23 +R20 +L52 +L46 +L63 +L569 +R78 +R89 +R27 +R19 +R65 +L473 +R73 +R76 +L676 +L586 +R43 +R43 +R59 +L29 +L30 +R54 +R46 +L79 +R36 +L52 +R38 +R41 +L84 +R47 +L19 +R72 +L49 +L951 +L31 +R31 +R17 +R83 +L78 +L41 +L54 +R61 +R672 +L49 +L611 +L41 +L59 +R44 +L44 +R11 +L11 +R59 +R41 +R99 +R34 +R67 +L76 +L24 +L89 +L11 +L89 +L26 +L59 +L26 +R18 +R82 +R43 +L43 +L84 +R784 +L76 +R89 +L13 +R20 +R59 +R26 +R96 +R8 +L37 +R28 +L2 +R2 +R27 +R73 +R23 +R72 +L995 +L922 +R22 +R8 +L38 +R71 +L541 +L90 +L91 +R93 +R26 +L738 +L99 +R79 +L98 +R18 +L37 +L78 +L2 +R83 +R34 +R994 +R306 +L29 +L96 +L99 +L69 +L7 +R65 +L74 +R78 +R22 +R639 +L61 +R31 +R320 +R49 +L17 +R48 +R43 +R60 +R71 +L75 +R10 +L809 +R73 +L73 +R88 +R56 +L564 +L50 +R527 +R83 +L719 +L50 +R459 +L30 +R54 +R89 +R68 +L127 +L86 +R32 +L30 +R99 +R20 +R234 +R806 +R41 +L40 +L2 +L58 +R9 +R36 +R87 +R58 +R310 +L48 +R48 +R22 +L622 +R43 +L23 +R92 +R87 +L60 +R84 +L71 +R47 +L24 +R25 +R76 +L40 +L36 +L39 +L61 +L671 +R71 +R749 +L45 +L4 +L24 +R96 +R88 +L60 +L36 +R43 +R93 +R67 +L79 +R33 +L21 +R638 +L43 +R98 +R15 +R72 +L62 +L18 +L60 +R60 +L72 +L28 +R39 +R76 +R3 +R83 +L47 +R46 +R47 +R96 +R85 +L11 +L15 +L55 +L47 +R11 +L11 +R30 +R59 +R11 +R36 +R96 +R28 +R63 +R13 +R36 +L40 +R68 +L58 +L29 +L13 +R26 +R49 +R60 +L13 +R73 +L56 +L51 +R49 +R37 +R26 +L8 +R23 +R8 +R59 +R18 +L5 +R77 +L72 +L82 +L18 +L17 +R17 +R11 +L39 +L76 +L96 +R25 +L33 +R23 +L13 +L17 +R5 +R47 +L33 +R46 +L16 +L33 +R12 +R15 +L46 +R26 +L32 +R38 +R42 +R33 +L48 +R38 +L46 +R47 +L23 +L41 +L11 +L18 +R49 +L23 +R45 +R48 +R34 +L3 +L20 +L20 +R28 +R16 +R22 +R50 +L2 +L42 +R17 +R35 +R43 +L25 +R28 +R18 +L42 +L25 +L30