diff --git a/CMakeLists.txt b/CMakeLists.txt index 3aa5a105..93dbe3c9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,14 +17,6 @@ add_compile_definitions(STAQ_VERSION_STR="${STAQ_VERSION_STR}") #### staq root directory add_compile_definitions(PROJECT_ROOT_DIR="${PROJECT_SOURCE_DIR}") -#### grid synth -option(BUILD_GRID_SYNTH "Builds staq_grid_synth, requires GMP" OFF) -if (${BUILD_GRID_SYNTH}) - message(STATUS "Builds staq_grid_synth - ON") -else () - message(STATUS "Builds staq_grid_synth - OFF") -endif () - #### Force clang to use libc++ if (${CMAKE_CXX_COMPILER_ID} MATCHES "Clang") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") diff --git a/examples/rz_test1.qasm b/examples/rz_test1.qasm index 83eac25e..b9d39ccb 100644 --- a/examples/rz_test1.qasm +++ b/examples/rz_test1.qasm @@ -3,4 +3,4 @@ include "qelib1.inc"; qreg q[2]; -rz(2*pi/4) q; +rx(2*pi/4) q[0]; diff --git a/examples/rz_test2.qasm b/examples/rz_test2.qasm index 4f710b42..f45b7afb 100644 --- a/examples/rz_test2.qasm +++ b/examples/rz_test2.qasm @@ -3,6 +3,6 @@ include "qelib1.inc"; qreg q[2]; -rz(0.3) q[0]; -rx(3/10) q[0]; -ry(3*100/10/100) q[1]; +rz(-0.3) q[0]; +rz(-3/10) q[0]; +rz(9*-27/100*10/81) q[0]; diff --git a/include/grid_synth/exact_synthesis.hpp b/include/grid_synth/exact_synthesis.hpp index db66e0de..76f66a74 100644 --- a/include/grid_synth/exact_synthesis.hpp +++ b/include/grid_synth/exact_synthesis.hpp @@ -39,27 +39,38 @@ namespace grid_synth { // 1/(sqrt(omega)). inline str_t check_common_cases(real_t theta, const real_t& eps) { - while (theta > real_t("2")) - theta = theta - real_t("2"); + // Normalize theta to the range [0,4) + while (theta >= real_t("4")) + theta = theta - real_t("4"); while (theta < 0) - theta = theta + real_t("2"); + theta = theta + real_t("4"); + + // Deal with the case where theta is in [2,4) + str_t ret = ""; + if (theta >= real_t("2")) { + theta = theta - real_t("2"); + ret = "WWWW"; + } - if (abs(theta - real_t("0.25")) < eps) { - return "T w"; + // Check multiples of 1/4 in [0,2) + if (abs(theta) < eps) { + if (ret != "") + return ret; + return "I"; + } else if (abs(theta - real_t("0.25")) < eps) { + return "Tw" + ret; } else if (abs(theta - real_t("0.5")) < eps) { - return "S W W W W W W W"; + return "SWWWWWWW" + ret; } else if (abs(theta - real_t("0.75")) < eps) { - return "S T W W W W W W W w"; + return "STWWWWWWWw" + ret; } else if (abs(theta - real_t("1")) < eps) { - return "S S W W W W W W"; + return "SSWWWWWW" + ret; } else if (abs(theta - real_t("1.25")) < eps) { - return "S S T W W W W W W w"; + return "SSTWWWWWWw" + ret; } else if (abs(theta - real_t("1.5")) < eps) { - return "S S S W W W W W"; + return "SSSWWWWW" + ret; } else if (abs(theta - real_t("1.75")) < eps) { - return "S S S T W W W W W w"; - } else if (abs(theta - real_t("2")) < eps) { - return "W W W W"; + return "SSSTWWWWWw" + ret; } else { return ""; } diff --git a/include/grid_synth/grid_synth.hpp b/include/grid_synth/grid_synth.hpp new file mode 100644 index 00000000..6409a116 --- /dev/null +++ b/include/grid_synth/grid_synth.hpp @@ -0,0 +1,232 @@ +/* + * This file is part of staq. + * + * Copyright (c) 2019 - 2023 softwareQ Inc. All rights reserved. + * + * MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#ifndef GRID_SYNTH_GRID_SYNTH_HPP_ +#define GRID_SYNTH_GRID_SYNTH_HPP_ + +#include "exact_synthesis.hpp" +#include "matrix.hpp" +#include "rz_approximation.hpp" +#include "s3_table.hpp" +#include "types.hpp" + +namespace staq { +namespace grid_synth { + +/* Converts a GMP float to a string suitable for hashing. */ +static str_t to_string(const mpf_class& x) { + mp_exp_t exp; + // Use base 32 to get a shorter string; truncate the string + // to keep only the significant figures. + int sig_len = mpf_get_default_prec() / 5; + if (x < 0) + ++sig_len; // account for leading minus sign + str_t s = x.get_str(exp, 32).substr(0, sig_len); + return s + str_t(" ") + std::to_string(exp); +} + +/* Options passed when constructing a GridSynthesizer. */ +struct GridSynthOptions { + long int prec; // Precision in base 10 as a positive integer (10^p) + int factor_effort = MAX_ATTEMPTS_POLLARD_RHO; + bool check = false; + bool details = false; + bool verbose = false; + bool timer = false; +}; + +class GridSynthesizer { + private: + std::unordered_map angle_cache_; + const domega_matrix_table_t S3_TABLE; + + real_t eps_; + bool check_; + bool details_; + bool verbose_; + bool timer_; + + long long duration_; + bool valid_; + + /* Construct GridSynthesizer objects using the make_synthesizer + * factory function. + */ + GridSynthesizer(domega_matrix_table_t s3_table, real_t eps, bool check, + bool details, bool verbose, bool timer) + : angle_cache_(), S3_TABLE(std::move(s3_table)), eps_(std::move(eps)), + check_(check), details_(details), verbose_(verbose), timer_(timer), + duration_(0), valid_(true) {} + + public: + ~GridSynthesizer() {} + + double get_duration() const { return static_cast(duration_) / 1e6; } + bool is_valid() const { return valid_; } + + /*! \brief Find RZ-approximation for an angle. */ + str_t get_op_str(const real_t& angle) { + if (verbose_) + std::cerr << "Checking common cases..." + << "\n"; + str_t common_case = check_common_cases(angle / gmpf::gmp_pi(), eps_); + if (common_case != "") { + if (details_) + std::cerr + << "Angle is multiple of pi/4, answer is known exactly" + << '\n'; + if (check_) + std::cerr << "Check flag = " << 1 << '\n'; + return common_case; + } + if (verbose_) + std::cerr << "No common cases found" << '\n'; + + RzApproximation rz_approx; + str_t op_str; + if (timer_) { + // If timer is enabled, don't check cache or produce debug + // output. Just synthesize the angle. + auto start = std::chrono::steady_clock::now(); + rz_approx = find_fast_rz_approximation( + real_t(angle) * PI / real_t("-2"), eps_); + op_str = synthesize(rz_approx.matrix(), S3_TABLE); + auto end = std::chrono::steady_clock::now(); + duration_ += std::chrono::duration_cast( + end - start) + .count(); + } else { + str_t angle_str = to_string(angle); + if (verbose_) + std::cerr << "Checking local cache..." << '\n'; + if (details_) + std::cerr << "Angle has string representation " << angle_str + << '\n'; + if (angle_cache_.count(angle_str)) { + if (verbose_ || details_) + std::cerr << "Angle is found in local cache" << '\n'; + return angle_cache_[angle_str]; + } + + if (verbose_) + std::cerr + << "Running grid_synth to find new rz approximation..." + << '\n'; + RzApproximation rz_approx = + find_fast_rz_approximation(angle / real_t("-2.0"), eps_); + if (!rz_approx.solution_found()) { + std::cerr << "No approximation found for RzApproximation. " + "Try changing factorization effort." + << '\n'; + exit(EXIT_FAILURE); + } + if (verbose_) + std::cerr << "Approximation found. Synthesizing..." << '\n'; + op_str = synthesize(rz_approx.matrix(), S3_TABLE); + + if (verbose_) + std::cerr << "Synthesis complete." << '\n'; + bool good = (rz_approx.matrix() == + domega_matrix_from_str(full_simplify_str(op_str))); + valid_ = valid_ && good; + valid_ = valid_ && (rz_approx.error() < eps_); + + if (check_) + std::cerr << "Check flag = " << good << '\n'; + if (details_) { + real_t scale = gmpf::pow(SQRT2, rz_approx.matrix().k()); + std::cerr << "angle = " << std::scientific << angle << '\n'; + std::cerr << rz_approx.matrix(); + std::cerr << "u decimal value = " + << "(" + << rz_approx.matrix().u().decimal().real() / scale + << "," + << rz_approx.matrix().u().decimal().imag() / scale + << ")" << '\n'; + std::cerr << "t decimal value = " + << "(" + << rz_approx.matrix().t().decimal().real() / scale + << "," + << rz_approx.matrix().t().decimal().imag() / scale + << ")" << '\n'; + std::cerr << "error = " << rz_approx.error() << '\n'; + str_t simplified = full_simplify_str(op_str); + std::string::difference_type n = + count(simplified.begin(), simplified.end(), 'T'); + std::cerr << "T count = " << n << '\n'; + std::cerr << "----" << '\n' << std::fixed; + } + angle_cache_[angle_str] = op_str; + } + return op_str; + } + + friend GridSynthesizer make_synthesizer(const GridSynthOptions& opt); +}; + +/*! \brief Initializes a GridSynthesizer object. */ +inline GridSynthesizer make_synthesizer(const GridSynthOptions& opt) { + domega_matrix_table_t s3_table = load_s3_table(); + + real_t eps = gmpf::pow(real_t(10), -opt.prec); + MP_CONSTS = initialize_constants(opt.prec); + MAX_ATTEMPTS_POLLARD_RHO = opt.factor_effort; + + if (opt.verbose) { + std::cerr << "Runtime Parameters" << '\n'; + std::cerr << "------------------" << '\n'; + std::cerr << std::setw(3 * COLW) << std::left + << "TOL (Tolerance for float equality) " << std::setw(1) + << ": " << std::setw(3 * COLW) << std::left << std::scientific + << TOL << '\n'; + std::cerr << std::setw(3 * COLW) << std::left + << "KMIN (Minimum scaling exponent) " << std::setw(1) << ": " + << std::setw(3 * COLW) << std::left << std::fixed << KMIN + << '\n'; + std::cerr << std::setw(2 * COLW) << std::left + << "KMAX (Maximum scaling exponent) " << std::setw(1) << ": " + << std::setw(3 * COLW) << std::left << std::fixed << KMAX + << '\n'; + std::cerr << std::setw(3 * COLW) << std::left + << "MAX_ATTEMPTS_POLLARD_RHO (How hard we try to factor) " + << std::setw(1) << ": " << std::setw(3 * COLW) << std::left + << MAX_ATTEMPTS_POLLARD_RHO << '\n'; + std::cerr << std::setw(3 * COLW) << std::left + << "MAX_ITERATIONS_FERMAT_TEST (How hard we try to check " + "primality) " + << std::setw(1) << ": " << std::setw(3 * COLW) << std::left + << MAX_ITERATIONS_FERMAT_TEST << '\n'; + } + std::cerr << std::scientific; + + return GridSynthesizer(std::move(s3_table), std::move(eps), opt.check, + opt.details, opt.verbose, opt.timer); +} + +} // namespace grid_synth +} // namespace staq + +#endif // GRID_SYNTH_GRID_SYNTH_HPP_ diff --git a/include/grid_synth/mat_vec_2x2.hpp b/include/grid_synth/mat_vec_2x2.hpp index 0e7f222a..fef0d740 100644 --- a/include/grid_synth/mat_vec_2x2.hpp +++ b/include/grid_synth/mat_vec_2x2.hpp @@ -38,7 +38,7 @@ namespace grid_synth { using real_t = mpf_class; template -struct row_vec2_t; +class row_vec2_t; // 2x1 column vector template diff --git a/include/grid_synth/matrix.hpp b/include/grid_synth/matrix.hpp index e9b7ca75..b62f9579 100644 --- a/include/grid_synth/matrix.hpp +++ b/include/grid_synth/matrix.hpp @@ -258,6 +258,10 @@ inline str_t full_simplify_str(str_t str) { return curr_str; } +// ========================================================================= // +// Note: These functions are no longer used by grid_synth. +// ========================================================================= // + // Generate the set of all unitary matrices with SDE less than three inline domega_matrix_table_t generate_s3_table() { using namespace std; diff --git a/include/grid_synth/s3_table.hpp b/include/grid_synth/s3_table.hpp new file mode 100644 index 00000000..ab444f4f --- /dev/null +++ b/include/grid_synth/s3_table.hpp @@ -0,0 +1,7488 @@ +/* + * This file is part of staq. + * + * Copyright (c) 2019 - 2023 softwareQ Inc. All rights reserved. + * + * MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#ifndef GRID_SYNTH_S3_TABLE_HPP_ +#define GRID_SYNTH_S3_TABLE_HPP_ + +#include + +#include "matrix.hpp" +#include "rings.hpp" + +namespace staq { +namespace grid_synth { + +static const int S3_TABLE_SIZE = 3712; + +// clang-format off +static const int S3_TABLE_KEYS[S3_TABLE_SIZE][10] = + {{0,0,-1,0,-1,1,1,0,2,4}, + {0,0,0,-1,0,-1,1,1,2,2}, + {0,0,0,1,0,1,-1,-1,2,2}, + {0,0,0,-1,0,-1,1,1,2,1}, + {1,0,0,0,-1,0,-1,1,2,7}, + {0,1,0,0,-1,-1,0,-1,2,5}, + {0,0,1,0,1,-1,-1,0,2,3}, + {0,-1,0,0,1,1,0,1,2,4}, + {0,0,-1,0,-1,1,1,0,2,2}, + {0,0,0,-1,0,-1,1,1,2,0}, + {0,1,0,0,-1,-1,0,-1,2,4}, + {0,0,1,0,1,-1,-1,0,2,2}, + {0,0,1,0,1,-1,-1,0,2,1}, + {0,0,0,1,0,1,-1,-1,2,7}, + {-1,0,0,0,1,0,1,-1,2,5}, + {0,-1,0,0,1,1,0,1,2,2}, + {0,0,-1,0,-1,1,1,0,2,0}, + {1,0,0,0,-1,0,-1,1,2,4}, + {0,1,0,0,-1,-1,0,-1,2,2}, + {-1,0,0,0,1,0,1,-1,2,4}, + {0,-1,0,0,1,1,0,1,2,1}, + {0,0,-1,0,-1,1,1,0,2,7}, + {0,0,1,0,1,-1,-1,0,2,7}, + {-1,0,0,0,1,0,1,-1,2,3}, + {0,0,-1,0,-1,1,1,0,2,6}, + {0,0,0,-1,0,-1,1,1,2,4}, + {0,0,1,0,1,-1,-1,0,2,6}, + {-1,0,0,0,1,0,1,-1,2,2}, + {0,0,-1,0,-1,1,1,0,2,5}, + {0,0,0,-1,0,-1,1,1,2,3}, + {0,1,0,0,-1,-1,0,-1,2,7}, + {0,0,1,0,1,-1,-1,0,2,5}, + {0,0,0,1,0,1,-1,-1,2,3}, + {0,0,1,0,-1,-1,1,0,2,0}, + {0,0,0,1,0,-1,-1,1,2,6}, + {0,1,0,0,-1,1,0,1,2,1}, + {0,0,0,1,0,-1,-1,1,2,5}, + {0,-1,0,0,1,-1,0,-1,2,1}, + {1,0,0,0,1,0,1,1,2,2}, + {0,0,1,0,-1,-1,1,0,2,6}, + {-1,0,0,0,-1,0,-1,-1,2,2}, + {0,-1,0,0,1,-1,0,-1,2,0}, + {0,0,-1,0,1,1,-1,0,2,7}, + {1,0,0,0,1,0,1,1,2,1}, + {0,1,0,0,-1,1,0,1,2,7}, + {-1,0,0,0,-1,0,-1,-1,2,1}, + {0,0,-1,0,1,1,-1,0,2,5}, + {1,0,0,0,1,0,1,1,2,0}, + {0,1,0,0,-1,1,0,1,2,6}, + {0,0,1,0,-1,-1,1,0,2,4}, + {-1,0,0,0,-1,0,-1,-1,2,0}, + {0,0,0,-1,0,1,1,-1,2,2}, + {1,0,0,0,1,0,1,1,2,7}, + {0,1,0,0,-1,1,0,1,2,5}, + {0,0,1,0,-1,-1,1,0,2,3}, + {0,0,0,1,0,-1,-1,1,2,1}, + {0,0,-1,0,1,1,-1,0,2,3}, + {1,0,0,0,1,0,1,1,2,6}, + {0,0,0,-1,0,1,1,-1,2,0}, + {1,0,0,0,1,0,1,1,2,5}, + {0,0,0,1,0,-1,-1,1,2,7}, + {0,-1,0,0,1,-1,0,-1,2,3}, + {0,0,-1,0,1,1,-1,0,2,1}, + {1,0,1,1,0,0,1,0,2,2}, + {-1,-1,1,0,-1,0,0,0,2,6}, + {-1,0,-1,-1,0,0,-1,0,2,2}, + {1,-1,0,-1,0,0,0,-1,2,0}, + {1,0,1,1,0,0,1,0,2,1}, + {-1,-1,1,0,-1,0,0,0,2,5}, + {0,-1,-1,1,0,-1,0,0,2,3}, + {1,-1,0,-1,0,0,0,-1,2,7}, + {0,1,1,-1,0,1,0,0,2,3}, + {1,0,1,1,0,0,1,0,2,0}, + {-1,1,0,1,0,0,0,1,2,6}, + {-1,-1,1,0,-1,0,0,0,2,4}, + {1,-1,0,-1,0,0,0,-1,2,6}, + {0,1,1,-1,0,1,0,0,2,2}, + {1,0,1,1,0,0,1,0,2,7}, + {-1,0,-1,-1,0,0,-1,0,2,7}, + {1,1,-1,0,1,0,0,0,2,3}, + {0,1,1,-1,0,1,0,0,2,1}, + {1,0,1,1,0,0,1,0,2,6}, + {-1,-1,1,0,-1,0,0,0,2,2}, + {-1,0,-1,-1,0,0,-1,0,2,6}, + {-1,1,0,1,0,0,0,1,2,3}, + {0,-1,-1,1,0,-1,0,0,2,7}, + {1,0,1,1,0,0,1,0,2,4}, + {-1,1,0,1,0,0,0,1,2,2}, + {-1,0,0,0,1,0,1,-1,2,6}, + {-1,0,-1,-1,0,0,-1,0,2,4}, + {-1,1,0,1,0,0,0,1,2,1}, + {-1,-1,1,0,-1,0,0,0,2,7}, + {0,-1,-1,1,0,-1,0,0,2,5}, + {-1,0,-1,-1,0,0,-1,0,2,3}, + {1,1,-1,0,1,0,0,0,2,7}, + {0,-1,1,1,0,1,0,0,2,0}, + {0,1,-1,-1,0,-1,0,0,2,0}, + {-1,0,-1,1,0,0,1,0,2,5}, + {1,0,1,-1,0,0,-1,0,2,5}, + {-1,1,1,0,1,0,0,0,2,1}, + {0,-1,1,1,0,1,0,0,2,6}, + {-1,-1,0,-1,0,0,0,1,2,2}, + {0,1,-1,-1,0,-1,0,0,2,6}, + {-1,1,1,0,1,0,0,0,2,0}, + {-1,0,-1,1,0,0,1,0,2,3}, + {-1,-1,0,-1,0,0,0,1,2,1}, + {0,1,-1,-1,0,-1,0,0,2,5}, + {-1,1,1,0,1,0,0,0,2,7}, + {1,-1,-1,0,-1,0,0,0,2,6}, + {-1,0,-1,1,0,0,1,0,2,1}, + {0,1,-1,-1,0,-1,0,0,2,3}, + {1,1,0,1,0,0,0,-1,2,7}, + {0,-1,1,1,0,1,0,0,2,2}, + {0,1,-1,-1,0,-1,0,0,2,2}, + {1,0,1,-1,0,0,-1,0,2,0}, + {-1,0,-1,1,0,0,1,0,2,7}, + {0,1,-1,-1,0,-1,0,0,2,1}, + {1,0,1,-1,0,0,-1,0,2,7}, + {-1,0,0,0,1,0,1,1,2,4}, + {0,-1,0,0,-1,1,0,1,2,2}, + {0,0,-1,0,-1,-1,1,0,2,0}, + {1,0,0,0,-1,0,-1,-1,2,4}, + {0,0,1,0,1,1,-1,0,2,0}, + {-1,0,0,0,1,0,1,1,2,3}, + {1,0,0,0,-1,0,-1,-1,2,3}, + {0,1,0,0,1,-1,0,-1,2,1}, + {0,-1,0,0,-1,1,0,1,2,0}, + {1,0,0,0,-1,0,-1,-1,2,2}, + {0,1,0,0,1,-1,0,-1,2,0}, + {0,0,1,0,1,1,-1,0,2,6}, + {0,0,0,-1,0,-1,-1,1,2,3}, + {1,0,0,0,-1,0,-1,-1,2,1}, + {0,1,0,0,1,-1,0,-1,2,7}, + {0,-1,0,0,-1,1,0,1,2,6}, + {0,0,-1,0,-1,-1,1,0,2,4}, + {0,0,0,-1,0,-1,-1,1,2,2}, + {1,0,0,0,-1,0,-1,-1,2,0}, + {0,-1,0,0,-1,1,0,1,2,5}, + {0,0,0,-1,0,-1,-1,1,2,1}, + {0,0,1,0,1,1,-1,0,2,3}, + {0,0,0,1,0,1,1,-1,2,1}, + {-1,0,0,0,1,0,1,1,2,6}, + {0,-1,0,0,-1,1,0,1,2,4}, + {0,0,-1,0,-1,-1,1,0,2,2}, + {0,1,0,0,1,-1,0,-1,2,4}, + {0,0,1,0,1,1,-1,0,2,2}, + {0,0,0,1,0,1,1,-1,2,0}, + {0,-1,0,0,-1,1,0,1,2,3}, + {0,0,-1,0,-1,-1,1,0,2,1}, + {0,0,0,-1,0,-1,-1,1,2,7}, + {1,0,0,0,-1,0,-1,-1,2,5}, + {0,1,0,0,1,-1,0,-1,2,3}, + {0,0,0,1,0,1,1,-1,2,7}, + {0,-1,0,0,-1,-1,0,-1,2,6}, + {0,0,1,0,-1,1,1,0,2,4}, + {-1,0,0,0,-1,0,-1,1,2,7}, + {0,-1,0,0,-1,-1,0,-1,2,5}, + {0,0,-1,0,1,-1,-1,0,2,3}, + {1,0,0,0,1,0,1,-1,2,7}, + {0,1,0,0,1,1,0,1,2,5}, + {0,0,1,0,-1,1,1,0,2,3}, + {0,0,-1,0,1,-1,-1,0,2,2}, + {0,0,0,-1,0,1,-1,-1,2,0}, + {1,0,0,0,1,0,1,-1,2,6}, + {0,1,0,0,1,1,0,1,2,4}, + {0,0,1,0,-1,1,1,0,2,2}, + {-1,0,0,0,-1,0,-1,1,2,5}, + {0,-1,0,0,-1,-1,0,-1,2,3}, + {0,1,0,0,1,1,0,1,2,3}, + {0,0,1,0,-1,1,1,0,2,1}, + {-1,0,0,0,-1,0,-1,1,2,4}, + {0,-1,0,0,-1,-1,0,-1,2,2}, + {0,0,0,-1,0,1,-1,-1,2,6}, + {1,0,0,0,1,0,1,-1,2,4}, + {0,-1,0,0,1,1,0,1,2,7}, + {0,1,0,0,1,1,0,1,2,2}, + {0,0,0,1,0,-1,1,1,2,5}, + {-1,0,0,0,-1,0,-1,1,2,3}, + {0,-1,0,0,-1,-1,0,-1,2,1}, + {0,0,-1,0,1,-1,-1,0,2,7}, + {1,0,0,0,1,0,1,-1,2,3}, + {0,0,0,-1,0,1,-1,-1,2,4}, + {1,0,0,0,1,0,1,-1,2,2}, + {0,0,-1,0,1,1,-1,0,2,0}, + {0,0,1,0,-1,1,1,0,2,6}, + {0,0,0,1,0,-1,1,1,2,3}, + {0,0,-1,0,1,-1,-1,0,2,5}, + {1,0,0,0,1,0,1,-1,2,1}, + {0,1,0,0,1,1,0,1,2,7}, + {0,0,1,0,-1,1,1,0,2,5}, + {-1,0,-1,1,0,0,-1,0,2,6}, + {1,-1,-1,0,1,0,0,0,2,2}, + {0,1,-1,-1,0,1,0,0,2,0}, + {1,0,1,-1,0,0,1,0,2,6}, + {1,1,0,1,0,0,0,1,2,4}, + {0,-1,1,1,0,-1,0,0,2,7}, + {-1,-1,0,-1,0,0,0,-1,2,3}, + {1,-1,-1,0,1,0,0,0,2,1}, + {1,1,0,1,0,0,0,1,2,3}, + {-1,-1,0,-1,0,0,0,-1,2,2}, + {1,0,1,-1,0,0,1,0,2,4}, + {-1,1,1,0,-1,0,0,0,2,0}, + {0,1,-1,-1,0,1,0,0,2,5}, + {1,0,1,-1,0,0,1,0,2,3}, + {0,-1,1,1,0,-1,0,0,2,4}, + {0,0,0,-1,0,1,1,-1,2,6}, + {1,-1,-1,0,1,0,0,0,2,6}, + {1,0,0,0,1,0,1,1,2,4}, + {1,0,1,-1,0,0,1,0,2,2}, + {-1,1,1,0,-1,0,0,0,2,6}, + {0,-1,1,1,0,-1,0,0,2,3}, + {0,1,-1,-1,0,1,0,0,2,3}, + {1,0,1,-1,0,0,1,0,2,1}, + {-1,1,1,0,-1,0,0,0,2,5}, + {-1,0,-1,1,0,0,-1,0,2,0}, + {-1,0,0,0,1,0,1,1,2,5}, + {-1,-1,0,-1,0,0,0,-1,2,6}, + {1,0,1,-1,0,0,1,0,2,0}, + {0,-1,1,1,0,-1,0,0,2,1}, + {0,1,-1,-1,0,1,0,0,2,1}, + {1,0,1,-1,0,0,1,0,2,7}, + {1,1,0,1,0,0,0,1,2,5}, + {1,-1,-1,0,1,0,0,0,2,5}, + {1,-1,0,-1,0,0,0,1,2,0}, + {0,1,1,-1,0,-1,0,0,2,4}, + {-1,1,0,1,0,0,0,-1,2,0}, + {0,-1,-1,1,0,1,0,0,2,3}, + {-1,0,-1,-1,0,0,1,0,2,1}, + {1,-1,0,-1,0,0,0,1,2,7}, + {0,1,1,-1,0,-1,0,0,2,3}, + {0,0,-1,0,-1,-1,1,0,2,7}, + {1,0,1,1,0,0,-1,0,2,1}, + {-1,-1,1,0,1,0,0,0,2,4}, + {1,1,-1,0,-1,0,0,0,2,4}, + {-1,-1,1,0,1,0,0,0,2,3}, + {0,-1,-1,1,0,1,0,0,2,1}, + {-1,0,-1,-1,0,0,1,0,2,7}, + {1,-1,0,-1,0,0,0,1,2,5}, + {0,1,1,-1,0,-1,0,0,2,1}, + {-1,-1,1,0,1,0,0,0,2,2}, + {0,-1,-1,1,0,1,0,0,2,0}, + {1,-1,0,-1,0,0,0,1,2,4}, + {1,0,1,1,0,0,-1,0,2,6}, + {-1,-1,1,0,1,0,0,0,2,1}, + {-1,0,-1,-1,0,0,1,0,2,5}, + {1,-1,0,-1,0,0,0,1,2,3}, + {1,1,-1,0,-1,0,0,0,2,1}, + {-1,1,0,1,0,0,0,-1,2,3}, + {-1,-1,1,0,1,0,0,0,2,0}, + {0,-1,-1,1,0,1,0,0,2,6}, + {1,-1,0,-1,0,0,0,1,2,2}, + {1,1,-1,0,-1,0,0,0,2,0}, + {-1,1,0,1,0,0,0,-1,2,2}, + {-1,-1,1,0,1,0,0,0,2,7}, + {1,1,-1,0,-1,0,0,0,2,7}, + {1,0,1,1,0,0,-1,0,2,3}, + {0,-1,0,0,-1,1,1,0,2,5}, + {0,1,0,0,1,-1,-1,0,2,5}, + {-1,0,-1,1,0,0,1,0,2,2}, + {0,0,1,0,0,1,-1,-1,2,3}, + {0,0,0,1,1,0,1,-1,2,1}, + {0,-1,0,0,-1,1,1,0,2,4}, + {0,0,-1,0,0,-1,1,1,2,2}, + {0,1,0,0,1,-1,-1,0,2,4}, + {-1,0,0,0,1,1,0,1,2,6}, + {1,-1,-1,0,-1,0,0,0,2,1}, + {0,-1,0,0,-1,1,1,0,2,3}, + {0,0,-1,0,0,-1,1,1,2,1}, + {0,0,0,-1,-1,0,-1,1,2,7}, + {0,1,0,0,-1,1,0,1,2,4}, + {0,0,0,1,1,0,1,-1,2,7}, + {-1,0,0,0,1,1,0,1,2,5}, + {0,1,0,0,-1,-1,0,-1,2,1}, + {0,0,-1,0,0,-1,1,1,2,0}, + {0,0,0,-1,-1,0,-1,1,2,6}, + {0,1,0,0,1,-1,-1,0,2,2}, + {-1,0,0,0,-1,0,-1,-1,2,3}, + {0,-1,0,0,-1,1,1,0,2,1}, + {1,0,0,0,-1,-1,0,-1,2,3}, + {0,1,0,0,1,-1,-1,0,2,1}, + {0,0,-1,0,0,-1,1,1,2,6}, + {1,0,0,0,-1,-1,0,-1,2,2}, + {0,0,1,0,0,1,-1,-1,2,6}, + {0,0,0,-1,-1,0,-1,1,2,3}, + {0,0,1,0,0,1,-1,-1,2,5}, + {0,0,0,1,1,0,1,-1,2,0}, + {-1,0,0,0,1,1,0,1,2,1}, + {0,-1,0,0,-1,1,1,0,2,6}, + {0,0,-1,0,0,-1,1,1,2,4}, + {0,0,0,-1,-1,0,-1,1,2,2}, + {1,0,0,0,-1,-1,0,-1,2,0}, + {0,0,1,0,0,1,-1,-1,2,4}, + {0,0,1,0,0,-1,-1,1,2,7}, + {0,0,0,1,-1,0,-1,-1,2,5}, + {-1,0,0,0,1,-1,0,-1,2,3}, + {0,0,0,-1,1,0,1,1,2,5}, + {0,1,0,0,-1,-1,1,0,2,0}, + {0,0,0,1,-1,0,-1,-1,2,4}, + {-1,0,0,0,1,-1,0,-1,2,2}, + {0,-1,0,0,1,1,-1,0,2,0}, + {0,0,0,-1,1,0,1,1,2,4}, + {0,1,0,0,-1,-1,1,0,2,7}, + {0,0,1,0,0,-1,-1,1,2,5}, + {-1,1,1,0,-1,0,0,0,2,4}, + {0,0,0,1,-1,0,-1,-1,2,3}, + {0,0,-1,0,0,1,1,-1,2,5}, + {0,0,1,0,0,-1,-1,1,2,4}, + {-1,0,0,0,1,-1,0,-1,2,0}, + {0,-1,0,0,1,1,-1,0,2,6}, + {0,0,-1,0,0,1,1,-1,2,4}, + {0,0,0,-1,1,0,1,1,2,2}, + {0,-1,0,0,1,-1,0,-1,2,2}, + {1,0,0,0,-1,1,0,1,2,7}, + {0,0,1,0,0,-1,-1,1,2,3}, + {0,0,0,1,-1,0,-1,-1,2,1}, + {-1,0,0,0,1,-1,0,-1,2,7}, + {0,-1,0,0,1,1,-1,0,2,5}, + {0,1,0,0,-1,-1,1,0,2,4}, + {0,0,1,0,0,-1,-1,1,2,2}, + {0,-1,0,0,1,1,-1,0,2,4}, + {0,0,0,-1,0,-1,-1,1,2,4}, + {0,0,-1,0,0,1,1,-1,2,2}, + {0,0,0,-1,1,0,1,1,2,0}, + {1,0,0,0,-1,1,0,1,2,2}, + {0,0,0,1,-1,0,-1,-1,2,7}, + {-1,0,0,0,1,-1,0,-1,2,5}, + {0,-1,0,0,1,1,-1,0,2,3}, + {0,0,-1,0,0,1,1,-1,2,1}, + {0,0,0,-1,1,0,1,1,2,7}, + {0,1,0,0,-1,-1,1,0,2,2}, + {0,0,1,0,0,-1,-1,1,2,0}, + {0,0,0,1,-1,0,-1,-1,2,6}, + {0,0,-1,0,1,1,-1,0,2,2}, + {-1,0,0,0,1,-1,0,-1,2,4}, + {0,0,0,-1,1,0,1,1,2,6}, + {-1,1,0,1,-1,0,0,0,2,7}, + {-1,-1,1,0,0,-1,0,0,2,5}, + {0,-1,-1,1,0,0,-1,0,2,3}, + {1,-1,0,-1,1,0,0,0,2,7}, + {0,1,1,-1,0,0,1,0,2,3}, + {1,0,1,1,0,0,0,1,2,0}, + {-1,-1,1,0,0,-1,0,0,2,4}, + {0,-1,-1,1,0,0,-1,0,2,2}, + {0,0,0,-1,0,-1,1,1,2,6}, + {-1,0,-1,-1,0,0,0,-1,2,0}, + {-1,-1,0,-1,0,0,0,1,2,5}, + {1,-1,0,-1,1,0,0,0,2,6}, + {0,1,1,-1,0,0,1,0,2,2}, + {1,0,0,0,-1,0,-1,1,2,5}, + {1,0,1,1,0,0,0,1,2,7}, + {-1,-1,1,0,0,-1,0,0,2,3}, + {0,-1,-1,1,0,0,-1,0,2,1}, + {-1,0,-1,-1,0,0,0,-1,2,7}, + {1,-1,0,-1,1,0,0,0,2,5}, + {0,1,1,-1,0,0,1,0,2,1}, + {1,0,1,1,0,0,0,1,2,6}, + {0,-1,-1,1,0,0,-1,0,2,0}, + {1,-1,0,-1,1,0,0,0,2,4}, + {1,1,-1,0,0,1,0,0,2,2}, + {0,1,1,-1,0,0,1,0,2,0}, + {1,0,1,1,0,0,0,1,2,5}, + {-1,0,-1,-1,0,0,0,-1,2,5}, + {-1,1,1,0,-1,0,0,0,2,2}, + {1,-1,0,-1,1,0,0,0,2,3}, + {1,1,-1,0,0,1,0,0,2,1}, + {0,-1,1,1,0,1,0,0,2,1}, + {0,1,1,-1,0,0,1,0,2,7}, + {-1,1,0,1,-1,0,0,0,2,2}, + {-1,-1,1,0,0,-1,0,0,2,0}, + {-1,0,-1,-1,0,0,0,-1,2,4}, + {0,0,0,-1,-1,0,-1,1,2,0}, + {1,-1,0,-1,1,0,0,0,2,2}, + {0,1,1,-1,0,0,1,0,2,6}, + {1,-1,-1,0,-1,0,0,0,2,0}, + {1,0,1,1,0,0,0,1,2,3}, + {1,-1,0,-1,0,0,0,1,2,6}, + {-1,0,-1,-1,0,0,0,-1,2,3}, + {1,0,1,1,0,0,0,1,2,2}, + {0,-1,-1,1,0,0,-1,0,2,4}, + {0,-1,1,1,0,0,1,0,2,7}, + {-1,-1,0,-1,-1,0,0,0,2,3}, + {1,-1,-1,0,0,-1,0,0,2,1}, + {-1,0,-1,1,0,0,0,1,2,4}, + {-1,-1,0,-1,-1,0,0,0,2,2}, + {1,0,1,-1,0,0,0,-1,2,4}, + {0,-1,0,0,-1,1,0,1,2,7}, + {1,1,0,1,1,0,0,0,2,2}, + {1,-1,-1,0,0,-1,0,0,2,7}, + {0,1,-1,-1,0,0,-1,0,2,5}, + {1,0,1,-1,0,0,0,-1,2,3}, + {-1,1,1,0,0,1,0,0,2,7}, + {-1,0,-1,1,0,0,0,1,2,2}, + {-1,-1,0,-1,-1,0,0,0,2,0}, + {1,-1,-1,0,0,-1,0,0,2,6}, + {0,1,-1,-1,0,0,-1,0,2,4}, + {1,0,0,0,1,0,1,-1,2,5}, + {-1,1,1,0,0,1,0,0,2,6}, + {0,1,-1,-1,0,0,-1,0,2,3}, + {0,-1,0,0,-1,1,1,0,2,7}, + {1,0,1,-1,0,0,0,-1,2,1}, + {1,-1,-1,0,1,0,0,0,2,4}, + {1,1,0,1,1,0,0,0,2,7}, + {-1,1,1,0,0,1,0,0,2,5}, + {0,-1,1,1,0,0,1,0,2,2}, + {-1,0,-1,1,0,0,0,1,2,0}, + {-1,-1,0,-1,-1,0,0,0,2,6}, + {1,-1,-1,0,0,-1,0,0,2,4}, + {0,1,-1,-1,0,0,-1,0,2,2}, + {1,1,0,1,1,0,0,0,2,6}, + {-1,1,1,0,0,1,0,0,2,4}, + {-1,0,-1,1,0,0,0,1,2,7}, + {-1,-1,0,-1,-1,0,0,0,2,5}, + {1,-1,-1,0,0,-1,0,0,2,3}, + {1,0,1,-1,0,0,0,-1,2,7}, + {-1,1,1,0,0,1,0,0,2,3}, + {-1,-1,0,-1,0,0,0,-1,2,4}, + {-1,0,-1,1,0,0,0,1,2,6}, + {1,-1,-1,0,0,-1,0,0,2,2}, + {0,-1,0,0,-1,-1,1,0,2,1}, + {0,0,-1,0,0,-1,-1,1,2,7}, + {1,0,0,0,1,-1,0,-1,2,3}, + {0,0,0,1,1,0,1,1,2,5}, + {0,-1,0,0,-1,-1,1,0,2,0}, + {0,0,0,-1,-1,0,-1,-1,2,4}, + {1,0,0,0,1,-1,0,-1,2,2}, + {0,0,1,0,0,1,1,-1,2,6}, + {0,0,0,1,1,0,1,1,2,4}, + {-1,0,0,0,-1,1,0,1,2,1}, + {0,0,0,-1,-1,0,-1,-1,2,3}, + {1,0,0,0,1,-1,0,-1,2,1}, + {0,1,0,0,1,1,-1,0,2,7}, + {0,0,1,0,0,1,1,-1,2,5}, + {0,-1,0,0,-1,-1,1,0,2,6}, + {0,1,0,0,1,1,-1,0,2,6}, + {0,0,1,0,0,1,1,-1,2,4}, + {0,0,0,1,-1,0,-1,-1,2,0}, + {-1,0,0,0,-1,1,0,1,2,7}, + {0,-1,0,0,-1,-1,1,0,2,5}, + {0,0,-1,0,0,-1,-1,1,2,3}, + {0,0,0,-1,-1,0,-1,-1,2,1}, + {1,0,0,0,-1,-1,0,-1,2,6}, + {1,0,0,0,1,-1,0,-1,2,7}, + {0,0,0,1,1,0,1,1,2,1}, + {-1,0,0,0,-1,1,0,1,2,6}, + {0,0,-1,0,0,-1,-1,1,2,2}, + {0,0,0,-1,-1,0,-1,-1,2,0}, + {1,0,0,0,1,-1,0,-1,2,6}, + {0,0,1,0,0,1,1,-1,2,2}, + {-1,0,0,0,-1,1,0,1,2,5}, + {0,-1,0,0,-1,-1,1,0,2,3}, + {0,0,0,-1,-1,0,-1,-1,2,7}, + {1,0,0,0,1,-1,0,-1,2,5}, + {0,0,1,0,0,1,1,-1,2,1}, + {0,0,0,1,1,0,1,1,2,7}, + {-1,0,0,0,-1,1,0,1,2,4}, + {1,0,0,0,1,-1,0,-1,2,4}, + {0,1,0,0,1,1,-1,0,2,2}, + {-1,0,0,0,1,1,0,1,2,3}, + {0,0,1,0,0,1,1,-1,2,0}, + {0,0,0,1,1,0,1,1,2,6}, + {0,0,-1,0,0,1,-1,-1,2,3}, + {0,0,0,-1,1,0,1,-1,2,1}, + {0,0,1,0,0,-1,1,1,2,3}, + {0,0,0,1,-1,0,-1,1,2,0}, + {-1,0,0,0,-1,-1,0,-1,2,6}, + {0,-1,0,0,1,-1,-1,0,2,4}, + {0,0,0,-1,1,0,1,-1,2,0}, + {1,0,0,0,1,1,0,1,2,6}, + {0,1,0,0,-1,1,1,0,2,4}, + {-1,0,0,0,-1,-1,0,-1,2,5}, + {0,0,0,-1,1,0,1,-1,2,7}, + {1,0,0,0,1,1,0,1,2,5}, + {0,0,1,0,0,-1,-1,1,2,1}, + {0,0,0,1,-1,0,-1,1,2,6}, + {-1,0,0,0,-1,-1,0,-1,2,4}, + {0,-1,0,0,1,-1,-1,0,2,2}, + {0,0,-1,0,0,1,-1,-1,2,0}, + {0,0,0,-1,1,0,1,-1,2,6}, + {0,1,0,0,-1,1,1,0,2,2}, + {-1,0,0,0,-1,-1,0,-1,2,3}, + {0,-1,0,0,1,-1,-1,0,2,1}, + {0,0,-1,0,0,1,-1,-1,2,7}, + {0,-1,-1,1,0,1,0,0,2,4}, + {0,0,0,-1,1,0,1,-1,2,5}, + {1,0,0,0,1,1,0,1,2,3}, + {0,1,0,0,-1,1,1,0,2,1}, + {0,0,1,0,0,-1,1,1,2,7}, + {0,0,0,1,-1,0,-1,1,2,4}, + {-1,0,0,0,-1,-1,0,-1,2,2}, + {0,-1,0,0,1,-1,-1,0,2,0}, + {0,0,-1,0,0,1,-1,-1,2,6}, + {0,0,0,-1,1,0,1,-1,2,4}, + {1,0,0,0,1,1,0,1,2,2}, + {0,1,0,0,-1,1,1,0,2,0}, + {0,0,1,0,0,-1,1,1,2,6}, + {0,-1,0,0,1,-1,-1,0,2,7}, + {0,0,-1,0,0,1,-1,-1,2,5}, + {0,1,0,0,-1,1,1,0,2,7}, + {0,0,1,0,0,-1,1,1,2,5}, + {0,0,0,1,-1,0,-1,1,2,2}, + {-1,0,0,0,-1,-1,0,-1,2,0}, + {0,-1,0,0,1,-1,-1,0,2,6}, + {0,0,-1,0,0,1,-1,-1,2,4}, + {0,0,0,-1,1,0,1,-1,2,2}, + {0,0,0,1,1,0,1,1,2,2}, + {1,0,0,0,1,1,0,1,2,0}, + {0,1,0,0,-1,1,1,0,2,6}, + {0,0,1,0,0,-1,1,1,2,4}, + {0,-1,1,1,0,0,-1,0,2,7}, + {0,0,0,-1,-1,0,-1,1,2,5}, + {-1,-1,0,-1,1,0,0,0,2,3}, + {1,-1,-1,0,0,1,0,0,2,1}, + {-1,1,1,0,0,-1,0,0,2,1}, + {-1,0,-1,1,0,0,0,-1,2,4}, + {-1,-1,0,-1,1,0,0,0,2,2}, + {0,1,-1,-1,0,0,1,0,2,6}, + {-1,-1,1,0,-1,0,0,0,2,1}, + {0,-1,1,1,0,0,-1,0,2,5}, + {0,-1,-1,1,0,0,-1,0,2,7}, + {-1,-1,0,-1,1,0,0,0,2,1}, + {1,-1,-1,0,0,1,0,0,2,7}, + {1,1,0,1,-1,0,0,0,2,1}, + {-1,1,1,0,0,-1,0,0,2,7}, + {-1,-1,0,-1,1,0,0,0,2,0}, + {1,-1,-1,0,0,1,0,0,2,6}, + {0,1,-1,-1,0,0,1,0,2,4}, + {0,-1,1,1,0,0,-1,0,2,3}, + {-1,-1,0,-1,1,0,0,0,2,7}, + {1,-1,-1,0,0,1,0,0,2,5}, + {-1,-1,1,0,0,-1,0,0,2,6}, + {1,1,0,1,-1,0,0,0,2,7}, + {-1,0,-1,1,0,0,0,-1,2,0}, + {-1,-1,0,-1,1,0,0,0,2,6}, + {1,1,0,1,-1,0,0,0,2,6}, + {0,-1,1,1,0,0,-1,0,2,1}, + {-1,-1,0,-1,1,0,0,0,2,5}, + {1,-1,-1,0,0,1,0,0,2,3}, + {0,1,0,0,1,-1,-1,0,2,0}, + {1,0,1,-1,0,0,0,1,2,7}, + {-1,1,1,0,0,-1,0,0,2,3}, + {-1,-1,0,-1,1,0,0,0,2,4}, + {1,-1,-1,0,0,1,0,0,2,2}, + {0,1,-1,-1,0,0,1,0,2,0}, + {1,1,0,1,0,0,0,-1,2,2}, + {1,0,1,-1,0,0,0,1,2,6}, + {1,1,0,1,-1,0,0,0,2,4}, + {-1,-1,1,0,0,1,0,0,2,5}, + {1,-1,0,-1,-1,0,0,0,2,7}, + {0,0,0,1,1,0,1,1,2,3}, + {1,1,-1,0,0,-1,0,0,2,5}, + {0,1,1,-1,0,0,-1,0,2,3}, + {1,0,1,1,0,0,0,-1,2,1}, + {-1,1,0,1,1,0,0,0,2,7}, + {0,-1,-1,1,0,0,1,0,2,2}, + {-1,0,-1,-1,0,0,0,1,2,0}, + {0,1,0,0,-1,1,1,0,2,3}, + {1,-1,0,-1,-1,0,0,0,2,6}, + {0,0,-1,0,1,-1,-1,0,2,1}, + {0,1,1,-1,0,0,-1,0,2,2}, + {1,0,1,1,0,0,0,-1,2,0}, + {-1,1,0,1,1,0,0,0,2,6}, + {0,-1,-1,1,0,0,1,0,2,1}, + {1,-1,0,-1,-1,0,0,0,2,5}, + {0,0,-1,0,-1,-1,1,0,2,3}, + {0,1,1,-1,0,0,-1,0,2,1}, + {1,0,1,1,0,0,0,-1,2,7}, + {-1,1,0,1,1,0,0,0,2,5}, + {-1,0,-1,-1,0,0,0,1,2,6}, + {0,1,1,-1,0,0,-1,0,2,0}, + {0,0,-1,0,0,-1,-1,1,2,5}, + {-1,1,1,0,0,-1,0,0,2,6}, + {-1,1,0,1,1,0,0,0,2,4}, + {-1,0,-1,-1,0,0,0,1,2,5}, + {1,-1,0,-1,-1,0,0,0,2,3}, + {0,1,1,-1,0,0,-1,0,2,7}, + {1,0,1,1,0,0,0,-1,2,5}, + {1,-1,0,-1,-1,0,0,0,2,2}, + {-1,1,1,0,1,0,0,0,2,6}, + {1,1,-1,0,0,-1,0,0,2,0}, + {0,1,1,-1,0,0,-1,0,2,6}, + {1,0,1,1,0,0,0,-1,2,4}, + {-1,-1,1,0,0,1,0,0,2,7}, + {-1,0,-1,-1,0,0,0,1,2,3}, + {1,-1,0,-1,-1,0,0,0,2,1}, + {1,0,1,1,0,0,0,-1,2,3}, + {-1,-1,1,0,0,1,0,0,2,6}, + {0,-1,-1,1,0,0,1,0,2,4}, + {1,-1,0,-1,-1,0,0,0,2,0}, + {1,1,-1,0,1,0,0,0,2,1}, + {0,1,1,-1,0,0,-1,0,2,4}, + {1,0,1,1,0,0,0,-1,2,2}, + {0,0,-1,0,-1,0,-1,1,2,2}, + {0,0,0,-1,-1,-1,0,-1,2,0}, + {0,0,0,1,1,1,0,1,2,0}, + {-1,0,0,0,-1,1,1,0,2,6}, + {0,0,-1,0,-1,0,-1,1,2,1}, + {0,0,0,-1,-1,-1,0,-1,2,7}, + {0,0,1,0,1,0,1,-1,2,1}, + {-1,-1,1,0,-1,0,0,0,2,3}, + {0,-1,0,0,0,-1,1,1,2,2}, + {0,0,-1,0,-1,0,-1,1,2,0}, + {1,0,1,1,0,0,-1,0,2,5}, + {0,1,0,0,0,1,-1,-1,2,2}, + {0,0,1,0,1,0,1,-1,2,0}, + {-1,0,-1,-1,0,0,-1,0,2,5}, + {-1,0,0,0,-1,1,1,0,2,4}, + {1,0,0,0,-1,1,0,1,2,3}, + {-1,1,0,1,1,0,0,0,2,3}, + {1,0,0,0,1,-1,-1,0,2,3}, + {0,0,-1,0,-1,0,-1,1,2,6}, + {0,0,0,-1,-1,-1,0,-1,2,4}, + {0,0,1,0,1,0,1,-1,2,6}, + {-1,0,0,0,-1,1,1,0,2,2}, + {0,-1,0,0,0,-1,1,1,2,7}, + {-1,0,0,0,-1,1,1,0,2,1}, + {1,0,0,0,1,-1,-1,0,2,0}, + {0,1,0,0,0,1,-1,-1,2,6}, + {0,0,0,1,0,-1,-1,1,2,3}, + {0,0,1,0,1,0,1,-1,2,4}, + {-1,0,0,0,-1,0,-1,-1,2,6}, + {0,0,0,1,1,1,0,1,2,2}, + {-1,0,0,0,-1,1,1,0,2,0}, + {0,-1,0,0,0,-1,1,1,2,5}, + {0,0,-1,0,-1,0,-1,1,2,3}, + {0,0,0,-1,0,-1,1,1,2,5}, + {0,1,0,0,0,1,-1,-1,2,7}, + {1,0,0,0,1,-1,-1,0,2,7}, + {0,0,1,0,1,0,1,-1,2,3}, + {0,0,0,1,1,1,0,1,2,1}, + {1,-1,0,0,-1,0,0,1,2,3}, + {0,0,1,0,-1,-1,1,0,2,2}, + {1,0,0,1,0,0,-1,-1,2,5}, + {-1,1,0,0,1,0,0,-1,2,3}, + {0,0,0,1,1,1,0,1,2,5}, + {0,-1,1,0,1,1,0,0,2,1}, + {0,0,-1,1,0,1,1,0,2,7}, + {1,1,-1,0,0,-1,0,0,2,2}, + {1,-1,0,0,-1,0,0,1,2,2}, + {0,1,-1,0,-1,-1,0,0,2,0}, + {0,0,1,-1,0,-1,-1,0,2,6}, + {1,0,0,1,0,0,-1,-1,2,4}, + {-1,1,0,0,1,0,0,-1,2,2}, + {0,-1,1,0,1,1,0,0,2,0}, + {0,0,-1,1,0,1,1,0,2,6}, + {0,1,1,-1,0,-1,0,0,2,7}, + {-1,0,0,-1,0,0,1,1,2,4}, + {1,-1,0,0,-1,0,0,1,2,1}, + {0,1,-1,0,-1,-1,0,0,2,7}, + {-1,0,0,0,-1,1,1,0,2,3}, + {0,0,1,-1,0,-1,-1,0,2,5}, + {1,0,0,1,0,0,-1,-1,2,3}, + {0,-1,1,1,0,-1,0,0,2,0}, + {-1,1,0,0,1,0,0,-1,2,1}, + {0,0,-1,1,0,1,1,0,2,5}, + {0,1,-1,0,-1,-1,0,0,2,6}, + {0,-1,1,0,1,1,0,0,2,6}, + {-1,1,0,1,0,0,0,1,2,0}, + {0,0,0,1,1,0,1,-1,2,3}, + {-1,0,0,-1,0,0,1,1,2,2}, + {1,-1,0,0,-1,0,0,1,2,7}, + {1,0,1,-1,0,0,0,1,2,5}, + {0,1,-1,0,-1,-1,0,0,2,5}, + {-1,0,0,0,-1,0,-1,1,2,2}, + {0,0,1,-1,0,-1,-1,0,2,3}, + {1,0,0,1,0,0,-1,-1,2,1}, + {-1,1,0,0,1,0,0,-1,2,7}, + {0,0,-1,1,0,1,1,0,2,3}, + {-1,0,0,-1,0,0,1,1,2,1}, + {0,1,-1,0,-1,-1,0,0,2,4}, + {1,0,0,1,0,0,-1,-1,2,0}, + {0,-1,1,0,1,1,0,0,2,4}, + {1,-1,0,0,-1,0,0,1,2,5}, + {0,-1,1,1,0,0,1,0,2,1}, + {0,1,-1,0,-1,-1,0,0,2,3}, + {1,0,0,1,0,0,-1,-1,2,7}, + {0,-1,1,0,1,1,0,0,2,3}, + {1,-1,-1,0,0,-1,0,0,2,5}, + {1,-1,0,0,-1,0,0,1,2,4}, + {-1,1,0,1,-1,0,0,0,2,5}, + {0,1,-1,0,-1,-1,0,0,2,2}, + {0,0,1,-1,0,-1,-1,0,2,0}, + {0,-1,1,0,1,1,0,0,2,2}, + {0,0,-1,1,0,1,1,0,2,0}, + {-1,0,0,-1,0,0,1,1,2,6}, + {1,0,0,0,-1,-1,1,0,2,2}, + {0,1,0,0,0,-1,-1,1,2,0}, + {0,0,1,0,-1,0,-1,-1,2,6}, + {0,0,0,1,1,-1,0,-1,2,4}, + {-1,0,0,0,1,1,-1,0,2,2}, + {0,-1,0,0,0,1,1,-1,2,0}, + {0,0,0,-1,-1,1,0,1,2,4}, + {0,-1,0,0,1,-1,0,-1,2,5}, + {-1,1,0,1,1,0,0,0,2,1}, + {1,0,0,0,-1,-1,1,0,2,1}, + {0,0,1,0,-1,0,-1,-1,2,5}, + {0,0,0,1,1,-1,0,-1,2,3}, + {0,0,-1,0,1,0,1,1,2,5}, + {0,0,0,-1,-1,1,0,1,2,3}, + {-1,-1,1,0,0,1,0,0,2,0}, + {0,0,0,1,1,-1,0,-1,2,2}, + {0,0,0,-1,0,1,1,-1,2,3}, + {0,-1,0,0,0,1,1,-1,2,6}, + {0,0,-1,0,1,0,1,1,2,4}, + {0,-1,-1,1,0,0,-1,0,2,6}, + {0,0,0,-1,-1,1,0,1,2,2}, + {1,0,0,0,-1,-1,1,0,2,7}, + {1,-1,-1,0,1,0,0,0,2,3}, + {0,1,0,0,0,-1,-1,1,2,5}, + {0,1,1,-1,0,-1,0,0,2,6}, + {0,-1,0,0,0,1,1,-1,2,5}, + {0,0,0,-1,-1,1,0,1,2,1}, + {1,0,0,0,-1,-1,1,0,2,6}, + {0,1,0,0,0,-1,-1,1,2,4}, + {0,0,-1,0,1,1,-1,0,2,4}, + {0,0,1,0,1,1,-1,0,2,1}, + {0,0,1,0,-1,0,-1,-1,2,2}, + {-1,0,0,0,1,1,-1,0,2,6}, + {0,0,-1,0,-1,-1,1,0,2,6}, + {-1,1,0,1,-1,0,0,0,2,3}, + {0,-1,0,0,0,1,1,-1,2,4}, + {0,0,-1,0,1,0,1,1,2,2}, + {0,0,0,-1,-1,1,0,1,2,0}, + {0,0,1,0,-1,0,-1,-1,2,1}, + {0,-1,0,0,0,1,1,-1,2,3}, + {0,0,-1,0,1,0,1,1,2,1}, + {0,-1,1,1,0,1,0,0,2,3}, + {1,1,0,1,-1,0,0,0,2,2}, + {0,0,0,-1,-1,1,0,1,2,7}, + {1,0,0,0,-1,-1,1,0,2,4}, + {0,1,0,0,0,-1,-1,1,2,2}, + {0,0,0,1,1,-1,0,-1,2,6}, + {-1,0,0,0,1,1,-1,0,2,4}, + {0,-1,0,0,0,1,1,-1,2,2}, + {0,0,0,-1,-1,1,0,1,2,6}, + {1,-1,-1,0,1,0,0,0,2,0}, + {0,0,1,0,-1,0,-1,-1,2,7}, + {0,-1,0,0,0,1,1,-1,2,1}, + {0,0,0,-1,-1,1,0,1,2,5}, + {1,0,1,1,-1,0,0,0,2,0}, + {-1,1,0,1,0,-1,0,0,2,6}, + {0,0,1,0,1,0,1,-1,2,2}, + {0,-1,-1,1,0,0,0,-1,2,2}, + {1,-1,0,-1,0,1,0,0,2,6}, + {1,1,-1,0,0,0,1,0,2,4}, + {-1,1,0,1,0,-1,0,0,2,5}, + {-1,-1,1,0,0,0,-1,0,2,3}, + {0,-1,-1,1,0,0,0,-1,2,1}, + {1,-1,0,-1,0,1,0,0,2,5}, + {1,1,-1,0,0,0,1,0,2,3}, + {0,1,1,-1,0,0,0,1,2,1}, + {-1,-1,1,0,0,0,-1,0,2,2}, + {1,-1,0,-1,0,1,0,0,2,4}, + {1,1,-1,0,0,0,1,0,2,2}, + {0,1,1,-1,0,0,0,1,2,0}, + {1,0,1,1,-1,0,0,0,2,5}, + {-1,0,0,-1,0,0,1,1,2,0}, + {-1,-1,1,0,0,0,-1,0,2,1}, + {0,-1,-1,1,0,0,0,-1,2,7}, + {-1,0,-1,-1,0,0,1,0,2,4}, + {1,-1,0,-1,0,1,0,0,2,3}, + {1,1,-1,0,0,0,1,0,2,1}, + {0,1,1,-1,0,0,0,1,2,7}, + {0,-1,-1,1,0,-1,0,0,2,0}, + {-1,1,0,1,0,-1,0,0,2,2}, + {-1,0,-1,-1,1,0,0,0,2,4}, + {1,-1,0,-1,0,1,0,0,2,2}, + {-1,1,0,1,0,-1,0,0,2,1}, + {-1,-1,1,0,0,0,-1,0,2,7}, + {1,1,-1,0,0,-1,0,0,2,1}, + {0,-1,-1,1,0,0,0,-1,2,5}, + {-1,0,-1,-1,1,0,0,0,2,3}, + {1,-1,0,-1,0,1,0,0,2,1}, + {0,-1,-1,1,0,0,0,-1,2,4}, + {-1,0,-1,-1,1,0,0,0,2,2}, + {1,1,-1,0,0,0,1,0,2,6}, + {0,1,1,-1,0,0,0,1,2,4}, + {0,1,0,0,1,1,-1,0,2,3}, + {-1,1,0,1,0,-1,0,0,2,7}, + {-1,-1,1,0,0,0,-1,0,2,5}, + {0,-1,-1,1,0,0,0,-1,2,3}, + {1,-1,0,-1,0,1,0,0,2,7}, + {0,1,1,-1,0,0,0,1,2,3}, + {0,0,0,-1,-1,-1,0,-1,2,2}, + {0,-1,1,1,0,0,0,1,2,6}, + {-1,0,-1,1,-1,0,0,0,2,4}, + {1,0,1,1,0,0,-1,0,2,2}, + {0,1,-1,-1,0,0,0,-1,2,6}, + {1,0,1,-1,1,0,0,0,2,4}, + {1,1,0,1,0,1,0,0,2,2}, + {-1,0,-1,1,-1,0,0,0,2,3}, + {0,1,1,-1,0,-1,0,0,2,5}, + {-1,-1,0,-1,0,-1,0,0,2,1}, + {1,0,1,-1,1,0,0,0,2,3}, + {-1,1,1,0,0,0,1,0,2,7}, + {-1,0,-1,1,-1,0,0,0,2,2}, + {1,0,1,-1,1,0,0,0,2,2}, + {1,1,0,1,0,1,0,0,2,0}, + {-1,1,1,0,0,0,1,0,2,6}, + {0,-1,1,1,0,0,0,1,2,3}, + {-1,0,-1,1,-1,0,0,0,2,1}, + {0,0,0,1,-1,0,-1,1,2,7}, + {-1,-1,0,-1,0,-1,0,0,2,7}, + {0,1,-1,-1,0,0,0,-1,2,3}, + {1,0,1,-1,1,0,0,0,2,1}, + {1,1,0,1,0,1,0,0,2,7}, + {1,0,0,0,-1,1,0,1,2,6}, + {0,-1,1,1,0,0,0,1,2,2}, + {1,0,1,-1,0,0,-1,0,2,2}, + {-1,0,-1,1,-1,0,0,0,2,0}, + {1,-1,-1,0,0,0,-1,0,2,4}, + {1,0,1,-1,1,0,0,0,2,0}, + {1,1,0,1,0,1,0,0,2,6}, + {0,-1,1,1,0,0,0,1,2,1}, + {-1,-1,0,-1,0,-1,0,0,2,5}, + {1,-1,-1,0,0,0,-1,0,2,3}, + {0,1,-1,-1,0,0,0,-1,2,1}, + {1,0,1,-1,1,0,0,0,2,7}, + {-1,1,1,0,0,0,1,0,2,3}, + {-1,0,-1,1,-1,0,0,0,2,6}, + {-1,-1,0,-1,0,-1,0,0,2,4}, + {1,-1,-1,0,0,0,-1,0,2,2}, + {0,1,0,0,-1,1,1,0,2,5}, + {-1,0,0,-1,0,0,1,1,2,7}, + {0,1,-1,-1,0,0,0,-1,2,0}, + {1,1,0,1,0,1,0,0,2,4}, + {0,-1,1,1,0,0,0,1,2,7}, + {-1,0,-1,1,-1,0,0,0,2,5}, + {-1,-1,0,-1,0,-1,0,0,2,3}, + {0,1,-1,-1,0,0,0,-1,2,7}, + {1,0,1,-1,1,0,0,0,2,5}, + {1,1,0,1,0,1,0,0,2,3}, + {-1,1,1,0,0,0,1,0,2,1}, + {0,0,-1,1,-1,0,0,1,2,3}, + {0,1,-1,0,0,0,-1,-1,2,5}, + {0,0,1,-1,1,0,0,-1,2,3}, + {0,1,0,0,1,1,-1,0,2,0}, + {1,0,0,1,1,1,0,0,2,1}, + {0,-1,-1,1,0,-1,0,0,2,4}, + {1,-1,0,-1,0,0,0,-1,2,2}, + {0,-1,1,0,0,0,1,1,2,5}, + {-1,0,-1,1,0,0,0,-1,2,6}, + {-1,0,0,-1,-1,-1,0,0,2,0}, + {1,-1,0,0,0,-1,-1,0,2,6}, + {0,-1,-1,0,1,0,0,1,2,3}, + {-1,1,1,0,0,-1,0,0,2,4}, + {-1,-1,0,0,1,0,0,1,2,1}, + {0,-1,-1,0,0,0,-1,1,2,7}, + {0,1,-1,-1,0,0,-1,0,2,1}, + {0,0,-1,-1,-1,1,0,0,2,1}, + {0,0,0,0,0,0,0,1,0,3}, + {1,0,0,-1,0,-1,1,0,2,7}, + {0,1,1,0,-1,0,0,-1,2,1}, + {-1,-1,1,0,0,0,0,-1,2,3}, + {-1,-1,0,0,0,0,-1,1,2,2}, + {0,0,-1,-1,1,-1,0,0,2,6}, + {0,-1,-1,1,0,-1,0,0,2,6}, + {1,0,0,-1,0,1,-1,0,2,4}, + {0,-1,0,0,0,0,0,1,1,4}, + {1,0,0,0,0,0,1,0,1,2}, + {0,0,1,0,0,1,1,-1,2,7}, + {0,0,-1,0,-1,1,0,1,2,4}, + {1,1,0,0,0,0,1,-1,2,2}, + {0,1,-1,-1,-1,0,0,0,2,5}, + {0,1,1,0,1,0,0,1,2,0}, + {0,-1,-1,0,0,0,1,-1,2,4}, + {-1,1,0,1,0,1,0,0,2,1}, + {0,1,-1,-1,0,-1,0,0,2,7}, + {0,0,-1,-1,1,-1,0,0,2,5}, + {-1,0,0,0,1,-1,0,-1,2,6}, + {0,-1,0,0,0,0,0,-1,1,4}, + {-1,0,0,1,0,-1,1,0,2,2}, + {0,0,-1,0,1,-1,0,-1,2,2}, + {0,1,0,0,0,0,1,0,1,1}, + {0,0,-1,1,1,1,0,0,2,2}, + {0,1,1,0,1,0,0,1,2,6}, + {0,0,1,1,0,0,-1,1,2,2}, + {-1,0,-1,1,0,-1,0,0,2,6}, + {1,-1,0,0,0,1,1,0,2,3}, + {0,0,-1,-1,1,-1,0,0,2,3}, + {-1,0,0,-1,-1,-1,0,0,2,1}, + {0,0,-1,1,0,-1,-1,0,2,0}, + {1,1,0,0,0,0,1,-1,2,7}, + {0,0,-1,0,0,0,0,1,1,4}, + {0,-1,0,0,1,0,1,1,2,1}, + {-1,-1,0,0,0,0,-1,1,2,6}, + {0,-1,-1,1,0,0,1,0,2,7}, + {0,0,-1,0,-1,1,0,1,2,7}, + {1,0,0,-1,0,1,-1,0,2,0}, + {0,0,-1,1,0,0,1,1,2,7}, + {0,1,1,0,1,0,0,1,2,4}, + {-1,1,1,0,1,0,0,0,2,3}, + {0,-1,1,0,1,0,0,-1,2,3}, + {0,0,-1,0,1,0,1,-1,2,3}, + {0,1,-1,-1,0,1,0,0,2,6}, + {0,-1,-1,0,-1,0,0,-1,2,3}, + {0,0,-1,-1,-1,1,0,0,2,7}, + {0,0,-1,0,0,-1,0,0,1,2}, + {-1,-1,0,0,0,0,-1,1,2,4}, + {0,0,-1,0,0,0,0,1,1,5}, + {-1,1,1,0,0,1,0,0,2,2}, + {0,-1,-1,0,-1,0,0,-1,2,2}, + {1,0,0,0,0,0,0,1,1,4}, + {0,-1,-1,0,-1,0,0,-1,2,7}, + {1,0,0,0,-1,-1,0,-1,2,1}, + {0,1,1,0,1,0,0,1,2,2}, + {-1,0,-1,1,0,0,-1,0,2,3}, + {-1,-1,0,0,0,0,-1,1,2,3}, + {0,0,-1,0,1,-1,0,-1,2,6}, + {1,1,0,0,0,0,1,-1,2,3}, + {0,0,1,0,-1,-1,1,0,2,5}, + {0,0,1,1,-1,1,0,0,2,7}, + {1,1,-1,0,0,0,0,-1,2,4}, + {0,0,1,0,-1,0,0,0,1,0}, + {0,0,0,-1,1,1,-1,0,2,3}, + {1,0,0,0,0,1,1,-1,2,1}, + {0,0,-1,0,0,0,-1,0,1,4}, + {0,1,0,0,1,1,0,1,2,1}, + {-1,0,0,0,0,-1,-1,1,2,0}, + {-1,0,0,0,0,1,1,-1,2,4}, + {0,1,-1,-1,0,0,1,0,2,2}, + {0,1,1,0,-1,1,0,0,2,0}, + {0,1,0,0,1,0,1,1,2,6}, + {0,-1,-1,0,0,1,-1,0,2,5}, + {0,0,0,1,-1,-1,1,0,2,2}, + {-1,1,0,1,0,0,0,-1,2,5}, + {-1,0,0,0,0,0,0,1,1,7}, + {0,1,1,0,-1,0,0,-1,2,2}, + {0,0,1,1,-1,1,0,0,2,1}, + {1,0,0,1,1,0,0,-1,2,3}, + {0,0,0,-1,1,1,-1,0,2,1}, + {0,0,1,0,-1,1,0,1,2,3}, + {0,1,0,0,1,0,1,1,2,5}, + {-1,1,0,0,1,1,0,0,2,1}, + {0,1,1,-1,0,0,0,1,2,2}, + {0,-1,0,0,0,-1,-1,1,2,2}, + {0,-1,0,0,-1,-1,1,0,2,2}, + {1,1,0,0,0,0,1,-1,2,0}, + {1,1,-1,0,0,1,0,0,2,7}, + {0,0,0,1,0,-1,0,0,1,2}, + {0,1,0,0,-1,-1,1,0,2,3}, + {0,0,1,1,-1,1,0,0,2,4}, + {0,1,0,0,1,0,1,1,2,4}, + {-1,0,0,0,1,-1,-1,0,2,0}, + {0,1,0,0,1,0,1,1,2,3}, + {0,0,0,1,0,0,0,-1,1,5}, + {0,0,1,0,-1,1,0,1,2,1}, + {0,1,1,0,1,0,0,1,2,1}, + {-1,0,0,0,0,-1,-1,1,2,4}, + {0,0,-1,1,1,1,0,0,2,7}, + {0,1,-1,-1,0,0,0,1,2,3}, + {0,0,-1,0,-1,1,0,1,2,0}, + {-1,0,0,1,1,-1,0,0,2,6}, + {0,0,0,1,-1,-1,1,0,2,6}, + {0,-1,1,1,0,0,1,0,2,5}, + {0,0,1,0,-1,-1,0,-1,2,7}, + {1,0,0,-1,0,-1,1,0,2,3}, + {-1,0,0,1,0,0,1,-1,2,3}, + {-1,0,-1,1,0,0,0,-1,2,2}, + {0,0,0,-1,1,1,0,1,2,7}, + {1,1,-1,0,0,0,0,-1,2,0}, + {0,0,0,1,-1,-1,1,0,2,4}, + {0,0,-1,1,1,1,0,0,2,0}, + {0,-1,1,0,0,0,-1,-1,2,1}, + {0,0,-1,-1,0,0,1,-1,2,0}, + {1,1,0,0,-1,1,0,0,2,4}, + {-1,0,-1,-1,0,0,0,1,2,2}, + {1,1,-1,0,0,-1,0,0,2,6}, + {0,1,1,0,0,-1,1,0,2,2}, + {0,-1,0,0,1,-1,0,-1,2,6}, + {1,0,1,-1,-1,0,0,0,2,2}, + {0,0,1,1,0,0,-1,1,2,0}, + {0,-1,-1,1,0,0,0,-1,2,0}, + {-1,0,-1,-1,1,0,0,0,2,1}, + {1,1,0,0,1,-1,0,0,2,7}, + {1,-1,-1,0,0,0,0,1,2,6}, + {0,-1,-1,1,0,0,-1,0,2,5}, + {-1,0,0,-1,1,0,0,-1,2,4}, + {0,0,-1,0,0,1,0,0,1,3}, + {0,-1,0,0,-1,0,-1,1,2,4}, + {1,-1,0,0,1,1,0,0,2,2}, + {0,0,-1,-1,1,-1,0,0,2,0}, + {0,0,1,0,-1,-1,0,-1,2,4}, + {0,1,-1,0,0,1,1,0,2,0}, + {1,0,0,0,1,1,0,1,2,1}, + {0,0,1,-1,0,0,1,1,2,0}, + {1,1,0,0,-1,1,0,0,2,2}, + {1,0,0,1,-1,0,0,1,2,4}, + {1,0,0,-1,0,-1,1,0,2,5}, + {0,-1,-1,1,-1,0,0,0,2,3}, + {-1,1,0,0,-1,-1,0,0,2,2}, + {0,-1,1,0,0,-1,-1,0,2,7}, + {1,1,0,0,0,1,-1,0,2,1}, + {-1,0,0,-1,1,0,0,-1,2,3}, + {0,1,1,-1,0,0,1,0,2,4}, + {0,-1,1,1,0,0,0,-1,2,7}, + {0,1,-1,0,0,1,1,0,2,7}, + {-1,0,-1,-1,0,0,0,1,2,1}, + {-1,1,0,0,-1,-1,0,0,2,1}, + {1,0,0,0,0,1,1,-1,2,2}, + {-1,1,0,0,-1,-1,0,0,2,0}, + {0,0,1,1,-1,1,0,0,2,0}, + {-1,1,1,0,-1,0,0,0,2,3}, + {-1,0,0,-1,1,0,0,-1,2,1}, + {0,1,-1,0,0,1,1,0,2,5}, + {1,0,0,1,-1,0,0,1,2,1}, + {-1,1,0,1,0,0,0,-1,2,1}, + {0,-1,1,0,0,-1,-1,0,2,4}, + {-1,1,0,0,0,-1,-1,0,2,1}, + {0,0,1,0,-1,1,0,1,2,6}, + {0,1,-1,0,0,1,1,0,2,3}, + {0,0,-1,0,-1,0,-1,-1,2,4}, + {-1,1,0,0,-1,-1,0,0,2,5}, + {0,1,1,-1,-1,0,0,0,2,0}, + {1,0,0,1,-1,0,0,1,2,6}, + {-1,1,0,0,-1,-1,0,0,2,4}, + {0,0,-1,1,-1,-1,0,0,2,4}, + {0,0,1,1,-1,1,0,0,2,5}, + {-1,1,0,1,-1,0,0,0,2,6}, + {-1,-1,1,0,0,-1,0,0,2,1}, + {-1,0,0,-1,1,0,0,-1,2,5}, + {1,-1,0,0,0,1,1,0,2,7}, + {0,0,1,-1,0,0,1,1,2,7}, + {1,1,0,0,-1,1,0,0,2,3}, + {0,0,1,-1,1,1,0,0,2,3}, + {-1,0,0,0,0,1,-1,-1,2,5}, + {-1,0,0,0,0,1,0,0,1,2}, + {-1,1,0,0,1,0,0,-1,2,5}, + {1,1,-1,0,0,0,1,0,2,7}, + {1,0,0,0,0,0,0,1,1,0}, + {1,0,1,1,0,-1,0,0,2,5}, + {0,0,0,-1,1,1,0,1,2,4}, + {1,0,0,-1,1,0,0,1,2,6}, + {0,-1,0,0,0,1,0,0,1,7}, + {1,0,0,0,0,-1,1,1,2,5}, + {0,0,1,0,-1,-1,0,-1,2,1}, + {-1,-1,1,0,0,0,-1,0,2,0}, + {0,0,-1,0,1,1,0,1,2,0}, + {0,0,0,-1,0,0,0,0,0,1}, + {-1,0,0,0,0,1,-1,-1,2,3}, + {1,-1,-1,0,0,0,-1,0,2,1}, + {0,-1,0,0,1,0,1,-1,2,1}, + {0,1,-1,-1,-1,0,0,0,2,0}, + {1,0,1,-1,0,0,0,-1,2,0}, + {0,0,0,1,0,0,0,0,0,1}, + {0,1,-1,0,0,0,1,1,2,7}, + {-1,1,0,1,0,0,0,1,2,7}, + {0,0,0,-1,-1,1,1,0,2,5}, + {1,1,0,1,0,0,0,1,2,6}, + {0,-1,1,0,0,-1,-1,0,2,1}, + {0,1,0,0,-1,0,-1,1,2,1}, + {-1,0,0,0,0,1,-1,-1,2,2}, + {0,-1,-1,0,0,1,-1,0,2,7}, + {1,1,-1,0,0,0,-1,0,2,3}, + {1,1,-1,0,1,0,0,0,2,0}, + {0,0,-1,0,1,1,0,1,2,6}, + {0,0,1,1,-1,0,0,-1,2,3}, + {0,0,0,-1,-1,1,1,0,2,4}, + {0,0,1,-1,0,0,1,1,2,2}, + {-1,0,0,0,0,-1,-1,1,2,6}, + {-1,0,0,0,-1,0,-1,-1,2,5}, + {1,0,0,0,0,-1,1,1,2,2}, + {0,1,0,0,-1,0,-1,1,2,0}, + {0,0,-1,0,1,1,0,1,2,5}, + {1,1,0,1,-1,0,0,0,2,5}, + {1,0,0,-1,-1,1,0,0,2,5}, + {1,0,1,1,0,0,-1,0,2,4}, + {0,0,1,0,-1,-1,0,-1,2,5}, + {1,-1,-1,0,0,0,-1,0,2,0}, + {1,-1,0,-1,0,0,-1,0,2,1}, + {-1,0,0,-1,1,0,0,-1,2,7}, + {0,0,-1,-1,1,-1,0,0,2,7}, + {0,-1,0,0,1,0,1,-1,2,6}, + {0,0,-1,0,0,0,1,0,1,1}, + {0,-1,0,0,0,-1,0,0,1,2}, + {0,-1,0,0,1,1,0,1,2,0}, + {0,0,1,1,0,1,-1,0,2,7}, + {0,0,-1,0,1,1,0,1,2,4}, + {1,0,0,0,0,-1,1,1,2,0}, + {0,0,0,1,-1,1,0,1,2,2}, + {1,0,0,-1,0,-1,1,0,2,6}, + {1,0,1,1,-1,0,0,0,2,1}, + {0,0,0,-1,-1,0,0,0,1,4}, + {1,0,0,0,-1,-1,1,0,2,5}, + {-1,0,-1,-1,0,-1,0,0,2,0}, + {0,0,0,-1,-1,1,1,0,2,1}, + {-1,0,0,1,-1,0,0,-1,2,5}, + {0,1,-1,0,-1,0,0,1,2,0}, + {1,0,0,0,0,-1,1,1,2,7}, + {1,0,0,1,1,0,0,-1,2,0}, + {1,1,0,0,1,0,0,1,2,0}, + {0,0,1,0,-1,-1,0,-1,2,3}, + {1,0,0,0,1,1,0,1,2,4}, + {1,-1,-1,0,0,1,0,0,2,4}, + {-1,0,0,0,0,1,-1,-1,2,6}, + {0,0,0,-1,0,-1,1,1,2,7}, + {0,-1,0,0,1,0,1,-1,2,4}, + {0,0,-1,0,1,1,0,1,2,2}, + {1,0,0,0,0,-1,1,1,2,6}, + {-1,0,0,0,0,0,0,0,0,0}, + {1,-1,0,0,-1,-1,0,0,2,2}, + {0,0,-1,1,0,1,1,0,2,2}, + {0,0,0,1,-1,-1,1,0,2,5}, + {-1,0,0,1,-1,0,0,-1,2,4}, + {0,-1,-1,0,0,1,-1,0,2,0}, + {0,0,-1,-1,0,0,1,-1,2,6}, + {1,0,0,0,-1,1,0,1,2,5}, + {0,0,-1,0,0,1,-1,-1,2,1}, + {0,0,0,1,-1,-1,1,0,2,3}, + {-1,-1,0,-1,0,0,0,1,2,3}, + {0,1,0,0,1,1,-1,0,2,4}, + {1,1,0,0,0,0,1,-1,2,1}, + {1,0,1,-1,0,1,0,0,2,1}, + {0,0,-1,1,0,0,-1,-1,2,1}, + {1,0,0,-1,1,0,0,1,2,4}, + {-1,0,0,0,1,1,0,1,2,2}, + {1,0,0,0,0,1,-1,-1,2,3}, + {-1,0,-1,-1,-1,0,0,0,2,2}, + {1,1,0,1,0,0,0,-1,2,1}, + {0,0,1,1,0,0,-1,1,2,6}, + {0,0,1,0,1,0,1,1,2,4}, + {1,-1,0,0,0,-1,-1,0,2,0}, + {-1,0,0,1,-1,0,0,-1,2,3}, + {1,-1,0,0,0,1,1,0,2,4}, + {0,0,1,1,1,-1,0,0,2,4}, + {1,-1,-1,0,0,0,1,0,2,7}, + {0,-1,1,1,1,0,0,0,2,5}, + {0,0,1,1,-1,0,0,-1,2,6}, + {0,0,0,1,1,-1,-1,0,2,2}, + {-1,-1,0,-1,0,0,1,0,2,1}, + {1,0,1,-1,1,0,0,0,2,6}, + {0,-1,0,0,1,0,1,1,2,3}, + {1,1,0,0,0,-1,1,0,2,1}, + {0,1,1,0,1,0,0,1,2,7}, + {0,-1,-1,0,0,1,-1,0,2,6}, + {-1,0,0,0,0,-1,-1,1,2,5}, + {0,1,1,0,-1,0,0,-1,2,3}, + {0,1,0,0,0,0,0,1,1,6}, + {0,0,0,1,0,-1,1,1,2,6}, + {-1,0,0,0,-1,1,1,0,2,5}, + {-1,1,0,0,0,-1,-1,0,2,4}, + {0,-1,1,1,1,0,0,0,2,3}, + {-1,-1,0,0,-1,0,0,-1,2,7}, + {0,1,0,0,-1,0,-1,1,2,2}, + {0,-1,1,1,0,0,-1,0,2,0}, + {-1,0,-1,1,0,1,0,0,2,1}, + {1,-1,-1,0,0,0,0,1,2,5}, + {1,0,0,0,0,-1,-1,1,2,3}, + {0,-1,1,1,0,0,1,0,2,3}, + {0,1,-1,-1,-1,0,0,0,2,3}, + {0,0,-1,1,0,0,-1,-1,2,7}, + {1,0,0,0,1,0,0,0,1,3}, + {1,1,0,0,0,1,-1,0,2,5}, + {-1,0,-1,-1,1,0,0,0,2,0}, + {0,-1,1,1,1,0,0,0,2,2}, + {0,0,0,1,1,1,0,1,2,4}, + {-1,0,0,0,0,0,-1,0,1,4}, + {-1,1,1,0,0,0,0,-1,2,4}, + {-1,0,0,1,0,-1,1,0,2,7}, + {-1,0,0,0,1,1,0,1,2,4}, + {-1,0,-1,1,0,1,0,0,2,7}, + {1,0,1,-1,0,-1,0,0,2,7}, + {0,1,0,0,0,1,-1,-1,2,3}, + {0,-1,1,0,-1,0,0,1,2,7}, + {1,1,0,1,0,0,-1,0,2,5}, + {-1,-1,0,-1,0,0,0,-1,2,0}, + {1,1,0,0,0,-1,1,0,2,4}, + {0,-1,1,1,1,0,0,0,2,0}, + {-1,-1,0,-1,0,0,1,0,2,4}, + {-1,0,0,1,-1,0,0,-1,2,0}, + {1,-1,-1,0,0,0,1,0,2,6}, + {0,-1,0,0,-1,-1,1,0,2,4}, + {0,0,0,-1,-1,0,0,0,1,1}, + {-1,1,1,0,1,0,0,0,2,4}, + {-1,0,0,0,0,-1,-1,1,2,7}, + {1,1,0,1,0,0,-1,0,2,7}, + {0,0,-1,0,0,0,1,0,1,0}, + {0,0,0,0,0,1,0,0,0,6}, + {1,1,0,1,0,0,0,-1,2,3}, + {0,-1,1,0,0,0,1,1,2,4}, + {0,0,0,-1,-1,0,-1,-1,2,6}, + {0,-1,1,1,1,0,0,0,2,7}, + {0,1,1,0,0,1,-1,0,2,2}, + {0,0,1,0,1,0,0,0,1,6}, + {0,1,0,0,0,0,0,0,0,2}, + {1,1,0,1,0,0,-1,0,2,3}, + {1,1,0,0,1,-1,0,0,2,3}, + {1,-1,-1,0,0,0,0,1,2,0}, + {-1,0,0,-1,1,0,0,-1,2,6}, + {-1,-1,0,0,0,0,1,-1,2,2}, + {1,0,0,-1,0,1,-1,0,2,2}, + {0,0,1,0,0,-1,0,0,1,5}, + {0,0,-1,1,0,-1,-1,0,2,7}, + {-1,1,1,0,0,1,0,0,2,1}, + {-1,-1,0,0,1,-1,0,0,2,0}, + {0,0,-1,-1,0,0,1,-1,2,4}, + {1,-1,0,-1,0,-1,0,0,2,7}, + {1,0,0,-1,1,0,0,1,2,2}, + {1,1,-1,0,-1,0,0,0,2,6}, + {1,1,0,0,-1,1,0,0,2,0}, + {0,0,1,1,0,0,-1,1,2,4}, + {-1,0,0,1,1,0,0,1,2,4}, + {-1,1,0,1,1,0,0,0,2,0}, + {0,1,0,0,-1,0,0,0,1,0}, + {0,0,1,0,1,0,1,1,2,3}, + {1,0,1,-1,0,0,0,-1,2,6}, + {-1,-1,0,-1,0,1,0,0,2,2}, + {0,-1,0,0,1,0,1,1,2,6}, + {0,-1,-1,0,0,-1,1,0,2,7}, + {1,0,0,-1,-1,0,0,-1,2,3}, + {0,0,0,0,0,0,0,1,0,0}, + {1,-1,-1,0,0,0,1,0,2,3}, + {-1,-1,0,0,0,-1,1,0,2,3}, + {0,0,-1,0,-1,-1,0,-1,2,6}, + {1,0,0,1,-1,-1,0,0,2,6}, + {1,1,0,0,1,-1,0,0,2,1}, + {0,0,1,1,0,0,1,-1,2,5}, + {0,0,0,1,-1,-1,0,-1,2,3}, + {-1,0,0,0,0,-1,-1,1,2,2}, + {-1,0,0,1,1,0,0,1,2,2}, + {0,1,-1,-1,-1,0,0,0,2,1}, + {1,1,0,1,0,0,0,1,2,0}, + {0,0,-1,-1,0,0,-1,1,2,4}, + {-1,0,-1,1,0,0,1,0,2,6}, + {0,0,0,-1,0,1,0,0,1,5}, + {1,1,-1,0,0,1,0,0,2,0}, + {0,0,0,-1,0,0,-1,0,1,7}, + {0,-1,-1,0,0,-1,1,0,2,0}, + {-1,1,0,1,0,0,-1,0,2,3}, + {0,0,0,-1,-1,-1,0,-1,2,6}, + {-1,0,0,1,1,0,0,1,2,1}, + {0,0,0,1,1,0,0,0,1,2}, + {-1,1,0,0,-1,-1,0,0,2,6}, + {0,-1,1,1,0,0,1,0,2,6}, + {1,0,0,0,0,0,0,0,0,6}, + {0,0,1,0,0,1,0,0,1,0}, + {1,0,0,1,-1,0,0,1,2,0}, + {1,1,0,1,0,0,-1,0,2,6}, + {0,0,1,1,0,0,1,-1,2,3}, + {-1,0,0,1,-1,0,0,-1,2,6}, + {-1,0,0,-1,1,1,0,0,2,5}, + {-1,-1,0,0,1,-1,0,0,2,4}, + {-1,0,0,0,-1,-1,1,0,2,1}, + {0,0,-1,-1,0,0,-1,1,2,2}, + {0,0,-1,1,0,0,1,1,2,3}, + {0,1,1,-1,0,1,0,0,2,6}, + {-1,0,0,1,1,0,0,1,2,7}, + {-1,-1,0,0,-1,1,0,0,2,5}, + {0,-1,0,0,0,0,0,-1,1,0}, + {1,1,-1,0,0,0,-1,0,2,7}, + {1,-1,-1,0,-1,0,0,0,2,2}, + {1,0,0,-1,-1,0,0,-1,2,7}, + {1,0,1,-1,0,-1,0,0,2,3}, + {1,1,0,0,1,-1,0,0,2,5}, + {1,0,1,-1,0,0,0,1,2,4}, + {0,1,-1,-1,-1,0,0,0,2,4}, + {0,1,-1,-1,0,0,1,0,2,1}, + {0,1,1,0,0,1,-1,0,2,3}, + {-1,-1,1,0,0,0,0,1,2,7}, + {0,-1,-1,0,0,1,-1,0,2,3}, + {-1,0,0,1,1,0,0,1,2,6}, + {-1,0,-1,-1,0,0,1,0,2,0}, + {0,0,0,-1,-1,0,0,0,1,6}, + {0,0,0,-1,0,0,0,1,1,1}, + {-1,-1,1,0,1,0,0,0,2,6}, + {1,0,1,1,0,1,0,0,2,4}, + {0,1,1,0,-1,0,0,-1,2,7}, + {-1,-1,0,0,-1,1,0,0,2,4}, + {0,1,1,-1,0,1,0,0,2,4}, + {-1,0,-1,1,0,-1,0,0,2,0}, + {0,1,1,0,0,-1,1,0,2,0}, + {0,-1,-1,0,0,-1,1,0,2,2}, + {1,0,0,0,0,-1,1,1,2,3}, + {-1,0,0,0,0,0,0,-1,1,3}, + {0,0,-1,-1,0,0,-1,1,2,0}, + {0,-1,-1,0,0,-1,1,0,2,5}, + {0,1,1,0,0,1,-1,0,2,6}, + {0,0,0,-1,1,-1,-1,0,2,4}, + {-1,0,0,1,0,-1,1,0,2,6}, + {-1,0,0,1,1,0,0,1,2,5}, + {1,0,0,0,-1,0,-1,1,2,2}, + {0,0,1,-1,0,0,1,1,2,6}, + {0,-1,1,1,0,-1,0,0,2,6}, + {-1,-1,0,0,-1,1,0,0,2,3}, + {0,1,0,0,-1,0,-1,1,2,7}, + {0,-1,-1,0,0,-1,1,0,2,1}, + {0,0,-1,-1,0,0,-1,1,2,7}, + {0,1,0,0,-1,0,-1,-1,2,7}, + {0,-1,1,1,0,-1,0,0,2,2}, + {0,1,-1,0,0,1,1,0,2,2}, + {0,1,1,-1,0,1,0,0,2,7}, + {-1,0,0,0,0,0,0,0,0,2}, + {0,1,1,0,0,1,-1,0,2,1}, + {0,0,0,1,0,1,-1,-1,2,1}, + {0,0,1,1,0,0,1,-1,2,7}, + {-1,0,0,1,-1,0,0,-1,2,1}, + {-1,0,-1,1,0,1,0,0,2,0}, + {0,0,1,-1,1,1,0,0,2,6}, + {-1,-1,0,-1,0,0,0,1,2,4}, + {-1,0,0,1,0,0,1,-1,2,2}, + {0,0,0,1,-1,-1,0,-1,2,5}, + {-1,0,0,0,-1,0,-1,1,2,1}, + {0,0,1,-1,1,1,0,0,2,4}, + {0,0,1,1,0,0,-1,1,2,3}, + {0,0,0,1,1,-1,-1,0,2,0}, + {0,0,-1,0,0,-1,1,1,2,5}, + {0,0,0,1,1,-1,-1,0,2,1}, + {0,-1,0,0,0,1,-1,-1,2,5}, + {0,-1,0,0,1,-1,0,-1,2,7}, + {-1,-1,1,0,0,0,0,1,2,3}, + {-1,0,0,1,0,-1,1,0,2,4}, + {-1,-1,0,0,0,-1,1,0,2,0}, + {0,1,1,0,0,-1,1,0,2,5}, + {1,0,0,1,0,0,-1,-1,2,6}, + {0,-1,0,0,-1,0,-1,-1,2,0}, + {1,0,1,1,0,0,0,1,2,1}, + {-1,0,-1,-1,0,-1,0,0,2,7}, + {0,1,0,0,0,1,-1,-1,2,5}, + {-1,1,0,0,-1,0,0,1,2,1}, + {0,1,-1,-1,0,0,0,-1,2,5}, + {0,-1,0,0,-1,0,-1,-1,2,2}, + {1,0,0,-1,0,1,-1,0,2,5}, + {0,-1,1,0,0,1,1,0,2,4}, + {0,1,1,-1,1,0,0,0,2,1}, + {0,1,0,0,-1,1,0,1,2,2}, + {0,0,0,1,1,-1,0,-1,2,7}, + {1,0,0,0,0,-1,1,1,2,1}, + {1,0,1,1,0,1,0,0,2,7}, + {-1,-1,0,0,0,1,-1,0,2,6}, + {1,-1,0,0,1,1,0,0,2,0}, + {1,-1,0,-1,0,0,-1,0,2,4}, + {1,0,0,-1,1,0,0,1,2,3}, + {0,0,1,1,0,0,-1,1,2,7}, + {0,-1,-1,1,-1,0,0,0,2,5}, + {1,1,-1,0,0,0,0,-1,2,2}, + {1,0,1,1,0,0,1,0,2,5}, + {-1,0,0,1,0,-1,1,0,2,5}, + {0,-1,1,0,0,1,1,0,2,0}, + {0,0,-1,1,1,0,0,-1,2,3}, + {-1,0,0,0,0,1,-1,-1,2,1}, + {-1,0,0,0,1,0,0,0,1,7}, + {0,1,1,-1,1,0,0,0,2,0}, + {0,0,1,0,1,0,1,-1,2,5}, + {-1,-1,1,0,0,0,0,-1,2,1}, + {-1,-1,0,0,0,0,-1,1,2,0}, + {-1,1,0,0,-1,-1,0,0,2,3}, + {-1,-1,1,0,0,0,0,1,2,1}, + {0,-1,-1,1,-1,0,0,0,2,7}, + {-1,1,0,1,0,0,0,1,2,4}, + {0,-1,0,0,-1,0,-1,-1,2,4}, + {0,0,0,1,-1,0,0,0,1,0}, + {-1,1,0,1,0,0,0,-1,2,6}, + {-1,0,0,-1,0,1,1,0,2,3}, + {1,0,1,-1,0,-1,0,0,2,6}, + {0,-1,-1,0,0,1,-1,0,2,4}, + {1,0,1,1,0,1,0,0,2,5}, + {0,0,1,-1,1,1,0,0,2,1}, + {1,1,-1,0,0,0,1,0,2,5}, + {-1,0,-1,1,0,1,0,0,2,4}, + {-1,1,0,1,0,0,1,0,2,3}, + {0,1,0,0,-1,-1,1,0,2,6}, + {0,0,0,0,-1,0,0,0,0,7}, + {-1,-1,1,0,-1,0,0,0,2,0}, + {-1,-1,1,0,0,0,0,1,2,0}, + {0,0,0,-1,-1,0,-1,1,2,1}, + {1,0,0,1,-1,0,0,1,2,3}, + {-1,0,-1,-1,0,-1,0,0,2,4}, + {0,0,-1,0,-1,0,-1,-1,2,6}, + {1,1,0,0,-1,1,0,0,2,1}, + {0,-1,-1,0,-1,0,0,-1,2,6}, + {0,-1,0,0,-1,1,0,1,2,1}, + {1,-1,0,-1,0,0,-1,0,2,2}, + {-1,1,0,1,0,0,1,0,2,2}, + {-1,0,0,0,1,1,-1,0,2,1}, + {0,0,1,-1,0,0,1,1,2,1}, + {0,0,-1,0,0,1,1,-1,2,7}, + {0,0,1,0,0,0,0,-1,1,2}, + {-1,0,-1,1,0,0,0,1,2,3}, + {0,1,1,-1,1,0,0,0,2,5}, + {0,0,1,1,0,-1,1,0,2,2}, + {1,0,1,1,0,1,0,0,2,3}, + {0,0,0,0,0,0,1,0,0,6}, + {-1,-1,1,0,0,0,0,1,2,6}, + {0,0,1,-1,-1,-1,0,0,2,0}, + {0,0,1,-1,1,1,0,0,2,2}, + {0,1,-1,0,1,0,0,-1,2,4}, + {1,-1,0,-1,0,0,0,1,2,1}, + {0,0,1,1,0,0,1,-1,2,2}, + {1,0,1,1,0,-1,0,0,2,1}, + {0,-1,1,1,0,1,0,0,2,5}, + {0,-1,-1,1,-1,0,0,0,2,4}, + {-1,-1,0,0,-1,0,0,-1,2,4}, + {-1,0,0,-1,1,0,0,-1,2,0}, + {0,0,0,1,0,-1,1,1,2,4}, + {0,1,1,-1,1,0,0,0,2,4}, + {0,1,-1,-1,0,0,0,1,2,5}, + {1,0,0,-1,-1,0,0,-1,2,6}, + {0,0,-1,0,1,1,0,1,2,3}, + {0,1,-1,-1,0,0,1,0,2,5}, + {1,-1,0,0,1,0,0,-1,2,2}, + {-1,-1,0,-1,0,0,-1,0,2,6}, + {-1,0,-1,-1,0,-1,0,0,2,1}, + {1,-1,0,-1,0,0,-1,0,2,7}, + {1,0,0,0,0,0,0,0,0,7}, + {0,0,-1,0,1,-1,0,-1,2,5}, + {0,-1,0,0,1,1,-1,0,2,1}, + {0,0,0,-1,0,0,0,0,0,0}, + {1,1,0,1,0,0,0,1,2,2}, + {-1,-1,1,0,0,0,0,1,2,4}, + {-1,1,0,1,0,0,1,0,2,6}, + {-1,-1,0,0,1,-1,0,0,2,6}, + {1,0,0,1,0,0,-1,-1,2,2}, + {0,1,-1,0,0,1,1,0,2,4}, + {0,0,0,-1,-1,-1,1,0,2,7}, + {0,1,0,0,-1,1,0,1,2,0}, + {1,0,0,1,1,1,0,0,2,2}, + {1,1,0,0,-1,1,0,0,2,6}, + {0,-1,0,0,1,0,1,-1,2,2}, + {0,1,1,0,0,-1,1,0,2,4}, + {0,0,0,-1,0,1,-1,-1,2,2}, + {-1,0,0,1,1,0,0,1,2,0}, + {0,1,-1,0,-1,0,0,1,2,7}, + {1,0,0,0,-1,0,-1,1,2,6}, + {0,0,-1,0,0,-1,1,1,2,7}, + {0,-1,0,0,1,0,1,-1,2,5}, + {0,-1,0,0,-1,0,0,0,1,4}, + {0,1,0,0,0,0,0,-1,1,0}, + {0,0,0,-1,0,0,0,1,1,3}, + {-1,0,-1,-1,-1,0,0,0,2,7}, + {0,0,-1,-1,0,0,1,-1,2,1}, + {1,0,0,-1,1,0,0,1,2,7}, + {0,0,0,-1,0,1,0,0,1,7}, + {0,0,0,0,0,0,-1,0,0,4}, + {1,1,0,0,-1,1,0,0,2,5}, + {0,-1,1,0,-1,-1,0,0,2,1}, + {1,0,0,0,0,0,-1,0,1,1}, + {1,0,0,1,0,0,1,1,2,6}, + {-1,0,0,0,0,-1,0,0,1,0}, + {0,0,-1,0,0,0,0,-1,1,4}, + {0,0,0,-1,0,0,0,0,0,6}, + {1,1,0,1,0,1,0,0,2,5}, + {-1,0,0,0,0,0,-1,0,1,0}, + {1,0,0,0,1,1,-1,0,2,6}, + {0,-1,1,1,0,0,0,-1,2,2}, + {-1,1,1,0,-1,0,0,0,2,7}, + {-1,1,0,0,-1,0,0,1,2,7}, + {1,0,0,-1,-1,0,0,-1,2,2}, + {1,1,0,1,0,0,0,-1,2,5}, + {1,0,0,0,0,1,0,0,1,0}, + {0,0,0,1,-1,0,0,0,1,2}, + {0,-1,0,0,0,-1,1,1,2,3}, + {-1,0,0,0,0,0,0,1,1,3}, + {0,0,-1,-1,0,0,-1,1,2,1}, + {0,0,1,0,0,0,0,-1,1,4}, + {1,1,-1,0,0,0,-1,0,2,4}, + {1,0,0,0,-1,0,-1,1,2,3}, + {-1,0,-1,-1,0,1,0,0,2,4}, + {-1,1,0,1,0,-1,0,0,2,3}, + {0,-1,0,0,0,0,-1,0,1,5}, + {0,1,0,0,-1,-1,1,0,2,5}, + {1,0,1,1,1,0,0,0,2,0}, + {0,0,-1,0,0,0,0,-1,1,3}, + {0,0,1,-1,0,0,-1,-1,2,1}, + {1,0,1,-1,0,0,0,1,2,2}, + {0,0,1,0,-1,0,-1,1,2,1}, + {0,0,0,-1,1,0,0,0,1,1}, + {0,0,0,1,0,0,0,1,1,3}, + {-1,-1,1,0,0,0,1,0,2,0}, + {1,0,0,0,0,1,0,0,1,7}, + {0,0,1,0,-1,0,-1,1,2,3}, + {0,1,0,0,0,0,1,0,1,5}, + {0,-1,0,0,0,0,-1,0,1,4}, + {0,0,1,0,0,0,0,-1,1,0}, + {0,0,0,1,-1,0,-1,1,2,3}, + {0,0,-1,0,0,0,0,-1,1,2}, + {1,0,0,0,1,1,-1,0,2,4}, + {0,0,0,-1,1,0,0,0,1,0}, + {1,0,0,0,0,1,-1,-1,2,5}, + {-1,-1,0,0,0,-1,1,0,2,7}, + {0,0,1,0,0,0,0,-1,1,7}, + {0,0,0,1,0,0,1,0,1,7}, + {-1,0,0,0,0,1,0,0,1,4}, + {0,0,1,-1,0,-1,-1,0,2,7}, + {1,0,0,0,0,1,0,0,1,5}, + {1,0,1,1,0,0,1,0,2,3}, + {0,1,0,0,0,0,1,0,1,3}, + {0,0,0,1,-1,1,1,0,2,0}, + {-1,1,1,0,0,0,0,-1,2,3}, + {0,0,1,0,0,0,0,1,1,1}, + {-1,-1,0,-1,0,0,1,0,2,0}, + {0,-1,-1,0,-1,0,0,-1,2,4}, + {0,-1,0,0,0,0,-1,0,1,2}, + {0,0,1,1,0,0,-1,1,2,1}, + {-1,-1,1,0,0,0,1,0,2,2}, + {0,0,1,0,-1,-1,0,-1,2,0}, + {-1,-1,0,0,0,0,1,-1,2,1}, + {0,1,0,0,0,0,-1,0,1,6}, + {0,1,0,0,0,0,-1,0,1,5}, + {0,0,0,1,0,0,0,-1,1,2}, + {0,0,1,0,1,1,0,1,2,6}, + {-1,0,0,0,0,1,0,0,1,6}, + {1,-1,0,-1,0,0,-1,0,2,5}, + {1,0,0,-1,1,0,0,1,2,1}, + {0,1,0,0,1,0,0,0,1,4}, + {0,0,0,-1,0,1,1,-1,2,4}, + {-1,0,-1,1,0,0,-1,0,2,2}, + {-1,0,-1,-1,0,0,0,-1,2,1}, + {1,1,0,1,0,0,-1,0,2,0}, + {1,0,1,1,0,1,0,0,2,1}, + {-1,0,0,0,-1,0,0,0,1,2}, + {0,0,0,1,0,0,0,1,1,0}, + {0,-1,1,1,0,0,-1,0,2,6}, + {0,0,0,0,1,0,0,0,0,2}, + {0,1,0,0,0,-1,-1,1,2,1}, + {0,1,1,-1,1,0,0,0,2,3}, + {1,0,0,0,1,1,0,1,2,7}, + {1,1,0,1,0,-1,0,0,2,2}, + {1,0,0,0,1,0,0,0,1,4}, + {0,-1,-1,0,1,-1,0,0,2,4}, + {0,1,0,0,0,0,-1,0,1,3}, + {0,0,-1,0,-1,0,0,0,1,7}, + {-1,-1,0,0,0,0,1,-1,2,3}, + {-1,0,-1,1,0,-1,0,0,2,4}, + {0,-1,0,0,-1,0,-1,1,2,1}, + {0,-1,0,0,0,-1,-1,1,2,7}, + {0,1,1,0,0,-1,1,0,2,3}, + {0,0,0,1,0,0,0,-1,1,3}, + {-1,0,0,0,-1,1,0,1,2,2}, + {1,0,0,0,0,-1,0,0,1,0}, + {0,0,-1,-1,-1,1,0,0,2,6}, + {1,0,1,-1,0,-1,0,0,2,0}, + {0,0,1,1,0,-1,1,0,2,3}, + {0,0,0,-1,0,-1,0,0,1,5}, + {0,0,1,-1,0,-1,-1,0,2,1}, + {0,-1,0,0,-1,0,-1,-1,2,6}, + {-1,1,1,0,0,0,0,1,2,4}, + {-1,1,0,1,0,0,0,-1,2,4}, + {0,1,1,0,0,1,-1,0,2,0}, + {0,1,1,-1,0,0,0,1,2,5}, + {0,0,-1,0,0,0,0,-1,1,1}, + {1,1,-1,0,0,0,0,-1,2,7}, + {0,0,0,1,0,1,1,-1,2,6}, + {0,0,-1,-1,-1,0,0,-1,2,7}, + {-1,0,0,1,1,-1,0,0,2,5}, + {0,1,0,0,0,0,0,1,1,3}, + {-1,0,0,0,0,0,0,0,0,3}, + {1,1,0,1,0,-1,0,0,2,4}, + {0,0,0,-1,1,1,-1,0,2,2}, + {-1,0,0,0,0,0,1,0,1,2}, + {-1,0,-1,1,0,0,1,0,2,0}, + {0,-1,-1,0,1,0,0,1,2,2}, + {-1,0,0,0,0,1,0,0,1,0}, + {0,0,0,1,0,1,0,0,1,4}, + {0,0,1,0,0,1,0,0,1,6}, + {1,0,0,0,0,1,1,-1,2,7}, + {0,0,1,0,1,0,0,0,1,4}, + {0,0,0,-1,0,-1,0,0,1,3}, + {0,-1,0,0,1,-1,-1,0,2,5}, + {0,1,0,0,0,1,0,0,1,7}, + {0,0,0,-1,0,0,0,-1,1,5}, + {1,0,0,-1,-1,1,0,0,2,7}, + {0,1,0,0,1,1,-1,0,2,5}, + {-1,0,0,0,0,0,1,0,1,1}, + {0,0,0,-1,-1,1,1,0,2,0}, + {1,-1,-1,0,0,0,1,0,2,1}, + {0,-1,0,0,0,0,1,0,1,2}, + {0,1,0,0,-1,1,0,1,2,3}, + {1,0,0,0,0,0,0,0,0,1}, + {0,0,-1,0,-1,0,0,0,1,6}, + {1,1,-1,0,-1,0,0,0,2,3}, + {-1,0,0,0,0,0,1,0,1,0}, + {0,-1,0,0,0,0,0,1,1,6}, + {0,0,1,-1,-1,-1,0,0,2,3}, + {0,0,1,1,-1,0,0,-1,2,7}, + {0,1,0,0,0,0,0,-1,1,6}, + {1,-1,-1,0,-1,0,0,0,2,3}, + {1,-1,0,-1,0,0,-1,0,2,6}, + {0,0,-1,0,1,0,1,-1,2,5}, + {0,1,-1,0,0,0,1,1,2,4}, + {0,0,0,1,0,1,0,0,1,3}, + {0,0,0,1,-1,-1,1,0,2,1}, + {1,-1,0,0,1,1,0,0,2,4}, + {-1,-1,1,0,0,0,0,-1,2,6}, + {-1,-1,0,0,1,0,0,1,2,2}, + {0,1,1,0,0,-1,1,0,2,1}, + {0,-1,1,0,0,-1,-1,0,2,0}, + {0,1,0,0,0,-1,1,1,2,4}, + {-1,0,0,1,-1,0,0,-1,2,7}, + {1,-1,0,0,1,1,0,0,2,1}, + {1,0,0,0,0,0,-1,0,1,3}, + {0,-1,1,0,1,0,0,-1,2,2}, + {-1,1,1,0,0,0,0,-1,2,6}, + {0,0,1,0,0,1,0,0,1,3}, + {0,0,0,-1,-1,1,1,0,2,3}, + {1,0,0,0,-1,0,0,0,1,6}, + {1,0,0,0,-1,0,-1,-1,2,7}, + {-1,0,0,0,1,-1,-1,0,2,2}, + {0,0,1,0,0,0,-1,0,1,3}, + {0,1,0,0,0,0,0,-1,1,4}, + {0,1,0,0,1,0,1,-1,2,1}, + {0,0,1,0,0,0,0,0,0,6}, + {1,0,0,0,1,0,0,0,1,0}, + {0,0,0,1,0,1,0,0,1,5}, + {1,0,0,0,0,1,-1,-1,2,2}, + {-1,0,0,0,0,0,1,0,1,5}, + {0,0,0,1,1,-1,0,-1,2,0}, + {-1,0,0,-1,0,1,1,0,2,7}, + {-1,-1,0,0,0,1,-1,0,2,5}, + {0,0,-1,0,0,0,1,0,1,5}, + {1,0,0,-1,0,0,1,-1,2,7}, + {0,0,0,-1,-1,1,1,0,2,6}, + {1,0,1,1,0,1,0,0,2,0}, + {0,0,0,-1,1,1,0,1,2,1}, + {0,-1,0,0,0,0,0,1,1,3}, + {-1,0,0,1,-1,0,0,-1,2,2}, + {0,-1,1,0,1,0,0,-1,2,0}, + {0,0,-1,0,0,0,-1,0,1,6}, + {0,0,0,1,0,-1,0,0,1,1}, + {0,0,-1,0,-1,0,0,0,1,1}, + {0,1,0,0,0,0,0,-1,1,3}, + {0,0,1,0,1,0,0,0,1,1}, + {1,1,0,1,0,0,0,-1,2,4}, + {0,-1,0,0,0,0,-1,0,1,6}, + {1,0,0,0,-1,-1,0,-1,2,7}, + {0,0,0,0,0,0,0,1,0,1}, + {-1,0,0,0,0,0,1,0,1,4}, + {1,0,0,0,-1,0,0,0,1,3}, + {1,-1,0,0,-1,-1,0,0,2,5}, + {1,0,0,0,0,0,-1,0,1,5}, + {1,0,0,0,1,1,-1,0,2,5}, + {0,0,0,1,0,0,0,1,1,7}, + {0,0,0,1,0,0,0,-1,1,4}, + {0,0,0,1,-1,-1,0,-1,2,7}, + {1,0,0,0,0,0,0,1,1,6}, + {0,0,-1,1,0,0,-1,-1,2,0}, + {0,0,-1,0,-1,0,0,0,1,0}, + {1,0,0,0,0,0,0,0,0,0}, + {1,0,1,1,0,1,0,0,2,2}, + {0,-1,0,0,0,0,0,1,1,1}, + {1,1,0,0,0,0,-1,1,2,3}, + {0,1,1,0,-1,0,0,-1,2,0}, + {1,1,-1,0,1,0,0,0,2,6}, + {-1,-1,1,0,0,0,1,0,2,1}, + {-1,1,0,0,0,1,1,0,2,6}, + {0,-1,0,0,0,0,1,0,1,4}, + {-1,0,-1,1,0,0,0,-1,2,5}, + {1,0,0,-1,1,0,0,1,2,5}, + {1,0,0,0,-1,0,0,0,1,4}, + {0,0,1,0,0,-1,0,0,1,4}, + {1,0,0,0,0,0,1,0,1,5}, + {0,-1,0,0,0,0,0,1,1,2}, + {0,1,0,0,0,0,0,0,0,6}, + {0,0,0,0,-1,0,0,0,0,1}, + {0,-1,0,0,0,0,0,1,1,7}, + {0,-1,0,0,-1,1,1,0,2,2}, + {1,-1,-1,0,0,0,0,-1,2,7}, + {0,0,1,0,0,1,0,0,1,2}, + {0,0,1,0,0,0,0,0,0,4}, + {0,0,0,1,0,1,0,0,1,1}, + {0,0,0,1,0,0,0,0,0,2}, + {1,0,0,-1,0,1,-1,0,2,1}, + {1,1,0,0,1,-1,0,0,2,6}, + {-1,0,0,0,0,0,0,1,1,2}, + {1,1,-1,0,0,0,0,-1,2,5}, + {0,0,-1,0,0,0,0,1,1,2}, + {-1,0,-1,-1,0,-1,0,0,2,2}, + {-1,1,0,1,0,0,1,0,2,5}, + {0,1,0,0,1,0,0,0,1,6}, + {-1,0,0,0,0,0,0,1,1,1}, + {1,-1,-1,0,0,0,0,1,2,2}, + {0,-1,0,0,-1,0,0,0,1,7}, + {0,1,0,0,0,0,0,0,0,1}, + {0,0,0,-1,0,0,-1,0,1,3}, + {0,0,0,1,1,0,0,0,1,3}, + {-1,0,0,0,1,1,0,1,2,0}, + {1,0,0,-1,0,1,-1,0,2,6}, + {0,0,0,-1,-1,-1,0,-1,2,5}, + {0,0,0,-1,0,0,1,0,1,5}, + {1,0,0,0,0,0,0,-1,1,1}, + {0,0,0,1,0,0,1,0,1,3}, + {0,1,0,0,0,0,0,1,1,0}, + {0,-1,0,0,0,-1,0,0,1,5}, + {0,0,0,1,-1,-1,0,-1,2,2}, + {0,0,-1,0,0,0,0,0,0,1}, + {0,0,0,1,0,0,-1,0,1,0}, + {0,-1,1,1,0,-1,0,0,2,5}, + {1,0,1,1,0,0,0,-1,2,6}, + {0,0,1,0,0,0,1,0,1,3}, + {0,0,1,1,0,0,1,-1,2,6}, + {0,1,0,0,1,-1,0,-1,2,6}, + {0,0,0,-1,0,-1,0,0,1,2}, + {-1,0,0,0,-1,-1,1,0,2,0}, + {0,1,0,0,0,0,0,1,1,4}, + {0,-1,-1,0,0,0,1,-1,2,0}, + {-1,0,0,0,-1,1,1,0,2,7}, + {0,1,0,0,0,1,0,0,1,4}, + {0,0,1,-1,-1,0,0,1,2,0}, + {0,1,0,0,0,-1,0,0,1,5}, + {-1,0,0,0,0,-1,-1,1,2,1}, + {0,1,-1,-1,1,0,0,0,2,4}, + {0,0,1,0,1,0,1,1,2,0}, + {0,-1,-1,0,0,0,-1,1,2,0}, + {0,-1,0,0,1,0,1,-1,2,7}, + {0,-1,0,0,0,0,0,0,0,5}, + {0,0,-1,0,-1,-1,1,0,2,5}, + {0,0,0,1,0,-1,0,0,1,5}, + {0,0,0,-1,0,0,0,-1,1,1}, + {0,0,0,-1,0,-1,0,0,1,1}, + {0,-1,1,0,-1,0,0,1,2,0}, + {1,-1,0,0,-1,-1,0,0,2,4}, + {1,0,0,1,-1,0,0,1,2,2}, + {-1,0,0,0,-1,0,0,0,1,4}, + {0,1,-1,0,1,1,0,0,2,7}, + {-1,0,0,0,0,-1,1,1,2,4}, + {0,0,1,0,-1,0,0,0,1,1}, + {1,-1,0,0,-1,-1,0,0,2,1}, + {1,1,-1,0,0,0,0,-1,2,3}, + {0,0,0,1,0,0,1,0,1,0}, + {0,0,0,-1,0,1,0,0,1,4}, + {1,0,0,1,0,0,1,1,2,3}, + {0,0,0,1,0,0,-1,0,1,6}, + {0,1,0,0,0,1,1,-1,2,4}, + {0,-1,0,0,-1,0,0,0,1,3}, + {0,0,-1,-1,-1,1,0,0,2,4}, + {0,1,0,0,0,1,0,0,1,5}, + {0,1,-1,0,0,-1,-1,0,2,5}, + {1,0,0,0,0,0,0,1,1,7}, + {0,0,0,1,1,-1,0,-1,2,5}, + {0,1,0,0,1,0,1,-1,2,2}, + {0,0,0,1,0,1,-1,-1,2,4}, + {0,0,1,0,1,0,0,0,1,5}, + {0,0,-1,0,-1,0,0,0,1,3}, + {0,0,0,-1,1,-1,0,-1,2,3}, + {1,0,0,0,0,0,0,-1,1,3}, + {0,0,0,-1,-1,0,0,0,1,7}, + {1,0,0,0,0,1,1,-1,2,5}, + {0,0,0,-1,0,0,0,0,0,7}, + {1,-1,0,-1,0,0,-1,0,2,3}, + {-1,0,0,0,-1,-1,0,-1,2,1}, + {1,1,-1,0,0,0,-1,0,2,2}, + {-1,0,0,0,0,0,0,-1,1,1}, + {-1,-1,1,0,0,0,0,1,2,2}, + {1,0,0,0,0,-1,0,0,1,7}, + {1,0,1,1,0,1,0,0,2,6}, + {0,0,0,1,0,-1,0,0,1,7}, + {0,0,1,0,-1,1,1,0,2,7}, + {0,1,0,0,0,1,1,-1,2,2}, + {0,1,1,0,0,-1,1,0,2,6}, + {0,0,0,-1,-1,0,-1,-1,2,5}, + {0,0,-1,0,1,0,0,0,1,5}, + {0,-1,1,1,1,0,0,0,2,1}, + {0,-1,1,1,1,0,0,0,2,6}, + {-1,0,0,0,0,1,0,0,1,5}, + {1,0,1,-1,0,0,0,1,2,3}, + {0,0,0,1,0,0,0,-1,1,1}, + {1,0,0,0,0,-1,1,1,2,4}, + {0,1,1,-1,1,0,0,0,2,6}, + {-1,-1,0,0,0,0,-1,1,2,1}, + {-1,-1,0,0,1,-1,0,0,2,7}, + {0,0,0,-1,-1,1,1,0,2,2}, + {0,-1,-1,1,1,0,0,0,2,5}, + {0,1,-1,-1,0,1,0,0,2,7}, + {0,0,0,1,1,0,1,-1,2,6}, + {-1,-1,0,-1,0,0,1,0,2,5}, + {0,-1,0,0,0,0,1,0,1,7}, + {0,-1,0,0,1,-1,0,-1,2,4}, + {1,0,0,0,0,1,1,-1,2,6}, + {0,1,1,-1,1,0,0,0,2,7}, + {1,-1,0,0,0,0,-1,-1,2,7}, + {1,1,0,1,0,0,-1,0,2,2}, + {1,1,0,0,0,-1,1,0,2,6}, + {0,0,1,0,0,0,1,0,1,2}, + {0,1,-1,0,1,1,0,0,2,3}, + {-1,0,0,0,1,0,1,-1,2,7}, + {-1,0,0,0,-1,0,0,0,1,1}, + {0,0,1,-1,-1,0,0,1,2,2}, + {-1,0,0,1,0,-1,1,0,2,3}, + {0,-1,1,1,-1,0,0,0,2,5}, + {0,-1,0,0,-1,0,-1,-1,2,3}, + {1,-1,0,-1,0,0,0,-1,2,4}, + {0,0,-1,0,0,0,0,0,0,5}, + {0,0,1,0,0,1,0,0,1,7}, + {-1,0,-1,1,0,1,0,0,2,6}, + {0,1,0,0,-1,0,-1,1,2,4}, + {0,0,-1,0,0,0,-1,0,1,0}, + {0,-1,0,0,0,0,1,0,1,5}, + {0,0,0,-1,-1,0,0,0,1,0}, + {-1,0,0,0,0,1,-1,-1,2,0}, + {1,0,0,0,0,-1,0,0,1,3}, + {-1,-1,1,0,0,0,0,1,2,5}, + {0,0,1,1,1,-1,0,0,2,5}, + {0,0,0,1,-1,0,-1,1,2,5}, + {0,0,0,-1,1,1,-1,0,2,7}, + {0,0,0,1,0,0,0,1,1,5}, + {1,0,0,0,-1,0,-1,1,2,1}, + {0,0,1,-1,0,0,1,1,2,3}, + {0,1,0,0,0,0,1,0,1,4}, + {0,0,-1,0,0,-1,0,0,1,3}, + {0,-1,-1,1,0,0,1,0,2,0}, + {0,1,0,0,0,1,-1,-1,2,1}, + {0,-1,0,0,0,1,-1,-1,2,3}, + {0,0,0,-1,0,0,0,-1,1,4}, + {-1,-1,0,-1,0,0,0,1,2,6}, + {-1,0,0,0,0,0,1,0,1,3}, + {-1,0,0,0,-1,0,0,0,1,5}, + {0,0,0,1,0,0,0,1,1,1}, + {0,0,0,1,1,1,-1,0,2,4}, + {0,0,1,0,1,1,-1,0,2,4}, + {-1,0,0,0,0,0,0,0,0,6}, + {0,0,0,-1,0,0,0,1,1,6}, + {-1,1,0,0,0,0,1,1,2,1}, + {0,-1,0,0,0,0,0,0,0,4}, + {0,1,-1,-1,0,0,-1,0,2,0}, + {1,0,0,0,1,-1,-1,0,2,2}, + {1,0,0,0,0,-1,0,0,1,2}, + {0,0,1,0,0,0,1,0,1,7}, + {-1,0,0,0,0,0,-1,0,1,3}, + {0,0,1,0,-1,-1,0,-1,2,6}, + {0,-1,-1,1,0,-1,0,0,2,1}, + {-1,0,0,0,0,0,-1,0,1,2}, + {1,0,0,0,1,-1,-1,0,2,5}, + {0,1,0,0,-1,0,0,0,1,7}, + {0,0,1,0,0,0,0,1,1,2}, + {-1,0,0,0,0,0,0,-1,1,6}, + {-1,0,-1,-1,0,0,-1,0,2,1}, + {0,0,0,1,0,-1,1,1,2,0}, + {0,-1,-1,1,1,0,0,0,2,4}, + {0,0,-1,0,-1,1,0,1,2,2}, + {0,1,0,0,1,1,0,1,2,6}, + {0,0,1,-1,1,0,0,-1,2,2}, + {0,0,1,0,0,0,0,-1,1,1}, + {0,1,0,0,0,-1,0,0,1,7}, + {0,0,1,0,1,0,0,0,1,3}, + {0,-1,-1,1,0,1,0,0,2,7}, + {1,1,0,1,1,0,0,0,2,4}, + {0,0,0,1,0,0,1,0,1,2}, + {-1,0,0,0,0,0,0,1,1,5}, + {-1,0,-1,1,0,-1,0,0,2,3}, + {0,0,0,1,1,0,1,-1,2,4}, + {1,1,0,1,0,0,1,0,2,2}, + {1,1,-1,0,0,0,0,-1,2,1}, + {1,0,0,0,0,-1,-1,1,2,7}, + {0,1,-1,-1,0,-1,0,0,2,4}, + {0,-1,1,1,0,0,0,1,2,4}, + {1,0,1,-1,0,-1,0,0,2,1}, + {0,0,0,1,0,0,-1,0,1,7}, + {1,1,0,0,0,0,-1,1,2,7}, + {0,1,1,-1,0,-1,0,0,2,2}, + {0,0,1,1,-1,0,0,-1,2,1}, + {0,1,0,0,0,0,0,-1,1,1}, + {0,0,0,1,0,0,0,-1,1,7}, + {0,0,0,-1,1,1,-1,0,2,0}, + {0,0,1,0,-1,1,0,1,2,7}, + {0,0,0,1,0,0,0,0,0,0}, + {-1,0,0,0,1,0,0,0,1,3}, + {0,1,0,0,-1,-1,1,0,2,1}, + {0,0,-1,0,1,0,1,-1,2,6}, + {1,0,0,0,1,0,0,0,1,2}, + {0,0,-1,-1,0,1,-1,0,2,6}, + {0,0,-1,0,0,0,0,1,1,3}, + {1,-1,-1,0,-1,0,0,0,2,7}, + {0,0,1,-1,0,1,1,0,2,3}, + {-1,-1,0,0,0,0,1,-1,2,4}, + {1,1,0,0,0,0,-1,1,2,4}, + {-1,-1,0,0,1,-1,0,0,2,5}, + {0,1,-1,0,1,0,0,-1,2,5}, + {0,-1,0,0,0,1,0,0,1,0}, + {0,0,0,1,0,-1,0,0,1,3}, + {-1,0,0,0,0,0,-1,0,1,6}, + {0,0,1,0,0,-1,0,0,1,1}, + {-1,-1,0,-1,0,0,-1,0,2,3}, + {0,-1,1,0,0,1,1,0,2,6}, + {0,-1,-1,1,0,0,0,1,2,1}, + {0,0,-1,0,0,-1,0,0,1,5}, + {-1,0,0,-1,0,1,1,0,2,2}, + {0,0,-1,0,1,0,1,-1,2,1}, + {-1,-1,0,-1,-1,0,0,0,2,7}, + {-1,-1,0,0,-1,1,0,0,2,6}, + {0,-1,0,0,0,0,0,0,0,1}, + {-1,0,0,1,0,-1,1,0,2,0}, + {-1,0,-1,1,0,-1,0,0,2,2}, + {0,0,-1,0,0,1,1,-1,2,3}, + {1,1,0,1,1,0,0,0,2,5}, + {0,-1,0,0,0,-1,1,1,2,6}, + {0,0,-1,0,0,0,0,0,0,7}, + {0,0,0,-1,0,-1,0,0,1,0}, + {0,0,-1,-1,0,0,1,-1,2,2}, + {1,0,0,0,-1,-1,0,-1,2,4}, + {-1,0,0,0,0,-1,0,0,1,5}, + {0,-1,-1,0,0,0,1,-1,2,3}, + {-1,1,0,0,0,0,-1,-1,2,0}, + {0,0,0,1,-1,0,0,0,1,4}, + {1,0,0,0,-1,1,0,1,2,0}, + {0,0,-1,0,0,0,-1,0,1,2}, + {0,-1,0,0,0,0,0,-1,1,6}, + {0,0,1,-1,-1,0,0,1,2,3}, + {1,1,0,1,0,0,-1,0,2,1}, + {-1,0,-1,-1,0,0,0,-1,2,2}, + {0,0,1,0,0,0,0,-1,1,3}, + {0,1,1,0,0,1,-1,0,2,7}, + {1,0,0,0,0,0,-1,0,1,7}, + {1,0,0,0,-1,1,1,0,2,3}, + {0,-1,0,0,-1,0,0,0,1,5}, + {-1,1,0,1,0,1,0,0,2,5}, + {0,-1,0,0,0,-1,0,0,1,3}, + {0,0,1,0,-1,1,0,1,2,0}, + {0,-1,-1,0,1,-1,0,0,2,0}, + {0,1,0,0,0,1,0,0,1,1}, + {1,1,0,0,-1,0,0,-1,2,1}, + {1,1,0,0,1,-1,0,0,2,4}, + {0,0,0,0,0,-1,0,0,0,2}, + {-1,0,0,0,0,1,1,-1,2,6}, + {0,0,1,1,0,1,-1,0,2,4}, + {-1,0,0,0,0,0,1,0,1,6}, + {0,0,1,0,-1,0,-1,-1,2,3}, + {-1,0,0,1,0,0,-1,1,2,5}, + {1,0,0,0,0,0,-1,0,1,6}, + {0,-1,-1,0,1,0,0,1,2,7}, + {0,0,1,0,-1,1,0,1,2,5}, + {0,0,-1,0,0,0,0,-1,1,5}, + {1,1,-1,0,1,0,0,0,2,2}, + {1,0,0,0,0,0,0,1,1,2}, + {-1,0,0,0,0,0,0,1,1,0}, + {0,1,0,0,0,1,1,-1,2,6}, + {0,0,0,-1,0,0,-1,0,1,2}, + {0,0,1,0,0,0,0,0,0,5}, + {0,0,0,-1,-1,-1,1,0,2,6}, + {0,0,0,-1,0,1,-1,-1,2,7}, + {0,1,0,0,0,-1,0,0,1,3}, + {-1,1,1,0,0,-1,0,0,2,2}, + {0,0,1,0,-1,-1,0,-1,2,2}, + {0,1,0,0,0,1,1,-1,2,3}, + {0,0,-1,1,0,0,-1,-1,2,2}, + {0,0,0,-1,1,1,-1,0,2,5}, + {1,-1,-1,0,-1,0,0,0,2,5}, + {0,-1,0,0,0,-1,0,0,1,1}, + {0,0,0,-1,0,-1,-1,1,2,5}, + {1,0,0,-1,-1,0,0,-1,2,1}, + {1,1,-1,0,1,0,0,0,2,4}, + {0,0,0,-1,1,-1,-1,0,2,5}, + {0,0,0,-1,0,0,0,0,0,4}, + {1,0,0,1,-1,0,0,1,2,7}, + {-1,0,0,0,0,0,0,0,0,7}, + {0,-1,0,0,0,0,1,0,1,3}, + {0,0,-1,0,0,0,1,0,1,2}, + {0,-1,1,1,0,1,0,0,2,7}, + {0,0,0,-1,1,-1,-1,0,2,6}, + {0,0,1,0,0,0,0,0,0,2}, + {0,0,0,1,1,0,1,1,2,0}, + {1,0,0,0,0,0,0,0,0,2}, + {0,1,0,0,0,1,0,0,1,2}, + {0,0,-1,0,0,0,-1,0,1,1}, + {0,-1,0,0,0,-1,0,0,1,6}, + {1,-1,0,0,-1,0,0,1,2,0}, + {1,0,0,0,1,0,0,0,1,7}, + {0,0,0,1,0,0,0,1,1,6}, + {-1,-1,0,-1,-1,0,0,0,2,1}, + {0,0,-1,0,0,0,-1,0,1,5}, + {0,0,1,0,-1,1,0,1,2,4}, + {0,0,0,-1,0,0,0,1,1,2}, + {0,-1,0,0,0,1,0,0,1,5}, + {1,1,-1,0,0,1,0,0,2,5}, + {0,-1,0,0,-1,0,0,0,1,2}, + {-1,0,0,0,0,-1,-1,1,2,3}, + {1,-1,0,-1,0,-1,0,0,2,6}, + {-1,0,-1,1,0,0,0,-1,2,7}, + {0,-1,0,0,0,1,0,0,1,3}, + {0,-1,0,0,1,0,0,0,1,2}, + {-1,-1,0,0,0,0,-1,1,2,5}, + {0,0,0,1,1,0,0,0,1,7}, + {1,0,0,-1,0,0,1,-1,2,1}, + {1,0,0,0,1,0,0,0,1,1}, + {1,0,0,0,0,0,-1,0,1,0}, + {0,0,0,1,0,1,0,0,1,0}, + {0,0,-1,0,0,0,-1,0,1,7}, + {-1,0,-1,1,0,0,1,0,2,4}, + {1,1,0,0,-1,0,0,-1,2,6}, + {0,0,0,-1,0,0,-1,0,1,0}, + {0,-1,1,1,0,1,0,0,2,4}, + {-1,0,0,0,-1,-1,0,-1,2,7}, + {-1,0,0,0,0,1,0,0,1,1}, + {-1,0,0,0,-1,0,0,0,1,7}, + {0,0,-1,0,-1,0,0,0,1,4}, + {1,-1,0,0,1,1,0,0,2,7}, + {0,0,0,-1,-1,0,-1,-1,2,2}, + {0,-1,-1,0,1,-1,0,0,2,3}, + {0,0,0,-1,0,0,-1,0,1,5}, + {0,-1,0,0,0,-1,0,0,1,7}, + {0,0,-1,0,0,0,0,1,1,1}, + {-1,1,0,1,0,0,0,-1,2,7}, + {0,0,0,1,0,0,0,-1,1,6}, + {0,0,0,-1,0,0,0,-1,1,7}, + {-1,-1,0,-1,0,1,0,0,2,6}, + {0,0,1,1,0,0,1,-1,2,0}, + {0,1,0,0,0,1,0,0,1,3}, + {-1,0,-1,-1,0,0,0,1,2,4}, + {0,-1,0,0,0,0,1,0,1,1}, + {-1,-1,0,-1,0,0,-1,0,2,2}, + {0,0,0,1,0,0,1,0,1,5}, + {0,1,-1,-1,-1,0,0,0,2,2}, + {1,1,0,0,-1,0,0,-1,2,0}, + {0,-1,0,0,-1,0,0,0,1,1}, + {-1,1,0,1,-1,0,0,0,2,4}, + {1,1,0,1,1,0,0,0,2,1}, + {0,1,-1,0,0,0,-1,-1,2,2}, + {0,-1,-1,1,0,0,1,0,2,5}, + {1,0,0,0,0,0,1,0,1,3}, + {0,0,-1,1,0,0,1,1,2,1}, + {0,1,1,-1,0,1,0,0,2,0}, + {0,1,0,0,1,0,0,0,1,3}, + {0,1,0,0,1,0,0,0,1,2}, + {0,0,0,0,0,0,1,0,0,1}, + {0,-1,0,0,0,1,1,-1,2,7}, + {0,0,0,0,0,0,1,0,0,4}, + {1,1,0,0,0,0,1,-1,2,5}, + {0,1,1,0,1,-1,0,0,2,0}, + {-1,0,-1,1,0,1,0,0,2,3}, + {0,0,-1,0,0,1,0,0,1,1}, + {0,0,0,1,-1,-1,1,0,2,7}, + {0,0,0,-1,1,1,-1,0,2,4}, + {1,0,0,0,0,0,0,-1,1,4}, + {1,0,0,0,0,0,-1,0,1,2}, + {-1,-1,0,-1,0,0,1,0,2,3}, + {0,1,-1,-1,-1,0,0,0,2,6}, + {-1,0,0,0,1,-1,-1,0,2,5}, + {-1,0,0,-1,0,0,1,1,2,3}, + {0,0,-1,0,0,0,0,0,0,3}, + {0,0,0,-1,0,-1,-1,1,2,0}, + {-1,0,0,0,1,1,-1,0,2,5}, + {0,1,-1,0,0,0,-1,-1,2,3}, + {0,-1,1,1,1,0,0,0,2,4}, + {1,0,0,0,0,0,0,1,1,1}, + {-1,-1,1,0,0,0,0,-1,2,4}, + {0,1,0,0,0,0,1,0,1,6}, + {0,0,1,0,0,1,0,0,1,1}, + {0,0,0,1,0,1,0,0,1,2}, + {0,0,1,1,1,0,0,1,2,5}, + {0,-1,-1,1,-1,0,0,0,2,0}, + {-1,-1,1,0,0,1,0,0,2,3}, + {0,0,0,1,0,0,1,0,1,1}, + {0,0,0,1,0,1,0,0,1,7}, + {-1,0,0,0,0,1,-1,-1,2,7}, + {0,0,0,1,1,-1,-1,0,2,6}, + {0,-1,0,0,-1,0,0,0,1,0}, + {0,0,1,0,-1,0,-1,-1,2,0}, + {0,1,-1,-1,-1,0,0,0,2,7}, + {0,0,0,1,0,0,0,0,0,6}, + {1,0,0,0,1,0,1,-1,2,0}, + {0,0,0,1,0,0,-1,0,1,3}, + {0,-1,0,0,-1,0,-1,-1,2,7}, + {-1,0,-1,1,0,-1,0,0,2,5}, + {-1,0,-1,1,0,0,-1,0,2,4}, + {0,0,-1,0,1,0,1,1,2,6}, + {-1,0,0,0,0,-1,0,0,1,4}, + {0,0,0,-1,0,0,1,0,1,2}, + {-1,0,0,0,0,-1,1,1,2,2}, + {0,-1,1,1,0,0,-1,0,2,2}, + {0,0,-1,1,0,0,-1,-1,2,6}, + {0,-1,0,0,-1,-1,0,-1,2,4}, + {0,0,0,1,-1,-1,1,0,2,0}, + {0,0,-1,0,1,-1,-1,0,2,0}, + {0,0,0,-1,0,1,0,0,1,1}, + {-1,0,0,0,0,0,0,1,1,6}, + {0,0,0,1,0,0,0,0,0,7}, + {0,0,0,-1,0,0,0,1,1,4}, + {0,0,-1,0,0,-1,0,0,1,0}, + {0,-1,1,0,0,0,-1,-1,2,7}, + {0,-1,0,0,0,0,0,1,1,0}, + {0,0,0,-1,0,0,-1,0,1,1}, + {1,0,0,0,0,0,0,-1,1,7}, + {-1,1,0,1,0,0,1,0,2,4}, + {0,1,-1,0,-1,0,0,1,2,2}, + {0,0,1,0,0,1,0,0,1,4}, + {0,-1,1,0,0,0,1,1,2,0}, + {1,-1,0,-1,0,0,1,0,2,6}, + {0,1,0,0,0,0,0,-1,1,5}, + {-1,-1,0,-1,0,1,0,0,2,0}, + {-1,0,0,0,-1,0,-1,-1,2,4}, + {1,0,0,0,0,0,0,-1,1,0}, + {0,0,0,-1,0,0,-1,0,1,4}, + {0,-1,0,0,-1,-1,0,-1,2,7}, + {-1,0,-1,-1,0,-1,0,0,2,6}, + {1,1,0,1,-1,0,0,0,2,3}, + {-1,-1,1,0,0,0,1,0,2,6}, + {-1,0,0,-1,1,1,0,0,2,2}, + {0,0,1,0,0,0,1,0,1,4}, + {-1,1,1,0,0,0,-1,0,2,1}, + {0,0,0,-1,0,0,0,-1,1,3}, + {0,0,1,1,0,0,1,-1,2,4}, + {0,0,-1,0,1,1,0,1,2,1}, + {-1,0,0,0,0,0,0,-1,1,5}, + {0,0,1,0,1,1,-1,0,2,5}, + {-1,1,0,0,0,0,-1,-1,2,2}, + {0,1,0,0,1,-1,0,-1,2,5}, + {0,0,1,0,-1,0,-1,-1,2,4}, + {1,0,0,0,0,-1,0,0,1,1}, + {-1,1,1,0,0,0,1,0,2,5}, + {0,0,1,0,1,1,0,1,2,1}, + {0,-1,0,0,-1,0,-1,-1,2,1}, + {0,0,1,1,1,-1,0,0,2,3}, + {-1,0,0,1,-1,1,0,0,2,5}, + {-1,1,1,0,0,0,0,-1,2,2}, + {-1,0,0,-1,0,1,1,0,2,1}, + {-1,0,0,0,0,-1,1,1,2,5}, + {0,0,-1,-1,1,-1,0,0,2,1}, + {1,-1,-1,0,0,0,0,-1,2,1}, + {0,0,-1,0,-1,0,-1,-1,2,3}, + {0,0,-1,0,-1,0,-1,1,2,7}, + {-1,-1,0,0,1,-1,0,0,2,2}, + {0,0,0,1,0,0,1,0,1,6}, + {0,0,1,0,0,0,0,1,1,5}, + {-1,0,-1,1,0,1,0,0,2,2}, + {0,0,1,0,0,0,0,-1,1,6}, + {-1,0,-1,1,0,-1,0,0,2,1}, + {-1,-1,1,0,0,0,1,0,2,7}, + {0,0,-1,0,0,0,1,0,1,6}, + {0,0,1,0,-1,-1,1,0,2,7}, + {0,1,0,0,0,0,-1,0,1,0}, + {0,0,-1,1,0,0,1,1,2,2}, + {0,1,0,0,-1,0,0,0,1,1}, + {-1,0,0,0,0,-1,0,0,1,2}, + {0,0,0,-1,0,1,0,0,1,0}, + {-1,0,0,1,0,0,1,-1,2,6}, + {-1,0,0,0,-1,0,0,0,1,6}, + {1,-1,-1,0,0,0,0,1,2,1}, + {1,0,0,-1,0,0,-1,1,2,2}, + {-1,0,0,1,0,0,-1,1,2,0}, + {1,0,0,1,0,1,1,0,2,2}, + {0,0,-1,0,0,0,0,1,1,6}, + {-1,0,-1,1,0,0,0,-1,2,1}, + {-1,0,0,0,0,0,0,0,0,1}, + {1,0,0,0,1,0,0,0,1,5}, + {0,0,0,-1,-1,0,0,0,1,5}, + {0,1,1,0,1,-1,0,0,2,5}, + {0,0,-1,0,0,0,0,1,1,7}, + {-1,0,0,0,0,1,0,0,1,3}, + {1,0,0,0,0,-1,0,0,1,4}, + {0,1,0,0,0,0,0,1,1,7}, + {0,1,0,0,-1,0,0,0,1,4}, + {-1,0,-1,1,-1,0,0,0,2,7}, + {0,0,1,-1,0,0,-1,-1,2,3}, + {1,0,0,-1,0,0,-1,1,2,1}, + {0,-1,0,0,1,0,1,-1,2,3}, + {1,0,0,-1,0,0,-1,1,2,3}, + {0,-1,-1,1,0,0,0,-1,2,6}, + {0,0,-1,1,-1,0,0,1,2,2}, + {0,0,-1,0,0,-1,0,0,1,1}, + {0,0,0,-1,-1,-1,0,-1,2,1}, + {1,-1,-1,0,0,0,-1,0,2,5}, + {1,0,0,0,-1,0,0,0,1,2}, + {-1,0,0,1,0,1,-1,0,2,0}, + {0,1,1,0,0,0,1,-1,2,4}, + {1,0,1,-1,0,-1,0,0,2,4}, + {-1,0,0,1,1,0,0,1,2,3}, + {0,-1,-1,0,1,-1,0,0,2,5}, + {0,-1,-1,0,0,-1,1,0,2,4}, + {0,0,1,0,-1,0,0,0,1,5}, + {0,0,-1,0,1,0,1,-1,2,2}, + {1,0,0,-1,-1,0,0,-1,2,5}, + {-1,1,0,1,0,0,-1,0,2,5}, + {-1,0,0,0,0,-1,1,1,2,0}, + {0,1,0,0,0,0,0,0,0,0}, + {-1,0,0,0,0,0,0,-1,1,7}, + {1,1,0,0,0,0,1,-1,2,6}, + {0,1,0,0,1,-1,-1,0,2,3}, + {-1,0,0,0,0,1,-1,-1,2,4}, + {1,0,1,-1,0,0,0,1,2,0}, + {0,-1,0,0,0,0,-1,0,1,7}, + {0,0,1,0,-1,1,0,1,2,2}, + {1,0,0,0,0,0,0,1,1,3}, + {0,-1,-1,1,-1,0,0,0,2,1}, + {1,1,-1,0,0,0,0,1,2,2}, + {1,0,1,-1,0,-1,0,0,2,2}, + {1,1,0,1,0,0,-1,0,2,4}, + {0,-1,0,0,1,1,0,1,2,6}, + {1,-1,-1,0,1,0,0,0,2,7}, + {0,-1,0,0,-1,-1,1,0,2,7}, + {-1,-1,0,0,-1,1,0,0,2,2}, + {0,0,0,1,0,0,0,-1,1,0}, + {1,0,0,0,-1,-1,0,-1,2,5}, + {0,0,-1,-1,1,0,0,1,2,2}, + {0,0,1,0,0,0,-1,0,1,2}, + {-1,0,-1,-1,0,-1,0,0,2,5}, + {0,0,-1,-1,0,-1,1,0,2,3}, + {0,0,1,0,0,1,-1,-1,2,0}, + {0,0,1,1,-1,0,0,-1,2,2}, + {0,0,0,-1,0,0,0,-1,1,2}, + {1,0,0,0,0,1,0,0,1,4}, + {0,-1,-1,1,0,0,0,1,2,5}, + {-1,0,0,1,1,-1,0,0,2,0}, + {0,-1,0,0,0,1,0,0,1,4}, + {0,0,-1,0,1,1,-1,0,2,6}, + {1,-1,0,-1,-1,0,0,0,2,4}, + {0,-1,0,0,-1,0,-1,1,2,5}, + {1,0,0,-1,0,0,-1,1,2,6}, + {0,-1,-1,1,-1,0,0,0,2,6}, + {0,1,0,0,0,1,0,0,1,6}, + {0,1,0,0,-1,-1,0,-1,2,6}, + {1,-1,-1,0,-1,0,0,0,2,4}, + {1,0,0,0,-1,0,0,0,1,7}, + {0,-1,-1,0,0,-1,1,0,2,3}, + {0,1,0,0,0,1,1,-1,2,7}, + {0,-1,0,0,-1,0,-1,1,2,3}, + {0,0,1,0,0,0,0,1,1,4}, + {0,0,-1,0,1,0,1,1,2,3}, + {0,0,0,1,-1,0,0,0,1,1}, + {0,1,0,0,0,-1,0,0,1,6}, + {0,0,1,0,-1,0,-1,1,2,7}, + {-1,-1,0,-1,0,0,-1,0,2,0}, + {0,0,0,1,-1,0,0,0,1,7}, + {0,0,-1,0,0,0,1,0,1,4}, + {1,-1,-1,0,0,0,0,1,2,3}, + {1,0,0,0,0,-1,0,0,1,6}, + {-1,-1,0,0,1,-1,0,0,2,3}, + {0,-1,1,1,-1,0,0,0,2,7}, + {0,0,-1,0,1,0,0,0,1,3}, + {-1,0,0,0,0,0,-1,0,1,7}, + {-1,0,-1,1,0,0,0,1,2,1}, + {-1,-1,0,0,-1,1,0,0,2,1}, + {-1,0,-1,1,0,0,-1,0,2,7}, + {0,0,0,1,1,1,0,1,2,7}, + {0,0,0,-1,1,1,-1,0,2,6}, + {0,0,1,-1,0,0,1,1,2,4}, + {0,0,1,0,1,-1,0,-1,2,0}, + {-1,0,0,-1,-1,-1,0,0,2,3}, + {0,1,0,0,0,-1,0,0,1,4}, + {0,1,0,0,-1,0,0,0,1,2}, + {0,0,0,0,0,0,-1,0,0,5}, + {0,1,0,0,0,0,0,0,0,5}, + {0,0,1,0,0,0,-1,0,1,6}, + {1,0,0,0,1,-1,0,-1,2,0}, + {0,-1,0,0,0,0,0,-1,1,1}, + {-1,-1,1,0,0,1,0,0,2,4}, + {0,1,0,0,0,-1,0,0,1,0}, + {-1,1,0,1,0,0,0,1,2,5}, + {0,0,0,-1,1,1,0,1,2,0}, + {0,0,1,0,-1,0,0,0,1,2}, + {0,0,0,-1,1,-1,0,-1,2,7}, + {0,0,1,0,0,0,-1,0,1,7}, + {-1,1,1,0,0,0,0,-1,2,7}, + {0,1,0,0,0,1,0,0,1,0}, + {1,1,0,1,0,0,1,0,2,7}, + {1,1,0,1,0,0,0,-1,2,0}, + {0,1,0,0,0,-1,0,0,1,1}, + {1,-1,0,0,0,0,1,1,2,7}, + {-1,0,0,0,1,0,0,0,1,1}, + {0,0,-1,0,0,1,0,0,1,4}, + {1,0,0,1,0,0,1,1,2,5}, + {-1,0,0,-1,1,1,0,0,2,6}, + {-1,0,0,0,0,-1,0,0,1,3}, + {-1,0,0,1,0,1,-1,0,2,5}, + {-1,0,0,0,1,0,1,1,2,0}, + {-1,0,0,-1,0,0,-1,-1,2,6}, + {0,0,0,1,0,1,0,0,1,6}, + {0,1,-1,0,0,1,1,0,2,1}, + {0,-1,0,0,0,1,0,0,1,1}, + {0,0,1,0,1,0,1,-1,2,7}, + {0,0,1,-1,1,0,0,-1,2,0}, + {0,0,-1,0,0,0,1,0,1,7}, + {0,1,-1,0,1,0,0,-1,2,6}, + {-1,1,0,0,0,-1,-1,0,2,7}, + {0,-1,0,0,1,1,0,1,2,3}, + {0,0,0,-1,0,0,0,1,1,0}, + {0,0,0,-1,-1,0,0,0,1,3}, + {0,0,0,1,-1,0,0,0,1,6}, + {1,0,1,1,-1,0,0,0,2,4}, + {1,0,0,0,-1,0,0,0,1,5}, + {0,0,1,1,1,-1,0,0,2,0}, + {0,1,0,0,1,1,0,1,2,0}, + {0,0,0,-1,0,0,0,1,1,7}, + {0,1,1,-1,-1,0,0,0,2,6}, + {0,-1,0,0,0,0,-1,0,1,0}, + {0,0,1,0,1,0,0,0,1,7}, + {0,0,0,1,1,-1,-1,0,2,5}, + {0,0,0,-1,1,0,0,0,1,5}, + {0,-1,-1,0,-1,0,0,-1,2,1}, + {-1,0,0,1,0,-1,1,0,2,1}, + {0,0,0,-1,0,0,0,0,0,3}, + {1,0,0,0,1,0,0,0,1,6}, + {0,1,0,0,0,0,1,0,1,7}, + {0,0,1,0,0,-1,-1,1,2,6}, + {0,-1,0,0,0,-1,-1,1,2,5}, + {0,1,0,0,-1,0,0,0,1,5}, + {0,0,0,1,1,-1,0,-1,2,1}, + {0,-1,0,0,0,0,1,0,1,0}, + {1,0,1,-1,0,0,-1,0,2,6}, + {0,-1,0,0,1,0,0,0,1,7}, + {0,-1,0,0,1,0,0,0,1,5}, + {-1,1,1,0,0,0,-1,0,2,0}, + {0,0,-1,0,0,0,0,-1,1,0}, + {1,0,0,0,0,0,1,0,1,4}, + {0,0,-1,-1,-1,0,0,-1,2,5}, + {0,0,1,-1,1,0,0,-1,2,7}, + {-1,0,0,0,1,0,1,-1,2,1}, + {0,0,0,1,-1,1,0,1,2,3}, + {-1,-1,0,0,0,0,-1,1,2,7}, + {-1,-1,1,0,0,1,0,0,2,2}, + {-1,-1,0,-1,0,-1,0,0,2,0}, + {0,0,-1,0,0,1,0,0,1,6}, + {0,1,0,0,-1,0,0,0,1,6}, + {-1,0,0,0,0,0,0,-1,1,0}, + {0,0,-1,-1,0,0,-1,1,2,6}, + {0,1,1,0,0,0,1,-1,2,6}, + {0,0,0,-1,0,0,1,0,1,3}, + {1,0,0,0,0,0,0,-1,1,2}, + {1,1,0,1,0,0,1,0,2,5}, + {1,-1,-1,0,0,0,-1,0,2,6}, + {1,-1,0,-1,0,-1,0,0,2,3}, + {0,0,1,1,0,-1,1,0,2,6}, + {0,0,1,0,0,0,0,1,1,0}, + {0,0,1,1,0,-1,1,0,2,7}, + {0,-1,-1,0,0,0,1,-1,2,2}, + {-1,0,0,1,0,0,-1,1,2,4}, + {0,-1,0,0,1,0,0,0,1,0}, + {0,0,0,-1,0,0,1,0,1,4}, + {0,0,0,1,0,-1,0,0,1,6}, + {-1,1,0,0,0,0,-1,-1,2,7}, + {-1,0,0,0,0,0,0,-1,1,2}, + {0,0,-1,1,-1,0,0,1,2,4}, + {0,0,1,0,0,-1,0,0,1,7}, + {0,0,1,0,0,-1,0,0,1,0}, + {0,0,0,-1,0,0,1,0,1,6}, + {1,0,0,0,1,-1,-1,0,2,4}, + {-1,0,0,-1,1,1,0,0,2,1}, + {1,1,-1,0,0,0,0,-1,2,6}, + {0,1,0,0,1,0,1,1,2,2}, + {0,0,-1,1,1,0,0,-1,2,0}, + {1,0,1,-1,0,-1,0,0,2,5}, + {0,0,1,0,0,0,0,0,0,0}, + {0,0,1,-1,1,1,0,0,2,0}, + {0,0,1,0,0,-1,1,1,2,2}, + {1,0,0,0,0,1,1,-1,2,0}, + {0,1,0,0,-1,0,0,0,1,3}, + {0,0,0,0,-1,0,0,0,0,3}, + {0,0,0,1,0,0,0,0,0,3}, + {1,0,0,0,0,0,0,1,1,5}, + {-1,0,0,-1,0,-1,-1,0,2,7}, + {0,0,1,0,0,0,1,0,1,6}, + {1,-1,-1,0,0,0,0,-1,2,0}, + {-1,1,0,1,0,1,0,0,2,6}, + {1,1,0,0,0,1,-1,0,2,6}, + {0,0,0,1,0,0,-1,0,1,4}, + {0,0,-1,0,-1,1,1,0,2,3}, + {0,0,1,1,1,0,0,1,2,7}, + {1,0,0,1,0,0,1,1,2,2}, + {0,-1,0,0,1,0,0,0,1,3}, + {0,-1,1,0,0,0,1,1,2,7}, + {0,-1,0,0,0,0,-1,0,1,3}, + {0,0,1,0,0,0,-1,0,1,0}, + {0,0,1,0,0,-1,0,0,1,2}, + {-1,0,0,0,1,-1,-1,0,2,7}, + {-1,0,0,0,1,0,1,1,2,7}, + {1,0,0,-1,-1,1,0,0,2,6}, + {0,0,0,1,0,0,-1,0,1,1}, + {-1,1,0,0,-1,-1,0,0,2,7}, + {0,-1,0,0,1,0,0,0,1,6}, + {0,1,0,0,0,0,0,1,1,1}, + {0,0,0,1,0,1,1,-1,2,4}, + {0,0,-1,0,0,1,0,0,1,2}, + {0,-1,1,0,-1,0,0,1,2,5}, + {0,-1,-1,1,0,0,1,0,2,3}, + {1,0,0,0,0,0,0,0,0,4}, + {0,0,0,0,0,0,-1,0,0,1}, + {0,0,1,-1,1,0,0,-1,2,5}, + {0,0,-1,0,0,0,0,0,0,0}, + {0,0,-1,0,1,0,1,1,2,0}, + {1,0,0,1,1,1,0,0,2,0}, + {0,0,-1,-1,0,-1,1,0,2,0}, + {0,0,0,-1,-1,1,1,0,2,7}, + {0,-1,1,1,0,0,-1,0,2,4}, + {0,0,1,0,0,0,0,1,1,7}, + {0,-1,0,0,0,0,0,0,0,2}, + {1,-1,0,0,1,1,0,0,2,3}, + {0,0,-1,0,0,-1,0,0,1,4}, + {0,-1,1,0,0,-1,-1,0,2,6}, + {-1,1,0,0,0,1,1,0,2,3}, + {1,0,0,0,-1,0,0,0,1,1}, + {0,0,1,0,-1,0,0,0,1,4}, + {0,1,-1,0,0,1,1,0,2,6}, + {0,0,-1,0,-1,1,0,1,2,5}, + {-1,1,1,0,-1,0,0,0,2,1}, + {0,0,1,0,0,-1,0,0,1,3}, + {1,0,0,0,0,0,1,0,1,1}, + {-1,0,-1,1,1,0,0,0,2,7}, + {-1,1,1,0,0,-1,0,0,2,0}, + {0,1,1,0,0,0,-1,1,2,5}, + {1,0,1,-1,0,0,-1,0,2,4}, + {-1,1,0,1,1,0,0,0,2,2}, + {0,0,0,-1,0,0,0,-1,1,0}, + {0,-1,0,0,0,0,0,0,0,0}, + {0,0,0,1,0,-1,0,0,1,4}, + {0,0,1,1,0,1,-1,0,2,5}, + {0,1,0,0,-1,0,-1,1,2,3}, + {0,-1,0,0,1,0,0,0,1,1}, + {0,0,-1,0,1,0,0,0,1,6}, + {0,1,0,0,0,-1,0,0,1,2}, + {0,0,1,0,0,0,-1,0,1,5}, + {0,0,0,1,1,-1,-1,0,2,4}, + {-1,-1,0,0,-1,0,0,-1,2,6}, + {0,0,-1,0,1,0,0,0,1,7}, + {0,0,0,1,1,-1,-1,0,2,3}, + {1,0,0,1,1,0,0,-1,2,6}, + {1,0,0,0,0,0,0,-1,1,6}, + {-1,0,0,0,1,1,0,1,2,7}, + {0,0,0,1,0,-1,0,0,1,0}, + {1,0,0,0,0,1,0,0,1,1}, + {0,-1,0,0,1,0,0,0,1,4}, + {0,0,0,-1,0,0,0,1,1,5}, + {0,-1,0,0,0,0,0,-1,1,5}, + {1,0,1,1,0,-1,0,0,2,6}, + {0,0,0,1,-1,1,1,0,2,7}, + {0,0,0,1,1,0,1,-1,2,5}, + {1,0,0,0,0,0,1,0,1,0}, + {0,0,-1,0,1,0,0,0,1,0}, + {0,1,0,0,0,0,0,0,0,3}, + {0,0,1,0,0,0,0,1,1,3}, + {-1,0,0,0,1,0,0,0,1,0}, + {0,1,0,0,-1,-1,0,-1,2,0}, + {1,0,1,-1,-1,0,0,0,2,6}, + {1,-1,0,0,0,0,1,1,2,0}, + {-1,-1,0,0,-1,0,0,-1,2,2}, + {0,0,-1,0,1,0,0,0,1,1}, + {0,0,1,0,1,0,1,1,2,1}, + {-1,0,0,0,0,0,-1,0,1,5}, + {0,1,1,-1,0,0,0,1,2,6}, + {1,0,1,-1,0,1,0,0,2,3}, + {0,-1,-1,0,0,0,-1,1,2,2}, + {0,-1,0,0,0,0,1,0,1,6}, + {0,0,-1,0,0,0,0,0,0,2}, + {0,1,-1,0,-1,-1,0,0,2,1}, + {0,0,-1,0,1,0,0,0,1,2}, + {0,0,-1,-1,1,0,0,1,2,5}, + {0,0,0,-1,-1,0,0,0,1,2}, + {0,0,1,0,-1,1,1,0,2,0}, + {0,0,1,0,0,0,0,0,0,7}, + {0,0,0,-1,1,0,1,-1,2,3}, + {1,1,0,0,0,0,-1,1,2,0}, + {0,-1,0,0,0,0,-1,0,1,1}, + {0,-1,1,0,0,0,1,1,2,3}, + {0,0,-1,0,1,-1,-1,0,2,6}, + {1,0,0,0,-1,1,0,1,2,4}, + {0,0,1,0,-1,0,0,0,1,3}, + {0,-1,1,0,-1,0,0,1,2,2}, + {0,0,1,-1,0,0,-1,-1,2,0}, + {0,0,1,-1,-1,0,0,1,2,6}, + {1,0,0,0,0,0,1,0,1,7}, + {0,0,-1,-1,-1,0,0,-1,2,3}, + {0,0,0,-1,0,1,0,0,1,6}, + {0,1,0,0,0,1,-1,-1,2,0}, + {-1,0,0,-1,0,-1,-1,0,2,4}, + {-1,0,0,0,1,0,0,0,1,2}, + {0,0,0,-1,0,0,1,0,1,1}, + {0,0,0,1,-1,0,0,0,1,3}, + {0,0,1,0,0,0,0,0,0,1}, + {1,0,0,0,0,0,0,0,0,5}, + {0,0,-1,-1,1,-1,0,0,2,4}, + {-1,1,1,0,0,0,0,-1,2,5}, + {1,0,0,0,1,0,1,1,2,3}, + {-1,0,0,0,0,-1,0,0,1,1}, + {0,0,0,1,1,1,0,1,2,6}, + {-1,0,0,0,0,0,0,0,0,5}, + {-1,-1,0,0,1,0,0,1,2,6}, + {-1,1,0,1,0,0,1,0,2,7}, + {0,0,1,0,0,0,0,1,1,6}, + {0,0,-1,0,1,-1,0,-1,2,1}, + {-1,1,1,0,0,0,0,-1,2,1}, + {-1,0,0,-1,0,1,1,0,2,5}, + {0,1,0,0,0,0,1,0,1,0}, + {1,0,0,0,0,1,0,0,1,2}, + {-1,0,-1,-1,1,0,0,0,2,7}, + {-1,1,0,0,0,1,1,0,2,7}, + {-1,0,0,0,0,1,1,-1,2,3}, + {1,-1,-1,0,0,0,0,-1,2,6}, + {0,0,-1,-1,1,-1,0,0,2,2}, + {0,0,-1,0,0,0,0,-1,1,6}, + {0,0,0,-1,0,1,-1,-1,2,5}, + {1,1,0,0,0,0,-1,1,2,5}, + {0,-1,-1,0,1,0,0,1,2,1}, + {0,-1,0,0,0,1,-1,-1,2,0}, + {-1,0,0,0,-1,0,0,0,1,3}, + {1,-1,-1,0,0,0,0,1,2,7}, + {0,1,-1,-1,0,0,1,0,2,3}, + {0,-1,1,0,-1,0,0,1,2,6}, + {1,1,0,1,0,0,1,0,2,3}, + {0,-1,1,1,0,0,0,1,2,0}, + {1,0,0,0,0,1,0,0,1,3}, + {-1,-1,0,-1,0,0,-1,0,2,7}, + {0,1,0,0,1,0,1,-1,2,0}, + {-1,0,0,1,0,1,-1,0,2,7}, + {0,0,1,1,1,-1,0,0,2,1}, + {0,1,1,0,-1,0,0,-1,2,4}, + {0,1,0,0,1,0,0,0,1,5}, + {1,-1,0,0,0,0,1,1,2,1}, + {0,0,0,1,0,1,1,-1,2,2}, + {1,1,0,0,0,0,-1,1,2,6}, + {0,0,-1,-1,-1,1,0,0,2,5}, + {1,0,0,-1,0,-1,1,0,2,0}, + {-1,-1,0,-1,0,1,0,0,2,3}, + {0,1,-1,-1,1,0,0,0,2,2}, + {0,0,-1,-1,-1,1,0,0,2,2}, + {-1,1,0,1,0,0,-1,0,2,4}, + {0,-1,-1,0,1,0,0,1,2,4}, + {0,0,0,1,0,0,0,0,0,5}, + {-1,-1,0,0,0,0,1,-1,2,6}, + {0,1,1,0,-1,0,0,-1,2,5}, + {1,1,-1,0,0,0,-1,0,2,1}, + {1,0,0,-1,0,-1,1,0,2,1}, + {0,-1,1,1,0,0,1,0,2,0}, + {0,0,0,0,0,0,-1,0,0,3}, + {0,0,0,0,0,0,1,0,0,2}, + {1,0,0,0,-1,-1,1,0,2,3}, + {-1,-1,0,-1,0,0,1,0,2,2}, + {1,0,0,-1,1,-1,0,0,2,1}, + {1,1,-1,0,0,0,0,1,2,4}, + {1,1,0,1,0,0,0,-1,2,6}, + {-1,0,0,0,1,0,0,0,1,5}, + {0,-1,-1,0,1,0,0,1,2,5}, + {0,0,0,0,0,0,-1,0,0,0}, + {-1,-1,0,0,0,0,1,-1,2,7}, + {-1,0,0,1,0,1,-1,0,2,1}, + {0,0,0,1,1,1,-1,0,2,2}, + {0,0,1,-1,0,-1,-1,0,2,4}, + {-1,0,0,1,0,0,1,-1,2,0}, + {0,1,1,0,-1,0,0,-1,2,6}, + {0,-1,0,0,-1,0,-1,1,2,6}, + {1,0,0,-1,0,-1,1,0,2,2}, + {-1,0,0,1,0,1,-1,0,2,2}, + {1,1,0,0,0,0,-1,1,2,1}, + {0,1,0,0,0,-1,-1,1,2,3}, + {0,-1,-1,1,0,0,0,1,2,3}, + {0,0,0,-1,0,0,0,0,0,2}, + {0,-1,1,0,-1,-1,0,0,2,5}, + {-1,0,0,0,0,0,-1,0,1,1}, + {-1,0,0,1,0,1,-1,0,2,3}, + {0,0,1,1,-1,1,0,0,2,3}, + {1,1,0,0,0,0,-1,1,2,2}, + {1,0,0,-1,0,-1,1,0,2,4}, + {0,-1,-1,0,1,0,0,1,2,0}, + {-1,0,0,1,0,1,-1,0,2,4}, + {0,0,1,1,1,-1,0,0,2,6}, + {-1,1,1,0,0,0,0,1,2,5}, + {0,1,-1,0,-1,0,0,1,2,5}, + {0,0,-1,1,1,1,0,0,2,3}, + {0,1,-1,-1,0,0,0,-1,2,2}, + {0,-1,1,0,1,0,0,-1,2,5}, + {1,0,0,0,-1,0,-1,-1,2,6}, + {1,0,0,1,0,-1,-1,0,2,1}, + {0,1,-1,0,0,-1,-1,0,2,2}, + {0,-1,-1,1,0,0,0,1,2,0}, + {1,0,1,-1,-1,0,0,0,2,3}, + {0,0,1,-1,-1,-1,0,0,2,4}, + {0,1,-1,0,0,0,-1,-1,2,4}, + {0,1,-1,-1,0,1,0,0,2,2}, + {1,0,1,1,-1,0,0,0,2,2}, + {0,1,-1,0,-1,0,0,1,2,6}, + {0,0,-1,1,1,1,0,0,2,4}, + {1,-1,0,0,1,0,0,-1,2,5}, + {0,-1,1,0,1,0,0,-1,2,6}, + {0,1,-1,-1,0,0,0,1,2,2}, + {0,0,-1,0,0,0,0,-1,1,7}, + {1,0,0,1,0,-1,-1,0,2,2}, + {0,0,0,-1,0,1,-1,-1,2,1}, + {0,0,0,1,1,0,0,0,1,0}, + {-1,0,0,1,1,-1,0,0,2,1}, + {0,0,1,-1,-1,-1,0,0,2,5}, + {-1,0,-1,-1,0,1,0,0,2,2}, + {0,0,-1,1,1,1,0,0,2,5}, + {0,-1,1,0,1,0,0,-1,2,7}, + {0,-1,0,0,0,-1,0,0,1,4}, + {-1,1,0,0,0,0,-1,-1,2,1}, + {1,0,0,1,0,-1,-1,0,2,3}, + {0,0,-1,1,-1,-1,0,0,2,1}, + {0,1,0,0,0,1,-1,-1,2,4}, + {-1,0,-1,1,0,1,0,0,2,5}, + {1,0,0,0,0,-1,0,0,1,5}, + {0,-1,-1,1,0,0,0,1,2,6}, + {1,-1,0,0,0,0,1,1,2,2}, + {-1,-1,0,0,1,-1,0,0,2,1}, + {0,0,-1,-1,0,-1,1,0,2,7}, + {0,1,1,0,1,0,0,1,2,5}, + {-1,0,0,-1,0,0,-1,-1,2,4}, + {-1,0,0,-1,0,1,1,0,2,4}, + {1,1,-1,0,-1,0,0,0,2,2}, + {1,0,0,1,1,1,0,0,2,7}, + {1,0,0,1,0,-1,-1,0,2,4}, + {0,0,1,-1,-1,-1,0,0,2,7}, + {-1,0,0,-1,0,1,1,0,2,0}, + {0,1,-1,0,-1,0,0,1,2,1}, + {1,-1,0,0,0,0,1,1,2,3}, + {0,-1,1,1,0,0,1,0,2,4}, + {0,0,-1,0,1,0,0,0,1,4}, + {0,-1,1,0,1,0,0,-1,2,1}, + {-1,1,0,0,0,0,-1,-1,2,3}, + {-1,0,0,-1,-1,0,0,1,2,5}, + {0,1,0,0,1,0,0,0,1,7}, + {0,0,1,1,0,-1,1,0,2,1}, + {-1,0,0,0,-1,0,0,0,1,0}, + {1,0,0,1,0,-1,-1,0,2,5}, + {0,0,1,0,-1,0,-1,1,2,6}, + {1,-1,0,0,0,0,1,1,2,4}, + {-1,-1,1,0,0,0,-1,0,2,4}, + {0,1,-1,0,0,0,1,1,2,1}, + {0,0,-1,0,0,-1,-1,1,2,1}, + {-1,0,0,-1,0,1,1,0,2,6}, + {-1,1,0,0,0,0,-1,-1,2,4}, + {-1,0,0,0,1,0,1,1,2,1}, + {-1,0,0,0,0,0,1,0,1,7}, + {1,0,0,1,0,-1,-1,0,2,6}, + {-1,0,-1,-1,0,0,1,0,2,2}, + {0,1,0,0,-1,0,-1,-1,2,0}, + {0,-1,-1,0,1,-1,0,0,2,7}, + {0,0,-1,0,1,0,1,-1,2,4}, + {0,0,1,-1,-1,-1,0,0,2,1}, + {0,1,-1,0,-1,0,0,1,2,3}, + {0,0,0,1,0,-1,-1,1,2,2}, + {0,0,0,0,0,1,0,0,0,5}, + {1,0,1,1,0,-1,0,0,2,0}, + {0,-1,0,0,0,-1,1,1,2,4}, + {1,-1,0,0,-1,-1,0,0,2,7}, + {0,0,-1,-1,1,0,0,1,2,7}, + {0,0,0,-1,0,1,1,-1,2,1}, + {1,-1,0,0,0,0,1,1,2,5}, + {0,0,-1,1,1,1,0,0,2,1}, + {1,-1,0,0,0,-1,-1,0,2,1}, + {0,0,1,-1,-1,-1,0,0,2,2}, + {0,0,1,0,1,1,-1,0,2,7}, + {1,-1,0,0,1,1,0,0,2,5}, + {0,0,1,-1,1,1,0,0,2,5}, + {1,-1,0,0,0,0,1,1,2,6}, + {0,1,1,-1,-1,0,0,0,2,7}, + {-1,1,0,0,0,0,-1,-1,2,6}, + {0,0,0,-1,0,1,0,0,1,2}, + {0,0,1,-1,-1,0,0,1,2,1}, + {1,0,0,1,0,-1,-1,0,2,0}, + {0,0,0,0,-1,0,0,0,0,4}, + {0,0,0,0,0,0,1,0,0,0}, + {0,-1,0,0,1,1,-1,0,2,7}, + {-1,1,0,0,1,1,0,0,2,6}, + {0,0,0,0,0,1,0,0,0,2}, + {0,0,0,0,1,0,0,0,0,4}, + {0,0,0,0,0,0,0,-1,0,6}, + {-1,-1,1,0,1,0,0,0,2,5}, + {0,-1,1,0,0,0,1,1,2,6}, + {0,0,-1,0,-1,0,-1,1,2,5}, + {0,0,0,0,-1,0,0,0,0,5}, + {0,0,0,0,0,1,0,0,0,3}, + {0,0,1,-1,0,1,1,0,2,2}, + {0,0,0,0,1,0,0,0,0,5}, + {0,0,0,0,0,0,0,-1,0,7}, + {-1,0,-1,1,0,0,0,1,2,5}, + {0,0,0,0,0,-1,0,0,0,3}, + {0,0,0,0,0,1,0,0,0,4}, + {0,0,0,0,1,0,0,0,0,6}, + {0,0,0,0,0,0,0,-1,0,0}, + {-1,0,-1,-1,1,0,0,0,2,5}, + {-1,-1,0,-1,0,0,-1,0,2,4}, + {1,-1,-1,0,0,1,0,0,2,0}, + {0,-1,0,0,-1,0,0,0,1,6}, + {0,0,0,0,0,0,-1,0,0,2}, + {0,0,0,0,0,-1,0,0,0,4}, + {1,-1,-1,0,0,-1,0,0,2,0}, + {0,0,1,-1,0,1,1,0,2,6}, + {0,0,0,0,0,0,1,0,0,3}, + {-1,0,0,0,1,1,-1,0,2,0}, + {0,1,0,0,0,-1,1,1,2,5}, + {-1,0,0,-1,1,1,0,0,2,0}, + {0,-1,-1,1,-1,0,0,0,2,2}, + {0,1,0,0,1,0,1,-1,2,5}, + {0,0,0,0,0,-1,0,0,0,5}, + {-1,0,0,0,1,-1,-1,0,2,4}, + {1,-1,-1,0,0,0,1,0,2,0}, + {0,0,0,0,-1,0,0,0,0,0}, + {0,0,0,0,0,0,0,1,0,2}, + {0,0,0,0,1,0,0,0,0,0}, + {1,0,0,1,-1,-1,0,0,2,0}, + {-1,-1,0,-1,0,0,0,-1,2,1}, + {0,0,0,0,0,0,0,-1,0,2}, + {0,0,-1,0,-1,0,-1,-1,2,7}, + {0,0,0,0,0,-1,0,0,0,6}, + {0,-1,0,0,-1,0,-1,-1,2,5}, + {0,0,0,0,0,0,1,0,0,5}, + {0,1,1,0,1,-1,0,0,2,7}, + {-1,1,0,1,0,0,-1,0,2,7}, + {0,0,0,0,0,-1,0,0,0,7}, + {0,0,0,1,0,1,-1,-1,2,0}, + {1,1,0,1,1,0,0,0,2,0}, + {0,0,0,0,-1,0,0,0,0,2}, + {1,0,1,-1,0,0,0,1,2,1}, + {-1,-1,0,0,0,0,1,-1,2,5}, + {0,0,1,1,1,0,0,1,2,4}, + {-1,0,0,-1,1,1,0,0,2,3}, + {0,0,-1,0,0,0,0,0,0,4}, + {0,0,-1,1,1,1,0,0,2,6}, + {0,0,0,0,0,0,0,1,0,4}, + {0,0,0,0,0,1,0,0,0,0}, + {0,0,0,0,0,0,0,-1,0,4}, + {0,0,-1,-1,0,-1,1,0,2,1}, + {0,0,0,0,0,0,-1,0,0,6}, + {0,1,0,0,0,0,0,0,0,4}, + {0,0,0,0,0,-1,0,0,0,0}, + {-1,0,0,0,-1,1,0,1,2,3}, + {0,0,0,0,0,0,0,1,0,5}, + {1,0,0,-1,1,-1,0,0,2,4}, + {0,0,0,0,0,0,1,0,0,7}, + {0,0,0,0,1,0,0,0,0,3}, + {1,0,0,-1,-1,1,0,0,2,2}, + {0,0,0,0,0,0,0,-1,0,5}, + {0,0,0,1,1,1,0,1,2,3}, + {-1,-1,0,-1,0,0,-1,0,2,1}, + {0,0,0,0,0,0,-1,0,0,7}, + {0,0,0,0,0,-1,0,0,0,1}, + {-1,1,0,0,0,0,1,1,2,7}, + {1,1,0,1,0,1,0,0,2,1}, + {1,0,1,1,0,-1,0,0,2,3}, + {-1,0,0,-1,0,-1,-1,0,2,1}, + {-1,0,0,0,0,0,0,-1,1,4}, + {-1,1,0,0,0,0,1,1,2,0}, + {1,-1,0,0,0,0,-1,-1,2,0}, + {0,-1,-1,0,-1,1,0,0,2,6}, + {-1,0,0,-1,0,-1,-1,0,2,2}, + {1,0,1,-1,0,0,1,0,2,5}, + {1,0,0,1,0,1,1,0,2,5}, + {-1,-1,0,0,-1,0,0,-1,2,5}, + {1,0,0,1,0,1,1,0,2,3}, + {0,1,-1,0,1,0,0,-1,2,7}, + {1,-1,0,0,0,0,-1,-1,2,1}, + {-1,0,0,0,-1,-1,1,0,2,3}, + {0,1,0,0,1,0,1,1,2,1}, + {-1,0,0,-1,0,-1,-1,0,2,3}, + {0,0,0,1,-1,1,1,0,2,6}, + {1,0,0,0,0,0,0,-1,1,5}, + {-1,1,0,0,0,0,1,1,2,2}, + {-1,-1,1,0,0,0,-1,0,2,6}, + {0,0,0,1,-1,-1,0,-1,2,1}, + {0,0,0,-1,1,1,0,1,2,6}, + {0,0,0,0,0,0,0,1,0,7}, + {0,1,-1,0,1,0,0,-1,2,0}, + {0,0,0,0,0,1,0,0,0,7}, + {-1,0,0,0,0,0,0,0,0,4}, + {-1,-1,0,0,1,0,0,1,2,0}, + {1,-1,0,0,0,0,-1,-1,2,2}, + {0,0,-1,1,-1,-1,0,0,2,6}, + {0,1,0,0,0,-1,-1,1,2,6}, + {0,0,1,0,1,0,0,0,1,0}, + {0,-1,1,0,-1,0,0,1,2,1}, + {1,1,0,0,1,-1,0,0,2,0}, + {-1,1,0,0,0,0,1,1,2,3}, + {0,0,1,-1,1,1,0,0,2,7}, + {0,1,-1,0,1,0,0,-1,2,1}, + {0,0,1,1,0,-1,1,0,2,4}, + {0,0,1,1,0,1,-1,0,2,0}, + {-1,1,0,0,1,0,0,-1,2,0}, + {0,0,0,0,0,0,0,-1,0,3}, + {1,-1,0,0,0,0,-1,-1,2,3}, + {0,0,1,-1,0,0,1,1,2,5}, + {0,0,0,-1,1,-1,-1,0,2,2}, + {-1,0,0,-1,0,-1,-1,0,2,5}, + {-1,0,0,-1,0,0,-1,-1,2,1}, + {-1,1,0,0,0,0,1,1,2,4}, + {1,0,0,1,0,1,1,0,2,6}, + {0,1,-1,0,1,0,0,-1,2,2}, + {1,0,0,1,0,-1,-1,0,2,7}, + {1,-1,0,0,0,0,-1,-1,2,4}, + {0,0,-1,1,0,1,1,0,2,4}, + {0,0,1,-1,-1,0,0,1,2,5}, + {0,1,1,-1,0,0,0,-1,2,7}, + {-1,0,0,-1,0,-1,-1,0,2,6}, + {0,-1,1,1,0,0,0,1,2,5}, + {0,1,0,0,-1,0,-1,-1,2,6}, + {0,0,-1,1,-1,-1,0,0,2,0}, + {0,-1,1,0,-1,0,0,1,2,3}, + {0,1,0,0,1,1,-1,0,2,1}, + {-1,1,0,0,0,0,1,1,2,5}, + {0,0,1,0,1,-1,-1,0,2,0}, + {1,-1,0,0,0,-1,-1,0,2,3}, + {0,1,-1,0,1,0,0,-1,2,3}, + {1,0,0,-1,1,-1,0,0,2,6}, + {1,-1,0,0,0,0,-1,-1,2,5}, + {0,1,1,-1,0,0,0,-1,2,2}, + {0,0,-1,0,0,-1,-1,1,2,4}, + {0,-1,1,0,-1,0,0,1,2,4}, + {1,0,1,1,1,0,0,0,2,1}, + {-1,1,0,0,0,0,1,1,2,6}, + {0,1,0,0,0,0,1,0,1,2}, + {0,-1,1,0,0,0,1,1,2,1}, + {1,0,0,1,0,1,1,0,2,0}, + {1,1,0,0,-1,1,0,0,2,7}, + {1,-1,0,0,0,0,-1,-1,2,6}, + {-1,-1,1,0,0,-1,0,0,2,7}, + {-1,0,0,-1,0,-1,-1,0,2,0}, + {0,0,-1,1,-1,-1,0,0,2,2}, + {0,0,1,0,0,-1,1,1,2,0}, + {0,-1,1,0,0,0,-1,-1,2,6}, + {-1,1,0,0,0,1,1,0,2,1}, + {1,0,1,-1,0,1,0,0,2,0}, + {1,0,1,-1,0,1,0,0,2,4}, + {0,1,-1,-1,1,0,0,0,2,6}, + {0,0,-1,1,0,-1,-1,0,2,6}, + {1,-1,0,-1,0,0,0,-1,2,5}, + {-1,1,1,0,0,0,0,1,2,1}, + {0,0,0,-1,-1,-1,1,0,2,1}, + {1,0,1,-1,0,1,0,0,2,5}, + {0,1,0,0,1,0,1,-1,2,4}, + {-1,1,1,0,0,0,0,1,2,2}, + {1,1,0,1,0,0,1,0,2,4}, + {1,0,1,-1,0,1,0,0,2,6}, + {-1,0,0,0,1,-1,-1,0,2,6}, + {0,0,0,-1,1,0,0,0,1,6}, + {0,-1,1,1,-1,0,0,0,2,0}, + {-1,1,1,0,0,0,0,1,2,3}, + {1,0,1,-1,0,1,0,0,2,7}, + {0,1,-1,-1,1,0,0,0,2,1}, + {-1,-1,0,-1,0,0,-1,0,2,5}, + {-1,0,-1,1,0,-1,0,0,2,7}, + {1,0,0,0,1,1,-1,0,2,2}, + {1,0,1,1,-1,0,0,0,2,7}, + {-1,1,1,0,0,0,1,0,2,2}, + {0,-1,0,0,0,0,0,-1,1,3}, + {0,-1,1,1,-1,0,0,0,2,1}, + {1,1,0,1,0,0,1,0,2,6}, + {0,0,1,0,0,1,-1,-1,2,2}, + {0,1,1,0,1,0,0,1,2,3}, + {1,-1,-1,0,0,0,0,-1,2,4}, + {0,-1,1,1,-1,0,0,0,2,2}, + {0,1,1,0,0,0,1,-1,2,3}, + {0,1,-1,-1,1,0,0,0,2,3}, + {1,-1,-1,0,0,0,0,-1,2,5}, + {-1,0,0,0,1,0,1,1,2,2}, + {0,-1,1,1,-1,0,0,0,2,3}, + {0,0,-1,1,0,1,1,0,2,1}, + {-1,1,1,0,0,0,0,1,2,6}, + {1,1,0,1,0,0,1,0,2,0}, + {1,0,1,-1,0,1,0,0,2,2}, + {0,0,0,1,0,0,-1,0,1,5}, + {0,0,0,-1,0,0,0,0,0,5}, + {0,-1,1,1,-1,0,0,0,2,4}, + {1,1,0,1,0,0,1,0,2,1}, + {0,1,-1,-1,1,0,0,0,2,5}, + {0,1,1,-1,-1,0,0,0,2,2}, + {-1,0,-1,-1,0,1,0,0,2,0}, + {0,-1,-1,1,1,0,0,0,2,2}, + {-1,1,0,0,1,0,0,-1,2,4}, + {0,1,0,0,1,0,1,1,2,7}, + {0,1,1,0,0,1,-1,0,2,4}, + {0,1,1,-1,-1,0,0,0,2,3}, + {1,-1,0,-1,1,0,0,0,2,0}, + {1,1,-1,0,0,0,0,1,2,5}, + {1,-1,0,-1,0,0,1,0,2,7}, + {-1,0,-1,-1,0,1,0,0,2,1}, + {0,1,0,0,1,0,1,-1,2,3}, + {0,-1,1,0,1,1,0,0,2,7}, + {0,-1,-1,1,1,0,0,0,2,3}, + {1,-1,0,0,0,-1,-1,0,2,7}, + {-1,-1,1,0,0,0,0,-1,2,5}, + {1,-1,0,0,1,0,0,-1,2,1}, + {0,0,0,-1,1,1,0,1,2,5}, + {1,1,-1,0,0,0,0,1,2,6}, + {1,-1,0,-1,0,0,1,0,2,0}, + {-1,1,0,1,0,0,-1,0,2,0}, + {0,0,-1,-1,0,-1,1,0,2,4}, + {1,0,1,1,0,-1,0,0,2,2}, + {0,1,1,-1,-1,0,0,0,2,5}, + {0,0,1,1,1,-1,0,0,2,7}, + {1,1,-1,0,0,0,0,1,2,7}, + {0,0,1,-1,0,-1,-1,0,2,2}, + {1,-1,0,-1,0,0,1,0,2,1}, + {-1,0,-1,-1,0,1,0,0,2,3}, + {0,0,0,-1,1,0,0,0,1,4}, + {-1,-1,1,0,0,0,0,-1,2,7}, + {0,-1,-1,0,-1,0,0,-1,2,0}, + {0,1,-1,0,0,0,-1,-1,2,0}, + {-1,1,0,1,0,0,-1,0,2,1}, + {1,1,-1,0,0,0,0,1,2,0}, + {1,-1,0,-1,0,0,1,0,2,2}, + {0,-1,-1,1,1,0,0,0,2,6}, + {0,1,-1,0,0,0,-1,-1,2,7}, + {-1,0,0,0,1,-1,0,-1,2,1}, + {0,0,0,-1,0,0,1,0,1,7}, + {-1,-1,1,0,0,0,0,-1,2,0}, + {1,0,0,0,1,-1,-1,0,2,1}, + {-1,1,0,1,0,0,-1,0,2,2}, + {0,0,0,-1,-1,-1,1,0,2,5}, + {0,0,0,1,-1,1,0,1,2,7}, + {0,-1,1,0,0,-1,-1,0,2,5}, + {0,-1,-1,0,0,0,1,-1,2,1}, + {1,1,-1,0,0,0,0,1,2,1}, + {0,-1,-1,0,0,0,1,-1,2,5}, + {0,0,0,1,-1,1,0,1,2,5}, + {-1,0,-1,-1,0,1,0,0,2,5}, + {0,0,-1,-1,1,0,0,1,2,0}, + {1,1,-1,0,0,1,0,0,2,4}, + {-1,0,-1,-1,0,-1,0,0,2,3}, + {0,-1,-1,1,1,0,0,0,2,7}, + {0,0,0,-1,1,0,1,1,2,1}, + {1,1,-1,0,0,0,1,0,2,0}, + {1,0,0,0,1,1,-1,0,2,1}, + {1,-1,0,-1,0,0,1,0,2,4}, + {-1,0,-1,-1,0,1,0,0,2,6}, + {1,0,0,-1,0,1,-1,0,2,7}, + {0,0,0,1,1,1,-1,0,2,3}, + {0,-1,1,1,0,0,0,-1,2,4}, + {0,0,1,0,-1,0,-1,1,2,0}, + {0,0,1,-1,1,0,0,-1,2,4}, + {-1,-1,1,0,0,0,0,-1,2,2}, + {0,0,0,-1,0,1,1,-1,2,5}, + {1,1,-1,0,0,0,0,1,2,3}, + {0,0,-1,0,1,0,1,1,2,7}, + {1,-1,0,-1,0,0,1,0,2,5}, + {-1,0,-1,-1,0,1,0,0,2,7}, + {1,0,1,1,0,-1,0,0,2,7}, + {0,0,0,1,0,1,1,-1,2,3}, + {-1,-1,0,0,0,0,1,-1,2,0}, + {0,0,0,-1,-1,-1,1,0,2,4}, + {0,-1,0,0,0,-1,1,1,2,0}, + {0,0,-1,-1,-1,1,0,0,2,3}, + {0,0,-1,0,-1,1,0,1,2,6}, + {0,0,0,-1,0,-1,0,0,1,4}, + {0,-1,-1,0,1,-1,0,0,2,1}, + {0,-1,0,0,1,0,1,1,2,0}, + {0,0,-1,0,-1,0,-1,1,2,4}, + {0,1,-1,0,1,1,0,0,2,6}, + {0,0,1,0,1,-1,0,-1,2,6}, + {1,0,1,-1,0,0,-1,0,2,1}, + {0,-1,-1,1,0,0,0,1,2,7}, + {1,0,0,0,0,-1,-1,1,2,2}, + {-1,1,0,0,0,1,1,0,2,0}, + {-1,1,0,0,1,1,0,0,2,0}, + {0,0,0,1,1,1,-1,0,2,5}, + {1,0,0,0,-1,1,1,0,2,4}, + {1,0,1,-1,-1,0,0,0,2,0}, + {1,0,0,-1,0,0,1,-1,2,5}, + {0,0,1,0,1,-1,0,-1,2,7}, + {0,0,1,0,1,-1,0,-1,2,1}, + {0,1,0,0,-1,0,-1,-1,2,1}, + {0,0,-1,-1,0,1,-1,0,2,0}, + {0,0,0,1,1,1,-1,0,2,6}, + {0,1,0,0,-1,0,-1,-1,2,2}, + {0,0,-1,0,0,-1,-1,1,2,6}, + {0,-1,0,0,0,0,0,-1,1,7}, + {1,0,0,0,0,-1,-1,1,2,4}, + {-1,0,0,-1,-1,0,0,1,2,0}, + {0,0,0,1,0,-1,1,1,2,2}, + {-1,1,1,0,0,0,1,0,2,4}, + {0,0,-1,0,1,-1,0,-1,2,3}, + {0,0,-1,0,-1,1,0,1,2,1}, + {0,0,0,1,1,-1,-1,0,2,7}, + {-1,-1,0,0,0,-1,1,0,2,1}, + {1,1,0,1,0,0,0,1,2,7}, + {-1,0,0,0,0,1,1,-1,2,5}, + {-1,0,0,0,0,1,1,-1,2,7}, + {0,1,-1,-1,0,0,-1,0,2,7}, + {0,0,1,-1,0,0,-1,-1,2,4}, + {0,0,0,1,1,0,0,0,1,5}, + {0,1,0,0,-1,0,-1,-1,2,3}, + {1,0,0,0,0,-1,-1,1,2,5}, + {0,0,0,-1,-1,-1,1,0,2,0}, + {0,0,1,0,-1,-1,1,0,2,1}, + {-1,1,0,1,-1,0,0,0,2,0}, + {0,-1,0,0,1,0,1,1,2,4}, + {0,0,1,0,1,-1,0,-1,2,2}, + {0,1,0,0,-1,0,-1,-1,2,4}, + {1,1,0,0,-1,0,0,-1,2,7}, + {1,0,0,0,0,-1,-1,1,2,6}, + {0,0,-1,0,-1,1,0,1,2,3}, + {0,-1,0,0,1,0,1,1,2,5}, + {0,0,0,-1,-1,-1,0,-1,2,3}, + {0,0,-1,0,0,0,0,0,0,6}, + {0,0,0,1,1,1,-1,0,2,1}, + {1,1,-1,0,1,0,0,0,2,5}, + {0,0,1,0,1,-1,0,-1,2,3}, + {0,1,0,0,-1,0,-1,-1,2,5}, + {-1,0,-1,1,0,0,-1,0,2,1}, + {0,0,0,-1,-1,-1,1,0,2,2}, + {-1,0,0,0,0,1,1,-1,2,0}, + {0,0,0,-1,1,0,0,0,1,7}, + {-1,0,-1,1,1,0,0,0,2,0}, + {0,0,0,1,0,1,-1,-1,2,6}, + {0,1,1,0,1,-1,0,0,2,4}, + {1,0,0,0,0,0,-1,0,1,4}, + {0,0,1,0,1,-1,0,-1,2,4}, + {0,0,0,-1,-1,-1,1,0,2,3}, + {0,0,1,0,0,-1,1,1,2,1}, + {-1,-1,1,0,0,0,1,0,2,5}, + {-1,0,0,0,0,-1,0,0,1,7}, + {-1,0,0,0,0,1,1,-1,2,1}, + {0,0,1,0,1,-1,0,-1,2,5}, + {0,1,0,0,1,0,0,0,1,1}, + {-1,1,1,0,0,0,0,1,2,0}, + {0,-1,1,0,0,1,1,0,2,1}, + {-1,1,0,0,1,1,0,0,2,3}, + {1,0,0,1,1,0,0,-1,2,5}, + {0,0,0,-1,0,1,0,0,1,3}, + {0,0,1,-1,0,0,-1,-1,2,7}, + {0,1,-1,0,0,-1,-1,0,2,1}, + {1,0,0,1,-1,-1,0,0,2,2}, + {1,-1,0,0,-1,-1,0,0,2,3}, + {1,1,-1,0,0,-1,0,0,2,7}, + {1,1,0,0,0,-1,1,0,2,2}, + {-1,0,0,-1,-1,0,0,1,2,6}, + {0,0,-1,1,0,0,1,1,2,0}, + {0,-1,0,0,0,1,0,0,1,6}, + {0,0,-1,0,0,-1,0,0,1,6}, + {0,-1,1,0,0,1,1,0,2,2}, + {-1,1,0,0,1,1,0,0,2,4}, + {0,-1,-1,1,0,0,1,0,2,6}, + {-1,0,0,-1,1,0,0,-1,2,2}, + {-1,0,0,-1,-1,0,0,1,2,7}, + {0,1,1,-1,0,1,0,0,2,5}, + {0,0,0,-1,0,0,0,-1,1,6}, + {0,0,0,-1,1,-1,-1,0,2,0}, + {0,-1,1,0,0,1,1,0,2,3}, + {0,0,-1,-1,0,0,1,-1,2,7}, + {0,1,0,0,0,-1,1,1,2,1}, + {-1,1,0,0,1,1,0,0,2,5}, + {0,0,0,0,-1,0,0,0,0,6}, + {0,0,1,0,-1,0,0,0,1,6}, + {1,0,0,1,1,0,0,-1,2,7}, + {0,1,-1,0,0,-1,-1,0,2,3}, + {0,0,1,1,0,0,1,-1,2,1}, + {0,0,1,-1,0,0,-1,-1,2,2}, + {0,1,-1,0,0,-1,-1,0,2,4}, + {1,-1,0,0,-1,-1,0,0,2,6}, + {0,-1,0,0,1,1,0,1,2,5}, + {1,-1,0,-1,0,0,-1,0,2,0}, + {0,-1,1,0,0,1,1,0,2,5}, + {1,0,0,0,0,1,-1,-1,2,1}, + {0,-1,0,0,0,-1,-1,1,2,4}, + {0,1,0,0,-1,-1,0,-1,2,3}, + {-1,1,0,0,1,1,0,0,2,7}, + {0,0,0,1,0,0,0,0,0,4}, + {1,0,0,1,1,0,0,-1,2,1}, + {1,0,0,0,0,1,1,-1,2,4}, + {-1,1,1,0,0,0,0,-1,2,0}, + {-1,0,0,-1,-1,0,0,1,2,2}, + {0,0,-1,1,0,0,1,1,2,4}, + {-1,-1,0,-1,-1,0,0,0,2,4}, + {0,-1,1,0,1,0,0,-1,2,4}, + {1,0,0,1,1,0,0,-1,2,2}, + {-1,1,1,0,1,0,0,0,2,2}, + {0,0,1,0,0,1,1,-1,2,3}, + {0,1,-1,0,0,-1,-1,0,2,6}, + {0,1,0,0,0,0,0,0,0,7}, + {0,0,0,1,-1,1,0,1,2,4}, + {-1,0,0,-1,-1,0,0,1,2,3}, + {0,0,-1,-1,-1,0,0,-1,2,1}, + {0,1,-1,0,1,1,0,0,2,0}, + {0,0,-1,-1,0,0,-1,1,2,3}, + {0,0,-1,1,0,0,1,1,2,5}, + {0,-1,1,0,0,1,1,0,2,7}, + {0,0,1,0,1,1,0,1,2,2}, + {0,0,1,0,0,0,0,-1,1,5}, + {0,0,1,-1,0,0,-1,-1,2,5}, + {0,1,-1,0,0,-1,-1,0,2,7}, + {0,0,-1,1,0,-1,-1,0,2,4}, + {-1,0,0,-1,-1,0,0,1,2,4}, + {0,-1,0,0,0,0,0,0,0,6}, + {0,0,-1,-1,0,-1,1,0,2,5}, + {1,0,0,0,0,0,1,0,1,6}, + {0,0,-1,1,0,0,1,1,2,6}, + {0,0,-1,0,1,1,0,1,2,7}, + {0,0,0,1,-1,1,0,1,2,6}, + {-1,1,0,0,1,1,0,0,2,2}, + {1,0,0,1,1,0,0,-1,2,4}, + {0,0,1,-1,0,0,-1,-1,2,6}, + {0,1,-1,0,0,-1,-1,0,2,0}, + {-1,-1,0,-1,0,-1,0,0,2,6}, + {-1,0,0,0,0,-1,1,1,2,6}, + {1,0,0,0,0,1,-1,-1,2,6}, + {0,0,1,0,0,0,1,0,1,0}, + {1,0,0,0,-1,1,1,0,2,0}, + {0,0,0,1,1,0,1,-1,2,2}, + {0,-1,1,0,-1,-1,0,0,2,3}, + {-1,0,0,0,-1,-1,1,0,2,4}, + {0,0,-1,0,-1,-1,0,-1,2,2}, + {-1,0,0,0,0,1,0,0,1,7}, + {1,0,0,1,-1,-1,0,0,2,4}, + {-1,0,0,0,0,-1,1,1,2,7}, + {1,-1,0,0,-1,0,0,1,2,6}, + {-1,0,0,0,1,-1,-1,0,2,3}, + {0,0,1,0,1,1,0,1,2,3}, + {0,0,0,1,1,1,-1,0,2,7}, + {1,0,0,0,0,1,-1,-1,2,7}, + {0,0,0,-1,1,1,0,1,2,2}, + {0,0,-1,0,0,1,0,0,1,7}, + {0,0,0,-1,1,-1,-1,0,2,1}, + {-1,-1,0,0,0,1,-1,0,2,2}, + {0,0,-1,1,1,0,0,-1,2,1}, + {-1,-1,0,-1,0,0,0,-1,2,5}, + {1,0,0,-1,-1,1,0,0,2,3}, + {0,0,-1,0,-1,-1,0,-1,2,3}, + {0,1,0,0,1,0,1,-1,2,6}, + {1,0,0,0,0,1,-1,-1,2,0}, + {0,1,0,0,-1,0,-1,1,2,6}, + {-1,-1,0,0,1,0,0,1,2,5}, + {0,0,-1,0,1,-1,0,-1,2,4}, + {0,0,-1,1,1,0,0,-1,2,2}, + {1,0,0,0,0,0,0,0,0,3}, + {0,0,-1,0,-1,-1,0,-1,2,4}, + {-1,1,1,0,0,1,0,0,2,0}, + {-1,0,0,0,0,-1,1,1,2,1}, + {0,0,0,1,-1,0,-1,-1,2,2}, + {0,0,0,1,-1,1,1,0,2,3}, + {-1,0,0,0,1,1,-1,0,2,3}, + {0,0,0,1,-1,0,0,0,1,5}, + {0,0,1,0,1,1,0,1,2,5}, + {1,1,0,1,0,-1,0,0,2,6}, + {-1,0,0,0,-1,0,-1,-1,2,7}, + {0,1,0,0,1,0,1,-1,2,7}, + {0,0,0,1,0,0,1,0,1,4}, + {0,0,0,-1,1,-1,-1,0,2,3}, + {0,0,-1,0,-1,-1,0,-1,2,5}, + {0,-1,0,0,-1,0,-1,1,2,7}, + {0,0,-1,-1,0,1,-1,0,2,5}, + {0,-1,0,0,0,-1,-1,1,2,6}, + {0,0,0,1,-1,1,1,0,2,4}, + {1,0,0,-1,1,0,0,1,2,0}, + {0,-1,0,0,-1,0,-1,1,2,0}, + {-1,0,0,0,0,-1,1,1,2,3}, + {1,0,0,1,-1,-1,0,0,2,3}, + {0,0,0,1,-1,1,1,0,2,5}, + {1,0,0,-1,-1,0,0,-1,2,0}, + {0,0,1,0,1,1,0,1,2,7}, + {-1,0,0,-1,0,0,-1,-1,2,5}, + {-1,1,0,1,0,1,0,0,2,0}, + {0,0,-1,0,0,-1,-1,1,2,0}, + {0,0,-1,0,-1,-1,0,-1,2,7}, + {0,0,1,0,1,1,0,1,2,0}, + {1,0,0,0,0,1,-1,-1,2,4}, + {0,0,0,1,1,1,-1,0,2,0}, + {0,0,-1,0,-1,-1,0,-1,2,0}, + {0,-1,0,0,-1,0,-1,1,2,2}, + {0,0,0,-1,1,-1,-1,0,2,7}, + {-1,0,-1,1,1,0,0,0,2,5}, + {0,0,-1,1,-1,-1,0,0,2,3}, + {-1,0,0,-1,1,1,0,0,2,4}, + {0,0,-1,0,-1,-1,0,-1,2,1}, + {-1,-1,1,0,0,-1,0,0,2,2}, + {0,1,1,0,-1,1,0,0,2,4}, + {0,0,-1,0,0,0,1,0,1,3}, + {0,0,1,-1,-1,-1,0,0,2,6}, + {-1,0,0,-1,-1,-1,0,0,2,2}, + {1,1,0,0,1,0,0,1,2,6}, + {0,-1,0,0,0,0,0,1,1,5}, + {0,0,1,0,1,0,1,1,2,6}, + {1,0,0,-1,0,0,1,-1,2,0}, + {0,0,-1,-1,0,1,-1,0,2,2}, + {0,1,1,0,-1,1,0,0,2,5}, + {-1,-1,0,-1,0,0,0,1,2,0}, + {0,0,-1,0,0,1,1,-1,2,6}, + {0,1,-1,-1,0,0,0,-1,2,4}, + {1,1,0,0,1,0,0,1,2,7}, + {0,0,-1,-1,0,1,-1,0,2,3}, + {0,0,1,1,1,-1,0,0,2,2}, + {1,0,0,-1,-1,1,0,0,2,0}, + {-1,-1,0,0,0,1,-1,0,2,1}, + {-1,0,0,1,0,0,-1,1,2,1}, + {0,-1,1,1,0,0,0,-1,2,6}, + {0,0,-1,-1,0,0,1,-1,2,3}, + {-1,1,0,1,0,1,0,0,2,7}, + {1,1,-1,0,0,0,-1,0,2,5}, + {-1,0,-1,-1,-1,0,0,0,2,1}, + {1,0,1,1,1,0,0,0,2,2}, + {0,1,1,-1,0,0,0,-1,2,4}, + {1,1,-1,0,0,0,-1,0,2,6}, + {0,-1,-1,1,0,0,0,1,2,4}, + {1,0,0,-1,-1,0,0,-1,2,4}, + {0,-1,-1,0,-1,1,0,0,2,4}, + {1,0,1,1,1,0,0,0,2,3}, + {0,1,1,-1,0,-1,0,0,2,0}, + {-1,0,0,-1,0,0,-1,-1,2,7}, + {0,1,1,-1,0,0,0,-1,2,5}, + {1,-1,0,-1,0,-1,0,0,2,1}, + {-1,0,-1,-1,-1,0,0,0,2,3}, + {0,1,0,0,0,0,-1,0,1,7}, + {-1,1,0,1,0,1,0,0,2,2}, + {0,0,-1,0,0,1,1,-1,2,0}, + {1,0,1,1,1,0,0,0,2,4}, + {0,0,0,0,1,0,0,0,0,7}, + {0,1,1,-1,0,0,0,-1,2,6}, + {1,1,-1,0,0,0,-1,0,2,0}, + {0,1,-1,-1,0,0,0,1,2,7}, + {0,-1,-1,1,0,1,0,0,2,2}, + {1,-1,0,-1,0,-1,0,0,2,2}, + {-1,0,-1,-1,-1,0,0,0,2,4}, + {-1,1,0,1,0,1,0,0,2,3}, + {1,1,0,0,-1,0,0,-1,2,3}, + {1,0,1,1,0,0,-1,0,2,0}, + {1,0,1,1,1,0,0,0,2,5}, + {-1,1,1,0,0,0,1,0,2,0}, + {-1,-1,1,0,0,0,1,0,2,4}, + {1,0,1,-1,0,0,0,-1,2,5}, + {-1,0,-1,-1,-1,0,0,0,2,5}, + {-1,1,0,1,0,1,0,0,2,4}, + {1,0,1,-1,-1,0,0,0,2,1}, + {1,0,1,1,1,0,0,0,2,6}, + {0,0,0,-1,0,-1,-1,1,2,6}, + {1,1,0,0,0,1,-1,0,2,0}, + {0,1,-1,0,0,0,1,1,2,5}, + {0,1,1,-1,0,0,0,-1,2,0}, + {1,-1,0,-1,0,-1,0,0,2,4}, + {-1,0,-1,-1,-1,0,0,0,2,6}, + {0,1,1,-1,0,0,0,-1,2,3}, + {1,0,1,1,1,0,0,0,2,7}, + {0,0,0,1,-1,1,1,0,2,2}, + {0,1,-1,-1,0,0,0,1,2,4}, + {1,-1,0,-1,0,-1,0,0,2,5}, + {1,1,0,0,0,1,-1,0,2,7}, + {0,0,1,0,0,0,1,0,1,1}, + {-1,-1,1,0,0,0,1,0,2,3}, + {0,0,-1,1,-1,-1,0,0,2,5}, + {-1,0,-1,-1,-1,0,0,0,2,0}, + {0,0,0,0,1,0,0,0,0,1}, + {0,-1,-1,1,0,0,0,1,2,2}, + {0,1,1,0,-1,1,0,0,2,6}, + {0,-1,0,0,0,-1,0,0,1,0}, + {0,0,1,1,0,-1,1,0,2,5}, + {-1,0,0,0,0,-1,0,0,1,6}, + {1,0,0,-1,0,0,1,-1,2,2}, + {1,0,1,1,-1,0,0,0,2,6}, + {0,0,-1,-1,0,1,-1,0,2,4}, + {0,-1,-1,0,1,-1,0,0,2,6}, + {0,1,0,0,1,-1,-1,0,2,6}, + {-1,-1,0,0,-1,0,0,-1,2,0}, + {0,0,1,0,0,1,-1,-1,2,7}, + {-1,-1,0,-1,0,-1,0,0,2,2}, + {-1,0,0,1,0,0,-1,1,2,2}, + {1,1,0,0,0,1,-1,0,2,3}, + {1,-1,0,-1,0,0,0,-1,2,3}, + {-1,1,0,1,0,0,-1,0,2,6}, + {0,1,1,0,1,-1,0,0,2,2}, + {1,1,0,0,-1,0,0,-1,2,4}, + {0,-1,-1,0,-1,1,0,0,2,2}, + {-1,-1,0,0,1,0,0,1,2,4}, + {0,0,1,1,0,1,-1,0,2,1}, + {0,-1,0,0,1,-1,-1,0,2,3}, + {0,1,1,0,1,-1,0,0,2,3}, + {0,0,0,1,1,0,0,0,1,6}, + {1,1,0,0,-1,0,0,-1,2,5}, + {0,-1,-1,0,0,1,-1,0,2,2}, + {1,0,0,-1,0,0,-1,1,2,7}, + {0,-1,-1,0,0,-1,1,0,2,6}, + {0,-1,-1,0,-1,1,0,0,2,3}, + {-1,0,0,1,0,0,1,-1,2,7}, + {0,0,1,1,0,1,-1,0,2,2}, + {-1,1,0,1,0,0,1,0,2,0}, + {1,-1,0,-1,0,-1,0,0,2,0}, + {1,0,0,-1,0,0,-1,1,2,0}, + {0,0,-1,-1,0,-1,1,0,2,2}, + {0,0,-1,-1,0,0,-1,1,2,5}, + {-1,0,0,1,0,0,1,-1,2,4}, + {-1,-1,0,-1,0,0,1,0,2,7}, + {0,0,1,1,0,1,-1,0,2,3}, + {0,0,0,1,0,-1,-1,1,2,0}, + {0,0,-1,1,0,0,-1,-1,2,3}, + {0,-1,-1,0,-1,1,0,0,2,5}, + {-1,-1,0,0,1,0,0,1,2,7}, + {0,0,0,1,-1,0,-1,1,2,1}, + {-1,0,0,1,0,0,1,-1,2,1}, + {-1,1,0,0,1,0,0,-1,2,6}, + {-1,1,1,0,0,0,-1,0,2,7}, + {1,0,0,0,-1,1,1,0,2,6}, + {0,1,1,0,1,-1,0,0,2,6}, + {0,-1,-1,0,-1,1,0,0,2,1}, + {0,0,0,-1,1,0,0,0,1,3}, + {0,-1,-1,0,-1,1,0,0,2,7}, + {0,1,-1,-1,0,0,1,0,2,7}, + {0,0,1,0,0,0,-1,0,1,4}, + {0,0,-1,0,0,1,0,0,1,5}, + {0,0,1,1,0,1,-1,0,2,6}, + {-1,0,-1,-1,0,0,0,1,2,7}, + {1,1,0,0,-1,0,0,-1,2,2}, + {1,0,0,-1,0,0,-1,1,2,4}, + {0,0,-1,-1,0,-1,1,0,2,6}, + {-1,0,0,-1,0,0,1,1,2,5}, + {0,0,-1,-1,0,0,1,-1,2,5}, + {0,-1,-1,0,-1,1,0,0,2,0}, + {1,0,0,0,-1,-1,1,0,2,0}, + {0,1,1,0,1,-1,0,0,2,1}, + {0,1,-1,0,-1,0,0,1,2,4}, + {0,1,0,0,0,0,0,-1,1,2}, + {1,0,0,-1,0,0,-1,1,2,5}, + {1,0,0,-1,0,1,-1,0,2,3}, + {-1,-1,0,0,1,0,0,1,2,3}, + {0,0,0,-1,0,1,-1,-1,2,3}, + {0,1,-1,0,0,0,-1,-1,2,1}, + {-1,0,0,1,0,0,1,-1,2,5}, + {0,0,0,1,0,0,0,1,1,4}, + {0,1,1,0,-1,1,0,0,2,7}, + {1,0,0,-1,0,0,1,-1,2,3}, + {-1,-1,0,0,-1,0,0,-1,2,1}, + {-1,0,0,1,0,0,-1,1,2,3}, + {1,1,0,1,0,-1,0,0,2,3}, + {-1,1,1,0,0,0,-1,0,2,2}, + {0,1,-1,-1,0,0,0,1,2,0}, + {1,1,-1,0,-1,0,0,0,2,5}, + {0,1,1,-1,0,0,1,0,2,5}, + {1,-1,-1,0,0,0,1,0,2,2}, + {0,-1,1,0,-1,-1,0,0,2,2}, + {-1,-1,0,-1,0,1,0,0,2,4}, + {0,0,0,1,0,1,-1,-1,2,5}, + {-1,0,-1,1,1,0,0,0,2,6}, + {0,0,0,1,1,0,0,0,1,1}, + {0,-1,1,1,0,0,0,-1,2,0}, + {0,0,-1,0,0,-1,0,0,1,7}, + {-1,1,1,0,0,0,-1,0,2,3}, + {1,1,0,1,0,-1,0,0,2,5}, + {1,0,0,-1,1,-1,0,0,2,2}, + {1,0,1,-1,-1,0,0,0,2,7}, + {1,0,0,0,1,-1,-1,0,2,6}, + {0,1,0,0,0,-1,-1,1,2,7}, + {0,1,-1,-1,0,0,0,1,2,1}, + {0,-1,-1,1,0,-1,0,0,2,2}, + {-1,-1,0,-1,0,1,0,0,2,5}, + {0,-1,1,1,0,0,0,-1,2,1}, + {0,1,1,0,0,0,1,-1,2,7}, + {1,-1,0,0,0,1,1,0,2,6}, + {-1,1,1,0,0,0,-1,0,2,4}, + {0,1,0,0,0,0,0,-1,1,7}, + {0,0,0,-1,1,-1,0,-1,2,2}, + {1,0,1,-1,0,0,0,-1,2,2}, + {1,-1,-1,0,0,0,1,0,2,4}, + {0,-1,0,0,0,0,0,0,0,3}, + {-1,1,1,0,0,0,-1,0,2,5}, + {-1,1,0,1,0,-1,0,0,2,4}, + {1,1,0,1,0,-1,0,0,2,7}, + {0,0,-1,-1,0,1,-1,0,2,1}, + {1,-1,-1,0,0,0,1,0,2,5}, + {-1,-1,0,-1,0,1,0,0,2,7}, + {0,-1,0,0,0,0,0,0,0,7}, + {-1,0,-1,1,1,0,0,0,2,1}, + {-1,1,1,0,0,0,-1,0,2,6}, + {-1,1,0,0,0,-1,-1,0,2,0}, + {1,1,0,1,0,-1,0,0,2,0}, + {0,0,1,0,0,1,-1,-1,2,1}, + {0,1,1,-1,1,0,0,0,2,2}, + {-1,0,-1,1,1,0,0,0,2,2}, + {0,-1,-1,0,1,0,0,1,2,6}, + {1,1,0,1,0,-1,0,0,2,1}, + {-1,1,0,1,-1,0,0,0,2,1}, + {-1,-1,0,0,-1,1,0,0,2,0}, + {0,0,0,-1,0,0,-1,0,1,6}, + {0,1,1,-1,-1,0,0,0,2,1}, + {0,0,1,0,1,1,0,1,2,4}, + {-1,-1,0,-1,0,1,0,0,2,1}, + {-1,0,0,0,-1,1,0,1,2,0}, + {-1,0,-1,1,1,0,0,0,2,3}, + {0,-1,1,1,0,0,0,-1,2,5}, + {0,1,1,0,-1,1,0,0,2,1}, + {0,1,0,0,0,-1,1,1,2,0}, + {1,0,1,-1,-1,0,0,0,2,4}, + {-1,0,0,0,0,1,1,-1,2,2}, + {0,0,-1,0,-1,0,-1,-1,2,1}, + {-1,0,-1,-1,0,0,0,-1,2,6}, + {0,1,-1,-1,0,0,0,1,2,6}, + {-1,0,-1,1,1,0,0,0,2,4}, + {0,-1,1,0,1,1,0,0,2,5}, + {1,0,0,0,0,1,0,0,1,6}, + {0,-1,0,0,1,0,1,1,2,2}, + {0,0,0,-1,1,-1,0,-1,2,0}, + {1,1,0,0,1,0,0,1,2,2}, + {1,0,0,-1,0,0,1,-1,2,4}, + {1,1,0,0,1,0,0,1,2,3}, + {-1,1,0,0,0,0,-1,-1,2,5}, + {-1,-1,0,0,-1,0,0,-1,2,3}, + {0,0,-1,-1,0,1,-1,0,2,7}, + {1,0,0,0,-1,1,1,0,2,7}, + {-1,0,0,0,1,0,1,-1,2,0}, + {1,0,0,0,-1,1,0,1,2,1}, + {0,0,1,0,-1,0,-1,1,2,4}, + {1,0,1,-1,0,0,-1,0,2,3}, + {0,0,1,-1,0,1,1,0,2,0}, + {1,1,0,1,0,0,0,1,2,1}, + {0,-1,1,0,0,-1,-1,0,2,3}, + {0,0,-1,0,-1,0,0,0,1,5}, + {0,1,0,0,0,-1,1,1,2,6}, + {0,-1,0,0,0,1,-1,-1,2,6}, + {0,0,1,0,-1,0,-1,1,2,5}, + {0,1,0,0,0,-1,1,1,2,7}, + {1,0,0,0,-1,1,1,0,2,1}, + {0,0,0,-1,1,1,0,1,2,3}, + {0,-1,0,0,0,1,-1,-1,2,7}, + {-1,0,0,0,1,-1,-1,0,2,1}, + {1,-1,-1,0,0,0,0,-1,2,3}, + {1,0,0,0,-1,1,1,0,2,2}, + {1,0,0,-1,1,-1,0,0,2,0}, + {0,0,-1,1,-1,-1,0,0,2,7}, + {0,1,1,0,0,0,-1,1,2,2}, + {0,0,-1,0,1,-1,0,-1,2,0}, + {0,0,-1,0,0,0,-1,0,1,3}, + {0,0,-1,0,1,0,1,-1,2,7}, + {0,-1,0,0,0,0,0,-1,1,2}, + {0,-1,0,0,0,1,-1,-1,2,1}, + {0,1,0,0,0,-1,1,1,2,2}, + {0,0,-1,0,1,0,1,-1,2,0}, + {0,-1,0,0,0,1,-1,-1,2,2}, + {0,0,-1,0,-1,1,1,0,2,1}, + {-1,0,-1,-1,0,0,1,0,2,6}, + {1,1,-1,0,0,1,0,0,2,3}, + {0,0,0,1,-1,-1,0,-1,2,6}, + {0,1,0,0,0,-1,1,1,2,3}, + {1,0,0,0,-1,1,1,0,2,5}, + {1,0,1,1,0,-1,0,0,2,4}, + {-1,0,0,-1,-1,-1,0,0,2,6}, + {0,0,0,1,-1,-1,0,-1,2,4}, + {0,0,1,0,-1,0,-1,1,2,2}, + {0,-1,0,0,0,1,-1,-1,2,4}, + {0,0,0,1,-1,-1,0,-1,2,0}, + {0,-1,1,0,0,-1,-1,0,2,2}, + {0,1,1,0,0,1,-1,0,2,5}, + {0,0,1,1,0,-1,1,0,2,0}, + {1,-1,0,0,1,1,0,0,2,6}, + {0,-1,1,0,0,0,-1,-1,2,4}, + {0,1,1,0,-1,1,0,0,2,2}, + {1,1,0,0,1,0,0,1,2,4}, + {1,0,0,-1,0,0,1,-1,2,6}, + {0,1,1,0,0,0,1,-1,2,0}, + {-1,1,1,0,0,-1,0,0,2,5}, + {0,1,0,0,0,0,0,1,1,2}, + {0,-1,-1,0,1,-1,0,0,2,2}, + {1,1,0,0,0,0,1,-1,2,4}, + {1,0,0,1,-1,0,0,1,2,5}, + {-1,0,0,1,0,0,-1,1,2,6}, + {-1,1,0,0,-1,0,0,1,2,4}, + {0,1,-1,0,1,1,0,0,2,2}, + {1,0,1,1,0,0,-1,0,2,7}, + {1,1,-1,0,0,-1,0,0,2,3}, + {0,0,0,0,0,0,0,1,0,6}, + {0,0,-1,-1,-1,0,0,-1,2,0}, + {1,-1,0,0,1,0,0,-1,2,4}, + {0,-1,0,0,-1,-1,0,-1,2,0}, + {1,-1,-1,0,0,0,0,-1,2,2}, + {-1,1,0,0,-1,0,0,1,2,5}, + {1,-1,0,0,-1,-1,0,0,2,0}, + {1,0,0,1,0,0,1,1,2,7}, + {0,0,-1,0,1,-1,-1,0,2,4}, + {0,-1,-1,0,0,0,-1,1,2,4}, + {0,0,-1,1,0,0,-1,-1,2,4}, + {0,0,-1,1,0,-1,-1,0,2,1}, + {0,0,1,0,0,0,-1,0,1,1}, + {1,0,0,1,0,0,1,1,2,0}, + {0,1,-1,0,1,1,0,0,2,4}, + {1,-1,0,0,1,0,0,-1,2,6}, + {-1,0,0,-1,0,0,-1,-1,2,0}, + {0,0,-1,1,0,-1,-1,0,2,2}, + {0,-1,1,0,-1,-1,0,0,2,4}, + {1,0,0,1,0,0,1,1,2,1}, + {0,0,1,0,0,1,0,0,1,5}, + {0,1,-1,0,1,1,0,0,2,5}, + {-1,1,0,1,0,0,1,0,2,1}, + {1,-1,0,0,1,0,0,-1,2,7}, + {0,0,-1,0,-1,0,-1,-1,2,0}, + {0,0,0,-1,0,1,1,-1,2,7}, + {-1,1,1,0,1,0,0,0,2,5}, + {-1,1,0,0,-1,0,0,1,2,0}, + {1,0,0,1,0,1,1,0,2,4}, + {1,1,0,0,1,-1,0,0,2,2}, + {0,0,1,-1,0,1,1,0,2,4}, + {0,1,-1,-1,0,1,0,0,2,4}, + {0,1,1,0,0,0,-1,1,2,0}, + {1,-1,0,0,1,0,0,-1,2,0}, + {0,-1,0,0,0,-1,1,1,2,1}, + {-1,0,0,-1,0,0,-1,-1,2,2}, + {0,-1,1,0,-1,-1,0,0,2,6}, + {0,0,0,-1,-1,0,-1,1,2,4}, + {0,1,-1,-1,1,0,0,0,2,7}, + {0,0,-1,-1,1,0,0,1,2,6}, + {0,0,1,-1,0,1,1,0,2,5}, + {0,0,0,1,0,0,0,1,1,2}, + {-1,0,0,-1,0,0,-1,-1,2,3}, + {0,0,-1,1,0,-1,-1,0,2,5}, + {0,0,-1,0,0,1,0,0,1,0}, + {0,-1,1,0,-1,-1,0,0,2,7}, + {-1,-1,0,0,-1,1,0,0,2,7}, + {1,1,0,0,1,0,0,1,2,1}, + {-1,1,0,0,-1,0,0,1,2,2}, + {1,0,0,1,0,0,1,1,2,4}, + {0,-1,-1,0,-1,0,0,-1,2,5}, + {0,-1,1,0,-1,-1,0,0,2,0}, + {0,1,-1,-1,0,0,-1,0,2,6}, + {-1,1,0,0,-1,0,0,1,2,6}, + {-1,0,0,0,-1,-1,1,0,2,6}, + {0,1,1,0,0,0,-1,1,2,6}, + {1,1,0,1,1,0,0,0,2,3}, + {0,1,1,-1,0,0,0,-1,2,1}, + {-1,0,0,0,1,0,0,0,1,4}, + {0,0,-1,0,1,-1,0,-1,2,7}, + {0,0,0,1,-1,1,1,0,2,1}, + {-1,1,0,0,-1,0,0,1,2,3}, + {1,0,1,1,0,0,0,1,2,4}, + {0,0,1,-1,0,1,1,0,2,7}, + {0,1,-1,0,1,1,0,0,2,1}, + {0,1,1,0,-1,1,0,0,2,3}, + {1,-1,-1,0,0,0,0,1,2,4}, + {0,0,0,-1,1,0,0,0,1,2}, + {-1,0,0,1,0,0,-1,1,2,7}, + {-1,-1,0,-1,0,0,0,-1,2,7}, + {0,0,1,1,-1,1,0,0,2,2}, + {1,-1,0,0,1,0,0,-1,2,3}, + {0,0,1,0,1,0,1,1,2,7}, + {-1,0,0,0,1,0,0,0,1,6}, + {0,1,0,0,0,1,1,-1,2,1}, + {0,0,0,1,0,1,1,-1,2,5}, + {0,0,0,1,1,0,0,0,1,4}, + {1,0,0,0,1,1,-1,0,2,3}, + {1,1,-1,0,0,-1,0,0,2,4}, + {0,0,0,-1,1,-1,0,-1,2,5}, + {0,-1,0,0,0,-1,-1,1,2,1}, + {0,0,0,-1,1,-1,0,-1,2,6}, + {0,1,1,-1,-1,0,0,0,2,4}, + {0,-1,0,0,0,-1,-1,1,2,3}, + {1,-1,0,-1,0,0,0,-1,2,1}, + {-1,0,0,0,-1,-1,1,0,2,5}, + {-1,0,-1,-1,0,0,-1,0,2,0}, + {0,-1,1,1,-1,0,0,0,2,6}, + {0,0,0,1,-1,1,0,1,2,0}, + {1,1,-1,0,0,1,0,0,2,6}, + {0,0,1,0,1,0,1,1,2,2}, + {0,0,-1,0,-1,0,-1,-1,2,2}, + {0,0,0,1,-1,1,0,1,2,1}, + {1,-1,0,-1,1,0,0,0,2,1}, + {-1,0,0,0,0,0,0,1,1,4}, + {0,1,0,0,0,1,1,-1,2,5}, + {1,0,0,0,1,1,-1,0,2,7}, + {0,0,0,-1,1,-1,0,-1,2,1}, + {-1,0,0,0,-1,-1,1,0,2,7}, + {0,0,1,0,1,0,1,1,2,5}, + {0,0,0,1,0,-1,1,1,2,1}, + {0,0,-1,0,-1,0,-1,-1,2,5}, + {0,0,-1,-1,-1,1,0,0,2,0}, + {0,1,0,0,0,1,1,-1,2,0}, + {0,0,0,-1,1,-1,0,-1,2,4}, + {-1,-1,1,0,0,1,0,0,2,1}, + {0,0,-1,1,0,0,-1,-1,2,5}, + {0,-1,0,0,0,-1,-1,1,2,0}, + {-1,0,0,0,-1,-1,1,0,2,2}, + {0,0,1,1,1,0,0,1,2,0}, + {0,1,1,0,0,0,1,-1,2,2}, + {1,1,0,0,0,1,-1,0,2,4}, + {-1,-1,0,0,0,-1,1,0,2,4}, + {0,1,0,0,1,0,0,0,1,0}, + {-1,0,0,1,-1,1,0,0,2,6}, + {1,0,0,1,0,1,1,0,2,7}, + {0,0,1,1,1,0,0,1,2,1}, + {1,0,0,0,-1,0,-1,1,2,0}, + {1,0,0,-1,1,-1,0,0,2,7}, + {0,1,1,-1,0,0,-1,0,2,5}, + {0,-1,-1,1,1,0,0,0,2,1}, + {0,-1,-1,0,0,0,-1,1,2,3}, + {1,1,0,0,0,1,-1,0,2,2}, + {-1,0,0,1,-1,1,0,0,2,7}, + {0,1,0,0,0,0,-1,0,1,1}, + {1,0,0,0,-1,0,0,0,1,0}, + {0,0,1,1,1,0,0,1,2,2}, + {0,0,1,0,1,-1,-1,0,2,4}, + {-1,0,0,0,-1,0,-1,1,2,0}, + {0,0,-1,-1,-1,0,0,-1,2,2}, + {0,1,0,0,0,0,0,1,1,5}, + {-1,-1,0,0,0,-1,1,0,2,6}, + {-1,0,0,1,-1,1,0,0,2,0}, + {-1,0,0,0,-1,0,-1,1,2,6}, + {0,0,1,1,1,0,0,1,2,3}, + {0,0,-1,0,0,0,0,1,1,0}, + {1,0,0,-1,-1,1,0,0,2,1}, + {1,1,0,1,-1,0,0,0,2,0}, + {0,0,1,0,-1,0,0,0,1,7}, + {0,1,1,0,0,0,1,-1,2,5}, + {1,-1,0,-1,0,1,0,0,2,0}, + {0,-1,-1,0,0,0,-1,1,2,5}, + {-1,0,0,1,-1,1,0,0,2,1}, + {-1,-1,0,-1,0,0,0,1,2,7}, + {0,0,-1,-1,-1,0,0,-1,2,4}, + {0,-1,-1,0,0,0,-1,1,2,6}, + {0,0,0,-1,0,0,1,0,1,0}, + {-1,0,0,1,-1,1,0,0,2,2}, + {1,0,0,-1,1,-1,0,0,2,3}, + {-1,0,0,1,-1,1,0,0,2,3}, + {0,0,1,1,1,0,0,1,2,6}, + {0,0,-1,-1,-1,0,0,-1,2,6}, + {1,1,0,0,1,0,0,1,2,5}, + {-1,-1,0,0,0,-1,1,0,2,2}, + {-1,0,0,1,-1,1,0,0,2,4}, + {0,1,1,0,0,0,1,-1,2,1}, + {0,0,1,1,-1,1,0,0,2,6}, + {1,0,0,-1,1,-1,0,0,2,5}, + {0,1,0,0,1,-1,0,-1,2,2}, + {0,-1,-1,0,0,0,-1,1,2,1}, + {0,-1,-1,1,0,1,0,0,2,5}, + {-1,-1,0,0,0,1,-1,0,2,4}, + {-1,1,0,1,0,-1,0,0,2,0}, + {0,0,1,1,-1,0,0,-1,2,0}, + {0,1,1,0,0,0,-1,1,2,3}, + {1,1,0,0,0,-1,1,0,2,5}, + {0,0,-1,-1,1,0,0,1,2,1}, + {0,1,0,0,0,0,-1,0,1,4}, + {-1,0,0,1,1,-1,0,0,2,7}, + {0,1,1,0,0,0,-1,1,2,4}, + {-1,0,-1,1,0,0,-1,0,2,5}, + {1,1,0,0,0,-1,1,0,2,7}, + {0,1,0,0,1,0,1,1,2,0}, + {0,0,-1,-1,1,0,0,1,2,3}, + {0,-1,-1,1,1,0,0,0,2,0}, + {0,1,1,0,0,0,-1,1,2,1}, + {1,-1,0,-1,0,0,1,0,2,3}, + {-1,0,0,-1,-1,0,0,1,2,1}, + {-1,-1,0,0,0,1,-1,0,2,7}, + {0,0,-1,1,0,-1,-1,0,2,3}, + {0,0,-1,-1,1,0,0,1,2,4}, + {0,-1,0,0,1,0,1,-1,2,0}, + {0,-1,-1,0,0,0,1,-1,2,6}, + {-1,-1,0,0,0,1,-1,0,2,0}, + {-1,0,0,1,1,-1,0,0,2,2}, + {0,0,1,1,-1,0,0,-1,2,4}, + {0,1,1,0,0,0,-1,1,2,7}, + {0,1,0,0,1,-1,-1,0,2,7}, + {0,-1,-1,0,0,0,1,-1,2,7}, + {-1,0,0,1,1,-1,0,0,2,3}, + {0,0,1,1,0,0,-1,1,2,5}, + {0,0,1,1,-1,0,0,-1,2,5}, + {1,0,0,-1,-1,1,0,0,2,4}, + {-1,0,0,1,1,-1,0,0,2,4}, + {1,0,1,1,-1,0,0,0,2,3}, + {0,0,-1,1,-1,0,0,1,2,7}, + {1,1,0,0,0,-1,1,0,2,3}, + {-1,-1,0,0,0,1,-1,0,2,3}, + {0,-1,1,1,0,0,0,-1,2,3}, + {0,0,1,-1,-1,0,0,1,2,4}, + {-1,0,-1,-1,1,0,0,0,2,6}, + {0,1,-1,-1,1,0,0,0,2,0}, + {0,1,-1,0,0,0,1,1,2,6}, + {-1,-1,0,-1,0,0,1,0,2,6}, + {1,-1,0,0,0,1,1,0,2,0}, + {0,-1,-1,0,0,1,-1,0,2,1}, + {0,1,1,0,0,-1,1,0,2,7}, + {0,0,0,0,0,1,0,0,0,1}, + {1,0,0,1,0,1,1,0,2,1}, + {0,0,-1,1,1,0,0,-1,2,4}, + {0,0,0,0,0,0,0,-1,0,1}, + {1,-1,0,0,0,1,1,0,2,1}, + {0,1,0,0,0,0,-1,0,1,2}, + {0,0,-1,1,1,0,0,-1,2,5}, + {0,0,0,1,0,0,-1,0,1,2}, + {0,1,-1,0,0,0,1,1,2,0}, + {1,-1,0,0,0,1,1,0,2,2}, + {0,0,-1,1,1,0,0,-1,2,6}, + {0,0,1,0,0,0,1,0,1,5}, + {0,-1,1,0,0,0,-1,-1,2,0}, + {-1,1,0,0,0,-1,-1,0,2,2}, + {-1,0,-1,1,0,0,0,-1,2,3}, + {0,0,0,-1,0,-1,0,0,1,7}, + {0,0,1,-1,-1,0,0,1,2,7}, + {0,1,0,0,-1,0,-1,1,2,5}, + {1,0,0,0,0,1,1,-1,2,3}, + {0,0,-1,1,1,0,0,-1,2,7}, + {-1,1,0,0,0,-1,-1,0,2,3}, + {1,0,0,1,-1,-1,0,0,2,5}, + {-1,1,1,0,0,0,0,1,2,7}, + {0,1,-1,0,0,0,1,1,2,2}, + {0,-1,1,0,0,0,-1,-1,2,2}, + {0,0,1,0,1,0,0,0,1,2}, + {0,1,-1,0,0,0,1,1,2,3}, + {1,0,1,-1,-1,0,0,0,2,5}, + {0,0,1,0,0,0,0,0,0,3}, + {1,-1,0,0,0,1,1,0,2,5}, + {-1,0,0,-1,1,1,0,0,2,7}, + {-1,0,-1,-1,0,0,1,0,2,3}, + {0,-1,1,0,0,0,-1,-1,2,3}, + {-1,1,0,0,0,-1,-1,0,2,5}, + {1,0,0,1,-1,-1,0,0,2,7}, + {0,-1,0,0,1,1,-1,0,2,2}, + {-1,1,0,0,0,-1,-1,0,2,6}, + {0,-1,1,0,0,0,-1,-1,2,5}, + {0,-1,0,0,-1,1,1,0,2,0}, + {1,0,0,0,0,-1,-1,1,2,0}, + {-1,-1,0,0,0,-1,1,0,2,5}, + {1,0,0,1,-1,-1,0,0,2,1}, + {1,1,0,0,0,-1,1,0,2,0}, + {0,1,-1,0,0,0,-1,-1,2,6}, + {1,0,0,1,1,1,0,0,2,3}, + {0,0,0,1,0,-1,1,1,2,7}, + {0,0,-1,0,0,-1,1,1,2,3}, + {0,0,0,-1,1,0,1,1,2,3}, + {0,0,-1,0,0,1,-1,-1,2,2}, + {1,0,0,0,0,-1,-1,1,2,1}, + {0,0,-1,1,-1,0,0,1,2,5}, + {-1,1,0,0,0,1,1,0,2,2}, + {0,0,0,-1,0,-1,0,0,1,6}, + {1,0,0,1,1,1,0,0,2,4}, + {0,-1,0,0,1,0,1,1,2,7}, + {0,0,1,-1,1,0,0,-1,2,6}, + {0,-1,0,0,0,1,0,0,1,2}, + {0,0,1,0,0,-1,0,0,1,6}, + {1,-1,0,0,0,-1,-1,0,2,2}, + {-1,0,0,-1,-1,-1,0,0,2,4}, + {0,0,0,1,0,-1,-1,1,2,4}, + {0,0,-1,1,-1,0,0,1,2,6}, + {1,-1,-1,0,0,0,-1,0,2,7}, + {1,0,0,1,1,1,0,0,2,5}, + {-1,0,0,-1,-1,-1,0,0,2,5}, + {-1,0,0,1,0,1,-1,0,2,6}, + {1,0,0,1,1,1,0,0,2,6}, + {0,-1,1,0,0,0,1,1,2,2}, + {1,0,0,0,1,1,-1,0,2,0}, + {-1,1,0,0,0,1,1,0,2,4}, + {0,0,-1,0,-1,0,0,0,1,2}, + {1,-1,0,0,0,-1,-1,0,2,4}, + {0,0,-1,1,-1,0,0,1,2,0}, + {-1,1,0,0,0,1,1,0,2,5}, + {-1,0,0,0,1,1,-1,0,2,7}, + {0,0,1,-1,1,0,0,-1,2,1}, + {0,0,1,-1,0,1,1,0,2,1}, + {1,-1,0,0,0,-1,-1,0,2,5}, + {-1,0,0,-1,-1,-1,0,0,2,7}, + {0,0,-1,1,-1,0,0,1,2,1}}; + +static const std::string S3_TABLE_VALUES[S3_TABLE_SIZE] = + {"STHSTHSSSTHSSSTWWWWWW", + "STHSTHSSSTHSSSTWWWWW", + "STHSTHSSSTHSSSTW", + "STHSTHSSSTHSSSWWWWW", + "STHSTHSSSTHSSSWWWW", + "STHSTHSSSTHSSSWWW", + "STHSTHSSSTHSSSWW", + "STHSTHSSSTHSSTWWWWWWW", + "STHSTHSSSTHSSTWWWWWW", + "STHSTHSSSTHSSTWWWWW", + "STHSTHSSSTHSSTWWW", + "STHSTHSSSTHSSTWW", + "STHSTHSSSTHSSWW", + "STHSTHSSSTHSSW", + "STHSTHSSSTHSS", + "STHSTHSSSTHSTWWWWWWW", + "STHSTHSSSTHSTWWWWWW", + "STHSTHSSSTHSTWWWW", + "STHSTHSSSTHSTWWW", + "STHSTHSSSTHST", + "STHSTHSSSTHSWWWWWWW", + "STHSTHSSSTHSWWWWWW", + "STHSTHSSSTHSWW", + "STHSTHSSSTHS", + "STHSTHSSSTHTWWWWWW", + "STHSTHSSSTHTWWWWW", + "STHSTHSSSTHTWW", + "STHSTHSSSTHT", + "STHSTHSSSTHWWWWWW", + "STHSTHSSSTHWWWWW", + "STHSTHSSSTHWWW", + "STHSTHSSSTHWW", + "STHSTHSSSTHW", + "STHSTHSSTHSSSTWWWWW", + "STHSTHSSTHSSSTWWWW", + "STHSTHSSTHSSSWWWWWW", + "STHSTHSSTHSSSWWWW", + "STHSTHSSTHSSSWW", + "STHSTHSSTHSSTWWWWWWW", + "STHSTHSSTHSSTWWWWW", + "STHSTHSSTHSSTWWW", + "STHSTHSSTHSSTWW", + "STHSTHSSTHSSSW", + "STHSTHSSTHSSWWWWWWW", + "STHSTHSSTHSSWWWWWW", + "STHSTHSSTHSSWWW", + "STHSTHSSTHSSW", + "STHSTHSSTHSTWWWWWWW", + "STHSTHSSTHSTWWWWWW", + "STHSTHSSTHSTWWWWW", + "STHSTHSSTHSTWWW", + "STHSTHSSTHST", + "STHSTHSSTHSWWWWWWW", + "STHSTHSSTHSWWWWWW", + "STHSTHSSTHSWWWWW", + "STHSTHSSTHSWWWW", + "STHSTHSSTHSW", + "STHSTHSSTHTWWWWWWW", + "STHSTHSSTHT", + "STHSTHSSTHWWWWWWW", + "STHSTHSSTHWWWW", + "STHSTHSSTHWW", + "STHSTHSSTHW", + "STHSTHSTHSSSTWWWWWWW", + "STHSTHSTHSSSTWWWWW", + "STHSTHSTHSSSTWWW", + "STHSTHSTHSSSTWW", + "STHSTHSTHSSSWWWWWWW", + "STHSTHSTHSSSWWWWW", + "STHSTHSTHSSSWWWW", + "STHSTHSTHSSSWW", + "STHSTHSTHSSS", + "STHSTHSTHSSTWWWWWWW", + "STHSTHSTHSSTWWWWWW", + "STHSTHSTHSSTWWWWW", + "STHSTHSTHSSTWW", + "STHSTHSTHSST", + "STHSTHSTHSSWWWWWWW", + "STHSTHSTHSSWWW", + "STHSTHSTHSSW", + "STHSTHSTHSS", + "STHSTHSTHSTWWWWWWW", + "STHSTHSTHSTWWWWW", + "STHSTHSTHSTWWW", + "STHSTHSTHSWWWWWW", + "STHSTHSTHSWWWW", + "STHSTHSTHTWWWWWWW", + "STHSTHSTHTWWWWWW", + "STHSTHSSSTHSST", + "STHSTHSTHTWWW", + "STHSTHSTHWWWWWW", + "STHSTHSTHWWWWW", + "STHSTHSTHWWWW", + "STHSTHSTHWWW", + "STHSTHSTHW", + "STHSTHTHSSSTWWWWWWW", + "STHSTHTHSSSTWWW", + "STHSTHTHSSSWWWWWW", + "STHSTHTHSSSWW", + "STHSTHTHSSS", + "STHSTHTHSSTWWWWWWW", + "STHSTHTHSSTWWWWW", + "STHSTHTHSSTWWW", + "STHSTHTHSST", + "STHSTHTHSSWWWWWW", + "STHSTHTHSSWWWWW", + "STHSTHTHSSWWW", + "STHSTHTHSS", + "STHSTHTHSTWWWW", + "STHSTHTHSWWWWWW", + "STHSTHTHSWWW", + "STHSTHTHSW", + "STHSTHTHTWWWWWWW", + "STHSTHTHTWWW", + "STHSTHTHTWW", + "STHSTHTHWWWWWW", + "STHSTHTHWWW", + "STHSTHTHWW", + "STHTHSSSTHSSSTWWWWWWW", + "STHTHSSSTHSSSTWWWWWW", + "STHTHSSSTHSSSTWWWWW", + "STHTHSSSTHSSSTWWW", + "STHTHSSSTHSSSTW", + "STHTHSSSTHSSSWWWWWWW", + "STHTHSSSTHSSSWWW", + "STHTHSSSTHSSSWW", + "STHTHSSSTHSSTWWWWWW", + "STHTHSSSTHSSTWWW", + "STHTHSSSTHSSTWW", + "STHTHSSSTHSSTW", + "STHTHSSSTHSSWWWW", + "STHTHSSSTHSSWWW", + "STHTHSSSTHSSWW", + "STHTHSSSTHSTWWWWWW", + "STHTHSSSTHSTWWWWW", + "STHTHSSSTHSTWWWW", + "STHTHSSSTHSTWWW", + "STHTHSSSTHSWWWWWW", + "STHTHSSSTHSWWWW", + "STHTHSSSTHSW", + "STHTHSSSTHS", + "STHTHSSSTHTWWWWWWW", + "STHTHSSSTHTWWWWWW", + "STHTHSSSTHTWWWWW", + "STHTHSSSTHTWW", + "STHTHSSSTHTW", + "STHTHSSSTHT", + "STHTHSSSTHWWWWWW", + "STHTHSSSTHWWWWW", + "STHTHSSSTHWWWW", + "STHTHSSSTHWWW", + "STHTHSSSTHWW", + "STHTHSSSTH", + "STHTHSSTHSSSTWWWWW", + "STHTHSSTHSSST", + "STHTHSSTHSSSWWWWWW", + "STHTHSSTHSSSWWWWW", + "STHTHSSTHSSSWWWW", + "STHTHSSTHSSSWW", + "STHTHSSTHSSSW", + "STHTHSSTHSSS", + "STHTHSSTHSSTWWWW", + "STHTHSSTHSSTWWW", + "STHTHSSTHSSTWW", + "STHTHSSTHSSTW", + "STHTHSSTHSST", + "STHTHSSTHSSWWWWWW", + "STHTHSSTHSSWWWWW", + "STHTHSSTHSSW", + "STHTHSSTHSS", + "STHTHSSTHSTWWWWWW", + "STHTHSSTHSTWWWWW", + "STHTHSSTHSTWWW", + "STHTHSSTHSTWW", + "STHSTHSSSTHWWWWWWW", + "STHTHSSTHSTW", + "STHTHSSTHSWWWWWWW", + "STHTHSSTHSWWWWWW", + "STHTHSSTHSWWWWW", + "STHTHSSTHSWWWW", + "STHTHSSTHSWW", + "STHTHSSTHTWWW", + "STHTHSSTHTWW", + "STHSTHSSTHSSSTW", + "STHTHSSTHT", + "STHTHSSTHWWWWWWW", + "STHTHSSTHWWWW", + "STHTHSSTHWW", + "STHTHSSTHW", + "STHTHSSTH", + "STHTHSTHSSSTWWWWWW", + "STHTHSTHSSSTWWWW", + "STHTHSTHSSSTWWW", + "STHTHSTHSSSTWW", + "STHTHSTHSSSTW", + "STHTHSTHSSSWWWWWWW", + "STHTHSTHSSSWWWWW", + "STHTHSTHSSSWWWW", + "STHTHSTHSSSW", + "STHTHSTHSSTWWWWW", + "STHTHSTHSSTWW", + "STHTHSTHSST", + "STHTHSTHSSWWW", + "STHTHSTHSSWW", + "STHTHSTHSTWWWWWWW", + "STHSTHSSTHSSST", + "STHTHSTHSTWWWW", + "STHSTHSSTHSSSTWWWWWWW", + "STHTHSTHSTWW", + "STHTHSTHST", + "STHTHSTHSWWWWWWW", + "STHTHSTHSWWW", + "STHTHSTHSWW", + "STHTHSTHS", + "STHTHSTHTWWWWWW", + "STHTHSSSTHWWWWWWW", + "STHTHSTHTWWWWW", + "STHTHSTHTWW", + "STHTHSTHWWWWWWW", + "STHTHSTHWWW", + "STHTHSTHWW", + "STHTHSTHW", + "STHTHSTHSWWWW", + "STHTHTHSSSTWWWW", + "STHTHTHSSSTWW", + "STHTHTHSSST", + "STHTHTHSSSWWWWWW", + "STHTHTHSSSWWWWW", + "STHTHTHSSSWWWW", + "STHTHTHSSSWW", + "STHTHSSSTHSSSWWWWW", + "STHTHTHSSSW", + "STHTHTHSSTWWWWWWW", + "STHTHTHSSTWWW", + "STHTHTHSSWWWWWWW", + "STHTHTHSSWWWWWW", + "STHTHTHSSWWWWW", + "STHTHTHSSWWWW", + "STHTHTHSSWW", + "STHTHTHSTWWWWWWW", + "STHTHTHSTWWWWWW", + "STHTHTHSTWWWW", + "STHTHTHSTW", + "STHTHTHSWWWWWWW", + "STHTHTHSWWWWW", + "STHTHTHSWWWW", + "STHTHTHSWWW", + "STHTHTHS", + "STHTHTHTWWWWWWW", + "STHTHTHTWWWWWW", + "STHTHTHTWWWW", + "STHTHTHTWWW", + "STHTHTHT", + "STHTHTHWWWWWWW", + "STHTHTHWWW", + "STHTHTHW", + "SHSTHSSSTHSSSTWWWWWWW", + "SHSTHSSSTHSSSTWWW", + "STHSTHTHSTWWWWWW", + "SHSTHSSSTHSSSTWW", + "SHSTHSSSTHSSSTW", + "SHSTHSSSTHSSSWWWWWWW", + "SHSTHSSSTHSSSWWWWWW", + "SHSTHSSSTHSSSWWW", + "SHSTHSSSTHSSS", + "STHSTHTHSSSWWWW", + "SHSTHSSSTHSSTWWWWWWW", + "SHSTHSSSTHSSTWWWWWW", + "SHSTHSSSTHSSTWWWWW", + "STHSTHSSTHTWWWWWW", + "SHSTHSSSTHSSTW", + "SHSTHSSSTHSST", + "STHSTHSSSTHSWWW", + "SHSTHSSSTHSSWWWWWW", + "SHSTHSSSTHSSWWWWW", + "SHSTHSSSTHSSWWW", + "STHSTHSSTHSSSWWW", + "SHSTHSSSTHSTWWWWWWW", + "SHSTHSSSTHSTWWWW", + "SHSTHSSSTHSTWWW", + "SHSTHSSSTHSWWWWWW", + "SHSTHSSSTHSWWWW", + "SHSTHSSSTHSWW", + "SHSTHSSSTHTWWWWW", + "SHSTHSSSTHTWW", + "SHSTHSSSTHSSSW", + "SHSTHSSSTHT", + "SHSTHSSSTHWWWWWWW", + "SHSTHSSSTHWWWWWW", + "SHSTHSSSTHWWWWW", + "SHSTHSSSTHWWWW", + "SHSTHSSSTHWW", + "SHSTHSSTHSSSTWWWWW", + "SHSTHSSTHSSSTWWWW", + "SHSTHSSTHSSSTWWW", + "SHSTHSSTHSSST", + "SHSTHSSTHSSSWWWWWW", + "SHSTHSSTHSSSWWWW", + "SHSTHSSTHSSSWWW", + "SHSTHSSTHSSSWW", + "SHSTHSSTHSSS", + "SHSTHSSTHSSTWWWWWW", + "SHSTHSSTHSSTWWWWW", + "STHTHSTHT", + "SHSTHSSTHSSTWWWW", + "SHSTHSSTHSSTW", + "SHSTHSSTHSSWWWWW", + "SHSTHSSTHSSWWW", + "SHSTHSSTHSSWW", + "SHSTHSSTHSSW", + "SHSTHSSTHSS", + "STHSTHSSTHSSSTWW", + "SHSTHSSTHSTWWWWWWW", + "SHSTHSSTHSTWWWWW", + "SHSTHSSTHSTWWWW", + "SHSTHSSTHSTWWW", + "SHSTHSSTHSTWW", + "SHSTHSSTHSWWWWWW", + "SHSTHSSTHSWWWWW", + "SHSTHSSTHSWW", + "STHTHSSSTHSSTWWWW", + "SHSTHSSTHSW", + "SHSTHSSTHS", + "SHSTHSSTHSSSWWWWWWW", + "SHSTHSSTHTWWWW", + "SHSTHSSTHTWWW", + "SHSTHSSTHTWW", + "SHSTHSSTHTW", + "SHSTHSSTHT", + "SHSTHSSTHWWWWWW", + "SHSTHSSTHWWWWW", + "SHSTHSSTHWWWW", + "STHSTHSSTHTW", + "SHSTHSSTHWWW", + "SHSTHSSTH", + "SHSTHSTHSSSTWWWWWW", + "SHSTHSTHSSSTWWWWW", + "SHSTHSTHSSSTWWWW", + "SHSTHSTHSSSTWW", + "SHSTHSTHSSST", + "SHSTHSTHSSSWWWWWWW", + "SHSTHSTHSSSWWWWW", + "SHSTHSTHSSSWWWW", + "STHSTHSSSTHSTWWWWW", + "SHSTHSTHSSSWWW", + "STHSTHTHWWWWW", + "SHSTHSTHSSSWW", + "SHSTHSTHSSS", + "STHSTHSSSTHSSWWWW", + "SHSTHSTHSSTWWWWWWW", + "SHSTHSTHSSTWWWWW", + "SHSTHSTHSSTWWWW", + "SHSTHSTHSSTWWW", + "SHSTHSTHSSTWW", + "SHSTHSTHSST", + "SHSTHSTHSSWWWWWWW", + "SHSTHSTHSSWWWW", + "SHSTHSTHSSWW", + "SHSTHSTHSSW", + "SHSTHSTHSS", + "SHSTHSTHSTWWWWWWW", + "SHSTHSTHSTWWW", + "STHTHSTHSSST", + "SHSTHSTHSTWW", + "SHSTHSTHSTW", + "STHSTHTHWWWWWWW", + "SHSTHSTHST", + "SHSTHSTHSWWWWWW", + "SHSTHSTHSWWWWW", + "SHSTHSTHSWWW", + "SHSTHSSSTHSSSWWWWW", + "SHSTHSTHSWW", + "SHSTHSTHS", + "STHSTHTHSSTWWWW", + "SHSTHSTHTWWWWWWW", + "STHTHTHSSTWWWW", + "SHSTHSTHTWWW", + "SHSTHSTHWWWWWWW", + "SHSTHSTHWWWW", + "SHSTHTHSSSTWWWWWWW", + "SHSTHTHSSSTWWWWW", + "SHSTHTHSSSTWWWW", + "SHSTHTHSSSWWWWWW", + "SHSTHTHSSSWWWWW", + "SHSTHTHSSSWW", + "STHTHSSSTHSSWWWWWW", + "SHSTHTHSSSW", + "SHSTHTHSSTWWWW", + "SHSTHTHSSTWWW", + "SHSTHTHSSTWW", + "SHSTHTHSST", + "SHSTHTHSSWWWWWW", + "SHSTHTHSSWWWWW", + "SHSTHTHSSWWWW", + "SHSTHTHSSWWW", + "STHTHSSTHSSWW", + "SHSTHTHSS", + "SHSTHTHSTWWW", + "SHSTHSSSTHTWWWWWWW", + "SHSTHTHSTWW", + "STHTHSTHTWWWW", + "SHSTHTHSTW", + "SHSTHTHST", + "SHSTHTHSWWWWWWW", + "SHSTHTHSWWWWWW", + "SHSTHTHSWWWWW", + "SHSTHTHSWWWW", + "SHSTHTHSWWW", + "SHSTHTHSW", + "SHSTHTHS", + "SHSTHTHTWWWWWW", + "SHSTHTHTWWWWW", + "SHSTHTHTWWWW", + "SHSTHTHTWW", + "SHSTHTHT", + "STHTHSTHSSSTWWWWW", + "SHSTHTHWWWWWW", + "SHSTHTHWWWW", + "SHTHSSSTHSSSTWWWWWW", + "SHTHSSSTHSSSTWWWWW", + "SHTHSSSTHSSSTWWW", + "SHTHSSSTHSSST", + "SHTHSSSTHSSSWWWWWW", + "SHTHSSSTHSSSWWWW", + "SHTHSSSTHSSSWWW", + "SHTHSSSTHSSSW", + "SHTHSSSTHSSS", + "SHTHSSSTHSSTWWWWWWW", + "SHTHSSSTHSSTWWWW", + "SHTHSSSTHSSTWWW", + "SHTHSSSTHSSTWW", + "SHTHSSSTHSSTW", + "SHTHSSSTHSSWWWWWW", + "SHTHSSSTHSSWW", + "SHTHSSSTHSSW", + "SHSTHSSTHSWWWW", + "SHTHSSSTHSTWWWWWWW", + "SHTHSSSTHSTWWWWWW", + "SHTHSSSTHSTWWWWW", + "SHTHSSSTHSTWWWW", + "SHSTHSSSTHSSSWWWW", + "SHTHSSSTHSTWWW", + "SHTHSSSTHST", + "SHTHSSSTHSWWWWWWW", + "SHTHSSSTHSWWWWW", + "SHTHSSSTHSWWWW", + "SHTHSSSTHSWWW", + "SHTHSSSTHSW", + "SHTHSSSTHTWWWWWWW", + "SHTHSSSTHTWWWWWW", + "SHTHSSSTHTWWWW", + "SHTHSSSTHTWWW", + "SHTHSSSTHTW", + "SHTHSSSTHT", + "SHTHSSSTHWWWWWWW", + "SHTHSSSTHWWW", + "SHTHSSSTHWW", + "SHSTHSSSTHST", + "SHTHSSSTHW", + "SHTHSSSTH", + "SHTHSSTHSSSTWWWW", + "SHTHSSTHSSSTWWW", + "SHTHSSTHSSST", + "SHTHSSTHSSSWWWWWWW", + "SHTHSSTHSSSWWWWWW", + "SHTHSSTHSSSWWWWW", + "SHTHSSTHSSSWWW", + "SHTHSSTHSSSWW", + "SHTHSSTHSSSW", + "SHTHSSTHSSTWWWWWW", + "SHTHSSTHSSTWWW", + "SHTHSSTHSSTWW", + "SHSTHSSTHTWWWWW", + "SHTHSSTHSSWWWWWWW", + "SHTHSSTHSSWWWWWW", + "SHTHSSTHSSWWWWW", + "SHTHSSTHSSWWWW", + "SHTHSSTHSSWWW", + "SHTHSSTHSSW", + "SHTHSSTHSTWWWWWW", + "SHTHSSTHSTWWWWW", + "SHTHSSTHSTWWWW", + "STHTHTHSSSTWWWWWW", + "SHTHSSTHSTWWW", + "SHTHSSTHSTWW", + "SHTHSSTHSTW", + "SHTHSSTHST", + "SHTHSSTHSWWWWWWW", + "SHTHSSTHSWWWWWW", + "SHTHSSTHSWWWWW", + "SHTHSSTHSWWWW", + "SHTHSSTHSWWW", + "SHTHSSTHSWW", + "SHTHSSTHSW", + "SHTHSSTHS", + "SHTHSSTHTWWWWW", + "SHTHSSTHTWWWW", + "SHTHSSTHTW", + "SHTHSSTHT", + "SHTHSSTHWWWWWWW", + "SHTHSSTHWWWWWW", + "SHTHSSTHWWWWW", + "SHTHSSTHWWWW", + "SHTHSSTHWWW", + "SHTHSSSTHSS", + "SHTHSSTHWW", + "SHTHSSTHW", + "SHTHSSTH", + "SHTHSTHSSSTWWWWWWW", + "SHSTHSSSTHSTWWWWW", + "SHTHSTHSSSTWWWWW", + "SHTHSTHSSSTWWWW", + "SHTHSTHSSST", + "SHTHSTHSSSWWWWWW", + "SHTHSTHSSSWWWWW", + "SHTHSTHSSSWWW", + "STHSTHSTHSWWWWW", + "SHTHSTHSSTWWWWWWW", + "SHSTHSTHSTWWWW", + "SHTHSTHSSTWWWWW", + "SHTHSTHSSTWWWW", + "SHTHSTHSSTW", + "SHTHSTHSST", + "SHTHSTHSSWWWWW", + "SHTHSTHSSWWWW", + "SHTHSTHSSWWW", + "SHTHSTHSTWWWWWWW", + "SHTHSTHSTWWWWW", + "SHTHSTHSTWWWW", + "SHSTHSTHWWWWW", + "SHTHSTHSTW", + "SHTHSTHSWWWWWW", + "SHTHSTHSWWWWW", + "SHTHSTHSW", + "SHTHSTHTWWWWWWW", + "SHTHSTHTWWWWW", + "SHTHSTHTWWWW", + "SHSTHSSSTHSWWW", + "SHTHSTHTWW", + "SHTHSTHT", + "SHTHSTHWWWWW", + "SHTHSTHWWWW", + "SHTHSTHWWW", + "STHSTHTHSSTW", + "SHTHSTHWW", + "SHTHSTHW", + "SHTHTHSSSTWWWWWWW", + "SHTHTHSSSTWWWW", + "SHTHSSSTHSST", + "SHTHTHSSSTWWW", + "SHTHTHSSSTWW", + "SHTHTHSSSTW", + "SHTHTHSSST", + "SHTHTHSSSWWWWWW", + "SHTHTHSSSWWWWW", + "SHTHSSTHSSTW", + "SHTHTHSSSWWWW", + "STHTHSSTHSSWWWW", + "SHTHTHSSSWW", + "SHTHTHSSSW", + "SHTHTHSSS", + "SHTHTHSSTWWWWWW", + "SHTHTHSSTWWWW", + "STHTHSSSTHSWWWWW", + "SHTHTHSSTWW", + "SHTHTHSSTW", + "SHTHTHSST", + "SHTHTHSSWWWWW", + "SHTHTHSSWW", + "SHTHSSSTHSSTWWWWW", + "SHTHSTHSS", + "SHTHTHSS", + "SHTHTHSTWWWWW", + "SHTHTHSTWWWW", + "SHTHTHSTWW", + "SHTHTHSTW", + "SHTHTHSWWWW", + "STHSTHTHST", + "SHTHTHSWWW", + "SHTHTHSWW", + "SHTHTHSW", + "SHTHTHTWWWWWWW", + "SHTHTHTWWWWW", + "SHTHTHTWWWW", + "SHTHTHTW", + "SHTHTHWWWWWWW", + "SHTHTHWWWWWW", + "SHTHTHWWWW", + "STHSTHSTHSW", + "SHTHTHWW", + "SHTHTHW", + "THSTHSSSTHSSSTWWWWWW", + "THSTHSSSTHSSSTWWWWW", + "THSTHSSSTHSSSTW", + "THSTHSSSTHSSST", + "THSTHSSSTHSSSWWWWWW", + "THSTHSSSTHSSSWWWWW", + "THSTHSSSTHSSSWW", + "STHSTHSTHSSWWWWW", + "THSTHSSSTHSSTWWWWWWW", + "THSTHSSSTHSSTWWWWWW", + "STHTHTHSW", + "THSTHSSSTHSSTWWW", + "THSTHSSSTHSSTWW", + "STHSTHSTHSWWW", + "THSTHSSSTHSST", + "SHSTHSSTHSSSTWWWWWWW", + "SHTHTHST", + "THSTHSSSTHSSWWWW", + "THSTHSSSTHSTWWWWWW", + "THSTHSSSTHSTWWWWW", + "THSTHSSSTHSTWW", + "THSTHSSSTHST", + "THSTHSSSTHSWWWWWWW", + "THSTHSSSTHS", + "THSTHSSSTHTWWWW", + "THSTHSSSTHTWWW", + "STHSTHSSTHSSWWWW", + "THSTHSSSTHTWW", + "STHSTHSSTHTWWW", + "THSTHSSSTHTW", + "THSTHSSSTHT", + "THSTHSSSTHWWWWWWW", + "THSTHSSSTHWWWWWW", + "STHSTHSSSTHSWWWWW", + "THSTHSSSTHSWWW", + "THSTHSSSTHWWWW", + "THSTHSSSTHWW", + "THSTHSSSTHW", + "THSTHSSSHSSSTWWWWWWW", + "STHSTHSSTHTWWWWW", + "THSTHSSSHSSSTWWWW", + "THSTHSSSHSSSTWWW", + "THSTHSSSTHSSW", + "THSTHSSSHSSSTWW", + "THSTHSSSHSSSTW", + "SHTHTHSSWWW", + "THSTHSSSHSSSWWWWWWW", + "THSTHSSSHSSSWWWWWW", + "THSTHSSSHSSSWWWWW", + "THSTHSSSHSSSWWWW", + "THSTHSSSHSSSWWW", + "THSTHSSSHSSSWW", + "THSTHSSSHSSSW", + "STHTHTHSWW", + "THSTHSSSHSSS", + "THSTHSSSHSSTWWWWWWW", + "THSTHSSSHSSTWWWWWW", + "THSTHSSSTHSS", + "THSTHSSSHSSTWWWWW", + "THSTHSSSHSSTWWWW", + "STHTHSTHSSSTWWWWWWW", + "THSTHSSSHSSTWWW", + "THSTHSSSHSSTW", + "THSTHSSSHSSWWWWWW", + "THSTHSSSHSSWW", + "STHSTHSTHSSSTWWWWWW", + "SHSTHSSSTHTW", + "THSTHSSSHSS", + "THSTHSSSHSTWWWWWWW", + "SHTHSTHSSSTWW", + "THSTHSSSHSTWWWWWW", + "STHTHSSTHTWWWWWW", + "THSTHSSSHSTWWWWW", + "THSTHSSSHSTWWWW", + "THSTHSSSHSTWWW", + "THSTHSSSHSTW", + "THSTHSSSHST", + "THSTHSSSHSWWWWWW", + "THSTHSSSHSWWWW", + "THSTHSSSHSWW", + "THSTHSSSHTWWWWWWW", + "SHSTHTHTWWWWWWW", + "THSTHSSSHTWWWWWW", + "THSTHSSSHTWWWW", + "THSTHSSSHTWW", + "SHSTHTHSTWWWW", + "THSTHSSSHWWWWWWW", + "SHSTHSTHSSTWWWWWW", + "THSTHSSSHWWWWWW", + "THSTHSSSHWWWWW", + "THSTHSSSHWW", + "THSTHSSSHW", + "THSTHSSSH", + "THSTHSSTHSSSTWWWWWWW", + "THSTHSSTHSSSTWWWWWW", + "THSTHSSTHSSSTWWWWW", + "THSTHSSTHSSSTWWWW", + "THSTHSSTHSSSTWWW", + "THSTHSSTHSSSTWW", + "THSTHSSTHSSST", + "STHSTHSSTHSWW", + "SHTHTHT", + "THSTHSSTHSSSWWWWWWW", + "THSTHSSTHSSSWWWWW", + "THSTHSSTHSSSWWWW", + "THSTHSSTHSSSW", + "THSTHSSTHSSS", + "SHTHTHSWWWWWWW", + "THSTHSSTHSSTWWWW", + "STHSTHSSTHSS", + "THSTHSSTHSSTWW", + "THSTHSSTHSSTW", + "SHSTHSTHSWWWW", + "THSTHSSTHSST", + "THSTHSSTHSSWWWWWWW", + "STHTHSTHWWWW", + "THSTHSSTHSSWWWWWW", + "STHTHTHTWW", + "THSTHSSTHSSWW", + "THSTHSSTHSS", + "THSTHSSTHSTWWWWWWW", + "THSTHSSTHSTWWWWWW", + "STHSTHSSTHSTW", + "STHTHSSSTHW", + "THSTHSSTHSTWWWWW", + "THSTHSSTHSTWWW", + "STHTHSSSTHSSTWWWWW", + "SHSTHSTHSTWWWWWW", + "THSTHSSTHSTWW", + "THSTHSSTHSTW", + "THSTHSSTHST", + "THSTHSSTHSWWWWW", + "THSTHSSTHSWW", + "THSTHSSTHSW", + "STHSTHTHSWWWWWWW", + "SHTHSTHSSSW", + "THSTHSSTHS", + "THSTHSSTHTWWWWWWW", + "THSTHSSTHTWWWWWW", + "THSTHSSTHTWWWW", + "THSTHSSTHTWWW", + "THSTHSSTHTWW", + "THSTHSSTHT", + "STHTHSTHSSTWWWW", + "THSTHSSTHWWWWW", + "THSTHSSTHWW", + "THSTHSSTH", + "THSTHSTHSSSTWWWWWWW", + "THSTHSTHSSSTWWWWWW", + "THSTHSSSTHSSSTWW", + "THSTHSTHSSSTWWWW", + "THSTHSTHSSSTWW", + "THSTHSTHSSSTW", + "THSTHSTHSSSWWWWWW", + "THSTHSTHSSSWWWWW", + "THSTHSTHSSSWWWW", + "THSTHSTHSSSWW", + "THSTHSTHSSSW", + "THSTHSTHSSS", + "THSTHSTHSSTWWWWW", + "THSTHSTHSSTWW", + "THSTHSTHSSTW", + "THSTHSTHSST", + "THSTHSTHSSWWWWWWW", + "THSTHSSSHS", + "THSTHSTHSSWWWWW", + "THSTHSTHSSWWWW", + "STHTHTHTWWWWW", + "THSTHSTHSSWW", + "THSTHSTHSSW", + "THSTHSTHSS", + "STHSTHSTHSTWWWW", + "THSTHSTHSTWWWWWW", + "THSTHSTHSTWWW", + "THSTHSTHSTWW", + "THSTHSTHSWWWWWW", + "THSTHSTHSWWWWW", + "SHTHTHSTWWW", + "THSTHSTHSWWWW", + "THSTHSTHSWWW", + "THSTHSTHSWW", + "THSTHSTHTWWWW", + "THSTHSTHTWWW", + "THSTHSTHTW", + "THSTHSTHT", + "SHTHSSSTHTWW", + "THSTHSTHWWWWWW", + "THSTHSTHWWWWW", + "THSTHSTHWWWW", + "THSTHSTHWW", + "THSTHSTH", + "THSTHSSSTHTWWWWW", + "THSTHTHSSSTWWWWWWW", + "THSTHTHSSSTWWWWWW", + "STHTHTHSSSTW", + "THSTHTHSSSTWWW", + "THSTHTHSSSTWW", + "THSTHTHSSSTW", + "THSTHTHSSSWWWWWW", + "STHTHTHWW", + "THSTHTHSSSWWWWW", + "THSTHTHSSSWW", + "THSTHTHSSS", + "THSTHTHSSTWWWWWW", + "THSTHTHSSTWW", + "THSTHTHSSTW", + "THSTHTHSST", + "THSTHTHSSWWWWWWW", + "THSTHTHSSWWWWWW", + "SHTHSSTHSSTWWWWWWW", + "THSTHTHSSWWWWW", + "THSTHTHSSWWW", + "THSTHTHSSWW", + "THSTHTHSSW", + "SHSTHSSTHSWWWWWWW", + "THSTHTHSTWWWWWWW", + "STHSTHTHSTWW", + "THSTHTHSTWWWWWW", + "THSTHTHSTWWWW", + "THSTHTHSTWW", + "THSTHTHSTW", + "THSTHTHSWWWWWWW", + "THSTHTHSWWWWW", + "THSTHTHSWWWW", + "THSTHTHSWWW", + "THSTHTHSWW", + "THSTHTHS", + "THSTHTHTWWWWWW", + "THSTHTHTWWWWW", + "THSTHTHTWWWW", + "SHTHSSTHSSSTW", + "THSTHSSSHT", + "THSTHTHTWWW", + "THSTHTHTW", + "THSTHTHWWWWWWW", + "THSTHTHWWWWWW", + "THSTHTHWWWWW", + "THSTHTHWWW", + "THSTHTHWW", + "THSTHTHW", + "THSTHTH", + "THSHSSSTHSSSTWWWWWWW", + "THSHSSSTHSSSTWWWW", + "THSHSSSTHSSSTWWW", + "SHTHSSSTHSSSWW", + "THSHSSSTHSSSTWW", + "STHSTHSTHSSSTWWWW", + "STHSTHSTHTWW", + "THSHSSSTHSSST", + "SHTHSTHWWWWWW", + "THSHSSSTHSSSWWWWWW", + "THSHSSSTHSSSWWWWW", + "HSHSTHSWWWW", + "SHTHSTHS", + "THTHSHSSTWWWWWW", + "THSHTHSSTWWWWW", + "SHSTHTHTWWW", + "HSHSTHSWWW", + "HSHSSSHSSTW", + "HSHSTHSWW", + "HSHSTH", + "HSTHSTHSSSTWWWWW", + "HSHTHSSSTWWWWWW", + "HSHTHSSSTWWWW", + "STHSTHSTHTWWWW", + "HSHTHSSSTWWW", + "SHSWWWWWW", + "SSSHSWWW", + "SHTHSSSTHSSSTW", + "HSTHSSTHSSSW", + "HSHTHSSSTWW", + "HTHSTHSSSTWWW", + "HSHTHSSSTW", + "THSHSTHSWWWW", + "THTHTHS", + "STHSTHTHSSSWWW", + "HSHTHSSSWWWW", + "SHSTHSSTHSWWW", + "SSSHSSSWWWWWW", + "HSHTHSSTWWWWWWW", + "HTHSSSTHSSWWWWW", + "SSSTHSWW", + "HSHSSTHSSSTWWWW", + "HSHTHSSTW", + "HTHT", + "HSTHTHSWWWWWW", + "THSHSSTHSTWW", + "HSHTHSSWWWW", + "THSHSSSTHSSSTWWWWWW", + "THTHSSSHWWWWWW", + "HSHTHSSWW", + "STHSTWWWWW", + "HSTHSSTHTWW", + "HSHTHSTWWWWWW", + "SHTHTHSTWWWWWW", + "HSTHSSTHTW", + "HSHTHSTWWW", + "HSTHSSSHW", + "HSHTHSTW", + "STHSTHTH", + "HSHSSTHSSSWWWWW", + "THTHSSTHWWWW", + "STHTHSTHSSTWWW", + "HSHTHSWWWWW", + "HSHSTHWWW", + "THSTWWWWW", + "HSHTHTWWWWWW", + "STHSSWWWWW", + "SHSTHTH", + "HSHTHTWWWWW", + "SSTHSSTWWW", + "HSHTHSSSWWWWW", + "SHSTHSSSTHTWWWW", + "HSHTHTW", + "STHTHSTHSSWWWWWW", + "HSHTHWWWWWW", + "HTHSSSTHWWWWW", + "HSHTHWW", + "STHSTHSSTHSSWWWWW", + "HSHTH", + "HTHTHWWW", + "SSSHSSW", + "HTHSSSTHSSSTWWWW", + "HTHSSSTHSSSTWWW", + "HSSSWWWWW", + "STHTHSSTHSW", + "HTHSSSTHSSSWWWWWWW", + "HSTHSSTHSWWW", + "SHTHSTHSWWW", + "THTHSSW", + "HTHSSSTHSSSWW", + "HTHSWWWWW", + "HTHSSSTHSSS", + "STHTHTHSS", + "THSSWWWWWWW", + "HSHSTHT", + "HSHTHS", + "HSTHSSSHSSSWWWW", + "HTHSSSTHSSTWWWW", + "HTHSSSTHSSTW", + "HTHSSSTHSSTWW", + "HSTHSSSHSSSWWW", + "THSTHSTHSSST", + "THTHSSSTHTWWWWWW", + "SHTHSSSTHWWWWWW", + "HSHTHSSTWW", + "SHSTHSTHTW", + "SSSH", + "SHSTHSSTHTWWWWWW", + "HSHTHSST", + "HTHSSSTHSSWW", + "THTHSSTHTWWWWWW", + "HTHSSSTHSTWW", + "SSHSST", + "HTHSSSTHSTW", + "HSHTHW", + "HTHSSSTHSWWWWWWW", + "HSHSSTHSSWWWW", + "THTHSTHSSWWW", + "HSTHSSTHSW", + "THSHSTHWWWWWW", + "HTHSSSTHS", + "SHSTHTHSSTWWWWWWW", + "HTHSSTHSST", + "HSHSTHSSSWW", + "THTHSHSSTWWWWWWW", + "SHTHSTHSSWWWWWW", + "THTHSSTHSSSWWW", + "HTHTHSSWWW", + "HTHSSSTH", + "HSHSSTHSSTWWWW", + "THSHSSTHSTWWWWW", + "HTHSSSTWWWW", + "HTHSSSTWW", + "SHTHTHWWWWW", + "SHTHTHWWW", + "HTHSSSTW", + "STHSTHSSTHSTWW", + "THTHSTHSSTWW", + "HTHSSST", + "THSTHSTHSSTWWWW", + "THSTHSTHWWW", + "HTHSHSSWW", + "HTHSTHSSSWWWW", + "SHSTHSTHTWWWW", + "HTHSSSHSSSTWWWWW", + "SSTHWWWWW", + "HSTHSSSTHWWWWWWW", + "HTHSSSHSSSTWWWW", + "HSHTHTWWWW", + "HTHSSTHS", + "HTHSSSHSSSTWWW", + "SHTHSSTHTWW", + "HTHSSSHTWW", + "HTHSSTWW", + "HTHSSSHSSSTW", + "HSHSTHWW", + "HTHTHTWWWWWW", + "HTHSSSHSSST", + "HTHSSSHSSSWWWWWWW", + "THSHTHSSTWW", + "HTHSSSHSSSWWWWW", + "SHSTHSTH", + "THTHSTHWWWWWWW", + "HTHSSSHSSSWWW", + "SHTHTHSSSTWWWWW", + "HTHSSSHSSS", + "HTHSSSTHWWW", + "HTHSSSHSST", + "HSHTHT", + "STHTHSTH", + "HTHSSSHSSWWWWW", + "HTHSSSHSSWWW", + "HTHSSSHSSW", + "STHTHTH", + "HTHSSSHSTWWWWWWW", + "THSHSSTHTWWWWWW", + "HTHSSSTHW", + "HTHSSSHSWWW", + "THTHSSSTHSSTWWWWW", + "HTHSSSHS", + "HSTHSTHSSS", + "HTHSSSHTW", + "HTHSSSHT", + "HSHSSSTHTWWWWWWW", + "HSHTHSSS", + "SHSTHSTHSSSWWWWWW", + "SHSTHSTHSTWWWWW", + "HTHSSSHWWWWW", + "THSHSSTHSSSTWW", + "HTHSSSHWW", + "HTHSSSWW", + "HSHSSSTHWWW", + "HTHSSTHSSSTWWWWWW", + "STHSSTWWWWWWW", + "THSTHSSSHTWWW", + "THSTHSTHSW", + "SSTHTWWW", + "HSTHSTHSSTWWWWWWW", + "THTHSSTHSTWWW", + "HTHSSSTWWW", + "SSHSTWWWWWW", + "HTHSSTHSSSTWW", + "HTHSSTHSSST", + "THSTHSTHSTWWWWW", + "HTHSSTHSSSWWWW", + "TWWWW", + "HTHSSTHSSTWWWWWW", + "THSTHTHWWWW", + "HTHSSTHSSTWWWWW", + "HTHSTHSWWW", + "SHSTHTHSWW", + "T", + "THSHSSTHTW", + "STHSTHSTHSSSWWWWWW", + "HTHSSTHSSTWWW", + "STHTHSTHTW", + "HTHSSSHWWWWWWW", + "HTHSSTHSSTW", + "HTHSSTHSSWWWWWW", + "HTHSSWWWWW", + "THTHTHSSSWWW", + "STHSTHSTHTW", + "HTHSSTHSSWWWW", + "THSHSTHSTWWWWWWW", + "HTHSSTHSSWWW", + "HTHSSSHSTWW", + "HTHSSSTHSSWWWWWWW", + "STHSTHSSTHWWW", + "HTHSSTHSSWW", + "HTHSSTHSSW", + "HTHSSTHSTWWWW", + "SHTHSTHTW", + "THSHSTHSSSTWW", + "STHTHTHTW", + "HTHSSTHST", + "THSTHTHSSSTWWWW", + "HTHTHSTWWWW", + "HTHSSSHSWWWWW", + "HSHTHWWWW", + "HTHSSTHSWWWWW", + "SSHSSSTWWWWW", + "HSWWWWWW", + "STHSTHSSSTHTWWWWWWW", + "THTHSHSSST", + "HTHSSTHSWWWW", + "HTHSSTHSWW", + "THTHSSSTHSST", + "HSHSTHTWW", + "THSTHSTHWWWWWWW", + "STHSSTWWWW", + "THSTHSSTHSWWWWWWW", + "HTHTHWWWWW", + "HTHSSTHTWWW", + "HTHSSSWWWWWWW", + "HSHSSTHSTW", + "HTHSSTHTWW", + "HSTHSSSHSTWWWW", + "THTHSWW", + "HTHSSTHT", + "SHTHSSTHSSWW", + "SHTHSTHSWWWW", + "HTHSSTHWWWWWW", + "STHSTHSSSTHSSWWWWW", + "HTHSSTHWWWWW", + "HTHSSTHWWWW", + "HTHSSTHWW", + "SWWWWWWW", + "HSTHSSSHSSSTWWWWWWW", + "THSTHSSSHSW", + "HTHSSSTHT", + "HTHSSTWWWWWWW", + "HTHSSTWWWWW", + "HTHSSTWWWW", + "SHSTHSSTHTWWWWWWW", + "SHTHSSTHSSTWWWW", + "HTHSSSTHSSST", + "STHSTHTHSSSWWWWW", + "SHTHSSSTHSWW", + "HSHTHSSSWW", + "HSTHTHSSTWW", + "HTHSSSHSWWWWWW", + "HTHSSTWWW", + "SHSTHSSSTHS", + "HSTHSSSTHSSTWWWW", + "THTHTHTWWWWW", + "STHSTHTHSSW", + "HTHSST", + "THTHSSSTHSSTW", + "THSHSSSTHWWWWW", + "HTHSSWWWWWWW", + "THSHSSTHSSWW", + "HSHSTHSSTWWWWWWW", + "THTHSTHSSSWWWW", + "HTHSTHSSSTWWWWWWW", + "THSHSTHSSSWWWWWWW", + "HTHSSTHSWWWWWWW", + "HTHSTHSSSTWWWWW", + "THSTHTHTWW", + "HSTHSSTHSTWW", + "THSHSTHSSTW", + "HSHTHSSSW", + "HTHSTWWWWW", + "HTHSSSTHSTWWWWWWW", + "HSHSTHS", + "SSSHWW", + "STHTHSSTHSTWWWWWWW", + "THSTHSSSTHSSS", + "THSHSSTHSSWWWWWW", + "HTHSTHSSTWWWWWWW", + "THTHTWWWWWW", + "HTHSSTHSSSW", + "SHTHSTHWWWWWWW", + "HTHSTHSSTWWWWWW", + "HTHSTHSSTWWWW", + "HSTHSSTHTWWWWWWW", + "SHSTHTHSTWWWWWWW", + "HTHSTHSSTWWW", + "HTHSSSHWWWWWW", + "HTWWW", + "THSHTHTWW", + "THSTHSTHSSSTWWW", + "HTHSTHSSWWWWWWW", + "THSTHSSSTHSTW", + "SSSHSSWWWWWWW", + "HTHSTHSS", + "HSHTHSWWWWWWW", + "SHSTHSSSTHSS", + "HTHSTHSTWWWWWW", + "HTHSTHSTWW", + "THSTHSSSTHSSSWWW", + "HSHSSSTHS", + "HTHSTHSTW", + "STHTHSTHSTWWWWW", + "THSHSTHW", + "HTHSTHSWWWWWWW", + "HTHSTHSWWWWW", + "HTHTWWWWWWW", + "THTHSTHSSTWWWW", + "SHTHSSSTHSWWWWWW", + "STHSWWWW", + "STHSTHTHT", + "HTHSSSTHSSTWWWWWWW", + "HTHSTHSSTW", + "SSHSSSWWWWW", + "HSHSSSHSSWWW", + "STHSTHTHSSSW", + "THSHSSSTHSSS", + "SHTHSSSTHWWWW", + "HTHSTHTWWWWWWW", + "HTHSHTW", + "SHSSSW", + "SSSWW", + "HTHSTHTW", + "HTHSHWW", + "HTHSTHWWWW", + "HTHSSSHTWWWWW", + "HSHSTHSSSTWWWWW", + "HSHTHSSTWWW", + "SSTHSW", + "THTHSSSHSSSTWWWWWW", + "SHSTHTHSSST", + "HTHSTWWWWWW", + "HTHSTWWWW", + "THTHTHWWWW", + "HTHSTWWW", + "STHTHTHSSSTWWW", + "HTHSTWW", + "HTHST", + "HTHSHSSSTWWWWWWW", + "SHTHTH", + "SSTHSTWW", + "THTHSSSTHSSW", + "SHSTHTHWW", + "THTHSTHSSSTWWWWW", + "HSTHSSTHSSSWW", + "HTHSHSSSWWWWW", + "HTHSHSSSWWW", + "HSHSSSHSW", + "THTHSTHSWWWW", + "THSHTHSSSTWWWWWW", + "HSTHSSSTHSSWWWWWW", + "THSHSSTHSSWWWWWWW", + "HTHSHSSSWW", + "HTHSHSSS", + "THTHSSTHSWWWWWWW", + "HTHSSSTHWWWWWWW", + "HTHSHSSTWWWWWWW", + "HTHSTHSTWWW", + "STHTHSTHSTW", + "HTHSHSSTWWWW", + "STHSTHTHSSSTWWWWWW", + "SSSHSTWWWW", + "SHSTHSTHSW", + "THSWWWW", + "HTHSHSSSTWWWWW", + "HSTHSTHSSTWWWWWW", + "THSTHSSSTHSSTWWWWW", + "HTHSHSSWWWWWWW", + "STHST", + "HTHSSSHST", + "SHSTHTHSSSWWWWWWW", + "IWWW", + "THTW", + "HTHSSSHSTW", + "HTHSTHSSW", + "HTHSHSS", + "HTHSSSTWWWWWWW", + "THSHSSTHSTWWW", + "HTHSSSTWWWWWW", + "THTHSSSTHSSSWWWWWWW", + "HTHSHSTWWWW", + "HSTHSSSHSSW", + "STHSTHSTHT", + "HTHSHSWWWWWWW", + "HTHSHSWWWWWW", + "SSSHSWWWWWW", + "THTHTHSWWW", + "STHSTHTHSSSTWWWW", + "HTHSHSWWW", + "HTHSTHSSSTWW", + "HTHSHSWW", + "SHTHSTHSSSWW", + "HTHSTHSSSWWW", + "SHTHSTHTWWW", + "HTHSHSW", + "HTHTHSTWWWWWWW", + "HTHWWWWW", + "HTHSHTWWWWWWW", + "STHTHTHSSTWWWWW", + "STHSSSTWWWW", + "SSHTWWWW", + "STHTHTHSSSTWWWWWWW", + "HTHTHSSW", + "HSHSTHSSS", + "HTHSHTWWWWWW", + "STHSTHSTHSSST", + "HSTHTHSSWWWWWW", + "HTHSSTW", + "HTHSHTWWWWW", + "HTHSSTHSSTWW", + "SSTHSSWWWWWWW", + "HTHSHTWWWW", + "HTHSHSSWWWWW", + "HTHSHSSTW", + "HSTHSSSTHSSWWWWW", + "HSHTHTWWWWWWW", + "HTHSHWWWWWWW", + "STHSTHSSSTHTWWWW", + "HTHSSSHSSSTWW", + "STHTHSTHSSTWWWWWWW", + "HTHSHWWWWWW", + "HTHSSTHSTW", + "HTHSHWWWWW", + "HTHSHWWWW", + "HSTHSSTHSSSTWWWWWW", + "STHTHSTHTWWWWWWW", + "HTHSSSHTWWW", + "STHSTHSTHS", + "SSWWWWWWW", + "HTHSHW", + "STHSTHSSSTHSSSW", + "HTHSH", + "HTHSWWWWWWW", + "HTHSTHSSWWWWWW", + "HSHSSSTHSTWWW", + "STHSTHTHSSSTWWWWW", + "THTHSHSSWWWWWWW", + "THTHSSTHSSWWWWWWW", + "STHTHSSTHWWWWWW", + "HSHSSSTHTWWW", + "HTHS", + "HTHSSTHWWWWWWW", + "SHSTHSSSTHTWWWWWW", + "HTHSSTHTWWWWWWW", + "THTHSSTHWWWWW", + "STHSTHSSTHSSWW", + "HTHTHSSSTWWWWWWW", + "HSHTHSSSTWWWWWWW", + "THSHTHSSWWWWWW", + "HTHSW", + "THSTHSSSHWWWW", + "HTHSSSTHWWWWWW", + "SHSTHSTHSSSTWWWWWWW", + "HTHTHSSSTWWWWW", + "THSTHSSSTHWWW", + "THTHSSSHSST", + "THSTHTHSSSWWW", + "HTHSSSTHSWWWWWW", + "HSHTHWWW", + "HSTHSSSHSTWW", + "HTHTHSSSTWW", + "STHSTHSSTHSSSTWWWWWW", + "THSTHSSTHSWWWW", + "HTHSSTHSTWW", + "HTHTHSSSTW", + "THSHSTHSWWWWW", + "HTHSSSHSSTWWWW", + "HTHTHSSSWWWW", + "HTHSSWWW", + "HTHSSS", + "HTHTHSTWWWWWW", + "HTHTHSSSWWW", + "STHSTHSTHSWWWWWWW", + "HSHTHWWWWWWW", + "HSTHSSSHSSSTWW", + "THSHSSTHSSSTWWWW", + "HTHSSTHSTWWWWWW", + "SSHTWWWWWWW", + "HTHTHSSSWW", + "THSTHSSSTHSWW", + "HSTHSTHSSTWWWWW", + "HSHTHSSTWWWWWW", + "HTHSSSH", + "HTHTHSSTWWWWWWW", + "HTHTHSSTWWWWWW", + "STHSTHSTHSTWWWWWW", + "HTHSSSTHSSWWWWWW", + "SSSTHSST", + "STHTHTHSST", + "HSHSSTHSWWW", + "HTHSTHSWW", + "HTHTWWWWW", + "HTHTHSSTW", + "HSHSSSTHSSSWWW", + "THSTHSTHW", + "HTHSTHWWWWWW", + "HTHTHSST", + "SHSTHSSTHSSWWWWWW", + "HSHSSSHST", + "STHSTHSTHTWWWWW", + "HTHTHSSWWWWWWW", + "SHSTHSSSTHSSSTWWWWW", + "HTHSSSHSSSW", + "HTHTHSSWWWWW", + "THTHSSSTHSSSTWWWWW", + "HTHSSWW", + "HSHTHSSTWWWWW", + "STHTHSSSTHSSSWWWWWW", + "HTHTHSSWWWW", + "HTHTHSS", + "THSTHSSTHSSSWWW", + "HTHSSSHSWW", + "SHSTHSSTHSSSTW", + "STHTW", + "SHSTHTHSSTWWWWWW", + "HTHTHSTWW", + "THTH", + "HTHTHSTW", + "HSHSSSHSSSWW", + "HTHTHSWWWWWWW", + "HSHSSTHSST", + "HSHSSSTHSSSTWWW", + "HSHSSSTHSSSTWWWW", + "STHTHTHWWWW", + "HTHSHST", + "HSTHSTHTWWWWWWW", + "STHSTHTHSSWWWWWWW", + "HTHTHSWWWWWW", + "THTHSSSWWWWWW", + "HTHSSSHSTWWWWW", + "STHTHSSTHTWWWWWWW", + "HTHTHSWW", + "THTHSTHSSSWWW", + "HTHSHTWWW", + "HTHSSTHTWWWW", + "SHTHSTHSSTWWW", + "THTHSSSHSSSWWWW", + "HSTHTHSSWWWWW", + "HTHTHTWWWWW", + "HTHTHTWWWW", + "TWWW", + "HTHSSSTHSSSTWWWWW", + "SHSTHSSTHSSSTWW", + "IWWWW", + "STHTHSTHSSTW", + "HTHTHWWWWWWW", + "HTHTH", + "HTHTWWWWWW", + "THSTHSSSHSSWWWW", + "HTHSSSHSTWWW", + "HSTHSSTHST", + "STHSTHSSTHSSTWWWWWW", + "THSHSSSTHWW", + "HTHTWW", + "HTHSSTHSSSWWWWW", + "HTHTW", + "STHTHSSTHSSSTWWW", + "HTHSHSTWWWWWWW", + "HSHSSTHSW", + "STHSTHSSSTHSSTWWWW", + "SHSTHSSSTHSTWWWWWW", + "HTHSSTHTWWWWW", + "THSTWWWWWW", + "SHSSSWW", + "SSHSTWWWW", + "THTHTHSSSWWWWW", + "HTHWWWW", + "HTHWWW", + "SSSHSSTWWWW", + "HSHSSSHSSWWWWWW", + "HTHWW", + "THTHSSSHSSSTWWWWWWW", + "SHSSTWWW", + "THTHSSSHW", + "SSSTHSSSTWWWWWWW", + "SSSTHSSSTWWWWW", + "SSSWWWW", + "THSTHTHSW", + "SSSHWWWWWWW", + "THTHSSSTHSTWWW", + "THTHSTHSTWWWWWWW", + "STHTHSTHSS", + "THTHSSSHST", + "HTHSHSSTWWW", + "STHSTHTHW", + "SSSTHSSSTWWW", + "SSSTHSSST", + "THSTHSSSTHSSSWWWWWWW", + "THWWWWWWW", + "HTHSHSWWWW", + "STHSTW", + "THTHTHSSSTWWW", + "STHSTHSSSTHSWWWW", + "HSTHSTHSSWWW", + "THSTHSTHSSWWWWWW", + "SSSTHSSSWWWWWW", + "SHSTHSSTHSTWWWWWW", + "THTHTHSSSTW", + "SSSTHSSSWWWWW", + "HSTHSSSHSWWWWW", + "SHTHSTHSSWW", + "THTHSSTHSSS", + "SSSTHSSSWWWW", + "HSSST", + "THTHTHSTWWWWWWW", + "SSSTHSSSWWW", + "THTHSSTH", + "SSSTHSSSWW", + "SSSTHSSTWWWWWW", + "STHSSSTW", + "SHTHSSTHTWWWWWWW", + "SSSTHSSTWWWWW", + "THTHSSSTHTWWW", + "SSSTHSSTWWWW", + "HSTHSSSTHSSSTWWWW", + "THSHTHSTWWWWWW", + "STHSSSW", + "THS", + "STHSSSTWWWWWWW", + "THSTHSSSHSSSTWWWWW", + "SSSTHSSWWW", + "STHSTHSTHWWWWWWW", + "SSSTHSSWW", + "HSTHSSSTHW", + "HTHSTHST", + "SSSTHSSW", + "HTHSTHSSSWWWWW", + "HSHTHSTWWWWW", + "SSSTHSTWWWWWW", + "HTH", + "THTHTHSSTWWWWWWW", + "HTHSSTHSSS", + "HSHSTHSSSWWWWW", + "STHSTWW", + "STHSWW", + "SSHS", + "HSTHSSSTHSSWW", + "STHTWWWWWWW", + "HTHTHSSSTWWWW", + "HTHSWWW", + "THSTWW", + "STHSTHSSTHSST", + "STHTHSTHSTWWWWWW", + "SHSTHSTHSSSTWWW", + "HTHSTHSSSW", + "HTHTHTW", + "HWWWWWWW", + "HSS", + "SHTHSTHSSSWWWWWWW", + "HSHSSSHSSSWWWW", + "THSTHSSTHWWWWWW", + "HTHTHTWW", + "SHTHSSTHSSSTWW", + "THTHSTHSSSTW", + "HSWWW", + "THTHWWWWW", + "STHWW", + "SHSSSTWWWWW", + "HSHSTHWWWWW", + "HSTHTHWWWWWW", + "HSTHSSSTHSSTWWWWWWW", + "THTHSSSTHSSSWWWWWW", + "HTHW", + "SSHST", + "SHTHSSSTHSSSWWWWWWW", + "STHSTWWW", + "HSHSTHSSSTWWW", + "HTHSTHSSWW", + "THTHT", + "SHSSSTWWWW", + "THSTHSSSHTWWWWW", + "HTHSSSTHSSSWWWWWW", + "HSTHTHSS", + "STHTHTHST", + "HTHSHSSSTW", + "THSTHSTHS", + "SSSTHSSWWWWW", + "HTHTHSTWWW", + "STHTHSSSTHSSST", + "THSHTHSSSTWWWW", + "THSHSTHSSSTWWWWWW", + "SSSHSSTWW", + "SSTWWWWWWW", + "THTHSTHTW", + "HTHSSSTHSSSWWWW", + "SHSSSWWWWWWW", + "STHSTHTHTWWWWWW", + "HSHSTHTWWWW", + "STHSTWWWWWWW", + "SHSSS", + "THSSSTW", + "HTHSSSTHSSTWWW", + "SHSSW", + "SHSSTWWWW", + "SHTHSSTHSSSTWWWWW", + "HSSSTWW", + "HTWWWW", + "THSHSTHTWW", + "SHTHSSSTHSTWW", + "SHSSTWWWWWWW", + "HTHSSTHWWW", + "THTHSTHWWWW", + "STHSSSTWWWWWW", + "STHSTHSSTHWWWWWW", + "STWWW", + "SHSSSWWWWW", + "STHTHTHSSWWW", + "SHSSWWWWWWW", + "SHSSWWWWWW", + "HSHSSTH", + "THSHSTHSSSTWWWWWWW", + "SHSSWW", + "STHSTHTHWWWW", + "HTHTHWWWW", + "THTHSSTHSWWWW", + "THSHSSTHSSSW", + "SHSST", + "HTHSSSTHSST", + "HTHSSSHTWWWW", + "HSTHSTHSWWWWW", + "THTHSHSSSWWWWWW", + "HTHSSSW", + "HTHSSSHSSSTWWWWWWW", + "THTHSSTHSSSTW", + "HTHWWWWWWW", + "HTHSSSHSSSWWWW", + "SHSSSTWWW", + "HSHSSTHSSTWWWWW", + "HTHSTHSSS", + "THSSW", + "HTHSSTHSTWWW", + "SSHWWW", + "STHTHSSSTHSWWW", + "THTHSSTHSTWWWWWW", + "SSHTW", + "SHSWW", + "HSTHSSSTHSSTWWW", + "SSW", + "HSSSWWW", + "SHSSST", + "HSTHSSSTHSSWWWW", + "SHTWWWWWWW", + "THSTHSSTHSTWWWW", + "HSHSSTHSSSWWW", + "THSHSTHTWWWWW", + "SSHSTWWWWW", + "THTHSSSTWWW", + "HTHSSTHSSSWWW", + "HTHTHW", + "THTHSSTHWWW", + "SHTWWWWWW", + "HTHSTWWWWWWW", + "HSHSSTHSTWWWWW", + "HWWWWW", + "SSSHSSST", + "SHTWWWWW", + "SHTWW", + "SHTW", + "STHSTHTHSSSTW", + "SSSTHSSSTWWWWWW", + "SHSTHSSSTHSSSTWWWW", + "HSHSSSHSTW", + "SHWWWWWWW", + "SSHSSTWWW", + "HSTHSSSHSWWWWWWW", + "SHTWWW", + "THTHSSSTHSWWW", + "HST", + "SSHSS", + "THTHSSTHSSSWWWWWWW", + "SSTHSSSTWWW", + "HTHSSSHTWWWWWW", + "SHWWWWW", + "SWWW", + "HTHTHSW", + "SHSSSTWWWWWW", + "HSHSTHW", + "HSHSTHSSST", + "STHSTHSTHSSSTW", + "THTHTHSSWWWWWWW", + "THSHSSSTHSSSW", + "STHTWWWWWW", + "SHTHSTHSSSTWWWWWW", + "HTHSSSWWW", + "SSHSSSWWW", + "SSTHTW", + "SSSHSSTWWW", + "SHWWWWWW", + "SWW", + "HSHSSSHSST", + "SHSSTWWWWWW", + "SHSTHSSSTHSSWWWWWWW", + "HSTHTHSSSTWWWW", + "THSTW", + "SW", + "SHST", + "S", + "HSHTHSSWWW", + "HTHSHSTWW", + "THSSSTWWWWWWW", + "HTHTHTWWW", + "STHTWWWWW", + "HTHTHSWWWWW", + "HTHTHSSST", + "THSSTWW", + "THSSSWWWWWWW", + "HTHSTHSWWWW", + "THSSSWWWWWW", + "SSTWW", + "THSSSWWWW", + "STHSS", + "SHSTHSSSTH", + "HSHTHTWWW", + "THSTHSSSTHSSWWWWW", + "SSTHSSWWWW", + "THSSSWWW", + "THSSS", + "SSSHSWW", + "HSSTWWWWWW", + "THTHSSTHTWWWWWWW", + "SSSTWWWWW", + "SSTHSSST", + "STHTHSTHSSWWWWWWW", + "SHTHTHSSW", + "HSSTW", + "HTHSHSSST", + "STHTHSSSTHSTWW", + "SHSSWWWW", + "THTHSSSTHSSTWWWWWWW", + "SSSHSSSWW", + "THSHSTHSSSWWWW", + "THSTHSSSTH", + "HSSWW", + "THSHSSTHSS", + "SSHTWW", + "HTHSSSTHSSSTWWWWWWW", + "HSTHTHSSSWWW", + "THTHSSSTHTW", + "THSHTHSSSWWWWW", + "HTHSSTHSTWWWWW", + "TWWWWWW", + "STHTHSSSTHSSWWWWW", + "SSSHST", + "HSSTWWWW", + "SHSTWWWW", + "HSHSSSTHST", + "HSTHSSSHTWWWWWWW", + "HTHSSSHSSTW", + "HSWWWWWWW", + "THTHSSSHSSTWWW", + "HSTHSSSTHSSS", + "SSSHSSTW", + "HSTHSSSHSSSWWWWWWW", + "HTHTHSSSTWWW", + "THST", + "SSSHSWWWW", + "THTHSSSHSSTW", + "SSTHSST", + "THTHSSSTHSTWW", + "THSWWWWWW", + "HSHSTHSSTWWW", + "HSSTWW", + "HSTHSSSHSSWWWWWW", + "SSTHWWW", + "THSTHSSTHWWWW", + "HSTHSSSTHSSSWWW", + "STHSTHSSSTHTW", + "SHSSTW", + "SHSTWWWWW", + "THTHSSSTHSSSWWWW", + "THWWW", + "STHWWWW", + "HTHSSSTHSTWWW", + "SSSTWWWW", + "HTHTHSSTWWWW", + "SHTHSSTHTWWWWWW", + "THTHTHSSTWWW", + "SSTHSWWWWWWW", + "HTHTHSSSWWWWWWW", + "STHSWWW", + "HTHTHSSSW", + "SSSHSST", + "STHTHSSTHS", + "THTHSSSTHTWW", + "HTHSTW", + "SHTHSSSTHSSSTWWWW", + "SSSHTWWWWW", + "HTHSTHSTWWWWWWW", + "HTHSTHWWWWWWW", + "STHWWWWWWW", + "SHTHSTHSSTWW", + "SSHT", + "HTHSSTHSSSWW", + "HTHTHSSWW", + "HSHTHSSSWWWWWW", + "HTHSWWWWWW", + "HTHSSTHSWWW", + "HSTHSTHSTWWWW", + "STHTHSTHSSSWWW", + "SHSTHSSSTHSSW", + "HTHSTHSTWWWWW", + "STHSSWWWWWW", + "STHSTHSSTHTWW", + "HTHSSSTHSSWWW", + "HTHTHSSTWW", + "HSHSSSTHWWWWW", + "HTHSTHW", + "THSHSTHSW", + "HSSW", + "THTHSSSHTWWW", + "STHSTHSSSTHSSS", + "HSSSTWWWWWWW", + "THSHSSTHSSS", + "HSHTHSSSWWWWWWW", + "HSTHTHSSSTWWWWWWW", + "HTHSSSTHSTWWWWWW", + "STHSTHSTHSTWW", + "STWWWWW", + "THW", + "HTHSTHSWWWWWW", + "HTHSSTHW", + "HSWWWWW", + "STHSWWWWWW", + "STHTWWWW", + "HTHSSTHSWWWWWW", + "STHSSSWWW", + "HTHTHTWWWWWWW", + "HSHSTHSSSWWWWWWW", + "SHTHSSTHSTWWWWWWW", + "HTHSSSTHSTWWWW", + "HT", + "STHSTHSSSTHWWWW", + "HTHSSSHSSWW", + "SSSTHSSTWW", + "THSSWWWWW", + "SHTHTHSSWWWWWW", + "THSTHSSSTHSSWWW", + "THTHSSTHSSSWWWWW", + "HWWWW", + "STHSTHTHTWWWWW", + "SHSSSTWWWWWWW", + "HSTWWWWWWW", + "HSST", + "HSTHSSTHWWWW", + "STHTHSSSTHSTW", + "IWWWWWWW", + "SSHSSSWWWW", + "HSHSSSTHSW", + "IWWWWWW", + "SHSTHTHWWW", + "THSTHSSSTHSTWWWW", + "STHSSTWWW", + "HTW", + "SSSHSTWWWWWWW", + "HTHSSTHSS", + "STHSTHSTHSSWWWW", + "SSSHSWWWWWWW", + "THSTHSSSTHSSSWWWW", + "SSTHSWW", + "SSSTHSSTW", + "SSTHSSSTWWWWWWW", + "STHSTHSTHSSSWWW", + "STHTHSSTHSSTWWWWWWW", + "HSTHSTHSWWWW", + "HSTHSSTHSSW", + "STHTHSSTHSSSTW", + "THSHSSSTHSSSWWW", + "STHW", + "SSHSTWW", + "SHSTW", + "STHTHTHSWWWWWW", + "SHSTHTHW", + "THSST", + "THSWWWWWWW", + "HSTHTHSSSTWWWWWW", + "SHSTHSSSTHSW", + "HSTHTHW", + "HTHTHSSTWWW", + "HSTHSSTHSSTWWWWWWW", + "STHSTHTHSTWWW", + "THSTHTHSSTWWWWWWW", + "HTHSTHSSTWW", + "SSTHSSS", + "HSHSTHSSW", + "STHTHTHSSTWW", + "THSHSTHTWWWWWWW", + "SHSSSTWW", + "SSHSSST", + "HTHSSSTHSSWWWW", + "HTHSSSTHTW", + "I", + "SSHSSTWWWWWWW", + "SHSTHSSTHSSSTWWWWWW", + "THTHSSTHSTWWWW", + "HWWW", + "THTHSSWWWW", + "STHSWWWWW", + "STHSTHTHSSWWWW", + "THTHSSSHSTWW", + "HSHSTHTWWWWW", + "HSHSTHTW", + "HTHWWWWWW", + "HSHSSSTHWWWW", + "SSHSSWWWWWW", + "SSSHT", + "SSSHSSSWWWWWWW", + "SSTHSSSW", + "HSTHTHTWWWWW", + "HSTHSSSHSSTWW", + "THTHTHSSSWWWWWW", + "THSSSWWWWW", + "HSHSSTHTWWW", + "THTHSSTHSSSWWWW", + "SHSTHTHSTWWWWW", + "HTHSHSTWWWWWW", + "SSTWWWWWW", + "HSHTHSTWWWWWWW", + "HSTHTHSSSWWWWWW", + "SHSTHSSTHSTW", + "SHSTHTHTW", + "THSTHSSSTHTWWWWWWW", + "SSTWWWWW", + "SHSWWWW", + "HTHTWWWW", + "SHSTHSSSTHSSWWWW", + "SSSTHSSWWWWWWW", + "THSHSTHTWWWW", + "HSHSSTHTWWWWWW", + "SSSTHT", + "SHSTHSSTHSSWWWWWWW", + "HSSWWWWW", + "SSSHWWWWWW", + "THSHSSTHSSST", + "HTHSTHSSSTW", + "SHSTHSTHWWW", + "STHSW", + "HTHSHSSSW", + "SHSTWWW", + "THTHSSTHSSWW", + "THSSWWWWWW", + "THTHTHSSS", + "HSTWWWWWW", + "HTHSSSTHSW", + "THTHSSWWWWW", + "HTWW", + "THTHSHSSTWW", + "HTHSHTWW", + "HSHSSSHWWWWWWW", + "HSTHSSTHSSWWW", + "THTHSHSS", + "SHSWWWWWWW", + "THSTHSSTHSSWWWWW", + "THTHSSTWWWWWWW", + "SHSWWW", + "HSHSTHSSSWWWW", + "HTHSSSTHSSSTW", + "SSSTHWWWWW", + "STHSTHSTHSTW", + "SSTHSTWWW", + "THSSTWWWWWWW", + "THTHSSSTHSSTWW", + "THSSTWWWW", + "STW", + "HSTHSSTHS", + "STHTHSSTHSSWWW", + "SSHSSSTWW", + "SHTHSTH", + "HTHSSTH", + "THTHSSSTHSWW", + "HTHSSSHSTWWWWWW", + "HTHSSSTHTWWWW", + "STHSTHTHSWWWW", + "HTWWWWWW", + "STHTHSSSTHSSSWWWW", + "HTHSHSSWWW", + "STHSTHSTHSSTW", + "HSTHSSSTHSSTWWWWW", + "SSWWWW", + "HTHSSSHSW", + "TWWWWWWW", + "STHWWWWWW", + "SSHWWWWW", + "STHSTHTHSSSWWWWWWW", + "HSTHSSSTHSSSWWWWW", + "IW", + "SHTHSSSTHS", + "SSWWW", + "HSWW", + "HSTWWWWW", + "HSSSWWWWWW", + "THSTHSSSHSSWWWWWWW", + "HSSTWWW", + "HS", + "SHSTHTHSSTWWWWW", + "HSSSTWWWWW", + "HTHSSSTHSSSW", + "SSHSWWWW", + "SSHTWWWWWW", + "SHSTHSTHSSSTW", + "THTWWWWWW", + "HTHSSSTHTWWWWWWW", + "THTHTHSSSTWWWW", + "SHTHSTHTWWWWWW", + "SSHSSSTWWWWWW", + "SSTHSSTWWWWWW", + "HSHTHSWWWWWW", + "STH", + "THTHTWWW", + "HSSSTWWW", + "SHSSWWW", + "SHS", + "HTWWWWW", + "STHSTHTHSSTWWWWWW", + "THTHSHSWW", + "THSTWWWW", + "STHSTHTHSTWWWWWWW", + "SHTHSSTHSSSTWWWWWW", + "STHSSWWWWWWW", + "HSSTWWWWWWW", + "SHSSWWWWW", + "HTHSSSHSSWWWW", + "SHTHSSSTHSSWWWW", + "THTHSSSTWWWWW", + "THWWWW", + "HSSSTWWWWWW", + "STHWWWWW", + "STHTHTHSSS", + "SSHSSS", + "HSTWWWW", + "THTHSTHSTWWWWW", + "HTHSHT", + "HSTWW", + "SHTHTHSWWWWW", + "STHSSSWWWWWW", + "HSTHTHWWWWW", + "TH", + "HTHSTHSSWWW", + "THTHSHSSWW", + "THWWWWWW", + "SHSTHSTHSSWWWWWW", + "SHSTHTHSSTW", + "THSHSSSTHSSWWWW", + "SHTHTHTWWWWWW", + "SSSHSTWWW", + "HSTHSSSHSW", + "STHSTHSTHST", + "THSWW", + "THTWW", + "HSHSSSHTWW", + "THSTHSSTHSSSWW", + "HSHSSSHSSWW", + "HSHTHSWW", + "THTHSHSSSW", + "HTHSTHSSSTWWWWWW", + "SSTHSSSWWWWW", + "HTHSSSTHST", + "HTHSSSTHWWWW", + "THTWWW", + "SHSSSWWW", + "HTHSTHTWWWWW", + "HTHSTHWWW", + "THTHSSTHSSSWWWWWW", + "THSTHSSSHSST", + "TWWWWW", + "STHTHSSSTHTWWWW", + "THSTHSSTHSWWW", + "THSHSSSTHSSTWWWW", + "HTHSTHSSSWWWWWWW", + "SSTHSWWW", + "HSTHSTHWWWWW", + "SSSTHSSSTWW", + "THSW", + "SHSS", + "THSHTHSST", + "HTHTHSSSWWWWWW", + "SHTHTHSSTWWWWWWW", + "THSS", + "SHT", + "HTHSSTHTWWWWWW", + "HTHSSTHSSSWWWWWWW", + "THSSSTWWWWWW", + "THSTHSSTHTWWWWW", + "HTHSTHTWWW", + "SSS", + "STHTHSSTHSSSTWW", + "SSTHS", + "HTHSSSTHSSSTWWWWWW", + "HSTHTHTWWWWWW", + "STHTHSTHSSTWWWWWW", + "THSTHSSTHSSSTW", + "SSSTHSTWWWWWWW", + "SSTHTWWWW", + "HSTHSSSTHSS", + "SHTHSTHSWWWWWWW", + "HTHSSSHSSSTWWWWWW", + "STHTHSSTHSSTWWWWW", + "HTHSSSTHSS", + "STHTHSSTHSTWWWW", + "SSSHSSSTWWWW", + "THSTWWWWWWW", + "SSST", + "SSHSSWWWW", + "THTWWWWW", + "THSHSSTHTWWWWW", + "SHSSSWWWWWW", + "THSSWWWW", + "THSSWWW", + "HTHTHSSS", + "HSHSSTHSSTW", + "THSSTW", + "THSHSSSTHS", + "HSTHSTHWW", + "SHSTWW", + "THTHSTHSSTWWWWW", + "STHSTHSSTHSSSTWWW", + "THSSTWWW", + "THSSSTWWWW", + "STHTHSSTHWWWWW", + "HTHTHSSSWWWWW", + "SHTHSTHSSSTW", + "THTHTHTWWWWWWW", + "THSHSSTHWWW", + "HSSSW", + "THTHSTH", + "HSSSTWWWW", + "HTHSHSST", + "HTHSSTHSSSTWWWW", + "SSTHSSSWWWWWWW", + "STHTHSSSTHSSW", + "HSHSSTHSTWWWWWW", + "STHTHSSSTHSWW", + "THSTHSSTHSSTWWWWW", + "STHSSWWW", + "THSTHTHSS", + "HSTHSSSTHSSSTWW", + "HTHSSSTHTWWWWWW", + "HSHSTHSSWWWWWWW", + "THSHTHSSSTWWWWWWW", + "HTHSTHS", + "HSHSSTHWWW", + "HSTHSSSTHSSST", + "HSHTHSWWWW", + "HSTHTHTWWWW", + "THTHSSSTHSSWWWWW", + "THSTHSSSTHSSWWWWWW", + "HTHSSTWWWWWW", + "THT", + "SSSTHW", + "HTHSTHSSSWWWWWW", + "STHSSTW", + "HSTHTHSSTWWWWWW", + "THTHTHSWWWWWWW", + "SSHSSWWWWW", + "STHSTHSSTHSSSWWWWW", + "STHSSTWW", + "HSTHSSSHSTW", + "SSTHSSWW", + "SSSTHTWWWWWWW", + "SSSHSSSWWWW", + "THTHSHWWWWWWW", + "HSSWWWWWWW", + "HTHSTHTWWWW", + "THTHSHSSWWW", + "THTHWWWWWWW", + "HSHSSSTHTWW", + "STHSSTWWWWW", + "SHTHSTHSTWWWWWW", + "STWWWWWWW", + "HSTWWW", + "STHSSSWWWW", + "THTHSHSTW", + "STHSSSWWWWW", + "STHSSSWWWWWWW", + "STHSSSTWWW", + "SSSHTWW", + "SSTHSSSTWW", + "THSTHTHSWWWWWW", + "HSTHSSSHSSWWWWW", + "THTHSHSTWWW", + "HTHSSTHSSSTWWWWW", + "THTHSHSSTWWW", + "THSTHSTHSTWWWW", + "THSHSSSTHSSSWWWWWWW", + "THSWWWWW", + "THSTHSSSTHWWWWW", + "THSTHTHSSWWWW", + "SSHSSWWW", + "HSHSTHSTWWWWWW", + "THSHTHSW", + "HTHSTHWW", + "HTHSHSSSWWWWWWW", + "THTHTWWWWW", + "HTHSHSTWWWWW", + "SSSHTW", + "THTHSSTHSSSTWWWW", + "HTHSHWWW", + "HSTHSTHSSSTWWWWWW", + "HSTHSSSTHS", + "SSWW", + "SSTHWWWWWWW", + "HSHTHSTWW", + "SHSTHSSSTHSSTWWW", + "HTHSSTHSSSWWWWWW", + "SHTHSTHSWW", + "SSSTHWWWWWW", + "HTHSSSTHSSW", + "SSTHSSWWW", + "HTHTHSSSTWWWWWW", + "HSTHSTHSSSW", + "HTHSTHSSSWW", + "HTHSTHSW", + "STHSTHSSSTHSSSTWWWWWWW", + "STHTHSTHSSWWWW", + "SHTHSSSTHSSTWWWWWW", + "HTHSHSSSTWWWWWW", + "SSH", + "SHSTHSSSTHSSTWWWW", + "THSHSTHSWWW", + "SSHW", + "HTHTHSSTWWWWW", + "THTHSHSTWWWW", + "SHSTHSSSTHSSWW", + "THSHSTHSWWWWWWW", + "HSSSWWWW", + "SSSTHSTWWW", + "THTHTHSWWWWWW", + "THSHSTHSWWWWWW", + "SSHWWWWWW", + "STHSTHSSTHSSTW", + "SHTHTHSSWWWW", + "HSTHSSSTHTWWWWWWW", + "THTHSHWWW", + "HTHTHSSWWWWWW", + "HSSSWW", + "STHSTHSSSTHSSSTWWW", + "STHSTHTHTWWWW", + "SSHTWWW", + "HTHSHSWWWWW", + "THTHSSSTHSSSWW", + "HSTHSSSTHSSSTWWWWWWW", + "SSSTHSSSTW", + "THSTHSSTHSSW", + "SSSTHSSS", + "SSHSWW", + "THTHSSTHSS", + "HSTHTHSSSWWWWW", + "SSSTHSS", + "SSHSWWWWW", + "HTHSTHSTWWWW", + "STHTWWW", + "HTHSSSWWWWWW", + "HSTHTHTWWWWWWW", + "SSSHSSSTWWWWW", + "SSSHSSSTWWWWWWW", + "SHSTHTHSTWWWWWW", + "HTHSHSSSWWWWWW", + "STHTHSTHWWWWWW", + "THSTHSSSTHSSSW", + "HTHSSSTHSWWWW", + "HTHSSSHSSTWW", + "HSTHSSTHSWWWWW", + "THSHSSSTHTWWWWWW", + "SSHWW", + "SSTHSSTWW", + "HSHSSSHSSTWWWWWW", + "TWW", + "SSHSSW", + "SHTHSSSTHSSWWW", + "SSSHSTWWWWWW", + "SHTHTHSSSWWWWWWW", + "SSHSSWW", + "STHSTHSTHSSWWWWWW", + "THTHSSTHSSSTWWW", + "SSSHSSSW", + "THTHSSSTHSWWWW", + "SSHSSTW", + "HTHSTHSSST", + "HWW", + "HSTHTHSSTW", + "STHSTHTHSTW", + "SSHSSTWW", + "HSHSSTHWW", + "SSHSTWWWWWWW", + "SSTHTWWWWW", + "THTHSSSHSSSTW", + "THSHSSTHSSWWW", + "SSSTHSWWWWWWW", + "HSHSTHWWWWWW", + "STHTHSSSTHSTWWWWWWW", + "THTHSSSHWWWWW", + "SH", + "HTHSSSHWWW", + "SSHSSTWWWWWW", + "THSTHSSSTHSSWW", + "THSHSSSTHSSWWW", + "SSHSSTWWWWW", + "HSHSSSTHTWWWW", + "THSHSSTHSSSTWWWWWW", + "STHSTHSSSTHSSWWWWWWW", + "SSHWWWW", + "STHSSWWWW", + "SSSTHST", + "THSTHSTHSTWWWWWWW", + "SSHSSSTWWW", + "HSHSTHTWWWWWWW", + "STHTHSSTHTW", + "SSHSSSTWWWW", + "HSTHSTHSS", + "SSSTHTWWWWWW", + "SHSSSTW", + "HTHSSTHSSTWWWWWWW", + "SSSTHSWWWW", + "HSHTHWWWWW", + "HSHTHSSWWWWWWW", + "STWWWW", + "HSSWWW", + "SSSTHWW", + "SHSTHSSTHSSSWWWWW", + "THTHSSSTHSSWWWWWW", + "SSTHWW", + "THSTHSSTHSSWWWW", + "STHSSTWWWWWW", + "STHSTHTHSSSTWW", + "SSTHSWWWWWW", + "SSTHWWWWWW", + "THTHSTHSSST", + "SSSTHSTWWWWW", + "SSSHSSWWW", + "THSHTHSSTWWWW", + "THSHSSSTHSTWWW", + "STHSTHSSSTH", + "THTHSSSTHSSS", + "HSHTHSSWWWWWW", + "SHTHTHSSWWWWWWW", + "THSTHTHSSTWWWWW", + "SSTHSTWWWWW", + "SSTHTWW", + "SSTHTWWWWWWW", + "HTHSHSSSTWWWW", + "THSHTHSSW", + "SSTHSWWWW", + "THSSSTWWW", + "HSTHTHSTW", + "THSTHTHSSTWWWW", + "THTHTHSSWWWW", + "THTHSS", + "SSSTHSTW", + "THTHSST", + "THSHSTHWWWW", + "THTHSSWWWWWWW", + "SSTHSTWWWWWW", + "SSTHSTWWWW", + "SSSHSS", + "HSHSSTHWWWWWW", + "SSTHSTWWWWWWW", + "THSHSSSTHWWWWWWW", + "SSTHSSW", + "SSTHSSTW", + "SSTHSSTWWWW", + "THSTHSSSTHSSTWWWW", + "THSHSSTHSSSTWWW", + "HTHTHSWWW", + "HTHSSSTHSWW", + "THSHSSTHSSWWWW", + "HTHSTHTWW", + "SSSW", + "HSHSSSTHSSTWWW", + "SHTHSSTHSSS", + "HTHSSSTHSSSWWW", + "SSTHSSSWW", + "HSHSSSHSSST", + "ST", + "SSTHSSSWWW", + "HSHSSSTHSSSWWWWWW", + "HW", + "HSTHTHWWWW", + "THTHTHSSST", + "THSHTHSWW", + "SSTHST", + "STHSTHSSSTHSSSWWWWWW", + "THSHTHSSST", + "THTHSSSHSSW", + "SSTHSSSWWWWWW", + "THSHSSSTHT", + "SSSTHSSWWWWWW", + "SSHSSSW", + "SSTHSSSTW", + "THTHSSTHWWWWWW", + "STHTHSSSTHSWWWWWWW", + "THSHSTHWW", + "SSTH", + "HTHSSSHSS", + "SSTHTWWWWWW", + "SSSHSTWW", + "STHTHSSSTHSST", + "SSTHSSSTWWWWW", + "HSHSSSTH", + "SHTHTHSSSTWWWWWW", + "SSSWWW", + "HSHSSSHTWWWWWW", + "THSHSSSTHTWWW", + "SSSWWWWW", + "THSTHSSTHTW", + "THSHSSSTHSSSWW", + "THTHSHWWWW", + "HTHSSTHSSSTWWW", + "SHTHSTHSSWWWWWWW", + "SSSTHSW", + "SSSWWWWWW", + "HTHSSSHWWWW", + "THSSTWWWWW", + "HTHSSSHSSTWWWWWWW", + "THSHSSSTHSTW", + "SSHSTWWW", + "SSSHW", + "HTHSSSHSSTWWW", + "HSTHSSTHSSSTW", + "STHTHSTHSSS", + "SSTHW", + "SSSHTWWW", + "THTHSTHSWWWWWW", + "SHTHSTHSSS", + "THSHSTHST", + "STHSTHTHSSTWW", + "SHTHTHS", + "HSSWWWW", + "SSWWWWWW", + "SSSHS", + "THTHSHSST", + "HTHSSTHSSSTW", + "SSTHSSWWWWWW", + "SSSHSWWWWW", + "SSHSSSWW", + "SSHSTW", + "HTHSSTHSSWWWWWWW", + "THTHWWWWWW", + "SSSHSTWWWWW", + "HTHSSTHSTWWWWWWW", + "HSTHSSSHTWWWW", + "THSTWWW", + "SHSTHSSSTHSSST", + "SSSHSSS", + "SSSTHWWW", + "SSTHSSSTWWWWWW", + "SSHSSTWWWW", + "SSSHSSSTWWWWWW", + "HSTHSTHSSSWWWWWWW", + "HSTHSSSTHSSSTW", + "SHSTHSSSTHSTW", + "SSSHWWW", + "SSSHSSWWWWW", + "SSSTWW", + "SSSTHSSSW", + "SSHSWWWWWWW", + "STHSTHSSSTHTWWW", + "THTHSTHTWW", + "HSHSSTHTWW", + "THTHSSWWWWWW", + "SSSHSSTWWWWW", + "THTHSSSTHSW", + "SSSHSSTWWWWWWW", + "THSTHSTHST", + "HSTHTHSSSTWW", + "THSHTHWWWWW", + "STHSTWWWWWW", + "IWWWWW", + "THSTHSSSHSSSTWWWWWW", + "SSSHSSSWWWWW", + "THSHSTHSSTWWW", + "STHSTWWWW", + "STHTHSSTHST", + "SSTW", + "SHTHSSTHTWWW", + "HSHSTHSSTW", + "SSSTHSWWWWWW", + "THSHSSSTHSST", + "STHTHSSTHTWWWW", + "SHSTHSSTHWWWWWWW", + "SSSHSSSTW", + "HSHSSSTHSST", + "HSTHSSSHTWWWWW", + "THSHSSTHS", + "SSSHSSSTWWW", + "THSHTHSTWWWW", + "SSSHSSWWWW", + "THSTHSSSTHSTWWW", + "HSHSSSTHSTWWWWWW", + "SSHSSWWWWWWW", + "SSTHWWWW", + "SSSTH", + "SSSTW", + "SSSTWWW", + "HSHTHSSTWWWW", + "HTHSTHSST", + "STHSTHSSTHSSSWWWWWWW", + "SSSTHWWWWWWW", + "THSTHSSSTHSSTW", + "SSSTWWWWWWW", + "THTHSHSWWWWWW", + "HTHTHT", + "SSSTHTW", + "HTHSSSTHSTWWWWW", + "HTHSTHT", + "HSHSSTHSSWWW", + "SSSTHTWW", + "SSSTHTWWW", + "THSTHSTHSSSWWW", + "THSHSSSTHSSSTW", + "HSTHSSTHTWWW", + "HSTHTHSSSWWWW", + "HSHTHSTWWWW", + "SSSTHTWWWWW", + "STHTHSSTHSWWW", + "HSHSTHSW", + "HSHSTHWWWW", + "THTHSSTHSTWWWWW", + "HTWWWWWWW", + "HTHSTHSSSTWWWW", + "SHTHSTHSTWWW", + "HSHSSSTHT", + "HSTHTHTW", + "THSTHTHTWWWWWWW", + "SSSTHSWWW", + "HSTHTHSSTWWWWW", + "HSTHSSSTHSSWWW", + "HSHSTHSWWWWWW", + "HSHSTHSWWWWWWW", + "HSHSTHST", + "THSSWW", + "HSHSSTHSWW", + "STHTHSSSTHST", + "HSHSTHSTW", + "HSHSTHSSSWWW", + "HSHSTHSTWW", + "THTHSTHWWWWW", + "HSTHTHSSWWW", + "HSHSTHSTWWW", + "HSTHSTHSSSWWWWWW", + "HSHSTHSTWWWW", + "SST", + "HSHSTHSTWWWWW", + "HSHSTHSS", + "THTHTHSSWWW", + "HSHSTHSSWW", + "SHSTHTHWWWWWWW", + "HSHSSSHSTWWWWWW", + "HSHSSSHSWW", + "THSTHSSTHWWWWWWW", + "HTHSTHWWWWW", + "THSHTHSTWWW", + "HSTHSTHW", + "STHSTHTHTW", + "SSHSSSTWWWWWWW", + "HSHSTHSSWWWW", + "HSHSSSHWWWWWW", + "HSHSTHSSWWWWW", + "HSHSTHSSWWWWWW", + "HSTHSSTHSSSWWWW", + "THSTHSSSHSSWWWWW", + "THTHSHSWWWWWWW", + "HSHSTHSST", + "HSTHSSSTHSWWWWWWW", + "HSHSTHSSTWW", + "HSHSTHSSTWWWWWW", + "HSHSTHSSSW", + "THSTHSSTHSWWWWWW", + "THTHTHWWWWWW", + "SWWWW", + "THTHSSSHSTWWWWWWW", + "SSSHTWWWWWWW", + "HSHSTHSSSWWWWWW", + "HSHTHSS", + "HSHSTHSSSTW", + "HSHSTHSSSTWW", + "HSHSTHSSSTWWWW", + "HSHSTHSSSTWWWWWW", + "HSHSTHSSSTWWWWWWW", + "HSTHTHSST", + "HSHSSTHW", + "HSHSSTHWWWW", + "THSTHTHSTWWW", + "HSHSSTHWWWWW", + "STHTHSSSTHTWWW", + "HSHSSTHWWWWWWW", + "HSTHSSSHTWWWWWW", + "THTHTHSSTWWWWWW", + "THTHSTHSSSWW", + "HSHSSTHT", + "THSHSSSTHSSSWWWW", + "STHTHSTHTWWW", + "THSTHSTHTWWWWWWW", + "HSHSSTHTW", + "HSHSSTHTWWWW", + "THTHSSSHTWWWW", + "HSHSSTHTWWWWW", + "THTHSTHSTWWW", + "SSSTHSWWWWW", + "HSHSSTHTWWWWWWW", + "STHTHSSTHSSSWWW", + "STHT", + "THSHSTHSTWWWWWW", + "HSHSSTHS", + "HSTHSTHSWWW", + "HSHSSTHSWWWW", + "HSHSSTHSWWWWW", + "HSSWWWWWW", + "HSHSSTHSWWWWWW", + "HSHSSTHSWWWWWWW", + "HSHSSSTHSSSWWWWWWW", + "THSTHSSSTHSSSTWWW", + "HTHSTHTWWWWWW", + "STHWWW", + "THTHTHSTWWWWWW", + "HSHSSTHSTWW", + "HTHSSWWWWWW", + "THTHSHSSSTWWWW", + "HSHTHSSW", + "THTHSSSHSSSWWWWW", + "HSHSSTHSTWWW", + "STHTHTHSTWWW", + "THSHSSSTHSSTWW", + "HSHSSTHSTWWWWWWW", + "HSHSSTHSS", + "HSHSSTHSSSTWWW", + "HSHSSTHSSW", + "HSHSSTHSSWW", + "SHSTHTHSSWWWWWWW", + "SSSHWWWWW", + "HSHSSTHSSWWWWW", + "HSHSSTHSSWWWWWW", + "HSTHSSSH", + "THSSSWW", + "THTHSSST", + "HSSSWWWWWWW", + "HSHSSTHSSWWWWWWW", + "THTHSSTHST", + "HSHSSTHSSTWW", + "THSTHSTHSSSTWWWWW", + "THSHSSTHSTW", + "SHTHSSSTHTWWWWW", + "HSHSSTHSSTWWW", + "HSHSSTHSSTWWWWWW", + "STHTHSSSTHSSWWWWWWW", + "SHSTWWWWWWW", + "HSHSSTHSSTWWWWWWW", + "STHTHTHSSSTWWWWW", + "HSTHSSTHWWWWWW", + "THTHSTWWWWW", + "THTHSSTHTWWWW", + "HSHSSTHSSS", + "HSHSSTHSSSW", + "STHSTHSSTHSTWWWW", + "HSHSSSHSTWWW", + "HSTHSTHWWWWWWW", + "THSTHSSSTHSSSTWWWWWWW", + "HSTHSSSHSSWWWWWWW", + "THSHSTHSSSTWWW", + "STHSTHSSTHS", + "HSHSSTHSSSWW", + "HSHSSTHSSSWWWW", + "THSHSSSTHTWWWWW", + "HSHSSTHSSST", + "STHTHSSSTHSSSW", + "HTHSSSHSWWWW", + "HSHSSSTHSWWW", + "HSHSSTHSSSTWW", + "HSTHSTHSST", + "HSHSSTHSSSTWWWWWW", + "SSSHWWWW", + "THSHSSTHSST", + "HSHSSTHSSSTWWWWWWW", + "HSHSSSH", + "HSHSSSHWW", + "SHSTHSSTHSSTWW", + "HSTHSSSHSTWWW", + "HSHSSSHWWW", + "HSHSSSHWWWW", + "HSHSSSHWWWWW", + "STHTHTHSSSWWWWWWW", + "THSHSSSTH", + "THSTHSSSTHSWWWWWW", + "HSHSSSHT", + "HSHSSSHTWWW", + "THTHSSSHSWW", + "HSHSSSHTWWWW", + "HSHSSSHTWWWWW", + "SHSTHTHSSSTWWWWWW", + "HSHSSSHTWWWWWWW", + "HSHSSSHSWWW", + "HSHSSSHSWWWW", + "HSHSSSHSWWWWW", + "THSTHSTHSSWWW", + "HSTHTHSWWWWW", + "SHTHSTHSSSWWWW", + "THSSTWWWWWW", + "HSHSSSHSWWWWWW", + "HSHSSSHSWWWWWWW", + "SHSTHTHSSSWWWW", + "THTHSSSHSSSWW", + "HSHSSSHSTWW", + "THSTHSSTHSSTWWW", + "THTHSSTHW", + "THSHSSTHSSSWWW", + "HTHTHWWWWWW", + "HSTHSSSTHTWWW", + "HSHSSSHSTWWWWWWW", + "THTHSSTHSSTWWWWWW", + "THTHSTHSSSTWWWW", + "HSHSSSHSS", + "HSHSSSHSSW", + "HSHSSSHSSWWWW", + "THSHSSTHSSSWWWWWWW", + "STHTHSTHSSWWWWW", + "HSHSSSHSSWWWWW", + "THTHSSSTHWWWWW", + "HSHSSSHSSWWWWWWW", + "HTHSSSTHSSTWWWWWW", + "HSHSSSHSSTWW", + "THTHSHSSTW", + "HSTHSTHTWWWWWW", + "HSHSSSHSSTWWWWWWW", + "STHSTHSSSTHSSTW", + "SHSTHTHSSW", + "HSHSSSHSSS", + "SHTHSTHSTWW", + "HSHSTHSWWWWW", + "THSHTHSS", + "THSHSSTHTWWW", + "SWWWWW", + "HSHSSTHSTWWWW", + "HSHSSSHSSSW", + "HSHSSSHSSSWWW", + "HSHSSSHSSSWWWWW", + "THTHSHTWWWW", + "HSHSSSHSSSWWWWWW", + "IWW", + "HSHSSSHSSSWWWWWWW", + "SHTHSSSTHSSSTWWWWWWW", + "HSHSSSHSSSTW", + "THSHTHSSSWWW", + "HSHSSSHSSSTWW", + "HSHSSSHSSSTWWWW", + "THSHSTHSSWW", + "HSHSSSHSSSTWWWWW", + "THSTHSSSTHSW", + "HSTHTHSSSTWWWWW", + "HSHSSSHSSSTWWWWWW", + "HSHSSSHSSSTWWWWWWW", + "HSHSSSTHW", + "THSTHTHSSSW", + "HSTHSTHSTWWWWWWW", + "HSHSSSTHWWWWWW", + "SSTHSSTWWWWWWW", + "HSHSSSTHTW", + "HSHSSSTHTWWWWW", + "THTHSHSSWWWWW", + "HSHSSSTHTWWWWWW", + "STHTHSTHSSSWW", + "HSHSSSTHSSWW", + "THTHSSSTWWWWWW", + "HSHSSSTHSWW", + "HSHSSSTHSWWWW", + "HSHSSSTHSWWWWW", + "THTHSSSTHWWWWWWW", + "HTHSSSTHTWW", + "HSHSSSTHSWWWWWW", + "HSTHSSSTHSSSW", + "THSWWW", + "HSHSSSTHSTW", + "THSTHSTHTWWWWW", + "THTHSSTHWWWWWWW", + "THTHSSTHSSTWWW", + "HSHSSSHTW", + "HSHSSSTHSTWWWW", + "HSHSSSHSSTWWW", + "SSSWWWWWWW", + "THTHSHSSWWWWWW", + "HSHSSSTHSTWWWWW", + "HSHSSSTHSTWWWWWWW", + "THSTHSSTHSSTWWWWWW", + "SHW", + "HSHSSSTHSS", + "HTHSHSSTWW", + "HSHSSSTHSSW", + "HSHSSSTHSSWWW", + "HSHSSSTHSSWWWW", + "THTHS", + "THTHSH", + "THSTHSSSHSSWWW", + "HSHSSSHSSTWWWWW", + "HSHSSSTHSSWWWWW", + "HTHSSSHSSSWW", + "HSTHSSSTHSWWWWW", + "HSHSSSTHSSWWWWWW", + "THTHSSSHSTWWWWW", + "HSHSSSTHSSTW", + "HSHSSSTHSSTWW", + "HSHSSSTHSSTWWWW", + "HSHSSTHSSSWWWWWWW", + "HSHSSSTHSSTWWWWW", + "THSTHSSSHSSW", + "THSHSSTHT", + "THTHTHSSWW", + "HSHSSSTHSSTWWWWWW", + "THSTHTHSSSWWWWWWW", + "HSTHSSTHSSSWWWWWW", + "HSHSSSTHSSTWWWWWWW", + "HSHSSSTHSSS", + "SHTHSSSTHSSSTWW", + "HSHSSSTHSSSW", + "STHSTHSSSTHSTWW", + "THSHSSSTHSTWWWWW", + "HSHSSSTHSSSWWWW", + "THSHTHWWW", + "HSHSSSTHSSSWWWWW", + "THTHTHSSSTWW", + "SHTHSSSTHSSWWWWW", + "HSHSSSTHSSST", + "THTHTHW", + "HSHSSSTHSSSTW", + "SSSTHSTWW", + "THSHSSSTHST", + "HSHSSSTHSSSTWW", + "HTHSWW", + "HSHSSSTHSSSTWWWWW", + "SHSTHSTHTWWWWW", + "HSHSSSTHSSSTWWWWWW", + "HSHSSSTHSSSTWWWWWWW", + "SHTHSSTHSS", + "THSHSSTHWWWWW", + "THSHSSSTHTW", + "HSTHTHSSWW", + "HSTHTHWW", + "HSTHTHWWW", + "THTHSSSHSSSWWWWWW", + "STHSTHSTHSSWW", + "HSTHTHT", + "HSTHSSTHSST", + "HSTHTHTWW", + "HSTHSSSTHWWW", + "HSTHTHS", + "HSTHTHSW", + "HSTHTHSWW", + "THTHSSTHSSSTWWWWWW", + "SSSTHSTWWWW", + "HSTHTHSWWWWWWW", + "HSTHTHST", + "HSTHTHSTWW", + "HSTHTHSTWWW", + "HSTHTHSTWWWWW", + "HSTHTHSTWWWWWW", + "THTHSSSTHSSSTWWW", + "THSTHSTHSSSWWWWWWW", + "THSTHTHT", + "SSSHSSTWWWWWW", + "HSTHTHSTWWWWWWW", + "HSTHTHSSW", + "SHSTHSSSTHSSSWW", + "HSHTHSW", + "HSTHTHSSWWWW", + "HSTHTHSSWWWWWWW", + "THSHTHTW", + "HSTHTHSSTWWW", + "HSTHTHSSTWWWW", + "STHTHSSSTHSSTWWWWWWW", + "HSTHTHSSTWWWWWWW", + "THSTHSSSHTW", + "HSTHTHSSS", + "HSTHTHSSSW", + "HSTHTHSSSWW", + "SSTHSS", + "SSTWWWW", + "HSTHTHSSSWWWWWWW", + "HSTHTHSSSTW", + "HSTHTHSSSTWWW", + "HSTHSTH", + "HSTHSTHWWW", + "HSTHSTHWWWW", + "THSTHSSSHWWW", + "HTHSSSTHSSSTWW", + "HTHSHSTW", + "HSTHSTHT", + "SHSTHSTHWW", + "HSTHSTHTW", + "HSTHSTHTWW", + "HSTHSTHTWWW", + "HSTHSSSTHSSSTWWW", + "THSTHSSSHSSTWW", + "HSTHSTHTWWWW", + "THSHSSSTHSSSTWWWWW", + "HSTHSTHTWWWWW", + "THTHSSSHSSTWWWW", + "THTHSSTHSSWWW", + "HSTHSTHSW", + "HSTHSTHSWW", + "HSTHSTHSWWWWWW", + "THTHSHSSWWWW", + "HSTHSTHSWWWWWWW", + "HSTHSTHST", + "HSHSTHWWWWWWW", + "HSTHSTHSTW", + "THSTHSSSHSWWWWW", + "HSTHSTHSTWW", + "HSTHSTHSTWWW", + "SSSTHTWWWW", + "HSTHSTHSTWWWWW", + "HSHTHSSSTWWWWW", + "THSHSSSTHSWWWW", + "HSTHSTHSTWWWWWW", + "HSTHSTHSSW", + "HSTHSTHSSWW", + "HSTHSTHSSWWWW", + "THSHSSSTHTWWWW", + "SHSTHSSTHSSTWWW", + "SSTHSSSWWWW", + "HSTHSTHSSWWWWW", + "THSTHSSSTHSWWWW", + "HSTHSTHSSWWWWWW", + "HSTHSSTHT", + "THTHSSSTHS", + "HTHSSSHSSWWWWWWW", + "THSHSTHSSSTWWWW", + "HSTHSTHSSTW", + "THSHSTHSTWWWW", + "THTHSSSTH", + "HSTHSTHSSTWWW", + "THSHSTHWWW", + "SHSTHSTHSSSW", + "HTHTHSTWWWWW", + "HSTHSTHSSTWWWW", + "SHSTHSSTHST", + "THSTHSTHSTW", + "THTHSSSTHSSSWWW", + "HSTHSTHSSSWW", + "HSTHSTHSSSWWW", + "HSHTHSWWW", + "HSTHSSTHSSSTWWWW", + "THTHSTHSSTWWWWWWW", + "THTHSSTHSST", + "THSHSSSTHWWW", + "HSTHSTHSSSWWWWW", + "STHSTHSSTHSSS", + "HSTHSTHSSSTW", + "THSTHSSTHW", + "HSTHSTHSSSTWW", + "HSTHSTHSSSTWWW", + "HSTHSTHSSSTWWWWWWW", + "STHTHSSSTHSS", + "HSHSTHSSTWWWWW", + "HSTHSSTH", + "THSTHSSSTHSTWWWWWWW", + "HSHSTHSSWWW", + "HSTHSSTHW", + "SHSSSWWWW", + "THTHSSTWWWWW", + "HSTHSSTHWW", + "THSTHSSSTHTWWWWWW", + "THTHSSSHSSWWW", + "HSTHSSTHWWWWW", + "STHSTHTHSWW", + "THTHTHSSWWWWWW", + "HSTHSSTHWWWWWWW", + "THSHSSSTHW", + "HSTHSSSHSSTWWW", + "HSTHSSTHTWWWW", + "THTHSSTHSSTWW", + "THTHSTHSTWW", + "THTHSSTWWW", + "HSTHSSTHTWWWWW", + "HSTHSSTHSTWWWWW", + "HSTHSSTHTWWWWWW", + "THTHSSSWWWW", + "HSTHSSTHSWWWW", + "HSTHSSTHSWWWWWW", + "SHTHSSSTHSSSWWWWW", + "SSSHTWWWWWW", + "HSTHSSTHSWWWWWWW", + "HSTHSSSHST", + "STHTHSSTHSSSTWWWWWWW", + "THSTHTHST", + "HTHSSSTHSSTWWWWW", + "HSTHSSTHSTW", + "HTHSSTHSSSTWWWWWWW", + "THSHTHSSTWWWWWW", + "STHTHSTHSW", + "HSTHSSTHSTWWW", + "HSTHSSTHSSTWWW", + "SHSTHTHSSSTWWW", + "HSTHSSSHSSTWWWWW", + "STHSSS", + "HSTHSSTHSTWWWWWW", + "HSTHSSTHSTWWWWWWW", + "HSTHSSTHSS", + "STHSTHSSTHWWWWW", + "SHSTHSTHWWWWWW", + "HSTHSSTHSSWW", + "HSTHSSTHSSWWWWW", + "HSTHSSTHSSWWWWWW", + "THTHSHSTWW", + "HSTHSSTHSSWWWWWWW", + "HSTHSSTHSSTW", + "HSTHSSTHSSTWW", + "THSTHSSSTHSWWWWW", + "SSWWWWW", + "HSTHSSTHSSTWWWW", + "STHSTHSTHSSSW", + "HSTHSSTHSSTWWWWW", + "HSTHSSTHSSTWWWWWW", + "STHTHSTHSWWWWWW", + "HSTHSSTHSSS", + "HSTHSSTHSSSWWW", + "SSSTHSSWWWW", + "THTHSTHSTWWWWWW", + "STHSTHSSSTHSTW", + "THTHSHSW", + "SHWWW", + "HSTHSSTHSSSWWWWW", + "HSTHSSTHSSST", + "SHTHSSTHSST", + "THTHTHWWWWWWW", + "SSSTHSSSWWWWWWW", + "HSTHSSTHSSSTWWW", + "HSTHSSTHSSSTWWWWW", + "THWW", + "HSTHTH", + "HSTHSSSHWW", + "HSTHSSSHWWW", + "HSTHSSSHWWWW", + "SSSHTWWWW", + "HSTHSSSHWWWWW", + "HSTHSSSHWWWWWW", + "THSHSSTHWWWWWWW", + "HSTHSSSHWWWWWWW", + "SHTHTHTWWW", + "THSHSTHSSSW", + "HSTHSSSHT", + "HSTHSSSHTW", + "SSHSWWWWWW", + "THSSSTWWWWW", + "HSTHSSSHTWW", + "HSTHSSSHTWWW", + "SHTHTHSWWWWWW", + "HTHSSSHSSTWWWWW", + "HSTHSSSHS", + "STHSTHSTH", + "HSWWWW", + "HSTHSSSTHWWWWW", + "HSTHSSSHSWW", + "HTHSSSWWWW", + "THTHSSTHSSW", + "HSTHSSSHSWWW", + "HSHSSSHS", + "SSSHSW", + "HSTHSSSHSWWWW", + "HSTHSSSHSWWWWWW", + "HTHSHS", + "HSTHSSSHSTWWWWW", + "HSTHSSSHSTWWWWWW", + "HSTHSSSHSTWWWWWWW", + "STHSTHSSSTHSSSWWWWWWW", + "HTHTHSWWWW", + "HSTHSSSHSSWW", + "HSTHSSSTHSTWWWW", + "THTHSSSTHSTWWWWWW", + "STHSTHSSSTHSSWWW", + "HSTHSSSHSSWWW", + "SS", + "HSTHSSSHSSWWWW", + "HTHSSSTHSWWW", + "HTHSTH", + "HSTHSSSHSST", + "HSTHSSSHSSTW", + "SHSTHTHWWWWW", + "HSHSSTHSSSTWWWWW", + "HSTHSSSHSSTWWWW", + "STHSTHTHSSST", + "SHTHSSSTHSTW", + "HSTHSSSHSSTWWWWWW", + "STWW", + "THTHSSSTHSSST", + "HSTHSSSHSSS", + "THSHTHTWWWW", + "THTHSSSHSSSWWW", + "HTHSHSSWWWW", + "HSTHSSSHSSSW", + "HSTHSSSHSSSWW", + "HSTHSSSTHWW", + "STHSSW", + "HSTHSSSHSSSWWWWW", + "HSTHSSSHSSSWWWWWW", + "THTHSSSHSSWWWWWW", + "HSTHSSSHSSST", + "SWWWWWW", + "THTHSHSSTWWWW", + "SSSHSSSWWW", + "HSTHSSSHSSSTW", + "HTHSSTHSSTWWWW", + "THTHSSSTHT", + "HSTHSSSHSSSTWWW", + "HSTHSSSHSSSTWWWW", + "HSTHSSSHSSSTWWWWW", + "HSTHSSSHSSSTWWWWWW", + "THSTHTHSTWWWWW", + "HSTHSSSTH", + "HSTHSSSTHWWWW", + "HSW", + "THTHSSTHTWW", + "SHSTHSSSTHW", + "THTHSSSHTWWWWWWW", + "THTHSSSTHTWWWWWWW", + "HSTHSSSTHWWWWWW", + "STHSWWWWWWW", + "THSHSSTHSWWWWWWW", + "HSTHSSSTHT", + "THSTHSSSHSWWWWWWW", + "THTHSSTHSSWWWWWW", + "HSTHSSSTHTWW", + "HSTHSSTHSTWWWW", + "HSTHSSSTHTWWWW", + "THTHSSTHTWWW", + "SSTHSSWWWWW", + "HSTHSSSTHTWWWWW", + "THSHSTHSSSWWWWW", + "THSHSSTHSSTWWWW", + "STHTHSTHWWWWW", + "THSHSTHSSTWW", + "HSTHSSSTHTWWWWWW", + "HSTHSSSTHSWWW", + "HSTHSSSTHSWWWW", + "HTHSSTHSW", + "THTHSHTWWWWWW", + "HTHSSSTHSSSWWWWW", + "THSHSSTHSSSWWWW", + "SSTWWW", + "HSTHSSSTHSWWWWWW", + "SHSTHTHSSS", + "HSTHSSSTHST", + "SHSTHSSTHSSWWWW", + "HSTHSSSTHSTW", + "THSTHSSTHWWW", + "SSSTHS", + "HSTHSSSTHSTWW", + "THTHSTHSTW", + "STHSTHSSTHSWWW", + "HSTHSSSTHSTWWW", + "THSSST", + "HSTHSSSTHSTWWWWW", + "HSTHSSSTHSTWWWWWW", + "HSTHSSSTHSTWWWWWWW", + "THTHSTWWWW", + "THTHSSSTHSSTWWWWWW", + "HSTHSSSTHSSW", + "HTHTWWW", + "HSTHSSSTHSSWWWWWWW", + "HSTHSSSTHSST", + "THSHSSTHTWWWWWWW", + "HSTHSSSTHSSTW", + "HTHSHSTWWW", + "HSTHSSSTHSSTWW", + "THTHSSSHSSSTWWWWW", + "THTHTHT", + "SHTHSSSTHWWWWW", + "HSTHSSSTHSSTWWWWWW", + "HSTHSSSTHSSSWW", + "HSTHSSSTHSSSWWWW", + "HSTHSSTHSSWWWW", + "HSTHSSSTHSSSWWWWWW", + "HSTHSSSTHSSSWWWWWWW", + "HSTHSSSTHSSSTWWWWW", + "THTHSTHWWWWWW", + "HSHSSSTHWWWWWWW", + "THSHSSTHSWWW", + "HSTHSSSTHSSSTWWWWWW", + "SHSTHSTHSSWWWWW", + "THTHW", + "SSHTWWWWW", + "HSHSSTHST", + "THSHSSSTHWWWWWW", + "THTHWW", + "SHSTWWWWWW", + "THTHSSSTHSSSTW", + "THTHWWW", + "THTHWWWW", + "THTHTW", + "STHSTHTHSTWWWWW", + "SHSTHSSTHSSSW", + "THSTHTHSSTWWW", + "THTHTWW", + "THTHTWWWW", + "HSHSTHSTWWWWWWW", + "THSHSTHSWW", + "THSHSTHSSTWWWWW", + "THTHTWWWWWWW", + "THTHSTHSSSTWWWWWWW", + "HTHSWWWW", + "THTHTH", + "THTHTHWWW", + "THTHTHWWWWW", + "THTHTHTW", + "THTHTHTWW", + "THTHTHTWWW", + "THTHTHTWWWWWW", + "HTHSHSSSTWWW", + "THTHSHSWWWWW", + "THTHTHSW", + "STHTHTHSTWW", + "THTHSSSHTWWWWW", + "THTHTHSWW", + "THTHTHSWWWW", + "THTHTHSWWWWW", + "STHSSWW", + "THTHTHST", + "SHSTHSSTHW", + "THTHTHSTW", + "HSHSSSHSTWWWW", + "THTHTHSTWW", + "THTHTHSTWWW", + "THTHSTHWWW", + "STHTHTHSSTWWWWWW", + "THTHTHSTWWWW", + "THTHTHSTWWWWW", + "THTHTHSS", + "THTHSHSSSTWW", + "STHTHTHSSTW", + "THTHTHSSW", + "THSTHTHSSST", + "THTHTHSSSTWWWWWWW", + "SHSTHTHSSSTWW", + "THTHTHSSWWWWW", + "THTHTHSST", + "THTHSTHSSWW", + "THTHTHSSTW", + "STHTHSSSTHSSSTWWWW", + "THSHTHSSWW", + "THSHSSTHSSSTW", + "THTHTHSSTWW", + "THTHTHSSTWWWW", + "THTHTHSSTWWWWW", + "THTHTHWW", + "THTHTHSSSW", + "HSTHSSSTHSW", + "THTHSTHSSTWWW", + "THTHTHSSSWWWW", + "THSHTHSTWW", + "HSTW", + "THTHTHSSSWWWWWWW", + "HSHSSSTHSWWWWWWW", + "THTHTHSSSTWWWWW", + "HSHSSSHSSTWWWW", + "THTHTHSSSTWWWWWW", + "THTHSW", + "HWWWWWW", + "THTHST", + "SSSTHSSTWWWWWWW", + "THTHSWWW", + "THSTHSTHSSTWWWWWWW", + "THTHSWWWW", + "THTHSWWWWW", + "SHSTHSSSTHWWW", + "THTHSWWWWWW", + "SHSTHSSSTHSTWW", + "THSTHTHSSSTWWWWW", + "THTHSWWWWWWW", + "THSHTHSSSTWW", + "STHSTHSTHSWW", + "HSTHSTHWWWWWW", + "THTHSHW", + "THTHSHWW", + "THTHSHWWWWW", + "THTHSHWWWWWW", + "THTHSHT", + "SHTHSSTHSSTWWWWW", + "THTHSHTW", + "STHSSST", + "THTHSHTWW", + "HTHSSSTWWWWW", + "THTHSHTWWW", + "HTHSHSSTWWWWW", + "THTHSHTWWWWW", + "THTHSHTWWWWWWW", + "THTHSHS", + "HTHTHS", + "THTHTHTWWWW", + "THTHSHSWWW", + "THTHSHSWWWW", + "HTHSHSSSWWWW", + "THTHSHSSSWWWWWWW", + "HTHSTHSSTWWWWW", + "THTHSHST", + "STHSTHSSTHTWWWW", + "HTHSSSHSSWWWWWW", + "THTHSHSTWWWWW", + "THTHSHSTWWWWWW", + "SHTHSSTHSSSTWWWWWWW", + "THTHSHSTWWWWWWW", + "THSTHSSSHSWWW", + "THTHSTHSSS", + "THTHSSTHSSSTWW", + "THTHSHSSW", + "THTHSHSSSTWWWWW", + "SSSTHWWWW", + "THTHSHSSTWWWWW", + "SHTHSTHSSSTWWW", + "SSHSW", + "SSTHSWWWWW", + "THTHSHSSS", + "SHTHTHSSTWWWWW", + "THTHSHSSSWW", + "THTHSHSSSWWW", + "THTHSHSSSWWWW", + "THSTHSSSHSSST", + "HTHSSWWWW", + "THTHSHSSSWWWWW", + "THSTHSSTHSSTWWWWWWW", + "THTHSHSSSTW", + "HSHSSTHSSSTW", + "SHWW", + "THTHSHSSSTWWW", + "HSHTHSSSWWW", + "THTHSHSSSTWWWWWW", + "STHTHSSTHWWW", + "THSHSSSTHSTWWWW", + "THTHSHSSSTWWWWWWW", + "H", + "THTHSTW", + "THTHSTWWW", + "THTHSTWWWWWW", + "THTHSTWWWWWWW", + "THTHSTHW", + "THTHSTHT", + "THTHSTHTWWW", + "STHTHTHSSSWWW", + "SHSTHSTHT", + "THTHSTHTWWWW", + "THTHSSSHWWWWWWW", + "THTHSTHTWWWWW", + "STHSTHSSSTHSW", + "THTHSTHTWWWWWW", + "STHS", + "THTHSTHTWWWWWWW", + "THWWWWW", + "THTHSTHS", + "THTHSTHSW", + "THSHTHSSWWW", + "THTHSTHSWW", + "THSTHSSSTHSSSTWWWW", + "THSTHSSTHSSSWWWWWW", + "THTHSTHSWWW", + "STHSTHSTHSSTWWWW", + "THTHSTHSWWWWW", + "THTHSTHSWWWWWWW", + "THSHTHSSTW", + "THSHSSTHSSSWW", + "THTHSTHST", + "SHSSTWW", + "THTHSSSTHSSTWWWW", + "SHSTHTHSSWW", + "THTHSTHSTWWWW", + "SSSTWWWWWW", + "THTHSTHSS", + "THSTHSTHSSTWWWWWW", + "THTHSTHSSW", + "THTHSSSTWWWW", + "THTHSTHSSWWWW", + "THTHSTHSSWWWWW", + "STWWWWWW", + "THTHSTHSSWWWWWW", + "THTHSTHSST", + "THSHSSTHWWWWWW", + "THTHSTHSSTW", + "SHSTHSSSTHSSTWW", + "HTHTHWW", + "THTHSTHSSTWWWWWW", + "HSHSTHSSTWWWW", + "THTHSTHSSSW", + "SHSTHSTHTWWWWWW", + "HTHSHSSTWWWWWW", + "THTWWWW", + "HSTHSTHSSST", + "HSTHSSSTHSWW", + "THTHSTHSSSWWWWW", + "SHTHSSSTHSSWWWWWWW", + "THTHSTHSSSWWWWWW", + "THTHSTHSSSWWWWWWW", + "THTHSSTW", + "THTHSSTHSTW", + "THTHSTHSSSTWW", + "HSTHSSTHWWW", + "THTHSSSTHSWWWWW", + "SHSTHSTHSSWWW", + "THTHSTHSSSTWWW", + "THTHSTHSSSTWWWWWW", + "THSTHSSSHSTWW", + "SSSTHSSTWWW", + "HSTHSSTHSWW", + "THTHSSSTHSTWWWW", + "THTHSSWW", + "THTHSSWWW", + "THTHSSTWW", + "HSHSSTHSSSWWWWWW", + "THTHSSTWWWWWW", + "THTHSSTWWWW", + "THTHSSTHWW", + "STHSTHSSSTHSSST", + "SHSTHSSTHSSTWWWWWWW", + "THTHSSTHT", + "STHSTHTHSSWW", + "THTHSSSHWW", + "STHTHSTHSSW", + "HTHSSSHSWWWWWWW", + "SHSSTWWWWW", + "THTHSSTHTW", + "THTHSSTHTWWWWW", + "THTHSSTHS", + "THTHSSTHSW", + "THTHSSTHSWW", + "THTHSSTHSWWW", + "THTHSSTHSWWWWW", + "THTHSSTHSWWWWWW", + "HSTHTHSTWWWW", + "THTHSSTHSTWW", + "THSHTHSWWW", + "HSHSSSTHSSWWWWWWW", + "THSHSTH", + "HTHSSSTHSWWWWW", + "HSSTWWWWW", + "THTHSSTHSSWWWW", + "SSSHSSWWWWWW", + "THTHSSTHSSWWWWW", + "THTHSSTHSSTW", + "THTHSSTHSSTWWWW", + "THTHSSTHSSTWWWWW", + "STHSTHSSSTHSSWWWWWW", + "STHTHTHSTWWWWW", + "SHSTHSTHSSTW", + "THTHSSTHSSTWWWWWWW", + "THTHSSTHSSSW", + "THTHSSTHSSSWW", + "HSTHSTHSSWWWWWWW", + "THSHSSSTHSSWWWWWW", + "THTHSSTHSTWWWWWWW", + "THTHSSTHSSST", + "THTHSSTHSSSTWWWWW", + "THTHSSTHSSSTWWWWWWW", + "HTHSSSHTWWWWWWW", + "HTHSHSSW", + "THTHSSS", + "HTHSSSHSTWWWW", + "THSHSSTHSSSWWWWW", + "THTHSSSW", + "THTHSSSWW", + "THTHSSSWWW", + "THSHTHSSSW", + "SHTHSTHST", + "SSSHSSWW", + "THTHSSSWWWWW", + "HSHTHTWW", + "HTHSSSHW", + "THTHSSSWWWWWWW", + "THTHSSSH", + "THTHSSSHWWW", + "STHTHTHSSW", + "SHTHTHSSTWWW", + "HSHSSSHW", + "THSHTHWWWW", + "THTHSSSHWWWW", + "STHTHSSTHTWWWWW", + "HSTHTHSWWWW", + "THTHSSSHT", + "HSTHSSSHSSTWWWWWWW", + "THTHSSSHTW", + "STHTHSSTHSSSTWWWW", + "THSHTHSWWWWW", + "HTHSSSHSSTWWWWWW", + "THTHSSSHTWWWWWW", + "SSHSSSTW", + "THTHSSSHSW", + "THTHSSSHSWWW", + "THTHSSSHSWWWW", + "THTHSSSHSWWWWW", + "THTHSSSHSWWWWWW", + "THTHSSSHSWWWWWWW", + "THTHSSSHSTW", + "THSSSW", + "THTHSSSHSTWWW", + "HTHTHST", + "THTHSSSHSTWWWW", + "THTHSSSTHTWWWWW", + "STHSTHSSTH", + "STHSTHTHS", + "THTHSSSHSS", + "HSHSSSTHSTWW", + "HTHSHSSSTWW", + "THTHSSSHSSWW", + "STHTHSTHSTWWW", + "THSHSTHSSS", + "THTHSSSHSSWWWW", + "THSTHSSSTHSSWWWWWWW", + "THTHSSSHSSWWWWW", + "THTHSSSHSSWWWWWWW", + "SHSTHSSSTHSWWWWW", + "HSTHTHTWWW", + "THSHSTHSSSWWW", + "THTHSSSHSSTWW", + "HSSS", + "THTHSSSHSSTWWWWW", + "THTHSSSHSSTWWWWWW", + "SSTHSSTWWWWW", + "THTHSSSHSSTWWWWWWW", + "HTHSHSSWWWWWW", + "THTHSTWW", + "THTHSSSHSSS", + "THTHSSSHSSSW", + "HSHTHSSWWWWW", + "THTHSSSHSSSWWWWWWW", + "SHSTHTHSSSWWW", + "THTHSSSHS", + "THTHSSSTHSTWWWWWWW", + "THSHSTHSS", + "SHSTHTHSSSTW", + "THTHTHSSSWW", + "SSHSSSWWWWWWW", + "HTHSSSTHTWWWWW", + "HSTHSSSTHTW", + "THTHSSSHSSST", + "SHSTHSTHSWWWWWWW", + "THTHSSSHSSSTWW", + "THTHSSSHSSSTWWW", + "THTHSSSTW", + "HTHSTHSSWWWW", + "SSSTHSSSTWWWW", + "THTHSSSTWWWWWWW", + "STHTHSTHSWWWWW", + "HSHTHST", + "THTHSSSHSSSTWWWW", + "THTHSSSTHW", + "SSHWWWWWWW", + "THTHSSSTHWW", + "STHTHSSSTHSSS", + "STHSST", + "THTHSSSTHWWW", + "SHTHTHSSSWWW", + "THTHSSSTHWWWW", + "THTHSSSTHWWWWWW", + "THTHSSSTHTWWWW", + "HSTHSTHS", + "THTHSSSTHSWWWWWW", + "STHSTHSTHWW", + "THTHSSSTHSWWWWWWW", + "STHSTHSTHSSTWWW", + "HSTHTHWWWWWWW", + "THTHSSSTHST", + "SHSTHSTHW", + "THTHSSSTHSTW", + "THTHSSSTHSTWWWWW", + "THTHSSSTHSS", + "SHSTHSTHTWW", + "THTWWWWWWW", + "THTHSSSTHSSWW", + "THTHSSSTHSSWWW", + "THTHSSSTHSSWWWW", + "THTHSSSTHSSWWWWWWW", + "THTHSSSTHSSSW", + "STHTHSSTHSSSWWWWWWW", + "THTHSSSTHSSSWWWWW", + "HSHSTHTWWW", + "THTHSSSTHSSSTWW", + "THTHSSSTHSSSTWWWW", + "SHTHTHSTWWWWWWW", + "HTHSSSHSSSWWWWWW", + "THTHSSSTHSSSTWWWWWW", + "THTHSSSTHSSSTWWWWWWW", + "THSHTH", + "THSHTHW", + "THSHTHWW", + "THSHTHWWWWWW", + "THSSSTWW", + "THSHTHWWWWWWW", + "HSHSSSTHSSSWW", + "THSHTHT", + "STHSTHSSSTHSSSTWWWW", + "THSHTHTWWW", + "SHTHTHTWW", + "HSTHSTHSSSTWWWW", + "THSHTHTWWWWW", + "THSHTHSSSWW", + "THSHTHTWWWWWWW", + "STHSSSWW", + "SSHSWWW", + "THSHTHS", + "STHSTHSSSTHSSSTWW", + "STHTHSSTHSSSTWWWWWW", + "THSHTHSWWWW", + "SSSHSSSTWW", + "THSHTHSWWWWWW", + "THSHTHSWWWWWWW", + "STHTHSSTHSSTWWWWWW", + "THSHTHST", + "STHSSSTWWWWW", + "THSHSTHSTWW", + "SHTHSTHSSW", + "SSSHSTW", + "THSHTHSTW", + "THSTHSTHTWW", + "THSHTHSTWWWWW", + "THSHTHSTWWWWWWW", + "STHSTHTHSWWWWW", + "THSHTHSSWWWW", + "THSHTHSSWWWWW", + "SSTHSSSTWWWW", + "THSHTHSSWWWWWWW", + "THSHTHSSTWWW", + "THSHTHSSTWWWWWWW", + "THSHTHSSS", + "THSHTHSSSWWWW", + "THTHSSSTWW", + "THSHTHSSSWWWWWW", + "THSHTHSSSWWWWWWW", + "THSHTHSSSTW", + "HSHTHSSST", + "THSHTHSSSTWWW", + "STHTHSSSTHSSSTWW", + "THSHTHSSSTWWWWW", + "STHTHTHWWWWWW", + "THSHSTHWWWWW", + "THSTHSTHTWWWWWW", + "THSHSTHWWWWWWW", + "THSHSTHT", + "THSHSTHTW", + "THSHSTHTWWW", + "STHTWW", + "THSHSTHTWWWWWW", + "THSHSTHS", + "STHTHSTHSSSWWWWWW", + "THSHSTHSTW", + "HTHSSSTHWW", + "THSHSTHSTWWW", + "HSTHSTHSSSWWWW", + "THSHSTHSSST", + "HSTHSTHSSTWW", + "HSTHSSSHSS", + "THSHSTHSTWWWWW", + "THTHSSSHSTWWWWWW", + "THSHSTHSSWWW", + "HTHSSTHSSWWWWW", + "THSHSTHSSWWWW", + "THSHSTHSSWWWWW", + "THSHSTHSSWWWWWW", + "THSHSTHSSWWWWWWW", + "THSHSTHSST", + "SHSTHSSSTHTWWW", + "THSHSTHSSTWWWW", + "THSHSTHSSTWWWWWW", + "HTHSS", + "THSHSTHSSTWWWWWWW", + "THSHSTHSSSWW", + "THSHSTHSSSWWWWWW", + "THSTHSTHSWWWWWWW", + "THSHSSSTHSTWWWWWWW", + "THSHSTHSSSTW", + "THSHSTHSSSTWWWWW", + "THTHSTHSSWWWWWWW", + "THSHSSTH", + "THSTHSTHSSTWWW", + "HSTHTHSWWW", + "THSHSSTHW", + "HTHSTHSSWWWWW", + "THSHSSTHWW", + "HTHSSSWWWWW", + "HTHSSW", + "HSHSSSHSSSTWWW", + "HSHSSSTHWW", + "THSHSSTHWWWW", + "HSHSSSHSTWWWWW", + "THSHSSTHTWW", + "STHSSSTWW", + "THSHSSTHTWWWW", + "SSTHT", + "THSHSSTHSW", + "THSHSSTHSWW", + "THSHSSTHSWWWW", + "HSSSTW", + "THSHSSTHSWWWWW", + "THSHSSTHSWWWWWW", + "SHTHSTHSSTWWWWWW", + "SHTWWWW", + "THSHSSTHST", + "HTHSSTHTW", + "HTHSSSTHTWWW", + "THSHSSTHSTWWWW", + "THSHSSTHSTWWWWWW", + "THSHSSTHSTWWWWWWW", + "HSTHTHSSST", + "THSHSSTHSSW", + "THSHSSTHSSWWWWW", + "SHSW", + "THSHSSTHSSTW", + "THTHSTHWW", + "TW", + "THSHSSTHSSTWW", + "THSHSSTHSSTWWW", + "STHTHTHWWWWW", + "THSHSSTHSSTWWWWW", + "THSHSSTHSSTWWWWWW", + "THSHSSTHSSTWWWWWWW", + "SHSTHSSTHWW", + "THSHSSTHSSSWWWWWW", + "THSHSSTHSSSTWWWWW", + "SHSTHSSSTHSWWWWWWW", + "HSTHSSTHSSSWWWWWWW", + "THSHTHTWWWWWW", + "THSHSSTHSSSTWWWWWWW", + "THSHSTHSSW", + "THSHSSSTHWWWW", + "THSHSSSTHTWW", + "STHTHSSTHSSWWWWWWW", + "SHSTHSSSTHSSSTWWWWWW", + "SHSTHSSTHSST", + "SHTHSSTHSSSWWWW", + "HSTHSSTHSSSTWWWWWWW", + "THSHSSSTHTWWWWWWW", + "THSHSSSTHSW", + "SHWWWW", + "THSHSSSTHSWW", + "HSTHSSTHSSSTWW", + "THSHSSSTHSWWW", + "SSHSSSWWWWWW", + "SSTHSTW", + "THSHSSSTHSWWWWW", + "THSHSSSTHSWWWWWW", + "STHSTHSSTHSSTWWWW", + "THSHSSSTHSWWWWWWW", + "THSTHTHSSSWWWW", + "THSHSSSTHSTWW", + "THSHSSSTHSTWWWWWW", + "HSHSTHTWWWWWW", + "THSHSSSTHSSWW", + "THSHSSSTHSS", + "THTHSSSTHSSTWWW", + "THSHSSSTHSSW", + "SHSWWWWW", + "THSHSSSTHSSWWWWW", + "THSHSSSTHSSWWWWWWW", + "THSHSSSTHSSTW", + "THSTHSSTHSSWWW", + "THSHSSSTHSSTWWW", + "THTHSSSHTWW", + "THSHSSSTHSSTWWWWW", + "THSHSSSTHSSTWWWWWW", + "THSHSSSTHSSTWWWWWWW"}; + +// clang-format on + +inline domega_matrix_table_t load_s3_table() { + using namespace std; + domega_matrix_table_t s3_table; + + for (int i = 0; i < S3_TABLE_SIZE; ++i) { + auto k = S3_TABLE_KEYS[i]; + auto v = S3_TABLE_VALUES[i]; + DOmegaMatrix mat(ZOmega(k[0], k[1], k[2], k[3]), + ZOmega(k[4], k[5], k[6], k[7]), k[8], k[9]); + s3_table[mat] = v; + } + return s3_table; +} + +} // namespace grid_synth +} // namespace staq + +#endif // GRID_SYNTH_S3_TABLE_HPP_ diff --git a/include/synthesis/logic_synthesis.hpp b/include/synthesis/logic_synthesis.hpp index 00b23a2d..caaa00d4 100644 --- a/include/synthesis/logic_synthesis.hpp +++ b/include/synthesis/logic_synthesis.hpp @@ -148,7 +148,7 @@ synthesize_net(parser::Position pos, T& l_net, tweedledum::gg_network q_net; if (!lutn) { std::cerr << "Could not map network into klut network" << std::endl; - return std::move(ret); + return ret; } // Synthesize a gate graph network with 1, 2, and 3 qubit gates using @@ -316,7 +316,7 @@ synthesize_net(parser::Position pos, T& l_net, } }); - return std::move(ret); + return ret; } } /* namespace synthesis */ diff --git a/include/transformations/qasm_synth.hpp b/include/transformations/qasm_synth.hpp index 57dbfc42..62889b6a 100644 --- a/include/transformations/qasm_synth.hpp +++ b/include/transformations/qasm_synth.hpp @@ -34,9 +34,9 @@ #include #include -#include #include "grid_synth/exact_synthesis.hpp" +#include "grid_synth/grid_synth.hpp" #include "grid_synth/rz_approximation.hpp" #include "grid_synth/types.hpp" #include "qasmtools/ast/replacer.hpp" @@ -46,16 +46,15 @@ namespace staq { namespace transformations { namespace ast = qasmtools::ast; -using real_t = staq::grid_synth::real_t; +using namespace grid_synth; /* Implementation */ -class ReplaceRotationsImpl final : public ast::Replacer { +class QASMSynthImpl final : public ast::Replacer { public: - ReplaceRotationsImpl(grid_synth::domega_matrix_table_t& s3_table, - real_t& eps, bool check, bool details, bool verbose) - : s3_table_(s3_table), eps_(eps), check_(check), details_(details), - verbose_(verbose), w_count_(0){}; - ~ReplaceRotationsImpl() = default; + QASMSynthImpl(const GridSynthOptions& opt) + : synthesizer_(make_synthesizer(opt)), w_count_(0), check_(opt.check), + details_(opt.details), verbose_(opt.verbose){}; + ~QASMSynthImpl() = default; void run(ast::ASTNode& node) { node.accept(*this); } @@ -94,18 +93,19 @@ class ReplaceRotationsImpl final : public ast::Replacer { << ": finding approximation for angle = " << (angle) << '\n'; } - std::string rz_approx = get_rz_approx(angle); + std::string op_str = synthesizer_.get_op_str(angle); if (details_) { - std::cerr << gate.pos() << ": found approximation " << rz_approx + std::cerr << gate.pos() << ": found approximation " << op_str << '\n'; } - for (char c : rz_approx) { + for (char c : op_str) { if (c == 'w' || // If the approximation creates w or W gates, c == 'W') { // collect them and output the global phase // later. if (gate.qargs()[0].offset() == std::nullopt) { - std::cerr << "Please inline the qasm code first." + std::cerr << "Please inline the qasm code first and " + "clear declarations." << std::endl; exit(EXIT_FAILURE); } @@ -142,7 +142,7 @@ class ReplaceRotationsImpl final : public ast::Replacer { * This accounts for all collected w and W gates. */ void print_global_phase() { - int a = (w_count_ % 16 + 16) % 16; // Normalize a to the range [0, 16) + int a = get_w_count(); if (a == 0) return; std::cout << "// global-phase: exp i*pi " << a << " " << 8 << std::endl; @@ -164,28 +164,18 @@ class ReplaceRotationsImpl final : public ast::Replacer { #endif } + // Normalize to the range [0, 16) + int get_w_count() const { return (w_count_ % 16 + 16) % 16; } + private: - real_t& eps_; - grid_synth::domega_matrix_table_t& s3_table_; + GridSynthesizer synthesizer_; + int w_count_; bool check_; bool details_; bool verbose_; - std::unordered_map rz_approx_cache_; - int w_count_; - - /** - * Converts a GMP float to a string representation suitable for hashing. - */ - std::string to_string(const mpf_class& x) const { - mp_exp_t exp; - // Use base 32 to get a shorter string. - std::string s = - x.get_str(exp, 32).substr(0, mpf_get_default_prec() / 5); - return s + std::string(" ") + std::to_string(exp); - } /*! - * \brief Makes a new gate with no cargs. + * \brief Copies a gate; gives it a new name and no cargs. * * \param name The name of the new gate. * \param gate The gate to make a copy of. @@ -197,100 +187,16 @@ class ReplaceRotationsImpl final : public ast::Replacer { return std::make_unique(ast::DeclaredGate( gate.pos(), name, std::move(c_args), std::move(q_args))); } - - /*! \brief Find RZ-approximation for an angle using grid_synth. */ - std::string get_rz_approx(const real_t& angle) { - using namespace grid_synth; - - if (verbose_) - std::cerr << "Checking common cases..." - << "\n"; - std::string ret = check_common_cases(angle / gmpf::gmp_pi(), eps_); - if (ret != "") { - if (details_) - std::cerr - << "Angle is multiple of pi/4, answer is known exactly" - << '\n'; - if (check_) - std::cerr << "Check flag = " << 1 << '\n'; - std::string ret_no_spaces; - for (char c : ret) { - if (c != ' ') - ret_no_spaces.push_back(c); - } - return ret_no_spaces; - } - - std::string angle_str = to_string(angle); - if (verbose_) { - std::cerr << "Checking local cache..." << '\n'; - std::cerr << "Angle has string representation " << angle_str - << '\n'; - } - if (rz_approx_cache_.count(angle_str)) { - if (verbose_ || details_) - std::cerr << "Angle is found in local cache" << '\n'; - return rz_approx_cache_[angle_str]; - } - - if (verbose_) - std::cerr << "Running grid_synth to find new rz approximation..." - << '\n'; - RzApproximation rz_approx = - find_fast_rz_approximation(angle / real_t("-2.0"), eps_); - if (!rz_approx.solution_found()) { - std::cerr << "No approximation found for RzApproximation. " - "Try changing factorization effort." - << '\n'; - exit(EXIT_FAILURE); // TODO: change this to fail more gracefully? - } - if (verbose_) - std::cerr << "Approximation found. Synthesizing..." << '\n'; - ret = synthesize(rz_approx.matrix(), s3_table_); - - if (verbose_) - std::cerr << "Synthesis complete." << '\n'; - if (check_) { - std::cerr << "Check flag = " - << (rz_approx.matrix() == - domega_matrix_from_str(full_simplify_str(ret))) - << '\n'; - } - if (details_) { - real_t scale = gmpf::pow(SQRT2, rz_approx.matrix().k()); - std::cerr << "angle = " << std::scientific << angle << '\n'; - std::cerr << rz_approx.matrix(); - std::cerr << "u decimal value = " - << "(" << rz_approx.matrix().u().decimal().real() / scale - << "," << rz_approx.matrix().u().decimal().imag() / scale - << ")" << '\n'; - std::cerr << "t decimal value = " - << "(" << rz_approx.matrix().t().decimal().real() / scale - << "," << rz_approx.matrix().t().decimal().imag() / scale - << ")" << '\n'; - std::cerr << "error = " << rz_approx.error() << '\n'; - str_t simplified = full_simplify_str(ret); - std::string::difference_type n = - count(simplified.begin(), simplified.end(), 'T'); - std::cerr << "T count = " << n << '\n'; - std::cerr << "----" << '\n' << std::fixed; - } - - rz_approx_cache_[angle_str] = ret; - return ret; - } }; /** * Replaces all rx/ry/rz gates in a program with grid_synth approximations. */ -void replace_rotations(ast::ASTNode& node, - grid_synth::domega_matrix_table_t& s3_table, real_t& eps, - bool check = false, bool details = false, - bool verbose = false) { - ReplaceRotationsImpl alg(s3_table, eps, check, details, verbose); +int qasm_synth(ast::ASTNode& node, const GridSynthOptions& opt) { + QASMSynthImpl alg(opt); alg.run(node); alg.print_global_phase(); + return alg.get_w_count(); } } /* namespace transformations */ diff --git a/pystaq/staq_wrapper.cpp b/pystaq/staq_wrapper.cpp index b42b6e52..c518c92b 100644 --- a/pystaq/staq_wrapper.cpp +++ b/pystaq/staq_wrapper.cpp @@ -29,6 +29,7 @@ #endif #include +#include #include #include "qasmtools/parser/parser.hpp" @@ -39,6 +40,12 @@ #include "transformations/inline.hpp" #include "transformations/oracle_synthesizer.hpp" +#ifdef GRID_SYNTH +#include "grid_synth/grid_synth.hpp" +#include "grid_synth/types.hpp" +#include "transformations/qasm_synth.hpp" +#endif + #include "optimization/cnot_resynthesis.hpp" #include "optimization/rotation_folding.hpp" #include "optimization/simplify.hpp" @@ -139,6 +146,14 @@ class Program { void synthesize_oracles() { staq::transformations::synthesize_oracles(*prog_); } +#ifdef GRID_SYNTH + void qasm_synth(long int prec, int factor_effort, bool check, bool details, + bool verbose) { + staq::grid_synth::GridSynthOptions opt{prec, factor_effort, check, + details, verbose}; + staq::transformations::qasm_synth(*prog_, opt); + } +#endif /* GRID_SYNTH */ // output (these methods return a string) std::string get_resources(bool box_gates = false, bool unbox_qelib = false, bool no_merge_dagger = false) { @@ -206,7 +221,34 @@ void rotation_fold(Program& prog, bool no_correction) { void cnot_resynth(Program& prog) { prog.cnot_resynth(); } void simplify(Program& prog, bool no_fixpoint) { prog.simplify(no_fixpoint); } void synthesize_oracles(Program& prog) { prog.synthesize_oracles(); } - +#ifdef GRID_SYNTH +void grid_synth(const std::vector& thetas, long int prec, + int factor_effort, bool check, bool details, bool verbose, + bool timer) { + using namespace staq::grid_synth; + if (verbose) + std::cerr << thetas.size() << " angle(s) read." << '\n'; + GridSynthOptions opt{prec, factor_effort, check, details, verbose, timer}; + GridSynthesizer synthesizer = make_synthesizer(opt); + std::random_device rd; + random_numbers.seed(rd()); + for (const auto& angle : thetas) { + str_t op_str = synthesizer.get_op_str(real_t(angle)); + for (char c : op_str) + std::cout << c << ' '; + std::cout << '\n'; + } +} +void grid_synth(const std::string& theta, long int prec, int factor_effort, + bool check, bool details, bool verbose, bool timer) { + grid_synth(std::vector{theta}, prec, factor_effort, check, + details, verbose, timer); +} +void qasm_synth(Program& prog, long int prec, int factor_effort, bool check, + bool details, bool verbose) { + prog.qasm_synth(prec, factor_effort, check, details, verbose); +} +#endif /* GRID_SYNTH */ std::string lattice_surgery(Program& prog) { return prog.lattice_surgery(); } static double FIDELITY_1 = staq::mapping::FIDELITY_1; @@ -294,6 +336,30 @@ PYBIND11_MODULE(pystaq, m) { py::arg("prog"), py::arg("no_fixpoint") = false); m.def("synthesize_oracles", &synthesize_oracles, "Synthesizes oracles declared by verilog files"); +#ifdef GRID_SYNTH + m.def("grid_synth", + py::overload_cast&, long int, int, + bool, bool, bool, bool>(&grid_synth), + "Approximate Z-rotation angle(s) (in units of PI)", py::arg("theta"), + py::arg("prec"), + py::arg("pollard-rho") = staq::grid_synth::MAX_ATTEMPTS_POLLARD_RHO, + py::arg("check") = false, py::arg("details") = false, + py::arg("verbose") = false, py::arg("timer") = false); + m.def("grid_synth", + py::overload_cast(&grid_synth), + "Approximate Z-rotation angle(s) (in units of PI)", py::arg("theta"), + py::arg("prec"), + py::arg("pollard-rho") = staq::grid_synth::MAX_ATTEMPTS_POLLARD_RHO, + py::arg("check") = false, py::arg("details") = false, + py::arg("verbose") = false, py::arg("timer") = false); + m.def("qasm_synth", &qasm_synth, + "Replaces rx/ry/rz gates with grid_synth approximations", + py::arg("prog"), py::arg("prec"), + py::arg("pollard-rho") = staq::grid_synth::MAX_ATTEMPTS_POLLARD_RHO, + py::arg("check") = false, py::arg("details") = false, + py::arg("verbose") = false); +#endif /* GRID_SYNTH */ m.def("lattice_surgery", &lattice_surgery, "Compiles OpenQASM2 to lattice surgery instruction set", py::arg("prog")); diff --git a/setup.py b/setup.py index 5884780e..ea30dee4 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,42 @@ from pybind11.setup_helpers import Pybind11Extension from setuptools import setup +import ctypes as ct # to call native +import ctypes.util as ctu +import platform # to learn the OS we're on + extra_compile_args = ["-Ilibs", "-Iinclude", "-Iqasmtools/include"] +extra_links_args = [] + + +def _load_shared_obj(name): + """Attempts to load native OQS library.""" + paths = [] + + # search typical locations + paths += [ctu.find_library(name)] + paths += [ctu.find_library("lib" + name)] + dll = ct.windll if platform.system() == "Windows" else ct.cdll + + for path in paths: + if path: + lib = dll.LoadLibrary(path) + return lib + + raise RuntimeError("No " + name + " shared libraries found") + + +found_GMP = True +try: + _libgmp = _load_shared_obj("gmp") + _libgmpxx = _load_shared_obj("gmpxx") +except: + found_GMP = False + +if found_GMP: + extra_compile_args.append("-DGRID_SYNTH") + extra_compile_args.append("-DEXPR_GMP") + extra_links_args = ["-lgmp", "-lgmpxx"] # If the platform seem to be MSVC if sys.platform == "win32" and not sys.platform == "cygwin" and not sys.platform == "msys": @@ -14,6 +49,7 @@ "pystaq", ["pystaq/staq_wrapper.cpp"], extra_compile_args=extra_compile_args, + extra_link_args=extra_links_args, cxx_std=17, include_pybind11=False, ), diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index 5d9f6a97..ac93642f 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -2,16 +2,22 @@ file(GLOB FILENAMES *.cpp) add_custom_target(tools COMMENT "Build all binary tools.") -if (${BUILD_GRID_SYNTH}) - if (MSVC) - # gmp, gmpxx - find_package(PkgConfig REQUIRED) +set(BUILD_GRID_SYNTH OFF) +if (MSVC) + # gmp, gmpxx + find_package(PkgConfig REQUIRED) + if (PkgConfig_FOUND) pkg_check_modules(gmp REQUIRED IMPORTED_TARGET gmp) pkg_check_modules(gmpxx REQUIRED IMPORTED_TARGET gmpxx) - else () - find_package(GMP REQUIRED) + set(BUILD_GRID_SYNTH ON) + add_compile_options("-DEXPR_GMP") + endif () +else () + find_package(GMP REQUIRED) + if (GMP_FOUND) + set(BUILD_GRID_SYNTH ON) + add_compile_options("-DEXPR_GMP") endif () - add_compile_options("-DEXPR_GMP") endif () foreach (filename ${FILENAMES}) diff --git a/tools/grid_synth.cpp b/tools/grid_synth.cpp index b7718f6c..01fd4c2c 100644 --- a/tools/grid_synth.cpp +++ b/tools/grid_synth.cpp @@ -31,45 +31,36 @@ #include #include "grid_synth/exact_synthesis.hpp" +#include "grid_synth/grid_synth.hpp" #include "grid_synth/regions.hpp" #include "grid_synth/rz_approximation.hpp" #include "grid_synth/types.hpp" int main(int argc, char** argv) { - using namespace staq; using namespace grid_synth; bool check = false, details = false, verbose = false, timer = false; - real_t theta, eps; std::vector thetas; - std::vector prec_lst; long int prec; int factor_effort; - domega_matrix_table_t s3_table; - str_t tablefile{}; CLI::App app{"Grid Synthesis"}; CLI::Option* thetas_op = - app.add_option("-t, --theta", thetas, - "Z-rotation angle(s) in units of PI") - ->required(); + app.add_option("theta", thetas, + "Z-rotation angle(s) in units of PI"); CLI::Option* prec_opt = app.add_option( "-p, --precision", prec, "Precision in base ten as a positive integer (10^-p)") ->required(); - CLI::Option* fact_eff = app.add_option( - "--pollard-rho", factor_effort, - "Sets MAX_ATTEMPTS_POLLARD_RHO, the effort " - "taken to factorize candidate solutions (default=200)"); - CLI::Option* read = app.add_option("-r, --read-table", tablefile, - "Name of file containing s3_table"); - CLI::Option* write = - app.add_option("-w, --write-table", tablefile, - "Name of table file to write s3_table to") - ->excludes(read); + CLI::Option* fact_eff = + app.add_option( + "--pollard-rho", factor_effort, + "Sets MAX_ATTEMPTS_POLLARD_RHO, the effort " + "taken to factorize candidate solutions (default=200)") + ->default_val(MAX_ATTEMPTS_POLLARD_RHO); app.add_flag("-c, --check", check, "Output bool that will be 1 if the op string matches the " "input operator"); @@ -84,170 +75,32 @@ int main(int argc, char** argv) { CLI11_PARSE(app, argc, argv); - if (verbose) { - std::cerr << thetas.size() << " angles read." << '\n'; - } - - if (*read) { - if (verbose) { - std::cerr << "Reading s3_table from " << tablefile << '\n'; - } - s3_table = read_s3_table(tablefile); - } else if (*write) { - if (verbose) { - std::cerr << "Generating new table file and writing to " - << tablefile << '\n'; - } - s3_table = generate_s3_table(); - write_s3_table(tablefile, s3_table); - } else if (std::ifstream(DEFAULT_TABLE_FILE)) { - if (verbose) { - std::cerr << "Table file found at default location " - << DEFAULT_TABLE_FILE << '\n'; - } - s3_table = read_s3_table(DEFAULT_TABLE_FILE); - } else { - if (verbose) { - std::cerr << "Failed to find " << DEFAULT_TABLE_FILE - << ". Generating new table file and writing to " - << DEFAULT_TABLE_FILE << '\n'; - } - s3_table = generate_s3_table(); - write_s3_table(DEFAULT_TABLE_FILE, s3_table); - } + if (verbose) + std::cerr << thetas.size() << " angle(s) read." << '\n'; - MP_CONSTS = initialize_constants(prec); - eps = gmpf::pow(real_t(10), -prec); + GridSynthOptions opt{prec, factor_effort, check, details, verbose, timer}; + GridSynthesizer synthesizer = make_synthesizer(opt); - if (*fact_eff) { - MAX_ATTEMPTS_POLLARD_RHO = factor_effort; - } - - if (verbose) { - std::cerr << "Runtime Parameters" << '\n'; - std::cerr << "------------------" << '\n'; - std::cerr << std::setw(3 * COLW) << std::left - << "TOL (Tolerance for float equality) " << std::setw(1) - << ": " << std::setw(3 * COLW) << std::left << std::scientific - << TOL << '\n'; - std::cerr << std::setw(3 * COLW) << std::left - << "KMIN (Minimum scaling exponent) " << std::setw(1) << ": " - << std::setw(3 * COLW) << std::left << std::fixed << KMIN - << '\n'; - std::cerr << std::setw(2 * COLW) << std::left - << "KMAX (Maximum scaling exponent) " << std::setw(1) << ": " - << std::setw(3 * COLW) << std::left << std::fixed << KMAX - << '\n'; - std::cerr << std::setw(3 * COLW) << std::left - << "MAX_ATTEMPTS_POLLARD_RHO (How hard we try to factor) " - << std::setw(1) << ": " << std::setw(3 * COLW) << std::left - << MAX_ATTEMPTS_POLLARD_RHO << '\n'; - std::cerr << std::setw(3 * COLW) << std::left - << "MAX_ITERATIONS_FERMAT_TEST (How hard we try to check " - "primality) " - << std::setw(1) << ": " << std::setw(3 * COLW) << std::left - << MAX_ITERATIONS_FERMAT_TEST << '\n'; - } - std::cerr << std::scientific; - - long long duration = 0; if (*prec_opt && *thetas_op) { std::random_device rd; random_numbers.seed(rd()); for (const auto& angle : thetas) { - str_t common_case = check_common_cases(real_t(angle), eps); - if (verbose) - std::cerr << "Checking common cases..." << '\n'; - if (common_case != "") { - if (details) - std::cerr - << "Angle is multiple of pi/4, answer is known exactly" - << '\n'; - if (check) { - std::cerr << "Check flag = " << 1 << '\n'; - } - std::cout << common_case << '\n'; - return 0; - } - if (verbose) - std::cerr << "No common cases found" << '\n'; - - RzApproximation rz_approx; - if (timer) { - auto start = std::chrono::steady_clock::now(); - rz_approx = find_fast_rz_approximation( - real_t(angle) * PI / real_t("-2"), eps); - str_t op_str = synthesize(rz_approx.matrix(), s3_table); - auto end = std::chrono::steady_clock::now(); - duration += - std::chrono::duration_cast(end - - start) - .count(); - } else { - if (verbose) { - std::cerr << "----\n"; - std::cerr << "Finding approximation for angle = " << (angle) - << "..." << '\n'; - } - rz_approx = find_fast_rz_approximation( - real_t(angle) * PI / real_t("-2"), eps); - if (!rz_approx.solution_found()) { - std::cerr << "No approximation found for RzApproximation. " - "Try changing factorization effort." - << '\n'; - return EXIT_FAILURE; - } - if (verbose) { - std::cerr << "Approximation found. Synthesizing..." << '\n'; - } - str_t op_str = synthesize(rz_approx.matrix(), s3_table); - if (verbose) { - std::cerr << "Synthesis complete." << '\n'; - } - - if (check) { - std::cerr - << "Check flag = " - << (rz_approx.matrix() == - domega_matrix_from_str(full_simplify_str(op_str))) - << '\n'; - } - - if (details) { - real_t scale = gmpf::pow(SQRT2, rz_approx.matrix().k()); - std::cerr << "angle = " << angle << '\n'; - std::cerr << rz_approx.matrix(); - std::cerr << "u decimal value = " - << "(" - << rz_approx.matrix().u().decimal().real() / scale - << "," - << rz_approx.matrix().u().decimal().imag() / scale - << ")" << '\n'; - std::cerr << "t decimal value = " - << "(" - << rz_approx.matrix().t().decimal().real() / scale - << "," - << rz_approx.matrix().t().decimal().imag() / scale - << ")" << '\n'; - std::cerr << "error = " << rz_approx.error() << '\n'; - str_t simplified = full_simplify_str(op_str); - std::string::difference_type n = - count(simplified.begin(), simplified.end(), 'T'); - std::cerr << "T count = " << n << '\n'; - std::cerr << "----" << '\n'; - } - - for (auto& ch : full_simplify_str(op_str)) { - std::cout << ch << " "; - } - std::cout << '\n'; - } + str_t op_str = + synthesizer.get_op_str(real_t(angle) * gmpf::gmp_pi()); + for (char c : op_str) + std::cout << c << ' '; + std::cout << '\n'; } } if (timer) { - std::cerr << "Duration = " << (static_cast(duration) / 1e6) - << '\n'; + std::cerr << std::fixed + << "Duration = " << synthesizer.get_duration() + << " seconds" << '\n'; + } + else { + std::cerr << "No angle provided. Exiting.\n"; + return 0; } } diff --git a/tools/qasm_synth.cpp b/tools/qasm_synth.cpp index 732fc852..b755f22a 100644 --- a/tools/qasm_synth.cpp +++ b/tools/qasm_synth.cpp @@ -38,31 +38,23 @@ int main(int argc, char** argv) { using qasmtools::parser::parse_stdin; bool check = false, details = false, verbose = false; - real_t eps; long int prec; int factor_effort; domega_matrix_table_t s3_table; - str_t tablefile{}; CLI::App app{"Grid Synthesis rx/ry/rz substitution"}; - // this interface is more or less identical to that of grid_synth.cpp - // TODO: consider factoring out duplicated code? CLI::Option* prec_opt = app.add_option( "-p, --precision", prec, "Precision in base ten as a positive integer (10^-p)") ->required(); - CLI::Option* fact_eff = app.add_option( - "--pollard-rho", factor_effort, - "Sets MAX_ATTEMPTS_POLLARD_RHO, the effort " - "taken to factorize candidate solutions (default=200)"); - CLI::Option* read = app.add_option("-r, --read-table", tablefile, - "Name of file containing s3_table"); - CLI::Option* write = - app.add_option("-w, --write-table", tablefile, - "Name of table file to write s3_table to") - ->excludes(read); + CLI::Option* fact_eff = + app.add_option( + "--pollard-rho", factor_effort, + "Sets MAX_ATTEMPTS_POLLARD_RHO, the effort " + "taken to factorize candidate solutions (default=200)") + ->default_val(MAX_ATTEMPTS_POLLARD_RHO); app.add_flag("-c, --check", check, "Output bool that will be 1 if the op string matches the " "input operator"); @@ -76,75 +68,16 @@ int main(int argc, char** argv) { CLI11_PARSE(app, argc, argv); - if (*read) { - if (verbose) { - std::cerr << "Reading s3_table from " << tablefile << '\n'; - } - s3_table = read_s3_table(tablefile); - } else if (*write) { - if (verbose) { - std::cerr << "Generating new table file and writing to " - << tablefile << '\n'; - } - s3_table = generate_s3_table(); - write_s3_table(tablefile, s3_table); - } else if (std::ifstream(DEFAULT_TABLE_FILE)) { - if (verbose) { - std::cerr << "Table file found at default location " - << DEFAULT_TABLE_FILE << '\n'; - } - s3_table = read_s3_table(DEFAULT_TABLE_FILE); - } else { - if (verbose) { - std::cerr << "Failed to find " << DEFAULT_TABLE_FILE - << ". Generating new table file and writing to " - << DEFAULT_TABLE_FILE << '\n'; - } - s3_table = generate_s3_table(); - write_s3_table(DEFAULT_TABLE_FILE, s3_table); - } - - MP_CONSTS = initialize_constants(prec); - eps = gmpf::pow(real_t(10), -prec); - - if (*fact_eff) { - MAX_ATTEMPTS_POLLARD_RHO = factor_effort; - } - - if (verbose) { - std::cerr << "Runtime Parameters" << '\n'; - std::cerr << "------------------" << '\n'; - std::cerr << std::setw(3 * COLW) << std::left - << "TOL (Tolerance for float equality) " << std::setw(1) - << ": " << std::setw(3 * COLW) << std::left << std::scientific - << TOL << '\n'; - std::cerr << std::setw(3 * COLW) << std::left - << "KMIN (Minimum scaling exponent) " << std::setw(1) << ": " - << std::setw(3 * COLW) << std::left << std::fixed << KMIN - << '\n'; - std::cerr << std::setw(2 * COLW) << std::left - << "KMAX (Maximum scaling exponent) " << std::setw(1) << ": " - << std::setw(3 * COLW) << std::left << std::fixed << KMAX - << '\n'; - std::cerr << std::setw(3 * COLW) << std::left - << "MAX_ATTEMPTS_POLLARD_RHO (How hard we try to factor) " - << std::setw(1) << ": " << std::setw(3 * COLW) << std::left - << MAX_ATTEMPTS_POLLARD_RHO << '\n'; - std::cerr << std::setw(3 * COLW) << std::left - << "MAX_ITERATIONS_FERMAT_TEST (How hard we try to check " - "primality) " - << std::setw(1) << ": " << std::setw(3 * COLW) << std::left - << MAX_ITERATIONS_FERMAT_TEST << '\n'; - } - std::cerr << std::scientific; + GridSynthOptions opt{prec, factor_effort, check, details, verbose}; - auto program = parse_stdin("", true); // parse stdin using GMP + // Must initialize constants before parsing stdin using GMP + MP_CONSTS = initialize_constants(opt.prec); + auto program = parse_stdin("", true); if (program) { - transformations::replace_rotations(*program, s3_table, eps, check, - details, verbose); + transformations::qasm_synth(*program, opt); std::cout << *program; } else { std::cerr << "Parsing failed\n"; - return 1; + return EXIT_FAILURE; } } diff --git a/unit_tests/CMakeLists.txt b/unit_tests/CMakeLists.txt index f2a6014b..5c7d91bf 100644 --- a/unit_tests/CMakeLists.txt +++ b/unit_tests/CMakeLists.txt @@ -9,14 +9,21 @@ if (MSVC) endif () endif () -if (${BUILD_GRID_SYNTH}) - if (MSVC) - # gmp, gmpxx - find_package(PkgConfig REQUIRED) +set(BUILD_GRID_SYNTH OFF) +if (MSVC) + # gmp, gmpxx + find_package(PkgConfig REQUIRED) + if (PkgConfig_FOUND) pkg_check_modules(gmp REQUIRED IMPORTED_TARGET gmp) pkg_check_modules(gmpxx REQUIRED IMPORTED_TARGET gmpxx) - else () - find_package(GMP REQUIRED) + set(BUILD_GRID_SYNTH ON) + add_compile_options("-DEXPR_GMP") + endif () +else () + find_package(GMP REQUIRED) + if (GMP_FOUND) + set(BUILD_GRID_SYNTH ON) + add_compile_options("-DEXPR_GMP") endif () endif () diff --git a/unit_tests/tests/grid_synth/grid_synth.cpp b/unit_tests/tests/grid_synth/grid_synth.cpp new file mode 100644 index 00000000..6655096a --- /dev/null +++ b/unit_tests/tests/grid_synth/grid_synth.cpp @@ -0,0 +1,38 @@ +#include "grid_synth/grid_synth.hpp" +#include "gtest/gtest.h" + +using namespace staq; +using namespace grid_synth; + +// Synthesize multiples of pi/4 +TEST(GridSynth, ExactSynthesis) { + GridSynthOptions opt{100, 200, false, false, false, false}; + GridSynthesizer synthesizer = make_synthesizer(opt); + + for (int i = -20; i <= 20; ++i) { + real_t angle = real_t(i) / real_t(4); + str_t op_str = synthesizer.get_op_str(angle * gmpf::gmp_pi()); + real_t eps = gmpf::pow(real_t(10), -100); + str_t common_case = check_common_cases(angle, eps); + EXPECT_TRUE(op_str == common_case); + } +} + +// Synthesize other angles +TEST(GridSynth, InexactSynthesis) { + GridSynthOptions opt{100, 200, false, false, false, false}; + GridSynthesizer synthesizer = make_synthesizer(opt); + EXPECT_TRUE(synthesizer.is_valid()); + + synthesizer.get_op_str(real_t("0.3")); + EXPECT_TRUE(synthesizer.is_valid()); + + synthesizer.get_op_str(real_t("0.3")); + EXPECT_TRUE(synthesizer.is_valid()); + + synthesizer.get_op_str(real_t("5.3423")); + EXPECT_TRUE(synthesizer.is_valid()); + + synthesizer.get_op_str(real_t("-5.3123")); + EXPECT_TRUE(synthesizer.is_valid()); +} diff --git a/unit_tests/tests/grid_synth/qasm_synth.cpp b/unit_tests/tests/grid_synth/qasm_synth.cpp new file mode 100644 index 00000000..68ac01c3 --- /dev/null +++ b/unit_tests/tests/grid_synth/qasm_synth.cpp @@ -0,0 +1,154 @@ +#include "gtest/gtest.h" + +#include "qasmtools/parser/parser.hpp" +#include "transformations/qasm_synth.hpp" + +using namespace staq; +using namespace grid_synth; +using qasmtools::parser::parse_string; + +// Tests rz gate replacement. +// A multiple of pi/4 is used so that the result is deterministic. +TEST(QasmSynth, ExactSynthesis) { + std::string pre = "OPENQASM 2.0;\n" + "include \"qelib1.inc\";\n" + "\n" + "qreg q[2];\n" + "rz(2*pi/4) q[0];\n"; + + std::string post = "OPENQASM 2.0;\n" + "include \"qelib1.inc\";\n" + "\n" + "qreg q[2];\n" + "s q[0];\n"; + + auto program = parse_string(pre, "exact_synthesis.qasm"); + GridSynthOptions opt{100, 200, false, false, false, false}; + int w_count = transformations::qasm_synth(*program, opt); + EXPECT_EQ(w_count, 14); + + std::stringstream ss; + ss << *program; + EXPECT_EQ(ss.str(), post); +} + +// Tests collection of w and W gates into the global phase. +TEST(QasmSynth, GlobalPhase) { + std::string pre = "OPENQASM 2.0;\n" + "include \"qelib1.inc\";\n" + "\n" + "qreg q[2];\n" + "rz(pi/2) q[0];\n" // phase += 14/8 + "rz(pi/4) q[0];\n"; // phase -= 1/8 + + // 32 of these gates should not modify the global phase + for (int i = 0; i < 32; ++i) { + pre += "rz(pi/2) q[0];\n"; + } + + auto program = parse_string(pre, "global_phase.qasm"); + GridSynthOptions opt{100, 200, false, false, false, false}; + int w_count = transformations::qasm_synth(*program, opt); + EXPECT_EQ(w_count, 13); // phase should be 13/8 +} + +// Tests rz gate replacement when the exact solution is not known. +// Also tests GMP expression parsing, and angle caching in GridSynthesizer. +TEST(QasmSynth, InexactSynthesis) { + std::string pre = "OPENQASM 2.0;\n" + "include \"qelib1.inc\";\n" + "\n" + "qreg q[2];\n" + "rz(-0.3) q[0];\n" // These three rz gates all + "rz(-3/10) q[0];\n" // have the same angle + "rz(9*-27/100*10/81) q[0];\n"; + + auto program = parse_string(pre, "inexact_synthesis.qasm"); + GridSynthOptions opt{5, 200, false, false, false, false}; + transformations::qasm_synth(*program, opt); + std::stringstream ss; + ss << *program; + + // Grab the rz gate replacements. + std::vector gates; + std::string line; + bool push = false; + while (getline(ss, line)) { + if (push) { + gates.push_back(line); + } else if (line == "qreg q[2];") { + push = true; + } + } + + // Although rz inexact synthesis is non-deterministic, these rz gates have + // the same angle, and thus they should have the same replacement due to + // GridSynthesizer angle caching. + int N = gates.size(); + EXPECT_TRUE(N > 1); + EXPECT_TRUE(N % 3 == 0); + for (int i = 0; i < gates.size() / 3; ++i) { + EXPECT_EQ(gates[i], gates[i + N / 3]); + EXPECT_EQ(gates[i], gates[i + 2 * N / 3]); + } +} + +// Tests rx gate replacement. +// A multiple of pi/4 is used so that the result is deterministic. +TEST(QasmSynth, rx) { + std::string pre = "OPENQASM 2.0;\n" + "include \"qelib1.inc\";\n" + "\n" + "qreg q[2];\n" + "rx(pi) q[1];\n"; + + std::string post = "OPENQASM 2.0;\n" + "include \"qelib1.inc\";\n" + "\n" + "qreg q[2];\n" + "h q[1];\n" + "s q[1];\n" + "s q[1];\n" + "h q[1];\n"; + + auto program = parse_string(pre, "exact_synthesis.qasm"); + GridSynthOptions opt{100, 200, false, false, false, false}; + int w_count = transformations::qasm_synth(*program, opt); + EXPECT_EQ(w_count, 12); + + std::stringstream ss; + ss << *program; + EXPECT_EQ(ss.str(), post); +} + +// Tests ry gate replacement. +// A multiple of pi/4 is used so that the result is deterministic. +// Also tests logic for handling common cases in the range [2,4). +TEST(QasmSynth, ry) { + std::string pre = "OPENQASM 2.0;\n" + "include \"qelib1.inc\";\n" + "\n" + "qreg q[2];\n" + "ry(15/2*pi) q[1];\n"; + + std::string post = "OPENQASM 2.0;\n" + "include \"qelib1.inc\";\n" + "\n" + "qreg q[2];\n" + "s q[1];\n" + "h q[1];\n" + "s q[1];\n" + "s q[1];\n" + "s q[1];\n" + "h q[1];\n" + "sdg q[1];\n"; + + auto program = parse_string(pre, "exact_synthesis.qasm"); + GridSynthOptions opt{100, 200, false, false, false, false}; + int w_count = transformations::qasm_synth(*program, opt); + EXPECT_EQ(w_count, 2); + + std::stringstream ss; + ss << *program; + EXPECT_EQ(ss.str(), post); +}