From 179dc85fe768f07da8c557de78aff29869386ef4 Mon Sep 17 00:00:00 2001 From: "Drew P. Kouri" Date: Tue, 21 Apr 2020 13:10:20 -0600 Subject: [PATCH 01/19] Updated binary advection-diffusion example. --- .../pebbl/src/algorithm/ROL_PEBBL_Driver.hpp | 12 + .../src/algorithm/ROL_PEBBL_Interface.hpp | 9 +- .../binary/adv-diff-TEST/CMakeLists.txt | 19 +- .../binary/adv-diff-TEST/branchHelper.hpp | 7 +- .../binary/adv-diff-TEST/branching.hpp | 207 +++++++++ .../binary/adv-diff-TEST/example_01.cpp | 59 ++- .../PDE-OPT/binary/adv-diff-TEST/femdata.hpp | 290 +++++++++++++ .../binary/adv-diff-TEST/input_ex01.xml | 128 ++++-- .../binary/adv-diff-TEST/misfit_robj.hpp | 159 +++++++ .../PDE-OPT/binary/adv-diff-TEST/objsum.hpp | 129 ++++++ .../binary/adv-diff-TEST/opfactory.hpp | 164 +++---- .../binary/adv-diff-TEST/pde_adv_diff.hpp | 140 +++--- .../PDE-OPT/binary/adv-diff-TEST/plotPEBBL.m | 24 ++ .../binary/adv-diff-TEST/qoi_adv_diff.hpp | 387 ++++++++++------- .../PDE-OPT/binary/adv-diff-TEST/run.sh | 17 + .../PDE-OPT/binary/adv-diff-TEST/sensor.txt | 400 +++++++++--------- .../binary/adv-diff-TEST/transform.hpp | 7 +- 17 files changed, 1555 insertions(+), 603 deletions(-) create mode 100644 packages/rol/example/PDE-OPT/binary/adv-diff-TEST/branching.hpp create mode 100644 packages/rol/example/PDE-OPT/binary/adv-diff-TEST/femdata.hpp create mode 100644 packages/rol/example/PDE-OPT/binary/adv-diff-TEST/misfit_robj.hpp create mode 100644 packages/rol/example/PDE-OPT/binary/adv-diff-TEST/objsum.hpp create mode 100644 packages/rol/example/PDE-OPT/binary/adv-diff-TEST/plotPEBBL.m create mode 100755 packages/rol/example/PDE-OPT/binary/adv-diff-TEST/run.sh diff --git a/packages/rol/adapters/pebbl/src/algorithm/ROL_PEBBL_Driver.hpp b/packages/rol/adapters/pebbl/src/algorithm/ROL_PEBBL_Driver.hpp index 0212fd2b9acb..c85de62967c5 100644 --- a/packages/rol/adapters/pebbl/src/algorithm/ROL_PEBBL_Driver.hpp +++ b/packages/rol/adapters/pebbl/src/algorithm/ROL_PEBBL_Driver.hpp @@ -26,6 +26,9 @@ class ROL_PEBBL_Driver { public: + ROL_PEBBL_Driver(const Ptr> &branching) + : branching_(branching) {} + ROL_PEBBL_Driver(const Ptr> &factory, const Ptr &parlist, const Ptr> &bHelper, @@ -46,6 +49,15 @@ class ROL_PEBBL_Driver { } return flag; } + + const Ptr> getSolution(void) const { + if (branching_ != nullPtr) { + return dynamic_cast*>(branching_->incumbent)->getVector(); + } + else { + return nullPtr; + } + } }; } diff --git a/packages/rol/adapters/pebbl/src/algorithm/ROL_PEBBL_Interface.hpp b/packages/rol/adapters/pebbl/src/algorithm/ROL_PEBBL_Interface.hpp index eb605bf6fb6c..a71b4c60996f 100644 --- a/packages/rol/adapters/pebbl/src/algorithm/ROL_PEBBL_Interface.hpp +++ b/packages/rol/adapters/pebbl/src/algorithm/ROL_PEBBL_Interface.hpp @@ -75,7 +75,7 @@ class ROL_PEBBL_Solution : public pebbl::solution { template class ROL_PEBBL_Branching : public pebbl::branching { -private: +protected: // OptimizationProblem encapsulates the following problem // min obj(x) // subject to xl <= x <= xu @@ -99,7 +99,7 @@ class ROL_PEBBL_Branching : public pebbl::branching { : factory_(factory), parlist_(parlist), bHelper_(bHelper), verbosity_(verbosity), outStream_(outStream) {} - pebbl::branchSub* blankSub() { + virtual pebbl::branchSub* blankSub() { return new ROL_PEBBL_BranchSub(makePtrFromRef>(*this),verbosity_,outStream_); } @@ -126,7 +126,7 @@ class ROL_PEBBL_Branching : public pebbl::branching { template class ROL_PEBBL_BranchSub : public pebbl::branchSub { -private: +protected: const Ptr> branching_; const Ptr> bHelper_; std::map fixed_; @@ -306,10 +306,11 @@ class ROL_PEBBL_BranchSub : public pebbl::branchSub { return (nfrac_==0); } - void incumbentHeuristic() { + virtual void incumbentHeuristic() { Real tol(std::sqrt(ROL_EPSILON())); rndSolution_->set(*solution_); rndSolution_->applyUnary(rnd); + problem0_->getObjective()->update(*rndSolution_); Real val = problem0_->getObjective()->value(*rndSolution_,tol); branching_->foundSolution(new ROL_PEBBL_Solution(*rndSolution_,val)); } diff --git a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/CMakeLists.txt b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/CMakeLists.txt index ba5f08fd38c9..03099f4cd77e 100644 --- a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/CMakeLists.txt +++ b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/CMakeLists.txt @@ -35,19 +35,22 @@ IF(${PROJECT_NAME}_ENABLE_Intrepid AND ADD_DIR_TO_NAME ) - TRIBITS_ADD_EXECUTABLE_AND_TEST( - SumUpRounding - SOURCES example_02.cpp - ARGS PrintItAll - NUM_MPI_PROCS 4 - PASS_REGULAR_EXPRESSION "TEST PASSED" - ADD_DIR_TO_NAME - ) +# TRIBITS_ADD_EXECUTABLE_AND_TEST( +# SumUpRounding +# SOURCES example_02.cpp +# ARGS PrintItAll +# NUM_MPI_PROCS 4 +# PASS_REGULAR_EXPRESSION "TEST PASSED" +# ADD_DIR_TO_NAME +# ) TRIBITS_COPY_FILES_TO_BINARY_DIR( BinaryAdvTESTDiffDataCopy SOURCE_FILES input_ex01.xml + sensor.txt + run.sh + plotPEBBL.m SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" DEST_DIR "${CMAKE_CURRENT_BINARY_DIR}" ) diff --git a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/branchHelper.hpp b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/branchHelper.hpp index 13a4f4e440c0..d86c66dd7b90 100644 --- a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/branchHelper.hpp +++ b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/branchHelper.hpp @@ -51,7 +51,12 @@ template class PDEOPT_BranchHelper_PEBBL : public ROL::StdBranchHelper_PEBBL { private: ROL::Ptr> getParameter(const ROL::Vector &x) const { - return dynamic_cast&>(x).getParameter(); + try { + return ROL::makePtrFromRef(dynamic_cast&>(x)); + } + catch (std::exception &e) { + return dynamic_cast&>(x).getParameter(); + } } public: diff --git a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/branching.hpp b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/branching.hpp new file mode 100644 index 000000000000..246473110330 --- /dev/null +++ b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/branching.hpp @@ -0,0 +1,207 @@ +// @HEADER +// ************************************************************************ +// +// Rapid Optimization Library (ROL) Package +// Copyright (2014) Sandia Corporation +// +// Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive +// license for use of this work by or on behalf of the U.S. Government. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact lead developers: +// Drew Kouri (dpkouri@sandia.gov) and +// Denis Ridzal (dridzal@sandia.gov) +// +// ************************************************************************ +// @HEADER + +#ifndef ROL_PDEOPT_BRANCHING_PEBBL_H +#define ROL_PDEOPT_BRANCHING_PEBBL_H + +#include "ROL_PEBBL_Interface.hpp" + +template +class ADVDIFF_BranchSub; + +template +class ADVDIFF_Branching : public ROL::ROL_PEBBL_Branching { +private: + const int method_; + + using ROL::ROL_PEBBL_Branching::verbosity_; + using ROL::ROL_PEBBL_Branching::outStream_; + +public: + ADVDIFF_Branching(const ROL::Ptr> &factory, + const ROL::Ptr &parlist, + const ROL::Ptr> &bHelper, + int verbosity = 0, + const ROL::Ptr &outStream = ROL::nullPtr, + int method = 0) + : ROL::ROL_PEBBL_Branching::ROL_PEBBL_Branching(factory,parlist,bHelper,verbosity,outStream), + method_(method) {} + + pebbl::branchSub* blankSub() { + return new ADVDIFF_BranchSub(ROL::makePtrFromRef>(*this),verbosity_,outStream_,method_); + } +}; // ADVDIFF_Branching + +template +class ADVDIFF_BranchSub : public ROL::ROL_PEBBL_BranchSub { +private: + const int method_; + std::string methodName_; + + using ROL::ROL_PEBBL_BranchSub::branching_; + using ROL::ROL_PEBBL_BranchSub::problem0_; + using ROL::ROL_PEBBL_BranchSub::solution_; + using ROL::ROL_PEBBL_BranchSub::rndSolution_; + using ROL::ROL_PEBBL_BranchSub::verbosity_; + using ROL::ROL_PEBBL_BranchSub::outStream_; + + void round(ROL::Vector &rx, const ROL::Vector &x, Real t) const { + rx.set(x); + ROL::Ptr> data = getParameter(rx); + Real val(0); + for (auto it = data->begin(); it != data->end(); ++it) { + val = *it; + *it = (val < t ? std::floor(val) : std::ceil(val)); + } + } + + ROL::Ptr> getParameter(const ROL::Vector &x) const { + try { + return dynamic_cast&>(x).getVector(); + } + catch (std::exception &e) { + return dynamic_cast&>(x).getParameter()->getVector(); + } + } + + ROL::Ptr> getParameter(ROL::Vector &x) const { + try { + return dynamic_cast&>(x).getVector(); + } + catch (std::exception &e) { + return dynamic_cast&>(x).getParameter()->getVector(); + } + } + +public: + ADVDIFF_BranchSub(const ROL::Ptr> &branching, + int verbosity = 0, + const ROL::Ptr &outStream = ROL::nullPtr, + int method = 0) + : ROL::ROL_PEBBL_BranchSub(branching, verbosity, outStream), method_(method) { + switch (method_) { + case 1: methodName_ = "Mass Preserving Rounding"; break; + case 2: methodName_ = "Objective Gap Rounding"; break; + default: methodName_ = "Naive Rounding"; + } + } + + ADVDIFF_BranchSub(const ADVDIFF_BranchSub &rpbs) + : ROL::ROL_PEBBL_BranchSub(rpbs), method_(rpbs.method_) {} + + void incumbentHeuristic() { + Real tol = std::sqrt(ROL::ROL_EPSILON()); + Real t(0), val(0); + if (method_==1) { // mass preserving rounding + const Real zero(0), one(1); + rndSolution_->set(*solution_); + ROL::Ptr> data = getParameter(*rndSolution_); + std::map sdata; + Real sum(0); + for (size_t i = 0; i < data->size(); ++i) { + sdata.insert(std::pair((*data)[i],i)); + sum += (*data)[i]; + } + int rsum = static_cast(std::round(sum)), psum(0); + for (auto it = sdata.rbegin(); it != sdata.rend(); ++it) { + (*data)[it->second] = (psum < rsum ? one : zero); + t = (psum < rsum ? it->first : t); + psum++; + } + } + else if (method_==2) { // objective gap rounding + const Real invphi(0.5*(std::sqrt(5.0)-1.0)); + const Real invphi2(0.5*(3.0-std::sqrt(5.0))); + const Real itol(std::sqrt(ROL::ROL_EPSILON())); + Real a(0), b(1), c(0), d(1), h(b-a), fc(0), fd(0); + // Evaluate at c + c = a + invphi2 * h; + round(*rndSolution_,*solution_,c); + problem0_->getObjective()->update(*rndSolution_); + fc = problem0_->getObjective()->value(*rndSolution_,tol); + // Evaluate at d + d = a + invphi * h; + round(*rndSolution_,*solution_,d); + problem0_->getObjective()->update(*rndSolution_); + fd = problem0_->getObjective()->value(*rndSolution_,tol); + while (std::abs(c-d) > itol) { + h *= invphi; + if (fc < fd) { + b = d; + d = c; + fd = fc; + c = a + invphi2 * h; + round(*rndSolution_,*solution_,c); + problem0_->getObjective()->update(*rndSolution_); + fc = problem0_->getObjective()->value(*rndSolution_,tol); + } + else { + a = c; + c = d; + fc = fd; + d = a + invphi * h; + round(*rndSolution_,*solution_,d); + problem0_->getObjective()->update(*rndSolution_); + fd = problem0_->getObjective()->value(*rndSolution_,tol); + } + } + t = static_cast(0.5)*(a+b); + round(*rndSolution_,*solution_,t); + } + else { // naive rounding + t = static_cast(0.5); + round(*rndSolution_,*solution_,t); + } + problem0_->getObjective()->update(*rndSolution_); + val = problem0_->getObjective()->value(*rndSolution_,tol); + branching_->foundSolution(new ROL::ROL_PEBBL_Solution(*rndSolution_,val)); + if (verbosity_ > 0) { + *outStream_ << "ADVDIFF_BranchSub::incumbentHeuristic: " << methodName_ << std::endl; + *outStream_ << " Incumbent Value: " << val << std::endl; + *outStream_ << " Rounding Threshold: " << t << std::endl; + } + }; + +}; // class ADVDIFF_BranchSub + +#endif diff --git a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/example_01.cpp b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/example_01.cpp index 27a37ad975b0..ffb9ab7faf8f 100644 --- a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/example_01.cpp +++ b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/example_01.cpp @@ -58,9 +58,9 @@ #include "ROL_PEBBL_Driver.hpp" #include "ROL_TeuchosBranchHelper_PEBBL.hpp" #include "opfactory.hpp" -#include "hilbert.hpp" #include "extractQP.hpp" #include "branchHelper.hpp" +#include "branching.hpp" int main(int argc, char *argv[]) { // feenableexcept(FE_DIVBYZERO | FE_INVALID | FE_OVERFLOW); @@ -93,9 +93,8 @@ int main(int argc, char *argv[]) { ROL::Ptr> problem; ROL::Ptr> solver; ROL::Ptr> z, u; - int order = parlist->sublist("Problem").get("Hilbert Curve Order",6); - int n = std::pow(2,order+1); - parlist->sublist("Problem").set("Hilbert Curve Order",order+1); + int nx = parlist->sublist("Problem").get("Number of X-Cells",64); + int ny = parlist->sublist("Problem").get("Number of Y-Cells",32); factory = ROL::makePtr>(*parlist,comm,outStream); bool checkDeriv = parlist->sublist("Problem").get("Check Derivatives",false); if (checkDeriv) factory->check(*outStream); @@ -112,11 +111,16 @@ int main(int argc, char *argv[]) { solveQP = (useBB ? false : solveQP); if (useBB) { RealT intTol = parlist->sublist("Problem").get("Integrality Tolerance",1e-6); - int method = parlist->sublist("Problem").get("Branching Method",0); + int method = parlist->sublist("Problem").get("Branching Method",0); + int incheur = parlist->sublist("Problem").get("Incumbent Heuristic",0); + int verbosity = parlist->sublist("Problem").get("BB Output Level",0); ROL::Ptr> bHelper = ROL::makePtr>(intTol,method); - ROL::ROL_PEBBL_Driver pebbl(factory,parlist,bHelper,3,outStream); + ROL::Ptr> branching + = ROL::makePtr>(factory,parlist,bHelper,verbosity,outStream,incheur); + ROL::ROL_PEBBL_Driver pebbl(branching); pebbl.solve(argc,argv,*outStream); + z = pebbl.getSolution(); } else { if (solveQP) { @@ -125,17 +129,17 @@ int main(int argc, char *argv[]) { } solver = ROL::makePtr>(*problem, *parlist); solver->solve(*outStream); + z = problem->getSolutionVector(); } - z = problem->getSolutionVector(); factory->getState(u,z); // Print bool usePC = parlist->sublist("Problem").get("Piecewise Constant Controls", true); std::stringstream uname, zname, xname, yname; - uname << "state_" << order+1 << ".txt"; - zname << "control_" << order+1 << ".txt"; - xname << "X_" << order+1 << ".txt"; - yname << "Y_" << order+1 << ".txt"; + uname << "state_" << nx << "_" << ny << ".txt"; + zname << "control_" << nx << "_" << ny << ".txt"; + xname << "X_" << nx << "_" << ny << ".txt"; + yname << "Y_" << nx << "_" << ny << ".txt"; if (!solveQP) { factory->getAssembler()->outputTpetraVector(ROL::dynamicPtrCast>(u)->getVector(),uname.str()); if (!usePC) { @@ -146,20 +150,13 @@ int main(int argc, char *argv[]) { zfile.open(zname.str()); xfile.open(xname.str()); yfile.open(yname.str()); - int x(0), y(0); - std::vector &zdata = *ROL::dynamicPtrCast>(z)->getParameter()->getVector(); - //for (unsigned j = 0; j < n*n; ++j) { - // zfile << zdata[j] << std::endl; - // hilbert::d2xy(order+1, j, x, y); - // xfile << x << std::endl; - // yfile << y << std::endl; - //} - for (int j = 0; j < n; ++j) { - for (int k = 0; k < n; ++k) { - zfile << zdata[j+k*n] << std::endl; - x = j; y = k; - xfile << x << std::endl; - yfile << y << std::endl; + std::vector &zdata = *ROL::dynamicPtrCast>(z)->getVector(); + zfile << std::scientific << std::setprecision(18); + for (int j = 0; j < nx; ++j) { + for (int k = 0; k < ny; ++k) { + zfile << zdata[j+k*nx] << std::endl; + xfile << j << std::endl; + yfile << k << std::endl; } } zfile.close(); @@ -174,15 +171,9 @@ int main(int argc, char *argv[]) { yfile.open(yname.str()); int x(0), y(0); Teuchos::SerialDenseVector &zdata = *ROL::dynamicPtrCast>(z)->getVector(); - //for (unsigned j = 0; j < n*n; ++j) { - // zfile << zdata[j] << std::endl; - // hilbert::d2xy(order+1, j, x, y); - // xfile << x << std::endl; - // yfile << y << std::endl; - //} - for (int j = 0; j < n; ++j) { - for (int k = 0; k < n; ++k) { - zfile << zdata[j+k*n] << std::endl; + for (int j = 0; j < nx; ++j) { + for (int k = 0; k < ny; ++k) { + zfile << zdata[j+k*nx] << std::endl; x = j; y = k; xfile << x << std::endl; yfile << y << std::endl; diff --git a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/femdata.hpp b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/femdata.hpp new file mode 100644 index 000000000000..b71479675440 --- /dev/null +++ b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/femdata.hpp @@ -0,0 +1,290 @@ + +#ifndef FEMDATA_H +#define FEMDATA_H + +#include "ROL_Objective.hpp" +#include "ROL_SimController.hpp" +#include "../../TOOLS/assembler.hpp" +#include "../../TOOLS/solver.hpp" +#include "../../TOOLS/pdevector.hpp" +#include "pde_adv_diff.hpp" +#include "qoi_adv_diff.hpp" +#include "mesh_adv_diff.hpp" + +template +class FEMdata { +private: + // Advection Diffusion PDE + ROL::Ptr> pde_; + ROL::Ptr> assembler_; + ROL::Ptr> solver_; + ROL::Ptr> matJ1_, matJ2_, matH_; + ROL::Ptr> vecG_, vecR_, vecJ3_; + Real c0_; + + bool usePC_; + int psize_; + + mutable unsigned napJ1_, napJ2_, napH1_, nasse_; + +public: + FEMdata(const ROL::Ptr> &comm, + ROL::ParameterList &list, + std::ostream &stream = std::cout) + : napJ1_(0), napJ2_(0), napH1_(0), nasse_(0) { + usePC_ = list.sublist("Problem").get("Piecewise Constant Controls",false); + int nx = list.sublist("Problem").get("Number of X-Cells",1); + int ny = list.sublist("Problem").get("Number of Y-Cells",1); + psize_ = nx*ny; + + assemble(comm,list,stream); + } + + const ROL::Ptr> getAssembler(void) const { + return assembler_; + } + + const ROL::Ptr> getFE(void) const { + return pde_->getFE(); + } + + // PDE definitions + void addPDErhs(ROL::Vector &rhs) const { + const Real one(1); + ROL::Ptr> rhsf = getField(rhs); + rhsf->update(one,*vecR_,one); + } + + void applyInversePDEJacobian(ROL::Vector &x, + const ROL::Vector &b, + bool transpose) { + ROL::Ptr> xf = getField(x); + ROL::Ptr> bf = getConstField(b); + solver_->solve(xf,bf,transpose); + napJ1_++; + } + + void applyControlJacobian(ROL::Vector &Jv, + const ROL::Vector &v, + const bool transpose) { + if (usePC_) { + if (transpose) { + ROL::Ptr> Jvp = getParameter(Jv); + ROL::Ptr> vf = getConstField(v); + Teuchos::Array val(1,0); + const size_t size = Jvp->size(); + for (size_t i = 0; i < size; ++i) { + Teuchos::ArrayView col(&i,1); + vecJ3_->subView(col)->dot(*vf, val.view(0,1)); + (*Jvp)[i] = val[0]; + } + } + else { + Jv.zero(); + ROL::Ptr> Jvf = getField(Jv); + ROL::Ptr> vp = getConstParameter(v); + const Real one(1); + const size_t size = vp->size(); + for (size_t i = 0; i < size; ++i) { + Teuchos::ArrayView col(&i,1); + Jvf->update((*vp)[i],*vecJ3_->subView(col),one); + } + } + } + else { + ROL::Ptr> Jvf = getField(Jv); + ROL::Ptr> vf = getConstField(v); + if (transpose) { + matJ2_->apply(*vf,*Jvf,Teuchos::TRANS); + } + else { + matJ2_->apply(*vf,*Jvf); + } + } + napJ2_++; + } + + // Objective definitions + Real getObjectiveConstant(void) const { + return c0_; + } + + void addObjectiveGradient(ROL::Vector &g) const { + const Real one(1); + ROL::Ptr> gf = getField(g); + gf->update(one,*vecG_,one); + } + + void applyObjectiveHessian(ROL::Vector &Hv, + const ROL::Vector &v) const { + ROL::Ptr> Hvf = getField(Hv); + ROL::Ptr> vf = getConstField(v); + matH_->apply(*vf,*Hvf); + napH1_++; + } + + ROL::Ptr> createStateVector(ROL::ParameterList &list) const { + return ROL::makePtr>(assembler_->createStateVector(),pde_,assembler_,list); + } + + ROL::Ptr> createResidualVector(ROL::ParameterList &list) const { + return ROL::makePtr>(assembler_->createResidualVector(),pde_,assembler_,list); + } + + ROL::Ptr> createControlVector(ROL::ParameterList &list) const { + return ROL::makePtr>(assembler_->createControlVector(),pde_,assembler_,list); + } + + void summarize(std::ostream &stream) const { + stream << std::endl; + stream << std::string(114,'=') << std::endl; + stream << " FEMdata::summarize" << std::endl; + stream << " Number of assemblies: " << nasse_ << std::endl; + stream << " Number of Jacobian_1 sovles: " << napJ1_ << std::endl; + stream << " Number of Jacobian_2 applies: " << napJ2_ << std::endl; + stream << " Number of Hessian_11 applies: " << napH1_ << std::endl; + stream << std::string(114,'=') << std::endl; + stream << std::endl; + } + +private: + + // Finite Element Assembly + void assemble(const ROL::Ptr> &comm, + ROL::ParameterList &list, + std::ostream &stream) { + nasse_++; + + pde_ = ROL::makePtr>(list); + ROL::Ptr> mesh = ROL::makePtr>(list); + assembler_ = ROL::makePtr>(pde_->getFields(), + mesh,comm,list,stream); + assembler_->setCellNodes(*pde_); + ROL::Ptr> qoi = ROL::makePtr>(pde_->getFE(),list); + solver_ = ROL::makePtr>(list.sublist("Solver")); + + // Create zero vectors + const Real zero(0); + ROL::Ptr> stateZero = assembler_->createStateVector(); + ROL::Ptr> controlZero = ROL::nullPtr; + ROL::Ptr> paramZero = ROL::nullPtr; + stateZero->putScalar(zero); + if (usePC_) { + paramZero = ROL::makePtr>(psize_,zero); + } + else { + controlZero = assembler_->createControlVector(); + controlZero->putScalar(zero); + } + + // Assemble components of the linear PDE + assembler_->assemblePDEResidual(vecR_,pde_,stateZero,controlZero,paramZero); + assembler_->assemblePDEJacobian1(matJ1_,pde_,stateZero,controlZero,paramZero); + if (usePC_) { + assembler_->assemblePDEJacobian3(vecJ3_,pde_,stateZero,controlZero,paramZero); + } + else { + assembler_->assemblePDEJacobian2(matJ2_,pde_,stateZero,controlZero,paramZero); + } + solver_->setA(matJ1_); + + // Assemble components of the quadratic objective function + c0_ = assembler_->assembleQoIValue(qoi,stateZero); + assembler_->assembleQoIGradient1(vecG_,qoi,stateZero); + assembler_->assembleQoIHessian11(matH_,qoi,stateZero); + } + + ROL::Ptr> getConstField(const ROL::Vector &x) const { + ROL::Ptr> xp; + try { + xp = dynamic_cast&>(x).getVector(); + } + catch (std::exception &e) { + try { + ROL::Ptr> xvec + = dynamic_cast&>(x).getField(); + if (xvec == ROL::nullPtr) { + xp = ROL::nullPtr; + } + else { + xp = xvec->getVector(); + } + } + catch (std::exception &ee) { + xp = ROL::nullPtr; + } + } + return xp; + } + + ROL::Ptr> getField(ROL::Vector &x) const { + ROL::Ptr> xp; + try { + xp = dynamic_cast&>(x).getVector(); + } + catch (std::exception &e) { + try { + ROL::Ptr> xvec + = dynamic_cast&>(x).getField(); + if ( xvec == ROL::nullPtr ) { + xp = ROL::nullPtr; + } + else { + xp = xvec->getVector(); + } + } + catch (std::exception &ee) { + xp = ROL::nullPtr; + } + } + return xp; + } + + ROL::Ptr > getConstParameter(const ROL::Vector &x) const { + ROL::Ptr > xp; + try { + xp = dynamic_cast&>(x).getVector(); + } + catch (std::exception &e) { + try { + ROL::Ptr > xvec + = dynamic_cast&>(x).getParameter(); + if ( xvec == ROL::nullPtr ) { + xp = ROL::nullPtr; + } + else { + xp = xvec->getVector(); + } + } + catch (std::exception &ee) { + xp = ROL::nullPtr; + } + } + return xp; + } + + ROL::Ptr > getParameter(ROL::Vector &x) const { + ROL::Ptr > xp; + try { + xp = dynamic_cast&>(x).getVector(); + } + catch (std::exception &e) { + try { + ROL::Ptr > xvec + = dynamic_cast&>(x).getParameter(); + if ( xvec == ROL::nullPtr ) { + xp = ROL::nullPtr; + } + else { + xp = xvec->getVector(); + } + } + catch (std::exception &ee) { + xp = ROL::nullPtr; + } + } + return xp; + } +}; // class FEMdata + +#endif diff --git a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/input_ex01.xml b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/input_ex01.xml index 6cfe5b7fa0a6..80c5441c85a4 100644 --- a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/input_ex01.xml +++ b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/input_ex01.xml @@ -1,25 +1,39 @@ - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + @@ -86,7 +100,7 @@ - + @@ -94,22 +108,67 @@ - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -150,10 +209,10 @@ - - - - + + + + @@ -181,13 +240,28 @@ + + + + + + + + + + + + + + + - - + + diff --git a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/misfit_robj.hpp b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/misfit_robj.hpp new file mode 100644 index 000000000000..2ea092b79d09 --- /dev/null +++ b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/misfit_robj.hpp @@ -0,0 +1,159 @@ + +#ifndef MISFIT_ROBJ_H +#define MISFIT_ROBJ_H + +#include "ROL_Objective.hpp" +#include "ROL_SimController.hpp" +#include "femdata.hpp" + +template +class Misfit_Objective : public ROL::Objective { +private: + // Advection Diffusion PDE + const ROL::Ptr> fem_; + + // Vector Storage + ROL::Ptr> stateStore_, adjointStore_; + ROL::Ptr> state_, adjoint_, state_sens_, adjoint_sens_; + ROL::Ptr> dualadjoint_; + + bool storage_; + + unsigned nstat_, nadjo_, nsens_, nsadj_; + unsigned nupda_, nfval_, ngrad_, nhess_, nprec_; + +public: + Misfit_Objective(const ROL::Ptr> &fem, + ROL::ParameterList &list) + : fem_(fem), nstat_(0), nadjo_(0), nsens_(0), nsadj_(0), + nupda_(0), nfval_(0), ngrad_(0), nhess_(0), nprec_(0) { + stateStore_ = ROL::makePtr>(); + adjointStore_ = ROL::makePtr>(); + + // Vector Storage + state_ = fem_->createStateVector(list); + adjoint_ = fem_->createStateVector(list); + state_sens_ = fem_->createStateVector(list); + adjoint_sens_ = fem_->createStateVector(list); + dualadjoint_ = fem_->createResidualVector(list); + + storage_ = list.sublist("Problem").get("Use state storage", true); + } + + const ROL::Ptr> getAssembler(void) const { + return fem_->getAssembler(); + } + + void update( const ROL::Vector &z, bool flag = true, int iter = -1 ) { + nupda_++; + stateStore_->objectiveUpdate(true); + adjointStore_->objectiveUpdate(flag); + } + + void solvePDE(ROL::Vector &u, const ROL::Vector &z) { + update(z,false); + solve_state_equation(z); + u.set(*state_); + } + + Real value( const ROL::Vector &z, Real &tol ) { + nfval_++; + solve_state_equation(z); + fem_->applyObjectiveHessian(*dualadjoint_,*state_); // Hu + dualadjoint_->scale(static_cast(0.5)); // 0.5 Hu + fem_->addObjectiveGradient(*dualadjoint_); // 0.5 Hu + g + // 0.5 uHu + gu + c0 + return state_->dot(dualadjoint_->dual()) + fem_->getObjectiveConstant(); + } + + void gradient( ROL::Vector &g, const ROL::Vector &z, Real &tol ) { + ngrad_++; + solve_state_equation(z); + solve_adjoint_equation(*state_); + fem_->applyControlJacobian(g,*adjoint_,true); + } + + void hessVec( ROL::Vector &hv, const ROL::Vector &v, const ROL::Vector &z, Real &tol ) { + nhess_++; + solve_state_equation(z); + solve_adjoint_equation(*state_); + solve_state_sensitivity(v); + solve_adjoint_sensitivity(*state_sens_); + fem_->applyControlJacobian(hv,*adjoint_sens_,true); + } + + /** \brief Apply a reduced Hessian preconditioner. + */ + virtual void precond( ROL::Vector &Pv, const ROL::Vector &v, const ROL::Vector &z, Real &tol ) { + nprec_++; + Pv.set(v.dual()); + } + + void summarize(std::ostream &stream) const { + stream << std::endl; + stream << std::string(114,'=') << std::endl; + stream << " Misfit_Objective::summarize" << std::endl; + stream << " Number of calls to update: " << nupda_ << std::endl; + stream << " Number of calls to value: " << nfval_ << std::endl; + stream << " Number of calls to gradient: " << ngrad_ << std::endl; + stream << " Number of calls to hessVec: " << nhess_ << std::endl; + stream << " Number of calls to precond: " << nprec_ << std::endl; + stream << " Number of state solves: " << nstat_ << std::endl; + stream << " Number of adjoint solves: " << nadjo_ << std::endl; + stream << " Number of state sensitivity solves: " << nsens_ << std::endl; + stream << " Number of adjoint sensitivity solves: " << nsadj_ << std::endl; + stream << std::string(114,'=') << std::endl; + stream << std::endl; + fem_->summarize(stream); + } + +private: + + void solve_state_equation(const ROL::Vector &z) { + bool isComputed = false; + if (storage_) { + isComputed = stateStore_->get(*state_,ROL::Objective::getParameter()); + } + if (!isComputed || !storage_) { + fem_->applyControlJacobian(*dualadjoint_,z,false); // Bz + fem_->addPDErhs(*dualadjoint_); // Bz + f + fem_->applyInversePDEJacobian(*state_,*dualadjoint_,false); // inv(A)(Bz + f) + state_->scale(static_cast(-1)); // -inv(A)(Bz + f) + nstat_++; + if (storage_) { + stateStore_->set(*state_,ROL::Objective::getParameter()); + } + } + } + + void solve_adjoint_equation(const ROL::Vector &u) { + bool isComputed = false; + if (storage_) { + isComputed = adjointStore_->get(*adjoint_,ROL::Objective::getParameter()); + } + if (!isComputed || !storage_) { + fem_->applyObjectiveHessian(*dualadjoint_,*state_); // Hu + fem_->addObjectiveGradient(*dualadjoint_); // Hu + g + fem_->applyInversePDEJacobian(*adjoint_,*dualadjoint_,true); // inv(A')(Hu + g) + adjoint_->scale(static_cast(-1)); // -inv(A')(Hu + g) + nadjo_++; + if (storage_) { + adjointStore_->set(*adjoint_,ROL::Objective::getParameter()); + } + } + } + + void solve_state_sensitivity(const ROL::Vector &v) { + fem_->applyControlJacobian(*dualadjoint_,v,false); // Bv + fem_->applyInversePDEJacobian(*state_sens_,*dualadjoint_,false); // inv(A)Bv + nsens_++; + } + + void solve_adjoint_sensitivity(const ROL::Vector &v) { + fem_->applyObjectiveHessian(*dualadjoint_,v); // Hv + fem_->applyInversePDEJacobian(*adjoint_sens_,*dualadjoint_,true); // inv(A')Hv + nsadj_++; + } +}; // class Misfit_Objective + +#endif diff --git a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/objsum.hpp b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/objsum.hpp new file mode 100644 index 000000000000..9f33ac384aec --- /dev/null +++ b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/objsum.hpp @@ -0,0 +1,129 @@ +// @HEADER +// ************************************************************************ +// +// Rapid Optimization Library (ROL) Package +// Copyright (2014) Sandia Corporation +// +// Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive +// license for use of this work by or on behalf of the U.S. Government. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact lead developers: +// Drew Kouri (dpkouri@sandia.gov) and +// Denis Ridzal (dridzal@sandia.gov) +// +// ************************************************************************ +// @HEADER + +#ifndef ROL_OBJSUM_H +#define ROL_OBJSUM_H + +#include "misfit_robj.hpp" + +template +class Sum_Objective : public ROL::Objective { +private: + const ROL::Ptr> misfit_, penalty_, binary_; + + ROL::Ptr> xdual_; + bool initialized_; + + const ROL::Ptr stream_; + const bool printToStream_; + + Real misCost_, penCost_, binCost_; + +public: + Sum_Objective(const ROL::Ptr> &fem_, + const ROL::Ptr> &pen, + const ROL::Ptr> &bin, + ROL::ParameterList &list, + ROL::Ptr &stream = ROL::nullPtr, + bool printToStream = false) + : misfit_(ROL::makePtr>(fem_,list)), + penalty_(pen), binary_(bin), + xdual_(ROL::nullPtr), initialized_(false), + stream_(stream), printToStream_(printToStream) { + misCost_ = list.sublist("Problem").get("State Cost", 1.0); + penCost_ = list.sublist("Problem").get("Control Cost", 1.0); + binCost_ = list.sublist("Problem").get("Integrality Cost", 1.0); + } + + void update(const ROL::Vector &x, bool flag = true, int iter = -1) { + misfit_->update(x,flag,iter); + penalty_->update(x,flag,iter); + binary_->update(x,flag,iter); + } + + Real value( const ROL::Vector &x, Real &tol ) { + Real misfit = misfit_->value(x,tol); + Real penalty = penalty_->value(x,tol); + Real binary = binary_->value(x,tol); + if (printToStream_) { + *stream_ << "Unscaled: " + << "Misfit Value = " << misfit << " " + << "Penalty Value = " << penalty << " " + << "Binary Value = " << binary << std::endl; + *stream_ << "Scaled: " + << "Misfit Value = " << misCost_*misfit << " " + << "Penalty Value = " << penCost_*penalty << " " + << "Binary Value = " << binCost_*binary << std::endl; + } + return misCost_*misfit + penCost_*penalty + binCost_*binary; + } + + void gradient( ROL::Vector &g, const ROL::Vector &x, Real &tol ) { + if (!initialized_) { + xdual_ = g.clone(); + initialized_ = true; + } + misfit_->gradient(g,x,tol); + g.scale(misCost_); + penalty_->gradient(*xdual_,x,tol); + g.axpy(penCost_,*xdual_); + binary_->gradient(*xdual_,x,tol); + g.axpy(binCost_,*xdual_); + } + + void hessVec( ROL::Vector &hv, const ROL::Vector &v, const ROL::Vector &x, Real &tol ) { + if (!initialized_) { + xdual_ = hv.clone(); + initialized_ = true; + } + misfit_->hessVec(hv,v,x,tol); + hv.scale(misCost_); + penalty_->hessVec(*xdual_,v,x,tol); + hv.axpy(penCost_,*xdual_); + binary_->hessVec(*xdual_,v,x,tol); + hv.axpy(binCost_,*xdual_); + } + +}; // class Sum_Objective + +#endif diff --git a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/opfactory.hpp b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/opfactory.hpp index abec69eaf42a..fa7ab44082c0 100644 --- a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/opfactory.hpp +++ b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/opfactory.hpp @@ -49,117 +49,99 @@ #include "ROL_Reduced_Objective_SimOpt.hpp" #include "ROL_OptimizationProblemFactory.hpp" -#include "../../TOOLS/linearpdeconstraint.hpp" #include "../../TOOLS/pdeobjective.hpp" #include "../../TOOLS/pdevector.hpp" -#include "pde_adv_diff.hpp" -#include "qoi_adv_diff.hpp" -#include "mesh_adv_diff.hpp" +#include "objsum.hpp" template class BinaryAdvDiffFactory : public ROL::OptimizationProblemFactory { private: int dim_; - ROL::ParameterList pl_; + mutable ROL::ParameterList pl_; ROL::Ptr> comm_; ROL::Ptr os_; - ROL::Ptr> mesh_; - ROL::Ptr> pde_; - ROL::Ptr> con_; - ROL::Ptr> obj_; - ROL::Ptr> robj_; - ROL::Ptr> assembler_; - ROL::Ptr> u_, z_, p_; + ROL::Ptr> fem_; + ROL::Ptr> assembler_; + ROL::Ptr> penalty_, binary_; + ROL::Ptr> z_; + ROL::Ptr> bnd_; public: BinaryAdvDiffFactory(ROL::ParameterList &pl, const ROL::Ptr> &comm, const ROL::Ptr &os) : pl_(pl), comm_(comm), os_(os) { - mesh_ = ROL::makePtr>(pl_); - pde_ = ROL::makePtr>(pl_); - con_ = ROL::makePtr>(pde_,mesh_,comm_,pl_,*os_); - assembler_ = con_->getAssembler(); + fem_ = ROL::makePtr>(comm,pl_,*os_); + assembler_ = fem_->getAssembler(); std::string costType = pl_.sublist("Problem").get("Control Cost Type", "TV"); - Real stateCost = pl_.sublist("Problem").get("State Cost", 1.0); - Real controlCost = pl_.sublist("Problem").get("Control Cost", 1.0); - Real intCost = pl_.sublist("Problem").get("Integrality Cost", 1.0); - std::vector wts = {stateCost, controlCost, intCost}; - std::vector>> qoi_vec(3,ROL::nullPtr); - qoi_vec[0] = ROL::makePtr>(pde_->getFE(),pl_); + std::vector>> qoi_pen(2,ROL::nullPtr); if (costType=="TV") { - qoi_vec[1] = ROL::makePtr>(pde_->getFE(),pl_); + qoi_pen[0] = ROL::makePtr>(fem_->getFE(),pl_); } else if (costType=="L1") { - qoi_vec[1] = ROL::makePtr>(pde_->getFE(),pl_); + qoi_pen[0] = ROL::makePtr>(fem_->getFE(),pl_); } else { - qoi_vec[1] = ROL::makePtr>(pde_->getFE(),pl_); + qoi_pen[0] = ROL::makePtr>(fem_->getFE(),pl_); } - qoi_vec[2] = ROL::makePtr>(pde_->getFE(),pl_); - obj_ = ROL::makePtr>(qoi_vec, wts, assembler_); - } - - void update(void) { + qoi_pen[1] = ROL::makePtr>(fem_->getFE(),pl_); + penalty_ = ROL::makePtr>(qoi_pen[0],assembler_); + binary_ = ROL::makePtr>(qoi_pen[1],assembler_); + // Create template control vector bool usePC = pl_.sublist("Problem").get("Piecewise Constant Controls", true); - int order = pl_.sublist("Problem").get("Hilbert Curve Order", 2); - int n = std::pow(2,order); - ROL::Ptr> u_ptr, p_ptr, r_ptr, z_ptr; - u_ptr = assembler_->createStateVector(); - p_ptr = assembler_->createStateVector(); - ROL::Ptr> up, pp, zp; - u_ = ROL::makePtr>(u_ptr,pde_,assembler_,pl_); - p_ = ROL::makePtr>(p_ptr,pde_,assembler_,pl_); if (usePC) { - Real XL = pl_.sublist("Geometry").get("X0", 0.0); - Real YL = pl_.sublist("Geometry").get("Y0", 0.0); - Real XU = XL + pl_.sublist("Geometry").get("Width", 2.0); - Real YU = YL + pl_.sublist("Geometry").get("Height", 1.0); - Real vol = (XU-XL)/static_cast(n) * (YU-YL)/static_cast(n); + int nx = pl_.sublist("Problem").get("Number of X-Cells", 4); + int ny = pl_.sublist("Problem").get("Number of Y-Cells", 2); + Real width = pl_.sublist("Geometry").get("Width", 2.0); + Real height = pl_.sublist("Geometry").get("Height", 1.0); + Real vol = width/static_cast(nx) * height/static_cast(ny); ROL::Ptr> xvec, svec; - xvec = ROL::makePtr>(n*n,0); - svec = ROL::makePtr>(n*n,vol); + xvec = ROL::makePtr>(nx*ny,0); + svec = ROL::makePtr>(nx*ny,vol); std::ifstream file; std::stringstream name; - name << "control_" << order << ".txt"; - Real val(0), zero(0), half(0.5), one(1); + name << "control_" << nx << "_" << ny << ".txt"; file.open(name.str()); if (file.is_open()) { - for (int i = 0; i < n; ++i) { - for (int j = 0; j < n; ++j) { - file >> val; - (*xvec)[i+j*n] = (val < half ? zero : one); + for (int i = 0; i < nx; ++i) { + for (int j = 0; j < ny; ++j) { + file >> (*xvec)[i+j*nx]; } } } file.close(); - ROL::Ptr> xstd = ROL::makePtr>(xvec,svec); - z_ = ROL::makePtr>(xstd); + z_ = ROL::makePtr>(xvec,svec); } else { - z_ptr = assembler_->createControlVector(); - z_ = ROL::makePtr>(z_ptr,pde_,assembler_,pl_); + z_ = fem_->createControlVector(pl_); } - bool storage = pl_.sublist("Problem").get("Use Storage", true); - robj_ = ROL::makePtr>(obj_, con_, u_, z_, p_, storage, false); + // Create bound constraint + ROL::Ptr> zlop = z_->clone(), zhip = z_->clone(); + zlop->setScalar(static_cast(0)); + zhip->setScalar(static_cast(1)); + bnd_ = ROL::makePtr>(zlop,zhip); } + void update(void) {} + ROL::Ptr> buildObjective(void) { - return robj_; + return ROL::makePtr>(fem_,penalty_,binary_,pl_,os_,true); } ROL::Ptr> buildSolutionVector(void) { - return z_; + ROL::Ptr> z = z_->clone(); z->set(*z_); + return z; } ROL::Ptr> buildBoundConstraint(void) { - ROL::Ptr> zlop = z_->clone(), zhip = z_->clone(); - zlop->setScalar(static_cast(0)); - zhip->setScalar(static_cast(1)); - return ROL::makePtr>(zlop,zhip); + return bnd_; + //ROL::Ptr> zlop = z_->clone(), zhip = z_->clone(); + //zlop->setScalar(static_cast(0)); + //zhip->setScalar(static_cast(1)); + //return ROL::makePtr>(zlop,zhip); //return ROL::nullPtr; } @@ -184,10 +166,9 @@ class BinaryAdvDiffFactory : public ROL::OptimizationProblemFactory { } void getState(ROL::Ptr> &u, const ROL::Ptr> &z) const { - Real tol = std::sqrt(ROL::ROL_EPSILON()); - u = u_->clone(); - ROL::Ptr> r = u_->dual().clone(); - con_->solve(*r, *u, *z, tol); + u = fem_->createStateVector(pl_); + Misfit_Objective obj(fem_,pl_); + obj.solvePDE(*u,*z); } ROL::Ptr> getAssembler(void) const { @@ -195,50 +176,19 @@ class BinaryAdvDiffFactory : public ROL::OptimizationProblemFactory { } void print(std::ostream &stream = std::cout) { - Real tol = std::sqrt(ROL::ROL_EPSILON()); - ROL::Ptr> r = u_->dual().clone(); - con_->solve(*r,*u_,*z_,tol); - assembler_->outputTpetraVector(ROL::dynamicPtrCast>(u_)->getVector(),"state.txt"); - bool usePC = pl_.sublist("Problem").get("Piecewise Constant Controls", true); - if (usePC) { - std::ofstream zfile; - zfile.open("control.txt"); - ROL::Ptr> zvec - = ROL::dynamicPtrCast>(z_)->getParameter()->getVector(); - for (unsigned i = 0; i < zvec->size(); ++i) { - zfile << (*zvec)[i] << std::endl; - } - zfile.close(); - pde_->print(); - } - else { - assembler_->outputTpetraVector(ROL::dynamicPtrCast>(z_)->getVector(),"control.txt"); - } assembler_->printMeshData(stream); } void check(std::ostream &stream = std::cout) { - update(); - ROL::Ptr> r1 = u_->dual().clone(); r1->randomize(); - ROL::Ptr> u1 = u_->clone(); u1->randomize(); - ROL::Ptr> u2 = u_->clone(); u2->randomize(); - ROL::Ptr> z1 = z_->clone(); z1->randomize(); - ROL::Ptr> z2 = z_->clone(); z2->randomize(); - con_->checkSolve(*u1,*z1,*r1,true,stream); - con_->checkApplyJacobian_1(*u1,*z1,*u2,*r1,true,stream); - con_->checkApplyJacobian_2(*u1,*z1,*z2,*r1,true,stream); - con_->checkApplyAdjointHessian_11(*u1,*z1,*u1,*u2,*r1,true,stream); - con_->checkApplyAdjointHessian_12(*u1,*z1,*u1,*u2,*z1,true,stream); - con_->checkApplyAdjointHessian_21(*u1,*z1,*u1,*z2,*r1,true,stream); - con_->checkApplyAdjointHessian_22(*u1,*z1,*u1,*z2,*z1,true,stream); - obj_->checkGradient_1(*u1,*z1,*u2,true,stream); - obj_->checkGradient_2(*u1,*z1,*z2,true,stream); - obj_->checkHessVec_11(*u1,*z1,*u2,true,stream); - obj_->checkHessVec_12(*u1,*z1,*z2,true,stream); - obj_->checkHessVec_21(*u1,*z1,*u2,true,stream); - obj_->checkHessVec_22(*u1,*z1,*z2,true,stream); - robj_->checkGradient(*z1,*z2,true,stream); - robj_->checkHessVec(*z1,*z2,true,stream); + ROL::Ptr> z1 = z_->clone(); z1->randomize(); + ROL::Ptr> z2 = z_->clone(); z2->randomize(); + penalty_->checkGradient(*z1,*z2,true,stream); + penalty_->checkHessVec(*z1,*z2,true,stream); + binary_->checkGradient(*z1,*z2,true,stream); + binary_->checkHessVec(*z1,*z2,true,stream); + Misfit_Objective obj(fem_,pl_); + obj.checkGradient(*z1,*z2,true,stream); + obj.checkHessVec(*z1,*z2,true,stream); } }; diff --git a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/pde_adv_diff.hpp b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/pde_adv_diff.hpp index 14511c4213fb..0ef1e2a03dec 100644 --- a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/pde_adv_diff.hpp +++ b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/pde_adv_diff.hpp @@ -50,7 +50,6 @@ #include "../../TOOLS/pde.hpp" #include "../../TOOLS/fe.hpp" -#include "hilbert.hpp" #include "Intrepid_HGRAD_QUAD_C1_FEM.hpp" #include "Intrepid_HGRAD_QUAD_C2_FEM.hpp" @@ -82,9 +81,8 @@ class PDE_adv_diff : public PDE { // Indexing: [sideset number][local side id](cell number, value at dof) std::vector>>> bdryCellDofValues_; - int order_; + int nx_, ny_; Real XL_, XU_, YL_, YU_; - std::vector>> ctrl_wts_; bool usePC_; public: @@ -115,7 +113,8 @@ class PDE_adv_diff : public PDE { Intrepid::DefaultCubatureFactory cubFactory; // create cubature factory cellCub_ = cubFactory.create(cellType, cubDegree); // create default cubature - order_ = parlist.sublist("Problem").get("Hilbert Curve Order", 2); + nx_ = parlist.sublist("Problem").get("Number of X-Cells", 4); + ny_ = parlist.sublist("Problem").get("Number of Y-Cells", 2); XL_ = parlist.sublist("Geometry").get("X0", 0.0); YL_ = parlist.sublist("Geometry").get("Y0", 0.0); XU_ = XL_ + parlist.sublist("Geometry").get("Width", 2.0); @@ -123,16 +122,6 @@ class PDE_adv_diff : public PDE { usePC_ = parlist.sublist("Problem").get("Piecewise Constant Controls", true); } -// PDE_adv_diff(const PDE_adv_diff &rpde) -// : basisPtr_(rpde.basisPtr_), basisPtrs_(rpde.basisPtrs_), -// cellCub_(rpde.cellCub_), volCellNodes_(rpde.volCellNodes_), -// bdryCellNodes_(rpde.bdryCellNodes_), -// bdryCellLocIds_(rpde.bdryCellLocIds_), -// fe_vol_(rpde.fe_vol_), fidx_(rpde.fidx_), -// bdryCellDofValues_(rpde.bdryCellDofValues_), -// order_(rpde.order_), XL_(rpde.XL_), XU_(rpde.XU_), YL(rpde.YL_), -// YU_(rpde.YU_), ctrl_wts_(rpde.ctrl_wts_), usePC_(rpde.usePC_) {} - void residual(ROL::Ptr> & res, const ROL::Ptr> & u_coeff, const ROL::Ptr> & z_coeff = ROL::nullPtr, @@ -183,15 +172,11 @@ class PDE_adv_diff : public PDE { Intrepid::COMP_CPP, true); } else { - int n = std::pow(2,order_); - for (int i = 0; i < n*n; ++i) { - *valZ_eval = *ctrl_wts_[i]; - Intrepid::RealSpaceTools::scale(*valZ_eval,-(*z_param)[i]); - Intrepid::FunctionSpaceTools::integrate(*res, - *valZ_eval, - *fe_vol_->NdetJ(), - Intrepid::COMP_CPP, true); - } + addControlOperator(valZ_eval,z_param); + Intrepid::FunctionSpaceTools::integrate(*res, + *valZ_eval, + *fe_vol_->NdetJ(), + Intrepid::COMP_CPP, true); } // APPLY DIRICHLET CONDITIONS int numLocalSideIds = bdryCellLocIds_[0].size(); @@ -306,25 +291,29 @@ class PDE_adv_diff : public PDE { int f = fe_vol_->gradN()->dimension(1); int p = fe_vol_->gradN()->dimension(2); // ADD CONTROL TERM TO RESIDUAL - int n = std::pow(2,order_); ROL::Ptr> ctrl = ROL::makePtr>(c, p); - for (int i = 0; i < n*n; ++i) { - jac[i] = ROL::makePtr>(c, f); - Intrepid::FunctionSpaceTools::integrate(*jac[i], - *ctrl_wts_[i], - *fe_vol_->NdetJ(), - Intrepid::COMP_CPP, false); - Intrepid::RealSpaceTools::scale(*jac[i],static_cast(-1)); - // APPLY DIRICHLET CONDITIONS - int numLocalSideIds = bdryCellLocIds_[0].size(); - for (int j = 0; j < numLocalSideIds; ++j) { - int numCellsSide = bdryCellLocIds_[0][j].size(); - int numBdryDofs = fidx_[j].size(); - for (int k = 0; k < numCellsSide; ++k) { - int cidx = bdryCellLocIds_[0][j][k]; - for (int l = 0; l < numBdryDofs; ++l) { - (*(jac[i]))(cidx,fidx_[j][l]) = static_cast(0); + ROL::Ptr> B + = ROL::makePtr>(c, p); + for (int i = 0; i < nx_; ++i) { + for (int j = 0; j < ny_; ++j) { + int ind = i + j*nx_; + jac[ind] = ROL::makePtr>(c, f); + addControlJaobian(B,i,j); + Intrepid::FunctionSpaceTools::integrate(*jac[ind], + *B, + *fe_vol_->NdetJ(), + Intrepid::COMP_CPP, false); + // APPLY DIRICHLET CONDITIONS + int numLocalSideIds = bdryCellLocIds_[0].size(); + for (int k = 0; k < numLocalSideIds; ++k) { + int numCellsSide = bdryCellLocIds_[0][k].size(); + int numBdryDofs = fidx_[k].size(); + for (int l = 0; l < numCellsSide; ++l) { + int cidx = bdryCellLocIds_[0][k][l]; + for (int m = 0; m < numBdryDofs; ++m) { + (*(jac[ind]))(cidx,fidx_[k][m]) = static_cast(0); + } } } } @@ -464,9 +453,6 @@ class PDE_adv_diff : public PDE { } } } - if (usePC_) { - computeControlWeights(); - } } const ROL::Ptr> getFE(void) const { @@ -474,15 +460,14 @@ class PDE_adv_diff : public PDE { } void print(void) const { - int n = std::pow(2,order_); - int x(0), y(0); std::ofstream xfile, yfile; xfile.open("X.txt"); yfile.open("Y.txt"); - for (int i = 0; i < n*n; ++i) { - hilbert::d2xy(order_, i, x, y); - xfile << x << std::endl; - yfile << y << std::endl; + for (int i = 0; i < nx_; ++i) { + for (int j = 0; j < ny_; ++j) { + xfile << i << std::endl; + yfile << j << std::endl; + } } xfile.close(); yfile.close(); @@ -526,34 +511,31 @@ class PDE_adv_diff : public PDE { } } - void computeControlWeights(void) { + void addControlOperator(ROL::Ptr> &Bz, + const ROL::Ptr> &z) const { // GET DIMENSIONS int c = fe_vol_->gradN()->dimension(0); int p = fe_vol_->gradN()->dimension(2); int d = fe_vol_->gradN()->dimension(3); std::vector pt(d); Real xl(0), xu(0), yl(0), yu(0); - int n = std::pow(2,order_), x(0), y(0), D(0); - ctrl_wts_.clear(); ctrl_wts_.resize(n*n); - for (int l = 0; l < n*n; ++l) { - ctrl_wts_[l] = ROL::makePtr>(c,p); - ctrl_wts_[l]->initialize(); - } + Bz->initialize(); for (int i = 0; i < c; ++i) { for (int j = 0; j < p; ++j) { for ( int k = 0; k < d; ++k) { pt[k] = (*fe_vol_->cubPts())(i,j,k); } - for (int l = 0; l < n; ++l) { - for (int m = 0; m < n; ++m) { - hilbert::xy2d(order_,l,m,D); - D = l + m*n; - xl = XL_ + static_cast(l)*(XU_-XL_)/static_cast(n); - xu = XL_ + static_cast(l+1)*(XU_-XL_)/static_cast(n); - yl = YL_ + static_cast(m)*(YU_-YL_)/static_cast(n); - yu = YL_ + static_cast(m+1)*(YU_-YL_)/static_cast(n); - if ( (pt[0] < xu && pt[0] >= xl) && (pt[1] < yu && pt[1] >= yl) ) { - (*ctrl_wts_[D])(i,j) = static_cast(1); + for (int l = 0; l < nx_; ++l) { + xl = XL_ + static_cast(l)*(XU_-XL_)/static_cast(nx_); + xu = XL_ + static_cast(l+1)*(XU_-XL_)/static_cast(nx_); + if ( pt[0] < xu && pt[0] >= xl ) { + for (int m = 0; m < ny_; ++m) { + int ind = l + m*nx_; + yl = YL_ + static_cast(m)*(YU_-YL_)/static_cast(ny_); + yu = YL_ + static_cast(m+1)*(YU_-YL_)/static_cast(ny_); + if ( pt[1] < yu && pt[1] >= yl ) { + (*Bz)(i,j) -= (*z)[ind]; + } } } } @@ -561,6 +543,32 @@ class PDE_adv_diff : public PDE { } } + void addControlJaobian(ROL::Ptr> &B, + int l, int m) const { + // GET DIMENSIONS + int c = fe_vol_->gradN()->dimension(0); + int p = fe_vol_->gradN()->dimension(2); + int d = fe_vol_->gradN()->dimension(3); + std::vector pt(d); + Real xl(0), xu(0), yl(0), yu(0); + xl = XL_ + static_cast(l)*(XU_-XL_)/static_cast(nx_); + xu = XL_ + static_cast(l+1)*(XU_-XL_)/static_cast(nx_); + yl = YL_ + static_cast(m)*(YU_-YL_)/static_cast(ny_); + yu = YL_ + static_cast(m+1)*(YU_-YL_)/static_cast(ny_); + int ind = l + m*nx_; + B->initialize(); + for (int i = 0; i < c; ++i) { + for (int j = 0; j < p; ++j) { + for ( int k = 0; k < d; ++k) { + pt[k] = (*fe_vol_->cubPts())(i,j,k); + } + if ( pt[0] < xu && pt[0] >= xl && pt[1] < yu && pt[1] >= yl ) { + (*B)(i,j) = static_cast(-1); + } + } + } + } + }; // PDE_stoch_adv_diff #endif diff --git a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/plotPEBBL.m b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/plotPEBBL.m new file mode 100644 index 000000000000..ed12195689f7 --- /dev/null +++ b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/plotPEBBL.m @@ -0,0 +1,24 @@ +function plotresultsPEBBL(nx,ny) + +control = load([int2str(nx),'x',int2str(ny),'.sol.txt']).'; +X = load(['X_',int2str(nx),'_',int2str(ny),'.txt']); +Y = load(['Y_',int2str(nx),'_',int2str(ny),'.txt']); +tmp = control; +for i = 1:nx + for j = 1:ny + control(j+(i-1)*ny) = tmp(i+(j-1)*nx); + end +end +figure, +scatter3(2*X/nx,Y/ny,control,100,control,'filled') +view(2) +axis equal; +axis tight; +box on; +xlabel('x'); +ylabel('y'); +title('Computed controls'); +colorbar +print('-depsc2',['control_',int2str(nx),'x',int2str(ny),'.eps']); + +end diff --git a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/qoi_adv_diff.hpp b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/qoi_adv_diff.hpp index f03c596fdd5d..0c4b551e387d 100644 --- a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/qoi_adv_diff.hpp +++ b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/qoi_adv_diff.hpp @@ -60,20 +60,21 @@ class QoI_State_Cost_adv_diff : public QoI { std::vector> pts_; std::vector vals_; - ROL::Ptr> phi_, dphi_; + ROL::Ptr> phi_, dphi_, dphi1_; Real evaluateSensor(const std::vector &pt, const int isens) const { - const Real two(2), pi(M_PI); const int d = pt.size(); - Real dist(0), s2 = sig_*sig_, nc = std::sqrt(std::pow(two*pi*s2,static_cast(d))); + const Real half(0.5), two(2), pi(M_PI), dr(d); + Real dist(0), s2 = sig_*sig_, nc = std::pow(two*pi*s2,half*dr); for (int i = 0; i < d; ++i) { dist += std::pow(pt[i]-pts_[isens][i],two); } - return std::exp(-dist/(two*s2))/nc; + return std::exp(-half*dist/s2)/nc; } void computeSensor(ROL::Ptr> &phi, - ROL::Ptr> &dphi) const { + ROL::Ptr> &dphi, + ROL::Ptr> &dphi1) const { // GET DIMENSIONS int c = fe_->gradN()->dimension(0); int p = fe_->gradN()->dimension(2); @@ -82,6 +83,7 @@ class QoI_State_Cost_adv_diff : public QoI { std::vector pt(d); phi->initialize(static_cast(0)); dphi->initialize(static_cast(0)); + dphi1->initialize(static_cast(0)); for (int i = 0; i < c; ++i) { for (int j = 0; j < p; ++j) { for ( int k = 0; k < d; ++k) { @@ -90,8 +92,9 @@ class QoI_State_Cost_adv_diff : public QoI { // Compute diffusivity kappa for (int l = 0; l < nsens_; ++l) { phil = evaluateSensor(pt,l); - (*phi)(i,j) += phil; - (*dphi)(i,j) += vals_[l]*phil; + (*phi)(i,j) += phil; + (*dphi)(i,j) += vals_[l]*phil; + (*dphi1)(i,j) += vals_[l]*std::sqrt(phil); } } } @@ -120,9 +123,10 @@ class QoI_State_Cost_adv_diff : public QoI { } } file.close(); - phi_ = ROL::makePtr>(c, p); - dphi_ = ROL::makePtr>(c, p); - computeSensor(phi_,dphi_); + phi_ = ROL::makePtr>(c, p); + dphi_ = ROL::makePtr>(c, p); + dphi1_ = ROL::makePtr>(c, p); + computeSensor(phi_,dphi_,dphi1_); } Real value(ROL::Ptr> & val, @@ -143,7 +147,7 @@ class QoI_State_Cost_adv_diff : public QoI { Intrepid::FunctionSpaceTools::scalarMultiplyDataData(*Usqr,*valU_eval,*valU_eval); // Compute squared L2-norm of diff fe_->computeIntegral(val,phi_,Usqr,false); - fe_->computeIntegral(val,dphi_,dphi_,true); + fe_->computeIntegral(val,dphi1_,dphi1_,true); Intrepid::RealSpaceTools::scale(*val,static_cast(0.5)); fe_->computeIntegral(val0,dphi_,valU_eval,false); Intrepid::RealSpaceTools::subtract(*val,*val0); @@ -188,6 +192,23 @@ class QoI_State_Cost_adv_diff : public QoI { throw Exception::Zero(">>> QoI_State_Cost_stoch_adv_diff::gradient_3 is zero."); } + void Hessian_11(ROL::Ptr> & hess, + const ROL::Ptr> & u_coeff, + const ROL::Ptr> & z_coeff = ROL::nullPtr, + const ROL::Ptr> & z_param = ROL::nullPtr) { + const int c = fe_->gradN()->dimension(0); + const int f = fe_->gradN()->dimension(1); + const int p = fe_->gradN()->dimension(2); + ROL::Ptr> H; + hess = ROL::makePtr>(c, f, f); + H = ROL::makePtr>(c, f, p); + Intrepid::FunctionSpaceTools::scalarMultiplyDataField(*H, *phi_, *fe_->N()); + Intrepid::FunctionSpaceTools::integrate(*hess, + *H, + *(fe_->NdetJ()), + Intrepid::COMP_CPP, false); + } + void HessVec_11(ROL::Ptr> & hess, const ROL::Ptr> & v_coeff, const ROL::Ptr> & u_coeff, @@ -509,13 +530,13 @@ class QoI_Control_Cost_adv_diff : public QoI { public: QoI_Control_Cost_adv_diff(const ROL::Ptr> &fe, ROL::ParameterList & parlist) : fe_(fe) { - int order = parlist.sublist("Problem").get("Hilbert Curve Order", 2); + int nx = parlist.sublist("Problem").get("Number of X-Cells", 4); + int ny = parlist.sublist("Problem").get("Number of Y-Cells", 2); Real XL = parlist.sublist("Geometry").get("X0", 0.0); Real YL = parlist.sublist("Geometry").get("Y0", 0.0); Real XU = XL + parlist.sublist("Geometry").get("Width", 1.0); Real YU = YL + parlist.sublist("Geometry").get("Height", 1.0); - int n = std::pow(2,order); - vol_ = (XU-XL)/static_cast(n) * (YU-YL)/static_cast(n); + vol_ = (XU-XL)/static_cast(nx) * (YU-YL)/static_cast(ny); } Real value(ROL::Ptr> & val, @@ -679,13 +700,13 @@ class QoI_Control_Cost_L2_adv_diff : public QoI { public: QoI_Control_Cost_L2_adv_diff(const ROL::Ptr> &fe, ROL::ParameterList & parlist) : fe_(fe) { - int order = parlist.sublist("Problem").get("Hilbert Curve Order", 2); + int nx = parlist.sublist("Problem").get("Number of X-Cells", 4); + int ny = parlist.sublist("Problem").get("Number of Y-Cells", 2); Real XL = parlist.sublist("Geometry").get("X0", 0.0); Real YL = parlist.sublist("Geometry").get("Y0", 0.0); Real XU = XL + parlist.sublist("Geometry").get("Width", 1.0); Real YU = YL + parlist.sublist("Geometry").get("Height", 1.0); - int n = std::pow(2,order); - vol_ = (XU-XL)/static_cast(n) * (YU-YL)/static_cast(n); + vol_ = (XU-XL)/static_cast(nx) * (YU-YL)/static_cast(ny); } Real value(ROL::Ptr> & val, @@ -872,19 +893,19 @@ class QoI_TVControl_Cost_adv_diff : public QoI { private: ROL::Ptr> fe_; Real volx_,voly_, vol_, eps_; - int n_; + int nx_, ny_; public: QoI_TVControl_Cost_adv_diff(const ROL::Ptr> &fe, ROL::ParameterList & parlist) : fe_(fe) { - int order = parlist.sublist("Problem").get("Hilbert Curve Order", 2); Real XL = parlist.sublist("Geometry").get("X0", 0.0); Real YL = parlist.sublist("Geometry").get("Y0", 0.0); Real XU = XL + parlist.sublist("Geometry").get("Width", 1.0); Real YU = YL + parlist.sublist("Geometry").get("Height", 1.0); - n_ = std::pow(2,order); - volx_ = (XU-XL)/static_cast(n_); - voly_ = (YU-YL)/static_cast(n_); + nx_ = parlist.sublist("Problem").get("Number of X-Cells", 4); + ny_ = parlist.sublist("Problem").get("Number of Y-Cells", 2); + volx_ = (XU-XL)/static_cast(nx_); + voly_ = (YU-YL)/static_cast(ny_); vol_ = volx_*voly_; eps_ = parlist.sublist("Problem").get("TV Smoothing Parameter",1e-3); } @@ -925,36 +946,56 @@ class QoI_TVControl_Cost_adv_diff : public QoI { else { const Real half(0.5), two(2); Real sum(0); - std::vector tmp(n_); - std::vector> Dx(n_+1,tmp), Dy(n_+1,tmp); - for (int i = 0; i < n_+1; ++i) { - for (int j = 0; j < n_; ++j) { + std::vector tmpx(nx_), tmpy(ny_); + std::vector> Dx(nx_+1,tmpy), Dy(ny_+1,tmpx); + for (int i = 0; i < nx_+1; ++i) { + for (int j = 0; j < ny_; ++j) { if (i==0) { - Dx[i][j] = std::pow(-(*z_param)[i+j*n_]/volx_,two); - Dy[i][j] = std::pow(-(*z_param)[j+i*n_]/voly_,two); + Dx[i][j] = std::pow(-(*z_param)[i+j*nx_]/volx_,two); } - else if (i > 0 && i < n_) { - Dx[i][j] = std::pow(((*z_param)[i+j*n_]-(*z_param)[(i-1)+j*n_])/volx_,two); - Dy[i][j] = std::pow(((*z_param)[j+i*n_]-(*z_param)[j+(i-1)*n_])/voly_,two); + else if (i > 0 && i < nx_) { + Dx[i][j] = std::pow(((*z_param)[i+j*nx_]-(*z_param)[(i-1)+j*nx_])/volx_,two); } else { - Dx[i][j] = std::pow((*z_param)[(i-1)+j*n_]/volx_,two); - Dy[i][j] = std::pow((*z_param)[j+(i-1)*n_]/voly_,two); + Dx[i][j] = std::pow((*z_param)[(i-1)+j*nx_]/volx_,two); } } } - for (int i = 0; i < n_+1; ++i) { - for (int j = 0; j < n_; ++j) { + for (int i = 0; i < ny_+1; ++i) { + for (int j = 0; j < nx_; ++j) { + if (i==0) { + Dy[i][j] = std::pow(-(*z_param)[j+i*nx_]/voly_,two); + } + else if (i > 0 && i < ny_) { + Dy[i][j] = std::pow(((*z_param)[j+i*nx_]-(*z_param)[j+(i-1)*nx_])/voly_,two); + } + else { + Dy[i][j] = std::pow((*z_param)[j+(i-1)*nx_]/voly_,two); + } + } + } + for (int i = 0; i < nx_+1; ++i) { + for (int j = 0; j < ny_; ++j) { if (i==0) { sum += std::sqrt(Dx[i][j]+eps_); - sum += std::sqrt(Dy[i][j]+eps_); } - else if (i > 0 && i < n_) { + else if (i > 0 && i < nx_) { sum += std::sqrt(half*(Dx[i][j]+Dx[i+1][j])+eps_); - sum += std::sqrt(half*(Dy[i][j]+Dy[i+1][j])+eps_); } else { sum += std::sqrt(half*Dx[i][j]+eps_); + } + } + } + for (int i = 0; i < ny_+1; ++i) { + for (int j = 0; j < nx_; ++j) { + if (i==0) { + sum += std::sqrt(Dy[i][j]+eps_); + } + else if (i > 0 && i < ny_) { + sum += std::sqrt(half*(Dy[i][j]+Dy[i+1][j])+eps_); + } + else { sum += std::sqrt(half*Dy[i][j]+eps_); } } @@ -1021,59 +1062,77 @@ class QoI_TVControl_Cost_adv_diff : public QoI { const int size = z_param->size(); std::vector g(size,static_cast(0)); const Real half(0.5), two(2), volx2 = volx_*volx_, voly2 = voly_*voly_; - std::vector tmp(n_); - std::vector> Dx(n_+1,tmp), Dy(n_+1,tmp); - for (int i = 0; i < n_+1; ++i) { - for (int j = 0; j < n_; ++j) { + std::vector tmpx(nx_), tmpy(ny_); + std::vector> Dx(nx_+1,tmpy), Dy(ny_+1,tmpx); + for (int i = 0; i < nx_+1; ++i) { + for (int j = 0; j < ny_; ++j) { if (i==0) { - Dx[i][j] = std::pow(-(*z_param)[i+j*n_]/volx_,two); - Dy[i][j] = std::pow(-(*z_param)[j+i*n_]/voly_,two); + Dx[i][j] = std::pow(-(*z_param)[i+j*nx_]/volx_,two); } - else if (i > 0 && i < n_) { - Dx[i][j] = std::pow(((*z_param)[i+j*n_]-(*z_param)[(i-1)+j*n_])/volx_,two); - Dy[i][j] = std::pow(((*z_param)[j+i*n_]-(*z_param)[j+(i-1)*n_])/voly_,two); + else if (i > 0 && i < nx_) { + Dx[i][j] = std::pow(((*z_param)[i+j*nx_]-(*z_param)[(i-1)+j*nx_])/volx_,two); } else { - Dx[i][j] = std::pow((*z_param)[(i-1)+j*n_]/volx_,two); - Dy[i][j] = std::pow((*z_param)[j+(i-1)*n_]/voly_,two); + Dx[i][j] = std::pow((*z_param)[(i-1)+j*nx_]/volx_,two); } } } - for (int i = 0; i < n_+1; ++i) { - for (int j = 0; j < n_; ++j) { + for (int i = 0; i < ny_+1; ++i) { + for (int j = 0; j < nx_; ++j) { + if (i==0) { + Dy[i][j] = std::pow(-(*z_param)[j+i*nx_]/voly_,two); + } + else if (i > 0 && i < ny_) { + Dy[i][j] = std::pow(((*z_param)[j+i*nx_]-(*z_param)[j+(i-1)*nx_])/voly_,two); + } + else { + Dy[i][j] = std::pow((*z_param)[j+(i-1)*nx_]/voly_,two); + } + } + } + for (int i = 0; i < nx_+1; ++i) { + for (int j = 0; j < ny_; ++j) { if (i==0) { Real cx = (vol_/volx2)/std::sqrt(Dx[i][j]+eps_); - g[i+j*n_] += cx*(*z_param)[i+j*n_]; - - Real cy = (vol_/voly2)/std::sqrt(Dy[i][j]+eps_); - g[j+i*n_] += cy*(*z_param)[j+i*n_]; + g[i+j*nx_] += cx*(*z_param)[i+j*nx_]; } - else if (i > 0 && i < n_-1) { + else if (i > 0 && i < nx_-1) { Real cx = half*vol_/(volx2*std::sqrt(half*(Dx[i][j]+Dx[i+1][j])+eps_)); - g[(i-1)+j*n_] -= cx*((*z_param)[i+j*n_]-(*z_param)[(i-1)+j*n_]); - g[i+j*n_] += cx*(two*(*z_param)[i+j*n_]-(*z_param)[(i+1)+j*n_]-(*z_param)[(i-1)+j*n_]); - g[(i+1)+j*n_] += cx*((*z_param)[(i+1)+j*n_]-(*z_param)[i+j*n_]); - - Real cy = half*vol_/(voly2*std::sqrt(half*(Dy[i][j]+Dy[i+1][j])+eps_)); - g[j+(i-1)*n_] -= cy*((*z_param)[j+i*n_]-(*z_param)[j+(i-1)*n_]); - g[j+i*n_] += cy*(two*(*z_param)[j+i*n_]-(*z_param)[j+(i+1)*n_]-(*z_param)[j+(i-1)*n_]); - g[j+(i+1)*n_] += cy*((*z_param)[j+(i+1)*n_]-(*z_param)[j+i*n_]); + g[(i-1)+j*nx_] -= cx*((*z_param)[i+j*nx_]-(*z_param)[(i-1)+j*nx_]); + g[i+j*nx_] += cx*(two*(*z_param)[i+j*nx_]-(*z_param)[(i+1)+j*nx_]-(*z_param)[(i-1)+j*nx_]); + g[(i+1)+j*nx_] += cx*((*z_param)[(i+1)+j*nx_]-(*z_param)[i+j*nx_]); } - else if (i == n_-1) { + else if (i == nx_-1) { Real cx = half*vol_/(volx2*std::sqrt(half*(Dx[i][j]+Dx[i+1][j])+eps_)); - g[(i-1)+j*n_] -= cx*((*z_param)[i+j*n_]-(*z_param)[(i-1)+j*n_]); - g[i+j*n_] += cx*(two*(*z_param)[i+j*n_]-(*z_param)[(i-1)+j*n_]); - - Real cy = half*vol_/(voly2*std::sqrt(half*(Dy[i][j]+Dy[i+1][j])+eps_)); - g[j+(i-1)*n_] -= cy*((*z_param)[j+i*n_]-(*z_param)[j+(i-1)*n_]); - g[j+i*n_] += cy*(two*(*z_param)[j+i*n_]-(*z_param)[j+(i-1)*n_]); + g[(i-1)+j*nx_] -= cx*((*z_param)[i+j*nx_]-(*z_param)[(i-1)+j*nx_]); + g[i+j*nx_] += cx*(two*(*z_param)[i+j*nx_]-(*z_param)[(i-1)+j*nx_]); } - else if (i==n_) { + else if (i==nx_) { Real cx = vol_*half/(volx2*std::sqrt(half*Dx[i][j]+eps_)); - g[(i-1)+j*n_] += cx*(*z_param)[(i-1)+j*n_]; - + g[(i-1)+j*nx_] += cx*(*z_param)[(i-1)+j*nx_]; + } + } + } + for (int i = 0; i < ny_+1; ++i) { + for (int j = 0; j < nx_; ++j) { + if (i==0) { + Real cy = (vol_/voly2)/std::sqrt(Dy[i][j]+eps_); + g[j+i*nx_] += cy*(*z_param)[j+i*nx_]; + } + else if (i > 0 && i < ny_-1) { + Real cy = half*vol_/(voly2*std::sqrt(half*(Dy[i][j]+Dy[i+1][j])+eps_)); + g[j+(i-1)*nx_] -= cy*((*z_param)[j+i*nx_]-(*z_param)[j+(i-1)*nx_]); + g[j+i*nx_] += cy*(two*(*z_param)[j+i*nx_]-(*z_param)[j+(i+1)*nx_]-(*z_param)[j+(i-1)*nx_]); + g[j+(i+1)*nx_] += cy*((*z_param)[j+(i+1)*nx_]-(*z_param)[j+i*nx_]); + } + else if (i == ny_-1) { + Real cy = half*vol_/(voly2*std::sqrt(half*(Dy[i][j]+Dy[i+1][j])+eps_)); + g[j+(i-1)*nx_] -= cy*((*z_param)[j+i*nx_]-(*z_param)[j+(i-1)*nx_]); + g[j+i*nx_] += cy*(two*(*z_param)[j+i*nx_]-(*z_param)[j+(i-1)*nx_]); + } + else if (i==ny_) { Real cy = vol_*half/(voly2*std::sqrt(half*Dy[i][j]+eps_)); - g[j+(i-1)*n_] += cy*(*z_param)[j+(i-1)*n_]; + g[j+(i-1)*nx_] += cy*(*z_param)[j+(i-1)*nx_]; } } } @@ -1197,93 +1256,111 @@ class QoI_TVControl_Cost_adv_diff : public QoI { const int size = z_param->size(); std::vector h(size,static_cast(0)); const Real half(0.5), two(2), three(3), volx2 = volx_*volx_, voly2 = voly_*voly_; - std::vector tmp(n_); - std::vector> Dx(n_+1,tmp), Dy(n_+1,tmp); - for (int i = 0; i < n_+1; ++i) { - for (int j = 0; j < n_; ++j) { + std::vector tmpx(nx_), tmpy(ny_); + std::vector> Dx(nx_+1,tmpy), Dy(ny_+1,tmpx); + for (int i = 0; i < nx_+1; ++i) { + for (int j = 0; j < ny_; ++j) { if (i==0) { - Dx[i][j] = std::pow(-(*z_param)[i+j*n_]/volx_,two); - Dy[i][j] = std::pow(-(*z_param)[j+i*n_]/voly_,two); + Dx[i][j] = std::pow(-(*z_param)[i+j*nx_]/volx_,two); } - else if (i > 0 && i < n_) { - Dx[i][j] = std::pow(((*z_param)[i+j*n_]-(*z_param)[(i-1)+j*n_])/volx_,two); - Dy[i][j] = std::pow(((*z_param)[j+i*n_]-(*z_param)[j+(i-1)*n_])/voly_,two); + else if (i > 0 && i < nx_) { + Dx[i][j] = std::pow(((*z_param)[i+j*nx_]-(*z_param)[(i-1)+j*nx_])/volx_,two); } else { - Dx[i][j] = std::pow((*z_param)[(i-1)+j*n_]/volx_,two); - Dy[i][j] = std::pow((*z_param)[j+(i-1)*n_]/voly_,two); + Dx[i][j] = std::pow((*z_param)[(i-1)+j*nx_]/volx_,two); } } } - for (int i = 0; i < n_+1; ++i) { - for (int j = 0; j < n_; ++j) { + for (int i = 0; i < ny_+1; ++i) { + for (int j = 0; j < nx_; ++j) { + if (i==0) { + Dy[i][j] = std::pow(-(*z_param)[j+i*nx_]/voly_,two); + } + else if (i > 0 && i < ny_) { + Dy[i][j] = std::pow(((*z_param)[j+i*nx_]-(*z_param)[j+(i-1)*nx_])/voly_,two); + } + else { + Dy[i][j] = std::pow((*z_param)[j+(i-1)*nx_]/voly_,two); + } + } + } + for (int i = 0; i < nx_+1; ++i) { + for (int j = 0; j < ny_; ++j) { if (i==0) { Real cx1 = (vol_/volx2)/std::sqrt(Dx[i][j]+eps_); Real cx2 = (vol_/volx2)*(two/volx2)*(-half/std::pow(std::sqrt(Dx[i][j]+eps_),three)); - h[i+j*n_] += (cx1+cx2*std::pow((*z_param)[i+j*n_],two))*(*v_param)[i+j*n_]; - - Real cy1 = (vol_/voly2)/std::sqrt(Dy[i][j]+eps_); - Real cy2 = (vol_/voly2)*(two/voly2)*(-half/std::pow(std::sqrt(Dy[i][j]+eps_),three)); - h[j+i*n_] += (cy1+cy2*std::pow((*z_param)[j+i*n_],two))*(*v_param)[j+i*n_]; + h[i+j*nx_] += (cx1+cx2*std::pow((*z_param)[i+j*nx_],two))*(*v_param)[i+j*nx_]; } - else if (i > 0 && i < n_-1) { + else if (i > 0 && i < nx_-1) { Real cx1 = (half*vol_/volx2)/std::sqrt(half*(Dx[i][j]+Dx[i+1][j])+eps_); Real cx2 = (half*vol_/volx2)*(two/volx2)*(-half*half/std::pow(std::sqrt(half*(Dx[i][j]+Dx[i+1][j])+eps_),three)); - h[(i-1)+j*n_] += cx2*std::pow((*z_param)[i+j*n_]-(*z_param)[(i-1)+j*n_],two)*(*v_param)[(i-1)+j*n_] - -cx2*((*z_param)[i+j*n_]-(*z_param)[(i-1)+j*n_])*(two*(*z_param)[i+j*n_]-(*z_param)[(i+1)+j*n_]-(*z_param)[(i-1)+j*n_])*(*v_param)[i+j*n_] - -cx2*((*z_param)[i+j*n_]-(*z_param)[(i-1)+j*n_])*((*z_param)[(i+1)+j*n_]-(*z_param)[i+j*n_])*(*v_param)[(i+1)+j*n_] - -cx1*((*v_param)[i+j*n_]-(*v_param)[(i-1)+j*n_]); - h[i+j*n_] += cx2*std::pow(two*(*z_param)[i+j*n_]-(*z_param)[(i+1)+j*n_]-(*z_param)[(i-1)+j*n_],two)*(*v_param)[i+j*n_] - -cx2*(two*(*z_param)[i+j*n_]-(*z_param)[(i+1)+j*n_]-(*z_param)[(i-1)+j*n_])*((*z_param)[i+j*n_]-(*z_param)[(i-1)+j*n_])*(*v_param)[(i-1)+j*n_] - +cx2*(two*(*z_param)[i+j*n_]-(*z_param)[(i+1)+j*n_]-(*z_param)[(i-1)+j*n_])*((*z_param)[(i+1)+j*n_]-(*z_param)[i+j*n_])*(*v_param)[(i+1)+j*n_] - +cx1*(two*(*v_param)[i+j*n_]-(*v_param)[(i+1)+j*n_]-(*v_param)[(i-1)+j*n_]); - h[(i+1)+j*n_] += cx2*std::pow((*z_param)[(i+1)+j*n_]-(*z_param)[i+j*n_],two)*(*v_param)[(i+1)+j*n_] - -cx2*((*z_param)[(i+1)+j*n_]-(*z_param)[i+j*n_])*((*z_param)[i+j*n_]-(*z_param)[(i-1)+j*n_])*(*v_param)[(i-1)+j*n_] - +cx2*((*z_param)[(i+1)+j*n_]-(*z_param)[i+j*n_])*(two*(*z_param)[i+j*n_]-(*z_param)[(i+1)+j*n_]-(*z_param)[(i-1)+j*n_])*(*v_param)[i+j*n_] - +cx1*((*v_param)[(i+1)+j*n_]-(*v_param)[i+j*n_]); - - Real cy1 = (half*vol_/voly2)/std::sqrt(half*(Dy[i][j]+Dy[i+1][j])+eps_); - Real cy2 = (half*vol_/voly2)*(two/voly2)*(-half*half/std::pow(std::sqrt(half*(Dy[i][j]+Dy[i+1][j])+eps_),three)); - h[j+(i-1)*n_] += cy2*std::pow((*z_param)[j+i*n_]-(*z_param)[j+(i-1)*n_],two)*(*v_param)[j+(i-1)*n_] - -cy2*((*z_param)[j+i*n_]-(*z_param)[j+(i-1)*n_])*(two*(*z_param)[j+i*n_]-(*z_param)[j+(i+1)*n_]-(*z_param)[j+(i-1)*n_])*(*v_param)[j+i*n_] - -cy2*((*z_param)[j+i*n_]-(*z_param)[j+(i-1)*n_])*((*z_param)[j+(i+1)*n_]-(*z_param)[j+i*n_])*(*v_param)[j+(i+1)*n_] - -cy1*((*v_param)[j+i*n_]-(*v_param)[j+(i-1)*n_]); - h[j+i*n_] += cy2*std::pow(two*(*z_param)[j+i*n_]-(*z_param)[j+(i+1)*n_]-(*z_param)[j+(i-1)*n_],two)*(*v_param)[j+i*n_] - -cy2*(two*(*z_param)[j+i*n_]-(*z_param)[j+(i+1)*n_]-(*z_param)[j+(i-1)*n_])*((*z_param)[j+i*n_]-(*z_param)[j+(i-1)*n_])*(*v_param)[j+(i-1)*n_] - +cy2*(two*(*z_param)[j+i*n_]-(*z_param)[j+(i+1)*n_]-(*z_param)[j+(i-1)*n_])*((*z_param)[j+(i+1)*n_]-(*z_param)[j+i*n_])*(*v_param)[j+(i+1)*n_] - +cy1*(two*(*v_param)[j+i*n_]-(*v_param)[j+(i+1)*n_]-(*v_param)[j+(i-1)*n_]); - h[j+(i+1)*n_] += cy2*std::pow((*z_param)[j+(i+1)*n_]-(*z_param)[j+i*n_],two)*(*v_param)[j+(i+1)*n_] - -cy2*((*z_param)[j+(i+1)*n_]-(*z_param)[j+i*n_])*((*z_param)[j+i*n_]-(*z_param)[j+(i-1)*n_])*(*v_param)[j+(i-1)*n_] - +cy2*((*z_param)[j+(i+1)*n_]-(*z_param)[j+i*n_])*(two*(*z_param)[j+i*n_]-(*z_param)[j+(i+1)*n_]-(*z_param)[j+(i-1)*n_])*(*v_param)[j+i*n_] - +cy1*((*v_param)[j+(i+1)*n_]-(*v_param)[j+i*n_]); + h[(i-1)+j*nx_] += cx2*std::pow((*z_param)[i+j*nx_]-(*z_param)[(i-1)+j*nx_],two)*(*v_param)[(i-1)+j*nx_] + -cx2*((*z_param)[i+j*nx_]-(*z_param)[(i-1)+j*nx_])*(two*(*z_param)[i+j*nx_]-(*z_param)[(i+1)+j*nx_]-(*z_param)[(i-1)+j*nx_])*(*v_param)[i+j*nx_] + -cx2*((*z_param)[i+j*nx_]-(*z_param)[(i-1)+j*nx_])*((*z_param)[(i+1)+j*nx_]-(*z_param)[i+j*nx_])*(*v_param)[(i+1)+j*nx_] + -cx1*((*v_param)[i+j*nx_]-(*v_param)[(i-1)+j*nx_]); + h[i+j*nx_] += cx2*std::pow(two*(*z_param)[i+j*nx_]-(*z_param)[(i+1)+j*nx_]-(*z_param)[(i-1)+j*nx_],two)*(*v_param)[i+j*nx_] + -cx2*(two*(*z_param)[i+j*nx_]-(*z_param)[(i+1)+j*nx_]-(*z_param)[(i-1)+j*nx_])*((*z_param)[i+j*nx_]-(*z_param)[(i-1)+j*nx_])*(*v_param)[(i-1)+j*nx_] + +cx2*(two*(*z_param)[i+j*nx_]-(*z_param)[(i+1)+j*nx_]-(*z_param)[(i-1)+j*nx_])*((*z_param)[(i+1)+j*nx_]-(*z_param)[i+j*nx_])*(*v_param)[(i+1)+j*nx_] + +cx1*(two*(*v_param)[i+j*nx_]-(*v_param)[(i+1)+j*nx_]-(*v_param)[(i-1)+j*nx_]); + h[(i+1)+j*nx_] += cx2*std::pow((*z_param)[(i+1)+j*nx_]-(*z_param)[i+j*nx_],two)*(*v_param)[(i+1)+j*nx_] + -cx2*((*z_param)[(i+1)+j*nx_]-(*z_param)[i+j*nx_])*((*z_param)[i+j*nx_]-(*z_param)[(i-1)+j*nx_])*(*v_param)[(i-1)+j*nx_] + +cx2*((*z_param)[(i+1)+j*nx_]-(*z_param)[i+j*nx_])*(two*(*z_param)[i+j*nx_]-(*z_param)[(i+1)+j*nx_]-(*z_param)[(i-1)+j*nx_])*(*v_param)[i+j*nx_] + +cx1*((*v_param)[(i+1)+j*nx_]-(*v_param)[i+j*nx_]); } - else if (i == n_-1) { + else if (i == nx_-1) { Real cx1 = (half*vol_/volx2)/std::sqrt(half*(Dx[i][j]+Dx[i+1][j])+eps_); Real cx2 = (half*vol_/volx2)*(two/volx2)*(-half*half/std::pow(std::sqrt(half*(Dx[i][j]+Dx[i+1][j])+eps_),three)); - h[(i-1)+j*n_] += cx2*std::pow((*z_param)[i+j*n_]-(*z_param)[(i-1)+j*n_],two)*(*v_param)[(i-1)+j*n_] - -cx2*((*z_param)[i+j*n_]-(*z_param)[(i-1)+j*n_])*(two*(*z_param)[i+j*n_]-(*z_param)[(i-1)+j*n_])*(*v_param)[i+j*n_] - -cx1*((*v_param)[i+j*n_]-(*v_param)[(i-1)+j*n_]); - h[i+j*n_] += cx2*std::pow(two*(*z_param)[i+j*n_]-(*z_param)[(i-1)+j*n_],two)*(*v_param)[i+j*n_] - -cx2*(two*(*z_param)[i+j*n_]-(*z_param)[(i-1)+j*n_])*((*z_param)[i+j*n_]-(*z_param)[(i-1)+j*n_])*(*v_param)[(i-1)+j*n_] - +cx1*(two*(*v_param)[i+j*n_]-(*v_param)[(i-1)+j*n_]); - - Real cy1 = (half*vol_/voly2)/std::sqrt(half*(Dy[i][j]+Dy[i+1][j])+eps_); - Real cy2 = (half*vol_/voly2)*(two/voly2)*(-half*half/std::pow(std::sqrt(half*(Dy[i][j]+Dy[i+1][j])+eps_),three)); - h[j+(i-1)*n_] += cy2*std::pow((*z_param)[j+i*n_]-(*z_param)[j+(i-1)*n_],two)*(*v_param)[j+(i-1)*n_] - -cy2*((*z_param)[j+i*n_]-(*z_param)[j+(i-1)*n_])*(two*(*z_param)[j+i*n_]-(*z_param)[j+(i-1)*n_])*(*v_param)[j+i*n_] - -cy1*((*v_param)[j+i*n_]-(*v_param)[j+(i-1)*n_]); - h[j+i*n_] += cy2*std::pow(two*(*z_param)[j+i*n_]-(*z_param)[j+(i-1)*n_],two)*(*v_param)[j+i*n_] - -cy2*(two*(*z_param)[j+i*n_]-(*z_param)[j+(i-1)*n_])*((*z_param)[j+i*n_]-(*z_param)[j+(i-1)*n_])*(*v_param)[j+(i-1)*n_] - +cy1*(two*(*v_param)[j+i*n_]-(*v_param)[j+(i-1)*n_]); + h[(i-1)+j*nx_] += cx2*std::pow((*z_param)[i+j*nx_]-(*z_param)[(i-1)+j*nx_],two)*(*v_param)[(i-1)+j*nx_] + -cx2*((*z_param)[i+j*nx_]-(*z_param)[(i-1)+j*nx_])*(two*(*z_param)[i+j*nx_]-(*z_param)[(i-1)+j*nx_])*(*v_param)[i+j*nx_] + -cx1*((*v_param)[i+j*nx_]-(*v_param)[(i-1)+j*nx_]); + h[i+j*nx_] += cx2*std::pow(two*(*z_param)[i+j*nx_]-(*z_param)[(i-1)+j*nx_],two)*(*v_param)[i+j*nx_] + -cx2*(two*(*z_param)[i+j*nx_]-(*z_param)[(i-1)+j*nx_])*((*z_param)[i+j*nx_]-(*z_param)[(i-1)+j*nx_])*(*v_param)[(i-1)+j*nx_] + +cx1*(two*(*v_param)[i+j*nx_]-(*v_param)[(i-1)+j*nx_]); } - else if (i==n_) { + else if (i==nx_) { Real cx1 = (vol_*half/volx2)/std::sqrt(half*Dx[i][j]+eps_); Real cx2 = (vol_*half/volx2)*(two/volx2)*(-half*half/std::pow(std::sqrt(half*Dx[i][j]+eps_),three)); - h[(i-1)+j*n_] += (cx1+cx2*std::pow((*z_param)[(i-1)+j*n_],two))*(*v_param)[(i-1)+j*n_]; - + h[(i-1)+j*nx_] += (cx1+cx2*std::pow((*z_param)[(i-1)+j*nx_],two))*(*v_param)[(i-1)+j*nx_]; + } + } + } + for (int i = 0; i < ny_+1; ++i) { + for (int j = 0; j < nx_; ++j) { + if (i==0) { + Real cy1 = (vol_/voly2)/std::sqrt(Dy[i][j]+eps_); + Real cy2 = (vol_/voly2)*(two/voly2)*(-half/std::pow(std::sqrt(Dy[i][j]+eps_),three)); + h[j+i*nx_] += (cy1+cy2*std::pow((*z_param)[j+i*nx_],two))*(*v_param)[j+i*nx_]; + } + else if (i > 0 && i < ny_-1) { + Real cy1 = (half*vol_/voly2)/std::sqrt(half*(Dy[i][j]+Dy[i+1][j])+eps_); + Real cy2 = (half*vol_/voly2)*(two/voly2)*(-half*half/std::pow(std::sqrt(half*(Dy[i][j]+Dy[i+1][j])+eps_),three)); + h[j+(i-1)*nx_] += cy2*std::pow((*z_param)[j+i*nx_]-(*z_param)[j+(i-1)*nx_],two)*(*v_param)[j+(i-1)*nx_] + -cy2*((*z_param)[j+i*nx_]-(*z_param)[j+(i-1)*nx_])*(two*(*z_param)[j+i*nx_]-(*z_param)[j+(i+1)*nx_]-(*z_param)[j+(i-1)*nx_])*(*v_param)[j+i*nx_] + -cy2*((*z_param)[j+i*nx_]-(*z_param)[j+(i-1)*nx_])*((*z_param)[j+(i+1)*nx_]-(*z_param)[j+i*nx_])*(*v_param)[j+(i+1)*nx_] + -cy1*((*v_param)[j+i*nx_]-(*v_param)[j+(i-1)*nx_]); + h[j+i*nx_] += cy2*std::pow(two*(*z_param)[j+i*nx_]-(*z_param)[j+(i+1)*nx_]-(*z_param)[j+(i-1)*nx_],two)*(*v_param)[j+i*nx_] + -cy2*(two*(*z_param)[j+i*nx_]-(*z_param)[j+(i+1)*nx_]-(*z_param)[j+(i-1)*nx_])*((*z_param)[j+i*nx_]-(*z_param)[j+(i-1)*nx_])*(*v_param)[j+(i-1)*nx_] + +cy2*(two*(*z_param)[j+i*nx_]-(*z_param)[j+(i+1)*nx_]-(*z_param)[j+(i-1)*nx_])*((*z_param)[j+(i+1)*nx_]-(*z_param)[j+i*nx_])*(*v_param)[j+(i+1)*nx_] + +cy1*(two*(*v_param)[j+i*nx_]-(*v_param)[j+(i+1)*nx_]-(*v_param)[j+(i-1)*nx_]); + h[j+(i+1)*nx_] += cy2*std::pow((*z_param)[j+(i+1)*nx_]-(*z_param)[j+i*nx_],two)*(*v_param)[j+(i+1)*nx_] + -cy2*((*z_param)[j+(i+1)*nx_]-(*z_param)[j+i*nx_])*((*z_param)[j+i*nx_]-(*z_param)[j+(i-1)*nx_])*(*v_param)[j+(i-1)*nx_] + +cy2*((*z_param)[j+(i+1)*nx_]-(*z_param)[j+i*nx_])*(two*(*z_param)[j+i*nx_]-(*z_param)[j+(i+1)*nx_]-(*z_param)[j+(i-1)*nx_])*(*v_param)[j+i*nx_] + +cy1*((*v_param)[j+(i+1)*nx_]-(*v_param)[j+i*nx_]); + } + else if (i == ny_-1) { + Real cy1 = (half*vol_/voly2)/std::sqrt(half*(Dy[i][j]+Dy[i+1][j])+eps_); + Real cy2 = (half*vol_/voly2)*(two/voly2)*(-half*half/std::pow(std::sqrt(half*(Dy[i][j]+Dy[i+1][j])+eps_),three)); + h[j+(i-1)*nx_] += cy2*std::pow((*z_param)[j+i*nx_]-(*z_param)[j+(i-1)*nx_],two)*(*v_param)[j+(i-1)*nx_] + -cy2*((*z_param)[j+i*nx_]-(*z_param)[j+(i-1)*nx_])*(two*(*z_param)[j+i*nx_]-(*z_param)[j+(i-1)*nx_])*(*v_param)[j+i*nx_] + -cy1*((*v_param)[j+i*nx_]-(*v_param)[j+(i-1)*nx_]); + h[j+i*nx_] += cy2*std::pow(two*(*z_param)[j+i*nx_]-(*z_param)[j+(i-1)*nx_],two)*(*v_param)[j+i*nx_] + -cy2*(two*(*z_param)[j+i*nx_]-(*z_param)[j+(i-1)*nx_])*((*z_param)[j+i*nx_]-(*z_param)[j+(i-1)*nx_])*(*v_param)[j+(i-1)*nx_] + +cy1*(two*(*v_param)[j+i*nx_]-(*v_param)[j+(i-1)*nx_]); + } + else if (i==ny_) { Real cy1 = (vol_*half/voly2)/std::sqrt(half*Dy[i][j]+eps_); Real cy2 = (vol_*half/voly2)*(two/voly2)*(-half*half/std::pow(std::sqrt(half*Dy[i][j]+eps_),three)); - h[j+(i-1)*n_] += (cy1+cy2*std::pow((*z_param)[j+(i-1)*n_],two))*(*v_param)[j+(i-1)*n_]; + h[j+(i-1)*nx_] += (cy1+cy2*std::pow((*z_param)[j+(i-1)*nx_],two))*(*v_param)[j+(i-1)*nx_]; } } } @@ -1298,19 +1375,19 @@ class QoI_IntegralityControl_Cost_adv_diff : public QoI { private: const ROL::Ptr> fe_; Real volx_,voly_, vol_; - int n_; + int nx_, ny_; public: QoI_IntegralityControl_Cost_adv_diff(const ROL::Ptr> &fe, ROL::ParameterList & parlist) : fe_(fe) { - int order = parlist.sublist("Problem").get("Hilbert Curve Order", 2); Real XL = parlist.sublist("Geometry").get("X0", 0.0); Real YL = parlist.sublist("Geometry").get("Y0", 0.0); Real XU = XL + parlist.sublist("Geometry").get("Width", 1.0); Real YU = YL + parlist.sublist("Geometry").get("Height", 1.0); - n_ = std::pow(2,order); - volx_ = (XU-XL)/static_cast(n_); - voly_ = (YU-YL)/static_cast(n_); + nx_ = parlist.sublist("Problem").get("Number of X-Cells", 4); + ny_ = parlist.sublist("Problem").get("Number of Y-Cells", 2); + volx_ = (XU-XL)/static_cast(nx_); + voly_ = (YU-YL)/static_cast(ny_); vol_ = volx_*voly_; } @@ -1341,9 +1418,9 @@ class QoI_IntegralityControl_Cost_adv_diff : public QoI { else { const Real one(1); Real sum(0); - for (int i = 0; i < n_; ++i) { - for (int j = 0; j < n_; ++j) { - sum += (*z_param)[i+j*n_]*(one-(*z_param)[i+j*n_]); + for (int i = 0; i < nx_; ++i) { + for (int j = 0; j < ny_; ++j) { + sum += (*z_param)[i+j*nx_]*(one-(*z_param)[i+j*nx_]); } } val = ROL::nullPtr; @@ -1400,9 +1477,9 @@ class QoI_IntegralityControl_Cost_adv_diff : public QoI { const int size = z_param->size(); std::vector g(size,static_cast(0)); const Real one(1), two(2); - for (int i = 0; i < n_; ++i) { - for (int j = 0; j < n_; ++j) { - g[i+j*n_] = vol_*(one - two*(*z_param)[i+j*n_]); + for (int i = 0; i < nx_; ++i) { + for (int j = 0; j < ny_; ++j) { + g[i+j*nx_] = vol_*(one - two*(*z_param)[i+j*nx_]); } } return g; @@ -1505,9 +1582,9 @@ class QoI_IntegralityControl_Cost_adv_diff : public QoI { const int size = z_param->size(); std::vector h(size,static_cast(0)); const Real two(2); - for (int i = 0; i < n_+1; ++i) { - for (int j = 0; j < n_; ++j) { - h[i+j*n_] = -vol_*two*(*v_param)[i+j*n_]; + for (int i = 0; i < nx_; ++i) { + for (int j = 0; j < ny_; ++j) { + h[i+j*nx_] = -vol_*two*(*v_param)[i+j*nx_]; } } return h; diff --git a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/run.sh b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/run.sh new file mode 100755 index 000000000000..0d9dba7a28a5 --- /dev/null +++ b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/run.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +size="$1x$2" +file="output_$1x$2.txt" + +sed -i '11s/.*/ /' input_ex01.xml +sed -i '12s/.*/ /' input_ex01.xml + +./ROL_example_PDE-OPT_binary_adv-diff-TEST_RelaxedBinary.exe --maxWallMinutes=600 --relTolerance=1e-6 $size |tee $file + +plot="${3:-1000}" +if [ $plot -eq "1" ] +then + matlab -nodisplay -r "plotPEBBL($1,$2); quit"; stty sane + epstopdf 'control_'$1'x'$2'.eps' + xdg-open 'control_'$1'x'$2'.pdf' & +fi diff --git a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/sensor.txt b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/sensor.txt index 981fa83658f3..6b3fa059d2f4 100644 --- a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/sensor.txt +++ b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/sensor.txt @@ -1,200 +1,200 @@ - 1.8699947022029133e+00 7.0518748952070021e-01 1.4808365994723680e-01 - 1.9597011176522510e+00 2.9544040106307046e-01 2.1478663829603950e-01 - 2.9951655360280416e-01 2.1262830422469059e-01 3.0927699366004689e-13 - 7.9323883172413812e-01 4.0268367313111431e-01 4.5046988026866612e-07 - 5.3219556838332949e-01 6.9781829198624723e-01 1.8263355520512689e-05 - 8.8961851620615651e-02 3.6202520212759537e-01 2.5253898327301547e-02 - 1.8681776440490663e+00 9.6613913038467114e-01 5.6495038359399265e-02 - 1.5427282363307948e+00 5.7679641113784874e-01 1.4600920991027616e-01 - 3.3279852793988329e-01 4.6967887949011278e-01 5.6697310397131405e-02 - 1.7004476067493219e+00 1.8542925345118122e-01 2.3799974287496781e-01 - 1.2682402887140682e+00 9.9228598569950477e-01 6.5367226099913106e-02 - 1.0053492387246488e-01 4.8030948394216022e-01 1.3175760923889349e-01 - 8.8552011381114371e-01 8.0027179894102707e-01 1.2442922713814103e-01 - 1.4762948795075750e+00 8.1164419509306041e-01 2.8081680283948949e-02 - 5.0845838995369830e-01 1.6391418535248969e-01 3.0442456981755711e-02 - 5.9302732279570769e-01 8.0626300302478815e-01 4.1753460654524229e-03 - 5.3703424619207629e-01 3.2057047680817186e-01 3.9140973669087857e-02 - 1.8157872232653700e+00 3.4020729596788635e-01 1.3080620799351761e-01 - 8.4470007432268179e-02 7.9755870432577014e-01 1.8900602820300437e-05 - 1.9101890408563271e-01 5.2715864757573239e-01 3.2306966277468339e-02 - 3.9644617329741028e-01 2.1163699624998733e-01 2.1010042781806890e-01 - 9.1924380847189457e-01 7.1128352445928633e-01 2.3232648033550243e-01 - 1.9012962608838100e+00 7.8741571659655984e-01 1.0546103420630777e-01 - 1.0257701988341843e+00 8.4434373808057295e-01 2.0417251300171158e-01 - 1.7365152686914263e+00 8.1695912078724175e-01 2.1924956153474992e-01 - 1.3083495992009215e+00 8.5071687918826555e-01 9.5196733342803444e-02 - 9.1302649328691965e-01 3.7273064129010103e-01 1.7125060493123277e-06 - 1.7646741149581087e+00 8.5095695411060479e-01 1.2545254841687950e-01 - 1.8172913288489787e+00 4.0193147398262608e-01 3.2448993205690373e-03 - 1.1579126568231981e+00 3.3477495637362420e-01 2.3055546532813606e-01 - 2.7777735065405507e-01 2.2108055310806396e-01 2.3913971716366830e-01 - 1.1461353598318968e-01 3.8553814383973850e-01 2.2147483143639905e-03 - 6.4983846052780514e-02 7.3138806391483113e-01 1.2564558418593053e-01 - 6.0366169719707763e-01 1.6655688608414798e-01 2.2593460301682139e-01 - 1.0690810542712614e+00 1.1201224291765066e-01 2.6537252841553466e-01 - 6.8846747350560600e-01 6.3586987155377961e-01 5.1471585717399851e-07 - 5.2298565890609527e-01 5.4024030026867442e-01 3.9425890335219337e-04 - 1.0247390383543120e-01 1.0100978611616851e-02 2.5049485545996293e-11 - 2.5957949473627284e-02 1.1741154433528678e-01 2.0974159097778897e-01 - 2.2818728694386392e-01 1.2910044836878343e-01 7.9826075004568469e-08 - 1.1328949143162514e-02 8.1384810987350109e-01 2.1179072036324764e-01 - 1.3773898327410428e+00 9.8247542157506951e-01 1.3918822729873520e-01 - 2.4933341221913929e-01 2.5510385175976635e-01 1.2042798062491644e-01 - 1.6311942997701045e+00 7.7869745415437497e-01 8.8941272339960659e-02 - 1.5891363563534173e+00 8.1153672054532944e-01 1.4703525775412174e-01 - 9.4068590741203151e-01 1.1945249521030377e-02 1.8222980635076286e-01 - 5.7155350341408617e-01 3.7883205982537249e-01 2.4518606409165193e-02 - 1.4443106993150550e+00 4.8477405450491173e-01 1.3622432648679797e-01 - 1.2096255644949760e-02 7.0982120398716253e-01 1.1991421374495136e-01 - 1.8675388949594343e+00 3.1040545863156721e-01 1.0372833967816525e-01 - 1.6537202910307975e+00 8.4992570758836283e-01 6.3197328333198952e-02 - 6.5012824400860847e-01 4.4341806179896337e-01 1.8678919994857890e-01 - 9.4824084305917911e-01 7.1086355052024430e-02 8.1795277135768951e-02 - 1.8485249148318288e+00 2.9475205000609539e-01 6.4081596918120598e-02 - 4.6476297082573392e-01 1.6954479341593487e-01 3.0948984847081999e-09 - 9.1540123047038469e-01 6.8887080067368411e-01 3.3828425034100398e-02 - 4.4330380955188575e-01 2.0616364731381731e-01 1.3917874964773413e-01 - 1.6173807015945467e+00 9.6176181418635931e-01 1.8499805725618401e-01 - 4.1006432125293424e-01 8.0877084399746457e-01 2.3638690349521782e-01 - 1.5636762400247628e+00 2.0075952772422911e-01 5.5825379245393970e-02 - 1.3848622256064562e+00 2.8776084640795863e-01 1.8705404598266967e-01 - 8.8787253880755657e-01 2.4188377135003547e-01 3.1076540564497507e-05 - 9.2825647396228872e-01 8.3573713599690236e-01 4.2685678638823841e-03 - 1.9807968357052688e+00 2.2027413160108966e-01 7.2476842024774523e-06 - 8.6389936609154327e-01 8.8995592869264084e-01 7.9304466544803692e-02 - 9.5922656823424735e-01 1.6904197377199481e-01 1.0280988686872000e-01 - 1.2419538042821392e+00 1.4670958138500279e-01 2.9335068960182942e-01 - 5.8528400306603068e-01 1.7112690467579483e-01 2.8489950881423899e-02 - 1.9161017970158998e+00 3.5776516512544099e-01 1.6296896618929968e-01 - 3.0878509053035241e-01 2.2263046704647338e-01 1.3224354846484471e-01 - 1.6573945766720937e+00 9.2300201451934960e-01 2.0302587343577022e-01 - 1.0017906278907440e+00 3.5261318667684538e-01 1.5599616045248989e-02 - 7.5219940742013636e-01 8.5527618257674209e-01 1.2584446739599814e-01 - 1.5272243194891821e-01 8.7901118722193039e-01 4.9158063445236759e-02 - 1.9819847599311675e+00 6.2065705302479124e-01 1.3399056943863877e-01 - 6.2284668998055270e-01 9.4200985130684090e-01 6.0312984204849744e-08 - 4.4328107726472377e-01 6.3534068357780993e-01 2.6009961454298475e-01 - 7.3063161661737563e-01 4.0267950444131251e-01 1.8360312065430873e-01 - 9.4474798153574646e-01 9.3760551024620109e-01 5.4677436567416915e-02 - 3.6369845556709635e-02 3.5754452083803789e-01 4.6668152409036143e-02 - 3.4072496332267610e-01 3.2710807440595957e-02 1.3004240105269377e-01 - 1.2728152403015156e+00 4.3824003882657303e-01 1.6546173079680548e-01 - 1.5081075314523984e-01 7.7619144441982790e-01 8.8133027831816729e-02 - 4.3287571415556547e-01 6.2496714508537266e-01 1.5192661306182259e-01 - 2.0907970005115839e-01 3.9611661168201651e-01 9.0440763029601676e-02 - 4.3872538142657413e-01 7.2163334016232628e-01 8.8080455015825397e-13 - 9.1619166607090774e-01 6.8988767295790887e-01 1.6746544940379429e-02 - 1.1338174112148103e+00 5.9510081495373135e-01 2.2433602352430679e-01 - 7.5693698417599098e-02 2.5049939626726170e-01 4.4389309816038877e-02 - 9.9576436325549356e-01 6.0198750893988695e-01 8.9717824267917246e-02 - 5.0304101484164487e-01 8.6880423936508877e-01 1.8659164930210109e-01 - 1.5028192317036910e+00 2.9413979208928054e-01 1.8640599997936957e-01 - 8.4003550941801253e-01 1.1428696048447651e-01 1.5927249106448560e-01 - 7.0743392355425927e-01 3.5195375579401911e-01 1.3059685046789629e-01 - 4.0960663727903857e-01 7.0253422695956269e-01 2.0174088196445999e-01 - 1.7821996144850960e+00 7.2509627722623482e-01 2.6665018048371414e-01 - 4.4147389495760558e-01 7.3333132046310290e-01 6.7504223420105550e-02 - 1.9059026268094841e+00 3.8470477415845927e-01 3.4695236688202756e-02 - 9.9863845988180255e-01 2.0168069307385306e-01 3.7987671950462779e-02 - 1.1162098274018466e+00 2.2991190706137821e-01 1.6128551465856358e-01 - 1.8161812935938184e+00 9.9862098301404223e-01 1.1197316660881108e-01 - 1.2296779358329961e+00 9.3564108537202961e-01 1.3217022142260007e-01 - 2.8368430327716521e-02 5.9169318206165933e-01 5.1979913052978721e-02 - 3.9891901825104181e-01 5.2458511553807696e-01 1.0873340556959539e-01 - 1.4595303452578974e+00 1.0455557763615064e-01 9.9687131323939651e-02 - 9.7724919328097082e-01 5.0125355060811971e-01 1.6947914582763307e-01 - 5.6368307669550255e-02 5.2771859708090840e-02 1.6141837312891835e-01 - 1.7309635191767381e+00 3.3631532139918785e-01 1.9558690222466996e-01 - 9.6824201140376154e-01 6.9092044310573608e-01 4.5071833579417492e-02 - 2.3660446114957656e-01 7.4320493004805677e-01 4.5336419475955005e-06 - 1.5011675340166710e+00 4.4409246484181319e-01 5.6942660656808279e-03 - 2.4081679209497775e-01 2.6730878016622706e-01 2.8998421477805647e-01 - 9.8000889032101535e-01 1.0696204923644093e-02 3.9515611044104143e-02 - 1.7589223140313672e+00 6.1500057181016432e-01 1.3955006831638911e-01 - 8.8768261978974028e-02 1.4124143019289326e-02 2.9498109314208534e-03 - 1.6545882192764565e+00 4.6398583330109266e-02 1.0541575781976009e-03 - 4.6613298211439247e-01 9.0229674601980014e-01 6.2086192414740976e-02 - 5.2078234472284013e-01 7.6754022815625089e-01 1.9733772031894495e-01 - 1.3505698298920308e+00 4.7545186075832957e-01 2.4268809082297550e-02 - 5.9242886164973152e-01 9.1340798619054664e-01 4.6102893601297662e-10 - 8.1179299922201498e-01 8.2382325831808312e-01 7.0511543281626780e-03 - 1.9677716265594745e+00 8.7984627541701665e-01 1.4069765812712144e-02 - 1.3707568079053956e+00 7.6765556631270360e-01 1.4627302615088340e-02 - 1.4690509698073249e+00 7.5777475940670458e-01 1.4733650688338698e-01 - 1.9345988911438976e+00 8.0911939968575219e-01 3.0769488917894556e-09 - 1.1605560705272437e+00 1.9604376124227052e-02 3.1220693856061271e-02 - 1.1258760871818745e+00 5.4973886796629801e-01 1.0744673784644132e-04 - 4.7449561503547155e-01 2.8377281670019250e-01 1.5536706419055391e-01 - 7.7589621605490544e-01 3.8481195474593299e-01 7.7240917231571268e-02 - 1.6080070115699931e+00 9.6979852973923264e-01 5.8684532447610190e-02 - 1.2726537870923371e-01 3.8608877902760264e-01 7.3815932411931322e-08 - 1.4456573993439834e+00 6.0643283553752836e-01 2.3683049005174325e-01 - 4.5381018848589294e-01 1.8329680635135581e-01 6.2853339584185750e-02 - 1.8789397083703050e+00 1.6139882070534517e-02 4.1191449022848790e-02 - 8.5405325399628174e-01 2.5761622016196761e-01 1.5658654106881545e-01 - 1.9848372291826082e+00 3.1577651686974639e-01 1.3714250473273271e-01 - 3.1047490253461785e-01 1.2198388711592800e-01 7.5731046445533759e-02 - 1.9468028551750938e+00 7.6947438680525670e-01 9.5544890137065919e-06 - 1.9990350187352441e+00 4.1222687517187118e-01 6.1770112500036230e-06 - 6.9185577882385907e-01 6.3355592524365978e-01 9.3356952305016658e-02 - 9.9397177413326965e-01 2.7635276577671930e-01 2.3457173973489859e-01 - 1.4229493252379375e+00 8.9414774714207090e-01 2.2565594603323719e-02 - 2.2321865813740116e-01 2.1968031609696803e-01 1.9683757529109228e-01 - 1.4184846084586638e+00 8.2810550661702753e-01 2.3145471153709077e-01 - 1.3342277813809060e+00 4.0275768898436071e-01 1.8063267008216202e-01 - 1.2856671003544613e+00 4.1669543051716773e-01 1.8162079049439091e-04 - 1.3346380981581869e+00 7.8590463378373454e-01 1.1772552143260911e-01 - 9.6080177955139812e-01 5.4806854933696125e-01 1.6206065754414259e-01 - 4.9333191285859446e-01 5.6929267797236904e-01 1.0309613017445839e-01 - 1.2601811919493064e+00 8.1106867322107679e-01 9.6475236266675189e-09 - 3.7029472975534050e-01 7.7000490340018035e-01 1.1903417534678483e-02 - 9.9886846119542128e-02 3.7538557261787431e-01 7.4429863370672311e-02 - 6.1465905831172218e-01 5.5781437942306367e-01 9.6592777175217345e-02 - 8.0301702441177181e-02 5.2176905502685611e-01 1.5418578516401124e-01 - 1.8022245650892943e-01 2.6507321971575215e-01 1.7884939156981913e-01 - 1.2966624774044027e+00 6.6743237492288432e-01 1.8079033793760263e-01 - 3.5711274483936473e-01 7.8172556301027307e-01 2.7559343251275588e-03 - 9.9674229482395837e-01 2.9773177602835577e-01 5.0981943487143973e-02 - 1.6788505863762491e+00 8.9160443784965482e-01 8.0216824717498561e-08 - 6.1386364124173998e-01 7.5518925970881967e-01 1.5403897306877373e-01 - 1.0903539645134739e+00 2.8918286752766686e-01 1.2616137655293150e-01 - 3.0472363792750468e-01 7.1281185592769880e-01 3.7826845103266976e-02 - 1.5152364014123880e+00 3.6739338604838223e-01 8.8274034783105249e-02 - 1.8098962964806087e+00 8.8781295951515604e-01 6.7514968894555161e-02 - 4.7528978622437945e-01 7.6180162769142346e-01 2.0565384806586304e-01 - 1.6512588511438269e+00 2.2012657608594699e-01 2.2343384709962122e-01 - 2.1109570450034987e-01 2.4239354070783969e-01 8.6773011275184553e-02 - 1.4133282458066594e+00 2.1989844502260425e-01 1.1130555170259937e-01 - 1.9156347179668121e+00 2.5478370625646729e-03 1.1301754737845107e-01 - 1.3747029312994568e+00 2.7076813743420414e-01 1.1335903720115306e-01 - 1.3907642475907673e+00 3.4175302722589063e-02 6.7123490645289469e-02 - 1.0889560485974830e+00 5.4343684697354444e-01 1.5984833001072335e-01 - 5.8376876747965589e-01 4.0237147027474296e-01 2.2188749344208147e-01 - 1.6814237299021371e+00 8.5260486851799278e-01 1.2469136556304798e-01 - 1.8166248738504942e-01 3.2634093208478032e-01 1.5898099950357136e-01 - 3.4111683747096100e-01 2.7423396370135578e-02 1.4531004235676817e-01 - 1.4497341938739727e+00 6.2312209202144109e-01 1.7967696416642231e-01 - 1.7748038599742566e+00 4.6114084583804082e-01 1.1051988636644805e-01 - 6.7244997973211706e-02 2.8339737852175051e-01 1.9202737275473969e-01 - 1.3633451698298238e-01 7.2891813506192293e-01 1.1988242731504891e-02 - 1.0887830935376694e+00 6.1208799335337627e-01 1.9402191731329815e-01 - 4.2614004391739391e-01 6.9217893005791464e-01 3.3148563477458134e-02 - 5.0015799118633897e-01 5.8610228551073984e-01 7.0429152060303452e-02 - 1.7520560337531759e+00 9.6274392602433334e-01 2.1636996383209567e-01 - 3.6508173499805308e-01 2.3960965171549509e-01 7.5188458703521629e-06 - 3.1897500363701514e-01 8.8493587946146568e-01 2.6405907678278184e-01 - 4.9173847918026059e-01 5.8137003281136934e-01 1.2835147825313131e-01 - 2.3620048165381125e-01 6.9891828947486667e-01 2.3253235177288067e-03 - 9.4623051775602285e-01 8.4225030838636505e-01 1.0896617826228241e-01 - 5.3847797148799659e-01 1.5219475853955289e-01 1.8388309737841839e-07 - 1.2252382939477320e+00 5.1177573221287931e-01 2.7157237451449889e-02 - 3.5304215446824072e-01 3.8021746006663593e-01 1.4901880070990257e-11 - 2.4617475635703734e-01 5.6762728085804071e-03 8.8790430364610914e-02 - 2.3138350384246253e-01 5.8723025964673714e-01 1.1262536877296091e-06 - 3.2443216441029499e-01 2.3643528153863569e-01 4.7526388847688991e-02 - 4.0813198984759680e-01 9.3886066613647290e-01 1.3196046759922813e-02 - 1.6024747466128377e+00 3.8233006445451090e-01 2.2607016057261584e-01 - 1.3499374980818946e+00 9.5548399687370345e-01 9.8448198274742646e-02 - 6.4440232870185365e-01 6.7002632609456025e-01 2.2537068391668294e-01 - 1.2286748307483979e+00 1.6908491450408070e-01 1.1684119095577708e-01 + 1.8699947022029133e+00 7.0518748952070021e-01 1.3293833504446706e-01 + 1.9597011176522510e+00 2.9544040106307046e-01 1.8043726692227252e-01 + 2.9951655360280416e-01 2.1262830422469059e-01 4.6192569038947338e-03 + 7.9323883172413812e-01 4.0268367313111431e-01 2.4937402871832717e-01 + 5.3219556838332949e-01 6.9781829198624723e-01 7.2614484731745088e-02 + 8.8961851620615651e-02 3.6202520212759537e-01 7.5488753743030565e-04 + 1.8681776440490663e+00 9.6613913038467114e-01 5.2929673071257149e-02 + 1.5427282363307948e+00 5.7679641113784874e-01 1.7682052798364051e-01 + 3.3279852793988329e-01 4.6967887949011278e-01 2.3906750075637367e-01 + 1.7004476067493219e+00 1.8542925345118122e-01 1.2595631971136462e-01 + 1.2682402887140682e+00 9.9228598569950477e-01 2.3575737168440421e-02 + 1.0053492387246488e-01 4.8030948394216022e-01 2.5924197762273216e-02 + 8.8552011381114371e-01 8.0027179894102707e-01 1.3948815975971651e-01 + 1.4762948795075750e+00 8.1164419509306041e-01 9.6924786822355474e-02 + 5.0845838995369830e-01 1.6391418535248969e-01 3.2868198301735145e-02 + 5.9302732279570769e-01 8.0626300302478815e-01 1.2683099886395228e-02 + 5.3703424619207629e-01 3.2057047680817186e-01 2.9794904295490310e-01 + 1.8157872232653700e+00 3.4020729596788635e-01 1.9976000074759723e-01 + 8.4470007432268179e-02 7.9755870432577014e-01 2.7642932166213367e-07 + 1.9101890408563271e-01 5.2715864757573239e-01 1.1264120732599200e-01 + 3.9644617329741028e-01 2.1163699624998733e-01 3.4134522486051817e-02 + 9.1924380847189457e-01 7.1128352445928633e-01 1.2139870573842573e-01 + 1.9012962608838100e+00 7.8741571659655984e-01 1.0398167697075059e-01 + 1.0257701988341843e+00 8.4434373808057295e-01 9.3557241785044182e-02 + 1.7365152686914263e+00 8.1695912078724175e-01 9.3218034958572005e-02 + 1.3083495992009215e+00 8.5071687918826555e-01 8.0813023125343289e-02 + 9.1302649328691965e-01 3.7273064129010103e-01 2.5111404248781194e-01 + 1.7646741149581087e+00 8.5095695411060479e-01 8.0608254354802747e-02 + 1.8172913288489787e+00 4.0193147398262608e-01 2.0897574287964976e-01 + 1.1579126568231981e+00 3.3477495637362420e-01 2.3003926807560657e-01 + 2.7777735065405507e-01 2.2108055310806396e-01 4.3180388365101014e-03 + 1.1461353598318968e-01 3.8553814383973850e-01 1.6026893780801237e-02 + 6.4983846052780514e-02 7.3138806391483113e-01 1.7113983197101107e-06 + 6.0366169719707763e-01 1.6655688608414798e-01 6.2829200148135644e-02 + 1.0690810542712614e+00 1.1201224291765066e-01 5.7290712726429459e-02 + 6.8846747350560600e-01 6.3586987155377961e-01 1.3671474426738073e-01 + 5.2298565890609527e-01 5.4024030026867442e-01 2.1966326456360208e-01 + 1.0247390383543120e-01 1.0100978611616851e-02 7.8490030672028797e-11 + 2.5957949473627284e-02 1.1741154433528678e-01 6.5217109680565628e-11 + 2.2818728694386392e-01 1.2910044836878343e-01 1.2005265849783152e-05 + 1.1328949143162514e-02 8.1384810987350109e-01 3.2249364311367944e-10 + 1.3773898327410428e+00 9.8247542157506951e-01 3.0972594816917415e-02 + 2.4933341221913929e-01 2.5510385175976635e-01 1.0690424364755745e-02 + 1.6311942997701045e+00 7.7869745415437497e-01 1.0812779565576572e-01 + 1.5891363563534173e+00 8.1153672054532944e-01 9.5854778315030614e-02 + 9.4068590741203151e-01 1.1945249521030377e-02 1.2137638501995689e-02 + 5.7155350341408617e-01 3.7883205982537249e-01 2.5406641223470494e-01 + 1.4443106993150550e+00 4.8477405450491173e-01 2.0975138608949545e-01 + 1.2096255644949760e-02 7.0982120398716253e-01 3.5735827019226289e-08 + 1.8675388949594343e+00 3.1040545863156721e-01 1.8868706044551276e-01 + 1.6537202910307975e+00 8.4992570758836283e-01 8.0391648692067733e-02 + 6.5012824400860847e-01 4.4341806179896337e-01 2.3459730205852519e-01 + 9.4824084305917911e-01 7.1086355052024430e-02 2.6260872029069900e-02 + 1.8485249148318288e+00 2.9475205000609539e-01 1.8323735981454656e-01 + 4.6476297082573392e-01 1.6954479341593487e-01 2.3462188570088721e-02 + 9.1540123047038469e-01 6.8887080067368411e-01 1.1851347715758355e-01 + 4.4330380955188575e-01 2.0616364731381731e-01 6.7747675456097736e-02 + 1.6173807015945467e+00 9.6176181418635931e-01 4.4960839446352846e-02 + 4.1006432125293424e-01 8.0877084399746457e-01 4.2547257419110604e-03 + 1.5636762400247628e+00 2.0075952772422911e-01 1.3586124908468925e-01 + 1.3848622256064562e+00 2.8776084640795863e-01 1.9655451973735177e-01 + 8.8787253880755657e-01 2.4188377135003547e-01 1.8723425654024145e-01 + 9.2825647396228872e-01 8.3573713599690236e-01 1.1231093886548167e-01 + 1.9807968357052688e+00 2.2027413160108966e-01 1.4522753523795628e-01 + 8.6389936609154327e-01 8.8995592869264084e-01 2.1791416826919523e-02 + 9.5922656823424735e-01 1.6904197377199481e-01 1.0172595881514340e-01 + 1.2419538042821392e+00 1.4670958138500279e-01 9.1372836962666959e-02 + 5.8528400306603068e-01 1.7112690467579483e-01 6.5409182128712898e-02 + 1.9161017970158998e+00 3.5776516512544099e-01 2.0027376788516349e-01 + 3.0878509053035241e-01 2.2263046704647338e-01 8.1316949002115269e-03 + 1.6573945766720937e+00 9.2300201451934960e-01 5.4889598769222267e-02 + 1.0017906278907440e+00 3.5261318667684538e-01 2.4480570921017919e-01 + 7.5219940742013636e-01 8.5527618257674209e-01 8.4747160393240806e-03 + 1.5272243194891821e-01 8.7901118722193039e-01 2.0932776425953603e-07 + 1.9819847599311675e+00 6.2065705302479124e-01 1.6114062034334306e-01 + 6.2284668998055270e-01 9.4200985130684090e-01 4.9928571645934013e-04 + 4.4328107726472377e-01 6.3534068357780993e-01 1.4215601238597400e-01 + 7.3063161661737563e-01 4.0267950444131251e-01 2.4942906101042206e-01 + 9.4474798153574646e-01 9.3760551024620109e-01 1.1363343876510073e-02 + 3.6369845556709635e-02 3.5754452083803789e-01 5.7286307960663295e-06 + 3.4072496332267610e-01 3.2710807440595957e-02 4.4340425782439204e-06 + 1.2728152403015156e+00 4.3824003882657303e-01 2.2652302345233755e-01 + 1.5081075314523984e-01 7.7619144441982790e-01 4.1346455640103034e-05 + 4.3287571415556547e-01 6.2496714508537266e-01 1.5547400954481572e-01 + 2.0907970005115839e-01 3.9611661168201651e-01 1.1036075457854293e-01 + 4.3872538142657413e-01 7.2163334016232628e-01 4.3652017199389673e-02 + 9.1619166607090774e-01 6.8988767295790887e-01 1.1858052664086920e-01 + 1.1338174112148103e+00 5.9510081495373135e-01 1.6644328272172643e-01 + 7.5693698417599098e-02 2.5049939626726170e-01 1.7773804585113330e-06 + 9.9576436325549356e-01 6.0198750893988695e-01 1.6097039040940769e-01 + 5.0304101484164487e-01 8.6880423936508877e-01 1.5396669254236202e-03 + 1.5028192317036910e+00 2.9413979208928054e-01 1.9482012768310869e-01 + 8.4003550941801253e-01 1.1428696048447651e-01 4.2060265721258421e-02 + 7.0743392355425927e-01 3.5195375579401911e-01 2.6830835792582625e-01 + 4.0960663727903857e-01 7.0253422695956269e-01 5.8477758866523871e-02 + 1.7821996144850960e+00 7.2509627722623482e-01 1.2629457236274311e-01 + 4.4147389495760558e-01 7.3333132046310290e-01 3.4974961203780540e-02 + 1.9059026268094841e+00 3.8470477415845927e-01 2.0467847299463876e-01 + 9.9863845988180255e-01 2.0168069307385306e-01 1.3833903216372329e-01 + 1.1162098274018466e+00 2.2991190706137821e-01 1.6509229522710059e-01 + 1.8161812935938184e+00 9.9862098301404223e-01 4.9383302646067148e-02 + 1.2296779358329961e+00 9.3564108537202961e-01 3.4572150395034390e-02 + 2.8368430327716521e-02 5.9169318206165933e-01 1.0997120998699763e-05 + 3.9891901825104181e-01 5.2458511553807696e-01 2.3685146815361566e-01 + 1.4595303452578974e+00 1.0455557763615064e-01 7.1595741337531132e-02 + 9.7724919328097082e-01 5.0125355060811971e-01 2.1431914202384633e-01 + 5.6368307669550255e-02 5.2771859708090840e-02 2.8014904758840387e-11 + 1.7309635191767381e+00 3.3631532139918785e-01 2.0183886544467830e-01 + 9.6824201140376154e-01 6.9092044310573608e-01 1.2440238055309660e-01 + 2.3660446114957656e-01 7.4320493004805677e-01 4.9864455042833121e-03 + 1.5011675340166710e+00 4.4409246484181319e-01 2.1750138841033773e-01 + 2.4081679209497775e-01 2.6730878016622706e-01 1.5490398395214235e-02 + 9.8000889032101535e-01 1.0696204923644093e-02 1.4217985078513930e-02 + 1.7589223140313672e+00 6.1500057181016432e-01 1.6350534649040158e-01 + 8.8768261978974028e-02 1.4124143019289326e-02 3.9074350539984284e-11 + 1.6545882192764565e+00 4.6398583330109266e-02 5.7975270972908631e-02 + 4.6613298211439247e-01 9.0229674601980014e-01 3.5467625943748663e-04 + 5.2078234472284013e-01 7.6754022815625089e-01 2.2126392532129092e-02 + 1.3505698298920308e+00 4.7545186075832957e-01 2.1479736814632533e-01 + 5.9242886164973152e-01 9.1340798619054664e-01 8.7342960929308387e-04 + 8.1179299922201498e-01 8.2382325831808312e-01 5.7640082151192623e-02 + 1.9677716265594745e+00 8.7984627541701665e-01 7.3383641632082650e-02 + 1.3707568079053956e+00 7.6765556631270360e-01 1.1561779024573901e-01 + 1.4690509698073249e+00 7.5777475940670458e-01 1.1728362223576570e-01 + 1.9345988911438976e+00 8.0911939968575219e-01 9.6306810054338637e-02 + 1.1605560705272437e+00 1.9604376124227052e-02 2.5672901751112476e-02 + 1.1258760871818745e+00 5.4973886796629801e-01 1.8892290509118925e-01 + 4.7449561503547155e-01 2.8377281670019250e-01 2.2201188802232086e-01 + 7.7589621605490544e-01 3.8481195474593299e-01 2.5507910974975723e-01 + 1.6080070115699931e+00 9.6979852973923264e-01 4.3443427678622595e-02 + 1.2726537870923371e-01 3.8608877902760264e-01 2.8332109599823435e-02 + 1.4456573993439834e+00 6.0643283553752836e-01 1.6548393646137055e-01 + 4.5381018848589294e-01 1.8329680635135581e-01 3.4130217142549338e-02 + 1.8789397083703050e+00 1.6139882070534517e-02 6.3752866206650161e-02 + 8.5405325399628174e-01 2.5761622016196761e-01 2.0732513529417532e-01 + 1.9848372291826082e+00 3.1577651686974639e-01 1.8706081691418575e-01 + 3.1047490253461785e-01 1.2198388711592800e-01 1.1192202868806270e-04 + 1.9468028551750938e+00 7.6947438680525670e-01 1.1034653758637621e-01 + 1.9990350187352441e+00 4.1222687517187118e-01 2.0363353421487637e-01 + 6.9185577882385907e-01 6.3355592524365978e-01 1.3880328378143816e-01 + 9.9397177413326965e-01 2.7635276577671930e-01 2.1208750951427896e-01 + 1.4229493252379375e+00 8.9414774714207090e-01 5.9616875208461581e-02 + 2.2321865813740116e-01 2.1968031609696803e-01 9.5421299337325341e-04 + 1.4184846084586638e+00 8.2810550661702753e-01 9.0543022462956702e-02 + 1.3342277813809060e+00 4.0275768898436071e-01 2.2833514018281706e-01 + 1.2856671003544613e+00 4.1669543051716773e-01 2.2939168723836229e-01 + 1.3346380981581869e+00 7.8590463378373454e-01 1.1009218138837337e-01 + 9.6080177955139812e-01 5.4806854933696125e-01 1.9249728020431048e-01 + 4.9333191285859446e-01 5.6929267797236904e-01 2.0570296617163381e-01 + 1.2601811919493064e+00 8.1106867322107679e-01 1.0211640112354600e-01 + 3.7029472975534050e-01 7.7000490340018035e-01 9.9717221890585003e-03 + 9.9886846119542128e-02 3.7538557261787431e-01 3.2909293754858166e-03 + 6.1465905831172218e-01 5.5781437942306367e-01 2.0309773449527130e-01 + 8.0301702441177181e-02 5.2176905502685611e-01 6.7411187200501800e-03 + 1.8022245650892943e-01 2.6507321971575215e-01 1.9610766255229411e-03 + 1.2966624774044027e+00 6.6743237492288432e-01 1.4291765403929016e-01 + 3.5711274483936473e-01 7.8172556301027307e-01 6.1671866986118731e-03 + 9.9674229482395837e-01 2.9773177602835577e-01 2.2631730742393175e-01 + 1.6788505863762491e+00 8.9160443784965482e-01 6.5169473240549433e-02 + 6.1386364124173998e-01 7.5518925970881967e-01 3.4540695824433816e-02 + 1.0903539645134739e+00 2.8918286752766686e-01 2.1379585528419331e-01 + 3.0472363792750468e-01 7.1281185592769880e-01 3.3929283114588392e-02 + 1.5152364014123880e+00 3.6739338604838223e-01 2.1789007651074124e-01 + 1.8098962964806087e+00 8.8781295951515604e-01 6.8586512755549930e-02 + 4.7528978622437945e-01 7.6180162769142346e-01 2.1422054494745841e-02 + 1.6512588511438269e+00 2.2012657608594699e-01 1.4800498851218019e-01 + 2.1109570450034987e-01 2.4239354070783969e-01 1.9842267809166525e-03 + 1.4133282458066594e+00 2.1989844502260425e-01 1.5073569843625514e-01 + 1.9156347179668121e+00 2.5478370625646729e-03 6.4794510473910716e-02 + 1.3747029312994568e+00 2.7076813743420414e-01 1.8706957770107185e-01 + 1.3907642475907673e+00 3.4175302722589063e-02 4.1618669489985979e-02 + 1.0889560485974830e+00 5.4343684697354444e-01 1.9246723376125008e-01 + 5.8376876747965589e-01 4.0237147027474296e-01 2.4180942929260665e-01 + 1.6814237299021371e+00 8.5260486851799278e-01 7.9484196381435973e-02 + 1.8166248738504942e-01 3.2634093208478032e-01 3.9546193682731247e-02 + 3.4111683747096100e-01 2.7423396370135578e-02 3.5992953819440289e-06 + 1.4497341938739727e+00 6.2312209202144109e-01 1.5947986234822240e-01 + 1.7748038599742566e+00 4.6114084583804082e-01 2.0666271905111369e-01 + 6.7244997973211706e-02 2.8339737852175051e-01 4.3462563591946600e-06 + 1.3633451698298238e-01 7.2891813506192293e-01 2.3418732996297254e-04 + 1.0887830935376694e+00 6.1208799335337627e-01 1.5740120554310855e-01 + 4.2614004391739391e-01 6.9217893005791464e-01 7.1148300094780362e-02 + 5.0015799118633897e-01 5.8610228551073984e-01 1.9176804096868885e-01 + 1.7520560337531759e+00 9.6274392602433334e-01 4.9641983702877313e-02 + 3.6508173499805308e-01 2.3960965171549509e-01 4.5501370520487319e-02 + 3.1897500363701514e-01 8.8493587946146568e-01 5.8099845063007425e-05 + 4.9173847918026059e-01 5.8137003281136934e-01 1.9650510272695257e-01 + 2.3620048165381125e-01 6.9891828947486667e-01 3.2164046306594203e-02 + 9.4623051775602285e-01 8.4225030838636505e-01 1.0261478660692805e-01 + 5.3847797148799659e-01 1.5219475853955289e-01 2.9518804677912680e-02 + 1.2252382939477320e+00 5.1177573221287931e-01 2.0467330502898470e-01 + 3.5304215446824072e-01 3.8021746006663593e-01 2.0876912684628757e-01 + 2.4617475635703734e-01 5.6762728085804071e-03 7.6275254967958052e-08 + 2.3138350384246253e-01 5.8723025964673714e-01 1.3751659850946946e-01 + 3.2443216441029499e-01 2.3643528153863569e-01 1.7662171233508443e-02 + 4.0813198984759680e-01 9.3886066613647290e-01 3.7533420751362091e-05 + 1.6024747466128377e+00 3.8233006445451090e-01 2.1590803425738631e-01 + 1.3499374980818946e+00 9.5548399687370345e-01 3.4311565685376855e-02 + 6.4440232870185365e-01 6.7002632609456025e-01 1.0395704158262002e-01 + 1.2286748307483979e+00 1.6908491450408070e-01 1.0936347984379262e-01 diff --git a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/transform.hpp b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/transform.hpp index f2fe99487347..acfbe5a6d979 100644 --- a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/transform.hpp +++ b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/transform.hpp @@ -51,7 +51,12 @@ template class PDEOPT_Transform_PEBBL : public ROL::StdTransform_PEBBL { private: ROL::Ptr> getParameter(ROL::Vector &x) const { - return dynamic_cast&>(x).getParameter(); + try { + return ROL::makePtrFromRef(dynamic_cast&>(x)); + } + catch (std::exception &e) { + return dynamic_cast&>(x).getParameter(); + } } public: From 9bb77d480bb8f05ca8ed78988859e782badd3144 Mon Sep 17 00:00:00 2001 From: "Drew P. Kouri" Date: Wed, 22 Apr 2020 17:12:11 -0600 Subject: [PATCH 02/19] Updated assembler to allow for different control and state discretizations. --- .../rol/example/PDE-OPT/TOOLS/assembler.hpp | 37 +- .../example/PDE-OPT/TOOLS/assembler_def.hpp | 394 ++++++++++++------ .../rol/example/PDE-OPT/TOOLS/dofmanager.hpp | 4 + packages/rol/example/PDE-OPT/TOOLS/dynpde.hpp | 9 +- .../rol/example/PDE-OPT/TOOLS/fieldhelper.hpp | 101 +++++ packages/rol/example/PDE-OPT/TOOLS/pde.hpp | 20 +- .../example/PDE-OPT/TOOLS/pdeconstraint.hpp | 2 +- 7 files changed, 423 insertions(+), 144 deletions(-) diff --git a/packages/rol/example/PDE-OPT/TOOLS/assembler.hpp b/packages/rol/example/PDE-OPT/TOOLS/assembler.hpp index 3709e2941a35..b3d9704a4ba2 100644 --- a/packages/rol/example/PDE-OPT/TOOLS/assembler.hpp +++ b/packages/rol/example/PDE-OPT/TOOLS/assembler.hpp @@ -162,11 +162,11 @@ class Assembler { int myRank_, numProcs_; // Set in SetBasis. - std::vector>>> basisPtrs_; + std::vector>>> basisPtrs1_, basisPtrs2_; // Set in SetDiscretization. ROL::Ptr> meshMgr_; - ROL::Ptr> dofMgr_; + ROL::Ptr> dofMgr1_, dofMgr2_; // Set in SetParallelStructure. int numCells_; @@ -216,7 +216,8 @@ class Assembler { Teuchos::ParameterList &parlist, std::ostream &outStream = std::cout); void setBasis( - const std::vector>>> &basisPtrs, + const std::vector>>> &basisPtrs1, + const std::vector>>> &basisPtrs2, Teuchos::ParameterList &parlist, std::ostream &outStream = std::cout); void setDiscretization(Teuchos::ParameterList &parlist, @@ -237,16 +238,24 @@ class Assembler { Real assembleScalar(ROL::Ptr> &val); void assembleFieldVector(ROL::Ptr> &v, ROL::Ptr> &val, - ROL::Ptr> &vecOverlap); + ROL::Ptr> &vecOverlap, + const ROL::Ptr> &dofMgr); void assembleParamVector(ROL::Ptr> &v, std::vector>> &val); void assembleFieldMatrix(ROL::Ptr> &M, - ROL::Ptr> &val); + ROL::Ptr> &val, + const ROL::Ptr> &dofMgr1, + const ROL::Ptr> &dofMgr2); void assembleParamFieldMatrix(ROL::Ptr> &M, std::vector>> &val, - ROL::Ptr> &matOverlap); + ROL::Ptr> &matOverlap, + const ROL::Ptr> &dofMgr); void assembleParamMatrix(ROL::Ptr>> &M, - std::vector>>> &val); + std::vector>>> &val, + const ROL::Ptr> &dofMgr); + void transformToFieldPattern(const ROL::Ptr> &array, + const ROL::Ptr> &dofMgr1, + const ROL::Ptr> &dofMgr2 = ROL::nullPtr) const; public: // destructor @@ -262,6 +271,19 @@ class Assembler { const ROL::Ptr> &comm, Teuchos::ParameterList &parlist, std::ostream &outStream = std::cout); + // Constuctor: Discretization set from ParameterList + Assembler(const std::vector>>> &basisPtrs1, + const std::vector>>> &basisPtrs2, + const ROL::Ptr> &comm, + Teuchos::ParameterList &parlist, + std::ostream &outStream = std::cout); + // Constructor: Discretization set from MeshManager input + Assembler(const std::vector>>> &basisPtrs1, + const std::vector>>> &basisPtrs2, + const ROL::Ptr> &meshMgr, + const ROL::Ptr> &comm, + Teuchos::ParameterList &parlist, + std::ostream &outStream = std::cout); void setCellNodes(PDE &pde) const; void setCellNodes(DynamicPDE &pde) const; @@ -687,6 +709,7 @@ class Assembler { /* Accessor routines. */ /***************************************************************************/ const ROL::Ptr> getDofManager(void) const; + const ROL::Ptr> getDofManager2(void) const; Teuchos::Array getCellIds(void) const; /***************************************************************************/ /* End of accessor routines. */ diff --git a/packages/rol/example/PDE-OPT/TOOLS/assembler_def.hpp b/packages/rol/example/PDE-OPT/TOOLS/assembler_def.hpp index 85b095f72e8f..27cd17badd17 100644 --- a/packages/rol/example/PDE-OPT/TOOLS/assembler_def.hpp +++ b/packages/rol/example/PDE-OPT/TOOLS/assembler_def.hpp @@ -63,7 +63,7 @@ Assembler::Assembler( : isJ1Transposed_(false), isJ2Transposed_(false), isJuoTransposed_(false), isJunTransposed_(false), isJzfTransposed_(false) { setCommunicator(comm,parlist,outStream); - setBasis(basisPtrs,parlist,outStream); + setBasis(basisPtrs,basisPtrs,parlist,outStream); setDiscretization(parlist,ROL::nullPtr,outStream); setParallelStructure(parlist,outStream); setCellNodes(outStream); @@ -80,7 +80,41 @@ Assembler::Assembler( : isJ1Transposed_(false), isJ2Transposed_(false), isJuoTransposed_(false), isJunTransposed_(false), isJzfTransposed_(false) { setCommunicator(comm,parlist,outStream); - setBasis(basisPtrs,parlist,outStream); + setBasis(basisPtrs,basisPtrs,parlist,outStream); + setDiscretization(parlist,meshMgr,outStream); + setParallelStructure(parlist,outStream); + setCellNodes(outStream); +} +// Constuctor: Discretization set from ParameterList +template +Assembler::Assembler( + const std::vector>>> &basisPtrs1, + const std::vector>>> &basisPtrs2, + const ROL::Ptr> &comm, + Teuchos::ParameterList &parlist, + std::ostream &outStream) + : isJ1Transposed_(false), isJ2Transposed_(false), + isJuoTransposed_(false), isJunTransposed_(false), isJzfTransposed_(false) { + setCommunicator(comm,parlist,outStream); + setBasis(basisPtrs1,basisPtrs2,parlist,outStream); + setDiscretization(parlist,ROL::nullPtr,outStream); + setParallelStructure(parlist,outStream); + setCellNodes(outStream); +} + +// Constructor: Discretization set from MeshManager input +template +Assembler::Assembler( + const std::vector>>> &basisPtrs1, + const std::vector>>> &basisPtrs2, + const ROL::Ptr> &meshMgr, + const ROL::Ptr> &comm, + Teuchos::ParameterList &parlist, + std::ostream &outStream) + : isJ1Transposed_(false), isJ2Transposed_(false), + isJuoTransposed_(false), isJunTransposed_(false), isJzfTransposed_(false) { + setCommunicator(comm,parlist,outStream); + setBasis(basisPtrs1,basisPtrs2,parlist,outStream); setDiscretization(parlist,meshMgr,outStream); setParallelStructure(parlist,outStream); setCellNodes(outStream); @@ -89,14 +123,14 @@ Assembler::Assembler( template void Assembler::setCellNodes(PDE &pde) const { // Set PDE cell nodes - pde.setFieldPattern(dofMgr_->getFieldPattern()); + pde.setFieldPattern(dofMgr1_->getFieldPattern(),dofMgr2_->getFieldPattern()); pde.setCellNodes(volCellNodes_, bdryCellNodes_, bdryCellLocIds_); } template void Assembler::setCellNodes(DynamicPDE &pde) const { // Set PDE cell nodes - pde.setFieldPattern(dofMgr_->getFieldPattern()); + pde.setFieldPattern(dofMgr1_->getFieldPattern(),dofMgr2_->getFieldPattern()); pde.setCellNodes(volCellNodes_, bdryCellNodes_, bdryCellLocIds_); } @@ -126,7 +160,7 @@ void Assembler::assemblePDEResidual(ROL::Ptr> &r, // Assemble ROL::Ptr> localVal; pde->residual(localVal,u_coeff,z_coeff,z_param); - assembleFieldVector( r, localVal, pde_vecR_overlap_ ); + assembleFieldVector( r, localVal, pde_vecR_overlap_, dofMgr1_ ); } template @@ -150,7 +184,7 @@ void Assembler::assemblePDEJacobian1(ROL::Ptr> &J1, // Assemble ROL::Ptr> localVal; pde->Jacobian_1(localVal,u_coeff,z_coeff,z_param); - assembleFieldMatrix( J1, localVal ); + assembleFieldMatrix( J1, localVal, dofMgr1_, dofMgr1_ ); isJ1Transposed_ = false; // Output //Tpetra::MatrixMarket::Writer< Tpetra::CrsMatrix<>> matWriter; @@ -185,7 +219,7 @@ void Assembler::assemblePDEJacobian2(ROL::Ptr> &J2, // Assemble ROL::Ptr> localVal; pde->Jacobian_2(localVal,u_coeff,z_coeff,z_param); - assembleFieldMatrix( J2, localVal ); + assembleFieldMatrix( J2, localVal, dofMgr1_, dofMgr2_ ); isJ2Transposed_ = false; } catch ( Exception::Zero & ez ) { @@ -222,7 +256,7 @@ void Assembler::assemblePDEJacobian3(ROL::Ptr> &J3, // Assemble std::vector>> localVal(size,ROL::nullPtr); pde->Jacobian_3(localVal,u_coeff,z_coeff,z_param); - assembleParamFieldMatrix( J3, localVal, pde_vecJ3_overlap_ ); + assembleParamFieldMatrix( J3, localVal, pde_vecJ3_overlap_, dofMgr1_ ); } catch ( Exception::Zero & ez ) { throw Exception::Zero(">>> (Assembler::assemblePDEJacobian3): Jacobian is zero."); @@ -259,7 +293,7 @@ void Assembler::assemblePDEHessian11(ROL::Ptr> &H11, // Assemble ROL::Ptr> localVal; pde->Hessian_11(localVal,l_coeff,u_coeff,z_coeff,z_param); - assembleFieldMatrix( H11, localVal ); + assembleFieldMatrix( H11, localVal, dofMgr1_, dofMgr1_ ); } catch (Exception::Zero &ez) { throw Exception::Zero(">>> (Assembler::assemblePDEHessian11): Hessian is zero."); @@ -292,7 +326,7 @@ void Assembler::assemblePDEHessian12(ROL::Ptr> &H12, // Assemble ROL::Ptr> localVal; pde->Hessian_12(localVal,l_coeff,u_coeff,z_coeff,z_param); - assembleFieldMatrix( H12, localVal ); + assembleFieldMatrix( H12, localVal, dofMgr2_, dofMgr1_ ); } catch (Exception::Zero &ez) { throw Exception::Zero(">>> (Assembler::assemblePDEHessian12): Hessian is zero."); @@ -330,7 +364,7 @@ void Assembler::assemblePDEHessian13(ROL::Ptr> &H13, // Assemble std::vector>> localVal(size,ROL::nullPtr); pde->Hessian_13(localVal,l_coeff,u_coeff,z_coeff,z_param); - assembleParamFieldMatrix( H13, localVal, pde_vecH13_overlap_ ); + assembleParamFieldMatrix( H13, localVal, pde_vecH13_overlap_, dofMgr1_ ); } catch ( Exception::Zero & ez ) { throw Exception::Zero(">>> (Assembler::assemblePDEHessian13): Hessian is zero."); @@ -367,7 +401,7 @@ void Assembler::assemblePDEHessian21(ROL::Ptr> &H21, // Assemble ROL::Ptr> localVal; pde->Hessian_21(localVal,l_coeff,u_coeff,z_coeff,z_param); - assembleFieldMatrix( H21, localVal ); + assembleFieldMatrix( H21, localVal, dofMgr1_, dofMgr2_ ); } catch (Exception::Zero &ez) { throw Exception::Zero(">>> (Assembler::assemblePDEHessian21): Hessian is zero."); @@ -400,7 +434,7 @@ void Assembler::assemblePDEHessian22(ROL::Ptr> &H22, // Assemble ROL::Ptr> localVal; pde->Hessian_22(localVal,l_coeff,u_coeff,z_coeff,z_param); - assembleFieldMatrix( H22, localVal ); + assembleFieldMatrix( H22, localVal, dofMgr2_, dofMgr2_ ); } catch (Exception::Zero &ez) { throw Exception::Zero(">>> (Assembler::assemblePDEHessian22): Hessian is zero."); @@ -438,7 +472,7 @@ void Assembler::assemblePDEHessian23(ROL::Ptr> &H23, // Assemble std::vector>> localVal(size,ROL::nullPtr); pde->Hessian_23(localVal,l_coeff,u_coeff,z_coeff,z_param); - assembleParamFieldMatrix( H23, localVal, pde_vecH23_overlap_ ); + assembleParamFieldMatrix( H23, localVal, pde_vecH23_overlap_, dofMgr2_ ); } catch ( Exception::Zero & ez ) { throw Exception::Zero(">>> (Assembler::assemblePDEHessian23): Hessian is zero."); @@ -505,7 +539,7 @@ void Assembler::assemblePDEHessian33(ROL::Ptr>> tmp(size,ROL::nullPtr); std::vector>>> localVal(size,tmp); pde->Hessian_33(localVal,l_coeff,u_coeff,z_coeff,z_param); - assembleParamMatrix( H33, localVal ); + assembleParamMatrix( H33, localVal, dofMgr1_ ); } catch ( Exception::Zero & ez ) { throw Exception::Zero(">>> (Assembler::assemblePDEHessian33): Hessian is zero."); @@ -551,7 +585,7 @@ void Assembler::assembleDynPDEResidual(ROL::Ptr> &r, // Assemble ROL::Ptr> localVal; pde->residual(localVal,ts,uo_coeff,un_coeff,z_coeff,z_param); - assembleFieldVector( r, localVal, pde_vecR_overlap_ ); + assembleFieldVector( r, localVal, pde_vecR_overlap_, dofMgr1_ ); } template @@ -578,7 +612,7 @@ void Assembler::assembleDynPDEJacobian_uo(ROL::Ptr> &J // Assemble ROL::Ptr> localVal; pde->Jacobian_uo(localVal,ts,uo_coeff,un_coeff,z_coeff,z_param); - assembleFieldMatrix( J, localVal ); + assembleFieldMatrix( J, localVal, dofMgr1_, dofMgr1_ ); isJuoTransposed_ = false; } catch ( Exception::Zero & ez ) { @@ -613,7 +647,7 @@ void Assembler::assembleDynPDEJacobian_un(ROL::Ptr> &J // Assemble ROL::Ptr> localVal; pde->Jacobian_un(localVal,ts,uo_coeff,un_coeff,z_coeff,z_param); - assembleFieldMatrix( J, localVal ); + assembleFieldMatrix( J, localVal, dofMgr1_, dofMgr1_ ); isJunTransposed_ = false; } catch ( Exception::Zero & ez ) { @@ -648,7 +682,7 @@ void Assembler::assembleDynPDEJacobian_zf(ROL::Ptr> &J // Assemble ROL::Ptr> localVal; pde->Jacobian_zf(localVal,ts,uo_coeff,un_coeff,z_coeff,z_param); - assembleFieldMatrix( J, localVal ); + assembleFieldMatrix( J, localVal, dofMgr1_, dofMgr2_ ); isJzfTransposed_ = false; } catch ( Exception::Zero & ez ) { @@ -688,7 +722,7 @@ void Assembler::assembleDynPDEJacobian_zp(ROL::Ptr> // Assemble std::vector>> localVal(size,ROL::nullPtr); pde->Jacobian_zp(localVal,ts,uo_coeff,un_coeff,z_coeff,z_param); - assembleParamFieldMatrix( J, localVal, pde_vecJ3_overlap_ ); + assembleParamFieldMatrix( J, localVal, pde_vecJ3_overlap_, dofMgr1_ ); } catch ( Exception::Zero & ez ) { throw Exception::Zero(">>> (Assembler::assembleDynPDEJacobian_zp): Jacobian is zero."); @@ -728,7 +762,7 @@ void Assembler::assembleDynPDEHessian_uo_uo(ROL::Ptr> // Assemble ROL::Ptr> localVal; pde->Hessian_uo_uo(localVal,ts,l_coeff,uo_coeff,un_coeff,z_coeff,z_param); - assembleFieldMatrix( H, localVal ); + assembleFieldMatrix( H, localVal, dofMgr1_, dofMgr1_ ); } catch (Exception::Zero &ez) { throw Exception::Zero(">>> (Assembler::assembleDynPDEHessian_uo_uo): Hessian is zero."); @@ -764,7 +798,7 @@ void Assembler::assembleDynPDEHessian_uo_un(ROL::Ptr> // Assemble ROL::Ptr> localVal; pde->Hessian_uo_un(localVal,ts,l_coeff,uo_coeff,un_coeff,z_coeff,z_param); - assembleFieldMatrix( H, localVal ); + assembleFieldMatrix( H, localVal, dofMgr1_, dofMgr1_ ); } catch (Exception::Zero &ez) { throw Exception::Zero(">>> (Assembler::assembleDynPDEHessian_uo_un): Hessian is zero."); @@ -800,7 +834,7 @@ void Assembler::assembleDynPDEHessian_uo_zf(ROL::Ptr> // Assemble ROL::Ptr> localVal; pde->Hessian_uo_zf(localVal,ts,l_coeff,uo_coeff,un_coeff,z_coeff,z_param); - assembleFieldMatrix( H, localVal ); + assembleFieldMatrix( H, localVal, dofMgr1_, dofMgr2_ ); } catch (Exception::Zero &ez) { throw Exception::Zero(">>> (Assembler::assembleDynPDEHessian_uo_zf): Hessian is zero."); @@ -841,7 +875,7 @@ void Assembler::assembleDynPDEHessian_uo_zp(ROL::Ptr // Assemble std::vector>> localVal(size,ROL::nullPtr); pde->Hessian_uo_zp(localVal,ts,l_coeff,uo_coeff,un_coeff,z_coeff,z_param); - assembleParamFieldMatrix( H, localVal, pde_vecH13_overlap_ ); + assembleParamFieldMatrix( H, localVal, pde_vecH13_overlap_, dofMgr1_ ); } catch ( Exception::Zero & ez ) { throw Exception::Zero(">>> (Assembler::assembleDynPDEHessian_uo_zp): Hessian is zero."); @@ -881,7 +915,7 @@ void Assembler::assembleDynPDEHessian_un_uo(ROL::Ptr> // Assemble ROL::Ptr> localVal; pde->Hessian_un_uo(localVal,ts,l_coeff,uo_coeff,un_coeff,z_coeff,z_param); - assembleFieldMatrix( H, localVal ); + assembleFieldMatrix( H, localVal, dofMgr1_, dofMgr1_ ); } catch (Exception::Zero &ez) { throw Exception::Zero(">>> (Assembler::assembleDynPDEHessian_un_uo): Hessian is zero."); @@ -917,7 +951,7 @@ void Assembler::assembleDynPDEHessian_un_un(ROL::Ptr> // Assemble ROL::Ptr> localVal; pde->Hessian_un_un(localVal,ts,l_coeff,uo_coeff,un_coeff,z_coeff,z_param); - assembleFieldMatrix( H, localVal ); + assembleFieldMatrix( H, localVal, dofMgr1_, dofMgr1_ ); } catch (Exception::Zero &ez) { throw Exception::Zero(">>> (Assembler::assembleDynPDEHessian_un_un): Hessian is zero."); @@ -953,7 +987,7 @@ void Assembler::assembleDynPDEHessian_un_zf(ROL::Ptr> // Assemble ROL::Ptr> localVal; pde->Hessian_un_zf(localVal,ts,l_coeff,uo_coeff,un_coeff,z_coeff,z_param); - assembleFieldMatrix( H, localVal ); + assembleFieldMatrix( H, localVal, dofMgr1_, dofMgr2_ ); } catch (Exception::Zero &ez) { throw Exception::Zero(">>> (Assembler::assembleDynPDEHessian_un_zf): Hessian is zero."); @@ -994,7 +1028,7 @@ void Assembler::assembleDynPDEHessian_un_zp(ROL::Ptr // Assemble std::vector>> localVal(size,ROL::nullPtr); pde->Hessian_un_zp(localVal,ts,l_coeff,uo_coeff,un_coeff,z_coeff,z_param); - assembleParamFieldMatrix( H, localVal, pde_vecH13_overlap_ ); + assembleParamFieldMatrix( H, localVal, pde_vecH13_overlap_, dofMgr1_ ); } catch ( Exception::Zero & ez ) { throw Exception::Zero(">>> (Assembler::assembleDynPDEHessian_un_zp): Hessian is zero."); @@ -1034,7 +1068,7 @@ void Assembler::assembleDynPDEHessian_zf_uo(ROL::Ptr> // Assemble ROL::Ptr> localVal; pde->Hessian_zf_uo(localVal,ts,l_coeff,uo_coeff,un_coeff,z_coeff,z_param); - assembleFieldMatrix( H, localVal ); + assembleFieldMatrix( H, localVal, dofMgr2_, dofMgr1_ ); } catch (Exception::Zero &ez) { throw Exception::Zero(">>> (Assembler::assembleDynPDEHessian_zf_uo): Hessian is zero."); @@ -1070,7 +1104,7 @@ void Assembler::assembleDynPDEHessian_zf_un(ROL::Ptr> // Assemble ROL::Ptr> localVal; pde->Hessian_zf_un(localVal,ts,l_coeff,uo_coeff,un_coeff,z_coeff,z_param); - assembleFieldMatrix( H, localVal ); + assembleFieldMatrix( H, localVal, dofMgr2_, dofMgr1_ ); } catch (Exception::Zero &ez) { throw Exception::Zero(">>> (Assembler::assembleDynPDEHessian_zf_un): Hessian is zero."); @@ -1106,7 +1140,7 @@ void Assembler::assembleDynPDEHessian_zf_zf(ROL::Ptr> // Assemble ROL::Ptr> localVal; pde->Hessian_zf_zf(localVal,ts,l_coeff,uo_coeff,un_coeff,z_coeff,z_param); - assembleFieldMatrix( H, localVal ); + assembleFieldMatrix( H, localVal, dofMgr2_, dofMgr2_ ); } catch (Exception::Zero &ez) { throw Exception::Zero(">>> (Assembler::assembleDynPDEHessian_zf_zf): Hessian is zero."); @@ -1147,7 +1181,7 @@ void Assembler::assembleDynPDEHessian_zf_zp(ROL::Ptr // Assemble std::vector>> localVal(size,ROL::nullPtr); pde->Hessian_zf_zp(localVal,ts,l_coeff,uo_coeff,un_coeff,z_coeff,z_param); - assembleParamFieldMatrix( H, localVal, pde_vecH23_overlap_ ); + assembleParamFieldMatrix( H, localVal, pde_vecH23_overlap_, dofMgr2_ ); } catch ( Exception::Zero & ez ) { throw Exception::Zero(">>> (Assembler::assembleDynPDEHessian_zf_zp): Hessian is zero."); @@ -1236,7 +1270,7 @@ void Assembler::assembleDynPDEHessian_zp_zp(ROL::Ptr>> tmp(size,ROL::nullPtr); std::vector>>> localVal(size,tmp); pde->Hessian_zp_zp(localVal,ts,l_coeff,uo_coeff,un_coeff,z_coeff,z_param); - assembleParamMatrix( H, localVal ); + assembleParamMatrix( H, localVal, dofMgr1_ ); } catch ( Exception::Zero & ez ) { throw Exception::Zero(">>> (Assembler::assembleDynPDEHessian_zp_zp): Hessian is zero."); @@ -1308,7 +1342,7 @@ void Assembler::assembleQoIGradient1(ROL::Ptr> &g1, // Assemble ROL::Ptr> localVal; qoi->gradient_1(localVal,u_coeff,z_coeff,z_param); - assembleFieldVector( g1, localVal, qoi_vecG1_overlap_ ); + assembleFieldVector( g1, localVal, qoi_vecG1_overlap_, dofMgr1_ ); } catch ( Exception::Zero & ez ) { throw Exception::Zero(">>> (Assembler::assembleQoIGradient1): Gradient is zero."); @@ -1342,7 +1376,7 @@ void Assembler::assembleQoIGradient2(ROL::Ptr> &g2, // Assemble ROL::Ptr> localVal; qoi->gradient_2(localVal,u_coeff,z_coeff,z_param); - assembleFieldVector( g2, localVal, qoi_vecG2_overlap_ ); + assembleFieldVector( g2, localVal, qoi_vecG2_overlap_, dofMgr2_ ); } catch ( Exception::Zero & ez ) { throw Exception::Zero(">>> (Assembler::assembleQoIGradient2): Gradient is zero."); @@ -1417,7 +1451,7 @@ void Assembler::assembleQoIHessVec11(ROL::Ptr> &H11, // Assemble ROL::Ptr> localVal; qoi->HessVec_11(localVal,v_coeff,u_coeff,z_coeff,z_param); - assembleFieldVector( H11, localVal, qoi_vecH11_overlap_ ); + assembleFieldVector( H11, localVal, qoi_vecH11_overlap_, dofMgr1_ ); } catch (Exception::Zero &ez) { throw Exception::Zero(">>> (Assembler::assembleQoIHessVec11): Hessian is zero."); @@ -1453,7 +1487,7 @@ void Assembler::assembleQoIHessVec12(ROL::Ptr> &H12, // Assemble ROL::Ptr> localVal; qoi->HessVec_12(localVal,v_coeff,u_coeff,z_coeff,z_param); - assembleFieldVector( H12, localVal, qoi_vecH12_overlap_ ); + assembleFieldVector( H12, localVal, qoi_vecH12_overlap_, dofMgr1_ ); } catch (Exception::Zero &ez) { throw Exception::Zero(">>> (Assembler::assembleQoIHessVec12): Hessian is zero."); @@ -1489,7 +1523,7 @@ void Assembler::assembleQoIHessVec13(ROL::Ptr> &H13, // Assemble ROL::Ptr> localVal; qoi->HessVec_13(localVal,v,u_coeff,z_coeff,z_param); - assembleFieldVector( H13, localVal, qoi_vecH13_overlap_ ); + assembleFieldVector( H13, localVal, qoi_vecH13_overlap_, dofMgr1_ ); } catch (Exception::Zero &ez) { throw Exception::Zero(">>> (Assembler::assembleQoIHessVec13): Hessian is zero."); @@ -1529,7 +1563,7 @@ void Assembler::assembleQoIHessVec21(ROL::Ptr> &H21, // Assemble ROL::Ptr> localVal; qoi->HessVec_21(localVal,v_coeff,u_coeff,z_coeff,z_param); - assembleFieldVector( H21, localVal, qoi_vecH21_overlap_ ); + assembleFieldVector( H21, localVal, qoi_vecH21_overlap_, dofMgr2_ ); } catch (Exception::Zero &ez) { throw Exception::Zero(">>> (Assembler::assembleQoIHessVec21): Hessian is zero."); @@ -1565,7 +1599,7 @@ void Assembler::assembleQoIHessVec22(ROL::Ptr> &H22, // Assemble ROL::Ptr> localVal; qoi->HessVec_22(localVal,v_coeff,u_coeff,z_coeff,z_param); - assembleFieldVector( H22, localVal, qoi_vecH22_overlap_ ); + assembleFieldVector( H22, localVal, qoi_vecH22_overlap_, dofMgr2_ ); } catch (Exception::Zero &ez) { throw Exception::Zero(">>> (Assembler::assembleQoIHessVec22): Hessian is zero."); @@ -1601,7 +1635,7 @@ void Assembler::assembleQoIHessVec23(ROL::Ptr> &H23, // Assemble ROL::Ptr> localVal; qoi->HessVec_23(localVal,v,u_coeff,z_coeff,z_param); - assembleFieldVector( H23, localVal, qoi_vecH23_overlap_ ); + assembleFieldVector( H23, localVal, qoi_vecH23_overlap_, dofMgr2_ ); } catch (Exception::Zero &ez) { throw Exception::Zero(">>> (Assembler::assembleQoIHessVec23): Hessian is zero."); @@ -1762,7 +1796,7 @@ void Assembler::assembleQoIHessian11(ROL::Ptr> &H11, // Assemble ROL::Ptr> localVal; qoi->Hessian_11(localVal,u_coeff,z_coeff,z_param); - assembleFieldMatrix( H11, localVal ); + assembleFieldMatrix( H11, localVal, dofMgr1_, dofMgr1_ ); } catch ( Exception::Zero & ez ) { throw Exception::Zero(">>> (Assembler::assembleQoIHessian11): Hessian is zero."); @@ -1793,7 +1827,7 @@ void Assembler::assembleQoIHessian12(ROL::Ptr> &H12, // Assemble ROL::Ptr> localVal; qoi->Hessian_12(localVal,u_coeff,z_coeff,z_param); - assembleFieldMatrix( H12, localVal ); + assembleFieldMatrix( H12, localVal, dofMgr1_, dofMgr2_ ); } catch ( Exception::Zero & ez ) { throw Exception::Zero(">>> (Assembler::assembleQoIHessian12): Hessian is zero."); @@ -1824,7 +1858,7 @@ void Assembler::assembleQoIHessian21(ROL::Ptr> &H21, // Assemble ROL::Ptr> localVal; qoi->Hessian_21(localVal,u_coeff,z_coeff,z_param); - assembleFieldMatrix( H21, localVal ); + assembleFieldMatrix( H21, localVal, dofMgr2_, dofMgr1_ ); } catch ( Exception::Zero & ez ) { throw Exception::Zero(">>> (Assembler::assembleQoIHessian21): Hessian is zero."); @@ -1855,7 +1889,7 @@ void Assembler::assembleQoIHessian22(ROL::Ptr> &H22, // Assemble ROL::Ptr> localVal; qoi->Hessian_22(localVal,u_coeff,z_coeff,z_param); - assembleFieldMatrix( H22, localVal ); + assembleFieldMatrix( H22, localVal, dofMgr2_, dofMgr2_ ); } catch ( Exception::Zero & ez ) { throw Exception::Zero(">>> (Assembler::assembleQoIHessian22): Hessian is zero."); @@ -1882,7 +1916,7 @@ void Assembler::assemblePDERieszMap1(ROL::Ptr> &R1, // Assemble ROL::Ptr> localVal; pde->RieszMap_1(localVal); - assembleFieldMatrix( R1, localVal ); + assembleFieldMatrix( R1, localVal, dofMgr1_, dofMgr1_ ); } catch ( Exception::NotImplemented & eni ) { //throw Exception::NotImplemented(">>> (Assembler::assemblePDERieszMap1): Riesz map not implemented!"); @@ -1902,7 +1936,7 @@ void Assembler::assembleDynPDERieszMap1(ROL::Ptr> &R1, // Assemble ROL::Ptr> localVal; pde->RieszMap_1(localVal); - assembleFieldMatrix( R1, localVal ); + assembleFieldMatrix( R1, localVal, dofMgr1_, dofMgr1_ ); } catch ( Exception::NotImplemented & eni ) { //throw Exception::NotImplemented(">>> (Assembler::assemblePDERieszMap1): Riesz map not implemented!"); @@ -1930,7 +1964,7 @@ void Assembler::assemblePDERieszMap2(ROL::Ptr> &R2, // Assemble ROL::Ptr> localVal; pde->RieszMap_2(localVal); - assembleFieldMatrix( R2, localVal ); + assembleFieldMatrix( R2, localVal, dofMgr2_, dofMgr2_ ); } catch ( Exception::NotImplemented & eni ) { //throw Exception::NotImplemented(">>> (Assembler::assemblePDERieszMap2): Riesz map not implemented!"); @@ -1950,7 +1984,7 @@ void Assembler::assembleDynPDERieszMap2(ROL::Ptr> &R2, // Assemble ROL::Ptr> localVal; pde->RieszMap_2(localVal); - assembleFieldMatrix( R2, localVal ); + assembleFieldMatrix( R2, localVal, dofMgr2_, dofMgr2_ ); } catch ( Exception::NotImplemented & eni ) { //throw Exception::NotImplemented(">>> (Assembler::assemblePDERieszMap2): Riesz map not implemented!"); @@ -1989,10 +2023,10 @@ Real Assembler::computeStateError(const ROL::Ptr cubFactory; - shards::CellTopology cellType = basisPtrs_[fn]->getBaseCellTopology(); + shards::CellTopology cellType = basisPtrs1_[fn]->getBaseCellTopology(); ROL::Ptr> cellCub = cubFactory.create(cellType, cubDeg); ROL::Ptr> fe - = ROL::makePtr>(volCellNodes_,basisPtrs_[fn],cellCub); + = ROL::makePtr>(volCellNodes_,basisPtrs1_[fn],cellCub); // get dimensions int c = fe->gradN()->dimension(0); @@ -2055,10 +2089,10 @@ Real Assembler::computeControlError(const ROL::Ptr cubFactory; - shards::CellTopology cellType = basisPtrs_[fn]->getBaseCellTopology(); + shards::CellTopology cellType = basisPtrs2_[fn]->getBaseCellTopology(); ROL::Ptr> cellCub = cubFactory.create(cellType, cubDeg); ROL::Ptr> fe - = ROL::makePtr>(volCellNodes_,basisPtrs_[fn],cellCub); + = ROL::makePtr>(volCellNodes_,basisPtrs2_[fn],cellCub); // get dimensions int c = fe->gradN()->dimension(0); @@ -2200,10 +2234,10 @@ void Assembler::serialPrintStateEdgeField(const ROL::Ptr> cellJacInv = ROL::makePtr>(c,p,d,d); ROL::Ptr cellTopo - = ROL::makePtr(basisPtrs_[0]->getBaseCellTopology()); + = ROL::makePtr(basisPtrs1_[0]->getBaseCellTopology()); ROL::Ptr> valReference = ROL::makePtr>(f,p,d); - basisPtrs_[0]->getValues(*valReference,*rx,Intrepid::OPERATOR_VALUE); + basisPtrs1_[0]->getValues(*valReference,*rx,Intrepid::OPERATOR_VALUE); ROL::Ptr> valPhysical = ROL::makePtr>(c,f,p,d); Intrepid::CellTools::setJacobian(*cellJac,*rx,*volCellNodes_,*cellTopo); @@ -2279,7 +2313,11 @@ ROL::Ptr> Assembler::createResidualVector(void) cons /***************************************************************************/ template const ROL::Ptr> Assembler::getDofManager(void) const { - return dofMgr_; + return dofMgr1_; +} +template +const ROL::Ptr> Assembler::getDofManager2(void) const { + return dofMgr2_; } template @@ -2313,10 +2351,12 @@ void Assembler::setCommunicator(const ROL::Ptr> & template void Assembler::setBasis( - const std::vector>>> &basisPtrs, + const std::vector>>> &basisPtrs1, + const std::vector>>> &basisPtrs2, Teuchos::ParameterList &parlist, std::ostream &outStream) { - basisPtrs_ = basisPtrs; + basisPtrs1_ = basisPtrs1; + basisPtrs2_ = basisPtrs2; if (verbose_ && myRank_==0) { outStream << "Initialized PDE." << std::endl; } @@ -2333,7 +2373,8 @@ void Assembler::setDiscretization(Teuchos::ParameterList &parlist, else { // Otherwise construct MeshManager objective from parameter list } - dofMgr_ = ROL::makePtr>(meshMgr_,basisPtrs_); + dofMgr1_ = ROL::makePtr>(meshMgr_,basisPtrs1_); + dofMgr2_ = ROL::makePtr>(meshMgr_,basisPtrs2_); if (verbose_ && myRank_==0) { outStream << "Initialized discretization (MeshManager and DofManager)." << std::endl; } @@ -2348,7 +2389,7 @@ void Assembler::setParallelStructure(Teuchos::ParameterList &parlist, /****************************************************/ // Partition the cells in the mesh. We use a basic quasi-equinumerous partitioning, // where the remainder, if any, is assigned to the last processor. - Teuchos::Array myGlobalIds; + Teuchos::Array myGlobalIds1, myGlobalIds2; cellOffsets_.assign(numProcs_, 0); int totalNumCells = meshMgr_->getNumCells(); int cellsPerProc = totalNumCells / numProcs_; @@ -2390,8 +2431,10 @@ void Assembler::setParallelStructure(Teuchos::ParameterList &parlist, break; } - Intrepid::FieldContainer &cellDofs = *(dofMgr_->getCellDofs()); - int numLocalDofs = cellDofs.dimension(1); + Intrepid::FieldContainer &cellDofs1 = *(dofMgr1_->getCellDofs()); + Intrepid::FieldContainer &cellDofs2 = *(dofMgr2_->getCellDofs()); + int numLocalDofs1 = cellDofs1.dimension(1); + int numLocalDofs2 = cellDofs2.dimension(1); if (verbose_) { outStream << "Cell offsets across processors: " << cellOffsets_ << std::endl; @@ -2402,37 +2445,46 @@ void Assembler::setParallelStructure(Teuchos::ParameterList &parlist, case 2: for (int i=0; i> - (Teuchos::OrdinalTraits::invalid(), myGlobalIds, GO(0), comm_); + myOverlapStateMap_ = ROL::makePtr> + (Teuchos::OrdinalTraits::invalid(), myGlobalIds1, GO(0), comm_); //std::cout << std::endl << myOverlapMap_->getNodeElementList()<(myGlobalIds_, comm_); to build the overlap map. **/ - myUniqueStateMap_ = Tpetra::createOneToOne(myOverlapStateMap_); - //std::cout << std::endl << myUniqueMap_->getNodeElementList() << std::endl; - myOverlapControlMap_ = myOverlapStateMap_; - myUniqueControlMap_ = myUniqueStateMap_; + myUniqueStateMap_ = Tpetra::createOneToOne(myOverlapStateMap_); myOverlapResidualMap_ = myOverlapStateMap_; myUniqueResidualMap_ = myUniqueStateMap_; + myOverlapControlMap_ = ROL::makePtr> + (Teuchos::OrdinalTraits::invalid(), myGlobalIds2, GO(0), comm_); + myUniqueControlMap_ = Tpetra::createOneToOne(myOverlapControlMap_);; + //std::cout << std::endl << myUniqueMap_->getNodeElementList() << std::endl; // myCellMap_ = ROL::makePtr>( // Teuchos::OrdinalTraits::invalid(), // myCellIds_, 0, comm_); @@ -2442,43 +2494,85 @@ void Assembler::setParallelStructure(Teuchos::ParameterList &parlist, /****************************************/ // Make a GO copy to interface with Tpetra; currently dof manager uses int directly - Teuchos::ArrayRCP cellDofsArrayRCP = cellDofs.getData(); - Teuchos::ArrayRCP cellDofsGO(cellDofsArrayRCP.size(), GO()); - std::copy(cellDofsArrayRCP.getRawPtr(), cellDofsArrayRCP.getRawPtr()+cellDofsArrayRCP.size(), - cellDofsGO.getRawPtr()); - Teuchos::ArrayRCP cellDofsGOArrayRCP = cellDofsGO.getConst(); + Teuchos::ArrayRCP cellDofs1ArrayRCP = cellDofs1.getData(); + Teuchos::ArrayRCP cellDofs2ArrayRCP = cellDofs2.getData(); + Teuchos::ArrayRCP cellDofs1GO(cellDofs1ArrayRCP.size(), GO()); + Teuchos::ArrayRCP cellDofs2GO(cellDofs2ArrayRCP.size(), GO()); + std::copy(cellDofs1ArrayRCP.getRawPtr(), cellDofs1ArrayRCP.getRawPtr()+cellDofs1ArrayRCP.size(), + cellDofs1GO.getRawPtr()); + std::copy(cellDofs2ArrayRCP.getRawPtr(), cellDofs2ArrayRCP.getRawPtr()+cellDofs2ArrayRCP.size(), + cellDofs2GO.getRawPtr()); + Teuchos::ArrayRCP cellDofs1GOArrayRCP = cellDofs1GO.getConst(); + Teuchos::ArrayRCP cellDofs2GOArrayRCP = cellDofs2GO.getConst(); // Estimate the max number of entries per row // using a map (row indicies can be non-contiguous) - GO maxEntriesPerRow(0); + GO maxEntriesPerRow1(0), maxEntriesPerRow2(0); { - std::map numEntriesCount; - for (int i=0; i numEntriesCount1, numEntriesCount2; + for (int i=0; i &pa, const std::pair &pb) { return pa.second < pb.second; }); - if (!numEntriesCount.empty()) - maxEntriesPerRow = rowIndexWithMaxEntries->second; + const auto rowIndexWithMaxEntries2 + = std::max_element(std::begin(numEntriesCount2), std::end(numEntriesCount2), + [](const std::pair &pa, const std::pair &pb) { + return pa.second < pb.second; + }); + if (!numEntriesCount1.empty()) + maxEntriesPerRow1 = rowIndexWithMaxEntries1->second; + if (!numEntriesCount2.empty()) + maxEntriesPerRow2 = rowIndexWithMaxEntries2->second; } - matJ1Graph_ = ROL::makePtr>(myUniqueStateMap_, maxEntriesPerRow); + + matJ1Graph_ = ROL::makePtr>(myUniqueStateMap_, myUniqueStateMap_, maxEntriesPerRow1); for (int i=0; iinsertGlobalIndices(GO(cellDofs(myCellIds_[i],j)), - cellDofsGOArrayRCP(myCellIds_[i]*numLocalDofs, numLocalDofs)); + for (int j=0; jinsertGlobalIndices(GO(cellDofs1(myCellIds_[i],j)), + cellDofs1GOArrayRCP(myCellIds_[i]*numLocalDofs1, numLocalDofs1)); } } - matJ1Graph_->fillComplete(); - matJ2Graph_ = matJ1Graph_; + matJ1Graph_->fillComplete(myUniqueStateMap_,myUniqueStateMap_); matR1Graph_ = matJ1Graph_; - matR2Graph_ = matJ2Graph_; matH11Graph_ = matJ1Graph_; - matH12Graph_ = matJ1Graph_; + + matJ2Graph_ = ROL::makePtr>(myUniqueStateMap_, myUniqueControlMap_, maxEntriesPerRow2); + for (int i=0; iinsertGlobalIndices(GO(cellDofs1(myCellIds_[i],j)), + cellDofs2GOArrayRCP(myCellIds_[i]*numLocalDofs2, numLocalDofs2)); + } + } + matJ2Graph_->fillComplete(myUniqueControlMap_,myUniqueStateMap_); matH21Graph_ = matJ2Graph_; - matH22Graph_ = matJ2Graph_; + + matH12Graph_ = ROL::makePtr>(myUniqueControlMap_, myUniqueStateMap_, maxEntriesPerRow1); + for (int i=0; iinsertGlobalIndices(GO(cellDofs2(myCellIds_[i],j)), + cellDofs1GOArrayRCP(myCellIds_[i]*numLocalDofs1, numLocalDofs1)); + } + } + matH12Graph_->fillComplete(myUniqueStateMap_,myUniqueControlMap_); + + matR2Graph_ = ROL::makePtr>(myUniqueControlMap_, myUniqueControlMap_, maxEntriesPerRow2); + for (int i=0; iinsertGlobalIndices(GO(cellDofs2(myCellIds_[i],j)), + cellDofs2GOArrayRCP(myCellIds_[i]*numLocalDofs2, numLocalDofs2)); + } + } + matR2Graph_->fillComplete(myUniqueControlMap_,myUniqueControlMap_); + matH22Graph_ = matR2Graph_; if (verbose_ && myRank_==0) { outStream << "Initialized parallel structures." << std::endl; @@ -2488,7 +2582,7 @@ void Assembler::setParallelStructure(Teuchos::ParameterList &parlist, template void Assembler::setCellNodes(std::ostream &outStream) { // Build volume cell nodes - shards::CellTopology cellType = basisPtrs_[0]->getBaseCellTopology(); + shards::CellTopology cellType = basisPtrs1_[0]->getBaseCellTopology(); int spaceDim = cellType.getDimension(); int numNodesPerCell = cellType.getNodeCount(); volCellNodes_ = ROL::makePtr>(numCells_, numNodesPerCell, spaceDim); @@ -2571,8 +2665,8 @@ void Assembler::getCoeffFromStateVector(ROL::Ptr importer(myUniqueStateMap_, myOverlapStateMap_); xshared->doImport(*x,importer,Tpetra::REPLACE); // Populate xcoeff - Intrepid::FieldContainer &cellDofs = *(dofMgr_->getCellDofs()); - int lfs = dofMgr_->getLocalFieldSize(); + Intrepid::FieldContainer &cellDofs = *(dofMgr1_->getCellDofs()); + int lfs = dofMgr1_->getLocalFieldSize(); xcoeff = ROL::makePtr>(numCells_, lfs); Teuchos::ArrayRCP xdata = xshared->get1dView(); for (int i=0; i::getCoeffFromStateVector(ROL::PtrgetMap()->getLocalElement(cellDofs(myCellIds_[i],j))]; } } - dofMgr_->transformToIntrepidPattern(xcoeff); + dofMgr1_->transformToIntrepidPattern(xcoeff); } else { xcoeff = ROL::nullPtr; @@ -2597,8 +2691,8 @@ void Assembler::getCoeffFromControlVector(ROL::Ptr importer(myUniqueControlMap_, myOverlapControlMap_); xshared->doImport(*x,importer,Tpetra::REPLACE); // Populate xcoeff - Intrepid::FieldContainer &cellDofs = *(dofMgr_->getCellDofs()); - int lfs = dofMgr_->getLocalFieldSize(); + Intrepid::FieldContainer &cellDofs = *(dofMgr2_->getCellDofs()); + int lfs = dofMgr2_->getLocalFieldSize(); xcoeff = ROL::makePtr>(numCells_, lfs); Teuchos::ArrayRCP xdata = xshared->get1dView(); for (int i=0; i::getCoeffFromControlVector(ROL::PtrgetMap()->getLocalElement(cellDofs(myCellIds_[i],j))]; } } - dofMgr_->transformToIntrepidPattern(xcoeff); + dofMgr2_->transformToIntrepidPattern(xcoeff); } else { xcoeff = ROL::nullPtr; @@ -2633,15 +2727,16 @@ Real Assembler::assembleScalar(ROL::Ptr> &v template void Assembler::assembleFieldVector(ROL::Ptr> &v, ROL::Ptr> &val, - ROL::Ptr> &vecOverlap) { + ROL::Ptr> &vecOverlap, + const ROL::Ptr> &dofMgr) { // Set residual vectors to zero - v->scale(static_cast(0)); - vecOverlap->scale(static_cast(0)); + v->putScalar(static_cast(0)); + vecOverlap->putScalar(static_cast(0)); // Get degrees of freedom - Intrepid::FieldContainer &cellDofs = *(dofMgr_->getCellDofs()); + Intrepid::FieldContainer &cellDofs = *(dofMgr->getCellDofs()); int numLocalDofs = cellDofs.dimension(1); // Transform values - dofMgr_->transformToFieldPattern(val); + transformToFieldPattern(val,dofMgr); // assembly on the overlap map for (int i=0; i::assembleParamVector(ROL::Ptr> &v, template void Assembler::assembleFieldMatrix(ROL::Ptr> &M, - ROL::Ptr> &val) { + ROL::Ptr> &val, + const ROL::Ptr> &dofMgr1, + const ROL::Ptr> &dofMgr2) { // Transform data - dofMgr_->transformToFieldPattern(val); + transformToFieldPattern(val,dofMgr1,dofMgr2); // Zero PDE Jacobian M->resumeFill(); M->setAllToScalar(static_cast(0)); // Assemble PDE Jacobian - Intrepid::FieldContainer &cellDofs = *(dofMgr_->getCellDofs()); - int numLocalDofs = cellDofs.dimension(1); - int numLocalMatEntries = numLocalDofs * numLocalDofs; - Teuchos::ArrayRCP cellDofsArrayRCP = cellDofs.getData(); - Teuchos::ArrayRCP cellDofsGO(cellDofsArrayRCP.size(), GO()); - std::copy(cellDofsArrayRCP.getRawPtr(), cellDofsArrayRCP.getRawPtr()+cellDofsArrayRCP.size(), - cellDofsGO.getRawPtr()); - Teuchos::ArrayRCP cellDofsGOArrayRCP = cellDofsGO.getConst(); + Intrepid::FieldContainer &cellDofs1 = *(dofMgr1->getCellDofs()); + Intrepid::FieldContainer &cellDofs2 = *(dofMgr2->getCellDofs()); + int numLocalDofs1 = cellDofs1.dimension(1); + int numLocalDofs2 = cellDofs2.dimension(1); + int numLocalMatEntries = numLocalDofs1 * numLocalDofs2; + Teuchos::ArrayRCP cellDofs2ArrayRCP = cellDofs2.getData(); + Teuchos::ArrayRCP cellDofs2GO(cellDofs2ArrayRCP.size(), GO()); + std::copy(cellDofs2ArrayRCP.getRawPtr(), cellDofs2ArrayRCP.getRawPtr()+cellDofs2ArrayRCP.size(), + cellDofs2GO.getRawPtr()); + Teuchos::ArrayRCP cellDofs2GOArrayRCP = cellDofs2GO.getConst(); Teuchos::ArrayRCP valArrayRCP = val->getData(); for (int i=0; isumIntoGlobalValues(GO(cellDofs(myCellIds_[i],j)), - cellDofsGOArrayRCP(myCellIds_[i] * numLocalDofs, numLocalDofs), - valArrayRCP(i*numLocalMatEntries+j*numLocalDofs, numLocalDofs)); + for (int j=0; jsumIntoGlobalValues(GO(cellDofs1(myCellIds_[i],j)), + cellDofs2GOArrayRCP(myCellIds_[i] * numLocalDofs2, numLocalDofs2), + valArrayRCP(i*numLocalMatEntries+j*numLocalDofs2, numLocalDofs2)); } } M->fillComplete(); @@ -2703,18 +2802,19 @@ void Assembler::assembleFieldMatrix(ROL::Ptr> &M, template void Assembler::assembleParamFieldMatrix(ROL::Ptr> &M, std::vector>> &val, - ROL::Ptr> &matOverlap) { + ROL::Ptr> &matOverlap, + const ROL::Ptr> &dofMgr) { // Initialize res int size = M->getNumVectors(); // Compute PDE local Jacobian wrt parametric controls for (int i = 0; i < size; ++i) { - dofMgr_->transformToFieldPattern(val[i]); + transformToFieldPattern(val[i],dofMgr); } // Assemble PDE Jacobian wrt parametric controls M->scale(static_cast(0)); matOverlap->scale(static_cast(0)); for (int k = 0; k < size; ++k) { - Intrepid::FieldContainer &cellDofs = *(dofMgr_->getCellDofs()); + Intrepid::FieldContainer &cellDofs = *(dofMgr->getCellDofs()); int numLocalDofs = cellDofs.dimension(1); // assembly on the overlap map for (int i=0; i::assembleParamFieldMatrix(ROL::Ptr> & template void Assembler::assembleParamMatrix(ROL::Ptr>> &M, - std::vector>>> &val) { + std::vector>>> &val, + const ROL::Ptr> &dofMgr) { // Initialize local matrix int size = M->size(); std::vector>> tmp(size,ROL::nullPtr); // Compute local matrix for (int i = 0; i < size; ++i) { for (int j = 0; j < size; ++j) { - dofMgr_->transformToFieldPattern(val[i][j]); + transformToFieldPattern(val[i][j],dofMgr); } } // Assemble PDE Jacobian wrt parametric controls @@ -2766,4 +2867,41 @@ void Assembler::assembleParamMatrix(ROL::Ptr } } +template +void Assembler::transformToFieldPattern(const ROL::Ptr> &array, + const ROL::Ptr> &dofMgr1, + const ROL::Ptr> &dofMgr2) const { + if ( array != ROL::nullPtr ) { + int rank = array->rank(); + int nc = array->dimension(0); + if ( rank == 2 ) { + int nf = array->dimension(1); + Intrepid::FieldContainer tmp(nc, nf); + for (int c = 0; c < nc; ++c) { + for (int f = 0; f < nf; ++f) { + tmp(c, dofMgr1->mapToFieldPattern(f)) = (*array)(c, f); + } + } + *array = tmp; + } + else if (rank == 3 ) { + int nf1 = array->dimension(1); + int nf2 = array->dimension(2); + Intrepid::FieldContainer tmp(nc, nf1, nf2); + for (int c = 0; c < nc; ++c) { + for (int f1 = 0; f1 < nf1; ++f1) { + for (int f2 = 0; f2 < nf2; ++f2) { + tmp(c, dofMgr1->mapToFieldPattern(f1), dofMgr2->mapToFieldPattern(f2)) = (*array)(c, f1, f2); + } + } + } + *array = tmp; + } + else { + TEUCHOS_TEST_FOR_EXCEPTION(true, std::invalid_argument, + ">>> PDE-OPT/TOOLS/assembler.hpp (transformToFieldPattern): Input array rank not 2 or 3!"); + } + } +} + #endif diff --git a/packages/rol/example/PDE-OPT/TOOLS/dofmanager.hpp b/packages/rol/example/PDE-OPT/TOOLS/dofmanager.hpp index 5e2d73cf3ef9..3903bdf15c85 100644 --- a/packages/rol/example/PDE-OPT/TOOLS/dofmanager.hpp +++ b/packages/rol/example/PDE-OPT/TOOLS/dofmanager.hpp @@ -305,6 +305,10 @@ class DofManager { } } + int mapToFieldPattern(int f) const { + return mapToFieldPattern_[f]; + } + void transformToFieldPattern(const ROL::Ptr > &array) const { if ( array != ROL::nullPtr ) { int rank = array->rank(); diff --git a/packages/rol/example/PDE-OPT/TOOLS/dynpde.hpp b/packages/rol/example/PDE-OPT/TOOLS/dynpde.hpp index 89598ad0202c..ca286d18f131 100644 --- a/packages/rol/example/PDE-OPT/TOOLS/dynpde.hpp +++ b/packages/rol/example/PDE-OPT/TOOLS/dynpde.hpp @@ -271,12 +271,19 @@ class DynamicPDE { } virtual std::vector>>> getFields() = 0; + virtual std::vector>>> getFields2() { + return getFields(); + } virtual void setCellNodes(const ROL::Ptr> &cellNodes, const std::vector>>> &bdryCellNodes, const std::vector>> &bdryCellLocIds) = 0; - virtual void setFieldPattern(const std::vector> & fieldPattern) {} + virtual void setFieldPattern(const std::vector> &fieldPattern) {} + virtual void setFieldPattern(const std::vector> &fieldPattern1, + const std::vector> &fieldPattern2) { + setFieldPattern(fieldPattern1); + } private: std::vector param_; diff --git a/packages/rol/example/PDE-OPT/TOOLS/fieldhelper.hpp b/packages/rol/example/PDE-OPT/TOOLS/fieldhelper.hpp index 3b3a18e21358..72f8d11a833c 100644 --- a/packages/rol/example/PDE-OPT/TOOLS/fieldhelper.hpp +++ b/packages/rol/example/PDE-OPT/TOOLS/fieldhelper.hpp @@ -51,6 +51,107 @@ #include "Intrepid_FieldContainer.hpp" #include "ROL_Ptr.hpp" +namespace FieldUtils { + +struct FieldInfo { + const int numFields, numDofs; + const std::vector numFieldDofs; + const std::vector> fieldPattern; + + FieldInfo(const int numFields_, const int numDofs_, + const std::vector &numFieldDofs_, + const std::vector> &fieldPattern_) + : numFields(numFields_), numDofs(numDofs_), + numFieldDofs(numFieldDofs_), fieldPattern(fieldPattern_) {} +}; + +template +inline void splitFieldCoeff(std::vector>> &U, + const ROL::Ptr> &u_coeff, + const ROL::Ptr &info) { + const int numFields = info->numFields; + U.resize(numFields); + const int c = u_coeff->dimension(0); + for (int i=0; inumFieldDofs[i]; + U[i] = ROL::makePtr>(c,numFieldDofs); + for (int j=0; jfieldPattern[i][k]); + } + } + } +} + +template +inline void splitFieldCoeff(std::vector>>> &J, + const ROL::Ptr> &jac, + const ROL::Ptr &rowInfo, + const ROL::Ptr &colInfo) { + const int rowNumFields = rowInfo->numFields; + const int colNumFields = colInfo->numFields; + J.resize(rowNumFields); + const int c = jac->dimension(0); + for (int i=0; inumFieldDofs[i]; + J[i].resize(colNumFields,ROL::nullPtr); + for (int j=0; jnumFieldDofs[j]; + J[i][j] = ROL::makePtr>(c,rowNumFieldDofs,colNumFieldDofs); + for (int k=0; kfieldPattern[i][l],colInfo->fieldPattern[j][m]); + } + } + } + } + } +} + +template +inline void combineFieldCoeff(ROL::Ptr> &res, + const std::vector>> &R, + const ROL::Ptr &info) { + const int numFields = info->numFields; + const int c = R[0]->dimension(0); // number of cells + res = ROL::makePtr>(c, info->numDofs); + for (int i=0; inumFieldDofs[i]; + for (int j=0; jfieldPattern[i][k]) = (*R[i])(j,k); + } + } + } +} + +template +inline void combineFieldCoeff(ROL::Ptr> &jac, + const std::vector>>> &J, + const ROL::Ptr &rowInfo, + const ROL::Ptr &colInfo) { + const int rowNumFields = rowInfo->numFields; + const int colNumFields = colInfo->numFields; + const int c = J[0][0]->dimension(0); // number of cells + jac = ROL::makePtr>(c, rowInfo->numDofs, colInfo->numDofs); + for (int i=0; inumFieldDofs[i]; + for (int j=0; jnumFieldDofs[j]; + for (int k=0; kfieldPattern[i][l],colInfo->fieldPattern[j][m]) = (*J[i][j])(k,l,m); + } + } + } + } + } +} + +} + template class FieldHelper { private: diff --git a/packages/rol/example/PDE-OPT/TOOLS/pde.hpp b/packages/rol/example/PDE-OPT/TOOLS/pde.hpp index 405ee84cf3bc..a0808f961d11 100644 --- a/packages/rol/example/PDE-OPT/TOOLS/pde.hpp +++ b/packages/rol/example/PDE-OPT/TOOLS/pde.hpp @@ -169,21 +169,27 @@ class PDE { throw Exception::NotImplemented(">>> Hessian_33 not implemented."); } - virtual void RieszMap_1(ROL::Ptr > &riesz) { + virtual void RieszMap_1(ROL::Ptr> &riesz) { throw Exception::NotImplemented(">>> RieszMap_1 not implemented."); } - virtual void RieszMap_2(ROL::Ptr > &riesz) { + virtual void RieszMap_2(ROL::Ptr> &riesz) { throw Exception::NotImplemented(">>> RieszMap_2 not implemented."); } - virtual std::vector > > > getFields() = 0; + virtual std::vector>>> getFields() = 0; + virtual std::vector>>> getFields2() { + return getFields(); + } - virtual void setCellNodes(const ROL::Ptr > &cellNodes, - const std::vector > > > &bdryCellNodes, - const std::vector > > &bdryCellLocIds) = 0; + virtual void setCellNodes(const ROL::Ptr> &cellNodes, + const std::vector>>> &bdryCellNodes, + const std::vector>> &bdryCellLocIds) = 0; - virtual void setFieldPattern(const std::vector > & fieldPattern) { + virtual void setFieldPattern(const std::vector> &fieldPattern) {} + virtual void setFieldPattern(const std::vector> &fieldPattern1, + const std::vector> &fieldPattern2) { + setFieldPattern(fieldPattern1); } private: diff --git a/packages/rol/example/PDE-OPT/TOOLS/pdeconstraint.hpp b/packages/rol/example/PDE-OPT/TOOLS/pdeconstraint.hpp index a34075bc8814..09d33b1afa90 100644 --- a/packages/rol/example/PDE-OPT/TOOLS/pdeconstraint.hpp +++ b/packages/rol/example/PDE-OPT/TOOLS/pdeconstraint.hpp @@ -697,7 +697,7 @@ class PDE_Constraint : public ROL::Constraint_SimOpt { isH31zero_(false), isH31notImplemented_(false), isH32zero_(false), isH32notImplemented_(false), isH33zero_(false), isH33notImplemented_(false) { - assembler_ = ROL::makePtr>(pde_->getFields(),meshMgr,comm,parlist,outStream); + assembler_ = ROL::makePtr>(pde_->getFields(),pde_->getFields2(),meshMgr,comm,parlist,outStream); assembler_->setCellNodes(*pde_); solver_ = ROL::makePtr>(parlist.sublist("Solver")); } From 56faca727172c0e15dfde5412b7d723dab90490e Mon Sep 17 00:00:00 2001 From: "Drew P. Kouri" Date: Wed, 22 Apr 2020 17:13:35 -0600 Subject: [PATCH 03/19] Updated binary advection diffusion example to reflect changes in assembler. --- .../binary/adv-diff-TEST/branching.hpp | 12 ++++- .../binary/adv-diff-TEST/example_01.cpp | 22 ++++---- .../PDE-OPT/binary/adv-diff-TEST/femdata.hpp | 14 +++-- .../binary/adv-diff-TEST/misfit_robj.hpp | 53 +++++++++---------- .../PDE-OPT/binary/adv-diff-TEST/objsum.hpp | 2 + .../binary/adv-diff-TEST/opfactory.hpp | 8 +-- .../binary/adv-diff-TEST/pde_adv_diff.hpp | 45 ++++++++++++---- 7 files changed, 101 insertions(+), 55 deletions(-) diff --git a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/branching.hpp b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/branching.hpp index 246473110330..810fe465bc84 100644 --- a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/branching.hpp +++ b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/branching.hpp @@ -53,23 +53,31 @@ template class ADVDIFF_Branching : public ROL::ROL_PEBBL_Branching { private: const int method_; + ROL::Ptr> z0_; using ROL::ROL_PEBBL_Branching::verbosity_; using ROL::ROL_PEBBL_Branching::outStream_; + using ROL::ROL_PEBBL_Branching::parlist_; public: - ADVDIFF_Branching(const ROL::Ptr> &factory, + ADVDIFF_Branching(const ROL::Ptr> &factory, const ROL::Ptr &parlist, const ROL::Ptr> &bHelper, int verbosity = 0, const ROL::Ptr &outStream = ROL::nullPtr, int method = 0) : ROL::ROL_PEBBL_Branching::ROL_PEBBL_Branching(factory,parlist,bHelper,verbosity,outStream), - method_(method) {} + method_(method) { + z0_ = factory->buildSolutionVector(); + } pebbl::branchSub* blankSub() { return new ADVDIFF_BranchSub(ROL::makePtrFromRef>(*this),verbosity_,outStream_,method_); } + +// pebbl::solution* iniitalGuess() { +// +// } }; // ADVDIFF_Branching template diff --git a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/example_01.cpp b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/example_01.cpp index ffb9ab7faf8f..911b6dfea0e7 100644 --- a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/example_01.cpp +++ b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/example_01.cpp @@ -136,16 +136,19 @@ int main(int argc, char *argv[]) { // Print bool usePC = parlist->sublist("Problem").get("Piecewise Constant Controls", true); std::stringstream uname, zname, xname, yname; - uname << "state_" << nx << "_" << ny << ".txt"; - zname << "control_" << nx << "_" << ny << ".txt"; - xname << "X_" << nx << "_" << ny << ".txt"; - yname << "Y_" << nx << "_" << ny << ".txt"; if (!solveQP) { - factory->getAssembler()->outputTpetraVector(ROL::dynamicPtrCast>(u)->getVector(),uname.str()); if (!usePC) { + uname << "state.txt"; + zname << "control.txt"; + factory->getAssembler()->outputTpetraVector(ROL::dynamicPtrCast>(u)->getVector(),uname.str()); factory->getAssembler()->outputTpetraVector(ROL::dynamicPtrCast>(z)->getVector(),zname.str()); } else { + uname << "state_" << nx << "_" << ny << ".txt"; + zname << "control_" << nx << "_" << ny << ".txt"; + xname << "X_" << nx << "_" << ny << ".txt"; + yname << "Y_" << nx << "_" << ny << ".txt"; + factory->getAssembler()->outputTpetraVector(ROL::dynamicPtrCast>(u)->getVector(),uname.str()); std::ofstream zfile, xfile, yfile; zfile.open(zname.str()); xfile.open(xname.str()); @@ -165,18 +168,19 @@ int main(int argc, char *argv[]) { } } else { + zname << "control_" << nx << "_" << ny << ".txt"; + xname << "X_" << nx << "_" << ny << ".txt"; + yname << "Y_" << nx << "_" << ny << ".txt"; std::ofstream zfile, xfile, yfile; zfile.open(zname.str()); xfile.open(xname.str()); yfile.open(yname.str()); - int x(0), y(0); Teuchos::SerialDenseVector &zdata = *ROL::dynamicPtrCast>(z)->getVector(); for (int j = 0; j < nx; ++j) { for (int k = 0; k < ny; ++k) { zfile << zdata[j+k*nx] << std::endl; - x = j; y = k; - xfile << x << std::endl; - yfile << y << std::endl; + xfile << j << std::endl; + yfile << k << std::endl; } } zfile.close(); diff --git a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/femdata.hpp b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/femdata.hpp index b71479675440..34d732d75783 100644 --- a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/femdata.hpp +++ b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/femdata.hpp @@ -10,6 +10,7 @@ #include "pde_adv_diff.hpp" #include "qoi_adv_diff.hpp" #include "mesh_adv_diff.hpp" +#include "Tpetra_RowMatrixTransposer.hpp" template class FEMdata { @@ -18,7 +19,7 @@ class FEMdata { ROL::Ptr> pde_; ROL::Ptr> assembler_; ROL::Ptr> solver_; - ROL::Ptr> matJ1_, matJ2_, matH_; + ROL::Ptr> matJ1_, matJ2_, matH_, matJ2t_; ROL::Ptr> vecG_, vecR_, vecJ3_; Real c0_; @@ -48,6 +49,10 @@ class FEMdata { return pde_->getFE(); } + const ROL::Ptr> getFE2(void) const { + return pde_->getFE2(); + } + // PDE definitions void addPDErhs(ROL::Vector &rhs) const { const Real one(1); @@ -95,7 +100,8 @@ class FEMdata { ROL::Ptr> Jvf = getField(Jv); ROL::Ptr> vf = getConstField(v); if (transpose) { - matJ2_->apply(*vf,*Jvf,Teuchos::TRANS); + //matJ2_->apply(*vf,*Jvf,Teuchos::TRANS); + matJ2t_->apply(*vf,*Jvf); } else { matJ2_->apply(*vf,*Jvf); @@ -157,7 +163,7 @@ class FEMdata { pde_ = ROL::makePtr>(list); ROL::Ptr> mesh = ROL::makePtr>(list); - assembler_ = ROL::makePtr>(pde_->getFields(), + assembler_ = ROL::makePtr>(pde_->getFields(),pde_->getFields2(), mesh,comm,list,stream); assembler_->setCellNodes(*pde_); ROL::Ptr> qoi = ROL::makePtr>(pde_->getFE(),list); @@ -185,6 +191,8 @@ class FEMdata { } else { assembler_->assemblePDEJacobian2(matJ2_,pde_,stateZero,controlZero,paramZero); + Tpetra::RowMatrixTransposer<> trans(matJ2_); + matJ2t_ = trans.createTranspose(); } solver_->setA(matJ1_); diff --git a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/misfit_robj.hpp b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/misfit_robj.hpp index 2ea092b79d09..69741d76d0b6 100644 --- a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/misfit_robj.hpp +++ b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/misfit_robj.hpp @@ -52,13 +52,12 @@ class Misfit_Objective : public ROL::Objective { void solvePDE(ROL::Vector &u, const ROL::Vector &z) { update(z,false); - solve_state_equation(z); - u.set(*state_); + solve_state_equation(u,z); } Real value( const ROL::Vector &z, Real &tol ) { nfval_++; - solve_state_equation(z); + solve_state_equation(*state_,z); fem_->applyObjectiveHessian(*dualadjoint_,*state_); // Hu dualadjoint_->scale(static_cast(0.5)); // 0.5 Hu fem_->addObjectiveGradient(*dualadjoint_); // 0.5 Hu + g @@ -68,17 +67,15 @@ class Misfit_Objective : public ROL::Objective { void gradient( ROL::Vector &g, const ROL::Vector &z, Real &tol ) { ngrad_++; - solve_state_equation(z); - solve_adjoint_equation(*state_); + solve_state_equation(*state_,z); + solve_adjoint_equation(*adjoint_,*state_); fem_->applyControlJacobian(g,*adjoint_,true); } void hessVec( ROL::Vector &hv, const ROL::Vector &v, const ROL::Vector &z, Real &tol ) { nhess_++; - solve_state_equation(z); - solve_adjoint_equation(*state_); - solve_state_sensitivity(v); - solve_adjoint_sensitivity(*state_sens_); + solve_state_sensitivity(*state_sens_,v); + solve_adjoint_sensitivity(*adjoint_sens_,*state_sens_); fem_->applyControlJacobian(hv,*adjoint_sens_,true); } @@ -109,49 +106,49 @@ class Misfit_Objective : public ROL::Objective { private: - void solve_state_equation(const ROL::Vector &z) { + void solve_state_equation(ROL::Vector &state, const ROL::Vector &control) { bool isComputed = false; if (storage_) { - isComputed = stateStore_->get(*state_,ROL::Objective::getParameter()); + isComputed = stateStore_->get(state,ROL::Objective::getParameter()); } if (!isComputed || !storage_) { - fem_->applyControlJacobian(*dualadjoint_,z,false); // Bz - fem_->addPDErhs(*dualadjoint_); // Bz + f - fem_->applyInversePDEJacobian(*state_,*dualadjoint_,false); // inv(A)(Bz + f) - state_->scale(static_cast(-1)); // -inv(A)(Bz + f) + fem_->applyControlJacobian(*dualadjoint_,control,false); // Bz + fem_->addPDErhs(*dualadjoint_); // Bz + f + fem_->applyInversePDEJacobian(state,*dualadjoint_,false); // inv(A)(Bz + f) + state.scale(static_cast(-1)); // -inv(A)(Bz + f) nstat_++; if (storage_) { - stateStore_->set(*state_,ROL::Objective::getParameter()); + stateStore_->set(state,ROL::Objective::getParameter()); } } } - void solve_adjoint_equation(const ROL::Vector &u) { + void solve_adjoint_equation(ROL::Vector &adjoint, const ROL::Vector &state) { bool isComputed = false; if (storage_) { - isComputed = adjointStore_->get(*adjoint_,ROL::Objective::getParameter()); + isComputed = adjointStore_->get(adjoint,ROL::Objective::getParameter()); } if (!isComputed || !storage_) { - fem_->applyObjectiveHessian(*dualadjoint_,*state_); // Hu - fem_->addObjectiveGradient(*dualadjoint_); // Hu + g - fem_->applyInversePDEJacobian(*adjoint_,*dualadjoint_,true); // inv(A')(Hu + g) - adjoint_->scale(static_cast(-1)); // -inv(A')(Hu + g) + fem_->applyObjectiveHessian(*dualadjoint_,state); // Hu + fem_->addObjectiveGradient(*dualadjoint_); // Hu + g + fem_->applyInversePDEJacobian(adjoint,*dualadjoint_,true); // inv(A')(Hu + g) + adjoint.scale(static_cast(-1)); // -inv(A')(Hu + g) nadjo_++; if (storage_) { - adjointStore_->set(*adjoint_,ROL::Objective::getParameter()); + adjointStore_->set(adjoint,ROL::Objective::getParameter()); } } } - void solve_state_sensitivity(const ROL::Vector &v) { + void solve_state_sensitivity(ROL::Vector &state_sens, const ROL::Vector &v) { fem_->applyControlJacobian(*dualadjoint_,v,false); // Bv - fem_->applyInversePDEJacobian(*state_sens_,*dualadjoint_,false); // inv(A)Bv + fem_->applyInversePDEJacobian(state_sens,*dualadjoint_,false); // inv(A)Bv nsens_++; } - void solve_adjoint_sensitivity(const ROL::Vector &v) { - fem_->applyObjectiveHessian(*dualadjoint_,v); // Hv - fem_->applyInversePDEJacobian(*adjoint_sens_,*dualadjoint_,true); // inv(A')Hv + void solve_adjoint_sensitivity(ROL::Vector &adjoint_sens, const ROL::Vector &state_sens) { + fem_->applyObjectiveHessian(*dualadjoint_,state_sens); // Hv + fem_->applyInversePDEJacobian(adjoint_sens,*dualadjoint_,true); // inv(A')Hv nsadj_++; } }; // class Misfit_Objective diff --git a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/objsum.hpp b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/objsum.hpp index 9f33ac384aec..b44fd9585325 100644 --- a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/objsum.hpp +++ b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/objsum.hpp @@ -103,6 +103,7 @@ class Sum_Objective : public ROL::Objective { xdual_ = g.clone(); initialized_ = true; } + g.zero(); misfit_->gradient(g,x,tol); g.scale(misCost_); penalty_->gradient(*xdual_,x,tol); @@ -116,6 +117,7 @@ class Sum_Objective : public ROL::Objective { xdual_ = hv.clone(); initialized_ = true; } + hv.zero(); misfit_->hessVec(hv,v,x,tol); hv.scale(misCost_); penalty_->hessVec(*xdual_,v,x,tol); diff --git a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/opfactory.hpp b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/opfactory.hpp index fa7ab44082c0..d4165486b3a8 100644 --- a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/opfactory.hpp +++ b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/opfactory.hpp @@ -79,15 +79,15 @@ class BinaryAdvDiffFactory : public ROL::OptimizationProblemFactory { std::string costType = pl_.sublist("Problem").get("Control Cost Type", "TV"); std::vector>> qoi_pen(2,ROL::nullPtr); if (costType=="TV") { - qoi_pen[0] = ROL::makePtr>(fem_->getFE(),pl_); + qoi_pen[0] = ROL::makePtr>(fem_->getFE2(),pl_); } else if (costType=="L1") { - qoi_pen[0] = ROL::makePtr>(fem_->getFE(),pl_); + qoi_pen[0] = ROL::makePtr>(fem_->getFE2(),pl_); } else { - qoi_pen[0] = ROL::makePtr>(fem_->getFE(),pl_); + qoi_pen[0] = ROL::makePtr>(fem_->getFE2(),pl_); } - qoi_pen[1] = ROL::makePtr>(fem_->getFE(),pl_); + qoi_pen[1] = ROL::makePtr>(fem_->getFE2(),pl_); penalty_ = ROL::makePtr>(qoi_pen[0],assembler_); binary_ = ROL::makePtr>(qoi_pen[1],assembler_); // Create template control vector diff --git a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/pde_adv_diff.hpp b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/pde_adv_diff.hpp index 0ef1e2a03dec..35259e553e5a 100644 --- a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/pde_adv_diff.hpp +++ b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/pde_adv_diff.hpp @@ -67,6 +67,8 @@ class PDE_adv_diff : public PDE { // Finite element basis information ROL::Ptr>> basisPtr_; std::vector>>> basisPtrs_; + ROL::Ptr>> basisPtr2_; + std::vector>>> basisPtrs2_; // Cell cubature information ROL::Ptr> cellCub_; // Cell node information @@ -74,7 +76,7 @@ class PDE_adv_diff : public PDE { std::vector>>> bdryCellNodes_; std::vector>> bdryCellLocIds_; // Finite element definition - ROL::Ptr> fe_vol_; + ROL::Ptr> fe_vol_, fe_ctrl_; // Local degrees of freedom on boundary, for each side of the reference cell (first index). std::vector> fidx_; // Coordinates of degrees freedom on boundary cells. @@ -120,6 +122,15 @@ class PDE_adv_diff : public PDE { XU_ = XL_ + parlist.sublist("Geometry").get("Width", 2.0); YU_ = YL_ + parlist.sublist("Geometry").get("Height", 1.0); usePC_ = parlist.sublist("Problem").get("Piecewise Constant Controls", true); + if (!usePC_) { + if (probDim == 2) { + basisPtr2_ = ROL::makePtr>>(); + } + else if (probDim == 3) { + basisPtr2_ = ROL::makePtr>>(); + } + basisPtrs2_.clear(); basisPtrs2_.push_back(basisPtr2_); + } } void residual(ROL::Ptr> & res, @@ -164,7 +175,7 @@ class PDE_adv_diff : public PDE { // ADD CONTROL TERM TO RESIDUAL if (z_coeff != ROL::nullPtr) { - fe_vol_->evaluateValue(valZ_eval, z_coeff); + fe_ctrl_->evaluateValue(valZ_eval, z_coeff); Intrepid::RealSpaceTools::scale(*valZ_eval,static_cast(-1)); Intrepid::FunctionSpaceTools::integrate(*res, *valZ_eval, @@ -252,10 +263,15 @@ class PDE_adv_diff : public PDE { if (z_coeff != ROL::nullPtr) { // GET DIMENSIONS int c = fe_vol_->N()->dimension(0); - int f = fe_vol_->N()->dimension(1); + int f1 = fe_vol_->N()->dimension(1); + int f2 = fe_ctrl_->N()->dimension(1); // INITIALIZE RIESZ - jac = ROL::makePtr>(c, f, f); - *jac = *fe_vol_->massMat(); + jac = ROL::makePtr>(c, f1, f2); + Intrepid::FunctionSpaceTools::integrate(*jac, + *fe_vol_->N(), + *fe_ctrl_->NdetJ(), + Intrepid::COMP_CPP, false); + //*jac = *fe_vol_->massMat(); Intrepid::RealSpaceTools::scale(*jac,static_cast(-1)); // APPLY DIRICHLET CONDITIONS int numLocalSideIds = bdryCellLocIds_[0].size(); @@ -266,7 +282,7 @@ class PDE_adv_diff : public PDE { int cidx = bdryCellLocIds_[0][j][k]; for (int l = 0; l < numBdryDofs; ++l) { //std::cout << "\n j=" << j << " l=" << l << " " << fidx[j][l]; - for (int m = 0; m < f; ++m) { + for (int m = 0; m < f2; ++m) { (*jac)(cidx,fidx_[j][l],m) = static_cast(0); } } @@ -405,17 +421,21 @@ class PDE_adv_diff : public PDE { void RieszMap_2(ROL::Ptr> & riesz) { // GET DIMENSIONS - int c = fe_vol_->N()->dimension(0); - int f = fe_vol_->N()->dimension(1); + int c = fe_ctrl_->N()->dimension(0); + int f = fe_ctrl_->N()->dimension(1); // INITIALIZE RIESZ riesz = ROL::makePtr>(c, f, f); - *riesz = *fe_vol_->massMat(); + *riesz = *fe_ctrl_->massMat(); } std::vector>>> getFields() { return basisPtrs_; } + std::vector>>> getFields2() { + return basisPtrs2_; + } + void setCellNodes(const ROL::Ptr> &volCellNodes, const std::vector>>> &bdryCellNodes, const std::vector>> &bdryCellLocIds) { @@ -424,6 +444,9 @@ class PDE_adv_diff : public PDE { bdryCellLocIds_ = bdryCellLocIds; // Finite element definition. fe_vol_ = ROL::makePtr>(volCellNodes_,basisPtr_,cellCub_); + if (!usePC_) { + fe_ctrl_ = ROL::makePtr>(volCellNodes_,basisPtr2_,cellCub_); + } // Set local boundary DOFs. fidx_ = fe_vol_->getBoundaryDofs(); // Compute Dirichlet values at DOFs. @@ -459,6 +482,10 @@ class PDE_adv_diff : public PDE { return fe_vol_; } + const ROL::Ptr> getFE2(void) const { + return fe_ctrl_; + } + void print(void) const { std::ofstream xfile, yfile; xfile.open("X.txt"); From 180c1bee119c6899118a862feeb5a2197a8b8440 Mon Sep 17 00:00:00 2001 From: "Drew P. Kouri" Date: Wed, 22 Apr 2020 17:18:45 -0600 Subject: [PATCH 04/19] Change to include the adv-diff-TEST example. --- packages/rol/example/PDE-OPT/binary/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/rol/example/PDE-OPT/binary/CMakeLists.txt b/packages/rol/example/PDE-OPT/binary/CMakeLists.txt index a0cea2ee432f..3165f5708c04 100644 --- a/packages/rol/example/PDE-OPT/binary/CMakeLists.txt +++ b/packages/rol/example/PDE-OPT/binary/CMakeLists.txt @@ -1,3 +1,4 @@ ADD_SUBDIRECTORY(adv-diff) ADD_SUBDIRECTORY(adv-diff-SUR) +ADD_SUBDIRECTORY(adv-diff-TEST) ADD_SUBDIRECTORY(elasticity) From 9135ab8e78d15b4a1ff6fe40368e6ccecbe49ef0 Mon Sep 17 00:00:00 2001 From: "Drew P. Kouri" Date: Wed, 22 Apr 2020 17:34:17 -0600 Subject: [PATCH 05/19] Changed control discretization. --- .../rol/example/PDE-OPT/binary/adv-diff-TEST/femdata.hpp | 8 ++------ .../example/PDE-OPT/binary/adv-diff-TEST/pde_adv_diff.hpp | 4 ++-- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/femdata.hpp b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/femdata.hpp index 34d732d75783..461fa516266b 100644 --- a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/femdata.hpp +++ b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/femdata.hpp @@ -10,7 +10,6 @@ #include "pde_adv_diff.hpp" #include "qoi_adv_diff.hpp" #include "mesh_adv_diff.hpp" -#include "Tpetra_RowMatrixTransposer.hpp" template class FEMdata { @@ -19,7 +18,7 @@ class FEMdata { ROL::Ptr> pde_; ROL::Ptr> assembler_; ROL::Ptr> solver_; - ROL::Ptr> matJ1_, matJ2_, matH_, matJ2t_; + ROL::Ptr> matJ1_, matJ2_, matH_; ROL::Ptr> vecG_, vecR_, vecJ3_; Real c0_; @@ -100,8 +99,7 @@ class FEMdata { ROL::Ptr> Jvf = getField(Jv); ROL::Ptr> vf = getConstField(v); if (transpose) { - //matJ2_->apply(*vf,*Jvf,Teuchos::TRANS); - matJ2t_->apply(*vf,*Jvf); + matJ2_->apply(*vf,*Jvf,Teuchos::TRANS); } else { matJ2_->apply(*vf,*Jvf); @@ -191,8 +189,6 @@ class FEMdata { } else { assembler_->assemblePDEJacobian2(matJ2_,pde_,stateZero,controlZero,paramZero); - Tpetra::RowMatrixTransposer<> trans(matJ2_); - matJ2t_ = trans.createTranspose(); } solver_->setA(matJ1_); diff --git a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/pde_adv_diff.hpp b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/pde_adv_diff.hpp index 35259e553e5a..5624450296fc 100644 --- a/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/pde_adv_diff.hpp +++ b/packages/rol/example/PDE-OPT/binary/adv-diff-TEST/pde_adv_diff.hpp @@ -124,10 +124,10 @@ class PDE_adv_diff : public PDE { usePC_ = parlist.sublist("Problem").get("Piecewise Constant Controls", true); if (!usePC_) { if (probDim == 2) { - basisPtr2_ = ROL::makePtr>>(); + basisPtr2_ = ROL::makePtr>>(); } else if (probDim == 3) { - basisPtr2_ = ROL::makePtr>>(); + basisPtr2_ = ROL::makePtr>>(); } basisPtrs2_.clear(); basisPtrs2_.push_back(basisPtr2_); } From 39cb78eff51900565fca099d27049fa67d8d6c86 Mon Sep 17 00:00:00 2001 From: "Drew P. Kouri" Date: Thu, 23 Apr 2020 11:01:32 -0600 Subject: [PATCH 06/19] Fixed parallel bug in assembler graph constructions. --- packages/rol/example/PDE-OPT/TOOLS/assembler_def.hpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/rol/example/PDE-OPT/TOOLS/assembler_def.hpp b/packages/rol/example/PDE-OPT/TOOLS/assembler_def.hpp index 27cd17badd17..7604e8ddf964 100644 --- a/packages/rol/example/PDE-OPT/TOOLS/assembler_def.hpp +++ b/packages/rol/example/PDE-OPT/TOOLS/assembler_def.hpp @@ -2534,7 +2534,7 @@ void Assembler::setParallelStructure(Teuchos::ParameterList &parlist, maxEntriesPerRow2 = rowIndexWithMaxEntries2->second; } - matJ1Graph_ = ROL::makePtr>(myUniqueStateMap_, myUniqueStateMap_, maxEntriesPerRow1); + matJ1Graph_ = ROL::makePtr>(myUniqueStateMap_, maxEntriesPerRow1); for (int i=0; iinsertGlobalIndices(GO(cellDofs1(myCellIds_[i],j)), @@ -2545,7 +2545,7 @@ void Assembler::setParallelStructure(Teuchos::ParameterList &parlist, matR1Graph_ = matJ1Graph_; matH11Graph_ = matJ1Graph_; - matJ2Graph_ = ROL::makePtr>(myUniqueStateMap_, myUniqueControlMap_, maxEntriesPerRow2); + matJ2Graph_ = ROL::makePtr>(myUniqueStateMap_, maxEntriesPerRow2); for (int i=0; iinsertGlobalIndices(GO(cellDofs1(myCellIds_[i],j)), @@ -2555,7 +2555,7 @@ void Assembler::setParallelStructure(Teuchos::ParameterList &parlist, matJ2Graph_->fillComplete(myUniqueControlMap_,myUniqueStateMap_); matH21Graph_ = matJ2Graph_; - matH12Graph_ = ROL::makePtr>(myUniqueControlMap_, myUniqueStateMap_, maxEntriesPerRow1); + matH12Graph_ = ROL::makePtr>(myUniqueControlMap_, maxEntriesPerRow1); for (int i=0; iinsertGlobalIndices(GO(cellDofs2(myCellIds_[i],j)), @@ -2564,7 +2564,7 @@ void Assembler::setParallelStructure(Teuchos::ParameterList &parlist, } matH12Graph_->fillComplete(myUniqueStateMap_,myUniqueControlMap_); - matR2Graph_ = ROL::makePtr>(myUniqueControlMap_, myUniqueControlMap_, maxEntriesPerRow2); + matR2Graph_ = ROL::makePtr>(myUniqueControlMap_, maxEntriesPerRow2); for (int i=0; iinsertGlobalIndices(GO(cellDofs2(myCellIds_[i],j)), From f711d315707d28ad1738105d684f5bcbf3a6acf6 Mon Sep 17 00:00:00 2001 From: "Drew P. Kouri" Date: Mon, 27 Apr 2020 10:11:14 -0600 Subject: [PATCH 07/19] Modifed FE to allow for construction without building side set information. --- packages/rol/example/PDE-OPT/TOOLS/fe.hpp | 25 +++++++++++++---------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/packages/rol/example/PDE-OPT/TOOLS/fe.hpp b/packages/rol/example/PDE-OPT/TOOLS/fe.hpp index 2128cd954bb7..ac9735e7b1cd 100644 --- a/packages/rol/example/PDE-OPT/TOOLS/fe.hpp +++ b/packages/rol/example/PDE-OPT/TOOLS/fe.hpp @@ -111,7 +111,8 @@ class FE { FE(const ROL::Ptr > & cellNodes, const ROL::Ptr > > & basis, - const ROL::Ptr > > & cubature) : + const ROL::Ptr > > & cubature, + bool computeBdryDofs = true) : cellNodes_(cellNodes), basis_(basis), cubature_(cubature), sideId_(-1) { // Get base cell topology from basis. @@ -254,17 +255,19 @@ class FE { *cellTopo_); // Compute local degrees of freedom on reference cell sides. - int numSides = cellTopo_->getSideCount(); - if (cellTopo_->getDimension() == 1) { - numSides = 2; - } - if ( numSides ) { - for (int i=0; igetSideCount(); + if (cellTopo_->getDimension() == 1) { + numSides = 2; + } + if ( numSides ) { + for (int i=0; i Date: Mon, 27 Apr 2020 10:13:37 -0600 Subject: [PATCH 08/19] Updated assembler and dof manager to work with C0 basis. --- .../example/PDE-OPT/TOOLS/assembler_def.hpp | 2 +- .../rol/example/PDE-OPT/TOOLS/dofmanager.hpp | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/packages/rol/example/PDE-OPT/TOOLS/assembler_def.hpp b/packages/rol/example/PDE-OPT/TOOLS/assembler_def.hpp index 7604e8ddf964..c3da6cf0625e 100644 --- a/packages/rol/example/PDE-OPT/TOOLS/assembler_def.hpp +++ b/packages/rol/example/PDE-OPT/TOOLS/assembler_def.hpp @@ -2545,7 +2545,7 @@ void Assembler::setParallelStructure(Teuchos::ParameterList &parlist, matR1Graph_ = matJ1Graph_; matH11Graph_ = matJ1Graph_; - matJ2Graph_ = ROL::makePtr>(myUniqueStateMap_, maxEntriesPerRow2); + matJ2Graph_ = ROL::makePtr>(myUniqueStateMap_, std::max(maxEntriesPerRow1,maxEntriesPerRow2)); for (int i=0; iinsertGlobalIndices(GO(cellDofs1(myCellIds_[i],j)), diff --git a/packages/rol/example/PDE-OPT/TOOLS/dofmanager.hpp b/packages/rol/example/PDE-OPT/TOOLS/dofmanager.hpp index 3903bdf15c85..9208fa2331cd 100644 --- a/packages/rol/example/PDE-OPT/TOOLS/dofmanager.hpp +++ b/packages/rol/example/PDE-OPT/TOOLS/dofmanager.hpp @@ -537,7 +537,11 @@ class DofManager { for (int f=0; fgetDegree(); if (cellDim_ == 1) { - if (basisDeg == 1) { + if (basisDeg == 0) { + map2IP[f] = {0}; + map2FP[f] = {0}; + } + else if (basisDeg == 1) { map2IP[f] = {0, 1}; map2FP[f] = {0, 1}; } @@ -551,7 +555,11 @@ class DofManager { } } else if (cellDim_ == 2) { - if (basisDeg == 1) { + if (basisDeg == 0) { + map2IP[f] = {0}; + map2FP[f] = {0}; + } + else if (basisDeg == 1) { map2IP[f].resize(nv); map2FP[f].resize(nv); for (int i = 0; i < nv; ++i) { @@ -578,7 +586,11 @@ class DofManager { } } else if (cellDim_ == 3) { - if (basisDeg == 1) { + if (basisDeg == 0) { + map2IP[f] = {0}; + map2FP[f] = {0}; + } + else if (basisDeg == 1) { map2IP[f] = {0, 1, 2, 3, 4, 5, 6, 7}; map2FP[f] = {0, 1, 2, 3, 4, 5, 6, 7}; } From 8dbbe68cc7bffb1cf67ce6a7c9e5841542196600 Mon Sep 17 00:00:00 2001 From: Evan Harvey Date: Thu, 18 Jun 2020 07:24:00 -0600 Subject: [PATCH 09/19] atdm/utils: Cleanup for unit testing --- .../unit_tests/get_known_system_info_unit_test.sh | 13 ++++++++----- cmake/std/atdm/utils/get_known_system_info.sh | 15 ++++++--------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/cmake/std/atdm/test/unit_tests/get_known_system_info_unit_test.sh b/cmake/std/atdm/test/unit_tests/get_known_system_info_unit_test.sh index 79e5e7da084f..580bb899b4df 100755 --- a/cmake/std/atdm/test/unit_tests/get_known_system_info_unit_test.sh +++ b/cmake/std/atdm/test/unit_tests/get_known_system_info_unit_test.sh @@ -16,15 +16,18 @@ fi # Test atdm get_known_system_info script # test_atdm_get_known_system_info() { - # TODO: D.2 needs to be tested by setting these values: + # Tweak these values for testing on other platforms + # TODO: Test branch D.2 in get_known_system_info.sh SNLSYSTEM= SEMS_PLATFORM= ATDM_SYSTEM_NAME= SNLCLUSTER= - - # Get the good ATDM_KNOWN_SYSTEM_NAMES_LIST - ATDM_CONFIG_BUILD_NAME=unit_test + HOST= + ATDM_CONFIG_SEMS_GET_PLATFORM=/fake/path/for/unit/testing/ + ATDM_CONFIG_GET_KNOW_SYSTEM_INFO_REAL_HOSTNAME_OVERRIDE_FOR_UNIT_TESTING=unit_test + ATDM_CONFIG_BUILD_NAME=$ATDM_CONFIG_GET_KNOW_SYSTEM_INFO_REAL_HOSTNAME_OVERRIDE_FOR_UNIT_TESTING ATDM_CONFIG_DISABLE_WARNINGS=ON + # Populate ATDM_KNOWN_SYSTEM_NAMES_LIST source ${ATDM_UTIL_SCRIPT_GET_KNOWN_SYSTEM_INFO} # Check that all known system names pass @@ -55,7 +58,7 @@ test_atdm_get_known_system_info() { SNLSYSTEM=cts1 RET=$(source ${ATDM_UTIL_SCRIPT_GET_KNOWN_SYSTEM_INFO}) assertEquals "Hostname '$ATDM_CONFIG_BUILD_NAME' matches known ATDM host '$ATDM_CONFIG_BUILD_NAME' and system 'cts1empire'" "$RET" - + # Ensure that cts1 is still selected when it's in the build name ATDM_CONFIG_BUILD_NAME=cts1-default ATDM_CONFIG_GET_KNOW_SYSTEM_INFO_REAL_HOSTNAME_OVERRIDE_FOR_UNIT_TESTING=$ATDM_CONFIG_BUILD_NAME diff --git a/cmake/std/atdm/utils/get_known_system_info.sh b/cmake/std/atdm/utils/get_known_system_info.sh index 9d8457e4feed..3cb28b2c150f 100644 --- a/cmake/std/atdm/utils/get_known_system_info.sh +++ b/cmake/std/atdm/utils/get_known_system_info.sh @@ -30,9 +30,6 @@ fi source ${ATDM_CONFIG_SCRIPT_DIR}/utils/get_system_info_utils.sh -realHostname=`hostname` -# TODO: come up with a better way to unit test this code. -unset $ATDM_CONFIG_HOSTNAME_OVERRIDE if [[ "${ATDM_CONFIG_GET_KNOW_SYSTEM_INFO_REAL_HOSTNAME_OVERRIDE_FOR_UNIT_TESTING}" ]] ; then if [[ -z $ATDM_CONFIG_DISABLE_WARNINGS ]]; then echo @@ -45,7 +42,9 @@ if [[ "${ATDM_CONFIG_GET_KNOW_SYSTEM_INFO_REAL_HOSTNAME_OVERRIDE_FOR_UNIT_TESTIN echo fi realHostname=${ATDM_CONFIG_GET_KNOW_SYSTEM_INFO_REAL_HOSTNAME_OVERRIDE_FOR_UNIT_TESTING} - ATDM_CONFIG_HOSTNAME_OVERRIDE=true +else + realHostname=`hostname` + ATDM_CONFIG_SEMS_GET_PLATFORM=/projects/sems/modulefiles/utils/get-platform fi #echo "Hostname = '$realHostname'" @@ -141,8 +140,7 @@ fi # # ATS-1 systems -if [[ $realHostname == "mutrino"* || - $HOST == "mutrino"* && -z $ATDM_CONFIG_HOSTNAME_OVERRIDE ]] ; then +if [[ $realHostname == "mutrino"* || $HOST == "mutrino"* ]] ; then systemNameTypeMatchedList+=(ats1) systemNameTypeMatchedListHostNames[ats1]=mutrino systemNameTypeMatchedList+=(mutrino) @@ -182,9 +180,8 @@ elif [[ "${SNLSYSTEM}" == "astra" || \ "${SNLSYSTEM}" == "vortex" ]] ; then echo "Don't call get-platform on 'astra' systems" > /dev/null # Above logic avoids an 'ERROR: Unrecognized cluster ' on these systems -elif [[ -f /projects/sems/modulefiles/utils/get-platform && - -z $ATDM_CONFIG_HOSTNAME_OVERRIDE ]] ; then - ATDM_SYSTEM_NAME=`source /projects/sems/modulefiles/utils/get-platform` +elif [[ -f $ATDM_CONFIG_SEMS_GET_PLATFORM ]] ; then + ATDM_SYSTEM_NAME=`source $ATDM_CONFIG_SEMS_GET_PLATFORM` if [[ $ATDM_SYSTEM_NAME == "rhel6-x86_64" ]] ; then systemNameTypeMatchedList+=(sems-rhel6) systemNameTypeMatchedListHostNames[sems-rhel6]=sems-rhel6 From c419d1fca0d544c1a4810be757ae984af3e16b0e Mon Sep 17 00:00:00 2001 From: Evan Harvey Date: Thu, 18 Jun 2020 08:24:55 -0600 Subject: [PATCH 10/19] ATDM/van1-tx2: Add arm-20.1 build matching and drivers (ATDV-369) - Added drivers for arm-20.1. - Updated van1-tx2 supported builds. - Added unit tests for arm-20.1. - Fixed unit test asserts. --- ...rm-20.1_openmpi-4.0.3_openmp_static_dbg.sh | 9 ++++++ ...rm-20.1_openmpi-4.0.3_openmp_static_opt.sh | 9 ++++++ .../std/atdm/van1-tx2/all_supported_builds.sh | 2 ++ cmake/std/atdm/van1-tx2/custom_builds.sh | 9 +++++- .../atdm/van1-tx2/custom_builds_unit_tests.sh | 30 ++++++++++++++----- 5 files changed, 50 insertions(+), 9 deletions(-) create mode 100755 cmake/ctest/drivers/atdm/van1-tx2/drivers/Trilinos-atdm-van1-tx2_arm-20.1_openmpi-4.0.3_openmp_static_dbg.sh create mode 100755 cmake/ctest/drivers/atdm/van1-tx2/drivers/Trilinos-atdm-van1-tx2_arm-20.1_openmpi-4.0.3_openmp_static_opt.sh diff --git a/cmake/ctest/drivers/atdm/van1-tx2/drivers/Trilinos-atdm-van1-tx2_arm-20.1_openmpi-4.0.3_openmp_static_dbg.sh b/cmake/ctest/drivers/atdm/van1-tx2/drivers/Trilinos-atdm-van1-tx2_arm-20.1_openmpi-4.0.3_openmp_static_dbg.sh new file mode 100755 index 000000000000..e353f6481af6 --- /dev/null +++ b/cmake/ctest/drivers/atdm/van1-tx2/drivers/Trilinos-atdm-van1-tx2_arm-20.1_openmpi-4.0.3_openmp_static_dbg.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +#export SALLOC_CTEST_TIME_LIMIT_MINUTES=1:00:00 + +if [ "${Trilinos_TRACK}" == "" ] ; then + export Trilinos_TRACK=Experimental +fi + +$WORKSPACE/Trilinos/cmake/ctest/drivers/atdm/van1-tx2/local-driver.sh diff --git a/cmake/ctest/drivers/atdm/van1-tx2/drivers/Trilinos-atdm-van1-tx2_arm-20.1_openmpi-4.0.3_openmp_static_opt.sh b/cmake/ctest/drivers/atdm/van1-tx2/drivers/Trilinos-atdm-van1-tx2_arm-20.1_openmpi-4.0.3_openmp_static_opt.sh new file mode 100755 index 000000000000..e353f6481af6 --- /dev/null +++ b/cmake/ctest/drivers/atdm/van1-tx2/drivers/Trilinos-atdm-van1-tx2_arm-20.1_openmpi-4.0.3_openmp_static_opt.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +#export SALLOC_CTEST_TIME_LIMIT_MINUTES=1:00:00 + +if [ "${Trilinos_TRACK}" == "" ] ; then + export Trilinos_TRACK=Experimental +fi + +$WORKSPACE/Trilinos/cmake/ctest/drivers/atdm/van1-tx2/local-driver.sh diff --git a/cmake/std/atdm/van1-tx2/all_supported_builds.sh b/cmake/std/atdm/van1-tx2/all_supported_builds.sh index 729823033923..3b28d2d856ae 100644 --- a/cmake/std/atdm/van1-tx2/all_supported_builds.sh +++ b/cmake/std/atdm/van1-tx2/all_supported_builds.sh @@ -5,4 +5,6 @@ export ATDM_CONFIG_CTEST_S_BUILD_NAME_PREFIX=Trilinos-atdm- export ATDM_CONFIG_ALL_SUPPORTED_BUILDS=( van1-tx2_arm-20.0_openmpi-4.0.2_openmp_static_opt van1-tx2_arm-20.0_openmpi-4.0.2_openmp_static_dbg + van1-tx2_arm-20.1_openmpi-4.0.3_openmp_static_opt + van1-tx2_arm-20.1_openmpi-4.0.3_openmp_static_dbg ) diff --git a/cmake/std/atdm/van1-tx2/custom_builds.sh b/cmake/std/atdm/van1-tx2/custom_builds.sh index be98bc3ded0d..d864690c5e0c 100644 --- a/cmake/std/atdm/van1-tx2/custom_builds.sh +++ b/cmake/std/atdm/van1-tx2/custom_builds.sh @@ -2,7 +2,14 @@ # Custom builds for van1-tx2 env # +# Try matching against arm-20.1 before arm-20 or arm if atdm_match_any_buildname_keyword \ + arm-20.1-openmpi-4.0.3 \ + arm-20.1_openmpi-4.0.3 \ + arm-20.1 \ + ; then + export ATDM_CONFIG_COMPILER=ARM-20.1_OPENMPI-4.0.3 +elif atdm_match_any_buildname_keyword \ arm-20.0-openmpi-4.0.2 \ arm-20.0_openmpi-4.0.2 \ arm-20.0 \ @@ -11,7 +18,6 @@ if atdm_match_any_buildname_keyword \ default \ ; then export ATDM_CONFIG_COMPILER=ARM-20.0_OPENMPI-4.0.2 - else echo echo "***" @@ -20,6 +26,7 @@ else echo "*** Supported compilers include:" echo "***" echo "**** arm-20.0-openmpi-4.0.2 (arm-20.0, default)" + echo "**** arm-20.1-openmpi-4.0.3 (arm-20.1)" echo "***" return diff --git a/cmake/std/atdm/van1-tx2/custom_builds_unit_tests.sh b/cmake/std/atdm/van1-tx2/custom_builds_unit_tests.sh index 78fb6def891b..14d15d31817f 100755 --- a/cmake/std/atdm/van1-tx2/custom_builds_unit_tests.sh +++ b/cmake/std/atdm/van1-tx2/custom_builds_unit_tests.sh @@ -12,38 +12,52 @@ testAll() { ATDM_CONFIG_SYSTEM_DIR=${ATDM_CONFIG_SCRIPT_DIR}/van1-tx2 + #### TEST ARM-20.0 #### ATDM_CONFIG_BUILD_NAME=default . ${ATDM_CONFIG_SCRIPT_DIR}/utils/set_build_options.sh - ${_ASSERT_EQUALS_} ${ATDM_CONFIG_COMPILER} ARM-20.0_OPENMPI-4.0.2 + ${_ASSERT_EQUALS_} ARM-20.0_OPENMPI-4.0.2 ${ATDM_CONFIG_COMPILER} ATDM_CONFIG_BUILD_NAME=before-arm-20.0-openmpi-4.0.2_after . ${ATDM_CONFIG_SCRIPT_DIR}/utils/set_build_options.sh - ${_ASSERT_EQUALS_} ${ATDM_CONFIG_COMPILER} ARM-20.0_OPENMPI-4.0.2 + ${_ASSERT_EQUALS_} ARM-20.0_OPENMPI-4.0.2 ${ATDM_CONFIG_COMPILER} ATDM_CONFIG_BUILD_NAME=before-arm-20.0_openmpi-4.0.2-after . ${ATDM_CONFIG_SCRIPT_DIR}/utils/set_build_options.sh - ${_ASSERT_EQUALS_} ${ATDM_CONFIG_COMPILER} ARM-20.0_OPENMPI-4.0.2 + ${_ASSERT_EQUALS_} ARM-20.0_OPENMPI-4.0.2 ${ATDM_CONFIG_COMPILER} ATDM_CONFIG_BUILD_NAME=before_arm-20.0-after . ${ATDM_CONFIG_SCRIPT_DIR}/utils/set_build_options.sh - ${_ASSERT_EQUALS_} ${ATDM_CONFIG_COMPILER} ARM-20.0_OPENMPI-4.0.2 + ${_ASSERT_EQUALS_} ARM-20.0_OPENMPI-4.0.2 ${ATDM_CONFIG_COMPILER} ATDM_CONFIG_BUILD_NAME=before_arm-20-afert . ${ATDM_CONFIG_SCRIPT_DIR}/utils/set_build_options.sh - ${_ASSERT_EQUALS_} ${ATDM_CONFIG_COMPILER} ARM-20.0_OPENMPI-4.0.2 + ${_ASSERT_EQUALS_} ARM-20.0_OPENMPI-4.0.2 ${ATDM_CONFIG_COMPILER} ATDM_CONFIG_BUILD_NAME=before-arm-after . ${ATDM_CONFIG_SCRIPT_DIR}/utils/set_build_options.sh - ${_ASSERT_EQUALS_} ${ATDM_CONFIG_COMPILER} ARM-20.0_OPENMPI-4.0.2 + ${_ASSERT_EQUALS_} ARM-20.0_OPENMPI-4.0.2 ${ATDM_CONFIG_COMPILER} ATDM_CONFIG_BUILD_NAME=BEFORE-ARM-AFTER . ${ATDM_CONFIG_SCRIPT_DIR}/utils/set_build_options.sh - ${_ASSERT_EQUALS_} ${ATDM_CONFIG_COMPILER} ARM-20.0_OPENMPI-4.0.2 + ${_ASSERT_EQUALS_} ARM-20.0_OPENMPI-4.0.2 ${ATDM_CONFIG_COMPILER} # Make sure 'arms' does not match 'arm' ATDM_CONFIG_BUILD_NAME=anything-arms . ${ATDM_CONFIG_SCRIPT_DIR}/utils/set_build_options.sh - ${_ASSERT_EQUALS_} ${ATDM_CONFIG_COMPILER} DEFAULT + ${_ASSERT_EQUALS_} DEFAULT ${ATDM_CONFIG_COMPILER} + + #### Test ARM-20.1 #### + ATDM_CONFIG_BUILD_NAME=before-arm-20.1-openmpi-4.0.3_after + . ${ATDM_CONFIG_SCRIPT_DIR}/utils/set_build_options.sh + ${_ASSERT_EQUALS_} ARM-20.1_OPENMPI-4.0.3 ${ATDM_CONFIG_COMPILER} + + ATDM_CONFIG_BUILD_NAME=before-arm-20.1_openmpi-4.0.3-after + . ${ATDM_CONFIG_SCRIPT_DIR}/utils/set_build_options.sh + ${_ASSERT_EQUALS_} ARM-20.1_OPENMPI-4.0.3 ${ATDM_CONFIG_COMPILER} + + ATDM_CONFIG_BUILD_NAME=before_arm-20.1-after + . ${ATDM_CONFIG_SCRIPT_DIR}/utils/set_build_options.sh + ${_ASSERT_EQUALS_} ARM-20.1_OPENMPI-4.0.3 ${ATDM_CONFIG_COMPILER} } From 86fc10045e6e5258ad0a6788de4a528473b37897 Mon Sep 17 00:00:00 2001 From: Evan Harvey Date: Thu, 18 Jun 2020 09:01:23 -0600 Subject: [PATCH 11/19] ATDM/van1-tx2: Updated environment to support arm-20.1 (ATDM-369) --- cmake/std/atdm/van1-tx2/environment.sh | 47 +++++++++++++++----------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/cmake/std/atdm/van1-tx2/environment.sh b/cmake/std/atdm/van1-tx2/environment.sh index 7266f11c35a5..107c2ebdb04b 100755 --- a/cmake/std/atdm/van1-tx2/environment.sh +++ b/cmake/std/atdm/van1-tx2/environment.sh @@ -67,6 +67,33 @@ if [[ "$ATDM_CONFIG_COMPILER" == "ARM-20.0_OPENMPI-4.0.2" ]]; then export LAPACK_ROOT="$ARMPL_LIB" export ATDM_CONFIG_LAPACK_LIBS="-L${LAPACK_ROOT};-larmpl_ilp64_mp" export ATDM_CONFIG_BLAS_LIBS="-L${LAPACK_ROOT};-larmpl_ilp64_mp" + + # We'll use TPL_ROOT for consistency across ATDM environments + export MPI_ROOT=${MPI_DIR} + export BLAS_ROOT=${ARMPL_DIR} + export LAPACK_ROOT=${ARMPL_DIR} + export HDF5_ROOT=${HDF5_DIR} + export NETCDF_ROOT=${NETCDF_DIR} + export PNETCDF_ROOT=${PNETCDF_DIR} + export ZLIB_ROOT=${ZLIB_DIR} + export CGNS_ROOT=${CGNS_DIR} + export BOOST_ROOT=${BOOST_DIR} + +elif [[ "$ATDM_CONFIG_COMPILER" == "ARM-20.1_OPENMPI-4.0.3" ]]; then + module load sparc-dev/arm-20.1_openmpi-4.0.3 + + # We'll use TPL_ROOT for consistency across ATDM environments + export MPI_ROOT=${MPI_DIR} + export BLAS_ROOT=${ARMPL_DIR} + export HDF5_ROOT=${HDF5_DIR} + export NETCDF_ROOT=${NETCDF_DIR} + export PNETCDF_ROOT=${PNETCDF_DIR} + export ZLIB_ROOT=${ZLIB_DIR} + export CGNS_ROOT=${CGNS_DIR} + export METIS_ROOT=${METIS_DIR} + export PARMETIS_ROOT=${PARMETIS_DIR} + export SUPERLUDIST_ROOT=${SUPERLU_DIST_DIR} + export BINUTILS_ROOT=${BINUTILS_DIR} else echo echo "***" @@ -80,26 +107,6 @@ module load ninja module load cmake/3.12.2 module load git/2.19.2 -# -# Set up for the TPLs -# - -# Common TPL paths, we'll use TPL_ROOT for consistency across ATDM -# environments -export MPI_ROOT=${MPI_DIR} -export BLAS_ROOT=${ARMPL_DIR} -export LAPACK_ROOT=${ARMPL_DIR} -export HDF5_ROOT=${HDF5_DIR} -export NETCDF_ROOT=${NETCDF_DIR} -export PNETCDF_ROOT=${PNETCDF_DIR} -export ZLIB_ROOT=${ZLIB_DIR} -export CGNS_ROOT=${CGNS_DIR} -export BOOST_ROOT=${BOOST_DIR} -export METIS_ROOT=${METIS_DIR} -export PARMETIS_ROOT=${PARMETIS_DIR} -export SUPERLUDIST_ROOT=${SUPERLU_DIST_DIR} -export BINUTILS_ROOT=${BINUTILS_DIR} - export ATDM_CONFIG_USE_HWLOC=OFF export HWLOC_LIBS= From f9a5c2fcb20e6743c10ae0984ae36dfa188d9613 Mon Sep 17 00:00:00 2001 From: Evan Harvey Date: Thu, 18 Jun 2020 18:35:33 -0600 Subject: [PATCH 12/19] ATDM/van1-tx2: Handle OMP_XXX vars silence git reload warning (ATDV-369) --- cmake/std/atdm/van1-tx2/environment.sh | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/cmake/std/atdm/van1-tx2/environment.sh b/cmake/std/atdm/van1-tx2/environment.sh index 107c2ebdb04b..a3629e515bf1 100755 --- a/cmake/std/atdm/van1-tx2/environment.sh +++ b/cmake/std/atdm/van1-tx2/environment.sh @@ -35,15 +35,6 @@ if [[ "${ATDM_CONFIG_BUILD_TYPE}" == "DEBUG" ]] ; then # Reducing this is to avoid that. See CDOFA-117. fi -if [[ "$ATDM_CONFIG_NODE_TYPE" == "OPENMP" ]] ; then - export ATDM_CONFIG_CTEST_PARALLEL_LEVEL=16 - export OMP_NUM_THREADS=2 -else - export ATDM_CONFIG_CTEST_PARALLEL_LEVEL=32 - export OMP_PROC_BIND=FALSE - export OMP_NUM_THREADS=1 -fi - # # Load the modules # @@ -79,9 +70,15 @@ if [[ "$ATDM_CONFIG_COMPILER" == "ARM-20.0_OPENMPI-4.0.2" ]]; then export CGNS_ROOT=${CGNS_DIR} export BOOST_ROOT=${BOOST_DIR} + module load git/2.19.2 elif [[ "$ATDM_CONFIG_COMPILER" == "ARM-20.1_OPENMPI-4.0.3" ]]; then module load sparc-dev/arm-20.1_openmpi-4.0.3 + if [ "$ATDM_CONFIG_NODE_TYPE" == "OPENMP" ] ; then + unset OMP_PLACES + unset OMP_PROC_BIND + fi + # We'll use TPL_ROOT for consistency across ATDM environments export MPI_ROOT=${MPI_DIR} export BLAS_ROOT=${ARMPL_DIR} @@ -102,10 +99,18 @@ else return fi +if [[ "$ATDM_CONFIG_NODE_TYPE" == "OPENMP" ]] ; then + export ATDM_CONFIG_CTEST_PARALLEL_LEVEL=16 + export OMP_NUM_THREADS=2 +else + export ATDM_CONFIG_CTEST_PARALLEL_LEVEL=32 + export OMP_PROC_BIND=FALSE + export OMP_NUM_THREADS=1 +fi + # Common modules for all builds module load ninja module load cmake/3.12.2 -module load git/2.19.2 export ATDM_CONFIG_USE_HWLOC=OFF export HWLOC_LIBS= From 18010e3269bf79c91eb1f24379171a94d0edef03 Mon Sep 17 00:00:00 2001 From: Evan Harvey Date: Thu, 18 Jun 2020 19:00:00 -0600 Subject: [PATCH 13/19] ATDM/van1-tx2: Add back metis, parmetis, superludist, and binutils exports (ATDV-369) --- cmake/std/atdm/van1-tx2/environment.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cmake/std/atdm/van1-tx2/environment.sh b/cmake/std/atdm/van1-tx2/environment.sh index a3629e515bf1..46687b5e0951 100755 --- a/cmake/std/atdm/van1-tx2/environment.sh +++ b/cmake/std/atdm/van1-tx2/environment.sh @@ -69,6 +69,10 @@ if [[ "$ATDM_CONFIG_COMPILER" == "ARM-20.0_OPENMPI-4.0.2" ]]; then export ZLIB_ROOT=${ZLIB_DIR} export CGNS_ROOT=${CGNS_DIR} export BOOST_ROOT=${BOOST_DIR} + export METIS_ROOT=${METIS_DIR} + export PARMETIS_ROOT=${PARMETIS_DIR} + export SUPERLUDIST_ROOT=${SUPERLU_DIST_DIR} + export BINUTILS_ROOT=${BINUTILS_DIR} module load git/2.19.2 elif [[ "$ATDM_CONFIG_COMPILER" == "ARM-20.1_OPENMPI-4.0.3" ]]; then From 830a683e877200756fc430e9d7930a1a38a04706 Mon Sep 17 00:00:00 2001 From: Evan Harvey Date: Mon, 22 Jun 2020 10:23:08 -0600 Subject: [PATCH 14/19] ATDM/van1-tx2: Promote arm-20.1 to Specialized group (ATDV-369) --- ...os-atdm-van1-tx2_arm-20.1_openmpi-4.0.3_openmp_static_dbg.sh | 2 +- ...os-atdm-van1-tx2_arm-20.1_openmpi-4.0.3_openmp_static_opt.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/ctest/drivers/atdm/van1-tx2/drivers/Trilinos-atdm-van1-tx2_arm-20.1_openmpi-4.0.3_openmp_static_dbg.sh b/cmake/ctest/drivers/atdm/van1-tx2/drivers/Trilinos-atdm-van1-tx2_arm-20.1_openmpi-4.0.3_openmp_static_dbg.sh index e353f6481af6..eb51b2f6586a 100755 --- a/cmake/ctest/drivers/atdm/van1-tx2/drivers/Trilinos-atdm-van1-tx2_arm-20.1_openmpi-4.0.3_openmp_static_dbg.sh +++ b/cmake/ctest/drivers/atdm/van1-tx2/drivers/Trilinos-atdm-van1-tx2_arm-20.1_openmpi-4.0.3_openmp_static_dbg.sh @@ -3,7 +3,7 @@ #export SALLOC_CTEST_TIME_LIMIT_MINUTES=1:00:00 if [ "${Trilinos_TRACK}" == "" ] ; then - export Trilinos_TRACK=Experimental + export Trilinos_TRACK=Specialized fi $WORKSPACE/Trilinos/cmake/ctest/drivers/atdm/van1-tx2/local-driver.sh diff --git a/cmake/ctest/drivers/atdm/van1-tx2/drivers/Trilinos-atdm-van1-tx2_arm-20.1_openmpi-4.0.3_openmp_static_opt.sh b/cmake/ctest/drivers/atdm/van1-tx2/drivers/Trilinos-atdm-van1-tx2_arm-20.1_openmpi-4.0.3_openmp_static_opt.sh index e353f6481af6..eb51b2f6586a 100755 --- a/cmake/ctest/drivers/atdm/van1-tx2/drivers/Trilinos-atdm-van1-tx2_arm-20.1_openmpi-4.0.3_openmp_static_opt.sh +++ b/cmake/ctest/drivers/atdm/van1-tx2/drivers/Trilinos-atdm-van1-tx2_arm-20.1_openmpi-4.0.3_openmp_static_opt.sh @@ -3,7 +3,7 @@ #export SALLOC_CTEST_TIME_LIMIT_MINUTES=1:00:00 if [ "${Trilinos_TRACK}" == "" ] ; then - export Trilinos_TRACK=Experimental + export Trilinos_TRACK=Specialized fi $WORKSPACE/Trilinos/cmake/ctest/drivers/atdm/van1-tx2/local-driver.sh From e1d4af92550d71c2ffa41a6154f660b5d52fad39 Mon Sep 17 00:00:00 2001 From: Paul Wolfenbarger Date: Mon, 22 Jun 2020 13:07:47 -0600 Subject: [PATCH 15/19] This just casts an unsigned to signed to avoid a compiler assert in a debug build. Not sure how this was missed this long - found when setting up a debug PR build. --- packages/pamgen/rtcompiler/Registrar.C | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pamgen/rtcompiler/Registrar.C b/packages/pamgen/rtcompiler/Registrar.C index 4f07f5c9b7d5..a6b5521454c5 100644 --- a/packages/pamgen/rtcompiler/Registrar.C +++ b/packages/pamgen/rtcompiler/Registrar.C @@ -556,7 +556,7 @@ double Readline::execute(Value** args) string line; if (getline(curr_file, line)) { - assert(args[1]->getSize() > line.size()); // buffer needs to be big enough + assert(args[1]->getSize() > int(line.size())); // buffer needs to be big enough for (size_t i = 0; i < line.size(); ++i) { args[1]->setArrayValue(line[i], i); } From 68c8734ceb20b1280c3e8abf25ca112dc1c05966 Mon Sep 17 00:00:00 2001 From: Denis Ridzal Date: Fri, 26 Jun 2020 13:25:10 -0600 Subject: [PATCH 16/19] Updating the Helmholtz KKT example with test scripts. --- .../example/PDE-OPT/published/CMakeLists.txt | 1 + .../Helmholtz_KouriRidzal2019/sample_script.m | 81 - .../CMakeLists.txt | 16 +- .../README.md | 27 + .../example_01.cpp | 0 .../imshift.m | 49 + .../input_ex01.xml | 0 .../inputs/input_mesh0_wave5_damp0_imp0.xml | 33 + .../inputs/input_mesh0_wave5_damp0_imp1.xml | 33 + .../inputs/input_mesh0_wave5_damp1_imp0.xml | 33 + .../inputs/input_mesh0_wave5_damp1_imp1.xml | 33 + .../inputs/input_mesh1_wave10_damp0_imp0.xml | 33 + .../inputs/input_mesh1_wave10_damp0_imp1.xml | 33 + .../inputs/input_mesh1_wave10_damp1_imp0.xml | 33 + .../inputs/input_mesh1_wave10_damp1_imp1.xml | 33 + .../inputs/input_mesh1_wave5_damp0_imp0.xml | 33 + .../inputs/input_mesh1_wave5_damp0_imp1.xml | 33 + .../inputs/input_mesh1_wave5_damp1_imp0.xml | 33 + .../inputs/input_mesh1_wave5_damp1_imp1.xml | 33 + .../inputs/input_mesh2_wave10_damp0_imp0.xml | 33 + .../inputs/input_mesh2_wave10_damp0_imp1.xml | 33 + .../inputs/input_mesh2_wave10_damp1_imp0.xml | 33 + .../inputs/input_mesh2_wave10_damp1_imp1.xml | 33 + .../inputs/input_mesh2_wave20_damp0_imp0.xml | 33 + .../inputs/input_mesh2_wave20_damp0_imp1.xml | 33 + .../inputs/input_mesh2_wave20_damp1_imp0.xml | 33 + .../inputs/input_mesh2_wave20_damp1_imp1.xml | 33 + .../inputs/input_mesh2_wave5_damp0_imp0.xml | 33 + .../inputs/input_mesh2_wave5_damp0_imp1.xml | 33 + .../inputs/input_mesh2_wave5_damp1_imp0.xml | 33 + .../inputs/input_mesh2_wave5_damp1_imp1.xml | 33 + .../inputs/input_mesh3_wave10_damp0_imp0.xml | 33 + .../inputs/input_mesh3_wave10_damp0_imp1.xml | 33 + .../inputs/input_mesh3_wave10_damp1_imp0.xml | 33 + .../inputs/input_mesh3_wave10_damp1_imp1.xml | 33 + .../inputs/input_mesh3_wave20_damp0_imp0.xml | 33 + .../inputs/input_mesh3_wave20_damp0_imp1.xml | 33 + .../inputs/input_mesh3_wave20_damp1_imp0.xml | 33 + .../inputs/input_mesh3_wave20_damp1_imp1.xml | 33 + .../inputs/input_mesh3_wave40_damp0_imp0.xml | 33 + .../inputs/input_mesh3_wave40_damp0_imp1.xml | 33 + .../inputs/input_mesh3_wave40_damp1_imp0.xml | 33 + .../inputs/input_mesh3_wave40_damp1_imp1.xml | 33 + .../inputs/input_mesh3_wave5_damp0_imp0.xml | 33 + .../inputs/input_mesh3_wave5_damp0_imp1.xml | 33 + .../inputs/input_mesh3_wave5_damp1_imp0.xml | 33 + .../inputs/input_mesh3_wave5_damp1_imp1.xml | 33 + .../inputs/input_mesh4_wave10_damp0_imp0.xml | 33 + .../inputs/input_mesh4_wave10_damp0_imp1.xml | 33 + .../inputs/input_mesh4_wave10_damp1_imp0.xml | 33 + .../inputs/input_mesh4_wave10_damp1_imp1.xml | 33 + .../inputs/input_mesh4_wave20_damp0_imp0.xml | 33 + .../inputs/input_mesh4_wave20_damp0_imp1.xml | 33 + .../inputs/input_mesh4_wave20_damp1_imp0.xml | 33 + .../inputs/input_mesh4_wave20_damp1_imp1.xml | 33 + .../inputs/input_mesh4_wave40_damp0_imp0.xml | 33 + .../inputs/input_mesh4_wave40_damp0_imp1.xml | 33 + .../inputs/input_mesh4_wave40_damp1_imp0.xml | 33 + .../inputs/input_mesh4_wave40_damp1_imp1.xml | 33 + .../inputs/input_mesh4_wave5_damp0_imp0.xml | 33 + .../inputs/input_mesh4_wave5_damp0_imp1.xml | 33 + .../inputs/input_mesh4_wave5_damp1_imp0.xml | 33 + .../inputs/input_mesh4_wave5_damp1_imp1.xml | 33 + .../inputs/input_mesh4_wave80_damp0_imp0.xml | 33 + .../inputs/input_mesh4_wave80_damp0_imp1.xml | 33 + .../inputs/input_mesh4_wave80_damp1_imp0.xml | 33 + .../inputs/input_mesh4_wave80_damp1_imp1.xml | 33 + .../mesh/README.md | 16 + .../mesh/helmholtz-mesh-0.e | Bin .../mesh/helmholtz-mesh-0.txt | 13826 ++++ .../mesh/helmholtz-mesh-1.e | Bin 0 -> 1317440 bytes .../mesh/helmholtz-mesh-1.txt | 56140 ++++++++++++++++ .../mesh/helmholtz-mesh.jou | 0 .../obj_helmholtz.hpp | 0 .../pde_helmholtz_imag.hpp | 0 .../pde_helmholtz_real.hpp | 0 .../Helmholtz_KouriRidzalTuminaro2020/prdw.m | 48 + .../results/README.md | 1 + .../Helmholtz_KouriRidzalTuminaro2020/run.m | 257 + .../Helmholtz_KouriRidzalTuminaro2020/study.m | 38 + 80 files changed, 72397 insertions(+), 83 deletions(-) delete mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzal2019/sample_script.m rename packages/rol/example/PDE-OPT/published/{Helmholtz_KouriRidzal2019 => Helmholtz_KouriRidzalTuminaro2020}/CMakeLists.txt (64%) create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/README.md rename packages/rol/example/PDE-OPT/published/{Helmholtz_KouriRidzal2019 => Helmholtz_KouriRidzalTuminaro2020}/example_01.cpp (100%) create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/imshift.m rename packages/rol/example/PDE-OPT/published/{Helmholtz_KouriRidzal2019 => Helmholtz_KouriRidzalTuminaro2020}/input_ex01.xml (100%) create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh0_wave5_damp0_imp0.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh0_wave5_damp0_imp1.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh0_wave5_damp1_imp0.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh0_wave5_damp1_imp1.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh1_wave10_damp0_imp0.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh1_wave10_damp0_imp1.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh1_wave10_damp1_imp0.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh1_wave10_damp1_imp1.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh1_wave5_damp0_imp0.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh1_wave5_damp0_imp1.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh1_wave5_damp1_imp0.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh1_wave5_damp1_imp1.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave10_damp0_imp0.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave10_damp0_imp1.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave10_damp1_imp0.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave10_damp1_imp1.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave20_damp0_imp0.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave20_damp0_imp1.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave20_damp1_imp0.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave20_damp1_imp1.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave5_damp0_imp0.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave5_damp0_imp1.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave5_damp1_imp0.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave5_damp1_imp1.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave10_damp0_imp0.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave10_damp0_imp1.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave10_damp1_imp0.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave10_damp1_imp1.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave20_damp0_imp0.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave20_damp0_imp1.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave20_damp1_imp0.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave20_damp1_imp1.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave40_damp0_imp0.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave40_damp0_imp1.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave40_damp1_imp0.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave40_damp1_imp1.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave5_damp0_imp0.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave5_damp0_imp1.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave5_damp1_imp0.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave5_damp1_imp1.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave10_damp0_imp0.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave10_damp0_imp1.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave10_damp1_imp0.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave10_damp1_imp1.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave20_damp0_imp0.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave20_damp0_imp1.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave20_damp1_imp0.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave20_damp1_imp1.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave40_damp0_imp0.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave40_damp0_imp1.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave40_damp1_imp0.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave40_damp1_imp1.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave5_damp0_imp0.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave5_damp0_imp1.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave5_damp1_imp0.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave5_damp1_imp1.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave80_damp0_imp0.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave80_damp0_imp1.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave80_damp1_imp0.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave80_damp1_imp1.xml create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/mesh/README.md rename packages/rol/example/PDE-OPT/published/{Helmholtz_KouriRidzal2019 => Helmholtz_KouriRidzalTuminaro2020}/mesh/helmholtz-mesh-0.e (100%) create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/mesh/helmholtz-mesh-0.txt create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/mesh/helmholtz-mesh-1.e create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/mesh/helmholtz-mesh-1.txt rename packages/rol/example/PDE-OPT/published/{Helmholtz_KouriRidzal2019 => Helmholtz_KouriRidzalTuminaro2020}/mesh/helmholtz-mesh.jou (100%) rename packages/rol/example/PDE-OPT/published/{Helmholtz_KouriRidzal2019 => Helmholtz_KouriRidzalTuminaro2020}/obj_helmholtz.hpp (100%) rename packages/rol/example/PDE-OPT/published/{Helmholtz_KouriRidzal2019 => Helmholtz_KouriRidzalTuminaro2020}/pde_helmholtz_imag.hpp (100%) rename packages/rol/example/PDE-OPT/published/{Helmholtz_KouriRidzal2019 => Helmholtz_KouriRidzalTuminaro2020}/pde_helmholtz_real.hpp (100%) create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/prdw.m create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/results/README.md create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/run.m create mode 100644 packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/study.m diff --git a/packages/rol/example/PDE-OPT/published/CMakeLists.txt b/packages/rol/example/PDE-OPT/published/CMakeLists.txt index 4476790726cc..2ab53424d422 100644 --- a/packages/rol/example/PDE-OPT/published/CMakeLists.txt +++ b/packages/rol/example/PDE-OPT/published/CMakeLists.txt @@ -1 +1,2 @@ ADD_SUBDIRECTORY(IMAvolumes_KouriRidzal2017) +ADD_SUBDIRECTORY(Helmholtz_KouriRidzalTuminaro2020) diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzal2019/sample_script.m b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzal2019/sample_script.m deleted file mode 100644 index efd297fde897..000000000000 --- a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzal2019/sample_script.m +++ /dev/null @@ -1,81 +0,0 @@ - -Adata = importdata('Amatrix.txt',' ',2); Adata = Adata.data; -Bdata = importdata('Bmatrix.txt',' ',2); Bdata = Bdata.data; -Ldata = importdata('Lmatrix.txt',' ',2); Ldata = Ldata.data; -Cdata = importdata('Cmatrix.txt',' ',2); Cdata = Cdata.data; -Rdata = importdata('Rmatrix.txt',' ',2); Rdata = Rdata.data; -Mdata = importdata('Mmatrix.txt',' ',2); Mdata = Mdata.data; - -wrvec = importdata('WRvector.txt',' ',2); wrvec = wrvec.data; -wivec = importdata('WIvector.txt',' ',2); wivec = wivec.data; - -Amat = sparse(Adata(:,1),Adata(:,2),Adata(:,3)); -Bmat = sparse(Bdata(:,1),Bdata(:,2),Bdata(:,3)); -Lmat = sparse(Ldata(:,1),Ldata(:,2),Ldata(:,3)); -Cmat = sparse(Cdata(:,1),Cdata(:,2),Cdata(:,3)); -Rmat = sparse(Rdata(:,1),Rdata(:,2),Rdata(:,3)); -Mmat = sparse(Mdata(:,1),Mdata(:,2),Mdata(:,3)); - -Kmat = Amat - sqrt(-1)*Bmat; - -beta = 1e-4; - -Zmat = 0*Kmat; -kkt = [ Cmat Zmat Kmat'; - Zmat beta*Rmat Lmat'; - Kmat Lmat Zmat ]; - -w0 = wrvec + sqrt(-1)*wivec; -zvec = 0*w0; -rhs = [ w0; - zvec; - zvec ]; - -sol = kkt \ rhs; - -adj = load('cell_to_node_quad.txt') + 1; %% load node adjacency, increment by 1 for 1-based indexing -nodes = load('nodes.txt'); %% load node coordinates -map = importdata('map.txt'); -map = map.data(1:2:end)+1; -[tmp, perm] = sort(map); -n = length(w0); -u = sol(1:n); -u = u(perm); -z = sol(n+1:2*n); -z = z(perm); - -figure, trisurf(adj, nodes(:,1), nodes(:,2), real(u)); -shading interp; -view(0,90) -axis('equal','tight'); -xlabel('x'); -ylabel('y'); -title('State: Real Part'); -axis square - -figure, trisurf(adj, nodes(:,1), nodes(:,2), imag(u)); -shading interp; -view(0,90) -axis('equal','tight'); -xlabel('x'); -ylabel('y'); -title('State: Imaginary Part'); -axis square - -figure, trisurf(adj, nodes(:,1), nodes(:,2), real(z)); -shading interp; -view(0,90) -axis('equal','tight'); -xlabel('x'); -ylabel('y'); -title('Control: Real Part'); -axis square - -figure, trisurf(adj, nodes(:,1), nodes(:,2), imag(z)); -shading interp; -view(0,90) -axis('equal','tight'); -xlabel('x'); -ylabel('y'); -title('Control: Imaginary Part'); -axis square diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzal2019/CMakeLists.txt b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/CMakeLists.txt similarity index 64% rename from packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzal2019/CMakeLists.txt rename to packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/CMakeLists.txt index 03008c02a48f..71a29e6a20ac 100644 --- a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzal2019/CMakeLists.txt +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/CMakeLists.txt @@ -14,13 +14,25 @@ IF(${PROJECT_NAME}_ENABLE_Intrepid AND ADD_DIR_TO_NAME ) + FILE(GLOB INP_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} inputs/*.xml) + TRIBITS_COPY_FILES_TO_BINARY_DIR( - HelmholtzKouriRidzal2019DataCopy + HelmholtzKouriRidzalTuminaro2020DataCopy SOURCE_FILES input_ex01.xml - sample_script.m + README.md + study.m + run.m + prdw.m + imshift.m + mesh/README.md mesh/helmholtz-mesh-0.e + mesh/helmholtz-mesh-1.e + mesh/helmholtz-mesh-0.txt + mesh/helmholtz-mesh-1.txt mesh/helmholtz-mesh.jou + results/README.md + ${INP_FILES} SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" DEST_DIR "${CMAKE_CURRENT_BINARY_DIR}" ) diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/README.md b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/README.md new file mode 100644 index 000000000000..631a690ee734 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/README.md @@ -0,0 +1,27 @@ +This subdirectory of the *ROL* package, i.e., + +/rol/example/PDE-OPT/published/Helmholtz_KouriRidzal2019 + +accompanies the paper + +D. P. Kouri, D. Ridzal, R. Tuminaro, "KKT Preconditioners for +PDE-Constrained Optimization with the Helmholtz Equation" + +To reproduce the numerical results, follow these steps: + +1. Build Trilinos, with the ROL package and all its dependencies + enabled. For help building Trilinos, consult the Trilinos + community or ROL developers. In the main Trilinos build + directory, you should see the subdirectory + + /packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzal2019 + +2. Obtain Matlab. The code has been tested with Matlab R2019a. + Start Matlab in command-line mode in the above subdirectory. + Run + >> study + +3. To change study parameters, edit the study.m file. The file + contains descriptions of all parameters, and references to + running the tests on finer meshes. + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzal2019/example_01.cpp b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/example_01.cpp similarity index 100% rename from packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzal2019/example_01.cpp rename to packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/example_01.cpp diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/imshift.m b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/imshift.m new file mode 100644 index 000000000000..a70f05b99a56 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/imshift.m @@ -0,0 +1,49 @@ +function [y] = imshift( x, usr_par) +% +% compute and/or apply a complex-shift KKT preconditioner +% + + global GLB_PROB; + + nu = GLB_PROB.nu; + nz = GLB_PROB.nz; + + beta = GLB_PROB.beta; + r = sqrt(-1)/sqrt(beta); + K = GLB_PROB.K; + M = GLB_PROB.M; + C = GLB_PROB.C; + R = GLB_PROB.R; + J = GLB_PROB.J; + A1 = K - r*M; + + A2 = ctranspose(A1); + + y = zeros(size(x)); + + if (GLB_PROB.reuse_factors) + if (~GLB_PROB.factors_computed) + fprintf(" Computing factors (to be reused) ...\n "); + tic + [GLB_PROB.LC, GLB_PROB.UC, GLB_PROB.PC, GLB_PROB.QC] = lu(C); + [GLB_PROB.LR, GLB_PROB.UR, GLB_PROB.PR, GLB_PROB.QR] = lu(R); + [GLB_PROB.LA1, GLB_PROB.UA1, GLB_PROB.PA1, GLB_PROB.QA1] = lu(A1); + %[GLB_PROB.LA2, GLB_PROB.UA2, GLB_PROB.PA2, GLB_PROB.QA2] = lu(A2); + toc + GLB_PROB.factors_computed = true; + end + y(1:nu) = GLB_PROB.QC * (GLB_PROB.UC \ (GLB_PROB.LC \ (GLB_PROB.PC * x(1:nu)))); + y(nu+1:nu+nz) = (1/beta) * ( GLB_PROB.QR * (GLB_PROB.UR \ (GLB_PROB.LR \ (GLB_PROB.PR * x(nu+1:nu+nz)))) ); + tmp = M * ( GLB_PROB.QA1 * (GLB_PROB.UA1 \ (GLB_PROB.LA1 \ (GLB_PROB.PA1 * x(nu+nz+1:end)))) ); + y(nu+nz+1:end) = GLB_PROB.PA1' * (GLB_PROB.LA1' \ (GLB_PROB.UA1' \ (GLB_PROB.QA1' * tmp))); + %y(nu+nz+1:end) = GLB_PROB.QA2 * (GLB_PROB.UA2 \ (GLB_PROB.LA2 \ (GLB_PROB.PA2 * tmp))); + else + y(1:nu) = C \ x(1:nu); + y(nu+1:nu+nz) = (1/beta) * (R \ x(nu+1:nu+nz)); + y(nu+nz+1:end) = A2 \ (M * (A1 \ x(nu+nz+1:end))); + end + + + GLB_PROB.ct = GLB_PROB.ct + 1; + +end % function imshift diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzal2019/input_ex01.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/input_ex01.xml similarity index 100% rename from packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzal2019/input_ex01.xml rename to packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/input_ex01.xml diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh0_wave5_damp0_imp0.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh0_wave5_damp0_imp0.xml new file mode 100644 index 000000000000..56f7e4d14336 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh0_wave5_damp0_imp0.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh0_wave5_damp0_imp1.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh0_wave5_damp0_imp1.xml new file mode 100644 index 000000000000..3e74d46acb52 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh0_wave5_damp0_imp1.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh0_wave5_damp1_imp0.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh0_wave5_damp1_imp0.xml new file mode 100644 index 000000000000..690b20bba682 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh0_wave5_damp1_imp0.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh0_wave5_damp1_imp1.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh0_wave5_damp1_imp1.xml new file mode 100644 index 000000000000..4ff11d5af510 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh0_wave5_damp1_imp1.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh1_wave10_damp0_imp0.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh1_wave10_damp0_imp0.xml new file mode 100644 index 000000000000..44e5ecd04ea5 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh1_wave10_damp0_imp0.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh1_wave10_damp0_imp1.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh1_wave10_damp0_imp1.xml new file mode 100644 index 000000000000..f2b061a4f603 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh1_wave10_damp0_imp1.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh1_wave10_damp1_imp0.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh1_wave10_damp1_imp0.xml new file mode 100644 index 000000000000..8d54bfca026e --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh1_wave10_damp1_imp0.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh1_wave10_damp1_imp1.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh1_wave10_damp1_imp1.xml new file mode 100644 index 000000000000..95a4e106a160 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh1_wave10_damp1_imp1.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh1_wave5_damp0_imp0.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh1_wave5_damp0_imp0.xml new file mode 100644 index 000000000000..360dda0e156c --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh1_wave5_damp0_imp0.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh1_wave5_damp0_imp1.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh1_wave5_damp0_imp1.xml new file mode 100644 index 000000000000..769b3ff78421 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh1_wave5_damp0_imp1.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh1_wave5_damp1_imp0.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh1_wave5_damp1_imp0.xml new file mode 100644 index 000000000000..5c82af274c4e --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh1_wave5_damp1_imp0.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh1_wave5_damp1_imp1.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh1_wave5_damp1_imp1.xml new file mode 100644 index 000000000000..83f826dc0e0d --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh1_wave5_damp1_imp1.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave10_damp0_imp0.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave10_damp0_imp0.xml new file mode 100644 index 000000000000..67197d84dfd4 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave10_damp0_imp0.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave10_damp0_imp1.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave10_damp0_imp1.xml new file mode 100644 index 000000000000..015e81674aa3 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave10_damp0_imp1.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave10_damp1_imp0.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave10_damp1_imp0.xml new file mode 100644 index 000000000000..25eb7e8d7cb3 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave10_damp1_imp0.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave10_damp1_imp1.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave10_damp1_imp1.xml new file mode 100644 index 000000000000..244f0e4a2d2c --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave10_damp1_imp1.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave20_damp0_imp0.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave20_damp0_imp0.xml new file mode 100644 index 000000000000..3b79c7955dcf --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave20_damp0_imp0.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave20_damp0_imp1.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave20_damp0_imp1.xml new file mode 100644 index 000000000000..d9db6a117cc7 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave20_damp0_imp1.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave20_damp1_imp0.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave20_damp1_imp0.xml new file mode 100644 index 000000000000..e68ed5fe8a65 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave20_damp1_imp0.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave20_damp1_imp1.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave20_damp1_imp1.xml new file mode 100644 index 000000000000..0957c801f948 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave20_damp1_imp1.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave5_damp0_imp0.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave5_damp0_imp0.xml new file mode 100644 index 000000000000..07d11f9fc5a2 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave5_damp0_imp0.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave5_damp0_imp1.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave5_damp0_imp1.xml new file mode 100644 index 000000000000..55d66d397ec8 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave5_damp0_imp1.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave5_damp1_imp0.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave5_damp1_imp0.xml new file mode 100644 index 000000000000..23b27b54d644 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave5_damp1_imp0.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave5_damp1_imp1.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave5_damp1_imp1.xml new file mode 100644 index 000000000000..47f3ab0d0ed8 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh2_wave5_damp1_imp1.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave10_damp0_imp0.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave10_damp0_imp0.xml new file mode 100644 index 000000000000..54c839cf09dc --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave10_damp0_imp0.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave10_damp0_imp1.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave10_damp0_imp1.xml new file mode 100644 index 000000000000..62feb98e237f --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave10_damp0_imp1.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave10_damp1_imp0.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave10_damp1_imp0.xml new file mode 100644 index 000000000000..178a819f0c2e --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave10_damp1_imp0.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave10_damp1_imp1.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave10_damp1_imp1.xml new file mode 100644 index 000000000000..4a202665eb1d --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave10_damp1_imp1.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave20_damp0_imp0.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave20_damp0_imp0.xml new file mode 100644 index 000000000000..6261886df726 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave20_damp0_imp0.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave20_damp0_imp1.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave20_damp0_imp1.xml new file mode 100644 index 000000000000..f2f15e568b5f --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave20_damp0_imp1.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave20_damp1_imp0.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave20_damp1_imp0.xml new file mode 100644 index 000000000000..95190203b6a3 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave20_damp1_imp0.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave20_damp1_imp1.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave20_damp1_imp1.xml new file mode 100644 index 000000000000..1aa8b16dab58 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave20_damp1_imp1.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave40_damp0_imp0.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave40_damp0_imp0.xml new file mode 100644 index 000000000000..b0ba52204976 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave40_damp0_imp0.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave40_damp0_imp1.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave40_damp0_imp1.xml new file mode 100644 index 000000000000..e10c40f702ca --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave40_damp0_imp1.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave40_damp1_imp0.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave40_damp1_imp0.xml new file mode 100644 index 000000000000..598f66a7dcbe --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave40_damp1_imp0.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave40_damp1_imp1.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave40_damp1_imp1.xml new file mode 100644 index 000000000000..a7cff19998c1 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave40_damp1_imp1.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave5_damp0_imp0.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave5_damp0_imp0.xml new file mode 100644 index 000000000000..f92ba4c39ea7 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave5_damp0_imp0.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave5_damp0_imp1.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave5_damp0_imp1.xml new file mode 100644 index 000000000000..cd6af522c13d --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave5_damp0_imp1.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave5_damp1_imp0.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave5_damp1_imp0.xml new file mode 100644 index 000000000000..322ebc2314a7 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave5_damp1_imp0.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave5_damp1_imp1.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave5_damp1_imp1.xml new file mode 100644 index 000000000000..f6ec64059c83 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh3_wave5_damp1_imp1.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave10_damp0_imp0.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave10_damp0_imp0.xml new file mode 100644 index 000000000000..f7a89bd879ee --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave10_damp0_imp0.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave10_damp0_imp1.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave10_damp0_imp1.xml new file mode 100644 index 000000000000..3670c4235b8c --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave10_damp0_imp1.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave10_damp1_imp0.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave10_damp1_imp0.xml new file mode 100644 index 000000000000..24f60f0b893f --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave10_damp1_imp0.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave10_damp1_imp1.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave10_damp1_imp1.xml new file mode 100644 index 000000000000..31d23f9a9691 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave10_damp1_imp1.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave20_damp0_imp0.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave20_damp0_imp0.xml new file mode 100644 index 000000000000..24eadfe82ab7 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave20_damp0_imp0.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave20_damp0_imp1.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave20_damp0_imp1.xml new file mode 100644 index 000000000000..94090e4671ce --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave20_damp0_imp1.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave20_damp1_imp0.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave20_damp1_imp0.xml new file mode 100644 index 000000000000..46cac11de825 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave20_damp1_imp0.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave20_damp1_imp1.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave20_damp1_imp1.xml new file mode 100644 index 000000000000..56fa7c071199 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave20_damp1_imp1.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave40_damp0_imp0.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave40_damp0_imp0.xml new file mode 100644 index 000000000000..dcd77e4989f3 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave40_damp0_imp0.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave40_damp0_imp1.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave40_damp0_imp1.xml new file mode 100644 index 000000000000..5357d46e6120 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave40_damp0_imp1.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave40_damp1_imp0.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave40_damp1_imp0.xml new file mode 100644 index 000000000000..798221dfd62d --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave40_damp1_imp0.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave40_damp1_imp1.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave40_damp1_imp1.xml new file mode 100644 index 000000000000..fed9432c75fb --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave40_damp1_imp1.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave5_damp0_imp0.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave5_damp0_imp0.xml new file mode 100644 index 000000000000..8c7d3dd32127 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave5_damp0_imp0.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave5_damp0_imp1.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave5_damp0_imp1.xml new file mode 100644 index 000000000000..f0b363e14655 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave5_damp0_imp1.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave5_damp1_imp0.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave5_damp1_imp0.xml new file mode 100644 index 000000000000..05320ee8fb94 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave5_damp1_imp0.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave5_damp1_imp1.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave5_damp1_imp1.xml new file mode 100644 index 000000000000..fe7011ff859a --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave5_damp1_imp1.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave80_damp0_imp0.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave80_damp0_imp0.xml new file mode 100644 index 000000000000..eaa0b62601a5 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave80_damp0_imp0.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave80_damp0_imp1.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave80_damp0_imp1.xml new file mode 100644 index 000000000000..8fa518ba4510 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave80_damp0_imp1.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave80_damp1_imp0.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave80_damp1_imp0.xml new file mode 100644 index 000000000000..e78e204799fe --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave80_damp1_imp0.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave80_damp1_imp1.xml b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave80_damp1_imp1.xml new file mode 100644 index 000000000000..cc5ced8bd270 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/inputs/input_mesh4_wave80_damp1_imp1.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/mesh/README.md b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/mesh/README.md new file mode 100644 index 000000000000..622b1d0bfac6 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/mesh/README.md @@ -0,0 +1,16 @@ +Meshes with resolutions 0 and 1 are provided as txt files. +To generate additional meshes, the meshing tool Cubit (Sandia +National Labs) and the tool ncdump must be used. + +Follow these steps: + +1. Modify the Nrefine parameter in the provided helmholtz.jou file, + with 0, 1, 2, 3, 4, etc. The provided txt mesh files correspond + to Nrefine = 0 and Nrefine = 1. + +2. Run helmholtz.jou in Cubit, and save the resulting mesh as the + helmholtz-mesh-N.e Exodus file, where N = Nrefine, in the + mesh subdirectory. + +3. Run + >> ncdump helmholtz-mesh-N.e > helmholtz-mesh-N.txt diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzal2019/mesh/helmholtz-mesh-0.e b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/mesh/helmholtz-mesh-0.e similarity index 100% rename from packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzal2019/mesh/helmholtz-mesh-0.e rename to packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/mesh/helmholtz-mesh-0.e diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/mesh/helmholtz-mesh-0.txt b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/mesh/helmholtz-mesh-0.txt new file mode 100644 index 000000000000..5365bc15ea35 --- /dev/null +++ b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/mesh/helmholtz-mesh-0.txt @@ -0,0 +1,13826 @@ +netcdf helmholtz-mesh-0 { +dimensions: + len_string = 33 ; + len_line = 81 ; + four = 4 ; + len_name = 33 ; + time_step = UNLIMITED ; // (0 currently) + num_dim = 2 ; + num_nodes = 7491 ; + num_elem = 7424 ; + num_el_blk = 1 ; + num_side_sets = 1 ; + num_el_in_blk1 = 7424 ; + num_nod_per_el1 = 4 ; + num_side_ss1 = 132 ; + num_df_ss1 = 264 ; + num_qa_rec = 1 ; +variables: + double time_whole(time_step) ; + int eb_status(num_el_blk) ; + int eb_prop1(num_el_blk) ; + eb_prop1:name = "ID" ; + int ss_status(num_side_sets) ; + int ss_prop1(num_side_sets) ; + ss_prop1:name = "ID" ; + double coordx(num_nodes) ; + double coordy(num_nodes) ; + char eb_names(num_el_blk, len_name) ; + char ss_names(num_side_sets, len_name) ; + char coor_names(num_dim, len_name) ; + int connect1(num_el_in_blk1, num_nod_per_el1) ; + connect1:elem_type = "QUAD" ; + int elem_ss1(num_side_ss1) ; + int side_ss1(num_side_ss1) ; + double dist_fact_ss1(num_df_ss1) ; + char qa_records(num_qa_rec, four, len_string) ; + int elem_map(num_elem) ; + int elem_num_map(num_elem) ; + int node_num_map(num_nodes) ; + +// global attributes: + :api_version = 6.05f ; + :version = 6.05f ; + :floating_point_word_size = 8 ; + :file_size = 1 ; + :maximum_name_length = 32 ; + :int64_status = 0 ; + :title = "cubit(blished/Helmholtz_KouriRidzal2019/mesh/helmholtz-mesh-0.e): 10/15/2019: 15" ; +data: + + eb_status = 1 ; + + eb_prop1 = 1 ; + + ss_status = 1 ; + + ss_prop1 = 1 ; + + coordx = 2, 1.99773467836602, 1.92787671826128, 1.93055555555556, + 1.99094384514617, 1.92098664101906, 1.97964288376187, 1.90989963895713, + 1.96385739452541, 1.89463953458834, 1.94362313664708, 1.87523960384447, + 1.91898594722899, 1.85174250069554, 1.89000163742934, 1.82420016052488, + 1.85673586603215, 1.79267368247874, 1.81926399070904, 1.75723319105708, + 1.77767089730985, 1.71795767725908, 1.73205080756888, 1.67493481964303, + 1.68250706566236, 1.62826078570627, 1.62915190410067, 1.57804001403482, + 1.57210618948558, 1.52438497771646, 1.51149914870852, 1.46741592955294, + 1.44746807621014, 1.40726062964875, 1.38015802296422, 1.34107716978296, + 1.30972146789057, 1.27198432627191, 1.23631797244121, 1.20013057991125, + 1.1601138191424, 1.12567066582956, 1.0812816349112, 1.04876522296358, 1, + 0.96958043015926, 0.916453043454821, 0.888287629723321, + 0.830830026003773, 0.805062939277754, 0.743324911320655, + 0.720086852796789, 0.654135926634843, 0.633543831729983, + 0.563465113682859, 0.545621887137712, 0.471517871018855, + 0.456512153785643, 0.37850248872082, 0.36640845716302, 0.284629676546571, + 0.275506874405584, 0.190112086608366, 0.184005290117802, + 0.0951638316474848, 0.0921029481005846, 1.22464679914735e-16, + 1.18212434084363e-16, 1.8596624748649, 1.86274509803922, + 1.85267548875376, 1.84179741167721, 1.82705033017919, 1.80846509534309, + 1.78608125290405, 1.75994695366523, 1.7301188444207, 1.69666193963224, + 1.65964947415068, 1.61916273731544, 1.57529088880796, 1.5281307566764, + 1.47778661798897, 1.42436996261279, 1.36799924065351, 1.30291586608831, + 1.23513511739722, 1.16479465544081, 1.0920379396535, 1.01701390306178, + 0.939876614903009, 0.860784931609033, 0.779902136945289, + 0.697395572120543, 0.613436256705238, 0.528198501217156, + 0.441859512252037, 0.354598991053638, 0.266598726432621, + 0.178042182956428, 0.0891140853430233, 1.14060241097057e-16, + 1.79309194817686, 1.79656862745098, 1.78601038835028, 1.7753362019221, + 1.76108978129798, 1.74329961114295, 1.72200220385453, 1.6972420168504, + 1.66907135185804, 1.63755023643449, 1.60274628798466, 1.5647345605861, + 1.52359737496744, 1.47942413202542, 1.43231111030311, 1.38236124788806, + 1.32968390922441, 1.26567411188027, 1.19917384126649, 1.1303101990299, + 1.05921564061421, 0.986027675205815, 0.910888554231245, + 0.833944949111957, 0.755347619006377, 0.675251069291917, + 0.593813201560606, 0.511194955921192, 0.427559946418036, + 0.343074090392675, 0.257905232627681, 0.172222765124243, + 0.0861972433748008, 1.1000810095282e-16, 1.72816513819717, + 1.73202614379085, 1.72099133980861, 1.71051600969182, 1.6967578879447, + 1.67974315124404, 1.65950535354697, 1.63608535008037, 1.60953120479075, + 1.57989808146386, 1.54724811876101, 1.51165028945502, 1.47318024418472, + 1.43192014008187, 1.38795845465887, 1.34138978537876, 1.29231463536147, + 1.22935190715886, 1.16410049787973, 1.09667721067852, 1.0272037687117, + 0.955806539395675, 0.882616248143969, 0.807767682232093, + 0.731399385461018, 0.653653344310912, 0.574674666296089, + 0.49461125124982, 0.413613456283639, 0.331833755180131, + 0.249426392990765, 0.166547036621248, 0.0833524221959172, + 1.0605601365165e-16, 1.66488204492582, 1.66911764705882, + 1.65761834312875, 1.64733683498635, 1.63405465011935, 1.61779571564638, + 1.59859070198137, 1.57647695335516, 1.55149840321884, 1.52370547472032, + 1.49315496647972, 1.4599099239222, 1.42403949645978, 1.38561878084574, + 1.34472865105626, 1.30145557508488, 1.25589141906468, 1.19394925192406, + 1.12991508723695, 1.06389569038667, 0.996002323945955, 0.92635049563136, + 0.855059696641182, 0.78225313096944, 0.708057436309213, + 0.632602397177528, 0.556020650911687, 0.478447387203039, + 0.400020041848848, 0.320877985416005, 0.241162207521871, + 0.161014997447443, 0.0805796218063723, 1.02203979193547e-16, + 1.60324266836283, 1.6078431372549, 1.59589139831071, 1.5857986778057, + 1.57298006782193, 1.55745730434995, 1.53925824915773, 1.51841682667476, + 1.4949729471423, 1.46897241620389, 1.44046683114081, 1.40951346398762, + 1.37617513179264, 1.34052005431705, 1.30262169949528, 1.26255861700643, + 1.22041426033404, 1.15946614617589, 1.09661760933813, 1.03196563815435, + 0.965611306316984, 0.897659543912872, 0.828218899722882, + 0.757401295323999, 0.685321771550961, 0.612098227891763, + 0.537851155407398, 0.46270336378085, 0.386779703113662, + 0.310206781100299, 0.233112676221001, 0.155626647602828, + 0.0778788422061663, 9.84519975785127e-17, 1.54324700850817, + 1.54820261437909, 1.53581050535449, 1.52590153814987, 1.51353414105244, + 1.49872791735476, 1.48150799507606, 1.46190497003917, 1.43995483656114, + 1.41569890591457, 1.38918371274427, 1.36046090965131, 1.32958715018328, + 1.29662396049579, 1.26163759997592, 1.22469891114341, 1.18588315916955, + 1.12590258991433, 1.06420806418328, 1.00088705398156, 0.936030715824785, + 0.86973368424021, 0.80209385738907, 0.73321217529577, 0.663192391186263, + 0.592140836453619, 0.520166179783224, 0.447379180983253, + 0.37389244007808, 0.299820142233011, 0.225277799088154, + 0.150381987087403, 0.0752500833952991, 9.48000688065455e-17, + 1.48489506536187, 1.49019607843137, 1.47737566426008, 1.46764541601885, + 1.45571686981088, 1.44160755466081, 1.42533993973636, 1.40694138344838, + 1.38644407147535, 1.36388494385235, 1.3393056112901, 1.31275226091325, + 1.28427555163172, 1.25393049938197, 1.22177635249819, 1.18787645749581, + 1.15229811557121, 1.09325858313938, 1.03268645177239, 0.970659937868292, + 0.90726055246936, 0.842572916613375, 0.776684569639746, + 0.709685770884753, 0.641669295215118, 0.572730222863096, + 0.502965724039165, 0.432474838810247, 0.361358252742104, + 0.289718068814142, 0.21765757612333, 0.145281015901167, + 0.0726933453737708, 9.12481928776459e-17, 1.42818683892391, + 1.43382352941176, 1.42058687502748, 1.41103031141265, 1.39952825409725, + 1.3860962162681, 1.37075408313861, 1.35352606690241, 1.33444065188493, + 1.31353053001724, 1.2908325267783, 1.26638751777344, 1.24024033613795, + 1.21243967097557, 1.18303795706209, 1.15209125606363, 1.11965912953902, + 1.06153412585106, 1.00205277210548, 0.941284289814556, 0.879300816250707, + 0.816177241032366, 0.751991036474911, 0.686822082090947, + 0.620752483637526, 0.553866387120192, 0.486249788175219, + 0.417990337261833, 0.349177141105733, 0.279900560843692, + 0.210252007326529, 0.140323734044121, 0.0702086281415812, + 8.77963697918139e-17, 1.3731223291943, 1.37908496732026, 1.3654441376567, + 1.35605622433127, 1.34496829391156, 1.33219390217663, 1.31775042528283, + 1.30165902040125, 1.28394457778989, 1.26463566440923, 1.24376445920887, + 1.22136668023189, 1.19748150370196, 1.17215147527661, 1.14542241366761, + 1.11734330684688, 1.08796620107298, 1.03072921804936, 0.972307025182535, + 0.912760109820348, 0.852151507168826, 0.790546657497184, + 0.728013257894563, 0.664621108914353, 0.600441956453488, + 0.53554932922491, 0.470018372191389, 0.403925676338011, + 0.337349105168966, 0.270367618321661, 0.203061092697752, + 0.135510141516265, 0.0677959316987305, 8.44445995490495e-17, + 1.31970153617303, 1.32598039215686, 1.31194745214773, 1.3027231547747, + 1.29203698925379, 1.27990061238639, 1.26632896616902, 1.25134024394491, + 1.23495584919023, 1.21720034702832, 1.19810140858181, 1.1776897482886, + 1.15599905432377, 1.13306591228508, 1.10892972231476, 1.08363260984556, + 1.05721933017309, 1.00084385973427, 0.943449211003558, 0.885087397885669, + 0.825812625223718, 0.765681166007827, 0.704751233898703, + 0.643082851354971, 0.580737713663003, 0.517779049177247, + 0.454271476087672, 0.390280856038781, 0.325874144931805, + 0.261119241248049, 0.196084832236998, 0.130840238317598, + 0.0654552560452187, 8.11928821493527e-17, 1.26792445986011, + 1.27450980392157, 1.26009681850058, 1.25103110274296, 1.24073434012396, + 1.22921634689739, 1.21648970579716, 1.20256973753337, 1.18747446608593, + 1.17122457787452, 1.15384337489713, 1.13535672194356, 1.11579298800337, + 1.09518298200098, 1.07355988300353, 1.05095916505966, 1.02741851683935, + 0.971878050905798, 0.915479329568549, 0.858266154010519, + 0.800284170415383, 0.741580766564297, 0.682204964487331, + 0.622207309412801, 0.561639755266071, 0.500555546977205, + 0.43900909986407, 0.377055876364142, 0.314752260394248, + 0.252155429622856, 0.189323225944267, 0.126314024448121, + 0.0631866011810456, 7.80412175927235e-17, 1.21779110025554, + 1.22467320261438, 1.20989223671524, 1.20098006823603, 1.19106034652206, + 1.18014110570963, 1.16823264416727, 1.15534750116664, 1.14150042847702, + 1.12670835694783, 1.11099035815481, 1.09436760119678, 1.07686330474076, + 1.05850268442431, 1.03931289573393, 1.01932297248919, 0.998563761071767, + 0.943831791563947, 0.88839738087751, 0.832296378194897, 0.77556614274382, + 0.718245459166594, 0.660374449660448, 0.601994483087843, + 0.543148081262693, 0.483878822624783, 0.424231243520582, + 0.364250737314095, 0.303983451556296, 0.243476183446081, + 0.182776273819559, 0.121931499907834, 0.0609899671062114, + 7.49896058791619e-17, 1.16930145735932, 1.17647058823529, + 1.16133370679171, 1.15257005125392, 1.14301500844809, 1.13267488882311, + 1.12155778127935, 1.10967353484472, 1.09703373636347, 1.08365168424824, + 1.06954235835487, 1.05472238604825, 1.03921000453594, 1.02302501955507, + 1.00618876050596, 0.988724032134141, 0.970655062870329, + 0.916705081708714, 0.862203364930438, 0.807178070438803, + 0.75165854220903, 0.695675243814717, 0.639259689418052, + 0.582444372380096, 0.525262691652869, 0.467748876119982, + 0.409937907057209, 0.35186543888864, 0.29356771841795, 0.235081502717725, + 0.176443975862874, 0.117692664696737, 0.058865353820716, + 7.20380470086678e-17, 1.12245553117144, 1.12990196078431, 1.11442122873, + 1.10580105179662, 1.09659832590205, 1.08681769623783, 1.07646511713339, + 1.06554783856762, 1.0540743897453, 1.04205455977575, 1.0294993754973, + 1.01642107649797, 1.00283308738891, 0.988749987393267, 0.974187477319609, + 0.959162343994519, 0.943692422235042, 0.890497921340099, + 0.836897281727336, 0.782911230742239, 0.728561368811012, + 0.673870120508666, 0.618860683760144, 0.563556977289561, + 0.507983586436597, 0.452165707462801, 0.396129090473949, + 0.339899981087776, 0.283505060979208, 0.226971387437788, + 0.170326332074213, 0.11359751881483, 0.0568127613245594, + 6.91865409812414e-17, 1.0772533216919, 1.08496732026144, + 1.06915480253011, 1.06067306986414, 1.05181029888394, 1.04256952795378, + 1.03295465172939, 1.02297041233532, 1.01262238862251, 1.00191698353037, + 0.990861409582094, 0.979463672545954, 0.96773255329967, + 0.955677587938894, 0.943309046174887, 0.930637908070322, + 0.917675839165906, 0.865210310458101, 0.812479131268202, + 0.759495859105203, 0.706274622549766, 0.652830089248441, + 0.599177432686724, 0.545332297816237, 0.491310765613879, + 0.437129316653241, 0.382804793770805, 0.328354363911504, + 0.273795479240071, 0.21914583760627, 0.164423342453575, + 0.109646062262112, 0.0548321896177417, 6.64350877968825e-17, + 1.03369482892072, 1.04166666666667, 1.02553442819203, 1.01718610545648, + 1.00865092739377, 0.999930383970971, 0.991026385067353, + 0.981941256147836, 0.972677732995088, 0.963238955512094, + 0.953628460609263, 0.943850174192191, 0.933908402268221, + 0.923807821191953, 0.913553467071793, 0.90315072436155, 0.89260531366292, + 0.840842249062722, 0.788948913553036, 0.736931955527695, + 0.684798303425294, 0.632555150034043, 0.580209936197792, + 0.527770333960126, 0.475244229184715, 0.422639703691301, + 0.369965016947774, 0.317228587359824, 0.26443897320054, + 0.211604853223171, 0.15873500700096, 0.105838295038584, + 0.0529236387002628, 6.37836874555913e-17, 0.99178005285788, 1, + 0.98356010571576, 0.975340158573641, 0.967120211431521, + 0.958900264289401, 0.950680317147282, 0.942460370005162, + 0.934240422863042, 0.926020475720922, 0.917800528578803, + 0.909580581436683, 0.901360634294563, 0.893140687152443, + 0.884920740010324, 0.876700792868204, 0.868480845726084, + 0.817393737153961, 0.766306628581839, 0.715219520009716, + 0.664132411437594, 0.613045302865471, 0.561958194293348, + 0.510871085721226, 0.459783977149103, 0.408696868576981, + 0.357609760004858, 0.306522651432736, 0.255435542860613, + 0.20434843428849, 0.153261325716368, 0.102174217144245, + 0.0510871085721227, 6.12323399573676e-17, 0.825130157993604, + 0.773559523119003, 0.721988888244403, 0.670418253369803, + 0.618847618495203, 0.567276983620602, 0.515706348746002, + 0.464135713871402, 0.412565078996802, 0.360994444122202, + 0.309423809247601, 0.257853174373001, 0.206282539498401, + 0.154711904623801, 0.103141269749201, 0.0515706348746003, + 5.74053187100322e-17, 0.832866578833246, 0.780812417656168, + 0.72875825647909, 0.676704095302012, 0.624649934124934, + 0.572595772947856, 0.520541611770779, 0.468487450593701, + 0.416433289416623, 0.364379128239545, 0.312324967062467, + 0.260270805885389, 0.208216644708312, 0.156162483531234, + 0.104108322354156, 0.0520541611770779, 5.35782974626967e-17, + 0.840602999672888, 0.788065312193332, 0.735527624713777, + 0.682989937234221, 0.630452249754666, 0.57791456227511, + 0.525376874795555, 0.472839187315999, 0.420301499836444, + 0.367763812356888, 0.315226124877333, 0.262688437397777, + 0.210150749918222, 0.157613062438667, 0.105075374959111, + 0.0525376874795555, 4.97512762153612e-17, 0.84833942051253, + 0.795318206730497, 0.742296992948463, 0.689275779166431, + 0.636254565384398, 0.583233351602364, 0.530212137820331, + 0.477190924038298, 0.424169710256265, 0.371148496474232, + 0.318127282692199, 0.265106068910166, 0.212084855128133, + 0.159063641346099, 0.106042427564066, 0.0530212137820332, + 4.59242549680257e-17, 0.856075841352172, 0.802571101267662, + 0.749066361183151, 0.69556162109864, 0.642056881014129, + 0.588552140929618, 0.535047400845108, 0.481542660760597, + 0.428037920676086, 0.374533180591575, 0.321028440507065, + 0.267523700422554, 0.214018960338043, 0.160514220253532, + 0.107009480169022, 0.0535047400845108, 4.20972337206903e-17, + 0.863812262191814, 0.809823995804826, 0.755835729417837, + 0.701847463030849, 0.64785919664386, 0.593870930256872, + 0.539882663869884, 0.485894397482896, 0.431906131095907, + 0.377917864708919, 0.32392959832193, 0.269941331934942, + 0.215953065547954, 0.161964799160965, 0.107976532773977, + 0.0539882663869884, 3.82702124733548e-17, 0.871548683031456, + 0.81707689034199, 0.762605097652524, 0.708133304963058, + 0.653661512273592, 0.599189719584126, 0.54471792689466, + 0.490246134205194, 0.435774341515728, 0.381302548826262, + 0.326830756136796, 0.27235896344733, 0.217887170757864, + 0.163415378068398, 0.108943585378932, 0.0544717926894661, + 3.44431912260193e-17, 0.879285103871098, 0.824329784879155, + 0.769374465887211, 0.714419146895267, 0.659463827903324, + 0.60450850891138, 0.549553189919437, 0.494597870927493, + 0.439642551935549, 0.384687232943606, 0.329731913951662, + 0.274776594959718, 0.219821275967775, 0.164865956975831, + 0.109910637983887, 0.0549553189919437, 3.06161699786838e-17, + 0.88702152471074, 0.831582679416319, 0.776143834121898, + 0.720704988827476, 0.665266143533056, 0.609827298238634, + 0.554388452944213, 0.498949607649792, 0.44351076235537, + 0.388071917060949, 0.332633071766528, 0.277194226472106, + 0.221755381177685, 0.166316535883264, 0.110877690588843, + 0.0554388452944213, 2.67891487313483e-17, 0.894757945550383, + 0.838835573953484, 0.782913202356585, 0.726990830759686, + 0.671068459162787, 0.615146087565888, 0.559223715968989, + 0.50330134437209, 0.447378972775191, 0.391456601178292, + 0.335534229581393, 0.279611857984495, 0.223689486387596, + 0.167767114790697, 0.111844743193798, 0.055922371596899, + 2.29621274840129e-17, 0.902494366390025, 0.846088468490648, + 0.789682570591272, 0.733276672691895, 0.676870774792518, + 0.620464876893142, 0.564058978993766, 0.507653081094389, + 0.451247183195012, 0.394841285295636, 0.338435387396259, + 0.282029489496883, 0.225623591597506, 0.16921769369813, + 0.112811795798753, 0.0564058978993766, 1.91351062366774e-17, + 0.910230787229667, 0.853341363027813, 0.796451938825958, + 0.739562514624104, 0.68267309042225, 0.625783666220396, + 0.568894242018542, 0.512004817816688, 0.455115393614833, + 0.398225969412979, 0.341336545211125, 0.284447121009271, + 0.227557696807417, 0.170668272605563, 0.113778848403708, + 0.0568894242018542, 1.53080849893419e-17, 0.917967208069309, + 0.860594257564977, 0.803221307060645, 0.745848356556313, + 0.688475406051982, 0.63110245554765, 0.573729505043318, + 0.516356554538986, 0.458983604034654, 0.401610653530323, + 0.344237703025991, 0.286864752521659, 0.229491802017327, + 0.172118851512995, 0.114745901008664, 0.0573729505043318, + 1.14810637420064e-17, 0.925703628908951, 0.867847152102142, + 0.809990675295332, 0.752134198488523, 0.694277721681713, + 0.636421244874904, 0.578564768068095, 0.520708291261285, + 0.462851814454476, 0.404995337647666, 0.347138860840857, + 0.289282384034047, 0.231425907227238, 0.173569430420428, + 0.115712953613619, 0.0578564768068094, 7.65404249467096e-18, + 0.933440049748593, 0.875100046639306, 0.816760043530019, + 0.758420040420732, 0.700080037311445, 0.641740034202158, + 0.583400031092871, 0.525060027983584, 0.466720024874297, + 0.40838002176501, 0.350040018655722, 0.291700015546435, + 0.233360012437148, 0.175020009327861, 0.116680006218574, + 0.0583400031092871, 3.82702124733548e-18, 0.941176470588235, + 0.882352941176471, 0.823529411764706, 0.764705882352941, + 0.705882352941176, 0.647058823529412, 0.588235294117647, + 0.529411764705882, 0.470588235294118, 0.411764705882353, + 0.352941176470588, 0.294117647058824, 0.235294117647059, + 0.176470588235294, 0.117647058823529, 0.0588235294117647, 0, + -0.0951638316474845, -0.0921029481005844, -0.190112086608365, + -0.184005290117801, -0.28462967654657, -0.275506874405584, + -0.37850248872082, -0.36640845716302, -0.471517871018854, + -0.456512153785643, -0.563465113682859, -0.545621887137712, + -0.654135926634843, -0.633543831729983, -0.743324911320655, + -0.720086852796789, -0.830830026003773, -0.805062939277754, + -0.916453043454821, -0.888287629723321, -1, -0.96958043015926, + -1.08128163491119, -1.04876522296358, -1.1601138191424, + -1.12567066582956, -1.23631797244121, -1.20013057991124, + -1.30972146789057, -1.27198432627191, -1.38015802296422, + -1.34107716978296, -1.44746807621014, -1.40726062964875, + -1.51149914870852, -1.46741592955294, -1.57210618948557, + -1.52438497771646, -1.62915190410067, -1.57804001403482, + -1.68250706566236, -1.62826078570626, -1.73205080756888, + -1.67493481964303, -1.77767089730985, -1.71795767725908, + -1.81926399070904, -1.75723319105708, -1.85673586603215, + -1.79267368247874, -1.89000163742934, -1.82420016052488, + -1.91898594722899, -1.85174250069554, -1.94362313664708, + -1.87523960384447, -1.96385739452541, -1.89463953458834, + -1.97964288376187, -1.90989963895713, -1.99094384514617, + -1.92098664101906, -1.99773467836602, -1.92787671826128, -2, + -1.93055555555556, -0.0891140853430231, -0.178042182956427, + -0.266598726432621, -0.354598991053638, -0.441859512252037, + -0.528198501217156, -0.613436256705237, -0.697395572120543, + -0.779902136945289, -0.860784931609033, -0.939876614903008, + -1.01701390306178, -1.0920379396535, -1.16479465544081, + -1.23513511739721, -1.30291586608831, -1.36799924065351, + -1.42436996261279, -1.47778661798897, -1.5281307566764, + -1.57529088880796, -1.61916273731544, -1.65964947415068, + -1.69666193963224, -1.7301188444207, -1.75994695366523, + -1.78608125290405, -1.80846509534309, -1.82705033017919, + -1.84179741167721, -1.85267548875376, -1.8596624748649, + -1.86274509803922, -0.0861972433748006, -0.172222765124243, + -0.257905232627681, -0.343074090392675, -0.427559946418036, + -0.511194955921192, -0.593813201560606, -0.675251069291917, + -0.755347619006377, -0.833944949111957, -0.910888554231245, + -0.986027675205815, -1.05921564061421, -1.1303101990299, + -1.19917384126649, -1.26567411188027, -1.32968390922441, + -1.38236124788806, -1.43231111030311, -1.47942413202542, + -1.52359737496744, -1.5647345605861, -1.60274628798466, + -1.63755023643449, -1.66907135185804, -1.6972420168504, + -1.72200220385453, -1.74329961114295, -1.76108978129798, + -1.7753362019221, -1.78601038835028, -1.79309194817686, + -1.79656862745098, -0.0833524221959169, -0.166547036621248, + -0.249426392990764, -0.33183375518013, -0.413613456283639, + -0.494611251249819, -0.574674666296089, -0.653653344310912, + -0.731399385461018, -0.807767682232093, -0.882616248143969, + -0.955806539395674, -1.0272037687117, -1.09667721067852, + -1.16410049787973, -1.22935190715886, -1.29231463536147, + -1.34138978537876, -1.38795845465887, -1.43192014008187, + -1.47318024418472, -1.51165028945502, -1.547248118761, -1.57989808146386, + -1.60953120479075, -1.63608535008037, -1.65950535354697, + -1.67974315124404, -1.6967578879447, -1.71051600969182, + -1.72099133980861, -1.72816513819717, -1.73202614379085, + -0.0805796218063721, -0.161014997447443, -0.241162207521871, + -0.320877985416005, -0.400020041848848, -0.478447387203039, + -0.556020650911686, -0.632602397177527, -0.708057436309213, + -0.78225313096944, -0.855059696641181, -0.92635049563136, + -0.996002323945954, -1.06389569038667, -1.12991508723695, + -1.19394925192406, -1.25589141906468, -1.30145557508488, + -1.34472865105626, -1.38561878084574, -1.42403949645978, + -1.4599099239222, -1.49315496647972, -1.52370547472032, + -1.55149840321884, -1.57647695335516, -1.59859070198137, + -1.61779571564638, -1.63405465011935, -1.64733683498635, + -1.65761834312875, -1.66488204492582, -1.66911764705882, + -0.0778788422061661, -0.155626647602828, -0.233112676221, + -0.310206781100299, -0.386779703113662, -0.46270336378085, + -0.537851155407398, -0.612098227891763, -0.685321771550961, + -0.757401295323999, -0.828218899722882, -0.897659543912872, + -0.965611306316983, -1.03196563815435, -1.09661760933813, + -1.15946614617589, -1.22041426033404, -1.26255861700643, + -1.30262169949528, -1.34052005431705, -1.37617513179264, + -1.40951346398762, -1.44046683114081, -1.46897241620389, + -1.4949729471423, -1.51841682667476, -1.53925824915773, + -1.55745730434995, -1.57298006782193, -1.5857986778057, + -1.59589139831071, -1.60324266836283, -1.6078431372549, + -0.0752500833952989, -0.150381987087402, -0.225277799088153, + -0.299820142233011, -0.37389244007808, -0.447379180983253, + -0.520166179783224, -0.592140836453619, -0.663192391186263, + -0.73321217529577, -0.80209385738907, -0.86973368424021, + -0.936030715824785, -1.00088705398156, -1.06420806418328, + -1.12590258991433, -1.18588315916955, -1.22469891114341, + -1.26163759997592, -1.29662396049579, -1.32958715018328, + -1.36046090965131, -1.38918371274427, -1.41569890591457, + -1.43995483656114, -1.46190497003917, -1.48150799507606, + -1.49872791735476, -1.51353414105244, -1.52590153814987, + -1.53581050535449, -1.54324700850817, -1.54820261437909, + -0.0726933453737706, -0.145281015901167, -0.21765757612333, + -0.289718068814142, -0.361358252742104, -0.432474838810247, + -0.502965724039164, -0.572730222863095, -0.641669295215118, + -0.709685770884753, -0.776684569639746, -0.842572916613375, + -0.90726055246936, -0.970659937868292, -1.03268645177239, + -1.09325858313938, -1.15229811557121, -1.18787645749581, + -1.22177635249819, -1.25393049938197, -1.28427555163172, + -1.31275226091325, -1.3393056112901, -1.36388494385235, + -1.38644407147535, -1.40694138344838, -1.42533993973636, + -1.44160755466081, -1.45571686981088, -1.46764541601885, + -1.47737566426008, -1.48489506536187, -1.49019607843137, + -0.070208628141581, -0.140323734044121, -0.210252007326529, + -0.279900560843692, -0.349177141105732, -0.417990337261833, + -0.486249788175219, -0.553866387120192, -0.620752483637526, + -0.686822082090947, -0.751991036474911, -0.816177241032366, + -0.879300816250707, -0.941284289814555, -1.00205277210548, + -1.06153412585106, -1.11965912953902, -1.15209125606363, + -1.18303795706209, -1.21243967097557, -1.24024033613795, + -1.26638751777344, -1.2908325267783, -1.31353053001724, + -1.33444065188493, -1.35352606690241, -1.37075408313861, + -1.3860962162681, -1.39952825409725, -1.41103031141265, + -1.42058687502748, -1.42818683892391, -1.43382352941176, + -0.0677959316987304, -0.135510141516264, -0.203061092697752, + -0.270367618321661, -0.337349105168966, -0.403925676338011, + -0.470018372191388, -0.535549329224909, -0.600441956453488, + -0.664621108914353, -0.728013257894563, -0.790546657497183, + -0.852151507168826, -0.912760109820348, -0.972307025182534, + -1.03072921804936, -1.08796620107298, -1.11734330684688, + -1.14542241366761, -1.17215147527661, -1.19748150370196, + -1.22136668023189, -1.24376445920887, -1.26463566440923, + -1.28394457778989, -1.30165902040125, -1.31775042528283, + -1.33219390217663, -1.34496829391156, -1.35605622433127, + -1.3654441376567, -1.3731223291943, -1.37908496732026, + -0.0654552560452185, -0.130840238317598, -0.196084832236997, + -0.261119241248049, -0.325874144931804, -0.390280856038781, + -0.454271476087672, -0.517779049177247, -0.580737713663003, + -0.643082851354971, -0.704751233898703, -0.765681166007827, + -0.825812625223718, -0.885087397885669, -0.943449211003558, + -1.00084385973427, -1.05721933017309, -1.08363260984556, + -1.10892972231476, -1.13306591228508, -1.15599905432377, + -1.1776897482886, -1.19810140858181, -1.21720034702832, + -1.23495584919023, -1.25134024394491, -1.26632896616902, + -1.27990061238639, -1.29203698925379, -1.3027231547747, + -1.31194745214773, -1.31970153617303, -1.32598039215686, + -0.0631866011810454, -0.126314024448121, -0.189323225944266, + -0.252155429622855, -0.314752260394248, -0.377055876364142, + -0.439009099864069, -0.500555546977205, -0.561639755266071, + -0.622207309412801, -0.682204964487331, -0.741580766564297, + -0.800284170415383, -0.858266154010518, -0.915479329568549, + -0.971878050905798, -1.02741851683935, -1.05095916505966, + -1.07355988300353, -1.09518298200098, -1.11579298800337, + -1.13535672194356, -1.15384337489713, -1.17122457787452, + -1.18747446608593, -1.20256973753337, -1.21648970579716, + -1.22921634689739, -1.24073434012396, -1.25103110274296, + -1.26009681850058, -1.26792445986011, -1.27450980392157, + -0.0609899671062112, -0.121931499907834, -0.182776273819559, + -0.243476183446081, -0.303983451556296, -0.364250737314095, + -0.424231243520582, -0.483878822624783, -0.543148081262693, + -0.601994483087842, -0.660374449660448, -0.718245459166594, + -0.77556614274382, -0.832296378194897, -0.88839738087751, + -0.943831791563947, -0.998563761071767, -1.01932297248919, + -1.03931289573393, -1.05850268442431, -1.07686330474076, + -1.09436760119678, -1.11099035815481, -1.12670835694783, + -1.14150042847702, -1.15534750116664, -1.16823264416727, + -1.18014110570963, -1.19106034652206, -1.20098006823603, + -1.20989223671524, -1.21779110025554, -1.22467320261438, + -0.0588653538207158, -0.117692664696737, -0.176443975862874, + -0.235081502717725, -0.29356771841795, -0.35186543888864, + -0.409937907057208, -0.467748876119982, -0.525262691652869, + -0.582444372380096, -0.639259689418052, -0.695675243814717, + -0.751658542209029, -0.807178070438803, -0.862203364930438, + -0.916705081708714, -0.970655062870329, -0.988724032134141, + -1.00618876050596, -1.02302501955507, -1.03921000453594, + -1.05472238604825, -1.06954235835487, -1.08365168424824, + -1.09703373636347, -1.10967353484472, -1.12155778127935, + -1.13267488882311, -1.14301500844809, -1.15257005125392, + -1.16133370679171, -1.16930145735932, -1.17647058823529, + -0.0568127613245593, -0.113597518814829, -0.170326332074213, + -0.226971387437788, -0.283505060979208, -0.339899981087776, + -0.396129090473949, -0.452165707462801, -0.507983586436597, + -0.563556977289561, -0.618860683760144, -0.673870120508666, + -0.728561368811012, -0.782911230742239, -0.836897281727336, + -0.890497921340098, -0.943692422235042, -0.959162343994519, + -0.974187477319609, -0.988749987393267, -1.00283308738891, + -1.01642107649797, -1.0294993754973, -1.04205455977575, -1.0540743897453, + -1.06554783856762, -1.07646511713339, -1.08681769623783, + -1.09659832590205, -1.10580105179662, -1.11442122873, -1.12245553117144, + -1.12990196078431, -0.0548321896177415, -0.109646062262112, + -0.164423342453574, -0.21914583760627, -0.273795479240071, + -0.328354363911504, -0.382804793770804, -0.437129316653241, + -0.491310765613879, -0.545332297816237, -0.599177432686724, + -0.652830089248441, -0.706274622549766, -0.759495859105203, + -0.812479131268202, -0.865210310458101, -0.917675839165906, + -0.930637908070322, -0.943309046174887, -0.955677587938894, + -0.96773255329967, -0.979463672545954, -0.990861409582094, + -1.00191698353037, -1.01262238862251, -1.02297041233532, + -1.03295465172939, -1.04256952795378, -1.05181029888394, + -1.06067306986414, -1.06915480253011, -1.0772533216919, + -1.08496732026144, -0.0529236387002626, -0.105838295038583, + -0.15873500700096, -0.211604853223171, -0.26443897320054, + -0.317228587359824, -0.369965016947774, -0.4226397036913, + -0.475244229184715, -0.527770333960126, -0.580209936197792, + -0.632555150034043, -0.684798303425294, -0.736931955527695, + -0.788948913553036, -0.840842249062722, -0.89260531366292, + -0.90315072436155, -0.913553467071793, -0.923807821191953, + -0.933908402268221, -0.943850174192191, -0.953628460609263, + -0.963238955512094, -0.972677732995088, -0.981941256147836, + -0.991026385067353, -0.999930383970971, -1.00865092739377, + -1.01718610545648, -1.02553442819203, -1.03369482892072, + -1.04166666666667, -0.0510871085721225, -0.102174217144245, + -0.153261325716368, -0.20434843428849, -0.255435542860613, + -0.306522651432736, -0.357609760004858, -0.408696868576981, + -0.459783977149103, -0.510871085721226, -0.561958194293349, + -0.613045302865471, -0.664132411437594, -0.715219520009716, + -0.766306628581839, -0.817393737153961, -0.868480845726084, + -0.876700792868204, -0.884920740010324, -0.893140687152443, + -0.901360634294563, -0.909580581436683, -0.917800528578803, + -0.926020475720922, -0.934240422863042, -0.942460370005162, + -0.950680317147282, -0.958900264289401, -0.967120211431521, + -0.975340158573641, -0.98356010571576, -0.99178005285788, -1, + -0.825130157993604, -0.832866578833246, -0.840602999672888, + -0.84833942051253, -0.856075841352172, -0.863812262191814, + -0.871548683031456, -0.879285103871099, -0.88702152471074, + -0.894757945550382, -0.902494366390025, -0.910230787229667, + -0.917967208069309, -0.925703628908951, -0.933440049748593, + -0.941176470588235, -0.773559523119003, -0.780812417656168, + -0.788065312193332, -0.795318206730497, -0.802571101267661, + -0.809823995804826, -0.81707689034199, -0.824329784879155, + -0.831582679416319, -0.838835573953484, -0.846088468490648, + -0.853341363027813, -0.860594257564977, -0.867847152102142, + -0.875100046639306, -0.882352941176471, -0.721988888244403, + -0.72875825647909, -0.735527624713777, -0.742296992948464, + -0.74906636118315, -0.755835729417837, -0.762605097652524, + -0.769374465887211, -0.776143834121898, -0.782913202356585, + -0.789682570591271, -0.796451938825959, -0.803221307060645, + -0.809990675295332, -0.816760043530019, -0.823529411764706, + -0.670418253369803, -0.676704095302012, -0.682989937234221, + -0.68927577916643, -0.69556162109864, -0.701847463030849, + -0.708133304963058, -0.714419146895267, -0.720704988827476, + -0.726990830759686, -0.733276672691895, -0.739562514624104, + -0.745848356556313, -0.752134198488523, -0.758420040420732, + -0.764705882352941, -0.618847618495203, -0.624649934124934, + -0.630452249754666, -0.636254565384398, -0.642056881014129, + -0.647859196643861, -0.653661512273592, -0.659463827903324, + -0.665266143533055, -0.671068459162787, -0.676870774792519, + -0.68267309042225, -0.688475406051982, -0.694277721681713, + -0.700080037311445, -0.705882352941176, -0.567276983620603, + -0.572595772947857, -0.57791456227511, -0.583233351602364, + -0.588552140929618, -0.593870930256872, -0.599189719584126, + -0.60450850891138, -0.609827298238634, -0.615146087565888, + -0.620464876893142, -0.625783666220396, -0.63110245554765, + -0.636421244874904, -0.641740034202158, -0.647058823529412, + -0.515706348746002, -0.520541611770778, -0.525376874795555, + -0.530212137820331, -0.535047400845108, -0.539882663869884, + -0.54471792689466, -0.549553189919437, -0.554388452944213, + -0.559223715968989, -0.564058978993766, -0.568894242018542, + -0.573729505043318, -0.578564768068095, -0.583400031092871, + -0.588235294117647, -0.464135713871402, -0.468487450593701, + -0.472839187315999, -0.477190924038298, -0.481542660760597, + -0.485894397482895, -0.490246134205194, -0.494597870927493, + -0.498949607649792, -0.50330134437209, -0.507653081094389, + -0.512004817816688, -0.516356554538986, -0.520708291261285, + -0.525060027983584, -0.529411764705882, -0.412565078996802, + -0.416433289416623, -0.420301499836444, -0.424169710256265, + -0.428037920676086, -0.431906131095907, -0.435774341515728, + -0.439642551935549, -0.44351076235537, -0.447378972775191, + -0.451247183195012, -0.455115393614833, -0.458983604034654, + -0.462851814454475, -0.466720024874297, -0.470588235294118, + -0.360994444122201, -0.364379128239545, -0.367763812356888, + -0.371148496474232, -0.374533180591575, -0.377917864708919, + -0.381302548826262, -0.384687232943606, -0.388071917060949, + -0.391456601178292, -0.394841285295636, -0.398225969412979, + -0.401610653530323, -0.404995337647666, -0.40838002176501, + -0.411764705882353, -0.309423809247601, -0.312324967062467, + -0.315226124877333, -0.318127282692199, -0.321028440507065, + -0.32392959832193, -0.326830756136796, -0.329731913951662, + -0.332633071766528, -0.335534229581393, -0.338435387396259, + -0.341336545211125, -0.344237703025991, -0.347138860840857, + -0.350040018655722, -0.352941176470588, -0.257853174373001, + -0.260270805885389, -0.262688437397777, -0.265106068910166, + -0.267523700422554, -0.269941331934942, -0.27235896344733, + -0.274776594959718, -0.277194226472106, -0.279611857984495, + -0.282029489496883, -0.284447121009271, -0.286864752521659, + -0.289282384034047, -0.291700015546435, -0.294117647058824, + -0.206282539498401, -0.208216644708311, -0.210150749918222, + -0.212084855128132, -0.214018960338043, -0.215953065547954, + -0.217887170757864, -0.219821275967775, -0.221755381177685, + -0.223689486387596, -0.225623591597506, -0.227557696807417, + -0.229491802017327, -0.231425907227238, -0.233360012437148, + -0.235294117647059, -0.154711904623801, -0.156162483531234, + -0.157613062438666, -0.159063641346099, -0.160514220253532, + -0.161964799160965, -0.163415378068398, -0.164865956975831, + -0.166316535883264, -0.167767114790697, -0.16921769369813, + -0.170668272605563, -0.172118851512995, -0.173569430420428, + -0.175020009327861, -0.176470588235294, -0.1031412697492, + -0.104108322354156, -0.105075374959111, -0.106042427564066, + -0.107009480169021, -0.107976532773977, -0.108943585378932, + -0.109910637983887, -0.110877690588843, -0.111844743193798, + -0.112811795798753, -0.113778848403708, -0.114745901008664, + -0.115712953613619, -0.116680006218574, -0.117647058823529, + -0.0515706348746002, -0.0520541611770778, -0.0525376874795554, + -0.0530212137820331, -0.0535047400845107, -0.0539882663869884, + -0.054471792689466, -0.0549553189919436, -0.0554388452944213, + -0.0559223715968989, -0.0564058978993765, -0.0568894242018542, + -0.0573729505043318, -0.0578564768068094, -0.0583400031092871, + -0.0588235294117647, -1.99773467836602, -1.92787671826128, + -1.99094384514617, -1.92098664101906, -1.97964288376187, + -1.90989963895713, -1.96385739452541, -1.89463953458834, + -1.94362313664708, -1.87523960384447, -1.91898594722899, + -1.85174250069554, -1.89000163742934, -1.82420016052488, + -1.85673586603215, -1.79267368247874, -1.81926399070904, + -1.75723319105708, -1.77767089730985, -1.71795767725908, + -1.73205080756888, -1.67493481964303, -1.68250706566236, + -1.62826078570627, -1.62915190410067, -1.57804001403482, + -1.57210618948558, -1.52438497771646, -1.51149914870852, + -1.46741592955294, -1.44746807621014, -1.40726062964875, + -1.38015802296422, -1.34107716978296, -1.30972146789057, + -1.27198432627191, -1.23631797244121, -1.20013057991125, + -1.1601138191424, -1.12567066582956, -1.0812816349112, -1.04876522296358, + -1, -0.969580430159261, -0.916453043454821, -0.888287629723321, + -0.830830026003773, -0.805062939277754, -0.743324911320656, + -0.72008685279679, -0.654135926634844, -0.633543831729984, + -0.563465113682859, -0.545621887137712, -0.471517871018856, + -0.456512153785644, -0.378502488720821, -0.36640845716302, + -0.28462967654657, -0.275506874405584, -0.190112086608367, + -0.184005290117803, -0.0951638316474855, -0.0921029481005853, + -3.67394039744206e-16, -3.54637302253088e-16, -1.8596624748649, + -1.85267548875376, -1.84179741167721, -1.82705033017919, + -1.80846509534309, -1.78608125290405, -1.75994695366523, + -1.7301188444207, -1.69666193963224, -1.65964947415068, + -1.61916273731544, -1.57529088880796, -1.52813075667641, + -1.47778661798897, -1.42436996261279, -1.36799924065351, + -1.30291586608831, -1.23513511739722, -1.16479465544081, + -1.0920379396535, -1.01701390306178, -0.939876614903009, + -0.860784931609033, -0.779902136945289, -0.697395572120544, + -0.613436256705238, -0.528198501217156, -0.441859512252038, + -0.354598991053639, -0.266598726432621, -0.178042182956429, + -0.0891140853430239, -3.42180723291172e-16, -1.79309194817686, + -1.78601038835028, -1.7753362019221, -1.76108978129798, + -1.74329961114295, -1.72200220385453, -1.6972420168504, + -1.66907135185804, -1.63755023643449, -1.60274628798466, + -1.5647345605861, -1.52359737496744, -1.47942413202542, + -1.43231111030311, -1.38236124788806, -1.32968390922441, + -1.26567411188027, -1.19917384126649, -1.1303101990299, + -1.05921564061421, -0.986027675205816, -0.910888554231246, + -0.833944949111957, -0.755347619006377, -0.675251069291918, + -0.593813201560606, -0.511194955921192, -0.427559946418037, + -0.343074090392676, -0.257905232627681, -0.172222765124244, + -0.0861972433748014, -3.30024302858459e-16, -1.72816513819717, + -1.72099133980861, -1.71051600969182, -1.6967578879447, + -1.67974315124404, -1.65950535354697, -1.63608535008037, + -1.60953120479075, -1.57989808146386, -1.54724811876101, + -1.51165028945502, -1.47318024418472, -1.43192014008187, + -1.38795845465887, -1.34138978537876, -1.29231463536147, + -1.22935190715886, -1.16410049787973, -1.09667721067852, + -1.0272037687117, -0.955806539395675, -0.88261624814397, + -0.807767682232093, -0.731399385461018, -0.653653344310913, + -0.574674666296089, -0.49461125124982, -0.41361345628364, + -0.331833755180131, -0.249426392990765, -0.166547036621249, + -0.0833524221959177, -3.1816804095495e-16, -1.66488204492582, + -1.65761834312875, -1.64733683498635, -1.63405465011935, + -1.61779571564638, -1.59859070198137, -1.57647695335516, + -1.55149840321884, -1.52370547472032, -1.49315496647972, + -1.4599099239222, -1.42403949645978, -1.38561878084574, + -1.34472865105626, -1.30145557508488, -1.25589141906468, + -1.19394925192406, -1.12991508723695, -1.06389569038667, + -0.996002323945955, -0.926350495631361, -0.855059696641182, + -0.78225313096944, -0.708057436309213, -0.632602397177528, + -0.556020650911687, -0.478447387203039, -0.400020041848849, + -0.320877985416006, -0.241162207521871, -0.161014997447444, + -0.0805796218063728, -3.06611937580643e-16, -1.60324266836283, + -1.59589139831071, -1.5857986778057, -1.57298006782193, + -1.55745730434995, -1.53925824915773, -1.51841682667476, + -1.4949729471423, -1.46897241620389, -1.44046683114081, + -1.40951346398762, -1.37617513179264, -1.34052005431705, + -1.30262169949528, -1.26255861700643, -1.22041426033404, + -1.15946614617589, -1.09661760933813, -1.03196563815435, + -0.965611306316984, -0.897659543912873, -0.828218899722882, + -0.757401295324, -0.685321771550961, -0.612098227891764, + -0.537851155407398, -0.46270336378085, -0.386779703113662, + -0.310206781100299, -0.233112676221001, -0.155626647602829, + -0.0778788422061668, -2.95355992735538e-16, -1.54324700850817, + -1.53581050535449, -1.52590153814987, -1.51353414105244, + -1.49872791735476, -1.48150799507606, -1.46190497003917, + -1.43995483656114, -1.41569890591457, -1.38918371274427, + -1.36046090965131, -1.32958715018328, -1.29662396049579, + -1.26163759997592, -1.22469891114341, -1.18588315916955, + -1.12590258991433, -1.06420806418328, -1.00088705398156, + -0.936030715824786, -0.869733684240211, -0.802093857389071, + -0.733212175295771, -0.663192391186263, -0.59214083645362, + -0.520166179783224, -0.447379180983253, -0.373892440078081, + -0.299820142233012, -0.225277799088154, -0.150381987087403, + -0.0752500833952996, -2.84400206419637e-16, -1.48489506536187, + -1.47737566426008, -1.46764541601885, -1.45571686981088, + -1.44160755466081, -1.42533993973636, -1.40694138344838, + -1.38644407147535, -1.36388494385235, -1.3393056112901, + -1.31275226091325, -1.28427555163172, -1.25393049938197, + -1.22177635249819, -1.18787645749581, -1.15229811557121, + -1.09325858313938, -1.03268645177239, -0.970659937868292, + -0.90726055246936, -0.842572916613376, -0.776684569639747, + -0.709685770884753, -0.641669295215118, -0.572730222863096, + -0.502965724039165, -0.432474838810247, -0.361358252742105, + -0.289718068814143, -0.21765757612333, -0.145281015901168, + -0.0726933453737712, -2.73744578632938e-16, -1.42818683892391, + -1.42058687502748, -1.41103031141265, -1.39952825409725, + -1.3860962162681, -1.37075408313861, -1.35352606690241, + -1.33444065188493, -1.31353053001724, -1.2908325267783, + -1.26638751777344, -1.24024033613795, -1.21243967097557, + -1.18303795706209, -1.15209125606363, -1.11965912953902, + -1.06153412585106, -1.00205277210548, -0.941284289814556, + -0.879300816250707, -0.816177241032367, -0.751991036474911, + -0.686822082090947, -0.620752483637526, -0.553866387120193, + -0.48624978817522, -0.417990337261833, -0.349177141105733, + -0.279900560843693, -0.210252007326529, -0.140323734044122, + -0.0702086281415816, -2.63389109375442e-16, -1.3731223291943, + -1.3654441376567, -1.35605622433127, -1.34496829391156, + -1.33219390217663, -1.31775042528283, -1.30165902040125, + -1.28394457778989, -1.26463566440923, -1.24376445920887, + -1.22136668023189, -1.19748150370196, -1.17215147527661, + -1.14542241366761, -1.11734330684688, -1.08796620107298, + -1.03072921804936, -0.972307025182535, -0.912760109820348, + -0.852151507168826, -0.790546657497184, -0.728013257894563, + -0.664621108914354, -0.600441956453488, -0.53554932922491, + -0.470018372191389, -0.403925676338011, -0.337349105168966, + -0.270367618321662, -0.203061092697752, -0.135510141516265, + -0.0677959316987309, -2.53333798647149e-16, -1.31970153617303, + -1.31194745214773, -1.3027231547747, -1.2920369892538, -1.27990061238639, + -1.26632896616902, -1.25134024394491, -1.23495584919023, + -1.21720034702832, -1.19810140858181, -1.1776897482886, + -1.15599905432377, -1.13306591228508, -1.10892972231476, + -1.08363260984556, -1.05721933017309, -1.00084385973427, + -0.943449211003558, -0.885087397885669, -0.825812625223718, + -0.765681166007828, -0.704751233898704, -0.643082851354972, + -0.580737713663003, -0.517779049177248, -0.454271476087672, + -0.390280856038781, -0.325874144931805, -0.261119241248049, + -0.196084832236998, -0.130840238317599, -0.065455256045219, + -2.43578646448058e-16, -1.26792445986011, -1.26009681850058, + -1.25103110274296, -1.24073434012396, -1.22921634689739, + -1.21648970579716, -1.20256973753337, -1.18747446608593, + -1.17122457787452, -1.15384337489713, -1.13535672194356, + -1.11579298800337, -1.09518298200098, -1.07355988300353, + -1.05095916505966, -1.02741851683935, -0.971878050905798, + -0.915479329568549, -0.858266154010519, -0.800284170415383, + -0.741580766564298, -0.682204964487332, -0.622207309412801, + -0.561639755266072, -0.500555546977205, -0.43900909986407, + -0.377055876364142, -0.314752260394248, -0.252155429622856, + -0.189323225944267, -0.126314024448122, -0.0631866011810459, + -2.3412365277817e-16, -1.21779110025554, -1.20989223671524, + -1.20098006823603, -1.19106034652206, -1.18014110570963, + -1.16823264416727, -1.15534750116664, -1.14150042847702, + -1.12670835694783, -1.11099035815481, -1.09436760119678, + -1.07686330474076, -1.05850268442431, -1.03931289573393, + -1.01932297248919, -0.998563761071767, -0.943831791563947, + -0.88839738087751, -0.832296378194897, -0.77556614274382, + -0.718245459166594, -0.660374449660448, -0.601994483087843, + -0.543148081262693, -0.483878822624784, -0.424231243520582, + -0.364250737314095, -0.303983451556297, -0.243476183446081, + -0.182776273819559, -0.121931499907835, -0.0609899671062116, + -2.24968817637486e-16, -1.16930145735932, -1.16133370679172, + -1.15257005125392, -1.14301500844809, -1.13267488882311, + -1.12155778127935, -1.10967353484472, -1.09703373636347, + -1.08365168424824, -1.06954235835487, -1.05472238604825, + -1.03921000453594, -1.02302501955507, -1.00618876050596, + -0.988724032134142, -0.97065506287033, -0.916705081708714, + -0.862203364930439, -0.807178070438804, -0.75165854220903, + -0.695675243814717, -0.639259689418052, -0.582444372380096, + -0.525262691652869, -0.467748876119982, -0.409937907057209, + -0.35186543888864, -0.29356771841795, -0.235081502717725, + -0.176443975862874, -0.117692664696737, -0.0588653538207162, + -2.16114141026003e-16, -1.12245553117144, -1.11442122873, + -1.10580105179662, -1.09659832590205, -1.08681769623783, + -1.07646511713339, -1.06554783856762, -1.0540743897453, + -1.04205455977575, -1.0294993754973, -1.01642107649797, + -1.00283308738891, -0.988749987393267, -0.974187477319609, + -0.959162343994519, -0.943692422235043, -0.890497921340099, + -0.836897281727336, -0.782911230742239, -0.728561368811012, + -0.673870120508666, -0.618860683760144, -0.563556977289561, + -0.507983586436597, -0.452165707462801, -0.39612909047395, + -0.339899981087776, -0.283505060979208, -0.226971387437788, + -0.170326332074213, -0.11359751881483, -0.0568127613245596, + -2.07559622943724e-16, -1.0772533216919, -1.06915480253011, + -1.06067306986414, -1.05181029888394, -1.04256952795378, + -1.03295465172939, -1.02297041233532, -1.01262238862251, + -1.00191698353037, -0.990861409582094, -0.979463672545954, + -0.96773255329967, -0.955677587938894, -0.943309046174888, + -0.930637908070322, -0.917675839165906, -0.865210310458102, + -0.812479131268202, -0.759495859105203, -0.706274622549767, + -0.652830089248441, -0.599177432686724, -0.545332297816237, + -0.491310765613879, -0.437129316653241, -0.382804793770805, + -0.328354363911504, -0.273795479240072, -0.21914583760627, + -0.164423342453575, -0.109646062262112, -0.0548321896177418, + -1.99305263390648e-16, -1.03369482892072, -1.02553442819203, + -1.01718610545648, -1.00865092739377, -0.999930383970972, + -0.991026385067353, -0.981941256147836, -0.972677732995088, + -0.963238955512094, -0.953628460609263, -0.943850174192191, + -0.933908402268222, -0.923807821191953, -0.913553467071793, + -0.90315072436155, -0.89260531366292, -0.840842249062723, + -0.788948913553036, -0.736931955527695, -0.684798303425294, + -0.632555150034043, -0.580209936197792, -0.527770333960126, + -0.475244229184715, -0.422639703691301, -0.369965016947774, + -0.317228587359824, -0.26443897320054, -0.211604853223171, + -0.15873500700096, -0.105838295038584, -0.0529236387002629, + -1.91351062366774e-16, -0.99178005285788, -0.983560105715761, + -0.975340158573641, -0.967120211431521, -0.958900264289401, + -0.950680317147282, -0.942460370005162, -0.934240422863042, + -0.926020475720922, -0.917800528578803, -0.909580581436683, + -0.901360634294563, -0.893140687152444, -0.884920740010324, + -0.876700792868204, -0.868480845726084, -0.817393737153962, + -0.766306628581839, -0.715219520009716, -0.664132411437594, + -0.613045302865471, -0.561958194293349, -0.510871085721226, + -0.459783977149104, -0.408696868576981, -0.357609760004858, + -0.306522651432736, -0.255435542860613, -0.204348434288491, + -0.153261325716368, -0.102174217144245, -0.0510871085721228, + -1.83697019872103e-16, -0.825130157993604, -0.773559523119004, + -0.721988888244403, -0.670418253369803, -0.618847618495203, + -0.567276983620603, -0.515706348746002, -0.464135713871402, + -0.412565078996802, -0.360994444122202, -0.309423809247601, + -0.257853174373001, -0.206282539498401, -0.154711904623801, + -0.103141269749201, -0.0515706348746004, -1.72215956130097e-16, + -0.832866578833246, -0.780812417656168, -0.72875825647909, + -0.676704095302012, -0.624649934124934, -0.572595772947856, + -0.520541611770779, -0.468487450593701, -0.416433289416623, + -0.364379128239545, -0.312324967062467, -0.260270805885389, + -0.208216644708312, -0.156162483531234, -0.104108322354156, + -0.052054161177078, -1.6073489238809e-16, -0.840602999672888, + -0.788065312193333, -0.735527624713777, -0.682989937234222, + -0.630452249754666, -0.577914562275111, -0.525376874795555, + -0.472839187316, -0.420301499836444, -0.367763812356889, + -0.315226124877333, -0.262688437397778, -0.210150749918222, + -0.157613062438667, -0.105075374959111, -0.0525376874795556, + -1.49253828646084e-16, -0.84833942051253, -0.795318206730497, + -0.742296992948464, -0.689275779166431, -0.636254565384397, + -0.583233351602364, -0.530212137820331, -0.477190924038298, + -0.424169710256265, -0.371148496474232, -0.318127282692199, + -0.265106068910166, -0.212084855128133, -0.159063641346099, + -0.106042427564066, -0.0530212137820333, -1.37772764904077e-16, + -0.856075841352172, -0.802571101267662, -0.749066361183151, + -0.69556162109864, -0.642056881014129, -0.588552140929618, + -0.535047400845108, -0.481542660760597, -0.428037920676086, + -0.374533180591575, -0.321028440507065, -0.267523700422554, + -0.214018960338043, -0.160514220253532, -0.107009480169022, + -0.0535047400845109, -1.26291701162071e-16, -0.863812262191814, + -0.809823995804826, -0.755835729417838, -0.701847463030849, + -0.64785919664386, -0.593870930256872, -0.539882663869884, + -0.485894397482896, -0.431906131095907, -0.377917864708919, + -0.32392959832193, -0.269941331934942, -0.215953065547954, + -0.161964799160965, -0.107976532773977, -0.0539882663869885, + -1.14810637420064e-16, -0.871548683031456, -0.81707689034199, + -0.762605097652524, -0.708133304963058, -0.653661512273592, + -0.599189719584126, -0.54471792689466, -0.490246134205194, + -0.435774341515728, -0.381302548826262, -0.326830756136796, + -0.27235896344733, -0.217887170757864, -0.163415378068398, + -0.108943585378932, -0.0544717926894661, -1.03329573678058e-16, + -0.879285103871098, -0.824329784879155, -0.769374465887211, + -0.714419146895267, -0.659463827903324, -0.60450850891138, + -0.549553189919437, -0.494597870927493, -0.439642551935549, + -0.384687232943605, -0.329731913951662, -0.274776594959718, + -0.219821275967775, -0.164865956975831, -0.109910637983887, + -0.0549553189919438, -9.18485099360515e-17, -0.88702152471074, + -0.831582679416319, -0.776143834121898, -0.720704988827477, + -0.665266143533055, -0.609827298238634, -0.554388452944213, + -0.498949607649792, -0.44351076235537, -0.388071917060949, + -0.332633071766528, -0.277194226472107, -0.221755381177685, + -0.166316535883264, -0.110877690588843, -0.0554388452944214, + -8.03674461940451e-17, -0.894757945550383, -0.838835573953484, + -0.782913202356585, -0.726990830759686, -0.671068459162787, + -0.615146087565888, -0.559223715968989, -0.50330134437209, + -0.447378972775191, -0.391456601178292, -0.335534229581393, + -0.279611857984495, -0.223689486387596, -0.167767114790697, + -0.111844743193798, -0.055922371596899, -6.88863824520386e-17, + -0.902494366390025, -0.846088468490648, -0.789682570591272, + -0.733276672691895, -0.676870774792519, -0.620464876893142, + -0.564058978993766, -0.507653081094389, -0.451247183195012, + -0.394841285295636, -0.338435387396259, -0.282029489496883, + -0.225623591597506, -0.16921769369813, -0.112811795798753, + -0.0564058978993766, -5.74053187100322e-17, -0.910230787229667, + -0.853341363027812, -0.796451938825959, -0.739562514624104, + -0.68267309042225, -0.625783666220396, -0.568894242018542, + -0.512004817816688, -0.455115393614833, -0.398225969412979, + -0.341336545211125, -0.284447121009271, -0.227557696807417, + -0.170668272605563, -0.113778848403708, -0.0568894242018542, + -4.59242549680257e-17, -0.917967208069309, -0.860594257564977, + -0.803221307060645, -0.745848356556313, -0.688475406051982, + -0.63110245554765, -0.573729505043318, -0.516356554538986, + -0.458983604034654, -0.401610653530323, -0.344237703025991, + -0.286864752521659, -0.229491802017327, -0.172118851512995, + -0.114745901008664, -0.0573729505043318, -3.44431912260193e-17, + -0.925703628908951, -0.867847152102142, -0.809990675295332, + -0.752134198488523, -0.694277721681713, -0.636421244874904, + -0.578564768068094, -0.520708291261285, -0.462851814454476, + -0.404995337647666, -0.347138860840857, -0.289282384034047, + -0.231425907227238, -0.173569430420428, -0.115712953613619, + -0.0578564768068095, -2.29621274840129e-17, -0.933440049748593, + -0.875100046639306, -0.816760043530019, -0.758420040420732, + -0.700080037311445, -0.641740034202158, -0.583400031092871, + -0.525060027983584, -0.466720024874297, -0.40838002176501, + -0.350040018655722, -0.291700015546435, -0.233360012437148, + -0.175020009327861, -0.116680006218574, -0.0583400031092871, + -1.14810637420064e-17, 0.0951638316474848, 0.0921029481005846, + 0.190112086608364, 0.1840052901178, 0.28462967654657, 0.275506874405583, + 0.37850248872082, 0.36640845716302, 0.471517871018853, 0.456512153785642, + 0.563465113682859, 0.545621887137711, 0.654135926634843, + 0.633543831729983, 0.743324911320654, 0.720086852796788, + 0.830830026003772, 0.805062939277753, 0.91645304345482, + 0.888287629723321, 0.999999999999998, 0.969580430159259, + 1.08128163491119, 1.04876522296357, 1.1601138191424, 1.12567066582956, + 1.23631797244121, 1.20013057991125, 1.30972146789057, 1.27198432627191, + 1.38015802296422, 1.34107716978296, 1.44746807621014, 1.40726062964875, + 1.51149914870852, 1.46741592955294, 1.57210618948557, 1.52438497771646, + 1.62915190410067, 1.57804001403482, 1.68250706566236, 1.62826078570626, + 1.73205080756888, 1.67493481964303, 1.77767089730985, 1.71795767725908, + 1.81926399070904, 1.75723319105708, 1.85673586603214, 1.79267368247873, + 1.89000163742934, 1.82420016052488, 1.91898594722899, 1.85174250069554, + 1.94362313664708, 1.87523960384447, 1.96385739452541, 1.89463953458834, + 1.97964288376187, 1.90989963895713, 1.99094384514617, 1.92098664101906, + 1.99773467836602, 1.92787671826128, 0.0891140853430233, + 0.178042182956426, 0.26659872643262, 0.354598991053638, + 0.441859512252036, 0.528198501217156, 0.613436256705237, + 0.697395572120542, 0.779902136945288, 0.860784931609033, + 0.939876614903007, 1.01701390306178, 1.0920379396535, 1.16479465544081, + 1.23513511739721, 1.3029158660883, 1.36799924065351, 1.42436996261279, + 1.47778661798897, 1.5281307566764, 1.57529088880796, 1.61916273731544, + 1.65964947415068, 1.69666193963224, 1.7301188444207, 1.75994695366523, + 1.78608125290405, 1.80846509534309, 1.82705033017919, 1.84179741167721, + 1.85267548875376, 1.8596624748649, 0.0861972433748008, 0.172222765124242, + 0.257905232627681, 0.343074090392675, 0.427559946418035, + 0.511194955921192, 0.593813201560606, 0.675251069291916, + 0.755347619006376, 0.833944949111957, 0.910888554231244, + 0.986027675205814, 1.05921564061421, 1.1303101990299, 1.19917384126649, + 1.26567411188027, 1.32968390922441, 1.38236124788806, 1.43231111030311, + 1.47942413202542, 1.52359737496744, 1.5647345605861, 1.60274628798466, + 1.63755023643449, 1.66907135185804, 1.6972420168504, 1.72200220385453, + 1.74329961114295, 1.76108978129798, 1.7753362019221, 1.78601038835028, + 1.79309194817686, 0.0833524221959171, 0.166547036621247, + 0.249426392990764, 0.331833755180131, 0.413613456283639, + 0.494611251249819, 0.574674666296089, 0.653653344310911, + 0.731399385461018, 0.807767682232092, 0.882616248143968, + 0.955806539395674, 1.0272037687117, 1.09667721067852, 1.16410049787973, + 1.22935190715886, 1.29231463536147, 1.34138978537876, 1.38795845465887, + 1.43192014008187, 1.47318024418472, 1.51165028945502, 1.547248118761, + 1.57989808146386, 1.60953120479075, 1.63608535008037, 1.65950535354697, + 1.67974315124404, 1.6967578879447, 1.71051600969182, 1.72099133980861, + 1.72816513819717, 0.0805796218063722, 0.161014997447442, + 0.24116220752187, 0.320877985416005, 0.400020041848847, + 0.478447387203039, 0.556020650911686, 0.632602397177527, + 0.708057436309212, 0.78225313096944, 0.855059696641181, + 0.926350495631359, 0.996002323945954, 1.06389569038667, 1.12991508723695, + 1.19394925192406, 1.25589141906468, 1.30145557508488, 1.34472865105626, + 1.38561878084574, 1.42403949645978, 1.4599099239222, 1.49315496647972, + 1.52370547472032, 1.55149840321884, 1.57647695335516, 1.59859070198137, + 1.61779571564638, 1.63405465011935, 1.64733683498635, 1.65761834312875, + 1.66488204492582, 0.0778788422061662, 0.155626647602827, 0.233112676221, + 0.310206781100299, 0.386779703113661, 0.46270336378085, + 0.537851155407398, 0.612098227891762, 0.685321771550961, + 0.757401295323999, 0.828218899722881, 0.897659543912871, + 0.965611306316983, 1.03196563815435, 1.09661760933813, 1.15946614617589, + 1.22041426033404, 1.26255861700643, 1.30262169949528, 1.34052005431705, + 1.37617513179264, 1.40951346398762, 1.44046683114081, 1.46897241620389, + 1.4949729471423, 1.51841682667476, 1.53925824915773, 1.55745730434995, + 1.57298006782193, 1.5857986778057, 1.59589139831071, 1.60324266836283, + 0.075250083395299, 0.150381987087402, 0.225277799088153, + 0.299820142233011, 0.37389244007808, 0.447379180983252, + 0.520166179783224, 0.592140836453618, 0.663192391186262, + 0.73321217529577, 0.802093857389069, 0.86973368424021, 0.936030715824785, + 1.00088705398156, 1.06420806418328, 1.12590258991433, 1.18588315916955, + 1.22469891114341, 1.26163759997592, 1.29662396049579, 1.32958715018328, + 1.36046090965131, 1.38918371274427, 1.41569890591457, 1.43995483656114, + 1.46190497003917, 1.48150799507606, 1.49872791735476, 1.51353414105244, + 1.52590153814987, 1.53581050535449, 1.54324700850817, 0.0726933453737706, + 0.145281015901166, 0.217657576123329, 0.289718068814142, + 0.361358252742103, 0.432474838810247, 0.502965724039164, + 0.572730222863095, 0.641669295215117, 0.709685770884753, + 0.776684569639746, 0.842572916613375, 0.907260552469359, + 0.970659937868292, 1.03268645177239, 1.09325858313938, 1.15229811557121, + 1.18787645749581, 1.22177635249819, 1.25393049938197, 1.28427555163172, + 1.31275226091325, 1.3393056112901, 1.36388494385235, 1.38644407147535, + 1.40694138344838, 1.42533993973636, 1.44160755466081, 1.45571686981088, + 1.46764541601885, 1.47737566426008, 1.48489506536187, 0.0702086281415811, + 0.14032373404412, 0.210252007326529, 0.279900560843692, + 0.349177141105732, 0.417990337261833, 0.486249788175219, + 0.553866387120192, 0.620752483637526, 0.686822082090947, + 0.75199103647491, 0.816177241032366, 0.879300816250706, + 0.941284289814556, 1.00205277210548, 1.06153412585106, 1.11965912953902, + 1.15209125606363, 1.18303795706209, 1.21243967097557, 1.24024033613795, + 1.26638751777344, 1.2908325267783, 1.31353053001724, 1.33444065188493, + 1.35352606690241, 1.37075408313861, 1.3860962162681, 1.39952825409725, + 1.41103031141265, 1.42058687502748, 1.42818683892391, 0.0677959316987304, + 0.135510141516264, 0.203061092697751, 0.270367618321661, + 0.337349105168965, 0.403925676338011, 0.470018372191388, + 0.535549329224909, 0.600441956453488, 0.664621108914353, + 0.728013257894562, 0.790546657497183, 0.852151507168826, + 0.912760109820348, 0.972307025182534, 1.03072921804935, 1.08796620107298, + 1.11734330684688, 1.14542241366761, 1.17215147527661, 1.19748150370196, + 1.22136668023189, 1.24376445920887, 1.26463566440923, 1.28394457778989, + 1.30165902040125, 1.31775042528283, 1.33219390217663, 1.34496829391156, + 1.35605622433127, 1.3654441376567, 1.3731223291943, 0.0654552560452185, + 0.130840238317598, 0.196084832236997, 0.261119241248049, + 0.325874144931804, 0.390280856038781, 0.454271476087672, + 0.517779049177247, 0.580737713663003, 0.643082851354971, + 0.704751233898703, 0.765681166007827, 0.825812625223718, + 0.885087397885669, 0.943449211003557, 1.00084385973427, 1.05721933017309, + 1.08363260984556, 1.10892972231476, 1.13306591228508, 1.15599905432377, + 1.1776897482886, 1.19810140858181, 1.21720034702832, 1.23495584919023, + 1.25134024394491, 1.26632896616902, 1.27990061238639, 1.29203698925379, + 1.3027231547747, 1.31194745214773, 1.31970153617303, 0.0631866011810454, + 0.126314024448121, 0.189323225944266, 0.252155429622855, + 0.314752260394247, 0.377055876364142, 0.43900909986407, + 0.500555546977205, 0.561639755266071, 0.622207309412801, + 0.682204964487331, 0.741580766564297, 0.800284170415382, + 0.858266154010519, 0.915479329568549, 0.971878050905798, + 1.02741851683935, 1.05095916505966, 1.07355988300353, 1.09518298200098, + 1.11579298800337, 1.13535672194356, 1.15384337489713, 1.17122457787452, + 1.18747446608593, 1.20256973753337, 1.21648970579716, 1.22921634689739, + 1.24073434012396, 1.25103110274296, 1.26009681850058, 1.26792445986011, + 0.0609899671062112, 0.121931499907834, 0.182776273819558, + 0.243476183446081, 0.303983451556296, 0.364250737314095, + 0.424231243520582, 0.483878822624783, 0.543148081262693, + 0.601994483087842, 0.660374449660447, 0.718245459166594, + 0.77556614274382, 0.832296378194897, 0.88839738087751, 0.943831791563947, + 0.998563761071767, 1.01932297248919, 1.03931289573393, 1.05850268442431, + 1.07686330474076, 1.09436760119678, 1.11099035815481, 1.12670835694783, + 1.14150042847702, 1.15534750116664, 1.16823264416727, 1.18014110570963, + 1.19106034652206, 1.20098006823603, 1.20989223671524, 1.21779110025554, + 0.0588653538207158, 0.117692664696737, 0.176443975862874, + 0.235081502717725, 0.293567718417949, 0.35186543888864, + 0.409937907057208, 0.467748876119982, 0.525262691652868, + 0.582444372380095, 0.639259689418051, 0.695675243814716, + 0.751658542209029, 0.807178070438803, 0.862203364930438, + 0.916705081708713, 0.970655062870329, 0.988724032134141, + 1.00618876050596, 1.02302501955507, 1.03921000453594, 1.05472238604825, + 1.06954235835487, 1.08365168424824, 1.09703373636347, 1.10967353484472, + 1.12155778127935, 1.13267488882311, 1.14301500844809, 1.15257005125392, + 1.16133370679171, 1.16930145735932, 0.0568127613245592, + 0.113597518814829, 0.170326332074213, 0.226971387437788, + 0.283505060979208, 0.339899981087776, 0.396129090473949, + 0.452165707462801, 0.507983586436597, 0.56355697728956, + 0.618860683760144, 0.673870120508666, 0.728561368811012, + 0.782911230742239, 0.836897281727336, 0.890497921340098, + 0.943692422235042, 0.959162343994519, 0.974187477319609, + 0.988749987393267, 1.00283308738891, 1.01642107649797, 1.0294993754973, + 1.04205455977575, 1.0540743897453, 1.06554783856762, 1.07646511713339, + 1.08681769623783, 1.09659832590205, 1.10580105179662, 1.11442122873, + 1.12245553117144, 0.0548321896177414, 0.109646062262111, + 0.164423342453574, 0.21914583760627, 0.273795479240071, + 0.328354363911504, 0.382804793770804, 0.43712931665324, + 0.491310765613879, 0.545332297816237, 0.599177432686724, + 0.652830089248441, 0.706274622549766, 0.759495859105203, + 0.812479131268202, 0.865210310458101, 0.917675839165906, + 0.930637908070322, 0.943309046174887, 0.955677587938894, + 0.96773255329967, 0.979463672545954, 0.990861409582094, 1.00191698353037, + 1.01262238862251, 1.02297041233532, 1.03295465172939, 1.04256952795378, + 1.05181029888394, 1.06067306986414, 1.06915480253011, 1.0772533216919, + 0.0529236387002625, 0.105838295038583, 0.158735007000959, + 0.211604853223171, 0.26443897320054, 0.317228587359824, + 0.369965016947774, 0.4226397036913, 0.475244229184714, 0.527770333960126, + 0.580209936197792, 0.632555150034043, 0.684798303425294, + 0.736931955527695, 0.788948913553036, 0.840842249062722, + 0.89260531366292, 0.90315072436155, 0.913553467071792, 0.923807821191953, + 0.933908402268221, 0.943850174192191, 0.953628460609263, + 0.963238955512094, 0.972677732995088, 0.981941256147836, + 0.991026385067353, 0.999930383970971, 1.00865092739377, 1.01718610545648, + 1.02553442819203, 1.03369482892072, 0.0510871085721224, + 0.102174217144245, 0.153261325716368, 0.20434843428849, + 0.255435542860613, 0.306522651432735, 0.357609760004858, + 0.408696868576981, 0.459783977149103, 0.510871085721226, + 0.561958194293348, 0.613045302865471, 0.664132411437594, + 0.715219520009716, 0.766306628581839, 0.817393737153961, + 0.868480845726084, 0.876700792868204, 0.884920740010324, + 0.893140687152443, 0.901360634294563, 0.909580581436683, + 0.917800528578803, 0.926020475720922, 0.934240422863042, + 0.942460370005162, 0.950680317147282, 0.958900264289401, + 0.967120211431521, 0.975340158573641, 0.98356010571576, 0.99178005285788, + 0.825130157993604, 0.832866578833246, 0.840602999672888, + 0.84833942051253, 0.856075841352172, 0.863812262191814, + 0.871548683031456, 0.879285103871098, 0.88702152471074, + 0.894757945550382, 0.902494366390025, 0.910230787229667, + 0.917967208069309, 0.925703628908951, 0.933440049748593, + 0.773559523119003, 0.780812417656168, 0.788065312193332, + 0.795318206730497, 0.802571101267661, 0.809823995804826, + 0.81707689034199, 0.824329784879155, 0.831582679416319, + 0.838835573953484, 0.846088468490648, 0.853341363027813, + 0.860594257564977, 0.867847152102142, 0.875100046639306, + 0.721988888244403, 0.72875825647909, 0.735527624713777, + 0.742296992948464, 0.749066361183151, 0.755835729417837, + 0.762605097652524, 0.769374465887211, 0.776143834121898, + 0.782913202356585, 0.789682570591271, 0.796451938825958, + 0.803221307060645, 0.809990675295332, 0.816760043530019, + 0.670418253369803, 0.676704095302012, 0.682989937234221, + 0.68927577916643, 0.69556162109864, 0.701847463030849, 0.708133304963058, + 0.714419146895268, 0.720704988827477, 0.726990830759686, + 0.733276672691895, 0.739562514624104, 0.745848356556313, + 0.752134198488523, 0.758420040420732, 0.618847618495203, + 0.624649934124934, 0.630452249754666, 0.636254565384398, + 0.642056881014129, 0.647859196643861, 0.653661512273592, + 0.659463827903324, 0.665266143533055, 0.671068459162787, + 0.676870774792519, 0.68267309042225, 0.688475406051982, + 0.694277721681713, 0.700080037311445, 0.567276983620603, + 0.572595772947856, 0.57791456227511, 0.583233351602364, + 0.588552140929618, 0.593870930256872, 0.599189719584126, + 0.60450850891138, 0.609827298238634, 0.615146087565888, + 0.620464876893142, 0.625783666220396, 0.63110245554765, + 0.636421244874904, 0.641740034202158, 0.515706348746002, + 0.520541611770778, 0.525376874795555, 0.530212137820331, + 0.535047400845108, 0.539882663869884, 0.54471792689466, + 0.549553189919436, 0.554388452944213, 0.559223715968989, + 0.564058978993766, 0.568894242018542, 0.573729505043318, + 0.578564768068095, 0.583400031092871, 0.464135713871402, + 0.468487450593701, 0.472839187315999, 0.477190924038298, + 0.481542660760597, 0.485894397482895, 0.490246134205194, + 0.494597870927493, 0.498949607649792, 0.50330134437209, + 0.507653081094389, 0.512004817816687, 0.516356554538986, + 0.520708291261285, 0.525060027983584, 0.412565078996802, + 0.416433289416623, 0.420301499836444, 0.424169710256265, + 0.428037920676086, 0.431906131095907, 0.435774341515728, + 0.439642551935549, 0.44351076235537, 0.447378972775191, + 0.451247183195012, 0.455115393614833, 0.458983604034654, + 0.462851814454475, 0.466720024874297, 0.360994444122201, + 0.364379128239545, 0.367763812356888, 0.371148496474232, + 0.374533180591575, 0.377917864708919, 0.381302548826262, + 0.384687232943605, 0.388071917060949, 0.391456601178292, + 0.394841285295636, 0.398225969412979, 0.401610653530323, + 0.404995337647666, 0.40838002176501, 0.309423809247601, + 0.312324967062467, 0.315226124877333, 0.318127282692199, + 0.321028440507065, 0.32392959832193, 0.326830756136796, + 0.329731913951662, 0.332633071766528, 0.335534229581393, + 0.338435387396259, 0.341336545211125, 0.344237703025991, + 0.347138860840857, 0.350040018655722, 0.257853174373001, + 0.260270805885389, 0.262688437397777, 0.265106068910166, + 0.267523700422554, 0.269941331934942, 0.27235896344733, + 0.274776594959718, 0.277194226472106, 0.279611857984495, + 0.282029489496883, 0.284447121009271, 0.286864752521659, + 0.289282384034047, 0.291700015546435, 0.206282539498401, + 0.208216644708311, 0.210150749918222, 0.212084855128132, + 0.214018960338043, 0.215953065547953, 0.217887170757864, + 0.219821275967775, 0.221755381177685, 0.223689486387596, + 0.225623591597506, 0.227557696807417, 0.229491802017327, + 0.231425907227238, 0.233360012437148, 0.154711904623801, + 0.156162483531233, 0.157613062438666, 0.159063641346099, + 0.160514220253532, 0.161964799160965, 0.163415378068398, + 0.164865956975831, 0.166316535883264, 0.167767114790697, + 0.16921769369813, 0.170668272605562, 0.172118851512995, + 0.173569430420428, 0.175020009327861, 0.1031412697492, 0.104108322354156, + 0.105075374959111, 0.106042427564066, 0.107009480169021, + 0.107976532773977, 0.108943585378932, 0.109910637983887, + 0.110877690588843, 0.111844743193798, 0.112811795798753, + 0.113778848403708, 0.114745901008664, 0.115712953613619, + 0.116680006218574, 0.0515706348746001, 0.0520541611770777, + 0.0525376874795553, 0.053021213782033, 0.0535047400845106, + 0.0539882663869883, 0.0544717926894659, 0.0549553189919436, + 0.0554388452944212, 0.0559223715968989, 0.0564058978993765, + 0.0568894242018541, 0.0573729505043318, 0.0578564768068094, + 0.0583400031092871, 2.09762141228432, 2.1, 2.19750814620262, 2.2, + 2.29739488012092, 2.3, 2.39728161403922, 2.4, 2.49716834795752, 2.5, + 2.09049103740348, 2.19003822966079, 2.28958542191809, 2.3891326141754, + 2.48867980643271, 2.07862502794996, 2.17760717213805, 2.27658931632615, + 2.37557146051424, 2.47455360470233, 2.06205026425168, 2.16024313397795, + 2.25843600370423, 2.3566288734305, 2.45482174315677, 2.04080429347944, + 2.13798545031179, 2.23516660714415, 2.3323477639765, 2.42952892080885, + 2.01493524459044, 2.11088454195189, 2.20683383931334, 2.30278313667479, + 2.39873243403624, 1.9845017193008, 2.07900180117227, 2.17350188304374, + 2.2680019649152, 2.36250204678667, 1.94957265933375, 2.04240945263536, + 2.13524624593697, 2.22808303923857, 2.32091983254018, 1.91022719024449, + 2.00119038977994, 2.09215358931539, 2.18311678885084, 2.2740799883863, + 1.86655444217534, 1.95543798704083, 2.04432153190632, 2.13320507677182, + 2.22208862163731, 1.81865334794732, 1.90525588832576, 1.99185842870421, + 2.07846096908265, 2.1650635094611, 1.76663241894548, 1.8507577722286, + 1.93488312551172, 2.01900847879483, 2.10313383207795, 1.7106094993057, + 1.79206709451074, 1.87352468971577, 1.95498228492081, 2.03643988012584, + 1.65071149895985, 1.72931680843413, 1.80792211790841, 1.88652742738269, + 1.96513273685697, 1.58707410614394, 1.66264906357937, 1.73822402101479, + 1.81379897845022, 1.88937393588565, 1.51984148002065, 1.59221488383115, + 1.66458828764166, 1.73696169145217, 1.80933509526268, 1.44916592411243, + 1.51817382526065, 1.58718172640886, 1.65618962755707, 1.72519752870528, + 1.3752075412851, 1.44069361467963, 1.50617968807416, 1.57166576146868, + 1.63715183486321, 1.29813387106327, 1.35994976968533, 1.42176566830739, + 1.48358156692945, 1.54539746555151, 1.21811951009952, 1.27612520105664, + 1.33413089201376, 1.39213658297088, 1.450142273928, 1.13534571665675, + 1.18940979840231, 1.24347388014787, 1.29753796189343, 1.35160204363899, + 1.05, 1.1, 1.15, 1.2, 1.25, 0.962275695627561, 1.0080983478003, + 1.05392099997304, 1.09974365214578, 1.14556630431853, 0.872371527303961, + 0.91391302860415, 0.955454529904339, 0.996996031204527, 1.03853753250472, + 0.780491156886687, 0.81765740245272, 0.854823648018753, + 0.891989893584786, 0.929156139150819, 0.686842722966585, + 0.719549519298327, 0.752256315630069, 0.784963111961812, + 0.817669908293554, 0.591638369367002, 0.619811625051145, + 0.647984880735288, 0.676158136419431, 0.704331392103574, + 0.495093764569796, 0.518669658120739, 0.542245551671682, + 0.565821445222625, 0.589397338773568, 0.397427613156861, + 0.416352737592902, 0.435277862028943, 0.454202986464984, + 0.473128110901025, 0.298861160373898, 0.313092644201227, + 0.327324128028556, 0.341555611855884, 0.355787095683213, + 0.199617690938783, 0.209123295269201, 0.21862889959962, + 0.228134503930038, 0.237640108260456, 0.0999220232298589, + 0.104680214812233, 0.109438406394607, 0.114196597976981, + 0.118954789559355, -2.63299061816681e-16, -1.59204083889156e-16, + -5.51091059616309e-17, 4.89858719658942e-17, 1.53080849893419e-16, + -0.0999220232298594, -0.104680214812233, -0.109438406394607, + -0.114196597976981, -0.118954789559355, -0.199617690938785, + -0.209123295269203, -0.218628899599621, -0.228134503930039, + -0.237640108260457, -0.298861160373899, -0.313092644201228, + -0.327324128028556, -0.341555611855885, -0.355787095683213, + -0.397427613156862, -0.416352737592903, -0.435277862028944, + -0.454202986464984, -0.473128110901025, -0.495093764569798, + -0.518669658120741, -0.542245551671683, -0.565821445222626, + -0.589397338773568, -0.591638369367002, -0.619811625051145, + -0.647984880735288, -0.676158136419431, -0.704331392103575, + -0.686842722966586, -0.719549519298328, -0.75225631563007, + -0.784963111961812, -0.817669908293554, -0.780491156886688, + -0.817657402452721, -0.854823648018753, -0.891989893584786, + -0.929156139150819, -0.872371527303961, -0.91391302860415, + -0.955454529904338, -0.996996031204527, -1.03853753250472, + -0.962275695627562, -1.0080983478003, -1.05392099997304, + -1.09974365214578, -1.14556630431853, -1.05, -1.1, -1.15, -1.2, -1.25, + -1.13534571665676, -1.18940979840232, -1.24347388014787, + -1.29753796189343, -1.35160204363899, -1.21811951009952, + -1.27612520105664, -1.33413089201376, -1.39213658297088, -1.450142273928, + -1.29813387106327, -1.35994976968533, -1.42176566830739, + -1.48358156692945, -1.54539746555151, -1.3752075412851, + -1.44069361467963, -1.50617968807416, -1.57166576146868, + -1.63715183486321, -1.44916592411244, -1.51817382526065, + -1.58718172640886, -1.65618962755707, -1.72519752870528, + -1.51984148002065, -1.59221488383115, -1.66458828764166, + -1.73696169145217, -1.80933509526268, -1.58707410614394, + -1.66264906357937, -1.73822402101479, -1.81379897845022, + -1.88937393588565, -1.65071149895985, -1.72931680843413, + -1.80792211790841, -1.88652742738269, -1.96513273685697, + -1.71060949930571, -1.79206709451074, -1.87352468971577, + -1.95498228492081, -2.03643988012584, -1.76663241894548, + -1.8507577722286, -1.93488312551172, -2.01900847879483, + -2.10313383207795, -1.81865334794732, -1.90525588832577, + -1.99185842870421, -2.07846096908265, -2.1650635094611, + -1.86655444217534, -1.95543798704083, -2.04432153190632, + -2.13320507677182, -2.22208862163731, -1.91022719024449, + -2.00119038977994, -2.09215358931539, -2.18311678885084, + -2.2740799883863, -1.94957265933375, -2.04240945263536, + -2.13524624593697, -2.22808303923857, -2.32091983254018, + -1.9845017193008, -2.07900180117227, -2.17350188304374, -2.2680019649152, + -2.36250204678667, -2.01493524459044, -2.11088454195189, + -2.20683383931334, -2.30278313667479, -2.39873243403624, + -2.04080429347944, -2.13798545031179, -2.23516660714415, + -2.3323477639765, -2.42952892080885, -2.06205026425168, + -2.16024313397795, -2.25843600370423, -2.3566288734305, + -2.45482174315677, -2.07862502794996, -2.17760717213805, + -2.27658931632615, -2.37557146051424, -2.47455360470233, + -2.09049103740348, -2.19003822966079, -2.28958542191809, + -2.3891326141754, -2.48867980643271, -2.09762141228432, + -2.19750814620262, -2.29739488012092, -2.39728161403922, + -2.49716834795752, -2.1, -2.2, -2.3, -2.4, -2.5, -2.09762141228432, + -2.19750814620262, -2.29739488012092, -2.39728161403922, + -2.49716834795752, -2.09049103740348, -2.19003822966079, + -2.28958542191809, -2.3891326141754, -2.48867980643271, + -2.07862502794996, -2.17760717213805, -2.27658931632615, + -2.37557146051424, -2.47455360470233, -2.06205026425168, + -2.16024313397795, -2.25843600370423, -2.3566288734305, + -2.45482174315677, -2.04080429347944, -2.13798545031179, + -2.23516660714415, -2.3323477639765, -2.42952892080885, + -2.01493524459044, -2.11088454195189, -2.20683383931334, + -2.30278313667479, -2.39873243403624, -1.9845017193008, + -2.07900180117227, -2.17350188304374, -2.2680019649152, + -2.36250204678667, -1.94957265933375, -2.04240945263536, + -2.13524624593697, -2.22808303923857, -2.32091983254018, + -1.91022719024449, -2.00119038977994, -2.09215358931539, + -2.18311678885084, -2.2740799883863, -1.86655444217534, + -1.95543798704083, -2.04432153190632, -2.13320507677182, + -2.22208862163731, -1.81865334794732, -1.90525588832576, + -1.99185842870421, -2.07846096908265, -2.1650635094611, + -1.76663241894548, -1.8507577722286, -1.93488312551172, + -2.01900847879483, -2.10313383207795, -1.71060949930571, + -1.79206709451074, -1.87352468971577, -1.95498228492081, + -2.03643988012584, -1.65071149895985, -1.72931680843413, + -1.80792211790841, -1.88652742738269, -1.96513273685697, + -1.58707410614394, -1.66264906357937, -1.73822402101479, + -1.81379897845022, -1.88937393588564, -1.51984148002065, + -1.59221488383115, -1.66458828764166, -1.73696169145217, + -1.80933509526268, -1.44916592411244, -1.51817382526065, + -1.58718172640886, -1.65618962755707, -1.72519752870528, + -1.3752075412851, -1.44069361467963, -1.50617968807416, + -1.57166576146868, -1.63715183486321, -1.29813387106327, + -1.35994976968533, -1.42176566830739, -1.48358156692945, + -1.54539746555151, -1.21811951009952, -1.27612520105664, + -1.33413089201376, -1.39213658297088, -1.450142273928, -1.13534571665675, + -1.18940979840231, -1.24347388014787, -1.29753796189343, + -1.35160204363899, -1.05, -1.1, -1.15, -1.2, -1.25, -0.962275695627561, + -1.0080983478003, -1.05392099997304, -1.09974365214578, + -1.14556630431852, -0.872371527303961, -0.91391302860415, + -0.955454529904338, -0.996996031204527, -1.03853753250472, + -0.780491156886687, -0.81765740245272, -0.854823648018753, + -0.891989893584785, -0.929156139150818, -0.686842722966585, + -0.719549519298327, -0.752256315630069, -0.784963111961811, + -0.817669908293553, -0.591638369367002, -0.619811625051145, + -0.647984880735288, -0.676158136419431, -0.704331392103574, + -0.495093764569797, -0.51866965812074, -0.542245551671682, + -0.565821445222625, -0.589397338773567, -0.397427613156861, + -0.416352737592903, -0.435277862028944, -0.454202986464985, + -0.473128110901026, -0.298861160373899, -0.313092644201227, + -0.327324128028556, -0.341555611855885, -0.355787095683213, + -0.199617690938783, -0.209123295269201, -0.21862889959962, + -0.228134503930038, -0.237640108260456, -0.099922023229859, + -0.104680214812233, -0.109438406394608, -0.114196597976982, + -0.118954789559357, 6.12323399573675e-18, -1.10218211923262e-16, + -2.2655965784226e-16, -3.42901103761259e-16, -4.59242549680257e-16, + 0.099922023229859, 0.104680214812233, 0.109438406394608, + 0.114196597976982, 0.118954789559356, 0.199617690938784, + 0.209123295269202, 0.218628899599621, 0.228134503930039, + 0.237640108260458, 0.298861160373899, 0.313092644201228, + 0.327324128028557, 0.341555611855886, 0.355787095683214, + 0.397427613156861, 0.416352737592902, 0.435277862028943, + 0.454202986464984, 0.473128110901025, 0.495093764569797, + 0.51866965812074, 0.542245551671683, 0.565821445222626, + 0.589397338773569, 0.591638369367003, 0.619811625051146, + 0.647984880735289, 0.676158136419432, 0.704331392103575, + 0.686842722966585, 0.719549519298328, 0.75225631563007, + 0.784963111961812, 0.817669908293554, 0.780491156886688, + 0.817657402452721, 0.854823648018753, 0.891989893584786, + 0.929156139150819, 0.872371527303962, 0.913913028604151, + 0.955454529904339, 0.996996031204528, 1.03853753250472, + 0.962275695627562, 1.0080983478003, 1.05392099997304, 1.09974365214578, + 1.14556630431853, 1.05, 1.1, 1.15, 1.2, 1.25, 1.13534571665675, + 1.18940979840231, 1.24347388014787, 1.29753796189343, 1.35160204363899, + 1.21811951009952, 1.27612520105664, 1.33413089201376, 1.39213658297087, + 1.45014227392799, 1.29813387106327, 1.35994976968533, 1.42176566830739, + 1.48358156692945, 1.54539746555151, 1.3752075412851, 1.44069361467963, + 1.50617968807416, 1.57166576146868, 1.63715183486321, 1.44916592411244, + 1.51817382526065, 1.58718172640886, 1.65618962755707, 1.72519752870528, + 1.51984148002065, 1.59221488383115, 1.66458828764166, 1.73696169145217, + 1.80933509526268, 1.58707410614394, 1.66264906357937, 1.73822402101479, + 1.81379897845022, 1.88937393588565, 1.65071149895985, 1.72931680843413, + 1.80792211790841, 1.88652742738269, 1.96513273685697, 1.71060949930571, + 1.79206709451074, 1.87352468971577, 1.95498228492081, 2.03643988012584, + 1.76663241894548, 1.8507577722286, 1.93488312551172, 2.01900847879483, + 2.10313383207795, 1.81865334794732, 1.90525588832577, 1.99185842870421, + 2.07846096908265, 2.1650635094611, 1.86655444217534, 1.95543798704083, + 2.04432153190632, 2.13320507677182, 2.22208862163731, 1.91022719024449, + 2.00119038977994, 2.09215358931539, 2.18311678885084, 2.2740799883863, + 1.94957265933375, 2.04240945263536, 2.13524624593697, 2.22808303923857, + 2.32091983254018, 1.9845017193008, 2.07900180117227, 2.17350188304374, + 2.2680019649152, 2.36250204678667, 2.01493524459044, 2.11088454195189, + 2.20683383931334, 2.30278313667479, 2.39873243403624, 2.04080429347944, + 2.13798545031179, 2.23516660714415, 2.3323477639765, 2.42952892080885, + 2.06205026425168, 2.16024313397795, 2.25843600370423, 2.3566288734305, + 2.45482174315677, 2.07862502794996, 2.17760717213805, 2.27658931632615, + 2.37557146051424, 2.47455360470233, 2.09049103740348, 2.19003822966079, + 2.28958542191809, 2.3891326141754, 2.48867980643271, 2.09762141228432, + 2.19750814620262, 2.29739488012092, 2.39728161403922, 2.49716834795752, + 2.59705508187582, 2.6, 2.58822699869002, 2.57353574889042, + 2.55301461288304, 2.52671007764121, 2.49468173139769, 2.45700212865814, + 2.41375662584179, 2.36504318792175, 2.3109721665028, 2.25166604983954, + 2.18725918536107, 2.11789747533087, 2.04373804633125, 1.96494889332107, + 1.88170849907318, 1.79420542985349, 1.70263790825774, 1.60721336417357, + 1.50814796488512, 1.40566612538455, 1.3, 1.19138895649127, + 1.0800790338049, 0.966322384716852, 0.850376704625296, 0.732504647787717, + 0.612973232324511, 0.492053235337067, 0.370018579510541, + 0.247145712590875, 0.12371298114173, 1.59204083889156e-16, + -0.123712981141729, -0.247145712590875, -0.370018579510542, + -0.492053235337066, -0.612973232324511, -0.732504647787718, + -0.850376704625296, -0.966322384716851, -1.0800790338049, + -1.19138895649127, -1.3, -1.40566612538455, -1.50814796488512, + -1.60721336417357, -1.70263790825774, -1.79420542985349, + -1.88170849907318, -1.96494889332107, -2.04373804633125, + -2.11789747533087, -2.18725918536107, -2.25166604983954, + -2.3109721665028, -2.36504318792175, -2.41375662584179, + -2.45700212865814, -2.49468173139769, -2.52671007764121, + -2.55301461288304, -2.57353574889042, -2.58822699869002, + -2.59705508187582, -2.6, -2.59705508187582, -2.58822699869002, + -2.57353574889043, -2.55301461288304, -2.52671007764121, + -2.49468173139769, -2.45700212865814, -2.41375662584179, + -2.36504318792175, -2.3109721665028, -2.25166604983954, + -2.18725918536107, -2.11789747533087, -2.04373804633125, + -1.96494889332107, -1.88170849907318, -1.79420542985349, + -1.70263790825774, -1.60721336417357, -1.50814796488512, + -1.40566612538455, -1.3, -1.19138895649127, -1.0800790338049, + -0.966322384716853, -0.850376704625297, -0.732504647787717, + -0.612973232324512, -0.492053235337068, -0.370018579510542, + -0.247145712590874, -0.123712981141729, -4.77612251667468e-16, + 0.12371298114173, 0.247145712590876, 0.370018579510541, + 0.492053235337067, 0.612973232324509, 0.732504647787716, + 0.850376704625296, 0.96632238471685, 1.0800790338049, 1.19138895649127, + 1.3, 1.40566612538455, 1.50814796488511, 1.60721336417357, + 1.70263790825774, 1.79420542985349, 1.88170849907318, 1.96494889332107, + 2.04373804633125, 2.11789747533087, 2.18725918536107, 2.25166604983954, + 2.3109721665028, 2.36504318792175, 2.41375662584179, 2.45700212865814, + 2.49468173139769, 2.52671007764121, 2.55301461288304, 2.57353574889042, + 2.58822699869002, 2.59705508187582, 2.69717778679766, 2.7, + 2.7973004917195, 2.8, 2.89742319664134, 2.9, 2.99754590156318, 3, + 3.09766860648502, 3.1, 3.19779131140687, 3.2, 3.29791401632871, 3.3, + 3.39803672125055, 3.4, 3.49815942617239, 3.5, 3.59828213109423, 3.6, + 3.69840483601607, 3.7, 3.79852754093791, 3.8, 3.89865024585975, 3.9, + 3.99877295078159, 4, 4.09889565570343, 4.1, 4.19901836062527, 4.2, + 4.29914106554711, 4.3, 4.39926377046895, 4.4, 4.4993864753908, 4.5, + 4.59950918031264, 4.6, 4.69963188523448, 4.7, 4.79975459015632, 4.8, + 4.89987729507816, 4.9, 5, 5, 2.68871754041127, 2.78920808213252, + 2.88969862385377, 2.99018916557502, 3.09067970729627, 3.19117024901752, + 3.29166079073876, 3.39215133246001, 3.49264187418126, 3.59313241590251, + 3.69362295762376, 3.79411349934501, 3.89460404106626, 3.99509458278751, + 4.09558512450876, 4.19607566623001, 4.29656620795126, 4.3970567496725, + 4.49754729139375, 4.598037833115, 4.69852837483625, 4.7990189165575, + 4.89950945827875, 5, 2.67463842601999, 2.77574110314956, + 2.87684378027912, 2.97794645740869, 3.07904913453825, 3.18015181166782, + 3.28125448879738, 3.38235716592695, 3.48345984305652, 3.58456252018608, + 3.68566519731565, 3.78676787444521, 3.88787055157478, 3.98897322870434, + 4.09007590583391, 4.19117858296347, 4.29228126009304, 4.39338393722261, + 4.49448661435217, 4.59558929148174, 4.6966919686113, 4.79779464574087, + 4.89889732287043, 5, 2.65497233734624, 2.75693006180945, + 2.85888778627266, 2.96084551073586, 3.06280323519907, 3.16476095966228, + 3.26671868412548, 3.36867640858869, 3.4706341330519, 3.57259185751511, + 3.67454958197831, 3.77650730644152, 3.87846503090473, 3.98042275536793, + 4.08238047983114, 4.18433820429435, 4.28629592875755, 4.38825365322076, + 4.49021137768397, 4.59216910214717, 4.69412682661038, 4.79608455107359, + 4.89804227553679, 5, 2.62976382440616, 2.73281757117111, + 2.83587131793606, 2.93892506470101, 3.04197881146596, 3.14503255823091, + 3.24808630499586, 3.35114005176081, 3.45419379852575, 3.5572475452907, + 3.66030129205565, 3.7633550388206, 3.86640878558555, 3.9694625323505, + 4.07251627911545, 4.1755700258804, 4.27862377264535, 4.3816775194103, + 4.48473126617525, 4.5877850129402, 4.69083875970515, 4.7938925064701, + 4.89694625323505, 5, 2.59906999258946, 2.70345825378122, + 2.80784651497298, 2.91223477616474, 3.01662303735651, 3.12101129854827, + 3.22539955974003, 3.3297878209318, 3.43417608212356, 3.53856434331532, + 3.64295260450708, 3.74734086569885, 3.85172912689061, 3.95611738808237, + 4.06050564927413, 4.1648939104659, 4.26928217165766, 4.37367043284942, + 4.47805869404119, 4.58244695523295, 4.68683521642471, 4.79122347761647, + 4.89561173880824, 5, 2.56296037329738, 2.66891861793663, + 2.77487686257587, 2.88083510721511, 2.98679335185436, 3.0927515964936, + 3.19870984113285, 3.30466808577209, 3.41062633041134, 3.51658457505058, + 3.62254281968982, 3.72850106432907, 3.83445930896831, 3.94041755360756, + 4.0463757982468, 4.15233404288605, 4.25829228752529, 4.36425053216453, + 4.47020877680378, 4.57616702144302, 4.68212526608227, 4.78808351072151, + 4.89404175536076, 5, 2.52151676643171, 2.62927690702164, + 2.73703704761157, 2.84479718820149, 2.95255732879142, 3.06031746938134, + 3.16807760997127, 3.27583775056119, 3.38359789115112, 3.49135803174104, + 3.59911817233097, 3.70687831292089, 3.81463845351082, 3.92239859410075, + 4.03015873469067, 4.1379188752806, 4.24567901587052, 4.35343915646045, + 4.46119929705037, 4.5689594376403, 4.67671957823022, 4.78447971882015, + 4.89223985941007, 5, 2.47483305509168, 2.5846229222616, 2.69441278943153, + 2.80420265660146, 2.91399252377138, 3.02378239094131, 3.13357225811124, + 3.24336212528117, 3.35315199245109, 3.46294185962102, 3.57273172679095, + 3.68252159396087, 3.7923114611308, 3.90210132830073, 4.01189119547066, + 4.12168106264058, 4.23147092981051, 4.34126079698044, 4.45105066415036, + 4.56084053132029, 4.67063039849022, 4.78042026566015, 4.89021013283007, + 5, 2.42301499289852, 2.53505781929423, 2.64710064568995, + 2.75914347208567, 2.87118629848138, 2.9832291248771, 3.09527195127282, + 3.20731477766853, 3.31935760406425, 3.43140043045997, 3.54344325685568, + 3.6554860832514, 3.76752890964712, 3.87957173604283, 3.99161456243855, + 4.10365738883427, 4.21570021522998, 4.3277430416257, 4.43978586802142, + 4.55182869441713, 4.66387152081285, 4.77591434720857, 4.88795717360428, + 5, 2.36617996442956, 2.48069387901958, 2.5952077936096, 2.70972170819962, + 2.82423562278964, 2.93874953737966, 3.05326345196967, 3.16777736655969, + 3.28229128114971, 3.39680519573973, 3.51131911032975, 3.62583302491977, + 3.74034693950979, 3.85486085409981, 3.96937476868983, 4.08388868327985, + 4.19840259786987, 4.31291651245988, 4.4274304270499, 4.54194434163992, + 4.65645825622994, 4.77097217081996, 4.88548608540998, 5, + 2.30445671930436, 2.42165425324765, 2.53885178719094, 2.65604932113423, + 2.77324685507751, 2.8904443890208, 3.00764192296409, 3.12483945690738, + 3.24203699085067, 3.35923452479396, 3.47643205873725, 3.59362959268054, + 3.71082712662382, 3.82802466056711, 3.9452221945104, 4.06241972845369, + 4.17961726239698, 4.29681479634027, 4.41401233028356, 4.53120986422685, + 4.64840739817013, 4.76560493211342, 4.88280246605671, 5, + 2.23798508052542, 2.35807268571997, 2.47816029091451, 2.59824789610906, + 2.71833550130361, 2.83842310649815, 2.9585107116927, 3.07859831688725, + 3.1986859220818, 3.31877352727634, 3.43886113247089, 3.55894873766544, + 3.67903634285998, 3.79912394805453, 3.91921155324908, 4.03929915844362, + 4.15938676363817, 4.27947436883272, 4.39956197402727, 4.51964957922181, + 4.63973718441636, 4.75982478961091, 4.87991239480545, 5, + 2.16691562773411, 2.29009320913698, 2.41327079053984, 2.53644837194271, + 2.65962595334557, 2.78280353474844, 2.9059811161513, 3.02915869755417, + 3.15233627895703, 3.27551386035989, 3.39869144176276, 3.52186902316562, + 3.64504660456849, 3.76822418597135, 3.89140176737422, 4.01457934877708, + 4.13775693017995, 4.26093451158281, 4.38411209298568, 4.50728967438854, + 4.63046725579141, 4.75364483719427, 4.87682241859714, 5, + 2.09140935609936, 2.21786981887765, 2.34433028165594, 2.47079074443423, + 2.59725120721251, 2.7237116699908, 2.85017213276909, 2.97663259554738, + 3.10309305832567, 3.22955352110396, 3.35601398388225, 3.48247444666054, + 3.60893490943882, 3.73539537221711, 3.8618558349954, 3.98831629777369, + 4.11477676055198, 4.24123722333027, 4.36769768610856, 4.49415814888685, + 4.62061861166513, 4.74707907444342, 4.87353953722171, 5, 2.0116373116118, + 2.14156612415042, 2.27149493668903, 2.40142374922765, 2.53135256176627, + 2.66128137430489, 2.7912101868435, 2.92113899938212, 3.05106781192074, + 3.18099662445936, 3.31092543699797, 3.44085424953659, 3.57078306207521, + 3.70071187461383, 3.83064068715244, 3.96056949969106, 4.09049831222968, + 4.2204271247683, 4.35035593730691, 4.48028474984553, 4.61021356238415, + 4.74014237492277, 4.87007118746138, 5, 1.91515394098333, + 2.03610245211317, 2.15705096324302, 2.27799947437286, 2.3989479855027, + 2.51989649663254, 2.64084500776238, 2.76179351889223, 2.88274203002207, + 3.00369054115191, 3.12463905228175, 3.24558756341159, 3.36653607454144, + 3.48748458567128, 3.60843309680112, 3.72938160793096, 3.8503301190608, + 3.97127863019065, 4.09222714132049, 4.21317565245033, 4.33412416358017, + 4.45507267471001, 4.57602118583986, 4.6969696969697, 1.81477547016114, + 1.92691303206455, 2.03905059396795, 2.15118815587135, 2.26332571777475, + 2.37546327967815, 2.48760084158156, 2.59973840348496, 2.71187596538836, + 2.82401352729176, 2.93615108919517, 3.04828865109857, 3.16042621300197, + 3.27256377490537, 3.38470133680877, 3.49683889871218, 3.60897646061558, + 3.72111402251898, 3.83325158442238, 3.94538914632579, 4.05752670822919, + 4.16966427013259, 4.28180183203599, 4.39393939393939, 1.71070068612089, + 1.8141880080682, 1.91767533001551, 2.02116265196283, 2.12464997391014, + 2.22813729585745, 2.33162461780477, 2.43511193975208, 2.53859926169939, + 2.64208658364671, 2.74557390559402, 2.84906122754133, 2.95254854948865, + 3.05603587143596, 3.15952319338327, 3.26301051533059, 3.3664978372779, + 3.46998515922521, 3.57347248117253, 3.67695980311984, 3.78044712506715, + 3.88393444701446, 3.98742176896178, 4.09090909090909, 1.60313674917652, + 1.69812553346792, 1.79311431775932, 1.88810310205073, 1.98309188634213, + 2.07808067063353, 2.17306945492494, 2.26805823921634, 2.36304702350774, + 2.45803580779915, 2.55302459209055, 2.64801337638195, 2.74300216067336, + 2.83799094496476, 2.93297972925616, 3.02796851354756, 3.12295729783897, + 3.21794608213037, 3.31293486642177, 3.40792365071318, 3.50291243500458, + 3.59790121929598, 3.69289000358739, 3.78787878787879, 1.49229872369555, + 1.57893132200655, 1.66556392031755, 1.75219651862854, 1.83882911693954, + 1.92546171525054, 2.01209431356153, 2.09872691187253, 2.18535951018353, + 2.27199210849452, 2.35862470680552, 2.44525730511652, 2.53188990342752, + 2.61852250173851, 2.70515510004951, 2.79178769836051, 2.8784202966715, + 2.9650528949825, 3.0516854932935, 3.1383180916045, 3.22495068991549, + 3.31158328822649, 3.39821588653749, 3.48484848484848, 1.37840909090909, + 1.45681818181818, 1.53522727272727, 1.61363636363636, 1.69204545454545, + 1.77045454545455, 1.84886363636364, 1.92727272727273, 2.00568181818182, + 2.08409090909091, 2.1625, 2.24090909090909, 2.31931818181818, + 2.39772727272727, 2.47613636363636, 2.55454545454545, 2.63295454545455, + 2.71136363636364, 2.78977272727273, 2.86818181818182, 2.94659090909091, + 3.025, 3.10340909090909, 3.18181818181818, 1.26169724492029, + 1.33200553334932, 1.40231382177834, 1.47262211020737, 1.54293039863639, + 1.61323868706542, 1.68354697549445, 1.75385526392347, 1.8241635523525, + 1.89447184078152, 1.96478012921055, 2.03508841763957, 2.1053967060686, + 2.17570499449762, 2.24601328292665, 2.31632157135568, 2.3866298597847, + 2.45693814821373, 2.52724643664275, 2.59755472507178, 2.6678630135008, + 2.73817130192983, 2.80847959035885, 2.87878787878788, 1.14239897305293, + 1.20471891230096, 1.26703885154899, 1.32935879079702, 1.39167873004504, + 1.45399866929307, 1.5163186085411, 1.57863854778913, 1.64095848703716, + 1.70327842628518, 1.76559836553321, 1.82791830478124, 1.89023824402927, + 1.9525581832773, 2.01487812252532, 2.07719806177335, 2.13951800102138, + 2.20183794026941, 2.26415787951744, 2.32647781876546, 2.38879775801349, + 2.45111769726152, 2.51343763650955, 2.57575757575758, 1.02075592171729, + 1.07518945871772, 1.12962299571815, 1.18405653271859, 1.23849006971902, + 1.29292360671946, 1.34735714371989, 1.40179068072033, 1.45622421772076, + 1.51065775472119, 1.56509129172163, 1.61952482872206, 1.6739583657225, + 1.72839190272293, 1.78282543972337, 1.8372589767238, 1.89169251372423, + 1.94612605072467, 2.0005595877251, 2.05499312472554, 2.10942666172597, + 2.1638601987264, 2.21829373572684, 2.27272727272727, 0.897015049003283, + 0.943653393381269, 0.990291737759256, 1.03693008213724, 1.08356842651523, + 1.13020677089321, 1.1768451152712, 1.22348345964919, 1.27012180402717, + 1.31676014840516, 1.36339849278315, 1.41003683716113, 1.45667518153912, + 1.50331352591711, 1.54995187029509, 1.59659021467308, 1.64322855905107, + 1.68986690342905, 1.73650524780704, 1.78314359218502, 1.82978193656301, + 1.876420280941, 1.92305862531898, 1.96969696969697, 0.771428065241007, + 0.810351482694296, 0.849274900147586, 0.888198317600876, + 0.927121735054165, 0.966045152507455, 1.00496856996074, 1.04389198741403, + 1.08281540486732, 1.12173882232061, 1.1606622397739, 1.19958565722719, + 1.23850907468048, 1.27743249213377, 1.31635590958706, 1.35527932704035, + 1.39420274449364, 1.43312616194693, 1.47204957940022, 1.51097299685351, + 1.5498964143068, 1.58881983176009, 1.62774324921338, 1.66666666666667, + 0.644250862795838, 0.675528493267165, 0.706806123738493, + 0.73808375420982, 0.769361384681147, 0.800639015152474, + 0.831916645623801, 0.863194276095129, 0.894471906566456, + 0.925749537037783, 0.95702716750911, 0.988304797980438, 1.01958242845176, + 1.05086005892309, 1.08213768939442, 1.11341531986575, 1.14469295033707, + 1.1759705808084, 1.20724821127973, 1.23852584175106, 1.26980347222238, + 1.30108110269371, 1.33235873316504, 1.36363636363636, 0.515742936389941, + 0.539432637442816, 0.563122338495691, 0.586812039548566, + 0.61050174060144, 0.634191441654315, 0.65788114270719, 0.681570843760064, + 0.705260544812939, 0.728950245865814, 0.752639946918689, + 0.776329647971564, 0.800019349024438, 0.823709050077313, + 0.847398751130188, 0.871088452183063, 0.894778153235937, + 0.918467854288812, 0.942157555341687, 0.965847256394562, + 0.989536957447436, 1.01322665850031, 1.03691635955319, 1.06060606060606, + 0.386166795263259, 0.402315011015976, 0.418463226768693, + 0.434611442521411, 0.450759658274128, 0.466907874026845, + 0.483056089779563, 0.49920430553228, 0.515352521284997, + 0.531500737037715, 0.547648952790432, 0.56379716854315, + 0.579945384295867, 0.596093600048584, 0.612241815801302, + 0.628390031554019, 0.644538247306736, 0.660686463059454, + 0.676834678812171, 0.692982894564888, 0.709131110317606, + 0.725279326070323, 0.74142754182304, 0.757575757575758, + 0.255787368505649, 0.264429024420423, 0.273070680335197, + 0.281712336249971, 0.290353992164746, 0.29899564807952, + 0.307637303994294, 0.316278959909068, 0.324920615823842, + 0.333562271738617, 0.342203927653391, 0.350845583568165, + 0.359487239482939, 0.368128895397713, 0.376770551312487, + 0.385412207227262, 0.394053863142036, 0.40269551905681, + 0.411337174971584, 0.419978830886358, 0.428620486801133, + 0.437262142715907, 0.445903798630681, 0.454545454545455, + 0.124871404907289, 0.126029828672849, 0.127188252438408, + 0.128346676203967, 0.129505099969526, 0.130663523735086, + 0.131821947500645, 0.132980371266204, 0.134138795031763, + 0.135297218797322, 0.136455642562882, 0.137614066328441, 0.138772490094, + 0.139930913859559, 0.141089337625118, 0.142247761390678, + 0.143406185156237, 0.144564608921796, 0.145723032687355, + 0.146881456452915, 0.148039880218474, 0.149198303984033, + 0.150356727749592, 0.151515151515151, -0.00631313131313115, + -0.0126262626262625, -0.0189393939393938, -0.0252525252525251, + -0.0315656565656564, -0.0378787878787877, -0.044191919191919, + -0.0505050505050504, -0.0568181818181817, -0.063131313131313, + -0.0694444444444443, -0.0757575757575756, -0.0820707070707069, + -0.0883838383838382, -0.0946969696969696, -0.101010101010101, + -0.107323232323232, -0.113636363636363, -0.119949494949495, + -0.126262626262626, -0.132575757575757, -0.138888888888889, + -0.14520202020202, -0.151515151515151, -0.137497667533551, + -0.151282353925373, -0.165067040317195, -0.178851726709017, + -0.192636413100839, -0.206421099492661, -0.220205785884482, + -0.233990472276304, -0.247775158668126, -0.261559845059948, + -0.27534453145177, -0.289129217843592, -0.302913904235414, + -0.316698590627235, -0.330483277019057, -0.344267963410879, + -0.358052649802701, -0.371837336194523, -0.385622022586345, + -0.399406708978167, -0.413191395369989, -0.42697608176181, + -0.440760768153632, -0.454545454545454, -0.268413631131912, + -0.289681549672949, -0.310949468213985, -0.332217386755022, + -0.353485305296059, -0.374753223837096, -0.396021142378132, + -0.417289060919169, -0.438556979460206, -0.459824898001243, + -0.48109281654228, -0.502360735083316, -0.523628653624353, + -0.54489657216539, -0.566164490706427, -0.587432409247464, + -0.6087003277885, -0.629968246329537, -0.651236164870574, + -0.672504083411611, -0.693772001952647, -0.715039920493684, + -0.736307839034721, -0.757575757575758, -0.398793057889522, + -0.427567536268502, -0.456342014647481, -0.485116493026461, + -0.513890971405441, -0.542665449784421, -0.571439928163401, + -0.600214406542381, -0.628988884921361, -0.657763363300341, + -0.686537841679321, -0.715312320058301, -0.744086798437281, + -0.772861276816261, -0.801635755195241, -0.830410233574221, + -0.859184711953201, -0.887959190332181, -0.916733668711161, + -0.945508147090141, -0.974282625469121, -1.0030571038481, + -1.03183158222708, -1.06060606060606, -0.528369199016204, + -0.564685162695341, -0.601001126374478, -0.637317090053616, + -0.673633053732753, -0.709949017411891, -0.746264981091028, + -0.782580944770165, -0.818896908449303, -0.85521287212844, + -0.891528835807577, -0.927844799486715, -0.964160763165852, + -1.00047672684499, -1.03679269052413, -1.07310865420326, + -1.1094246178824, -1.14574058156154, -1.18205654524068, + -1.21837250891981, -1.25468847259895, -1.29100443627809, + -1.32732039995723, -1.36363636363636, -0.6568771254221, + -0.70078101851969, -0.74468491161728, -0.78858880471487, + -0.83249269781246, -0.87639659091005, -0.920300484007639, + -0.964204377105229, -1.00810827020282, -1.05201216330041, + -1.095916056398, -1.13981994949559, -1.18372384259318, -1.22762773569077, + -1.27153162878836, -1.31543552188595, -1.35933941498354, + -1.40324330808113, -1.44714720117872, -1.49105109427631, + -1.5349549873739, -1.57885888047149, -1.62276277356908, + -1.66666666666667, -0.78405432786727, -0.835604007946822, + -0.887153688026374, -0.938703368105926, -0.990253048185478, + -1.04180272826503, -1.09335240834458, -1.14490208842413, + -1.19645176850369, -1.24800144858324, -1.29955112866279, + -1.35110080874234, -1.4026504888219, -1.45420016890145, -1.505749848981, + -1.55729952906055, -1.6088492091401, -1.66039888921966, + -1.71194856929921, -1.76349824937876, -1.81504792945831, + -1.86659760953787, -1.91814728961742, -1.96969696969697, + -0.909641311629545, -0.968905918633794, -1.02817052563804, + -1.08743513264229, -1.14669973964654, -1.20596434665079, + -1.26522895365504, -1.32449356065929, -1.38375816766354, + -1.44302277466779, -1.50228738167204, -1.56155198867628, + -1.62081659568053, -1.68008120268478, -1.73934580968903, + -1.79861041669328, -1.85787502369753, -1.91713963070178, + -1.97640423770603, -2.03566884471028, -2.09493345171453, + -2.15419805871877, -2.21346266572302, -2.27272727272727, + -1.03338218434355, -1.10044198397024, -1.16750178359694, + -1.23456158322364, -1.30162138285034, -1.36868118247703, + -1.43574098210373, -1.50280078173043, -1.56986058135712, + -1.63692038098382, -1.70398018061052, -1.77103998023721, + -1.83809977986391, -1.90515957949061, -1.9722193791173, -2.039279178744, + -2.1063389783707, -2.17339877799739, -2.24045857762409, + -2.30751837725079, -2.37457817687749, -2.44163797650418, + -2.50869777613088, -2.57575757575758, -1.1550252356792, + -1.22997143755349, -1.30491763942778, -1.37986384130207, + -1.45481004317636, -1.52975624505065, -1.60470244692494, + -1.67964864879923, -1.75459485067352, -1.82954105254781, + -1.9044872544221, -1.97943345629639, -2.05437965817068, + -2.12932586004497, -2.20427206191926, -2.27921826379355, + -2.35416446566784, -2.42911066754214, -2.50405686941643, + -2.57900307129072, -2.65394927316501, -2.7288954750393, + -2.80384167691359, -2.87878787878788, -1.27432350754655, + -1.35725805860184, -1.44019260965713, -1.52312716071242, + -1.60606171176771, -1.688996262823, -1.77193081387828, -1.85486536493357, + -1.93779991598886, -2.02073446704415, -2.10366901809944, + -2.18660356915472, -2.26953812021001, -2.3524726712653, + -2.43540722232059, -2.51834177337588, -2.60127632443116, + -2.68421087548645, -2.76714542654174, -2.85007997759703, + -2.93301452865232, -3.01594907970761, -3.09888363076289, + -3.18181818181818, -1.39103535353535, -1.48207070707071, + -1.57310606060606, -1.66414141414141, -1.75517676767677, + -1.84621212121212, -1.93724747474747, -2.02828282828283, + -2.11931818181818, -2.21035353535354, -2.30138888888889, + -2.39242424242424, -2.4834595959596, -2.57449494949495, -2.6655303030303, + -2.75656565656566, -2.84760101010101, -2.93863636363636, + -3.02967171717172, -3.12070707070707, -3.21174242424242, + -3.30277777777778, -3.39381313131313, -3.48484848484848, + -1.50492498632181, -1.60418384725907, -1.70344270819633, + -1.80270156913359, -1.90196043007085, -2.00121929100811, + -2.10047815194537, -2.19973701288263, -2.29899587381989, + -2.39825473475715, -2.49751359569441, -2.59677245663167, + -2.69603131756893, -2.79529017850619, -2.89454903944345, + -2.99380790038071, -3.09306676131797, -3.19232562225523, + -3.29158448319249, -3.39084334412975, -3.49010220506701, + -3.58936106600427, -3.68861992694153, -3.78787878787879, + -1.61576301180278, -1.72337805872045, -1.83099310563811, + -1.93860815255578, -2.04622319947344, -2.15383824639111, + -2.26145329330877, -2.36906834022644, -2.47668338714411, + -2.58429843406177, -2.69191348097944, -2.7995285278971, + -2.90714357481477, -3.01475862173243, -3.1223736686501, + -3.22998871556777, -3.33760376248543, -3.4452188094031, + -3.55283385632076, -3.66044890323843, -3.76806395015609, + -3.87567899707376, -3.98329404399143, -4.09090909090909, + -1.72332694874715, -1.83944053332072, -1.9555541178943, + -2.07166770246788, -2.18778128704145, -2.30389487161503, + -2.4200084561886, -2.53612204076218, -2.65223562533576, + -2.76834920990933, -2.88446279448291, -3.00057637905648, + -3.11668996363006, -3.23280354820364, -3.34891713277721, + -3.46503071735079, -3.58114430192436, -3.69725788649794, + -3.81337147107151, -3.92948505564509, -4.04559864021867, + -4.16171222479224, -4.27782580936582, -4.39393939393939, + -1.82740173278741, -1.95216555731707, -2.07692938184674, + -2.2016932063764, -2.32645703090606, -2.45122085543573, + -2.57598467996539, -2.70074850449506, -2.82551232902472, + -2.95027615355439, -3.07503997808405, -3.19980380261372, + -3.32456762714338, -3.44933145167305, -3.57409527620271, + -3.69885910073238, -3.82362292526204, -3.94838674979171, + -4.07315057432137, -4.19791439885104, -4.3226782233807, + -4.44744204791037, -4.57220587244003, -4.6969696969697, -1.9277802036096, + -2.0613549773657, -2.1949297511218, -2.32850452487791, -2.46207929863401, + -2.59565407239012, -2.72922884614622, -2.86280361990233, + -2.99637839365843, -3.12995316741454, -3.26352794117064, + -3.39710271492675, -3.53067748868285, -3.66425226243895, + -3.79782703619506, -3.93140180995116, -4.06497658370727, + -4.19855135746337, -4.33212613121948, -4.46570090497558, + -4.59927567873169, -4.73285045248779, -4.8664252262439, -5, + -2.0116373116118, -2.14156612415042, -2.27149493668903, + -2.40142374922765, -2.53135256176627, -2.66128137430489, + -2.7912101868435, -2.92113899938212, -3.05106781192074, + -3.18099662445936, -3.31092543699797, -3.44085424953659, + -3.57078306207521, -3.70071187461383, -3.83064068715244, + -3.96056949969106, -4.09049831222968, -4.2204271247683, + -4.35035593730691, -4.48028474984553, -4.61021356238415, + -4.74014237492277, -4.87007118746138, -5, -2.09140935609936, + -2.21786981887765, -2.34433028165594, -2.47079074443423, + -2.59725120721251, -2.7237116699908, -2.85017213276909, + -2.97663259554738, -3.10309305832567, -3.22955352110396, + -3.35601398388225, -3.48247444666054, -3.60893490943882, + -3.73539537221711, -3.8618558349954, -3.98831629777369, + -4.11477676055198, -4.24123722333027, -4.36769768610856, + -4.49415814888685, -4.62061861166513, -4.74707907444342, + -4.87353953722171, -5, -2.16691562773411, -2.29009320913698, + -2.41327079053984, -2.53644837194271, -2.65962595334557, + -2.78280353474844, -2.9059811161513, -3.02915869755416, + -3.15233627895703, -3.27551386035989, -3.39869144176276, + -3.52186902316562, -3.64504660456849, -3.76822418597135, + -3.89140176737422, -4.01457934877708, -4.13775693017995, + -4.26093451158281, -4.38411209298568, -4.50728967438854, + -4.63046725579141, -4.75364483719427, -4.87682241859714, -5, + -2.23798508052542, -2.35807268571997, -2.47816029091451, + -2.59824789610906, -2.71833550130361, -2.83842310649815, + -2.9585107116927, -3.07859831688725, -3.1986859220818, -3.31877352727634, + -3.43886113247089, -3.55894873766544, -3.67903634285998, + -3.79912394805453, -3.91921155324908, -4.03929915844362, + -4.15938676363817, -4.27947436883272, -4.39956197402727, + -4.51964957922181, -4.63973718441636, -4.75982478961091, + -4.87991239480545, -5, -2.30445671930436, -2.42165425324765, + -2.53885178719094, -2.65604932113423, -2.77324685507751, + -2.8904443890208, -3.00764192296409, -3.12483945690738, + -3.24203699085067, -3.35923452479396, -3.47643205873725, + -3.59362959268054, -3.71082712662382, -3.82802466056711, + -3.9452221945104, -4.06241972845369, -4.17961726239698, + -4.29681479634027, -4.41401233028356, -4.53120986422685, + -4.64840739817013, -4.76560493211342, -4.88280246605671, -5, + -2.36617996442956, -2.48069387901958, -2.5952077936096, + -2.70972170819962, -2.82423562278964, -2.93874953737966, + -3.05326345196967, -3.16777736655969, -3.28229128114971, + -3.39680519573973, -3.51131911032975, -3.62583302491977, + -3.74034693950979, -3.85486085409981, -3.96937476868983, + -4.08388868327985, -4.19840259786987, -4.31291651245988, + -4.4274304270499, -4.54194434163992, -4.65645825622994, + -4.77097217081996, -4.88548608540998, -5, -2.42301499289852, + -2.53505781929423, -2.64710064568995, -2.75914347208567, + -2.87118629848138, -2.9832291248771, -3.09527195127282, + -3.20731477766853, -3.31935760406425, -3.43140043045997, + -3.54344325685568, -3.6554860832514, -3.76752890964712, + -3.87957173604283, -3.99161456243855, -4.10365738883427, + -4.21570021522998, -4.3277430416257, -4.43978586802142, + -4.55182869441713, -4.66387152081285, -4.77591434720857, + -4.88795717360428, -5, -2.47483305509168, -2.5846229222616, + -2.69441278943153, -2.80420265660146, -2.91399252377138, + -3.02378239094131, -3.13357225811124, -3.24336212528117, + -3.35315199245109, -3.46294185962102, -3.57273172679095, + -3.68252159396087, -3.7923114611308, -3.90210132830073, + -4.01189119547066, -4.12168106264058, -4.23147092981051, + -4.34126079698044, -4.45105066415036, -4.56084053132029, + -4.67063039849022, -4.78042026566015, -4.89021013283007, -5, + -2.52151676643171, -2.62927690702164, -2.73703704761157, + -2.84479718820149, -2.95255732879142, -3.06031746938134, + -3.16807760997127, -3.27583775056119, -3.38359789115112, + -3.49135803174104, -3.59911817233097, -3.70687831292089, + -3.81463845351082, -3.92239859410075, -4.03015873469067, + -4.1379188752806, -4.24567901587052, -4.35343915646045, + -4.46119929705037, -4.5689594376403, -4.67671957823022, + -4.78447971882015, -4.89223985941007, -5, -2.56296037329738, + -2.66891861793663, -2.77487686257587, -2.88083510721511, + -2.98679335185436, -3.0927515964936, -3.19870984113285, + -3.30466808577209, -3.41062633041134, -3.51658457505058, + -3.62254281968982, -3.72850106432907, -3.83445930896831, + -3.94041755360756, -4.0463757982468, -4.15233404288605, + -4.25829228752529, -4.36425053216453, -4.47020877680378, + -4.57616702144302, -4.68212526608227, -4.78808351072151, + -4.89404175536076, -5, -2.59906999258946, -2.70345825378122, + -2.80784651497298, -2.91223477616474, -3.01662303735651, + -3.12101129854827, -3.22539955974003, -3.3297878209318, + -3.43417608212356, -3.53856434331532, -3.64295260450708, + -3.74734086569885, -3.85172912689061, -3.95611738808237, + -4.06050564927413, -4.1648939104659, -4.26928217165766, + -4.37367043284942, -4.47805869404119, -4.58244695523295, + -4.68683521642471, -4.79122347761647, -4.89561173880824, -5, + -2.62976382440616, -2.73281757117111, -2.83587131793606, + -2.93892506470101, -3.04197881146596, -3.14503255823091, + -3.24808630499586, -3.35114005176081, -3.45419379852575, + -3.5572475452907, -3.66030129205565, -3.7633550388206, -3.86640878558555, + -3.9694625323505, -4.07251627911545, -4.1755700258804, -4.27862377264535, + -4.3816775194103, -4.48473126617525, -4.5877850129402, -4.69083875970515, + -4.7938925064701, -4.89694625323505, -5, -2.65497233734624, + -2.75693006180945, -2.85888778627266, -2.96084551073586, + -3.06280323519907, -3.16476095966228, -3.26671868412548, + -3.36867640858869, -3.4706341330519, -3.57259185751511, + -3.67454958197831, -3.77650730644152, -3.87846503090473, + -3.98042275536793, -4.08238047983114, -4.18433820429435, + -4.28629592875755, -4.38825365322076, -4.49021137768397, + -4.59216910214717, -4.69412682661038, -4.79608455107359, + -4.89804227553679, -5, -2.67463842601999, -2.77574110314956, + -2.87684378027912, -2.97794645740869, -3.07904913453825, + -3.18015181166782, -3.28125448879738, -3.38235716592695, + -3.48345984305652, -3.58456252018608, -3.68566519731565, + -3.78676787444521, -3.88787055157478, -3.98897322870434, + -4.09007590583391, -4.19117858296347, -4.29228126009304, + -4.39338393722261, -4.49448661435217, -4.59558929148174, + -4.6966919686113, -4.79779464574087, -4.89889732287043, -5, + -2.68871754041127, -2.78920808213252, -2.88969862385377, + -2.99018916557502, -3.09067970729627, -3.19117024901752, + -3.29166079073876, -3.39215133246001, -3.49264187418126, + -3.59313241590251, -3.69362295762376, -3.79411349934501, + -3.89460404106626, -3.99509458278751, -4.09558512450876, + -4.19607566623001, -4.29656620795126, -4.3970567496725, + -4.49754729139375, -4.598037833115, -4.69852837483625, -4.7990189165575, + -4.89950945827875, -5, -2.69717778679766, -2.7973004917195, + -2.89742319664134, -2.99754590156318, -3.09766860648502, + -3.19779131140687, -3.29791401632871, -3.39803672125055, + -3.49815942617239, -3.59828213109423, -3.69840483601607, + -3.79852754093791, -3.89865024585975, -3.99877295078159, + -4.09889565570343, -4.19901836062527, -4.29914106554711, + -4.39926377046895, -4.4993864753908, -4.59950918031264, + -4.69963188523448, -4.79975459015632, -4.89987729507816, -5, -2.7, -2.8, + -2.9, -3, -3.1, -3.2, -3.3, -3.4, -3.5, -3.6, -3.7, -3.8, -3.9, -4, -4.1, + -4.2, -4.3, -4.4, -4.5, -4.6, -4.7, -4.8, -4.9, -5, -2.69717778679766, + -2.7973004917195, -2.89742319664134, -2.99754590156318, + -3.09766860648502, -3.19779131140687, -3.29791401632871, + -3.39803672125055, -3.49815942617239, -3.59828213109423, + -3.69840483601607, -3.79852754093791, -3.89865024585975, + -3.99877295078159, -4.09889565570343, -4.19901836062527, + -4.29914106554711, -4.39926377046895, -4.4993864753908, + -4.59950918031264, -4.69963188523448, -4.79975459015632, + -4.89987729507816, -5, -2.68871754041127, -2.78920808213252, + -2.88969862385377, -2.99018916557502, -3.09067970729627, + -3.19117024901752, -3.29166079073876, -3.39215133246001, + -3.49264187418126, -3.59313241590251, -3.69362295762376, + -3.79411349934501, -3.89460404106626, -3.99509458278751, + -4.09558512450876, -4.19607566623001, -4.29656620795126, + -4.3970567496725, -4.49754729139375, -4.598037833115, -4.69852837483625, + -4.7990189165575, -4.89950945827875, -5, -2.67463842601999, + -2.77574110314956, -2.87684378027912, -2.97794645740869, + -3.07904913453825, -3.18015181166782, -3.28125448879738, + -3.38235716592695, -3.48345984305652, -3.58456252018608, + -3.68566519731565, -3.78676787444521, -3.88787055157478, + -3.98897322870434, -4.09007590583391, -4.19117858296347, + -4.29228126009304, -4.39338393722261, -4.49448661435217, + -4.59558929148174, -4.6966919686113, -4.79779464574087, + -4.89889732287043, -5, -2.65497233734624, -2.75693006180945, + -2.85888778627266, -2.96084551073586, -3.06280323519907, + -3.16476095966228, -3.26671868412548, -3.36867640858869, + -3.4706341330519, -3.57259185751511, -3.67454958197831, + -3.77650730644152, -3.87846503090473, -3.98042275536793, + -4.08238047983114, -4.18433820429435, -4.28629592875755, + -4.38825365322076, -4.49021137768397, -4.59216910214717, + -4.69412682661038, -4.79608455107359, -4.89804227553679, -5, + -2.62976382440616, -2.73281757117111, -2.83587131793606, + -2.93892506470101, -3.04197881146596, -3.14503255823091, + -3.24808630499586, -3.35114005176081, -3.45419379852576, + -3.5572475452907, -3.66030129205565, -3.7633550388206, -3.86640878558555, + -3.9694625323505, -4.07251627911545, -4.1755700258804, -4.27862377264535, + -4.3816775194103, -4.48473126617525, -4.5877850129402, -4.69083875970515, + -4.7938925064701, -4.89694625323505, -5, -2.59906999258946, + -2.70345825378122, -2.80784651497298, -2.91223477616474, + -3.01662303735651, -3.12101129854827, -3.22539955974003, + -3.3297878209318, -3.43417608212356, -3.53856434331532, + -3.64295260450708, -3.74734086569885, -3.85172912689061, + -3.95611738808237, -4.06050564927413, -4.1648939104659, + -4.26928217165766, -4.37367043284942, -4.47805869404119, + -4.58244695523295, -4.68683521642471, -4.79122347761647, + -4.89561173880824, -5, -2.56296037329738, -2.66891861793663, + -2.77487686257587, -2.88083510721512, -2.98679335185436, + -3.0927515964936, -3.19870984113285, -3.30466808577209, + -3.41062633041134, -3.51658457505058, -3.62254281968983, + -3.72850106432907, -3.83445930896831, -3.94041755360756, + -4.0463757982468, -4.15233404288605, -4.25829228752529, + -4.36425053216453, -4.47020877680378, -4.57616702144302, + -4.68212526608227, -4.78808351072151, -4.89404175536076, -5, + -2.52151676643171, -2.62927690702164, -2.73703704761157, + -2.84479718820149, -2.95255732879142, -3.06031746938134, + -3.16807760997127, -3.27583775056119, -3.38359789115112, + -3.49135803174104, -3.59911817233097, -3.70687831292089, + -3.81463845351082, -3.92239859410075, -4.03015873469067, + -4.1379188752806, -4.24567901587052, -4.35343915646045, + -4.46119929705037, -4.5689594376403, -4.67671957823022, + -4.78447971882015, -4.89223985941007, -5, -2.47483305509168, + -2.5846229222616, -2.69441278943153, -2.80420265660146, + -2.91399252377138, -3.02378239094131, -3.13357225811124, + -3.24336212528117, -3.35315199245109, -3.46294185962102, + -3.57273172679095, -3.68252159396087, -3.7923114611308, + -3.90210132830073, -4.01189119547066, -4.12168106264058, + -4.23147092981051, -4.34126079698044, -4.45105066415036, + -4.56084053132029, -4.67063039849022, -4.78042026566015, + -4.89021013283007, -5, -2.42301499289852, -2.53505781929423, + -2.64710064568995, -2.75914347208567, -2.87118629848138, + -2.9832291248771, -3.09527195127282, -3.20731477766853, + -3.31935760406425, -3.43140043045997, -3.54344325685568, + -3.6554860832514, -3.76752890964712, -3.87957173604283, + -3.99161456243855, -4.10365738883427, -4.21570021522998, + -4.3277430416257, -4.43978586802142, -4.55182869441713, + -4.66387152081285, -4.77591434720857, -4.88795717360428, -5, + -2.36617996442956, -2.48069387901958, -2.5952077936096, + -2.70972170819962, -2.82423562278964, -2.93874953737966, + -3.05326345196967, -3.16777736655969, -3.28229128114971, + -3.39680519573973, -3.51131911032975, -3.62583302491977, + -3.74034693950979, -3.85486085409981, -3.96937476868983, + -4.08388868327985, -4.19840259786987, -4.31291651245988, + -4.4274304270499, -4.54194434163992, -4.65645825622994, + -4.77097217081996, -4.88548608540998, -5, -2.30445671930436, + -2.42165425324765, -2.53885178719094, -2.65604932113423, + -2.77324685507751, -2.8904443890208, -3.00764192296409, + -3.12483945690738, -3.24203699085067, -3.35923452479396, + -3.47643205873725, -3.59362959268054, -3.71082712662382, + -3.82802466056711, -3.9452221945104, -4.06241972845369, + -4.17961726239698, -4.29681479634027, -4.41401233028356, + -4.53120986422685, -4.64840739817013, -4.76560493211342, + -4.88280246605671, -5, -2.23798508052542, -2.35807268571997, + -2.47816029091451, -2.59824789610906, -2.71833550130361, + -2.83842310649815, -2.9585107116927, -3.07859831688725, -3.1986859220818, + -3.31877352727634, -3.43886113247089, -3.55894873766544, + -3.67903634285998, -3.79912394805453, -3.91921155324908, + -4.03929915844362, -4.15938676363817, -4.27947436883272, + -4.39956197402727, -4.51964957922181, -4.63973718441636, + -4.75982478961091, -4.87991239480545, -5, -2.16691562773411, + -2.29009320913698, -2.41327079053984, -2.53644837194271, + -2.65962595334557, -2.78280353474844, -2.9059811161513, + -3.02915869755416, -3.15233627895703, -3.27551386035989, + -3.39869144176276, -3.52186902316562, -3.64504660456849, + -3.76822418597135, -3.89140176737422, -4.01457934877708, + -4.13775693017995, -4.26093451158281, -4.38411209298568, + -4.50728967438854, -4.63046725579141, -4.75364483719427, + -4.87682241859714, -5, -2.09140935609936, -2.21786981887765, + -2.34433028165594, -2.47079074443423, -2.59725120721252, + -2.7237116699908, -2.85017213276909, -2.97663259554738, + -3.10309305832567, -3.22955352110396, -3.35601398388225, + -3.48247444666054, -3.60893490943882, -3.73539537221711, + -3.8618558349954, -3.98831629777369, -4.11477676055198, + -4.24123722333027, -4.36769768610856, -4.49415814888685, + -4.62061861166513, -4.74707907444342, -4.87353953722171, -5, + -2.0116373116118, -2.14156612415042, -2.27149493668904, + -2.40142374922765, -2.53135256176627, -2.66128137430489, + -2.7912101868435, -2.92113899938212, -3.05106781192074, + -3.18099662445936, -3.31092543699797, -3.44085424953659, + -3.57078306207521, -3.70071187461383, -3.83064068715244, + -3.96056949969106, -4.09049831222968, -4.2204271247683, + -4.35035593730691, -4.48028474984553, -4.61021356238415, + -4.74014237492277, -4.87007118746138, -5, -1.91515394098333, + -2.03610245211317, -2.15705096324302, -2.27799947437286, + -2.3989479855027, -2.51989649663254, -2.64084500776238, + -2.76179351889223, -2.88274203002207, -3.00369054115191, + -3.12463905228175, -3.24558756341159, -3.36653607454144, + -3.48748458567128, -3.60843309680112, -3.72938160793096, + -3.8503301190608, -3.97127863019065, -4.09222714132049, + -4.21317565245033, -4.33412416358017, -4.45507267471001, + -4.57602118583986, -4.6969696969697, -1.81477547016114, + -1.92691303206455, -2.03905059396795, -2.15118815587135, + -2.26332571777475, -2.37546327967815, -2.48760084158156, + -2.59973840348496, -2.71187596538836, -2.82401352729176, + -2.93615108919517, -3.04828865109857, -3.16042621300197, + -3.27256377490537, -3.38470133680877, -3.49683889871218, + -3.60897646061558, -3.72111402251898, -3.83325158442238, + -3.94538914632579, -4.05752670822919, -4.16966427013259, + -4.28180183203599, -4.39393939393939, -1.71070068612089, + -1.8141880080682, -1.91767533001551, -2.02116265196283, + -2.12464997391014, -2.22813729585745, -2.33162461780477, + -2.43511193975208, -2.53859926169939, -2.64208658364671, + -2.74557390559402, -2.84906122754133, -2.95254854948865, + -3.05603587143596, -3.15952319338327, -3.26301051533059, + -3.3664978372779, -3.46998515922521, -3.57347248117253, + -3.67695980311984, -3.78044712506715, -3.88393444701446, + -3.98742176896178, -4.09090909090909, -1.60313674917652, + -1.69812553346792, -1.79311431775932, -1.88810310205073, + -1.98309188634213, -2.07808067063353, -2.17306945492494, + -2.26805823921634, -2.36304702350774, -2.45803580779915, + -2.55302459209055, -2.64801337638195, -2.74300216067336, + -2.83799094496476, -2.93297972925616, -3.02796851354756, + -3.12295729783897, -3.21794608213037, -3.31293486642177, + -3.40792365071318, -3.50291243500458, -3.59790121929598, + -3.69289000358739, -3.78787878787879, -1.49229872369555, + -1.57893132200655, -1.66556392031754, -1.75219651862854, + -1.83882911693954, -1.92546171525054, -2.01209431356153, + -2.09872691187253, -2.18535951018353, -2.27199210849452, + -2.35862470680552, -2.44525730511652, -2.53188990342752, + -2.61852250173851, -2.70515510004951, -2.79178769836051, + -2.8784202966715, -2.9650528949825, -3.0516854932935, -3.1383180916045, + -3.22495068991549, -3.31158328822649, -3.39821588653749, + -3.48484848484848, -1.37840909090909, -1.45681818181818, + -1.53522727272727, -1.61363636363636, -1.69204545454545, + -1.77045454545454, -1.84886363636364, -1.92727272727273, + -2.00568181818182, -2.08409090909091, -2.1625, -2.24090909090909, + -2.31931818181818, -2.39772727272727, -2.47613636363636, + -2.55454545454545, -2.63295454545455, -2.71136363636364, + -2.78977272727273, -2.86818181818182, -2.94659090909091, -3.025, + -3.10340909090909, -3.18181818181818, -1.26169724492029, + -1.33200553334932, -1.40231382177834, -1.47262211020737, + -1.54293039863639, -1.61323868706542, -1.68354697549445, + -1.75385526392347, -1.8241635523525, -1.89447184078152, + -1.96478012921055, -2.03508841763957, -2.1053967060686, + -2.17570499449762, -2.24601328292665, -2.31632157135568, + -2.3866298597847, -2.45693814821373, -2.52724643664275, + -2.59755472507178, -2.6678630135008, -2.73817130192983, + -2.80847959035885, -2.87878787878788, -1.14239897305293, + -1.20471891230096, -1.26703885154899, -1.32935879079702, + -1.39167873004504, -1.45399866929307, -1.5163186085411, + -1.57863854778913, -1.64095848703716, -1.70327842628518, + -1.76559836553321, -1.82791830478124, -1.89023824402927, + -1.9525581832773, -2.01487812252532, -2.07719806177335, + -2.13951800102138, -2.20183794026941, -2.26415787951744, + -2.32647781876546, -2.38879775801349, -2.45111769726152, + -2.51343763650955, -2.57575757575758, -1.02075592171729, + -1.07518945871772, -1.12962299571816, -1.18405653271859, + -1.23849006971902, -1.29292360671946, -1.34735714371989, + -1.40179068072033, -1.45622421772076, -1.51065775472119, + -1.56509129172163, -1.61952482872206, -1.6739583657225, + -1.72839190272293, -1.78282543972337, -1.8372589767238, + -1.89169251372423, -1.94612605072467, -2.0005595877251, + -2.05499312472554, -2.10942666172597, -2.16386019872641, + -2.21829373572684, -2.27272727272727, -0.897015049003283, + -0.94365339338127, -0.990291737759256, -1.03693008213724, + -1.08356842651523, -1.13020677089322, -1.1768451152712, + -1.22348345964919, -1.27012180402717, -1.31676014840516, + -1.36339849278315, -1.41003683716113, -1.45667518153912, + -1.50331352591711, -1.54995187029509, -1.59659021467308, + -1.64322855905107, -1.68986690342905, -1.73650524780704, + -1.78314359218502, -1.82978193656301, -1.876420280941, -1.92305862531898, + -1.96969696969697, -0.771428065241007, -0.810351482694296, + -0.849274900147586, -0.888198317600875, -0.927121735054165, + -0.966045152507454, -1.00496856996074, -1.04389198741403, + -1.08281540486732, -1.12173882232061, -1.1606622397739, + -1.19958565722719, -1.23850907468048, -1.27743249213377, + -1.31635590958706, -1.35527932704035, -1.39420274449364, + -1.43312616194693, -1.47204957940022, -1.51097299685351, + -1.5498964143068, -1.58881983176009, -1.62774324921338, + -1.66666666666667, -0.64425086279584, -0.675528493267167, + -0.706806123738494, -0.738083754209821, -0.769361384681148, + -0.800639015152475, -0.831916645623803, -0.86319427609513, + -0.894471906566457, -0.925749537037784, -0.957027167509111, + -0.988304797980438, -1.01958242845177, -1.05086005892309, + -1.08213768939442, -1.11341531986575, -1.14469295033707, + -1.1759705808084, -1.20724821127973, -1.23852584175106, + -1.26980347222238, -1.30108110269371, -1.33235873316504, + -1.36363636363636, -0.515742936389942, -0.539432637442817, + -0.563122338495692, -0.586812039548566, -0.610501740601441, + -0.634191441654316, -0.65788114270719, -0.681570843760065, + -0.70526054481294, -0.728950245865815, -0.752639946918689, + -0.776329647971564, -0.800019349024439, -0.823709050077314, + -0.847398751130188, -0.871088452183063, -0.894778153235938, + -0.918467854288812, -0.942157555341687, -0.965847256394562, + -0.989536957447436, -1.01322665850031, -1.03691635955319, + -1.06060606060606, -0.386166795263259, -0.402315011015976, + -0.418463226768694, -0.434611442521411, -0.450759658274128, + -0.466907874026846, -0.483056089779563, -0.49920430553228, + -0.515352521284998, -0.531500737037715, -0.547648952790432, + -0.56379716854315, -0.579945384295867, -0.596093600048584, + -0.612241815801302, -0.628390031554019, -0.644538247306736, + -0.660686463059454, -0.676834678812171, -0.692982894564888, + -0.709131110317606, -0.725279326070323, -0.74142754182304, + -0.757575757575758, -0.255787368505649, -0.264429024420423, + -0.273070680335197, -0.281712336249971, -0.290353992164745, + -0.29899564807952, -0.307637303994294, -0.316278959909068, + -0.324920615823842, -0.333562271738616, -0.342203927653391, + -0.350845583568165, -0.359487239482939, -0.368128895397713, + -0.376770551312487, -0.385412207227261, -0.394053863142036, + -0.40269551905681, -0.411337174971584, -0.419978830886358, + -0.428620486801132, -0.437262142715907, -0.445903798630681, + -0.454545454545455, -0.124871404907288, -0.126029828672847, + -0.127188252438407, -0.128346676203966, -0.129505099969525, + -0.130663523735084, -0.131821947500644, -0.132980371266203, + -0.134138795031762, -0.135297218797322, -0.136455642562881, + -0.13761406632844, -0.138772490093999, -0.139930913859559, + -0.141089337625118, -0.142247761390677, -0.143406185156236, + -0.144564608921796, -0.145723032687355, -0.146881456452914, + -0.148039880218474, -0.149198303984033, -0.150356727749592, + -0.151515151515151, 0.00631313131313085, 0.0126262626262622, + 0.0189393939393935, 0.0252525252525248, 0.0315656565656562, + 0.0378787878787875, 0.0441919191919188, 0.0505050505050501, + 0.0568181818181815, 0.0631313131313128, 0.0694444444444441, + 0.0757575757575755, 0.0820707070707068, 0.0883838383838381, + 0.0946969696969694, 0.101010101010101, 0.107323232323232, + 0.113636363636363, 0.119949494949495, 0.126262626262626, + 0.132575757575757, 0.138888888888889, 0.14520202020202, + 0.151515151515151, 0.137497667533552, 0.151282353925374, + 0.165067040317196, 0.178851726709018, 0.192636413100839, + 0.206421099492661, 0.220205785884483, 0.233990472276305, + 0.247775158668127, 0.261559845059949, 0.27534453145177, + 0.289129217843592, 0.302913904235414, 0.316698590627236, + 0.330483277019058, 0.34426796341088, 0.358052649802701, + 0.371837336194523, 0.385622022586345, 0.399406708978167, + 0.413191395369989, 0.426976081761811, 0.440760768153632, + 0.454545454545454, 0.268413631131913, 0.289681549672949, + 0.310949468213986, 0.332217386755023, 0.35348530529606, + 0.374753223837096, 0.396021142378133, 0.41728906091917, + 0.438556979460207, 0.459824898001243, 0.48109281654228, + 0.502360735083317, 0.523628653624354, 0.54489657216539, + 0.566164490706427, 0.587432409247464, 0.608700327788501, + 0.629968246329537, 0.651236164870574, 0.672504083411611, + 0.693772001952648, 0.715039920493684, 0.736307839034721, + 0.757575757575758, 0.398793057889521, 0.427567536268501, + 0.456342014647481, 0.485116493026461, 0.51389097140544, + 0.542665449784421, 0.571439928163401, 0.600214406542381, + 0.628988884921361, 0.657763363300341, 0.686537841679321, + 0.715312320058301, 0.744086798437281, 0.772861276816261, + 0.801635755195241, 0.830410233574221, 0.859184711953201, + 0.887959190332181, 0.91673366871116, 0.945508147090141, + 0.974282625469121, 1.0030571038481, 1.03183158222708, 1.06060606060606, + 0.528369199016204, 0.564685162695341, 0.601001126374479, + 0.637317090053616, 0.673633053732753, 0.709949017411891, + 0.746264981091028, 0.782580944770165, 0.818896908449303, + 0.85521287212844, 0.891528835807577, 0.927844799486715, + 0.964160763165852, 1.00047672684499, 1.03679269052413, 1.07310865420326, + 1.1094246178824, 1.14574058156154, 1.18205654524068, 1.21837250891981, + 1.25468847259895, 1.29100443627809, 1.32732039995723, 1.36363636363636, + 0.656877125422099, 0.700781018519689, 0.744684911617279, + 0.788588804714869, 0.832492697812459, 0.876396590910049, + 0.920300484007638, 0.964204377105228, 1.00810827020282, 1.05201216330041, + 1.095916056398, 1.13981994949559, 1.18372384259318, 1.22762773569077, + 1.27153162878836, 1.31543552188595, 1.35933941498354, 1.40324330808113, + 1.44714720117872, 1.49105109427631, 1.5349549873739, 1.57885888047149, + 1.62276277356908, 1.66666666666667, 0.784054327867269, 0.835604007946821, + 0.887153688026373, 0.938703368105925, 0.990253048185477, + 1.04180272826503, 1.09335240834458, 1.14490208842413, 1.19645176850369, + 1.24800144858324, 1.29955112866279, 1.35110080874234, 1.4026504888219, + 1.45420016890145, 1.505749848981, 1.55729952906055, 1.6088492091401, + 1.66039888921966, 1.71194856929921, 1.76349824937876, 1.81504792945831, + 1.86659760953787, 1.91814728961742, 1.96969696969697, 0.909641311629545, + 0.968905918633794, 1.02817052563804, 1.08743513264229, 1.14669973964654, + 1.20596434665079, 1.26522895365504, 1.32449356065929, 1.38375816766354, + 1.44302277466779, 1.50228738167204, 1.56155198867628, 1.62081659568053, + 1.68008120268478, 1.73934580968903, 1.79861041669328, 1.85787502369753, + 1.91713963070178, 1.97640423770603, 2.03566884471028, 2.09493345171453, + 2.15419805871877, 2.21346266572302, 2.27272727272727, 1.03338218434355, + 1.10044198397024, 1.16750178359694, 1.23456158322364, 1.30162138285033, + 1.36868118247703, 1.43574098210373, 1.50280078173043, 1.56986058135712, + 1.63692038098382, 1.70398018061052, 1.77103998023721, 1.83809977986391, + 1.90515957949061, 1.9722193791173, 2.039279178744, 2.1063389783707, + 2.17339877799739, 2.24045857762409, 2.30751837725079, 2.37457817687749, + 2.44163797650418, 2.50869777613088, 2.57575757575758, 1.15502523567919, + 1.22997143755348, 1.30491763942778, 1.37986384130207, 1.45481004317636, + 1.52975624505065, 1.60470244692494, 1.67964864879923, 1.75459485067352, + 1.82954105254781, 1.9044872544221, 1.97943345629639, 2.05437965817068, + 2.12932586004497, 2.20427206191926, 2.27921826379355, 2.35416446566784, + 2.42911066754214, 2.50405686941643, 2.57900307129072, 2.65394927316501, + 2.7288954750393, 2.80384167691359, 2.87878787878788, 1.27432350754655, + 1.35725805860184, 1.44019260965713, 1.52312716071242, 1.60606171176771, + 1.688996262823, 1.77193081387828, 1.85486536493357, 1.93779991598886, + 2.02073446704415, 2.10366901809944, 2.18660356915472, 2.26953812021001, + 2.3524726712653, 2.43540722232059, 2.51834177337588, 2.60127632443116, + 2.68421087548645, 2.76714542654174, 2.85007997759703, 2.93301452865232, + 3.01594907970761, 3.09888363076289, 3.18181818181818, 1.39103535353535, + 1.48207070707071, 1.57310606060606, 1.66414141414141, 1.75517676767677, + 1.84621212121212, 1.93724747474747, 2.02828282828283, 2.11931818181818, + 2.21035353535354, 2.30138888888889, 2.39242424242424, 2.4834595959596, + 2.57449494949495, 2.6655303030303, 2.75656565656566, 2.84760101010101, + 2.93863636363636, 3.02967171717172, 3.12070707070707, 3.21174242424242, + 3.30277777777778, 3.39381313131313, 3.48484848484848, 1.50492498632181, + 1.60418384725907, 1.70344270819633, 1.80270156913359, 1.90196043007085, + 2.00121929100811, 2.10047815194537, 2.19973701288263, 2.29899587381989, + 2.39825473475715, 2.49751359569441, 2.59677245663167, 2.69603131756893, + 2.79529017850619, 2.89454903944345, 2.99380790038071, 3.09306676131797, + 3.19232562225523, 3.29158448319249, 3.39084334412975, 3.49010220506701, + 3.58936106600427, 3.68861992694153, 3.78787878787879, 1.61576301180278, + 1.72337805872045, 1.83099310563811, 1.93860815255578, 2.04622319947344, + 2.15383824639111, 2.26145329330877, 2.36906834022644, 2.47668338714411, + 2.58429843406177, 2.69191348097944, 2.7995285278971, 2.90714357481477, + 3.01475862173243, 3.1223736686501, 3.22998871556777, 3.33760376248543, + 3.4452188094031, 3.55283385632076, 3.66044890323843, 3.76806395015609, + 3.87567899707376, 3.98329404399143, 4.09090909090909, 1.72332694874715, + 1.83944053332073, 1.9555541178943, 2.07166770246788, 2.18778128704145, + 2.30389487161503, 2.4200084561886, 2.53612204076218, 2.65223562533576, + 2.76834920990933, 2.88446279448291, 3.00057637905648, 3.11668996363006, + 3.23280354820364, 3.34891713277721, 3.46503071735079, 3.58114430192436, + 3.69725788649794, 3.81337147107151, 3.92948505564509, 4.04559864021867, + 4.16171222479224, 4.27782580936582, 4.39393939393939, 1.8274017327874, + 1.95216555731707, 2.07692938184673, 2.2016932063764, 2.32645703090606, + 2.45122085543573, 2.57598467996539, 2.70074850449506, 2.82551232902472, + 2.95027615355439, 3.07503997808405, 3.19980380261372, 3.32456762714338, + 3.44933145167305, 3.57409527620271, 3.69885910073238, 3.82362292526204, + 3.94838674979171, 4.07315057432137, 4.19791439885104, 4.3226782233807, + 4.44744204791037, 4.57220587244003, 4.6969696969697, 1.92778020360959, + 2.0613549773657, 2.1949297511218, 2.32850452487791, 2.46207929863401, + 2.59565407239012, 2.72922884614622, 2.86280361990233, 2.99637839365843, + 3.12995316741454, 3.26352794117064, 3.39710271492675, 3.53067748868285, + 3.66425226243895, 3.79782703619506, 3.93140180995116, 4.06497658370727, + 4.19855135746337, 4.33212613121948, 4.46570090497558, 4.59927567873169, + 4.73285045248779, 4.8664252262439, 5, 2.0116373116118, 2.14156612415042, + 2.27149493668903, 2.40142374922765, 2.53135256176627, 2.66128137430489, + 2.7912101868435, 2.92113899938212, 3.05106781192074, 3.18099662445936, + 3.31092543699797, 3.44085424953659, 3.57078306207521, 3.70071187461383, + 3.83064068715244, 3.96056949969106, 4.09049831222968, 4.2204271247683, + 4.35035593730691, 4.48028474984553, 4.61021356238415, 4.74014237492277, + 4.87007118746138, 5, 2.09140935609936, 2.21786981887765, + 2.34433028165594, 2.47079074443423, 2.59725120721251, 2.7237116699908, + 2.85017213276909, 2.97663259554738, 3.10309305832567, 3.22955352110396, + 3.35601398388225, 3.48247444666054, 3.60893490943882, 3.73539537221711, + 3.8618558349954, 3.98831629777369, 4.11477676055198, 4.24123722333027, + 4.36769768610856, 4.49415814888685, 4.62061861166513, 4.74707907444342, + 4.87353953722171, 5, 2.16691562773411, 2.29009320913698, + 2.41327079053984, 2.53644837194271, 2.65962595334557, 2.78280353474843, + 2.9059811161513, 3.02915869755416, 3.15233627895703, 3.27551386035989, + 3.39869144176276, 3.52186902316562, 3.64504660456849, 3.76822418597135, + 3.89140176737422, 4.01457934877708, 4.13775693017995, 4.26093451158281, + 4.38411209298568, 4.50728967438854, 4.63046725579141, 4.75364483719427, + 4.87682241859714, 5, 2.23798508052542, 2.35807268571997, + 2.47816029091451, 2.59824789610906, 2.71833550130361, 2.83842310649815, + 2.9585107116927, 3.07859831688725, 3.1986859220818, 3.31877352727634, + 3.43886113247089, 3.55894873766544, 3.67903634285998, 3.79912394805453, + 3.91921155324908, 4.03929915844362, 4.15938676363817, 4.27947436883272, + 4.39956197402726, 4.51964957922181, 4.63973718441636, 4.75982478961091, + 4.87991239480545, 5, 2.30445671930436, 2.42165425324765, + 2.53885178719094, 2.65604932113423, 2.77324685507751, 2.8904443890208, + 3.00764192296409, 3.12483945690738, 3.24203699085067, 3.35923452479396, + 3.47643205873725, 3.59362959268054, 3.71082712662382, 3.82802466056711, + 3.9452221945104, 4.06241972845369, 4.17961726239698, 4.29681479634027, + 4.41401233028356, 4.53120986422685, 4.64840739817013, 4.76560493211342, + 4.88280246605671, 5, 2.36617996442956, 2.48069387901958, 2.5952077936096, + 2.70972170819962, 2.82423562278964, 2.93874953737966, 3.05326345196967, + 3.16777736655969, 3.28229128114971, 3.39680519573973, 3.51131911032975, + 3.62583302491977, 3.74034693950979, 3.85486085409981, 3.96937476868983, + 4.08388868327985, 4.19840259786987, 4.31291651245989, 4.4274304270499, + 4.54194434163992, 4.65645825622994, 4.77097217081996, 4.88548608540998, + 5, 2.42301499289852, 2.53505781929423, 2.64710064568995, + 2.75914347208567, 2.87118629848138, 2.9832291248771, 3.09527195127282, + 3.20731477766853, 3.31935760406425, 3.43140043045997, 3.54344325685568, + 3.6554860832514, 3.76752890964712, 3.87957173604283, 3.99161456243855, + 4.10365738883427, 4.21570021522998, 4.3277430416257, 4.43978586802142, + 4.55182869441713, 4.66387152081285, 4.77591434720857, 4.88795717360428, + 5, 2.47483305509168, 2.5846229222616, 2.69441278943153, 2.80420265660146, + 2.91399252377138, 3.02378239094131, 3.13357225811124, 3.24336212528117, + 3.35315199245109, 3.46294185962102, 3.57273172679095, 3.68252159396087, + 3.7923114611308, 3.90210132830073, 4.01189119547066, 4.12168106264058, + 4.23147092981051, 4.34126079698044, 4.45105066415036, 4.56084053132029, + 4.67063039849022, 4.78042026566015, 4.89021013283007, 5, + 2.52151676643171, 2.62927690702164, 2.73703704761157, 2.84479718820149, + 2.95255732879142, 3.06031746938134, 3.16807760997127, 3.27583775056119, + 3.38359789115112, 3.49135803174104, 3.59911817233097, 3.70687831292089, + 3.81463845351082, 3.92239859410075, 4.03015873469067, 4.1379188752806, + 4.24567901587052, 4.35343915646045, 4.46119929705037, 4.5689594376403, + 4.67671957823022, 4.78447971882015, 4.89223985941007, 5, + 2.56296037329738, 2.66891861793663, 2.77487686257587, 2.88083510721511, + 2.98679335185436, 3.0927515964936, 3.19870984113285, 3.30466808577209, + 3.41062633041134, 3.51658457505058, 3.62254281968982, 3.72850106432907, + 3.83445930896831, 3.94041755360756, 4.0463757982468, 4.15233404288605, + 4.25829228752529, 4.36425053216453, 4.47020877680378, 4.57616702144302, + 4.68212526608227, 4.78808351072151, 4.89404175536076, 5, + 2.59906999258946, 2.70345825378122, 2.80784651497298, 2.91223477616474, + 3.01662303735651, 3.12101129854827, 3.22539955974003, 3.3297878209318, + 3.43417608212356, 3.53856434331532, 3.64295260450708, 3.74734086569885, + 3.85172912689061, 3.95611738808237, 4.06050564927413, 4.1648939104659, + 4.26928217165766, 4.37367043284942, 4.47805869404119, 4.58244695523295, + 4.68683521642471, 4.79122347761647, 4.89561173880824, 5, + 2.62976382440616, 2.73281757117111, 2.83587131793606, 2.93892506470101, + 3.04197881146596, 3.14503255823091, 3.24808630499586, 3.35114005176081, + 3.45419379852575, 3.5572475452907, 3.66030129205565, 3.7633550388206, + 3.86640878558555, 3.9694625323505, 4.07251627911545, 4.1755700258804, + 4.27862377264535, 4.3816775194103, 4.48473126617525, 4.5877850129402, + 4.69083875970515, 4.7938925064701, 4.89694625323505, 5, 2.65497233734624, + 2.75693006180945, 2.85888778627266, 2.96084551073586, 3.06280323519907, + 3.16476095966228, 3.26671868412548, 3.36867640858869, 3.4706341330519, + 3.57259185751511, 3.67454958197831, 3.77650730644152, 3.87846503090473, + 3.98042275536793, 4.08238047983114, 4.18433820429435, 4.28629592875755, + 4.38825365322076, 4.49021137768397, 4.59216910214717, 4.69412682661038, + 4.79608455107359, 4.89804227553679, 5, 2.67463842601999, + 2.77574110314956, 2.87684378027912, 2.97794645740869, 3.07904913453825, + 3.18015181166782, 3.28125448879738, 3.38235716592695, 3.48345984305652, + 3.58456252018608, 3.68566519731565, 3.78676787444521, 3.88787055157478, + 3.98897322870434, 4.09007590583391, 4.19117858296347, 4.29228126009304, + 4.39338393722261, 4.49448661435217, 4.59558929148174, 4.6966919686113, + 4.79779464574087, 4.89889732287043, 5, 2.68871754041127, + 2.78920808213252, 2.88969862385377, 2.99018916557502, 3.09067970729627, + 3.19117024901752, 3.29166079073876, 3.39215133246001, 3.49264187418126, + 3.59313241590251, 3.69362295762376, 3.79411349934501, 3.89460404106626, + 3.99509458278751, 4.09558512450876, 4.19607566623001, 4.29656620795126, + 4.3970567496725, 4.49754729139375, 4.598037833115, 4.69852837483625, + 4.7990189165575, 4.89950945827875, 5, 2.69717778679766, 2.7973004917195, + 2.89742319664134, 2.99754590156318, 3.09766860648502, 3.19779131140687, + 3.29791401632871, 3.39803672125055, 3.49815942617239, 3.59828213109423, + 3.69840483601607, 3.79852754093791, 3.89865024585975, 3.99877295078159, + 4.09889565570343, 4.19901836062527, 4.29914106554711, 4.39926377046895, + 4.4993864753908, 4.59950918031264, 4.69963188523448, 4.79975459015632, + 4.89987729507816, 5 ; + + coordy = 0, 0.0951638316474846, 0.0921493937456564, 0, 0.190112086608365, + 0.184098181407945, 0.28462967654657, 0.2756462113408, 0.37850248872082, + 0.366594239743307, 0.471517871018854, 0.456744382011003, + 0.563465113682859, 0.545900561008143, 0.654135926634843, + 0.633868951245487, 0.743324911320655, 0.720458417957364, + 0.830830026003773, 0.805480950083401, 0.916453043454821, + 0.88875208617404, 1, 0.970091332255051, 1.08128163491119, + 1.04932257070444, 1.1601138191424, 1.1262744592155, 1.23631797244121, + 1.20078081894225, 1.30972146789057, 1.27268101094799, 1.38015802296422, + 1.34182030010411, 1.44746807621014, 1.40515827116473, 1.51149914870852, + 1.46544496847418, 1.57210618948557, 1.52254541404295, 1.62915190410067, + 1.57633184776656, 1.68250706566236, 1.62668401684325, 1.73205080756888, + 1.67348944818527, 1.77767089730985, 1.71664370320657, 1.81926399070904, + 1.75605061440983, 1.85673586603215, 1.79162250323673, 1.89000163742934, + 1.82328037868812, 1.91898594722899, 1.85095411626404, 1.94362313664708, + 1.87458261681821, 1.96385739452541, 1.89411394496733, 1.97964288376187, + 1.90950544674137, 1.99094384514617, 1.92072384620856, 1.99773467836602, + 1.92774532085603, 2, 1.93055555555556, 0.0892058837944594, 0, + 0.1782257798593, 0.26687412178693, 0.354966184859383, 0.442318504509218, + 0.528749291925774, 0.614078845865291, 0.698129959732033, + 0.780728323008215, 0.861702916123396, 0.940886397868808, + 1.01811548447902, 1.09323131952217, 1.16607983376092, 1.23651209416876, + 1.30438464131129, 1.36384399094392, 1.42047441601005, 1.47415077449309, + 1.52475461628737, 1.57217445152577, 1.6163060031401, 1.65705244308219, + 1.6943246116706, 1.72804121956591, 1.75812903191729, 1.78452303426296, + 1.80716657980884, 1.8260115177518, 1.84101830235666, 1.85215608254006, + 1.85940277175805, 1.86274509803922, 0.0863333017938937, 0, + 0.172494881962429, 0.25831340788496, 0.343618324069047, + 0.428240238513501, 0.51201130643575, 0.594765610494257, + 0.676339536644662, 0.756572144778214, 0.835305533302888, + 0.912385196841268, 0.987660376234932, 1.06098440006242, 1.1322150168972, + 1.20121471755289, 1.26785104658576, 1.32352523554771, 1.37658749131615, + 1.42692227083599, 1.4744202096631, 1.51897836970991, 1.56050047243337, + 1.59889711693672, 1.63408598249135, 1.66599201501969, 1.69454759711684, + 1.71969270122577, 1.74137502561898, 1.7595501128788, 1.77418145060772, + 1.78524055414069, 1.79270703107207, 1.79656862745098, 0.0835316477439593, + 0, 0.166905487717333, 0.249964069634891, 0.3325506573723, + 0.414509584023851, 0.495686604538073, 0.575929245132385, + 0.65508714869525, 0.733012415393399, 0.809559937712515, + 0.884587729172434, 0.957957245972181, 1.02953370083625, 1.09918636835111, + 1.16678888110037, 1.23221951592754, 1.2842020049761, 1.33378419439247, + 1.38085990307167, 1.42532862789375, 1.46709577139568, 1.50607285606508, + 1.54217772477015, 1.57533472687208, 1.60547488959806, 1.63253607428677, + 1.65646311715245, 1.67720795424861, 1.69472973034835, 1.70899489149456, + 1.71997726101044, 1.72765809879808, 1.73202614379085, 0.080800921644656, + 0, 0.161457597124011, 0.241826107036723, 0.321763184769141, + 0.401126541040268, 0.479775186232742, 0.557569749779674, + 0.634372795883799, 0.710049134853768, 0.784466129352279, + 0.857493994862304, 0.929006093690767, 0.998879221843645, + 1.06699388812265, 1.1332345848112, 1.19749004933661, 1.24587429922908, + 1.29206452523901, 1.33596367120011, 1.37747987097932, 1.41652665658308, + 1.45302315403522, 1.48689426658247, 1.5180708448128, 1.54648984330104, + 1.57209446342709, 1.59483428204302, 1.61466536569775, 1.63155037016045, + 1.64545862501717, 1.6563662031493, 1.6642559749361, 1.66911764705882, + 0.0781411234959841, 0, 0.156151210182464, 0.233899520090455, + 0.311255906259571, 0.388091109562751, 0.464277051519758, + 0.539687124436124, 0.614196478210307, 0.687682303159323, + 0.760024108222179, 0.831103993910879, 0.900806919390687, + 0.969020963084617, 1.0356375762118, 1.1005518286854, 1.16366264681297, + 1.20854211830666, 1.25142848385577, 1.29223357522132, 1.33087393891981, + 1.3672710252721, 1.4013513663438, 1.4330467423737, 1.46229433631349, + 1.48903687612861, 1.51322276453778, 1.53480619589747, 1.5537472599664, + 1.57001203231508, 1.58357265117557, 1.59440738055729, 1.60250065948611, + 1.6078431372549, 0.0755522532979434, 0, 0.150986326892691, + 0.226184308796087, 0.301028821843589, 0.375403289591302, + 0.449192200399119, 0.522281369101735, 0.594558195674775, + 0.665911920310063, 0.736233874322214, 0.805417726318159, + 0.873359723071944, 0.939958924559163, 1.00511743261858, 1.06874061272294, + 1.13073730835664, 1.17220546220884, 1.21187607024274, 1.2496696151353, + 1.28551083171522, 1.31932887746275, 1.35105749299082, 1.38063515214383, + 1.40800520137417, 1.43311598808078, 1.45592097761886, 1.4763788587158, + 1.49445363705454, 1.51011471681226, 1.52333696996973, 1.5341007932344, + 1.54239215244813, 1.54820261437909, 0.073034311050534, 0, + 0.145962947254693, 0.21868047315362, 0.291081931521196, + 0.363063081125921, 0.434520632870827, 0.505352483776508, + 0.575457948277202, 0.644737986305988, 0.713095427652386, + 0.780435192084143, 0.846664504734535, 0.911693106267283, + 0.975433457342979, 1.03780093692384, 1.0987140339676, 1.13686433093562, + 1.17340728439994, 1.20827179094205, 1.24139054936555, 1.27270021315502, + 1.30214153397628, 1.32965949589285, 1.35520343999483, 1.37872717915755, + 1.40018910267031, 1.41955227049801, 1.43678449696219, 1.45185842365198, + 1.46475158139968, 1.47544644118063, 1.48393045382214, 1.49019607843137, + 0.0705872967537558, 0, 0.14108107126847, 0.211388013163053, + 0.281415235292391, 0.351070484166606, 0.420262348934881, + 0.488900468460442, 0.55689573601759, 0.624160501147098, + 0.690608768212694, 0.756156391208832, 0.820721264378462, + 0.884223508208977, 0.946585650385001, 1.0077328012881, 1.06759282364586, + 1.10251872448699, 1.13602212632736, 1.16804010264156, 1.1985130918708, + 1.22738503234893, 1.25460348930017, 1.28011977362078, 1.30388905217547, + 1.32587044935892, 1.34602713969215, 1.3643264312441, 1.38073983968934, + 1.39524315283425, 1.40781648546539, 1.41844432439598, 1.42711556360816, + 1.43382352941176, 0.0682112104076088, 0, 0.136340698934021, + 0.204306928824387, 0.272028733157175, 0.339425498713358, + 0.406417348591282, 0.472925323153537, 0.538871558895937, + 0.604179464833394, 0.668773896003138, 0.732581323692225, + 0.795530002003725, 0.857550130384246, 0.918574011744646, + 0.978536205815711, 1.03737367739141, 1.06916864286296, 1.09972059602499, + 1.12897455023384, 1.15687845923097, 1.18338333504445, 1.20844335896251, + 1.23201598532761, 1.25406203791609, 1.27454579868488, 1.29343508868437, + 1.31070134095408, 1.326319665236, 1.34026890435905, 1.35253168216689, + 1.36309444288045, 1.37194748180617, 1.37908496732026, 0.0659060520120932, + 0, 0.131741830251347, 0.197437220137621, 0.262922425115547, + 0.328128124766177, 0.392985631840029, 0.457427047855794, + 0.521385416912244, 0.584794877364874, 0.647590811023717, + 0.709709989534324, 0.771090717610323, 0.831672972793088, + 0.891398541421914, 0.950211150506677, 1.00805659520426, 1.03681408606353, + 1.06450269349285, 1.09107513371889, 1.11648665144606, 1.1406951212416, + 1.16366114296328, 1.18534813101334, 1.2057223972167, 1.22475322713545, + 1.24241294964697, 1.25867699962793, 1.27352397360215, 1.28693567822641, + 1.29889717150416, 1.30939679663404, 1.31842620841619, 1.32598039215686, + 0.0636718215672087, 0, 0.127284465220448, 0.190778887102756, + 0.254096311167508, 0.317178362325064, 0.379967198681121, + 0.442405642567212, 0.504437310066511, 0.56600673874154, + 0.627059513274433, 0.687542388735127, 0.747403411198256, + 0.806592035435505, 0.865059239416804, 0.922757635360998, + 0.97964157708441, 1.0054550540887, 1.03036841873093, 1.05434185309671, + 1.07733766851607, 1.09932039094038, 1.12025684130249, 1.14011621067797, + 1.15887013007728, 1.17649273471061, 1.19296072257996, 1.20825340726567, + 1.22235276478781, 1.2352434744363, 1.24691295347721, 1.25735138565675, + 1.2665517434382, 1.27450980392157, 0.0615085190729555, 0, + 0.122968603841323, 0.184331929719791, 0.245550391313058, + 0.306576211390018, 0.367362049114561, 0.427861107287792, + 0.488027238358737, 0.547815048963392, 0.607180002755285, + 0.666078521294634, 0.724468082767525, 0.782307318311495, + 0.839556105729316, 0.896175660378673, 0.952128623031855, + 0.975091546938469, 0.997317771739223, 1.01877470836729, 1.039431510441, + 1.05925914414079, 1.07823045398013, 1.0963202243215, 1.11350523649785, + 1.12976432141037, 1.14507840748332, 1.15943056386729, 1.17280603879298, + 1.18519229298874, 1.19657902808603, 1.20695820994858, 1.21632408687221, + 1.22467320261438, 0.0594161445293336, 0, 0.118794246113972, + 0.178096347988727, 0.237284665552196, 0.296321671961038, + 0.355170183140346, 0.413793442017532, 0.472155201788924, + 0.530219808030428, 0.587952279466273, 0.645318387212847, + 0.702284732318129, 0.75881882142106, 0.814889140359451, + 0.870465225559704, 0.925517733046597, 0.945723564612833, + 0.965350752517739, 0.984373699530647, 1.00276817722086, 1.02051138084282, + 1.03758198099622, 1.05396017194393, 1.06962771647839, 1.08456798723472, + 1.09876600435707, 1.11220846943279, 1.12488379561764, 1.13678213388372, + 1.14789539533064, 1.15821726950953, 1.16774323871822, 1.17647058823529, + 0.0573946979363429, 0, 0.114761392038397, 0.172072141909563, + 0.229299133884923, 0.286414744038126, 0.343391600758478, + 0.400202646756434, 0.45682120035707, 0.513221015942649, + 0.569376343407396, 0.625261986489763, 0.680853359850069, + 0.736126544764198, 0.791058343307209, 0.84562633090409, + 0.899808907128636, 0.917351107111795, 0.934467361066474, + 0.951138826586767, 0.967347668855629, 0.983077101046474, + 0.99831142235074, 1.01303605354527, 1.02723757001892, 1.04090373218368, + 1.0540235132012, 1.06658712396217, 1.07858603526181, 1.09001299712124, + 1.10086205521101, 1.1111285643396, 1.12080919897623, 1.12990196078431, + 0.0554441792939835, 0, 0.110870041614595, 0.1662593114823, + 0.221593796311238, 0.276855427621281, 0.332026301968956, + 0.387088721504498, 0.442025234063176, 0.496818672700056, + 0.551452194578656, 0.605909319125385, 0.660173965363344, + 0.714230488340911, 0.768063714572589, 0.82165897641183, + 0.875002145277972, 0.889974174435355, 0.90466759738543, + 0.919070089535655, 0.933169985345321, 0.946956304751757, 0.9604187780437, + 0.973547869125499, 0.986334797119435, 0.998771556257233, 1.0108509340157, + 1.02256652745543, 1.03391275772548, 1.04488488270131, 1.05547900772717, + 1.06569209443879, 1.07552196764625, 1.08496732026144, 0.0535645886022553, + 0, 0.107120194842569, 0.160657856706937, 0.214168652831141, + 0.267643722710503, 0.32107428677178, 0.374451666261723, + 0.427767302907242, 0.481012778302648, 0.534179832980052, + 0.587260385119711, 0.640246548857955, 0.693130652151198, + 0.745905254155592, 0.798563162082926, 0.851097447494605, + 0.863592766583512, 0.875951461474605, 0.888167488377311, + 0.900235126689934, 0.912148991958666, 0.923904048075098, + 0.935495618684633, 0.946919397779927, 0.958171459455384, + 0.969248266800595, 0.980146679912575, 0.990863963008656, + 1.00139779062391, 1.01174625287909, 1.0219078598071, 1.03188154472826, + 1.04166666666667, 0.0517559258611584, 0, 0.103511851722317, + 0.155267777583475, 0.207023703444634, 0.258779629305792, + 0.31053555516695, 0.362291481028109, 0.414047406889267, + 0.465803332750425, 0.517559258611584, 0.569315184472742, + 0.621071110333901, 0.672827036195059, 0.724582962056217, + 0.776338887917376, 0.828094813778534, 0.838206883556267, + 0.848318953334001, 0.858431023111734, 0.868543092889467, + 0.878655162667201, 0.888767232444934, 0.898879302222667, 0.9089913720004, + 0.919103441778134, 0.929215511555867, 0.9393275813336, 0.949439651111334, + 0.959551720889067, 0.9696637906668, 0.979775860444533, 0.989887930222267, + 1, 0.785818953334001, 0.795299018750626, 0.804779084167251, + 0.814259149583876, 0.8237392150005, 0.833219280417125, 0.84269934583375, + 0.852179411250375, 0.861659476667, 0.871139542083626, 0.88061960750025, + 0.890099672916875, 0.8995797383335, 0.909059803750125, 0.91853986916675, + 0.928019934583375, 0.9375, 0.733431023111734, 0.742279084167251, + 0.751127145222767, 0.759975206278284, 0.768823267333801, + 0.777671328389317, 0.786519389444834, 0.79536745050035, + 0.804215511555867, 0.813063572611384, 0.8219116336669, 0.830759694722417, + 0.839607755777934, 0.84845581683345, 0.857303877888967, + 0.866151938944483, 0.875, 0.681043092889467, 0.689259149583875, + 0.697475206278284, 0.705691262972692, 0.7139073196671, 0.722123376361509, + 0.730339433055917, 0.738555489750325, 0.746771546444734, + 0.754987603139142, 0.76320365983355, 0.771419716527959, + 0.779635773222367, 0.787851829916775, 0.796067886611183, + 0.804283943305592, 0.8125, 0.628655162667201, 0.636239215000501, + 0.6438232673338, 0.6514073196671, 0.6589913720004, 0.6665754243337, + 0.674159476667, 0.6817435290003, 0.6893275813336, 0.6969116336669, + 0.7044956860002, 0.7120797383335, 0.7196637906668, 0.7272478430001, + 0.7348318953334, 0.7424159476667, 0.75, 0.576267232444934, + 0.583219280417125, 0.590171328389317, 0.597123376361509, 0.6040754243337, + 0.611027472305892, 0.617979520278084, 0.624931568250275, + 0.631883616222467, 0.638835664194658, 0.64578771216685, + 0.652739760139042, 0.659691808111233, 0.666643856083425, + 0.673595904055617, 0.680547952027808, 0.6875, 0.523879302222667, + 0.53019934583375, 0.536519389444834, 0.542839433055917, 0.549159476667, + 0.555479520278084, 0.561799563889167, 0.56811960750025, + 0.574439651111334, 0.580759694722417, 0.5870797383335, 0.593399781944583, + 0.599719825555667, 0.60603986916675, 0.612359912777833, + 0.618679956388917, 0.625, 0.4714913720004, 0.477179411250375, + 0.48286745050035, 0.488555489750325, 0.4942435290003, 0.499931568250275, + 0.50561960750025, 0.511307646750225, 0.5169956860002, 0.522683725250175, + 0.52837176450015, 0.534059803750125, 0.5397478430001, 0.545435882250075, + 0.55112392150005, 0.556811960750025, 0.5625, 0.419103441778134, + 0.424159476667, 0.429215511555867, 0.434271546444734, 0.4393275813336, + 0.444383616222467, 0.449439651111334, 0.4544956860002, 0.459551720889067, + 0.464607755777934, 0.4696637906668, 0.474719825555667, 0.479775860444533, + 0.4848318953334, 0.489887930222267, 0.494943965111133, 0.5, + 0.366715511555867, 0.371139542083625, 0.375563572611384, + 0.379987603139142, 0.3844116336669, 0.388835664194659, 0.393259694722417, + 0.397683725250175, 0.402107755777933, 0.406531786305692, + 0.41095581683345, 0.415379847361208, 0.419803877888967, + 0.424227908416725, 0.428651938944483, 0.433075969472242, 0.4375, + 0.3143275813336, 0.31811960750025, 0.3219116336669, 0.32570365983355, + 0.3294956860002, 0.33328771216685, 0.3370797383335, 0.34087176450015, + 0.3446637906668, 0.34845581683345, 0.3522478430001, 0.35603986916675, + 0.3598318953334, 0.36362392150005, 0.3674159476667, 0.37120797383335, + 0.375, 0.261939651111334, 0.265099672916875, 0.268259694722417, + 0.271419716527958, 0.2745797383335, 0.277739760139042, 0.280899781944583, + 0.284059803750125, 0.287219825555667, 0.290379847361208, + 0.29353986916675, 0.296699890972292, 0.299859912777833, + 0.303019934583375, 0.306179956388917, 0.309339978194458, 0.3125, + 0.209551720889067, 0.2120797383335, 0.214607755777933, 0.217135773222367, + 0.2196637906668, 0.222191808111233, 0.224719825555667, 0.2272478430001, + 0.229775860444533, 0.232303877888967, 0.2348318953334, 0.237359912777833, + 0.239887930222267, 0.2424159476667, 0.244943965111133, 0.247471982555567, + 0.25, 0.1571637906668, 0.159059803750125, 0.16095581683345, + 0.162851829916775, 0.1647478430001, 0.166643856083425, 0.16853986916675, + 0.170435882250075, 0.1723318953334, 0.174227908416725, 0.17612392150005, + 0.178019934583375, 0.1799159476667, 0.181811960750025, 0.18370797383335, + 0.185603986916675, 0.1875, 0.104775860444533, 0.10603986916675, + 0.107303877888967, 0.108567886611183, 0.1098318953334, 0.111095904055617, + 0.112359912777833, 0.11362392150005, 0.114887930222267, + 0.116151938944483, 0.1174159476667, 0.118679956388917, 0.119943965111133, + 0.12120797383335, 0.122471982555567, 0.123735991277783, 0.125, + 0.0523879302222667, 0.053019934583375, 0.0536519389444834, + 0.0542839433055917, 0.0549159476667, 0.0555479520278084, + 0.0561799563889167, 0.056811960750025, 0.0574439651111334, + 0.0580759694722417, 0.05870797383335, 0.0593399781944584, + 0.0599719825555667, 0.060603986916675, 0.0612359912777833, + 0.0618679956388917, 0.0625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1.99773467836602, 1.92774532085603, 1.99094384514617, + 1.92072384620856, 1.97964288376187, 1.90950544674137, 1.96385739452541, + 1.89411394496733, 1.94362313664708, 1.87458261681821, 1.91898594722899, + 1.85095411626404, 1.89000163742934, 1.82328037868812, 1.85673586603215, + 1.79162250323673, 1.81926399070904, 1.75605061440983, 1.77767089730985, + 1.71664370320657, 1.73205080756888, 1.67348944818527, 1.68250706566236, + 1.62668401684325, 1.62915190410067, 1.57633184776656, 1.57210618948558, + 1.52254541404295, 1.51149914870852, 1.46544496847418, 1.44746807621014, + 1.40515827116473, 1.38015802296422, 1.34182030010411, 1.30972146789057, + 1.27268101094799, 1.23631797244121, 1.20078081894225, 1.1601138191424, + 1.1262744592155, 1.0812816349112, 1.04932257070444, 1, 0.970091332255052, + 0.916453043454821, 0.888752086174041, 0.830830026003773, + 0.805480950083402, 0.743324911320655, 0.720458417957364, + 0.654135926634844, 0.633868951245487, 0.56346511368286, + 0.545900561008144, 0.471517871018855, 0.456744382011003, + 0.378502488720821, 0.366594239743308, 0.28462967654657, 0.2756462113408, + 0.190112086608366, 0.184098181407946, 0.0951638316474854, + 0.0921493937456571, 2.44929359829471e-16, 2.36424868168725e-16, + 1.85940277175805, 1.85215608254006, 1.84101830235666, 1.8260115177518, + 1.80716657980884, 1.78452303426296, 1.75812903191729, 1.72804121956591, + 1.6943246116706, 1.65705244308219, 1.6163060031401, 1.57217445152577, + 1.52475461628737, 1.47415077449309, 1.42047441601005, 1.36384399094392, + 1.30438464131129, 1.23651209416876, 1.16607983376092, 1.09323131952217, + 1.01811548447902, 0.940886397868808, 0.861702916123396, + 0.780728323008216, 0.698129959732033, 0.614078845865292, + 0.528749291925774, 0.442318504509219, 0.354966184859383, + 0.26687412178693, 0.1782257798593, 0.0892058837944601, + 2.28120482194115e-16, 1.79270703107207, 1.78524055414069, + 1.77418145060772, 1.7595501128788, 1.74137502561898, 1.71969270122577, + 1.69454759711684, 1.66599201501969, 1.63408598249135, 1.59889711693672, + 1.56050047243337, 1.51897836970992, 1.4744202096631, 1.42692227083599, + 1.37658749131615, 1.32352523554771, 1.26785104658576, 1.20121471755289, + 1.1322150168972, 1.06098440006242, 0.987660376234932, 0.912385196841269, + 0.835305533302888, 0.756572144778215, 0.676339536644662, + 0.594765610494258, 0.512011306435751, 0.428240238513501, + 0.343618324069048, 0.25831340788496, 0.172494881962429, + 0.0863333017938944, 2.2001620190564e-16, 1.72765809879808, + 1.71997726101044, 1.70899489149456, 1.69472973034835, 1.67720795424861, + 1.65646311715245, 1.63253607428677, 1.60547488959806, 1.57533472687208, + 1.54217772477015, 1.50607285606508, 1.46709577139569, 1.42532862789375, + 1.38085990307167, 1.33378419439247, 1.2842020049761, 1.23221951592754, + 1.16678888110037, 1.09918636835111, 1.02953370083625, 0.957957245972182, + 0.884587729172435, 0.809559937712516, 0.733012415393399, + 0.65508714869525, 0.575929245132385, 0.495686604538074, + 0.414509584023851, 0.3325506573723, 0.249964069634891, 0.166905487717333, + 0.0835316477439599, 2.121120273033e-16, 1.6642559749361, 1.6563662031493, + 1.64545862501717, 1.63155037016045, 1.61466536569775, 1.59483428204302, + 1.57209446342709, 1.54648984330104, 1.5180708448128, 1.48689426658247, + 1.45302315403522, 1.41652665658308, 1.37747987097932, 1.33596367120011, + 1.29206452523901, 1.24587429922908, 1.19749004933661, 1.1332345848112, + 1.06699388812265, 0.998879221843645, 0.929006093690767, + 0.857493994862305, 0.784466129352279, 0.710049134853769, + 0.634372795883799, 0.557569749779674, 0.479775186232743, + 0.401126541040268, 0.321763184769141, 0.241826107036723, + 0.161457597124011, 0.0808009216446566, 2.04407958387095e-16, + 1.60250065948611, 1.59440738055729, 1.58357265117557, 1.57001203231508, + 1.5537472599664, 1.53480619589747, 1.51322276453778, 1.48903687612861, + 1.46229433631349, 1.4330467423737, 1.4013513663438, 1.3672710252721, + 1.33087393891981, 1.29223357522132, 1.25142848385577, 1.20854211830666, + 1.16366264681297, 1.1005518286854, 1.0356375762118, 0.969020963084617, + 0.900806919390688, 0.83110399391088, 0.760024108222179, + 0.687682303159323, 0.614196478210307, 0.539687124436124, + 0.464277051519758, 0.388091109562752, 0.311255906259571, + 0.233899520090455, 0.156151210182464, 0.0781411234959846, + 1.96903995157025e-16, 1.54239215244813, 1.5341007932344, + 1.52333696996973, 1.51011471681226, 1.49445363705454, 1.4763788587158, + 1.45592097761886, 1.43311598808078, 1.40800520137417, 1.38063515214383, + 1.35105749299082, 1.31932887746275, 1.28551083171522, 1.2496696151353, + 1.21187607024274, 1.17220546220884, 1.13073730835664, 1.06874061272294, + 1.00511743261858, 0.939958924559163, 0.873359723071944, + 0.805417726318159, 0.736233874322215, 0.665911920310063, + 0.594558195674775, 0.522281369101735, 0.44919220039912, + 0.375403289591303, 0.301028821843589, 0.226184308796087, + 0.150986326892692, 0.0755522532979439, 1.89600137613091e-16, + 1.48393045382214, 1.47544644118063, 1.46475158139968, 1.45185842365198, + 1.43678449696219, 1.41955227049801, 1.40018910267031, 1.37872717915755, + 1.35520343999483, 1.32965949589285, 1.30214153397628, 1.27270021315503, + 1.24139054936555, 1.20827179094205, 1.17340728439994, 1.13686433093562, + 1.0987140339676, 1.03780093692384, 0.975433457342979, 0.911693106267283, + 0.846664504734535, 0.780435192084143, 0.713095427652386, + 0.644737986305988, 0.575457948277202, 0.505352483776508, + 0.434520632870828, 0.363063081125921, 0.291081931521196, + 0.21868047315362, 0.145962947254694, 0.0730343110505344, + 1.82496385755292e-16, 1.42711556360816, 1.41844432439598, + 1.40781648546539, 1.39524315283425, 1.38073983968934, 1.3643264312441, + 1.34602713969215, 1.32587044935892, 1.30388905217547, 1.28011977362078, + 1.25460348930017, 1.22738503234893, 1.1985130918708, 1.16804010264156, + 1.13602212632736, 1.10251872448699, 1.06759282364586, 1.0077328012881, + 0.946585650385001, 0.884223508208978, 0.820721264378462, + 0.756156391208832, 0.690608768212694, 0.624160501147099, + 0.55689573601759, 0.488900468460442, 0.420262348934882, + 0.351070484166606, 0.281415235292391, 0.211388013163053, + 0.14108107126847, 0.0705872967537562, 1.75592739583628e-16, + 1.37194748180617, 1.36309444288045, 1.35253168216689, 1.34026890435905, + 1.326319665236, 1.31070134095408, 1.29343508868437, 1.27454579868488, + 1.25406203791609, 1.23201598532761, 1.20844335896251, 1.18338333504445, + 1.15687845923097, 1.12897455023384, 1.09972059602499, 1.06916864286296, + 1.03737367739141, 0.978536205815711, 0.918574011744646, + 0.857550130384246, 0.795530002003725, 0.732581323692226, + 0.668773896003138, 0.604179464833394, 0.538871558895937, + 0.472925323153538, 0.406417348591282, 0.339425498713358, + 0.272028733157175, 0.204306928824387, 0.136340698934022, + 0.0682112104076092, 1.68889199098099e-16, 1.31842620841619, + 1.30939679663404, 1.29889717150416, 1.28693567822641, 1.27352397360215, + 1.25867699962793, 1.24241294964697, 1.22475322713545, 1.2057223972167, + 1.18534813101334, 1.16366114296328, 1.1406951212416, 1.11648665144606, + 1.09107513371889, 1.06450269349285, 1.03681408606354, 1.00805659520426, + 0.950211150506677, 0.891398541421914, 0.831672972793088, + 0.771090717610323, 0.709709989534324, 0.647590811023718, + 0.584794877364875, 0.521385416912244, 0.457427047855794, + 0.392985631840029, 0.328128124766178, 0.262922425115548, + 0.197437220137621, 0.131741830251348, 0.0659060520120935, + 1.62385764298705e-16, 1.2665517434382, 1.25735138565675, + 1.24691295347721, 1.2352434744363, 1.22235276478781, 1.20825340726567, + 1.19296072257996, 1.17649273471061, 1.15887013007728, 1.14011621067797, + 1.12025684130249, 1.09932039094038, 1.07733766851607, 1.05434185309671, + 1.03036841873093, 1.0054550540887, 0.97964157708441, 0.922757635360998, + 0.865059239416804, 0.806592035435505, 0.747403411198256, + 0.687542388735127, 0.627059513274433, 0.566006738741541, + 0.504437310066511, 0.442405642567212, 0.379967198681122, + 0.317178362325064, 0.254096311167509, 0.190778887102756, + 0.127284465220448, 0.063671821567209, 1.56082435185447e-16, + 1.21632408687221, 1.20695820994858, 1.19657902808603, 1.18519229298874, + 1.17280603879298, 1.15943056386729, 1.14507840748332, 1.12976432141037, + 1.11350523649785, 1.0963202243215, 1.07823045398013, 1.05925914414079, + 1.039431510441, 1.01877470836729, 0.997317771739223, 0.975091546938469, + 0.952128623031855, 0.896175660378674, 0.839556105729316, + 0.782307318311495, 0.724468082767525, 0.666078521294634, + 0.607180002755285, 0.547815048963392, 0.488027238358738, + 0.427861107287792, 0.367362049114561, 0.306576211390018, + 0.245550391313058, 0.184331929719792, 0.122968603841323, + 0.0615085190729558, 1.49979211758324e-16, 1.16774323871822, + 1.15821726950953, 1.14789539533064, 1.13678213388372, 1.12488379561764, + 1.11220846943279, 1.09876600435707, 1.08456798723472, 1.0696277164784, + 1.05396017194393, 1.03758198099622, 1.02051138084282, 1.00276817722086, + 0.984373699530647, 0.965350752517739, 0.945723564612833, + 0.925517733046597, 0.870465225559704, 0.814889140359451, + 0.75881882142106, 0.702284732318129, 0.645318387212847, + 0.587952279466273, 0.530219808030428, 0.472155201788924, + 0.413793442017533, 0.355170183140346, 0.296321671961038, + 0.237284665552196, 0.178096347988727, 0.118794246113973, + 0.0594161445293338, 1.44076094017336e-16, 1.12080919897623, + 1.1111285643396, 1.10086205521101, 1.09001299712124, 1.07858603526181, + 1.06658712396217, 1.0540235132012, 1.04090373218368, 1.02723757001892, + 1.01303605354527, 0.99831142235074, 0.983077101046474, 0.967347668855629, + 0.951138826586767, 0.934467361066475, 0.917351107111795, + 0.899808907128636, 0.84562633090409, 0.791058343307209, + 0.736126544764198, 0.680853359850069, 0.625261986489763, + 0.569376343407397, 0.51322101594265, 0.45682120035707, 0.400202646756435, + 0.343391600758478, 0.286414744038126, 0.229299133884923, + 0.172072141909564, 0.114761392038397, 0.0573946979363431, + 1.38373081962483e-16, 1.07552196764625, 1.06569209443879, + 1.05547900772716, 1.04488488270131, 1.03391275772548, 1.02256652745543, + 1.0108509340157, 0.998771556257233, 0.986334797119435, 0.973547869125499, + 0.9604187780437, 0.946956304751757, 0.933169985345321, 0.919070089535655, + 0.90466759738543, 0.889974174435355, 0.875002145277972, 0.82165897641183, + 0.768063714572589, 0.714230488340911, 0.660173965363344, + 0.605909319125385, 0.551452194578656, 0.496818672700056, + 0.442025234063176, 0.387088721504498, 0.332026301968956, + 0.276855427621281, 0.221593796311238, 0.1662593114823, 0.110870041614596, + 0.0554441792939837, 1.32870175593765e-16, 1.03188154472826, + 1.0219078598071, 1.01174625287909, 1.00139779062391, 0.990863963008656, + 0.980146679912575, 0.969248266800595, 0.958171459455384, + 0.946919397779927, 0.935495618684633, 0.923904048075098, + 0.912148991958666, 0.900235126689934, 0.888167488377311, + 0.875951461474606, 0.863592766583512, 0.851097447494605, + 0.798563162082926, 0.745905254155592, 0.693130652151198, + 0.640246548857955, 0.587260385119711, 0.534179832980052, + 0.481012778302648, 0.427767302907242, 0.374451666261723, + 0.32107428677178, 0.267643722710503, 0.214168652831141, + 0.160657856706938, 0.107120194842569, 0.0535645886022555, + 1.27567374911183e-16, 0.989887930222267, 0.979775860444533, + 0.9696637906668, 0.959551720889067, 0.949439651111333, 0.9393275813336, + 0.929215511555867, 0.919103441778134, 0.9089913720004, 0.898879302222667, + 0.888767232444934, 0.878655162667201, 0.868543092889467, + 0.858431023111734, 0.848318953334001, 0.838206883556267, + 0.828094813778534, 0.776338887917376, 0.724582962056217, + 0.672827036195059, 0.621071110333901, 0.569315184472742, + 0.517559258611584, 0.465803332750426, 0.414047406889267, + 0.362291481028109, 0.31053555516695, 0.258779629305792, + 0.207023703444634, 0.155267777583475, 0.103511851722317, + 0.0517559258611585, 1.22464679914735e-16, 0.785818953334001, + 0.733431023111734, 0.681043092889467, 0.628655162667201, + 0.576267232444934, 0.523879302222667, 0.4714913720004, 0.419103441778134, + 0.366715511555867, 0.3143275813336, 0.261939651111334, 0.209551720889067, + 0.1571637906668, 0.104775860444534, 0.0523879302222668, + 1.15260875213869e-16, 0.795299018750626, 0.742279084167251, + 0.689259149583876, 0.636239215000501, 0.583219280417126, + 0.530199345833751, 0.477179411250375, 0.424159476667, 0.371139542083625, + 0.31811960750025, 0.265099672916875, 0.2120797383335, 0.159059803750125, + 0.10603986916675, 0.0530199345833751, 1.08057070513002e-16, + 0.804779084167251, 0.751127145222767, 0.697475206278284, 0.6438232673338, + 0.590171328389317, 0.536519389444834, 0.48286745050035, + 0.429215511555867, 0.375563572611384, 0.3219116336669, 0.268259694722417, + 0.214607755777934, 0.16095581683345, 0.107303877888967, + 0.0536519389444835, 1.00853265812135e-16, 0.814259149583876, + 0.759975206278284, 0.705691262972692, 0.6514073196671, 0.597123376361509, + 0.542839433055917, 0.488555489750325, 0.434271546444734, + 0.379987603139142, 0.32570365983355, 0.271419716527959, + 0.217135773222367, 0.162851829916775, 0.108567886611183, + 0.0542839433055918, 9.36494611112682e-17, 0.823739215000501, + 0.768823267333801, 0.7139073196671, 0.6589913720004, 0.6040754243337, + 0.549159476667, 0.4942435290003, 0.4393275813336, 0.3844116336669, + 0.3294956860002, 0.2745797383335, 0.2196637906668, 0.1647478430001, + 0.1098318953334, 0.0549159476667001, 8.64456564104014e-17, + 0.833219280417125, 0.777671328389317, 0.722123376361509, 0.6665754243337, + 0.611027472305892, 0.555479520278084, 0.499931568250275, + 0.444383616222467, 0.388835664194658, 0.33328771216685, + 0.277739760139042, 0.222191808111234, 0.166643856083425, + 0.111095904055617, 0.0555479520278084, 7.92418517095346e-17, + 0.84269934583375, 0.786519389444834, 0.730339433055917, 0.674159476667, + 0.617979520278084, 0.561799563889167, 0.50561960750025, + 0.449439651111334, 0.393259694722417, 0.3370797383335, 0.280899781944583, + 0.224719825555667, 0.16853986916675, 0.112359912777833, + 0.0561799563889168, 7.20380470086678e-17, 0.852179411250375, + 0.79536745050035, 0.738555489750325, 0.6817435290003, 0.624931568250275, + 0.56811960750025, 0.511307646750225, 0.4544956860002, 0.397683725250175, + 0.34087176450015, 0.284059803750125, 0.2272478430001, 0.170435882250075, + 0.11362392150005, 0.0568119607500251, 6.4834242307801e-17, + 0.861659476667, 0.804215511555867, 0.746771546444734, 0.6893275813336, + 0.631883616222467, 0.574439651111334, 0.5169956860002, 0.459551720889067, + 0.402107755777934, 0.3446637906668, 0.287219825555667, 0.229775860444533, + 0.1723318953334, 0.114887930222267, 0.0574439651111334, + 5.76304376069343e-17, 0.871139542083625, 0.813063572611384, + 0.754987603139142, 0.6969116336669, 0.638835664194659, 0.580759694722417, + 0.522683725250175, 0.464607755777934, 0.406531786305692, + 0.34845581683345, 0.290379847361208, 0.232303877888967, + 0.174227908416725, 0.116151938944483, 0.0580759694722417, + 5.04266329060675e-17, 0.88061960750025, 0.8219116336669, + 0.76320365983355, 0.7044956860002, 0.64578771216685, 0.5870797383335, + 0.52837176450015, 0.4696637906668, 0.41095581683345, 0.3522478430001, + 0.29353986916675, 0.2348318953334, 0.17612392150005, 0.1174159476667, + 0.0587079738333501, 4.32228282052007e-17, 0.890099672916875, + 0.830759694722417, 0.771419716527958, 0.7120797383335, 0.652739760139042, + 0.593399781944584, 0.534059803750125, 0.474719825555667, + 0.415379847361208, 0.35603986916675, 0.296699890972292, + 0.237359912777833, 0.178019934583375, 0.118679956388917, + 0.0593399781944584, 3.60190235043339e-17, 0.8995797383335, + 0.839607755777934, 0.779635773222367, 0.7196637906668, 0.659691808111234, + 0.599719825555667, 0.5397478430001, 0.479775860444534, 0.419803877888967, + 0.3598318953334, 0.299859912777833, 0.239887930222267, 0.1799159476667, + 0.119943965111133, 0.0599719825555667, 2.88152188034671e-17, + 0.909059803750125, 0.84845581683345, 0.787851829916775, 0.7272478430001, + 0.666643856083425, 0.60603986916675, 0.545435882250075, 0.4848318953334, + 0.424227908416725, 0.36362392150005, 0.303019934583375, 0.2424159476667, + 0.181811960750025, 0.12120797383335, 0.060603986916675, + 2.16114141026003e-17, 0.91853986916675, 0.857303877888967, + 0.796067886611183, 0.7348318953334, 0.673595904055617, 0.612359912777833, + 0.55112392150005, 0.489887930222267, 0.428651938944483, 0.3674159476667, + 0.306179956388917, 0.244943965111133, 0.18370797383335, + 0.122471982555567, 0.0612359912777833, 1.44076094017336e-17, + 0.928019934583375, 0.866151938944484, 0.804283943305592, 0.7424159476667, + 0.680547952027808, 0.618679956388917, 0.556811960750025, + 0.494943965111133, 0.433075969472242, 0.37120797383335, + 0.309339978194458, 0.247471982555567, 0.185603986916675, + 0.123735991277783, 0.0618679956388917, 7.20380470086678e-18, + -0.095163831647484, -0.0921493937456558, -0.190112086608365, + -0.184098181407945, -0.28462967654657, -0.275646211340799, + -0.37850248872082, -0.366594239743307, -0.471517871018854, + -0.456744382011003, -0.563465113682859, -0.545900561008143, + -0.654135926634843, -0.633868951245487, -0.743324911320655, + -0.720458417957364, -0.830830026003772, -0.805480950083401, + -0.916453043454821, -0.88875208617404, -1, -0.970091332255051, + -1.08128163491119, -1.04932257070444, -1.1601138191424, -1.1262744592155, + -1.23631797244121, -1.20078081894225, -1.30972146789057, + -1.27268101094799, -1.38015802296422, -1.34182030010411, + -1.44746807621014, -1.40515827116473, -1.51149914870852, + -1.46544496847418, -1.57210618948557, -1.52254541404295, + -1.62915190410067, -1.57633184776656, -1.68250706566236, + -1.62668401684325, -1.73205080756888, -1.67348944818527, + -1.77767089730985, -1.71664370320657, -1.81926399070904, + -1.75605061440983, -1.85673586603214, -1.79162250323673, + -1.89000163742934, -1.82328037868812, -1.91898594722899, + -1.85095411626404, -1.94362313664708, -1.87458261681821, + -1.96385739452541, -1.89411394496733, -1.97964288376187, + -1.90950544674137, -1.99094384514617, -1.92072384620856, + -1.99773467836602, -1.92774532085603, -2, -1.93055555555556, + -0.0892058837944589, -0.1782257798593, -0.266874121786929, + -0.354966184859382, -0.442318504509218, -0.528749291925773, + -0.614078845865291, -0.698129959732033, -0.780728323008215, + -0.861702916123396, -0.940886397868807, -1.01811548447902, + -1.09323131952217, -1.16607983376092, -1.23651209416876, + -1.30438464131129, -1.36384399094392, -1.42047441601005, + -1.47415077449309, -1.52475461628737, -1.57217445152577, + -1.6163060031401, -1.65705244308219, -1.6943246116706, -1.72804121956591, + -1.75812903191729, -1.78452303426296, -1.80716657980884, + -1.8260115177518, -1.84101830235666, -1.85215608254006, + -1.85940277175805, -1.86274509803922, -0.0863333017938932, + -0.172494881962429, -0.25831340788496, -0.343618324069046, + -0.428240238513501, -0.51201130643575, -0.594765610494257, + -0.676339536644662, -0.756572144778214, -0.835305533302888, + -0.912385196841268, -0.987660376234931, -1.06098440006242, + -1.1322150168972, -1.20121471755289, -1.26785104658576, + -1.32352523554771, -1.37658749131615, -1.42692227083599, + -1.4744202096631, -1.51897836970991, -1.56050047243337, + -1.59889711693672, -1.63408598249135, -1.66599201501969, + -1.69454759711684, -1.71969270122577, -1.74137502561898, + -1.7595501128788, -1.77418145060772, -1.78524055414069, + -1.79270703107207, -1.79656862745098, -0.0835316477439588, + -0.166905487717333, -0.249964069634891, -0.332550657372299, + -0.414509584023851, -0.495686604538073, -0.575929245132385, + -0.65508714869525, -0.733012415393398, -0.809559937712515, + -0.884587729172434, -0.957957245972181, -1.02953370083625, + -1.09918636835111, -1.16678888110037, -1.23221951592754, + -1.2842020049761, -1.33378419439247, -1.38085990307167, + -1.42532862789375, -1.46709577139568, -1.50607285606508, + -1.54217772477014, -1.57533472687208, -1.60547488959806, + -1.63253607428677, -1.65646311715245, -1.67720795424861, + -1.69472973034835, -1.70899489149456, -1.71997726101044, + -1.72765809879808, -1.73202614379085, -0.0808009216446556, + -0.161457597124011, -0.241826107036722, -0.32176318476914, + -0.401126541040267, -0.479775186232742, -0.557569749779674, + -0.634372795883798, -0.710049134853768, -0.784466129352279, + -0.857493994862304, -0.929006093690766, -0.998879221843645, + -1.06699388812265, -1.1332345848112, -1.19749004933661, + -1.24587429922908, -1.29206452523901, -1.33596367120011, + -1.37747987097932, -1.41652665658308, -1.45302315403522, + -1.48689426658247, -1.5180708448128, -1.54648984330104, + -1.57209446342709, -1.59483428204302, -1.61466536569775, + -1.63155037016045, -1.64545862501717, -1.6563662031493, -1.6642559749361, + -1.66911764705882, -0.0781411234959837, -0.156151210182464, + -0.233899520090454, -0.31125590625957, -0.388091109562751, + -0.464277051519757, -0.539687124436124, -0.614196478210307, + -0.687682303159323, -0.760024108222179, -0.831103993910879, + -0.900806919390687, -0.969020963084617, -1.0356375762118, + -1.1005518286854, -1.16366264681297, -1.20854211830666, + -1.25142848385577, -1.29223357522132, -1.33087393891981, + -1.3672710252721, -1.4013513663438, -1.4330467423737, -1.46229433631349, + -1.48903687612861, -1.51322276453778, -1.53480619589747, + -1.5537472599664, -1.57001203231508, -1.58357265117557, + -1.59440738055729, -1.60250065948611, -1.6078431372549, + -0.075552253297943, -0.150986326892691, -0.226184308796087, + -0.301028821843588, -0.375403289591302, -0.449192200399119, + -0.522281369101735, -0.594558195674774, -0.665911920310062, + -0.736233874322214, -0.805417726318159, -0.873359723071943, + -0.939958924559163, -1.00511743261858, -1.06874061272294, + -1.13073730835664, -1.17220546220884, -1.21187607024274, + -1.2496696151353, -1.28551083171522, -1.31932887746275, + -1.35105749299082, -1.38063515214383, -1.40800520137417, + -1.43311598808078, -1.45592097761886, -1.4763788587158, + -1.49445363705454, -1.51011471681226, -1.52333696996973, + -1.5341007932344, -1.54239215244813, -1.54820261437909, + -0.0730343110505336, -0.145962947254693, -0.21868047315362, + -0.291081931521195, -0.36306308112592, -0.434520632870827, + -0.505352483776508, -0.575457948277202, -0.644737986305988, + -0.713095427652386, -0.780435192084143, -0.846664504734535, + -0.911693106267283, -0.975433457342978, -1.03780093692384, + -1.0987140339676, -1.13686433093562, -1.17340728439994, + -1.20827179094205, -1.24139054936555, -1.27270021315502, + -1.30214153397628, -1.32965949589285, -1.35520343999483, + -1.37872717915755, -1.40018910267031, -1.41955227049801, + -1.43678449696219, -1.45185842365198, -1.46475158139968, + -1.47544644118063, -1.48393045382214, -1.49019607843137, + -0.0705872967537555, -0.14108107126847, -0.211388013163053, + -0.281415235292391, -0.351070484166606, -0.420262348934881, + -0.488900468460442, -0.55689573601759, -0.624160501147098, + -0.690608768212694, -0.756156391208832, -0.820721264378462, + -0.884223508208977, -0.946585650385001, -1.0077328012881, + -1.06759282364586, -1.10251872448699, -1.13602212632736, + -1.16804010264156, -1.1985130918708, -1.22738503234892, + -1.25460348930017, -1.28011977362078, -1.30388905217547, + -1.32587044935892, -1.34602713969215, -1.3643264312441, + -1.38073983968934, -1.39524315283425, -1.40781648546539, + -1.41844432439598, -1.42711556360816, -1.43382352941176, + -0.0682112104076085, -0.136340698934021, -0.204306928824387, + -0.272028733157175, -0.339425498713358, -0.406417348591282, + -0.472925323153537, -0.538871558895937, -0.604179464833393, + -0.668773896003138, -0.732581323692225, -0.795530002003724, + -0.857550130384246, -0.918574011744646, -0.978536205815711, + -1.03737367739141, -1.06916864286296, -1.09972059602499, + -1.12897455023384, -1.15687845923097, -1.18338333504445, + -1.20844335896251, -1.23201598532761, -1.25406203791609, + -1.27454579868488, -1.29343508868437, -1.31070134095408, -1.326319665236, + -1.34026890435905, -1.35253168216689, -1.36309444288045, + -1.37194748180617, -1.37908496732026, -0.0659060520120929, + -0.131741830251347, -0.197437220137621, -0.262922425115547, + -0.328128124766177, -0.392985631840028, -0.457427047855794, + -0.521385416912244, -0.584794877364874, -0.647590811023717, + -0.709709989534324, -0.771090717610323, -0.831672972793088, + -0.891398541421913, -0.950211150506677, -1.00805659520426, + -1.03681408606353, -1.06450269349285, -1.09107513371889, + -1.11648665144606, -1.1406951212416, -1.16366114296328, + -1.18534813101334, -1.2057223972167, -1.22475322713545, + -1.24241294964697, -1.25867699962793, -1.27352397360215, + -1.28693567822641, -1.29889717150416, -1.30939679663404, + -1.31842620841619, -1.32598039215686, -0.0636718215672085, + -0.127284465220448, -0.190778887102756, -0.254096311167508, + -0.317178362325064, -0.379967198681121, -0.442405642567212, + -0.504437310066511, -0.56600673874154, -0.627059513274433, + -0.687542388735127, -0.747403411198256, -0.806592035435505, + -0.865059239416804, -0.922757635360998, -0.97964157708441, + -1.0054550540887, -1.03036841873093, -1.05434185309671, + -1.07733766851607, -1.09932039094038, -1.12025684130249, + -1.14011621067797, -1.15887013007728, -1.17649273471061, + -1.19296072257996, -1.20825340726567, -1.22235276478781, + -1.2352434744363, -1.24691295347721, -1.25735138565675, -1.2665517434382, + -1.27450980392157, -0.0615085190729553, -0.122968603841323, + -0.184331929719791, -0.245550391313058, -0.306576211390017, + -0.36736204911456, -0.427861107287792, -0.488027238358737, + -0.547815048963392, -0.607180002755285, -0.666078521294634, + -0.724468082767525, -0.782307318311495, -0.839556105729316, + -0.896175660378673, -0.952128623031855, -0.975091546938469, + -0.997317771739223, -1.01877470836729, -1.039431510441, + -1.05925914414079, -1.07823045398013, -1.0963202243215, + -1.11350523649785, -1.12976432141037, -1.14507840748332, + -1.15943056386729, -1.17280603879298, -1.18519229298874, + -1.19657902808603, -1.20695820994858, -1.21632408687221, + -1.22467320261438, -0.0594161445293334, -0.118794246113972, + -0.178096347988727, -0.237284665552196, -0.296321671961038, + -0.355170183140346, -0.413793442017532, -0.472155201788924, + -0.530219808030428, -0.587952279466273, -0.645318387212847, + -0.702284732318129, -0.75881882142106, -0.814889140359451, + -0.870465225559704, -0.925517733046597, -0.945723564612833, + -0.965350752517739, -0.984373699530647, -1.00276817722086, + -1.02051138084282, -1.03758198099622, -1.05396017194393, + -1.0696277164784, -1.08456798723472, -1.09876600435707, + -1.11220846943279, -1.12488379561764, -1.13678213388372, + -1.14789539533064, -1.15821726950953, -1.16774323871822, + -1.17647058823529, -0.0573946979363427, -0.114761392038396, + -0.172072141909563, -0.229299133884922, -0.286414744038126, + -0.343391600758478, -0.400202646756434, -0.45682120035707, + -0.513221015942649, -0.569376343407396, -0.625261986489763, + -0.680853359850069, -0.736126544764198, -0.791058343307209, + -0.84562633090409, -0.899808907128636, -0.917351107111795, + -0.934467361066474, -0.951138826586767, -0.967347668855629, + -0.983077101046474, -0.99831142235074, -1.01303605354527, + -1.02723757001892, -1.04090373218368, -1.0540235132012, + -1.06658712396217, -1.07858603526181, -1.09001299712124, + -1.10086205521101, -1.1111285643396, -1.12080919897623, + -1.12990196078431, -0.0554441792939833, -0.110870041614595, + -0.1662593114823, -0.221593796311237, -0.276855427621281, + -0.332026301968956, -0.387088721504498, -0.442025234063176, + -0.496818672700056, -0.551452194578656, -0.605909319125385, + -0.660173965363344, -0.714230488340911, -0.768063714572589, + -0.82165897641183, -0.875002145277972, -0.889974174435355, + -0.90466759738543, -0.919070089535655, -0.933169985345321, + -0.946956304751757, -0.9604187780437, -0.973547869125499, + -0.986334797119435, -0.998771556257233, -1.0108509340157, + -1.02256652745543, -1.03391275772548, -1.04488488270131, + -1.05547900772717, -1.06569209443879, -1.07552196764625, + -1.08496732026144, -0.0535645886022552, -0.107120194842569, + -0.160657856706937, -0.214168652831141, -0.267643722710503, + -0.32107428677178, -0.374451666261723, -0.427767302907242, + -0.481012778302648, -0.534179832980052, -0.587260385119711, + -0.640246548857955, -0.693130652151198, -0.745905254155592, + -0.798563162082926, -0.851097447494605, -0.863592766583512, + -0.875951461474605, -0.888167488377311, -0.900235126689934, + -0.912148991958666, -0.923904048075098, -0.935495618684633, + -0.946919397779927, -0.958171459455384, -0.969248266800595, + -0.980146679912575, -0.990863963008656, -1.00139779062391, + -1.01174625287909, -1.0219078598071, -1.03188154472826, + -1.04166666666667, -0.0517559258611583, -0.103511851722317, + -0.155267777583475, -0.207023703444633, -0.258779629305792, + -0.31053555516695, -0.362291481028109, -0.414047406889267, + -0.465803332750425, -0.517559258611584, -0.569315184472742, + -0.621071110333901, -0.672827036195059, -0.724582962056217, + -0.776338887917376, -0.828094813778534, -0.838206883556267, + -0.848318953334001, -0.858431023111734, -0.868543092889467, + -0.878655162667201, -0.888767232444934, -0.898879302222667, + -0.9089913720004, -0.919103441778134, -0.929215511555867, + -0.9393275813336, -0.949439651111334, -0.959551720889067, + -0.9696637906668, -0.979775860444533, -0.989887930222267, -1, + -0.785818953334001, -0.795299018750626, -0.804779084167251, + -0.814259149583876, -0.823739215000501, -0.833219280417125, + -0.84269934583375, -0.852179411250375, -0.861659476667, + -0.871139542083626, -0.88061960750025, -0.890099672916875, + -0.8995797383335, -0.909059803750125, -0.91853986916675, + -0.928019934583375, -0.9375, -0.733431023111734, -0.742279084167251, + -0.751127145222767, -0.759975206278284, -0.7688232673338, + -0.777671328389317, -0.786519389444834, -0.79536745050035, + -0.804215511555867, -0.813063572611384, -0.8219116336669, + -0.830759694722417, -0.839607755777934, -0.84845581683345, + -0.857303877888967, -0.866151938944483, -0.875, -0.681043092889467, + -0.689259149583875, -0.697475206278284, -0.705691262972692, + -0.713907319667101, -0.722123376361509, -0.730339433055917, + -0.738555489750325, -0.746771546444734, -0.754987603139142, + -0.76320365983355, -0.771419716527959, -0.779635773222367, + -0.787851829916775, -0.796067886611183, -0.804283943305592, -0.8125, + -0.628655162667201, -0.636239215000501, -0.6438232673338, + -0.651407319667101, -0.658991372000401, -0.6665754243337, + -0.674159476667, -0.6817435290003, -0.6893275813336, -0.6969116336669, + -0.7044956860002, -0.7120797383335, -0.7196637906668, -0.7272478430001, + -0.7348318953334, -0.7424159476667, -0.75, -0.576267232444934, + -0.583219280417126, -0.590171328389317, -0.597123376361509, + -0.6040754243337, -0.611027472305892, -0.617979520278084, + -0.624931568250275, -0.631883616222467, -0.638835664194658, + -0.64578771216685, -0.652739760139042, -0.659691808111233, + -0.666643856083425, -0.673595904055617, -0.680547952027808, -0.6875, + -0.523879302222667, -0.530199345833751, -0.536519389444834, + -0.542839433055917, -0.549159476667, -0.555479520278084, + -0.561799563889167, -0.56811960750025, -0.574439651111334, + -0.580759694722417, -0.5870797383335, -0.593399781944583, + -0.599719825555667, -0.60603986916675, -0.612359912777833, + -0.618679956388917, -0.625, -0.4714913720004, -0.477179411250375, + -0.48286745050035, -0.488555489750325, -0.4942435290003, + -0.499931568250275, -0.50561960750025, -0.511307646750225, + -0.5169956860002, -0.522683725250175, -0.52837176450015, + -0.534059803750125, -0.5397478430001, -0.545435882250075, + -0.55112392150005, -0.556811960750025, -0.5625, -0.419103441778134, + -0.424159476667, -0.429215511555867, -0.434271546444733, + -0.4393275813336, -0.444383616222467, -0.449439651111333, + -0.4544956860002, -0.459551720889067, -0.464607755777934, + -0.4696637906668, -0.474719825555667, -0.479775860444533, + -0.4848318953334, -0.489887930222267, -0.494943965111133, -0.5, + -0.366715511555867, -0.371139542083625, -0.375563572611384, + -0.379987603139142, -0.3844116336669, -0.388835664194658, + -0.393259694722417, -0.397683725250175, -0.402107755777933, + -0.406531786305692, -0.41095581683345, -0.415379847361208, + -0.419803877888967, -0.424227908416725, -0.428651938944483, + -0.433075969472242, -0.4375, -0.3143275813336, -0.31811960750025, + -0.3219116336669, -0.32570365983355, -0.3294956860002, -0.33328771216685, + -0.3370797383335, -0.34087176450015, -0.3446637906668, -0.34845581683345, + -0.3522478430001, -0.35603986916675, -0.3598318953334, -0.36362392150005, + -0.3674159476667, -0.37120797383335, -0.375, -0.261939651111334, + -0.265099672916875, -0.268259694722417, -0.271419716527958, + -0.2745797383335, -0.277739760139042, -0.280899781944583, + -0.284059803750125, -0.287219825555667, -0.290379847361208, + -0.29353986916675, -0.296699890972292, -0.299859912777833, + -0.303019934583375, -0.306179956388917, -0.309339978194458, -0.3125, + -0.209551720889067, -0.2120797383335, -0.214607755777933, + -0.217135773222367, -0.2196637906668, -0.222191808111233, + -0.224719825555667, -0.2272478430001, -0.229775860444533, + -0.232303877888967, -0.2348318953334, -0.237359912777833, + -0.239887930222267, -0.2424159476667, -0.244943965111133, + -0.247471982555567, -0.25, -0.1571637906668, -0.159059803750125, + -0.16095581683345, -0.162851829916775, -0.1647478430001, + -0.166643856083425, -0.16853986916675, -0.170435882250075, + -0.1723318953334, -0.174227908416725, -0.17612392150005, + -0.178019934583375, -0.1799159476667, -0.181811960750025, + -0.18370797383335, -0.185603986916675, -0.1875, -0.104775860444533, + -0.10603986916675, -0.107303877888967, -0.108567886611183, + -0.1098318953334, -0.111095904055617, -0.112359912777833, + -0.11362392150005, -0.114887930222267, -0.116151938944483, + -0.1174159476667, -0.118679956388917, -0.119943965111133, + -0.12120797383335, -0.122471982555567, -0.123735991277783, -0.125, + -0.0523879302222666, -0.0530199345833749, -0.0536519389444833, + -0.0542839433055916, -0.0549159476667, -0.0555479520278083, + -0.0561799563889166, -0.056811960750025, -0.0574439651111333, + -0.0580759694722417, -0.05870797383335, -0.0593399781944583, + -0.0599719825555666, -0.060603986916675, -0.0612359912777833, + -0.0618679956388917, -0.0625, -1.99773467836602, -1.92774532085603, + -1.99094384514617, -1.92072384620856, -1.97964288376187, + -1.90950544674137, -1.96385739452541, -1.89411394496733, + -1.94362313664708, -1.87458261681821, -1.91898594722899, + -1.85095411626404, -1.89000163742934, -1.82328037868812, + -1.85673586603215, -1.79162250323673, -1.81926399070904, + -1.75605061440983, -1.77767089730985, -1.71664370320657, + -1.73205080756888, -1.67348944818527, -1.68250706566236, + -1.62668401684325, -1.62915190410067, -1.57633184776656, + -1.57210618948558, -1.52254541404295, -1.51149914870852, + -1.46544496847418, -1.44746807621014, -1.40515827116473, + -1.38015802296422, -1.34182030010411, -1.30972146789057, + -1.27268101094799, -1.23631797244121, -1.20078081894225, + -1.1601138191424, -1.1262744592155, -1.0812816349112, -1.04932257070444, + -1, -0.970091332255052, -0.916453043454821, -0.888752086174041, + -0.830830026003773, -0.805480950083401, -0.743324911320656, + -0.720458417957365, -0.654135926634844, -0.633868951245487, + -0.563465113682859, -0.545900561008144, -0.471517871018856, + -0.456744382011004, -0.378502488720821, -0.366594239743308, + -0.284629676546571, -0.2756462113408, -0.190112086608367, + -0.184098181407947, -0.0951638316474856, -0.0921493937456573, + -1.85940277175805, -1.85215608254006, -1.84101830235666, + -1.8260115177518, -1.80716657980884, -1.78452303426296, + -1.75812903191729, -1.72804121956591, -1.6943246116706, + -1.65705244308219, -1.6163060031401, -1.57217445152577, + -1.52475461628737, -1.47415077449309, -1.42047441601005, + -1.36384399094392, -1.30438464131129, -1.23651209416876, + -1.16607983376092, -1.09323131952217, -1.01811548447902, + -0.940886397868809, -0.861702916123397, -0.780728323008215, + -0.698129959732034, -0.614078845865292, -0.528749291925774, + -0.44231850450922, -0.354966184859384, -0.26687412178693, + -0.178225779859301, -0.0892058837944603, -1.79270703107207, + -1.78524055414069, -1.77418145060772, -1.7595501128788, + -1.74137502561898, -1.71969270122577, -1.69454759711684, + -1.66599201501969, -1.63408598249135, -1.59889711693672, + -1.56050047243337, -1.51897836970992, -1.4744202096631, + -1.42692227083599, -1.37658749131615, -1.32352523554771, + -1.26785104658576, -1.20121471755289, -1.1322150168972, + -1.06098440006242, -0.987660376234933, -0.912385196841269, + -0.835305533302888, -0.756572144778214, -0.676339536644663, + -0.594765610494258, -0.512011306435751, -0.428240238513502, + -0.343618324069048, -0.25831340788496, -0.17249488196243, + -0.0863333017938945, -1.72765809879808, -1.71997726101044, + -1.70899489149456, -1.69472973034835, -1.67720795424861, + -1.65646311715245, -1.63253607428677, -1.60547488959806, + -1.57533472687208, -1.54217772477015, -1.50607285606508, + -1.46709577139569, -1.42532862789375, -1.38085990307167, + -1.33378419439247, -1.2842020049761, -1.23221951592754, + -1.16678888110037, -1.09918636835111, -1.02953370083625, + -0.957957245972183, -0.884587729172435, -0.809559937712516, + -0.733012415393399, -0.655087148695251, -0.575929245132386, + -0.495686604538073, -0.414509584023852, -0.3325506573723, + -0.249964069634891, -0.166905487717334, -0.08353164774396, + -1.6642559749361, -1.6563662031493, -1.64545862501717, -1.63155037016045, + -1.61466536569775, -1.59483428204302, -1.57209446342709, + -1.54648984330104, -1.5180708448128, -1.48689426658247, + -1.45302315403522, -1.41652665658308, -1.37747987097932, + -1.33596367120011, -1.29206452523901, -1.24587429922908, + -1.19749004933661, -1.1332345848112, -1.06699388812265, + -0.998879221843645, -0.929006093690768, -0.857493994862305, + -0.78446612935228, -0.710049134853768, -0.634372795883799, + -0.557569749779674, -0.479775186232743, -0.401126541040269, + -0.321763184769142, -0.241826107036723, -0.161457597124012, + -0.0808009216446567, -1.60250065948611, -1.59440738055729, + -1.58357265117557, -1.57001203231508, -1.5537472599664, + -1.53480619589747, -1.51322276453778, -1.48903687612861, + -1.46229433631349, -1.4330467423737, -1.4013513663438, -1.3672710252721, + -1.33087393891981, -1.29223357522132, -1.25142848385577, + -1.20854211830666, -1.16366264681297, -1.1005518286854, -1.0356375762118, + -0.969020963084617, -0.900806919390688, -0.83110399391088, + -0.760024108222179, -0.687682303159323, -0.614196478210308, + -0.539687124436124, -0.464277051519758, -0.388091109562752, + -0.311255906259571, -0.233899520090455, -0.156151210182465, + -0.0781411234959847, -1.54239215244813, -1.5341007932344, + -1.52333696996973, -1.51011471681226, -1.49445363705454, + -1.4763788587158, -1.45592097761886, -1.43311598808078, + -1.40800520137417, -1.38063515214383, -1.35105749299082, + -1.31932887746275, -1.28551083171522, -1.2496696151353, + -1.21187607024274, -1.17220546220884, -1.13073730835664, + -1.06874061272294, -1.00511743261858, -0.939958924559163, + -0.873359723071944, -0.805417726318159, -0.736233874322215, + -0.665911920310063, -0.594558195674775, -0.522281369101736, + -0.44919220039912, -0.375403289591303, -0.301028821843589, + -0.226184308796087, -0.150986326892692, -0.075552253297944, + -1.48393045382214, -1.47544644118063, -1.46475158139968, + -1.45185842365198, -1.43678449696219, -1.41955227049801, + -1.40018910267031, -1.37872717915755, -1.35520343999483, + -1.32965949589285, -1.30214153397628, -1.27270021315503, + -1.24139054936555, -1.20827179094205, -1.17340728439994, + -1.13686433093562, -1.0987140339676, -1.03780093692384, + -0.975433457342979, -0.911693106267284, -0.846664504734536, + -0.780435192084144, -0.713095427652387, -0.644737986305988, + -0.575457948277203, -0.505352483776508, -0.434520632870827, + -0.363063081125921, -0.291081931521196, -0.21868047315362, + -0.145962947254694, -0.0730343110505345, -1.42711556360816, + -1.41844432439598, -1.40781648546539, -1.39524315283425, + -1.38073983968934, -1.3643264312441, -1.34602713969215, + -1.32587044935892, -1.30388905217547, -1.28011977362078, + -1.25460348930017, -1.22738503234893, -1.1985130918708, + -1.16804010264156, -1.13602212632736, -1.10251872448699, + -1.06759282364586, -1.0077328012881, -0.946585650385001, + -0.884223508208978, -0.820721264378463, -0.756156391208832, + -0.690608768212694, -0.624160501147098, -0.55689573601759, + -0.488900468460442, -0.420262348934882, -0.351070484166606, + -0.281415235292391, -0.211388013163053, -0.141081071268471, + -0.0705872967537562, -1.37194748180617, -1.36309444288045, + -1.35253168216689, -1.34026890435905, -1.326319665236, -1.31070134095408, + -1.29343508868437, -1.27454579868488, -1.25406203791609, + -1.23201598532761, -1.20844335896251, -1.18338333504445, + -1.15687845923097, -1.12897455023384, -1.09972059602499, + -1.06916864286296, -1.03737367739141, -0.978536205815711, + -0.918574011744646, -0.857550130384246, -0.795530002003725, + -0.732581323692226, -0.668773896003138, -0.604179464833394, + -0.538871558895938, -0.472925323153538, -0.406417348591282, + -0.339425498713359, -0.272028733157175, -0.204306928824387, + -0.136340698934022, -0.0682112104076092, -1.31842620841619, + -1.30939679663404, -1.29889717150416, -1.28693567822641, + -1.27352397360215, -1.25867699962793, -1.24241294964697, + -1.22475322713545, -1.2057223972167, -1.18534813101334, + -1.16366114296328, -1.1406951212416, -1.11648665144606, + -1.09107513371889, -1.06450269349285, -1.03681408606354, + -1.00805659520426, -0.950211150506677, -0.891398541421914, + -0.831672972793088, -0.771090717610323, -0.709709989534324, + -0.647590811023718, -0.584794877364875, -0.521385416912244, + -0.457427047855795, -0.392985631840029, -0.328128124766178, + -0.262922425115548, -0.197437220137621, -0.131741830251348, + -0.0659060520120935, -1.2665517434382, -1.25735138565675, + -1.24691295347721, -1.2352434744363, -1.22235276478781, + -1.20825340726567, -1.19296072257996, -1.17649273471061, + -1.15887013007728, -1.14011621067797, -1.12025684130249, + -1.09932039094038, -1.07733766851607, -1.05434185309671, + -1.03036841873093, -1.0054550540887, -0.97964157708441, + -0.922757635360998, -0.865059239416804, -0.806592035435505, + -0.747403411198256, -0.687542388735127, -0.627059513274433, + -0.566006738741541, -0.504437310066511, -0.442405642567212, + -0.379967198681121, -0.317178362325064, -0.254096311167509, + -0.190778887102756, -0.127284465220448, -0.063671821567209, + -1.21632408687221, -1.20695820994858, -1.19657902808603, + -1.18519229298874, -1.17280603879298, -1.15943056386729, + -1.14507840748332, -1.12976432141037, -1.11350523649785, + -1.0963202243215, -1.07823045398013, -1.05925914414079, -1.039431510441, + -1.01877470836729, -0.997317771739223, -0.97509154693847, + -0.952128623031855, -0.896175660378674, -0.839556105729317, + -0.782307318311495, -0.724468082767525, -0.666078521294635, + -0.607180002755285, -0.547815048963392, -0.488027238358738, + -0.427861107287792, -0.367362049114561, -0.306576211390018, + -0.245550391313058, -0.184331929719792, -0.122968603841323, + -0.0615085190729558, -1.16774323871822, -1.15821726950953, + -1.14789539533064, -1.13678213388372, -1.12488379561764, + -1.11220846943279, -1.09876600435707, -1.08456798723472, + -1.0696277164784, -1.05396017194393, -1.03758198099622, + -1.02051138084282, -1.00276817722086, -0.984373699530647, + -0.965350752517739, -0.945723564612834, -0.925517733046597, + -0.870465225559705, -0.814889140359452, -0.75881882142106, + -0.702284732318129, -0.645318387212847, -0.587952279466273, + -0.530219808030428, -0.472155201788924, -0.413793442017533, + -0.355170183140346, -0.296321671961039, -0.237284665552196, + -0.178096347988727, -0.118794246113973, -0.0594161445293338, + -1.12080919897623, -1.1111285643396, -1.10086205521101, + -1.09001299712124, -1.07858603526181, -1.06658712396217, + -1.0540235132012, -1.04090373218368, -1.02723757001892, + -1.01303605354527, -0.998311422350741, -0.983077101046474, + -0.967347668855629, -0.951138826586768, -0.934467361066475, + -0.917351107111795, -0.899808907128636, -0.84562633090409, + -0.791058343307209, -0.736126544764199, -0.680853359850069, + -0.625261986489764, -0.569376343407397, -0.51322101594265, + -0.45682120035707, -0.400202646756435, -0.343391600758478, + -0.286414744038126, -0.229299133884923, -0.172072141909564, + -0.114761392038397, -0.0573946979363431, -1.07552196764625, + -1.06569209443879, -1.05547900772717, -1.04488488270131, + -1.03391275772548, -1.02256652745543, -1.0108509340157, + -0.998771556257233, -0.986334797119435, -0.9735478691255, + -0.9604187780437, -0.946956304751757, -0.933169985345321, + -0.919070089535655, -0.90466759738543, -0.889974174435355, + -0.875002145277972, -0.82165897641183, -0.768063714572589, + -0.714230488340911, -0.660173965363344, -0.605909319125385, + -0.551452194578656, -0.496818672700056, -0.442025234063176, + -0.387088721504498, -0.332026301968956, -0.276855427621281, + -0.221593796311238, -0.1662593114823, -0.110870041614596, + -0.0554441792939836, -1.03188154472826, -1.0219078598071, + -1.01174625287909, -1.00139779062391, -0.990863963008657, + -0.980146679912575, -0.969248266800595, -0.958171459455384, + -0.946919397779927, -0.935495618684633, -0.923904048075098, + -0.912148991958666, -0.900235126689934, -0.888167488377311, + -0.875951461474606, -0.863592766583512, -0.851097447494605, + -0.798563162082926, -0.745905254155592, -0.693130652151198, + -0.640246548857955, -0.587260385119712, -0.534179832980052, + -0.481012778302648, -0.427767302907242, -0.374451666261723, + -0.32107428677178, -0.267643722710503, -0.214168652831141, + -0.160657856706938, -0.107120194842569, -0.0535645886022554, + -0.989887930222267, -0.979775860444533, -0.9696637906668, + -0.959551720889067, -0.949439651111334, -0.9393275813336, + -0.929215511555867, -0.919103441778134, -0.908991372000401, + -0.898879302222667, -0.888767232444934, -0.878655162667201, + -0.868543092889468, -0.858431023111734, -0.848318953334001, + -0.838206883556268, -0.828094813778534, -0.776338887917376, + -0.724582962056218, -0.672827036195059, -0.621071110333901, + -0.569315184472742, -0.517559258611584, -0.465803332750426, + -0.414047406889267, -0.362291481028109, -0.31053555516695, + -0.258779629305792, -0.207023703444634, -0.155267777583475, + -0.103511851722317, -0.0517559258611584, -0.785818953334001, + -0.733431023111734, -0.681043092889468, -0.628655162667201, + -0.576267232444934, -0.523879302222667, -0.471491372000401, + -0.419103441778134, -0.366715511555867, -0.314327581333601, + -0.261939651111334, -0.209551720889067, -0.1571637906668, + -0.104775860444533, -0.0523879302222667, -0.795299018750626, + -0.742279084167251, -0.689259149583876, -0.636239215000501, + -0.583219280417126, -0.530199345833751, -0.477179411250376, + -0.424159476667, -0.371139542083626, -0.31811960750025, + -0.265099672916875, -0.2120797383335, -0.159059803750125, + -0.10603986916675, -0.0530199345833751, -0.804779084167251, + -0.751127145222767, -0.697475206278284, -0.643823267333801, + -0.590171328389317, -0.536519389444834, -0.482867450500351, + -0.429215511555867, -0.375563572611384, -0.3219116336669, + -0.268259694722417, -0.214607755777934, -0.16095581683345, + -0.107303877888967, -0.0536519389444834, -0.814259149583876, + -0.759975206278284, -0.705691262972692, -0.651407319667101, + -0.597123376361509, -0.542839433055917, -0.488555489750325, + -0.434271546444734, -0.379987603139142, -0.32570365983355, + -0.271419716527959, -0.217135773222367, -0.162851829916775, + -0.108567886611183, -0.0542839433055917, -0.823739215000501, + -0.768823267333801, -0.713907319667101, -0.658991372000401, + -0.604075424333701, -0.549159476667, -0.4942435290003, -0.4393275813336, + -0.3844116336669, -0.3294956860002, -0.2745797383335, -0.2196637906668, + -0.1647478430001, -0.1098318953334, -0.0549159476667, -0.833219280417126, + -0.777671328389317, -0.722123376361509, -0.666575424333701, + -0.611027472305892, -0.555479520278084, -0.499931568250275, + -0.444383616222467, -0.388835664194659, -0.33328771216685, + -0.277739760139042, -0.222191808111233, -0.166643856083425, + -0.111095904055617, -0.0555479520278084, -0.842699345833751, + -0.786519389444834, -0.730339433055917, -0.674159476667, + -0.617979520278084, -0.561799563889167, -0.50561960750025, + -0.449439651111334, -0.393259694722417, -0.3370797383335, + -0.280899781944584, -0.224719825555667, -0.16853986916675, + -0.112359912777833, -0.0561799563889167, -0.852179411250376, + -0.79536745050035, -0.738555489750325, -0.6817435290003, + -0.624931568250275, -0.56811960750025, -0.511307646750225, + -0.4544956860002, -0.397683725250175, -0.34087176450015, + -0.284059803750125, -0.2272478430001, -0.170435882250075, + -0.11362392150005, -0.056811960750025, -0.861659476667, + -0.804215511555867, -0.746771546444734, -0.6893275813336, + -0.631883616222467, -0.574439651111334, -0.5169956860002, + -0.459551720889067, -0.402107755777934, -0.3446637906668, + -0.287219825555667, -0.229775860444533, -0.1723318953334, + -0.114887930222267, -0.0574439651111334, -0.871139542083625, + -0.813063572611384, -0.754987603139142, -0.6969116336669, + -0.638835664194659, -0.580759694722417, -0.522683725250175, + -0.464607755777934, -0.406531786305692, -0.34845581683345, + -0.290379847361208, -0.232303877888967, -0.174227908416725, + -0.116151938944483, -0.0580759694722417, -0.88061960750025, + -0.8219116336669, -0.76320365983355, -0.7044956860002, -0.64578771216685, + -0.5870797383335, -0.52837176450015, -0.4696637906668, -0.41095581683345, + -0.3522478430001, -0.29353986916675, -0.2348318953334, -0.17612392150005, + -0.1174159476667, -0.05870797383335, -0.890099672916875, + -0.830759694722417, -0.771419716527958, -0.7120797383335, + -0.652739760139042, -0.593399781944584, -0.534059803750125, + -0.474719825555667, -0.415379847361209, -0.35603986916675, + -0.296699890972292, -0.237359912777833, -0.178019934583375, + -0.118679956388917, -0.0593399781944584, -0.8995797383335, + -0.839607755777933, -0.779635773222367, -0.7196637906668, + -0.659691808111234, -0.599719825555667, -0.5397478430001, + -0.479775860444533, -0.419803877888967, -0.3598318953334, + -0.299859912777833, -0.239887930222267, -0.1799159476667, + -0.119943965111133, -0.0599719825555667, -0.909059803750125, + -0.84845581683345, -0.787851829916775, -0.7272478430001, + -0.666643856083425, -0.60603986916675, -0.545435882250075, + -0.4848318953334, -0.424227908416725, -0.36362392150005, + -0.303019934583375, -0.2424159476667, -0.181811960750025, + -0.12120797383335, -0.060603986916675, -0.91853986916675, + -0.857303877888967, -0.796067886611183, -0.7348318953334, + -0.673595904055617, -0.612359912777833, -0.55112392150005, + -0.489887930222267, -0.428651938944483, -0.3674159476667, + -0.306179956388917, -0.244943965111133, -0.18370797383335, + -0.122471982555567, -0.0612359912777833, -0.928019934583375, + -0.866151938944483, -0.804283943305592, -0.7424159476667, + -0.680547952027808, -0.618679956388917, -0.556811960750025, + -0.494943965111133, -0.433075969472242, -0.37120797383335, + -0.309339978194458, -0.247471982555567, -0.185603986916675, + -0.123735991277783, -0.0618679956388917, -0.0999220232298596, 0, + -0.104680214812234, 0, -0.109438406394608, 0, -0.114196597976982, 0, + -0.118954789559356, 0, -0.199617690938785, -0.209123295269203, + -0.218628899599621, -0.228134503930039, -0.237640108260457, + -0.298861160373899, -0.313092644201227, -0.327324128028556, + -0.341555611855884, -0.355787095683213, -0.397427613156862, + -0.416352737592903, -0.435277862028944, -0.454202986464985, + -0.473128110901025, -0.495093764569798, -0.518669658120741, + -0.542245551671683, -0.565821445222626, -0.589397338773568, + -0.591638369367002, -0.619811625051145, -0.647984880735288, + -0.676158136419431, -0.704331392103574, -0.686842722966586, + -0.719549519298328, -0.75225631563007, -0.784963111961812, + -0.817669908293554, -0.780491156886689, -0.817657402452721, + -0.854823648018754, -0.891989893584786, -0.929156139150819, + -0.872371527303961, -0.91391302860415, -0.955454529904339, + -0.996996031204528, -1.03853753250472, -0.962275695627562, + -1.0080983478003, -1.05392099997304, -1.09974365214579, + -1.14556630431853, -1.05, -1.1, -1.15, -1.2, -1.25, -1.13534571665676, + -1.18940979840232, -1.24347388014787, -1.29753796189343, + -1.35160204363899, -1.21811951009952, -1.27612520105664, + -1.33413089201376, -1.39213658297088, -1.450142273928, -1.29813387106327, + -1.35994976968533, -1.42176566830739, -1.48358156692945, + -1.54539746555151, -1.3752075412851, -1.44069361467963, + -1.50617968807416, -1.57166576146868, -1.63715183486321, + -1.44916592411244, -1.51817382526065, -1.58718172640886, + -1.65618962755707, -1.72519752870528, -1.51984148002065, + -1.59221488383115, -1.66458828764166, -1.73696169145217, + -1.80933509526268, -1.58707410614394, -1.66264906357937, + -1.73822402101479, -1.81379897845022, -1.88937393588565, + -1.65071149895985, -1.72931680843413, -1.80792211790841, + -1.88652742738269, -1.96513273685697, -1.71060949930571, + -1.79206709451074, -1.87352468971577, -1.95498228492081, + -2.03643988012584, -1.76663241894548, -1.8507577722286, + -1.93488312551172, -2.01900847879483, -2.10313383207795, + -1.81865334794732, -1.90525588832577, -1.99185842870421, + -2.07846096908265, -2.1650635094611, -1.86655444217534, + -1.95543798704083, -2.04432153190632, -2.13320507677182, + -2.22208862163731, -1.91022719024449, -2.00119038977994, + -2.09215358931539, -2.18311678885084, -2.2740799883863, + -1.94957265933375, -2.04240945263536, -2.13524624593697, + -2.22808303923857, -2.32091983254018, -1.9845017193008, + -2.07900180117227, -2.17350188304374, -2.2680019649152, + -2.36250204678667, -2.01493524459044, -2.11088454195189, + -2.20683383931334, -2.30278313667479, -2.39873243403624, + -2.04080429347944, -2.13798545031179, -2.23516660714415, + -2.3323477639765, -2.42952892080885, -2.06205026425168, + -2.16024313397795, -2.25843600370423, -2.3566288734305, + -2.45482174315677, -2.07862502794996, -2.17760717213805, + -2.27658931632615, -2.37557146051424, -2.47455360470233, + -2.09049103740348, -2.19003822966079, -2.28958542191809, + -2.3891326141754, -2.48867980643271, -2.09762141228432, + -2.19750814620262, -2.29739488012092, -2.39728161403922, + -2.49716834795752, -2.1, -2.2, -2.3, -2.4, -2.5, -2.09762141228432, + -2.19750814620262, -2.29739488012092, -2.39728161403922, + -2.49716834795752, -2.09049103740348, -2.19003822966079, + -2.28958542191809, -2.3891326141754, -2.48867980643271, + -2.07862502794996, -2.17760717213805, -2.27658931632615, + -2.37557146051424, -2.47455360470233, -2.06205026425168, + -2.16024313397795, -2.25843600370423, -2.3566288734305, + -2.45482174315677, -2.04080429347944, -2.13798545031179, + -2.23516660714415, -2.3323477639765, -2.42952892080885, + -2.01493524459044, -2.11088454195189, -2.20683383931334, + -2.30278313667479, -2.39873243403624, -1.9845017193008, + -2.07900180117227, -2.17350188304374, -2.2680019649152, + -2.36250204678667, -1.94957265933375, -2.04240945263536, + -2.13524624593697, -2.22808303923857, -2.32091983254018, + -1.91022719024449, -2.00119038977994, -2.09215358931539, + -2.18311678885084, -2.2740799883863, -1.86655444217534, + -1.95543798704083, -2.04432153190632, -2.13320507677182, + -2.22208862163731, -1.81865334794732, -1.90525588832576, + -1.99185842870421, -2.07846096908265, -2.1650635094611, + -1.76663241894548, -1.8507577722286, -1.93488312551172, + -2.01900847879483, -2.10313383207795, -1.7106094993057, + -1.79206709451074, -1.87352468971577, -1.95498228492081, + -2.03643988012584, -1.65071149895985, -1.72931680843413, + -1.80792211790841, -1.88652742738269, -1.96513273685697, + -1.58707410614394, -1.66264906357937, -1.73822402101479, + -1.81379897845022, -1.88937393588565, -1.51984148002065, + -1.59221488383115, -1.66458828764166, -1.73696169145217, + -1.80933509526268, -1.44916592411244, -1.51817382526065, + -1.58718172640886, -1.65618962755707, -1.72519752870528, + -1.3752075412851, -1.44069361467963, -1.50617968807416, + -1.57166576146868, -1.63715183486321, -1.29813387106327, + -1.35994976968533, -1.42176566830739, -1.48358156692945, + -1.54539746555151, -1.21811951009952, -1.27612520105664, + -1.33413089201376, -1.39213658297088, -1.450142273928, -1.13534571665675, + -1.18940979840231, -1.24347388014787, -1.29753796189343, + -1.35160204363899, -1.05, -1.1, -1.15, -1.2, -1.25, -0.962275695627562, + -1.0080983478003, -1.05392099997304, -1.09974365214579, + -1.14556630431853, -0.872371527303961, -0.913913028604149, + -0.955454529904338, -0.996996031204527, -1.03853753250472, + -0.780491156886687, -0.81765740245272, -0.854823648018753, + -0.891989893584786, -0.929156139150819, -0.686842722966585, + -0.719549519298327, -0.752256315630069, -0.784963111961811, + -0.817669908293553, -0.591638369367002, -0.619811625051145, + -0.647984880735288, -0.676158136419431, -0.704331392103574, + -0.495093764569797, -0.51866965812074, -0.542245551671683, + -0.565821445222626, -0.589397338773568, -0.397427613156861, + -0.416352737592902, -0.435277862028943, -0.454202986464984, + -0.473128110901025, -0.298861160373899, -0.313092644201227, + -0.327324128028556, -0.341555611855884, -0.355787095683213, + -0.199617690938783, -0.209123295269202, -0.21862889959962, + -0.228134503930038, -0.237640108260456, -0.0999220232298583, + -0.104680214812233, -0.109438406394607, -0.114196597976981, + -0.118954789559356, 1.34711147906209e-16, 2.4492935982947e-17, + -8.57252759403147e-17, -1.95943487863577e-16, -3.06161699786838e-16, + 0.0999220232298595, 0.104680214812234, 0.109438406394608, + 0.114196597976982, 0.118954789559356, 0.199617690938784, + 0.209123295269202, 0.21862889959962, 0.228134503930038, + 0.237640108260455, 0.298861160373899, 0.313092644201227, + 0.327324128028556, 0.341555611855884, 0.355787095683212, + 0.397427613156862, 0.416352737592903, 0.435277862028944, + 0.454202986464985, 0.473128110901026, 0.495093764569797, + 0.51866965812074, 0.542245551671683, 0.565821445222625, + 0.589397338773568, 0.591638369367003, 0.619811625051146, + 0.647984880735289, 0.676158136419432, 0.704331392103575, + 0.686842722966586, 0.719549519298328, 0.752256315630071, + 0.784963111961813, 0.817669908293555, 0.780491156886688, + 0.81765740245272, 0.854823648018753, 0.891989893584786, + 0.929156139150818, 0.872371527303962, 0.91391302860415, + 0.955454529904339, 0.996996031204528, 1.03853753250472, + 0.962275695627562, 1.0080983478003, 1.05392099997304, 1.09974365214579, + 1.14556630431853, 1.05, 1.1, 1.15, 1.2, 1.25, 1.13534571665676, + 1.18940979840232, 1.24347388014787, 1.29753796189344, 1.35160204363899, + 1.21811951009952, 1.27612520105664, 1.33413089201376, 1.39213658297088, + 1.45014227392799, 1.29813387106327, 1.35994976968533, 1.42176566830739, + 1.48358156692945, 1.54539746555151, 1.3752075412851, 1.44069361467963, + 1.50617968807416, 1.57166576146868, 1.63715183486321, 1.44916592411244, + 1.51817382526065, 1.58718172640886, 1.65618962755707, 1.72519752870528, + 1.51984148002065, 1.59221488383115, 1.66458828764166, 1.73696169145217, + 1.80933509526268, 1.58707410614394, 1.66264906357937, 1.73822402101479, + 1.81379897845022, 1.88937393588565, 1.65071149895985, 1.72931680843413, + 1.80792211790841, 1.88652742738269, 1.96513273685697, 1.71060949930571, + 1.79206709451074, 1.87352468971577, 1.95498228492081, 2.03643988012584, + 1.76663241894548, 1.8507577722286, 1.93488312551172, 2.01900847879483, + 2.10313383207795, 1.81865334794732, 1.90525588832577, 1.99185842870421, + 2.07846096908265, 2.1650635094611, 1.86655444217534, 1.95543798704083, + 2.04432153190632, 2.13320507677182, 2.22208862163731, 1.91022719024449, + 2.00119038977994, 2.09215358931539, 2.18311678885084, 2.2740799883863, + 1.94957265933375, 2.04240945263536, 2.13524624593697, 2.22808303923857, + 2.32091983254018, 1.9845017193008, 2.07900180117227, 2.17350188304374, + 2.2680019649152, 2.36250204678667, 2.01493524459044, 2.11088454195189, + 2.20683383931334, 2.30278313667479, 2.39873243403624, 2.04080429347944, + 2.13798545031179, 2.23516660714415, 2.3323477639765, 2.42952892080885, + 2.06205026425168, 2.16024313397795, 2.25843600370423, 2.3566288734305, + 2.45482174315677, 2.07862502794996, 2.17760717213805, 2.27658931632615, + 2.37557146051424, 2.47455360470233, 2.09049103740348, 2.19003822966079, + 2.28958542191809, 2.3891326141754, 2.48867980643271, 2.09762141228432, + 2.19750814620262, 2.29739488012092, 2.39728161403922, 2.49716834795752, + 2.1, 2.2, 2.3, 2.4, 2.5, 2.09762141228432, 2.19750814620262, + 2.29739488012092, 2.39728161403922, 2.49716834795752, 2.09049103740348, + 2.19003822966079, 2.28958542191809, 2.3891326141754, 2.48867980643271, + 2.07862502794996, 2.17760717213805, 2.27658931632615, 2.37557146051424, + 2.47455360470233, 2.06205026425168, 2.16024313397795, 2.25843600370423, + 2.3566288734305, 2.45482174315677, 2.04080429347944, 2.13798545031179, + 2.23516660714415, 2.3323477639765, 2.42952892080885, 2.01493524459044, + 2.11088454195189, 2.20683383931334, 2.30278313667479, 2.39873243403624, + 1.9845017193008, 2.07900180117227, 2.17350188304374, 2.2680019649152, + 2.36250204678667, 1.94957265933375, 2.04240945263536, 2.13524624593697, + 2.22808303923857, 2.32091983254018, 1.91022719024449, 2.00119038977994, + 2.09215358931539, 2.18311678885084, 2.2740799883863, 1.86655444217534, + 1.95543798704083, 2.04432153190632, 2.13320507677182, 2.22208862163731, + 1.81865334794732, 1.90525588832576, 1.99185842870421, 2.07846096908265, + 2.1650635094611, 1.76663241894548, 1.8507577722286, 1.93488312551172, + 2.01900847879484, 2.10313383207795, 1.7106094993057, 1.79206709451074, + 1.87352468971577, 1.95498228492081, 2.03643988012584, 1.65071149895985, + 1.72931680843413, 1.80792211790841, 1.88652742738269, 1.96513273685697, + 1.58707410614394, 1.66264906357937, 1.73822402101479, 1.81379897845022, + 1.88937393588565, 1.51984148002065, 1.59221488383115, 1.66458828764166, + 1.73696169145217, 1.80933509526267, 1.44916592411244, 1.51817382526065, + 1.58718172640886, 1.65618962755707, 1.72519752870528, 1.3752075412851, + 1.44069361467963, 1.50617968807416, 1.57166576146868, 1.63715183486321, + 1.29813387106327, 1.35994976968533, 1.42176566830739, 1.48358156692945, + 1.54539746555151, 1.21811951009952, 1.27612520105664, 1.33413089201376, + 1.39213658297088, 1.450142273928, 1.13534571665675, 1.18940979840231, + 1.24347388014787, 1.29753796189343, 1.35160204363899, 1.05, 1.1, 1.15, + 1.2, 1.25, 0.962275695627562, 1.0080983478003, 1.05392099997304, + 1.09974365214579, 1.14556630431853, 0.872371527303961, 0.91391302860415, + 0.955454529904338, 0.996996031204527, 1.03853753250472, + 0.780491156886688, 0.81765740245272, 0.854823648018753, + 0.891989893584785, 0.929156139150818, 0.686842722966586, + 0.719549519298328, 0.75225631563007, 0.784963111961812, + 0.817669908293555, 0.591638369367002, 0.619811625051145, + 0.647984880735288, 0.676158136419431, 0.704331392103574, + 0.495093764569797, 0.51866965812074, 0.542245551671682, + 0.565821445222625, 0.589397338773567, 0.397427613156861, + 0.416352737592902, 0.435277862028943, 0.454202986464984, + 0.473128110901024, 0.298861160373898, 0.313092644201227, + 0.327324128028555, 0.341555611855883, 0.355787095683211, + 0.199617690938784, 0.209123295269202, 0.21862889959962, + 0.228134503930038, 0.237640108260456, 0.0999220232298586, + 0.104680214812233, 0.109438406394607, 0.114196597976981, + 0.118954789559355, -0.12371298114173, 0, -0.247145712590875, + -0.370018579510541, -0.492053235337067, -0.612973232324511, + -0.732504647787717, -0.850376704625296, -0.966322384716852, + -1.0800790338049, -1.19138895649127, -1.3, -1.40566612538455, + -1.50814796488512, -1.60721336417357, -1.70263790825774, + -1.79420542985349, -1.88170849907318, -1.96494889332107, + -2.04373804633125, -2.11789747533087, -2.18725918536107, + -2.25166604983954, -2.3109721665028, -2.36504318792175, + -2.41375662584179, -2.45700212865814, -2.49468173139769, + -2.52671007764121, -2.55301461288304, -2.57353574889042, + -2.58822699869002, -2.59705508187582, -2.6, -2.59705508187582, + -2.58822699869002, -2.57353574889042, -2.55301461288304, + -2.52671007764121, -2.49468173139769, -2.45700212865814, + -2.41375662584179, -2.36504318792175, -2.3109721665028, + -2.25166604983954, -2.18725918536107, -2.11789747533087, + -2.04373804633125, -1.96494889332107, -1.88170849907318, + -1.79420542985349, -1.70263790825774, -1.60721336417357, + -1.50814796488512, -1.40566612538455, -1.3, -1.19138895649127, + -1.08007903380491, -0.966322384716852, -0.850376704625297, + -0.732504647787717, -0.612973232324511, -0.492053235337066, + -0.370018579510541, -0.247145712590876, -0.12371298114173, + -3.18408167778312e-16, 0.12371298114173, 0.247145712590874, + 0.370018579510541, 0.492053235337067, 0.612973232324511, + 0.732504647787718, 0.850376704625295, 0.966322384716851, 1.0800790338049, + 1.19138895649127, 1.3, 1.40566612538455, 1.50814796488512, + 1.60721336417357, 1.70263790825774, 1.79420542985349, 1.88170849907318, + 1.96494889332107, 2.04373804633125, 2.11789747533087, 2.18725918536107, + 2.25166604983954, 2.3109721665028, 2.36504318792175, 2.41375662584179, + 2.45700212865814, 2.49468173139769, 2.52671007764121, 2.55301461288304, + 2.57353574889042, 2.58822699869002, 2.59705508187582, 2.6, + 2.59705508187582, 2.58822699869002, 2.57353574889043, 2.55301461288304, + 2.52671007764121, 2.49468173139769, 2.45700212865814, 2.41375662584179, + 2.36504318792175, 2.3109721665028, 2.25166604983954, 2.18725918536107, + 2.11789747533087, 2.04373804633125, 1.96494889332107, 1.88170849907318, + 1.79420542985349, 1.70263790825774, 1.60721336417357, 1.50814796488512, + 1.40566612538455, 1.3, 1.19138895649127, 1.0800790338049, + 0.966322384716851, 0.850376704625297, 0.732504647787717, + 0.612973232324513, 0.492053235337068, 0.370018579510542, + 0.247145712590875, 0.123712981141731, -0.137497667533552, + -0.00631313131313131, -0.151282353925374, -0.0126262626262626, + -0.165067040317195, -0.0189393939393939, -0.178851726709017, + -0.0252525252525252, -0.192636413100839, -0.0315656565656565, + -0.206421099492661, -0.0378787878787878, -0.220205785884483, + -0.0441919191919192, -0.233990472276305, -0.0505050505050505, + -0.247775158668127, -0.0568181818181818, -0.261559845059948, + -0.0631313131313131, -0.27534453145177, -0.0694444444444444, + -0.289129217843592, -0.0757575757575757, -0.302913904235414, + -0.082070707070707, -0.316698590627236, -0.0883838383838383, + -0.330483277019058, -0.0946969696969696, -0.344267963410879, + -0.101010101010101, -0.358052649802701, -0.107323232323232, + -0.371837336194523, -0.113636363636364, -0.385622022586345, + -0.119949494949495, -0.399406708978167, -0.126262626262626, + -0.413191395369989, -0.132575757575757, -0.42697608176181, + -0.138888888888889, -0.440760768153632, -0.14520202020202, + -0.454545454545454, -0.151515151515151, -0.268413631131912, + -0.289681549672948, -0.310949468213985, -0.332217386755022, + -0.353485305296059, -0.374753223837096, -0.396021142378132, + -0.417289060919169, -0.438556979460206, -0.459824898001243, + -0.48109281654228, -0.502360735083316, -0.523628653624353, + -0.54489657216539, -0.566164490706427, -0.587432409247464, + -0.6087003277885, -0.629968246329537, -0.651236164870574, + -0.672504083411611, -0.693772001952647, -0.715039920493684, + -0.736307839034721, -0.757575757575758, -0.398793057889521, + -0.427567536268501, -0.456342014647481, -0.485116493026461, + -0.513890971405441, -0.542665449784421, -0.571439928163401, + -0.600214406542381, -0.628988884921361, -0.657763363300341, + -0.686537841679321, -0.715312320058301, -0.744086798437281, + -0.772861276816261, -0.801635755195241, -0.830410233574221, + -0.859184711953201, -0.887959190332181, -0.916733668711161, + -0.945508147090141, -0.974282625469121, -1.0030571038481, + -1.03183158222708, -1.06060606060606, -0.528369199016204, + -0.564685162695341, -0.601001126374479, -0.637317090053616, + -0.673633053732753, -0.709949017411891, -0.746264981091028, + -0.782580944770165, -0.818896908449303, -0.85521287212844, + -0.891528835807577, -0.927844799486715, -0.964160763165852, + -1.00047672684499, -1.03679269052413, -1.07310865420326, + -1.1094246178824, -1.14574058156154, -1.18205654524068, + -1.21837250891981, -1.25468847259895, -1.29100443627809, + -1.32732039995723, -1.36363636363636, -0.656877125422101, + -0.70078101851969, -0.74468491161728, -0.78858880471487, + -0.83249269781246, -0.87639659091005, -0.92030048400764, + -0.964204377105229, -1.00810827020282, -1.05201216330041, + -1.095916056398, -1.13981994949559, -1.18372384259318, -1.22762773569077, + -1.27153162878836, -1.31543552188595, -1.35933941498354, + -1.40324330808113, -1.44714720117872, -1.49105109427631, + -1.5349549873739, -1.57885888047149, -1.62276277356908, + -1.66666666666667, -0.784054327867269, -0.835604007946821, + -0.887153688026374, -0.938703368105926, -0.990253048185478, + -1.04180272826503, -1.09335240834458, -1.14490208842413, + -1.19645176850369, -1.24800144858324, -1.29955112866279, + -1.35110080874234, -1.4026504888219, -1.45420016890145, -1.505749848981, + -1.55729952906055, -1.6088492091401, -1.66039888921966, + -1.71194856929921, -1.76349824937876, -1.81504792945831, + -1.86659760953787, -1.91814728961742, -1.96969696969697, + -0.909641311629545, -0.968905918633794, -1.02817052563804, + -1.08743513264229, -1.14669973964654, -1.20596434665079, + -1.26522895365504, -1.32449356065929, -1.38375816766354, + -1.44302277466779, -1.50228738167204, -1.56155198867628, + -1.62081659568053, -1.68008120268478, -1.73934580968903, + -1.79861041669328, -1.85787502369753, -1.91713963070178, + -1.97640423770603, -2.03566884471028, -2.09493345171453, + -2.15419805871877, -2.21346266572302, -2.27272727272727, + -1.03338218434355, -1.10044198397025, -1.16750178359694, + -1.23456158322364, -1.30162138285034, -1.36868118247703, + -1.43574098210373, -1.50280078173043, -1.56986058135712, + -1.63692038098382, -1.70398018061052, -1.77103998023721, + -1.83809977986391, -1.90515957949061, -1.9722193791173, -2.039279178744, + -2.1063389783707, -2.17339877799739, -2.24045857762409, + -2.30751837725079, -2.37457817687749, -2.44163797650418, + -2.50869777613088, -2.57575757575758, -1.1550252356792, + -1.22997143755349, -1.30491763942778, -1.37986384130207, + -1.45481004317636, -1.52975624505065, -1.60470244692494, + -1.67964864879923, -1.75459485067352, -1.82954105254781, + -1.9044872544221, -1.97943345629639, -2.05437965817068, + -2.12932586004497, -2.20427206191926, -2.27921826379355, + -2.35416446566784, -2.42911066754214, -2.50405686941643, + -2.57900307129072, -2.65394927316501, -2.7288954750393, + -2.80384167691359, -2.87878787878788, -1.27432350754656, + -1.35725805860184, -1.44019260965713, -1.52312716071242, + -1.60606171176771, -1.688996262823, -1.77193081387828, -1.85486536493357, + -1.93779991598886, -2.02073446704415, -2.10366901809944, + -2.18660356915472, -2.26953812021001, -2.3524726712653, + -2.43540722232059, -2.51834177337588, -2.60127632443116, + -2.68421087548645, -2.76714542654174, -2.85007997759703, + -2.93301452865232, -3.01594907970761, -3.09888363076289, + -3.18181818181818, -1.39103535353535, -1.48207070707071, + -1.57310606060606, -1.66414141414141, -1.75517676767677, + -1.84621212121212, -1.93724747474747, -2.02828282828283, + -2.11931818181818, -2.21035353535354, -2.30138888888889, + -2.39242424242424, -2.4834595959596, -2.57449494949495, -2.6655303030303, + -2.75656565656566, -2.84760101010101, -2.93863636363636, + -3.02967171717172, -3.12070707070707, -3.21174242424242, + -3.30277777777778, -3.39381313131313, -3.48484848484848, + -1.50492498632181, -1.60418384725907, -1.70344270819633, + -1.80270156913359, -1.90196043007085, -2.00121929100811, + -2.10047815194537, -2.19973701288263, -2.29899587381989, + -2.39825473475715, -2.49751359569441, -2.59677245663167, + -2.69603131756893, -2.79529017850619, -2.89454903944345, + -2.99380790038071, -3.09306676131797, -3.19232562225523, + -3.29158448319249, -3.39084334412975, -3.49010220506701, + -3.58936106600427, -3.68861992694153, -3.78787878787879, + -1.61576301180278, -1.72337805872045, -1.83099310563811, + -1.93860815255578, -2.04622319947344, -2.15383824639111, + -2.26145329330877, -2.36906834022644, -2.47668338714411, + -2.58429843406177, -2.69191348097944, -2.7995285278971, + -2.90714357481477, -3.01475862173243, -3.1223736686501, + -3.22998871556777, -3.33760376248543, -3.4452188094031, + -3.55283385632076, -3.66044890323843, -3.76806395015609, + -3.87567899707376, -3.98329404399143, -4.09090909090909, + -1.72332694874715, -1.83944053332073, -1.9555541178943, + -2.07166770246788, -2.18778128704145, -2.30389487161503, + -2.4200084561886, -2.53612204076218, -2.65223562533576, + -2.76834920990933, -2.88446279448291, -3.00057637905648, + -3.11668996363006, -3.23280354820364, -3.34891713277721, + -3.46503071735079, -3.58114430192436, -3.69725788649794, + -3.81337147107151, -3.92948505564509, -4.04559864021867, + -4.16171222479224, -4.27782580936582, -4.39393939393939, + -1.82740173278741, -1.95216555731707, -2.07692938184674, + -2.2016932063764, -2.32645703090606, -2.45122085543573, + -2.57598467996539, -2.70074850449506, -2.82551232902472, + -2.95027615355439, -3.07503997808405, -3.19980380261372, + -3.32456762714338, -3.44933145167305, -3.57409527620271, + -3.69885910073238, -3.82362292526204, -3.94838674979171, + -4.07315057432137, -4.19791439885104, -4.3226782233807, + -4.44744204791037, -4.57220587244003, -4.6969696969697, -1.9277802036096, + -2.0613549773657, -2.1949297511218, -2.32850452487791, -2.46207929863401, + -2.59565407239012, -2.72922884614622, -2.86280361990233, + -2.99637839365843, -3.12995316741454, -3.26352794117064, + -3.39710271492675, -3.53067748868285, -3.66425226243895, + -3.79782703619506, -3.93140180995116, -4.06497658370727, + -4.19855135746337, -4.33212613121948, -4.46570090497558, + -4.59927567873169, -4.73285045248779, -4.8664252262439, -5, + -2.0116373116118, -2.14156612415042, -2.27149493668903, + -2.40142374922765, -2.53135256176627, -2.66128137430489, + -2.7912101868435, -2.92113899938212, -3.05106781192074, + -3.18099662445936, -3.31092543699797, -3.44085424953659, + -3.57078306207521, -3.70071187461383, -3.83064068715244, + -3.96056949969106, -4.09049831222968, -4.2204271247683, + -4.35035593730691, -4.48028474984553, -4.61021356238415, + -4.74014237492277, -4.87007118746138, -5, -2.09140935609936, + -2.21786981887765, -2.34433028165594, -2.47079074443423, + -2.59725120721251, -2.7237116699908, -2.85017213276909, + -2.97663259554738, -3.10309305832567, -3.22955352110396, + -3.35601398388225, -3.48247444666054, -3.60893490943882, + -3.73539537221711, -3.8618558349954, -3.98831629777369, + -4.11477676055198, -4.24123722333027, -4.36769768610856, + -4.49415814888685, -4.62061861166513, -4.74707907444342, + -4.87353953722171, -5, -2.16691562773411, -2.29009320913698, + -2.41327079053984, -2.53644837194271, -2.65962595334557, + -2.78280353474844, -2.9059811161513, -3.02915869755416, + -3.15233627895703, -3.27551386035989, -3.39869144176276, + -3.52186902316562, -3.64504660456849, -3.76822418597135, + -3.89140176737422, -4.01457934877708, -4.13775693017995, + -4.26093451158281, -4.38411209298568, -4.50728967438854, + -4.63046725579141, -4.75364483719427, -4.87682241859714, -5, + -2.23798508052542, -2.35807268571997, -2.47816029091451, + -2.59824789610906, -2.71833550130361, -2.83842310649815, + -2.9585107116927, -3.07859831688725, -3.1986859220818, -3.31877352727634, + -3.43886113247089, -3.55894873766544, -3.67903634285998, + -3.79912394805453, -3.91921155324908, -4.03929915844362, + -4.15938676363817, -4.27947436883272, -4.39956197402727, + -4.51964957922181, -4.63973718441636, -4.75982478961091, + -4.87991239480545, -5, -2.30445671930436, -2.42165425324765, + -2.53885178719094, -2.65604932113423, -2.77324685507751, + -2.8904443890208, -3.00764192296409, -3.12483945690738, + -3.24203699085067, -3.35923452479396, -3.47643205873725, + -3.59362959268054, -3.71082712662382, -3.82802466056711, + -3.9452221945104, -4.06241972845369, -4.17961726239698, + -4.29681479634027, -4.41401233028356, -4.53120986422685, + -4.64840739817013, -4.76560493211342, -4.88280246605671, -5, + -2.36617996442956, -2.48069387901958, -2.5952077936096, + -2.70972170819962, -2.82423562278964, -2.93874953737966, + -3.05326345196967, -3.16777736655969, -3.28229128114971, + -3.39680519573973, -3.51131911032975, -3.62583302491977, + -3.74034693950979, -3.85486085409981, -3.96937476868983, + -4.08388868327985, -4.19840259786987, -4.31291651245988, + -4.4274304270499, -4.54194434163992, -4.65645825622994, + -4.77097217081996, -4.88548608540998, -5, -2.42301499289852, + -2.53505781929423, -2.64710064568995, -2.75914347208567, + -2.87118629848138, -2.9832291248771, -3.09527195127282, + -3.20731477766853, -3.31935760406425, -3.43140043045997, + -3.54344325685568, -3.6554860832514, -3.76752890964712, + -3.87957173604283, -3.99161456243855, -4.10365738883427, + -4.21570021522998, -4.3277430416257, -4.43978586802142, + -4.55182869441713, -4.66387152081285, -4.77591434720857, + -4.88795717360428, -5, -2.47483305509168, -2.5846229222616, + -2.69441278943153, -2.80420265660146, -2.91399252377138, + -3.02378239094131, -3.13357225811124, -3.24336212528117, + -3.35315199245109, -3.46294185962102, -3.57273172679095, + -3.68252159396087, -3.7923114611308, -3.90210132830073, + -4.01189119547066, -4.12168106264058, -4.23147092981051, + -4.34126079698044, -4.45105066415036, -4.56084053132029, + -4.67063039849022, -4.78042026566015, -4.89021013283007, -5, + -2.52151676643171, -2.62927690702164, -2.73703704761157, + -2.84479718820149, -2.95255732879142, -3.06031746938134, + -3.16807760997127, -3.27583775056119, -3.38359789115112, + -3.49135803174104, -3.59911817233097, -3.70687831292089, + -3.81463845351082, -3.92239859410075, -4.03015873469067, + -4.1379188752806, -4.24567901587052, -4.35343915646045, + -4.46119929705037, -4.5689594376403, -4.67671957823022, + -4.78447971882015, -4.89223985941007, -5, -2.56296037329738, + -2.66891861793663, -2.77487686257587, -2.88083510721511, + -2.98679335185436, -3.0927515964936, -3.19870984113285, + -3.30466808577209, -3.41062633041134, -3.51658457505058, + -3.62254281968982, -3.72850106432907, -3.83445930896831, + -3.94041755360756, -4.0463757982468, -4.15233404288605, + -4.25829228752529, -4.36425053216453, -4.47020877680378, + -4.57616702144302, -4.68212526608227, -4.78808351072151, + -4.89404175536076, -5, -2.59906999258946, -2.70345825378122, + -2.80784651497298, -2.91223477616474, -3.01662303735651, + -3.12101129854827, -3.22539955974003, -3.3297878209318, + -3.43417608212356, -3.53856434331532, -3.64295260450708, + -3.74734086569885, -3.85172912689061, -3.95611738808237, + -4.06050564927413, -4.1648939104659, -4.26928217165766, + -4.37367043284942, -4.47805869404119, -4.58244695523295, + -4.68683521642471, -4.79122347761647, -4.89561173880824, -5, + -2.62976382440616, -2.73281757117111, -2.83587131793606, + -2.93892506470101, -3.04197881146596, -3.14503255823091, + -3.24808630499586, -3.35114005176081, -3.45419379852575, + -3.5572475452907, -3.66030129205565, -3.7633550388206, -3.86640878558555, + -3.9694625323505, -4.07251627911545, -4.1755700258804, -4.27862377264535, + -4.3816775194103, -4.48473126617525, -4.5877850129402, -4.69083875970515, + -4.7938925064701, -4.89694625323505, -5, -2.65497233734624, + -2.75693006180945, -2.85888778627266, -2.96084551073586, + -3.06280323519907, -3.16476095966228, -3.26671868412548, + -3.36867640858869, -3.4706341330519, -3.57259185751511, + -3.67454958197831, -3.77650730644152, -3.87846503090473, + -3.98042275536793, -4.08238047983114, -4.18433820429435, + -4.28629592875755, -4.38825365322076, -4.49021137768397, + -4.59216910214717, -4.69412682661038, -4.79608455107359, + -4.89804227553679, -5, -2.67463842601999, -2.77574110314956, + -2.87684378027912, -2.97794645740869, -3.07904913453825, + -3.18015181166782, -3.28125448879738, -3.38235716592695, + -3.48345984305652, -3.58456252018608, -3.68566519731565, + -3.78676787444521, -3.88787055157478, -3.98897322870434, + -4.09007590583391, -4.19117858296347, -4.29228126009304, + -4.39338393722261, -4.49448661435217, -4.59558929148174, + -4.6966919686113, -4.79779464574087, -4.89889732287043, -5, + -2.68871754041127, -2.78920808213252, -2.88969862385377, + -2.99018916557502, -3.09067970729627, -3.19117024901752, + -3.29166079073876, -3.39215133246001, -3.49264187418126, + -3.59313241590251, -3.69362295762376, -3.79411349934501, + -3.89460404106626, -3.99509458278751, -4.09558512450876, + -4.19607566623001, -4.29656620795126, -4.3970567496725, + -4.49754729139375, -4.598037833115, -4.69852837483625, -4.7990189165575, + -4.89950945827875, -5, -2.69717778679766, -2.7973004917195, + -2.89742319664134, -2.99754590156318, -3.09766860648502, + -3.19779131140687, -3.29791401632871, -3.39803672125055, + -3.49815942617239, -3.59828213109423, -3.69840483601607, + -3.79852754093791, -3.89865024585975, -3.99877295078159, + -4.09889565570343, -4.19901836062527, -4.29914106554711, + -4.39926377046895, -4.4993864753908, -4.59950918031264, + -4.69963188523448, -4.79975459015632, -4.89987729507816, -5, -2.7, -2.8, + -2.9, -3, -3.1, -3.2, -3.3, -3.4, -3.5, -3.6, -3.7, -3.8, -3.9, -4, -4.1, + -4.2, -4.3, -4.4, -4.5, -4.6, -4.7, -4.8, -4.9, -5, -2.69717778679766, + -2.7973004917195, -2.89742319664134, -2.99754590156318, + -3.09766860648502, -3.19779131140687, -3.29791401632871, + -3.39803672125055, -3.49815942617239, -3.59828213109423, + -3.69840483601607, -3.79852754093791, -3.89865024585975, + -3.99877295078159, -4.09889565570343, -4.19901836062527, + -4.29914106554711, -4.39926377046895, -4.4993864753908, + -4.59950918031264, -4.69963188523448, -4.79975459015632, + -4.89987729507816, -5, -2.68871754041127, -2.78920808213252, + -2.88969862385377, -2.99018916557502, -3.09067970729627, + -3.19117024901752, -3.29166079073876, -3.39215133246001, + -3.49264187418126, -3.59313241590251, -3.69362295762376, + -3.79411349934501, -3.89460404106626, -3.99509458278751, + -4.09558512450876, -4.19607566623001, -4.29656620795126, + -4.3970567496725, -4.49754729139375, -4.598037833115, -4.69852837483625, + -4.7990189165575, -4.89950945827875, -5, -2.67463842601999, + -2.77574110314956, -2.87684378027912, -2.97794645740869, + -3.07904913453825, -3.18015181166782, -3.28125448879738, + -3.38235716592695, -3.48345984305652, -3.58456252018608, + -3.68566519731565, -3.78676787444521, -3.88787055157478, + -3.98897322870434, -4.09007590583391, -4.19117858296347, + -4.29228126009304, -4.39338393722261, -4.49448661435217, + -4.59558929148174, -4.6966919686113, -4.79779464574087, + -4.89889732287043, -5, -2.65497233734624, -2.75693006180945, + -2.85888778627266, -2.96084551073586, -3.06280323519907, + -3.16476095966228, -3.26671868412548, -3.36867640858869, + -3.4706341330519, -3.57259185751511, -3.67454958197831, + -3.77650730644152, -3.87846503090473, -3.98042275536793, + -4.08238047983114, -4.18433820429435, -4.28629592875755, + -4.38825365322076, -4.49021137768397, -4.59216910214717, + -4.69412682661038, -4.79608455107359, -4.89804227553679, -5, + -2.62976382440616, -2.73281757117111, -2.83587131793606, + -2.93892506470101, -3.04197881146596, -3.14503255823091, + -3.24808630499586, -3.35114005176081, -3.45419379852575, + -3.5572475452907, -3.66030129205565, -3.7633550388206, -3.86640878558555, + -3.9694625323505, -4.07251627911545, -4.1755700258804, -4.27862377264535, + -4.3816775194103, -4.48473126617525, -4.5877850129402, -4.69083875970515, + -4.7938925064701, -4.89694625323505, -5, -2.59906999258946, + -2.70345825378122, -2.80784651497298, -2.91223477616474, + -3.01662303735651, -3.12101129854827, -3.22539955974003, + -3.3297878209318, -3.43417608212356, -3.53856434331532, + -3.64295260450708, -3.74734086569885, -3.85172912689061, + -3.95611738808237, -4.06050564927413, -4.1648939104659, + -4.26928217165766, -4.37367043284942, -4.47805869404119, + -4.58244695523295, -4.68683521642471, -4.79122347761647, + -4.89561173880824, -5, -2.56296037329738, -2.66891861793663, + -2.77487686257587, -2.88083510721511, -2.98679335185436, + -3.0927515964936, -3.19870984113285, -3.30466808577209, + -3.41062633041134, -3.51658457505058, -3.62254281968982, + -3.72850106432907, -3.83445930896831, -3.94041755360756, + -4.0463757982468, -4.15233404288605, -4.25829228752529, + -4.36425053216453, -4.47020877680378, -4.57616702144302, + -4.68212526608227, -4.78808351072151, -4.89404175536076, -5, + -2.52151676643171, -2.62927690702164, -2.73703704761157, + -2.84479718820149, -2.95255732879142, -3.06031746938134, + -3.16807760997127, -3.27583775056119, -3.38359789115112, + -3.49135803174104, -3.59911817233097, -3.70687831292089, + -3.81463845351082, -3.92239859410075, -4.03015873469067, + -4.1379188752806, -4.24567901587052, -4.35343915646045, + -4.46119929705037, -4.5689594376403, -4.67671957823022, + -4.78447971882015, -4.89223985941007, -5, -2.47483305509168, + -2.5846229222616, -2.69441278943153, -2.80420265660146, + -2.91399252377138, -3.02378239094131, -3.13357225811124, + -3.24336212528117, -3.35315199245109, -3.46294185962102, + -3.57273172679095, -3.68252159396087, -3.7923114611308, + -3.90210132830073, -4.01189119547066, -4.12168106264058, + -4.23147092981051, -4.34126079698044, -4.45105066415036, + -4.56084053132029, -4.67063039849022, -4.78042026566015, + -4.89021013283007, -5, -2.42301499289852, -2.53505781929423, + -2.64710064568995, -2.75914347208567, -2.87118629848138, + -2.9832291248771, -3.09527195127282, -3.20731477766853, + -3.31935760406425, -3.43140043045997, -3.54344325685568, + -3.6554860832514, -3.76752890964712, -3.87957173604283, + -3.99161456243855, -4.10365738883427, -4.21570021522998, + -4.3277430416257, -4.43978586802142, -4.55182869441713, + -4.66387152081285, -4.77591434720857, -4.88795717360428, -5, + -2.36617996442956, -2.48069387901958, -2.5952077936096, + -2.70972170819962, -2.82423562278964, -2.93874953737966, + -3.05326345196967, -3.16777736655969, -3.28229128114971, + -3.39680519573973, -3.51131911032975, -3.62583302491977, + -3.74034693950979, -3.85486085409981, -3.96937476868983, + -4.08388868327985, -4.19840259786987, -4.31291651245988, + -4.4274304270499, -4.54194434163992, -4.65645825622994, + -4.77097217081996, -4.88548608540998, -5, -2.30445671930436, + -2.42165425324765, -2.53885178719094, -2.65604932113423, + -2.77324685507751, -2.8904443890208, -3.00764192296409, + -3.12483945690738, -3.24203699085067, -3.35923452479396, + -3.47643205873725, -3.59362959268054, -3.71082712662382, + -3.82802466056711, -3.9452221945104, -4.06241972845369, + -4.17961726239698, -4.29681479634027, -4.41401233028356, + -4.53120986422685, -4.64840739817013, -4.76560493211342, + -4.88280246605671, -5, -2.23798508052542, -2.35807268571997, + -2.47816029091451, -2.59824789610906, -2.71833550130361, + -2.83842310649815, -2.9585107116927, -3.07859831688725, -3.1986859220818, + -3.31877352727634, -3.43886113247089, -3.55894873766544, + -3.67903634285998, -3.79912394805453, -3.91921155324908, + -4.03929915844362, -4.15938676363817, -4.27947436883272, + -4.39956197402727, -4.51964957922181, -4.63973718441636, + -4.75982478961091, -4.87991239480545, -5, -2.16691562773411, + -2.29009320913698, -2.41327079053984, -2.53644837194271, + -2.65962595334557, -2.78280353474844, -2.9059811161513, + -3.02915869755417, -3.15233627895703, -3.27551386035989, + -3.39869144176276, -3.52186902316562, -3.64504660456849, + -3.76822418597135, -3.89140176737422, -4.01457934877708, + -4.13775693017995, -4.26093451158281, -4.38411209298568, + -4.50728967438854, -4.63046725579141, -4.75364483719427, + -4.87682241859714, -5, -2.09140935609936, -2.21786981887765, + -2.34433028165594, -2.47079074443423, -2.59725120721252, + -2.7237116699908, -2.85017213276909, -2.97663259554738, + -3.10309305832567, -3.22955352110396, -3.35601398388225, + -3.48247444666054, -3.60893490943882, -3.73539537221711, + -3.8618558349954, -3.98831629777369, -4.11477676055198, + -4.24123722333027, -4.36769768610856, -4.49415814888685, + -4.62061861166513, -4.74707907444342, -4.87353953722171, -5, + -2.0116373116118, -2.14156612415042, -2.27149493668903, + -2.40142374922765, -2.53135256176627, -2.66128137430489, + -2.7912101868435, -2.92113899938212, -3.05106781192074, + -3.18099662445936, -3.31092543699797, -3.44085424953659, + -3.57078306207521, -3.70071187461383, -3.83064068715244, + -3.96056949969106, -4.09049831222968, -4.2204271247683, + -4.35035593730691, -4.48028474984553, -4.61021356238415, + -4.74014237492277, -4.87007118746138, -5, -1.91515394098333, + -2.03610245211317, -2.15705096324302, -2.27799947437286, + -2.3989479855027, -2.51989649663254, -2.64084500776238, + -2.76179351889223, -2.88274203002207, -3.00369054115191, + -3.12463905228175, -3.24558756341159, -3.36653607454144, + -3.48748458567128, -3.60843309680112, -3.72938160793096, + -3.8503301190608, -3.97127863019065, -4.09222714132049, + -4.21317565245033, -4.33412416358017, -4.45507267471001, + -4.57602118583986, -4.6969696969697, -1.81477547016114, + -1.92691303206455, -2.03905059396795, -2.15118815587135, + -2.26332571777475, -2.37546327967815, -2.48760084158156, + -2.59973840348496, -2.71187596538836, -2.82401352729176, + -2.93615108919517, -3.04828865109857, -3.16042621300197, + -3.27256377490537, -3.38470133680877, -3.49683889871218, + -3.60897646061558, -3.72111402251898, -3.83325158442238, + -3.94538914632579, -4.05752670822919, -4.16966427013259, + -4.28180183203599, -4.39393939393939, -1.71070068612089, + -1.8141880080682, -1.91767533001551, -2.02116265196283, + -2.12464997391014, -2.22813729585745, -2.33162461780477, + -2.43511193975208, -2.53859926169939, -2.64208658364671, + -2.74557390559402, -2.84906122754133, -2.95254854948865, + -3.05603587143596, -3.15952319338327, -3.26301051533059, + -3.3664978372779, -3.46998515922521, -3.57347248117253, + -3.67695980311984, -3.78044712506715, -3.88393444701446, + -3.98742176896178, -4.09090909090909, -1.60313674917652, + -1.69812553346792, -1.79311431775932, -1.88810310205073, + -1.98309188634213, -2.07808067063353, -2.17306945492494, + -2.26805823921634, -2.36304702350774, -2.45803580779915, + -2.55302459209055, -2.64801337638195, -2.74300216067336, + -2.83799094496476, -2.93297972925616, -3.02796851354756, + -3.12295729783897, -3.21794608213037, -3.31293486642177, + -3.40792365071318, -3.50291243500458, -3.59790121929598, + -3.69289000358739, -3.78787878787879, -1.49229872369555, + -1.57893132200655, -1.66556392031755, -1.75219651862854, + -1.83882911693954, -1.92546171525054, -2.01209431356153, + -2.09872691187253, -2.18535951018353, -2.27199210849452, + -2.35862470680552, -2.44525730511652, -2.53188990342752, + -2.61852250173851, -2.70515510004951, -2.79178769836051, + -2.8784202966715, -2.9650528949825, -3.0516854932935, -3.1383180916045, + -3.22495068991549, -3.31158328822649, -3.39821588653749, + -3.48484848484848, -1.37840909090909, -1.45681818181818, + -1.53522727272727, -1.61363636363636, -1.69204545454545, + -1.77045454545455, -1.84886363636364, -1.92727272727273, + -2.00568181818182, -2.08409090909091, -2.1625, -2.24090909090909, + -2.31931818181818, -2.39772727272727, -2.47613636363636, + -2.55454545454545, -2.63295454545455, -2.71136363636364, + -2.78977272727273, -2.86818181818182, -2.94659090909091, -3.025, + -3.10340909090909, -3.18181818181818, -1.26169724492029, + -1.33200553334932, -1.40231382177834, -1.47262211020737, + -1.54293039863639, -1.61323868706542, -1.68354697549445, + -1.75385526392347, -1.8241635523525, -1.89447184078152, + -1.96478012921055, -2.03508841763957, -2.1053967060686, + -2.17570499449762, -2.24601328292665, -2.31632157135568, + -2.3866298597847, -2.45693814821373, -2.52724643664275, + -2.59755472507178, -2.6678630135008, -2.73817130192983, + -2.80847959035885, -2.87878787878788, -1.14239897305293, + -1.20471891230096, -1.26703885154899, -1.32935879079702, + -1.39167873004505, -1.45399866929307, -1.5163186085411, + -1.57863854778913, -1.64095848703716, -1.70327842628518, + -1.76559836553321, -1.82791830478124, -1.89023824402927, + -1.9525581832773, -2.01487812252532, -2.07719806177335, + -2.13951800102138, -2.20183794026941, -2.26415787951744, + -2.32647781876546, -2.38879775801349, -2.45111769726152, + -2.51343763650955, -2.57575757575758, -1.02075592171729, + -1.07518945871772, -1.12962299571815, -1.18405653271859, + -1.23849006971902, -1.29292360671946, -1.34735714371989, + -1.40179068072033, -1.45622421772076, -1.51065775472119, + -1.56509129172163, -1.61952482872206, -1.6739583657225, + -1.72839190272293, -1.78282543972337, -1.8372589767238, + -1.89169251372423, -1.94612605072467, -2.0005595877251, + -2.05499312472554, -2.10942666172597, -2.1638601987264, + -2.21829373572684, -2.27272727272727, -0.897015049003283, + -0.94365339338127, -0.990291737759256, -1.03693008213724, + -1.08356842651523, -1.13020677089322, -1.1768451152712, + -1.22348345964919, -1.27012180402717, -1.31676014840516, + -1.36339849278315, -1.41003683716113, -1.45667518153912, + -1.50331352591711, -1.54995187029509, -1.59659021467308, + -1.64322855905107, -1.68986690342905, -1.73650524780704, + -1.78314359218502, -1.82978193656301, -1.876420280941, -1.92305862531898, + -1.96969696969697, -0.771428065241007, -0.810351482694296, + -0.849274900147586, -0.888198317600875, -0.927121735054165, + -0.966045152507454, -1.00496856996074, -1.04389198741403, + -1.08281540486732, -1.12173882232061, -1.1606622397739, + -1.19958565722719, -1.23850907468048, -1.27743249213377, + -1.31635590958706, -1.35527932704035, -1.39420274449364, + -1.43312616194693, -1.47204957940022, -1.51097299685351, + -1.5498964143068, -1.58881983176009, -1.62774324921338, + -1.66666666666667, -0.644250862795838, -0.675528493267165, + -0.706806123738493, -0.73808375420982, -0.769361384681147, + -0.800639015152474, -0.831916645623802, -0.863194276095129, + -0.894471906566456, -0.925749537037783, -0.95702716750911, + -0.988304797980438, -1.01958242845176, -1.05086005892309, + -1.08213768939442, -1.11341531986575, -1.14469295033707, + -1.1759705808084, -1.20724821127973, -1.23852584175106, + -1.26980347222238, -1.30108110269371, -1.33235873316504, + -1.36363636363636, -0.515742936389941, -0.539432637442816, + -0.56312233849569, -0.586812039548565, -0.61050174060144, + -0.634191441654315, -0.657881142707189, -0.681570843760064, + -0.705260544812939, -0.728950245865814, -0.752639946918689, + -0.776329647971563, -0.800019349024438, -0.823709050077313, + -0.847398751130188, -0.871088452183062, -0.894778153235937, + -0.918467854288812, -0.942157555341687, -0.965847256394561, + -0.989536957447436, -1.01322665850031, -1.03691635955319, + -1.06060606060606, -0.386166795263259, -0.402315011015976, + -0.418463226768694, -0.434611442521411, -0.450759658274128, + -0.466907874026846, -0.483056089779563, -0.49920430553228, + -0.515352521284998, -0.531500737037715, -0.547648952790432, + -0.56379716854315, -0.579945384295867, -0.596093600048584, + -0.612241815801302, -0.628390031554019, -0.644538247306736, + -0.660686463059454, -0.676834678812171, -0.692982894564888, + -0.709131110317606, -0.725279326070323, -0.74142754182304, + -0.757575757575758, -0.25578736850565, -0.264429024420424, + -0.273070680335198, -0.281712336249972, -0.290353992164746, + -0.29899564807952, -0.307637303994295, -0.316278959909069, + -0.324920615823843, -0.333562271738617, -0.342203927653391, + -0.350845583568165, -0.359487239482939, -0.368128895397714, + -0.376770551312488, -0.385412207227262, -0.394053863142036, + -0.40269551905681, -0.411337174971584, -0.419978830886358, + -0.428620486801133, -0.437262142715907, -0.445903798630681, + -0.454545454545455, -0.124871404907289, -0.126029828672848, + -0.127188252438408, -0.128346676203967, -0.129505099969526, + -0.130663523735085, -0.131821947500644, -0.132980371266204, + -0.134138795031763, -0.135297218797322, -0.136455642562881, + -0.137614066328441, -0.138772490094, -0.139930913859559, + -0.141089337625118, -0.142247761390678, -0.143406185156237, + -0.144564608921796, -0.145723032687355, -0.146881456452914, + -0.148039880218474, -0.149198303984033, -0.150356727749592, + -0.151515151515151, 0.006313131313131, 0.0126262626262623, + 0.0189393939393936, 0.025252525252525, 0.0315656565656563, + 0.0378787878787876, 0.0441919191919189, 0.0505050505050502, + 0.0568181818181816, 0.0631313131313129, 0.0694444444444442, + 0.0757575757575755, 0.0820707070707068, 0.0883838383838382, + 0.0946969696969695, 0.101010101010101, 0.107323232323232, + 0.113636363636363, 0.119949494949495, 0.126262626262626, + 0.132575757575757, 0.138888888888889, 0.14520202020202, + 0.151515151515151, 0.137497667533552, 0.151282353925374, + 0.165067040317196, 0.178851726709018, 0.192636413100839, + 0.206421099492661, 0.220205785884483, 0.233990472276305, + 0.247775158668127, 0.261559845059949, 0.27534453145177, + 0.289129217843592, 0.302913904235414, 0.316698590627236, + 0.330483277019058, 0.34426796341088, 0.358052649802701, + 0.371837336194523, 0.385622022586345, 0.399406708978167, + 0.413191395369989, 0.426976081761811, 0.440760768153632, + 0.454545454545454, 0.268413631131911, 0.289681549672947, + 0.310949468213984, 0.332217386755021, 0.353485305296058, + 0.374753223837095, 0.396021142378132, 0.417289060919168, + 0.438556979460205, 0.459824898001242, 0.481092816542279, + 0.502360735083316, 0.523628653624353, 0.544896572165389, + 0.566164490706426, 0.587432409247463, 0.6087003277885, 0.629968246329537, + 0.651236164870574, 0.67250408341161, 0.693772001952647, + 0.715039920493684, 0.736307839034721, 0.757575757575758, + 0.398793057889521, 0.427567536268501, 0.456342014647481, + 0.485116493026461, 0.513890971405441, 0.542665449784421, + 0.571439928163401, 0.600214406542381, 0.628988884921361, + 0.657763363300341, 0.686537841679321, 0.715312320058301, + 0.744086798437281, 0.772861276816261, 0.801635755195241, + 0.830410233574221, 0.859184711953201, 0.887959190332181, + 0.916733668711161, 0.945508147090141, 0.974282625469121, 1.0030571038481, + 1.03183158222708, 1.06060606060606, 0.528369199016204, 0.564685162695341, + 0.601001126374479, 0.637317090053616, 0.673633053732754, + 0.709949017411891, 0.746264981091028, 0.782580944770165, + 0.818896908449303, 0.85521287212844, 0.891528835807578, + 0.927844799486715, 0.964160763165852, 1.00047672684499, 1.03679269052413, + 1.07310865420326, 1.1094246178824, 1.14574058156154, 1.18205654524068, + 1.21837250891981, 1.25468847259895, 1.29100443627809, 1.32732039995723, + 1.36363636363636, 0.6568771254221, 0.70078101851969, 0.74468491161728, + 0.78858880471487, 0.83249269781246, 0.87639659091005, 0.920300484007639, + 0.964204377105229, 1.00810827020282, 1.05201216330041, 1.095916056398, + 1.13981994949559, 1.18372384259318, 1.22762773569077, 1.27153162878836, + 1.31543552188595, 1.35933941498354, 1.40324330808113, 1.44714720117872, + 1.49105109427631, 1.5349549873739, 1.57885888047149, 1.62276277356908, + 1.66666666666667, 0.78405432786727, 0.835604007946822, 0.887153688026374, + 0.938703368105926, 0.990253048185478, 1.04180272826503, 1.09335240834458, + 1.14490208842413, 1.19645176850369, 1.24800144858324, 1.29955112866279, + 1.35110080874234, 1.4026504888219, 1.45420016890145, 1.505749848981, + 1.55729952906055, 1.6088492091401, 1.66039888921966, 1.71194856929921, + 1.76349824937876, 1.81504792945831, 1.86659760953787, 1.91814728961742, + 1.96969696969697, 0.909641311629544, 0.968905918633793, 1.02817052563804, + 1.08743513264229, 1.14669973964654, 1.20596434665079, 1.26522895365504, + 1.32449356065929, 1.38375816766354, 1.44302277466779, 1.50228738167203, + 1.56155198867628, 1.62081659568053, 1.68008120268478, 1.73934580968903, + 1.79861041669328, 1.85787502369753, 1.91713963070178, 1.97640423770603, + 2.03566884471028, 2.09493345171453, 2.15419805871877, 2.21346266572302, + 2.27272727272727, 1.03338218434355, 1.10044198397024, 1.16750178359694, + 1.23456158322364, 1.30162138285034, 1.36868118247703, 1.43574098210373, + 1.50280078173043, 1.56986058135712, 1.63692038098382, 1.70398018061052, + 1.77103998023721, 1.83809977986391, 1.90515957949061, 1.9722193791173, + 2.039279178744, 2.1063389783707, 2.17339877799739, 2.24045857762409, + 2.30751837725079, 2.37457817687749, 2.44163797650418, 2.50869777613088, + 2.57575757575758, 1.1550252356792, 1.22997143755349, 1.30491763942778, + 1.37986384130207, 1.45481004317636, 1.52975624505065, 1.60470244692494, + 1.67964864879923, 1.75459485067352, 1.82954105254781, 1.9044872544221, + 1.97943345629639, 2.05437965817068, 2.12932586004497, 2.20427206191926, + 2.27921826379355, 2.35416446566784, 2.42911066754214, 2.50405686941643, + 2.57900307129072, 2.65394927316501, 2.7288954750393, 2.80384167691359, + 2.87878787878788, 1.27432350754655, 1.35725805860184, 1.44019260965713, + 1.52312716071242, 1.60606171176771, 1.688996262823, 1.77193081387828, + 1.85486536493357, 1.93779991598886, 2.02073446704415, 2.10366901809944, + 2.18660356915472, 2.26953812021001, 2.3524726712653, 2.43540722232059, + 2.51834177337588, 2.60127632443116, 2.68421087548645, 2.76714542654174, + 2.85007997759703, 2.93301452865232, 3.01594907970761, 3.09888363076289, + 3.18181818181818, 1.39103535353535, 1.48207070707071, 1.57310606060606, + 1.66414141414141, 1.75517676767677, 1.84621212121212, 1.93724747474747, + 2.02828282828283, 2.11931818181818, 2.21035353535354, 2.30138888888889, + 2.39242424242424, 2.4834595959596, 2.57449494949495, 2.6655303030303, + 2.75656565656566, 2.84760101010101, 2.93863636363636, 3.02967171717172, + 3.12070707070707, 3.21174242424242, 3.30277777777778, 3.39381313131313, + 3.48484848484848, 1.50492498632181, 1.60418384725907, 1.70344270819633, + 1.80270156913359, 1.90196043007085, 2.00121929100811, 2.10047815194537, + 2.19973701288263, 2.29899587381989, 2.39825473475715, 2.49751359569441, + 2.59677245663167, 2.69603131756893, 2.79529017850619, 2.89454903944345, + 2.99380790038071, 3.09306676131797, 3.19232562225523, 3.29158448319249, + 3.39084334412975, 3.49010220506701, 3.58936106600427, 3.68861992694153, + 3.78787878787879, 1.61576301180278, 1.72337805872045, 1.83099310563811, + 1.93860815255578, 2.04622319947344, 2.15383824639111, 2.26145329330877, + 2.36906834022644, 2.47668338714411, 2.58429843406177, 2.69191348097944, + 2.7995285278971, 2.90714357481477, 3.01475862173243, 3.1223736686501, + 3.22998871556777, 3.33760376248543, 3.4452188094031, 3.55283385632076, + 3.66044890323843, 3.76806395015609, 3.87567899707376, 3.98329404399143, + 4.09090909090909, 1.72332694874715, 1.83944053332073, 1.9555541178943, + 2.07166770246788, 2.18778128704145, 2.30389487161503, 2.4200084561886, + 2.53612204076218, 2.65223562533576, 2.76834920990933, 2.88446279448291, + 3.00057637905648, 3.11668996363006, 3.23280354820364, 3.34891713277721, + 3.46503071735079, 3.58114430192436, 3.69725788649794, 3.81337147107151, + 3.92948505564509, 4.04559864021867, 4.16171222479224, 4.27782580936582, + 4.39393939393939, 1.8274017327874, 1.95216555731707, 2.07692938184673, + 2.2016932063764, 2.32645703090606, 2.45122085543573, 2.57598467996539, + 2.70074850449506, 2.82551232902472, 2.95027615355439, 3.07503997808405, + 3.19980380261372, 3.32456762714338, 3.44933145167305, 3.57409527620271, + 3.69885910073238, 3.82362292526204, 3.94838674979171, 4.07315057432137, + 4.19791439885104, 4.3226782233807, 4.44744204791037, 4.57220587244003, + 4.6969696969697, 1.9277802036096, 2.0613549773657, 2.1949297511218, + 2.32850452487791, 2.46207929863401, 2.59565407239012, 2.72922884614622, + 2.86280361990233, 2.99637839365843, 3.12995316741454, 3.26352794117064, + 3.39710271492675, 3.53067748868285, 3.66425226243895, 3.79782703619506, + 3.93140180995116, 4.06497658370727, 4.19855135746337, 4.33212613121948, + 4.46570090497558, 4.59927567873169, 4.73285045248779, 4.8664252262439, 5, + 2.0116373116118, 2.14156612415042, 2.27149493668903, 2.40142374922765, + 2.53135256176627, 2.66128137430489, 2.7912101868435, 2.92113899938212, + 3.05106781192074, 3.18099662445936, 3.31092543699797, 3.44085424953659, + 3.57078306207521, 3.70071187461383, 3.83064068715244, 3.96056949969106, + 4.09049831222968, 4.2204271247683, 4.35035593730691, 4.48028474984553, + 4.61021356238415, 4.74014237492277, 4.87007118746138, 5, + 2.09140935609936, 2.21786981887765, 2.34433028165594, 2.47079074443423, + 2.59725120721251, 2.7237116699908, 2.85017213276909, 2.97663259554738, + 3.10309305832567, 3.22955352110396, 3.35601398388225, 3.48247444666054, + 3.60893490943882, 3.73539537221711, 3.8618558349954, 3.98831629777369, + 4.11477676055198, 4.24123722333027, 4.36769768610856, 4.49415814888685, + 4.62061861166513, 4.74707907444342, 4.87353953722171, 5, + 2.16691562773411, 2.29009320913698, 2.41327079053984, 2.53644837194271, + 2.65962595334557, 2.78280353474843, 2.9059811161513, 3.02915869755416, + 3.15233627895703, 3.27551386035989, 3.39869144176276, 3.52186902316562, + 3.64504660456849, 3.76822418597135, 3.89140176737422, 4.01457934877708, + 4.13775693017995, 4.26093451158281, 4.38411209298568, 4.50728967438854, + 4.63046725579141, 4.75364483719427, 4.87682241859714, 5, + 2.23798508052542, 2.35807268571997, 2.47816029091451, 2.59824789610906, + 2.71833550130361, 2.83842310649815, 2.9585107116927, 3.07859831688725, + 3.1986859220818, 3.31877352727634, 3.43886113247089, 3.55894873766544, + 3.67903634285998, 3.79912394805453, 3.91921155324908, 4.03929915844362, + 4.15938676363817, 4.27947436883272, 4.39956197402726, 4.51964957922181, + 4.63973718441636, 4.75982478961091, 4.87991239480545, 5, + 2.30445671930436, 2.42165425324765, 2.53885178719094, 2.65604932113423, + 2.77324685507751, 2.8904443890208, 3.00764192296409, 3.12483945690738, + 3.24203699085067, 3.35923452479396, 3.47643205873725, 3.59362959268054, + 3.71082712662382, 3.82802466056711, 3.9452221945104, 4.06241972845369, + 4.17961726239698, 4.29681479634027, 4.41401233028356, 4.53120986422685, + 4.64840739817013, 4.76560493211342, 4.88280246605671, 5, + 2.36617996442956, 2.48069387901958, 2.5952077936096, 2.70972170819962, + 2.82423562278964, 2.93874953737966, 3.05326345196967, 3.16777736655969, + 3.28229128114971, 3.39680519573973, 3.51131911032975, 3.62583302491977, + 3.74034693950979, 3.85486085409981, 3.96937476868983, 4.08388868327985, + 4.19840259786987, 4.31291651245989, 4.4274304270499, 4.54194434163992, + 4.65645825622994, 4.77097217081996, 4.88548608540998, 5, + 2.42301499289852, 2.53505781929423, 2.64710064568995, 2.75914347208567, + 2.87118629848138, 2.9832291248771, 3.09527195127282, 3.20731477766853, + 3.31935760406425, 3.43140043045997, 3.54344325685568, 3.6554860832514, + 3.76752890964712, 3.87957173604283, 3.99161456243855, 4.10365738883427, + 4.21570021522998, 4.3277430416257, 4.43978586802142, 4.55182869441713, + 4.66387152081285, 4.77591434720857, 4.88795717360428, 5, + 2.47483305509168, 2.5846229222616, 2.69441278943153, 2.80420265660146, + 2.91399252377138, 3.02378239094131, 3.13357225811124, 3.24336212528117, + 3.35315199245109, 3.46294185962102, 3.57273172679095, 3.68252159396087, + 3.7923114611308, 3.90210132830073, 4.01189119547066, 4.12168106264058, + 4.23147092981051, 4.34126079698044, 4.45105066415036, 4.56084053132029, + 4.67063039849022, 4.78042026566015, 4.89021013283007, 5, + 2.52151676643171, 2.62927690702164, 2.73703704761156, 2.84479718820149, + 2.95255732879142, 3.06031746938134, 3.16807760997127, 3.27583775056119, + 3.38359789115112, 3.49135803174104, 3.59911817233097, 3.70687831292089, + 3.81463845351082, 3.92239859410074, 4.03015873469067, 4.1379188752806, + 4.24567901587052, 4.35343915646045, 4.46119929705037, 4.5689594376403, + 4.67671957823022, 4.78447971882015, 4.89223985941007, 5, + 2.56296037329738, 2.66891861793663, 2.77487686257587, 2.88083510721511, + 2.98679335185436, 3.0927515964936, 3.19870984113285, 3.30466808577209, + 3.41062633041134, 3.51658457505058, 3.62254281968982, 3.72850106432907, + 3.83445930896831, 3.94041755360756, 4.0463757982468, 4.15233404288605, + 4.25829228752529, 4.36425053216453, 4.47020877680378, 4.57616702144302, + 4.68212526608227, 4.78808351072151, 4.89404175536076, 5, + 2.59906999258946, 2.70345825378122, 2.80784651497298, 2.91223477616474, + 3.01662303735651, 3.12101129854827, 3.22539955974003, 3.3297878209318, + 3.43417608212356, 3.53856434331532, 3.64295260450708, 3.74734086569885, + 3.85172912689061, 3.95611738808237, 4.06050564927413, 4.1648939104659, + 4.26928217165766, 4.37367043284942, 4.47805869404119, 4.58244695523295, + 4.68683521642471, 4.79122347761647, 4.89561173880824, 5, + 2.62976382440616, 2.73281757117111, 2.83587131793606, 2.93892506470101, + 3.04197881146596, 3.14503255823091, 3.24808630499586, 3.35114005176081, + 3.45419379852575, 3.5572475452907, 3.66030129205565, 3.7633550388206, + 3.86640878558555, 3.9694625323505, 4.07251627911545, 4.1755700258804, + 4.27862377264535, 4.3816775194103, 4.48473126617525, 4.5877850129402, + 4.69083875970515, 4.7938925064701, 4.89694625323505, 5, 2.65497233734624, + 2.75693006180945, 2.85888778627266, 2.96084551073586, 3.06280323519907, + 3.16476095966228, 3.26671868412548, 3.36867640858869, 3.4706341330519, + 3.57259185751511, 3.67454958197831, 3.77650730644152, 3.87846503090473, + 3.98042275536793, 4.08238047983114, 4.18433820429435, 4.28629592875755, + 4.38825365322076, 4.49021137768397, 4.59216910214717, 4.69412682661038, + 4.79608455107359, 4.89804227553679, 5, 2.67463842601999, + 2.77574110314956, 2.87684378027912, 2.97794645740869, 3.07904913453825, + 3.18015181166782, 3.28125448879738, 3.38235716592695, 3.48345984305652, + 3.58456252018608, 3.68566519731565, 3.78676787444521, 3.88787055157478, + 3.98897322870434, 4.09007590583391, 4.19117858296347, 4.29228126009304, + 4.39338393722261, 4.49448661435217, 4.59558929148174, 4.6966919686113, + 4.79779464574087, 4.89889732287043, 5, 2.68871754041127, + 2.78920808213252, 2.88969862385377, 2.99018916557502, 3.09067970729627, + 3.19117024901752, 3.29166079073876, 3.39215133246001, 3.49264187418126, + 3.59313241590251, 3.69362295762376, 3.79411349934501, 3.89460404106626, + 3.99509458278751, 4.09558512450876, 4.19607566623001, 4.29656620795126, + 4.3970567496725, 4.49754729139375, 4.598037833115, 4.69852837483625, + 4.7990189165575, 4.89950945827875, 5, 2.69717778679766, 2.7973004917195, + 2.89742319664134, 2.99754590156318, 3.09766860648502, 3.19779131140687, + 3.29791401632871, 3.39803672125055, 3.49815942617239, 3.59828213109423, + 3.69840483601607, 3.79852754093791, 3.89865024585975, 3.99877295078159, + 4.09889565570343, 4.19901836062527, 4.29914106554711, 4.39926377046895, + 4.4993864753908, 4.59950918031264, 4.69963188523448, 4.79975459015632, + 4.89987729507816, 5, 2.7, 2.8, 2.9, 3, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, + 3.8, 3.9, 4, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9, 5, + 2.69717778679766, 2.7973004917195, 2.89742319664134, 2.99754590156318, + 3.09766860648502, 3.19779131140687, 3.29791401632871, 3.39803672125055, + 3.49815942617239, 3.59828213109423, 3.69840483601607, 3.79852754093791, + 3.89865024585975, 3.99877295078159, 4.09889565570343, 4.19901836062527, + 4.29914106554711, 4.39926377046895, 4.4993864753908, 4.59950918031264, + 4.69963188523448, 4.79975459015632, 4.89987729507816, 5, + 2.68871754041127, 2.78920808213252, 2.88969862385377, 2.99018916557502, + 3.09067970729627, 3.19117024901752, 3.29166079073876, 3.39215133246001, + 3.49264187418126, 3.59313241590251, 3.69362295762376, 3.79411349934501, + 3.89460404106626, 3.99509458278751, 4.09558512450876, 4.19607566623001, + 4.29656620795126, 4.3970567496725, 4.49754729139375, 4.598037833115, + 4.69852837483625, 4.7990189165575, 4.89950945827875, 5, 2.67463842601999, + 2.77574110314956, 2.87684378027912, 2.97794645740869, 3.07904913453825, + 3.18015181166782, 3.28125448879738, 3.38235716592695, 3.48345984305652, + 3.58456252018608, 3.68566519731565, 3.78676787444521, 3.88787055157478, + 3.98897322870434, 4.09007590583391, 4.19117858296347, 4.29228126009304, + 4.39338393722261, 4.49448661435217, 4.59558929148174, 4.6966919686113, + 4.79779464574087, 4.89889732287043, 5, 2.65497233734624, + 2.75693006180945, 2.85888778627266, 2.96084551073586, 3.06280323519907, + 3.16476095966228, 3.26671868412548, 3.36867640858869, 3.4706341330519, + 3.57259185751511, 3.67454958197831, 3.77650730644152, 3.87846503090473, + 3.98042275536793, 4.08238047983114, 4.18433820429435, 4.28629592875755, + 4.38825365322076, 4.49021137768397, 4.59216910214717, 4.69412682661038, + 4.79608455107359, 4.89804227553679, 5, 2.62976382440616, + 2.73281757117111, 2.83587131793606, 2.93892506470101, 3.04197881146596, + 3.14503255823091, 3.24808630499586, 3.35114005176081, 3.45419379852576, + 3.5572475452907, 3.66030129205565, 3.7633550388206, 3.86640878558555, + 3.9694625323505, 4.07251627911545, 4.1755700258804, 4.27862377264535, + 4.3816775194103, 4.48473126617525, 4.5877850129402, 4.69083875970515, + 4.7938925064701, 4.89694625323505, 5, 2.59906999258946, 2.70345825378122, + 2.80784651497298, 2.91223477616474, 3.01662303735651, 3.12101129854827, + 3.22539955974003, 3.3297878209318, 3.43417608212356, 3.53856434331532, + 3.64295260450708, 3.74734086569885, 3.85172912689061, 3.95611738808237, + 4.06050564927413, 4.1648939104659, 4.26928217165766, 4.37367043284942, + 4.47805869404119, 4.58244695523295, 4.68683521642471, 4.79122347761647, + 4.89561173880824, 5, 2.56296037329738, 2.66891861793663, + 2.77487686257587, 2.88083510721512, 2.98679335185436, 3.0927515964936, + 3.19870984113285, 3.30466808577209, 3.41062633041134, 3.51658457505058, + 3.62254281968983, 3.72850106432907, 3.83445930896831, 3.94041755360756, + 4.0463757982468, 4.15233404288605, 4.25829228752529, 4.36425053216453, + 4.47020877680378, 4.57616702144302, 4.68212526608227, 4.78808351072151, + 4.89404175536076, 5, 2.52151676643172, 2.62927690702164, + 2.73703704761157, 2.84479718820149, 2.95255732879142, 3.06031746938134, + 3.16807760997127, 3.27583775056119, 3.38359789115112, 3.49135803174104, + 3.59911817233097, 3.70687831292089, 3.81463845351082, 3.92239859410075, + 4.03015873469067, 4.1379188752806, 4.24567901587052, 4.35343915646045, + 4.46119929705037, 4.5689594376403, 4.67671957823022, 4.78447971882015, + 4.89223985941007, 5, 2.47483305509168, 2.5846229222616, 2.69441278943153, + 2.80420265660146, 2.91399252377138, 3.02378239094131, 3.13357225811124, + 3.24336212528117, 3.35315199245109, 3.46294185962102, 3.57273172679095, + 3.68252159396087, 3.7923114611308, 3.90210132830073, 4.01189119547066, + 4.12168106264058, 4.23147092981051, 4.34126079698044, 4.45105066415036, + 4.56084053132029, 4.67063039849022, 4.78042026566015, 4.89021013283007, + 5, 2.42301499289852, 2.53505781929423, 2.64710064568995, + 2.75914347208567, 2.87118629848138, 2.9832291248771, 3.09527195127282, + 3.20731477766853, 3.31935760406425, 3.43140043045997, 3.54344325685568, + 3.6554860832514, 3.76752890964712, 3.87957173604283, 3.99161456243855, + 4.10365738883427, 4.21570021522998, 4.3277430416257, 4.43978586802142, + 4.55182869441713, 4.66387152081285, 4.77591434720857, 4.88795717360428, + 5, 2.36617996442956, 2.48069387901958, 2.5952077936096, 2.70972170819962, + 2.82423562278964, 2.93874953737966, 3.05326345196967, 3.16777736655969, + 3.28229128114971, 3.39680519573973, 3.51131911032975, 3.62583302491977, + 3.74034693950979, 3.85486085409981, 3.96937476868983, 4.08388868327985, + 4.19840259786987, 4.31291651245988, 4.4274304270499, 4.54194434163992, + 4.65645825622994, 4.77097217081996, 4.88548608540998, 5, + 2.30445671930436, 2.42165425324765, 2.53885178719094, 2.65604932113423, + 2.77324685507751, 2.8904443890208, 3.00764192296409, 3.12483945690738, + 3.24203699085067, 3.35923452479396, 3.47643205873725, 3.59362959268054, + 3.71082712662382, 3.82802466056711, 3.9452221945104, 4.06241972845369, + 4.17961726239698, 4.29681479634027, 4.41401233028356, 4.53120986422685, + 4.64840739817013, 4.76560493211342, 4.88280246605671, 5, + 2.23798508052542, 2.35807268571997, 2.47816029091451, 2.59824789610906, + 2.71833550130361, 2.83842310649815, 2.9585107116927, 3.07859831688725, + 3.1986859220818, 3.31877352727634, 3.43886113247089, 3.55894873766544, + 3.67903634285998, 3.79912394805453, 3.91921155324908, 4.03929915844362, + 4.15938676363817, 4.27947436883272, 4.39956197402727, 4.51964957922181, + 4.63973718441636, 4.75982478961091, 4.87991239480545, 5, + 2.16691562773411, 2.29009320913698, 2.41327079053984, 2.53644837194271, + 2.65962595334557, 2.78280353474844, 2.9059811161513, 3.02915869755417, + 3.15233627895703, 3.27551386035989, 3.39869144176276, 3.52186902316562, + 3.64504660456849, 3.76822418597135, 3.89140176737422, 4.01457934877708, + 4.13775693017995, 4.26093451158281, 4.38411209298568, 4.50728967438854, + 4.63046725579141, 4.75364483719427, 4.87682241859714, 5, + 2.09140935609936, 2.21786981887765, 2.34433028165594, 2.47079074443423, + 2.59725120721252, 2.7237116699908, 2.85017213276909, 2.97663259554738, + 3.10309305832567, 3.22955352110396, 3.35601398388225, 3.48247444666054, + 3.60893490943882, 3.73539537221711, 3.8618558349954, 3.98831629777369, + 4.11477676055198, 4.24123722333027, 4.36769768610856, 4.49415814888685, + 4.62061861166513, 4.74707907444342, 4.87353953722171, 5, 2.0116373116118, + 2.14156612415042, 2.27149493668904, 2.40142374922765, 2.53135256176627, + 2.66128137430489, 2.7912101868435, 2.92113899938212, 3.05106781192074, + 3.18099662445936, 3.31092543699797, 3.44085424953659, 3.57078306207521, + 3.70071187461383, 3.83064068715244, 3.96056949969106, 4.09049831222968, + 4.2204271247683, 4.35035593730691, 4.48028474984553, 4.61021356238415, + 4.74014237492277, 4.87007118746138, 5, 1.91515394098333, + 2.03610245211317, 2.15705096324302, 2.27799947437286, 2.3989479855027, + 2.51989649663254, 2.64084500776238, 2.76179351889223, 2.88274203002207, + 3.00369054115191, 3.12463905228175, 3.24558756341159, 3.36653607454144, + 3.48748458567128, 3.60843309680112, 3.72938160793096, 3.8503301190608, + 3.97127863019065, 4.09222714132049, 4.21317565245033, 4.33412416358017, + 4.45507267471001, 4.57602118583986, 4.6969696969697, 1.81477547016114, + 1.92691303206455, 2.03905059396795, 2.15118815587135, 2.26332571777475, + 2.37546327967816, 2.48760084158156, 2.59973840348496, 2.71187596538836, + 2.82401352729176, 2.93615108919517, 3.04828865109857, 3.16042621300197, + 3.27256377490537, 3.38470133680877, 3.49683889871218, 3.60897646061558, + 3.72111402251898, 3.83325158442238, 3.94538914632579, 4.05752670822919, + 4.16966427013259, 4.28180183203599, 4.39393939393939, 1.71070068612089, + 1.8141880080682, 1.91767533001551, 2.02116265196283, 2.12464997391014, + 2.22813729585745, 2.33162461780477, 2.43511193975208, 2.53859926169939, + 2.64208658364671, 2.74557390559402, 2.84906122754133, 2.95254854948865, + 3.05603587143596, 3.15952319338327, 3.26301051533059, 3.3664978372779, + 3.46998515922521, 3.57347248117253, 3.67695980311984, 3.78044712506715, + 3.88393444701446, 3.98742176896178, 4.09090909090909, 1.60313674917652, + 1.69812553346792, 1.79311431775932, 1.88810310205073, 1.98309188634213, + 2.07808067063353, 2.17306945492494, 2.26805823921634, 2.36304702350774, + 2.45803580779915, 2.55302459209055, 2.64801337638195, 2.74300216067336, + 2.83799094496476, 2.93297972925616, 3.02796851354756, 3.12295729783897, + 3.21794608213037, 3.31293486642177, 3.40792365071318, 3.50291243500458, + 3.59790121929598, 3.69289000358739, 3.78787878787879, 1.49229872369555, + 1.57893132200655, 1.66556392031754, 1.75219651862854, 1.83882911693954, + 1.92546171525054, 2.01209431356153, 2.09872691187253, 2.18535951018353, + 2.27199210849452, 2.35862470680552, 2.44525730511652, 2.53188990342752, + 2.61852250173851, 2.70515510004951, 2.79178769836051, 2.8784202966715, + 2.9650528949825, 3.0516854932935, 3.1383180916045, 3.22495068991549, + 3.31158328822649, 3.39821588653749, 3.48484848484848, 1.37840909090909, + 1.45681818181818, 1.53522727272727, 1.61363636363636, 1.69204545454545, + 1.77045454545454, 1.84886363636364, 1.92727272727273, 2.00568181818182, + 2.08409090909091, 2.1625, 2.24090909090909, 2.31931818181818, + 2.39772727272727, 2.47613636363636, 2.55454545454545, 2.63295454545455, + 2.71136363636364, 2.78977272727273, 2.86818181818182, 2.94659090909091, + 3.025, 3.10340909090909, 3.18181818181818, 1.26169724492029, + 1.33200553334932, 1.40231382177834, 1.47262211020737, 1.5429303986364, + 1.61323868706542, 1.68354697549445, 1.75385526392347, 1.8241635523525, + 1.89447184078152, 1.96478012921055, 2.03508841763957, 2.1053967060686, + 2.17570499449762, 2.24601328292665, 2.31632157135568, 2.3866298597847, + 2.45693814821373, 2.52724643664275, 2.59755472507178, 2.6678630135008, + 2.73817130192983, 2.80847959035885, 2.87878787878788, 1.14239897305293, + 1.20471891230096, 1.26703885154899, 1.32935879079702, 1.39167873004504, + 1.45399866929307, 1.5163186085411, 1.57863854778913, 1.64095848703716, + 1.70327842628518, 1.76559836553321, 1.82791830478124, 1.89023824402927, + 1.9525581832773, 2.01487812252532, 2.07719806177335, 2.13951800102138, + 2.20183794026941, 2.26415787951744, 2.32647781876546, 2.38879775801349, + 2.45111769726152, 2.51343763650955, 2.57575757575758, 1.02075592171729, + 1.07518945871772, 1.12962299571815, 1.18405653271859, 1.23849006971902, + 1.29292360671946, 1.34735714371989, 1.40179068072033, 1.45622421772076, + 1.51065775472119, 1.56509129172163, 1.61952482872206, 1.6739583657225, + 1.72839190272293, 1.78282543972336, 1.8372589767238, 1.89169251372423, + 1.94612605072467, 2.0005595877251, 2.05499312472554, 2.10942666172597, + 2.1638601987264, 2.21829373572684, 2.27272727272727, 0.897015049003283, + 0.94365339338127, 0.990291737759256, 1.03693008213724, 1.08356842651523, + 1.13020677089322, 1.1768451152712, 1.22348345964919, 1.27012180402717, + 1.31676014840516, 1.36339849278315, 1.41003683716113, 1.45667518153912, + 1.50331352591711, 1.54995187029509, 1.59659021467308, 1.64322855905107, + 1.68986690342905, 1.73650524780704, 1.78314359218502, 1.82978193656301, + 1.876420280941, 1.92305862531898, 1.96969696969697, 0.771428065241007, + 0.810351482694296, 0.849274900147586, 0.888198317600876, + 0.927121735054165, 0.966045152507455, 1.00496856996074, 1.04389198741403, + 1.08281540486732, 1.12173882232061, 1.1606622397739, 1.19958565722719, + 1.23850907468048, 1.27743249213377, 1.31635590958706, 1.35527932704035, + 1.39420274449364, 1.43312616194693, 1.47204957940022, 1.51097299685351, + 1.5498964143068, 1.58881983176009, 1.62774324921338, 1.66666666666667, + 0.64425086279584, 0.675528493267167, 0.706806123738494, + 0.738083754209821, 0.769361384681148, 0.800639015152475, + 0.831916645623803, 0.86319427609513, 0.894471906566457, + 0.925749537037784, 0.957027167509111, 0.988304797980438, + 1.01958242845177, 1.05086005892309, 1.08213768939442, 1.11341531986575, + 1.14469295033707, 1.1759705808084, 1.20724821127973, 1.23852584175106, + 1.26980347222238, 1.30108110269371, 1.33235873316504, 1.36363636363636, + 0.515742936389942, 0.539432637442817, 0.563122338495692, + 0.586812039548567, 0.610501740601441, 0.634191441654316, + 0.657881142707191, 0.681570843760065, 0.70526054481294, + 0.728950245865815, 0.752639946918689, 0.776329647971564, + 0.800019349024439, 0.823709050077314, 0.847398751130188, + 0.871088452183063, 0.894778153235938, 0.918467854288812, + 0.942157555341687, 0.965847256394562, 0.989536957447436, + 1.01322665850031, 1.03691635955319, 1.06060606060606, 0.386166795263259, + 0.402315011015976, 0.418463226768694, 0.434611442521411, + 0.450759658274128, 0.466907874026846, 0.483056089779563, + 0.49920430553228, 0.515352521284998, 0.531500737037715, + 0.547648952790432, 0.56379716854315, 0.579945384295867, + 0.596093600048584, 0.612241815801302, 0.628390031554019, + 0.644538247306736, 0.660686463059454, 0.676834678812171, + 0.692982894564888, 0.709131110317606, 0.725279326070323, + 0.74142754182304, 0.757575757575758, 0.255787368505649, + 0.264429024420423, 0.273070680335197, 0.281712336249971, + 0.290353992164746, 0.29899564807952, 0.307637303994294, + 0.316278959909068, 0.324920615823842, 0.333562271738616, + 0.342203927653391, 0.350845583568165, 0.359487239482939, + 0.368128895397713, 0.376770551312487, 0.385412207227262, + 0.394053863142036, 0.40269551905681, 0.411337174971584, + 0.419978830886358, 0.428620486801132, 0.437262142715907, + 0.445903798630681, 0.454545454545455, 0.12487140490729, 0.12602982867285, + 0.127188252438409, 0.128346676203968, 0.129505099969527, + 0.130663523735086, 0.131821947500645, 0.132980371266205, + 0.134138795031764, 0.135297218797323, 0.136455642562882, + 0.137614066328441, 0.138772490094001, 0.13993091385956, + 0.141089337625119, 0.142247761390678, 0.143406185156237, + 0.144564608921796, 0.145723032687356, 0.146881456452915, + 0.148039880218474, 0.149198303984033, 0.150356727749592, 0.151515151515151 ; + + eb_names = + "" ; + + ss_names = + "" ; + + coor_names = + "x", + "y" ; + + connect1 = + 1, 2, 3, 4, + 2, 5, 6, 3, + 5, 7, 8, 6, + 7, 9, 10, 8, + 9, 11, 12, 10, + 11, 13, 14, 12, + 13, 15, 16, 14, + 15, 17, 18, 16, + 17, 19, 20, 18, + 19, 21, 22, 20, + 21, 23, 24, 22, + 23, 25, 26, 24, + 25, 27, 28, 26, + 27, 29, 30, 28, + 29, 31, 32, 30, + 31, 33, 34, 32, + 33, 35, 36, 34, + 35, 37, 38, 36, + 37, 39, 40, 38, + 39, 41, 42, 40, + 41, 43, 44, 42, + 43, 45, 46, 44, + 45, 47, 48, 46, + 47, 49, 50, 48, + 49, 51, 52, 50, + 51, 53, 54, 52, + 53, 55, 56, 54, + 55, 57, 58, 56, + 57, 59, 60, 58, + 59, 61, 62, 60, + 61, 63, 64, 62, + 63, 65, 66, 64, + 65, 67, 68, 66, + 4, 3, 69, 70, + 3, 6, 71, 69, + 6, 8, 72, 71, + 8, 10, 73, 72, + 10, 12, 74, 73, + 12, 14, 75, 74, + 14, 16, 76, 75, + 16, 18, 77, 76, + 18, 20, 78, 77, + 20, 22, 79, 78, + 22, 24, 80, 79, + 24, 26, 81, 80, + 26, 28, 82, 81, + 28, 30, 83, 82, + 30, 32, 84, 83, + 32, 34, 85, 84, + 34, 36, 86, 85, + 36, 38, 87, 86, + 38, 40, 88, 87, + 40, 42, 89, 88, + 42, 44, 90, 89, + 44, 46, 91, 90, + 46, 48, 92, 91, + 48, 50, 93, 92, + 50, 52, 94, 93, + 52, 54, 95, 94, + 54, 56, 96, 95, + 56, 58, 97, 96, + 58, 60, 98, 97, + 60, 62, 99, 98, + 62, 64, 100, 99, + 64, 66, 101, 100, + 66, 68, 102, 101, + 70, 69, 103, 104, + 69, 71, 105, 103, + 71, 72, 106, 105, + 72, 73, 107, 106, + 73, 74, 108, 107, + 74, 75, 109, 108, + 75, 76, 110, 109, + 76, 77, 111, 110, + 77, 78, 112, 111, + 78, 79, 113, 112, + 79, 80, 114, 113, + 80, 81, 115, 114, + 81, 82, 116, 115, + 82, 83, 117, 116, + 83, 84, 118, 117, + 84, 85, 119, 118, + 85, 86, 120, 119, + 86, 87, 121, 120, + 87, 88, 122, 121, + 88, 89, 123, 122, + 89, 90, 124, 123, + 90, 91, 125, 124, + 91, 92, 126, 125, + 92, 93, 127, 126, + 93, 94, 128, 127, + 94, 95, 129, 128, + 95, 96, 130, 129, + 96, 97, 131, 130, + 97, 98, 132, 131, + 98, 99, 133, 132, + 99, 100, 134, 133, + 100, 101, 135, 134, + 101, 102, 136, 135, + 104, 103, 137, 138, + 103, 105, 139, 137, + 105, 106, 140, 139, + 106, 107, 141, 140, + 107, 108, 142, 141, + 108, 109, 143, 142, + 109, 110, 144, 143, + 110, 111, 145, 144, + 111, 112, 146, 145, + 112, 113, 147, 146, + 113, 114, 148, 147, + 114, 115, 149, 148, + 115, 116, 150, 149, + 116, 117, 151, 150, + 117, 118, 152, 151, + 118, 119, 153, 152, + 119, 120, 154, 153, + 120, 121, 155, 154, + 121, 122, 156, 155, + 122, 123, 157, 156, + 123, 124, 158, 157, + 124, 125, 159, 158, + 125, 126, 160, 159, + 126, 127, 161, 160, + 127, 128, 162, 161, + 128, 129, 163, 162, + 129, 130, 164, 163, + 130, 131, 165, 164, + 131, 132, 166, 165, + 132, 133, 167, 166, + 133, 134, 168, 167, + 134, 135, 169, 168, + 135, 136, 170, 169, + 138, 137, 171, 172, + 137, 139, 173, 171, + 139, 140, 174, 173, + 140, 141, 175, 174, + 141, 142, 176, 175, + 142, 143, 177, 176, + 143, 144, 178, 177, + 144, 145, 179, 178, + 145, 146, 180, 179, + 146, 147, 181, 180, + 147, 148, 182, 181, + 148, 149, 183, 182, + 149, 150, 184, 183, + 150, 151, 185, 184, + 151, 152, 186, 185, + 152, 153, 187, 186, + 153, 154, 188, 187, + 154, 155, 189, 188, + 155, 156, 190, 189, + 156, 157, 191, 190, + 157, 158, 192, 191, + 158, 159, 193, 192, + 159, 160, 194, 193, + 160, 161, 195, 194, + 161, 162, 196, 195, + 162, 163, 197, 196, + 163, 164, 198, 197, + 164, 165, 199, 198, + 165, 166, 200, 199, + 166, 167, 201, 200, + 167, 168, 202, 201, + 168, 169, 203, 202, + 169, 170, 204, 203, + 172, 171, 205, 206, + 171, 173, 207, 205, + 173, 174, 208, 207, + 174, 175, 209, 208, + 175, 176, 210, 209, + 176, 177, 211, 210, + 177, 178, 212, 211, + 178, 179, 213, 212, + 179, 180, 214, 213, + 180, 181, 215, 214, + 181, 182, 216, 215, + 182, 183, 217, 216, + 183, 184, 218, 217, + 184, 185, 219, 218, + 185, 186, 220, 219, + 186, 187, 221, 220, + 187, 188, 222, 221, + 188, 189, 223, 222, + 189, 190, 224, 223, + 190, 191, 225, 224, + 191, 192, 226, 225, + 192, 193, 227, 226, + 193, 194, 228, 227, + 194, 195, 229, 228, + 195, 196, 230, 229, + 196, 197, 231, 230, + 197, 198, 232, 231, + 198, 199, 233, 232, + 199, 200, 234, 233, + 200, 201, 235, 234, + 201, 202, 236, 235, + 202, 203, 237, 236, + 203, 204, 238, 237, + 206, 205, 239, 240, + 205, 207, 241, 239, + 207, 208, 242, 241, + 208, 209, 243, 242, + 209, 210, 244, 243, + 210, 211, 245, 244, + 211, 212, 246, 245, + 212, 213, 247, 246, + 213, 214, 248, 247, + 214, 215, 249, 248, + 215, 216, 250, 249, + 216, 217, 251, 250, + 217, 218, 252, 251, + 218, 219, 253, 252, + 219, 220, 254, 253, + 220, 221, 255, 254, + 221, 222, 256, 255, + 222, 223, 257, 256, + 223, 224, 258, 257, + 224, 225, 259, 258, + 225, 226, 260, 259, + 226, 227, 261, 260, + 227, 228, 262, 261, + 228, 229, 263, 262, + 229, 230, 264, 263, + 230, 231, 265, 264, + 231, 232, 266, 265, + 232, 233, 267, 266, + 233, 234, 268, 267, + 234, 235, 269, 268, + 235, 236, 270, 269, + 236, 237, 271, 270, + 237, 238, 272, 271, + 240, 239, 273, 274, + 239, 241, 275, 273, + 241, 242, 276, 275, + 242, 243, 277, 276, + 243, 244, 278, 277, + 244, 245, 279, 278, + 245, 246, 280, 279, + 246, 247, 281, 280, + 247, 248, 282, 281, + 248, 249, 283, 282, + 249, 250, 284, 283, + 250, 251, 285, 284, + 251, 252, 286, 285, + 252, 253, 287, 286, + 253, 254, 288, 287, + 254, 255, 289, 288, + 255, 256, 290, 289, + 256, 257, 291, 290, + 257, 258, 292, 291, + 258, 259, 293, 292, + 259, 260, 294, 293, + 260, 261, 295, 294, + 261, 262, 296, 295, + 262, 263, 297, 296, + 263, 264, 298, 297, + 264, 265, 299, 298, + 265, 266, 300, 299, + 266, 267, 301, 300, + 267, 268, 302, 301, + 268, 269, 303, 302, + 269, 270, 304, 303, + 270, 271, 305, 304, + 271, 272, 306, 305, + 274, 273, 307, 308, + 273, 275, 309, 307, + 275, 276, 310, 309, + 276, 277, 311, 310, + 277, 278, 312, 311, + 278, 279, 313, 312, + 279, 280, 314, 313, + 280, 281, 315, 314, + 281, 282, 316, 315, + 282, 283, 317, 316, + 283, 284, 318, 317, + 284, 285, 319, 318, + 285, 286, 320, 319, + 286, 287, 321, 320, + 287, 288, 322, 321, + 288, 289, 323, 322, + 289, 290, 324, 323, + 290, 291, 325, 324, + 291, 292, 326, 325, + 292, 293, 327, 326, + 293, 294, 328, 327, + 294, 295, 329, 328, + 295, 296, 330, 329, + 296, 297, 331, 330, + 297, 298, 332, 331, + 298, 299, 333, 332, + 299, 300, 334, 333, + 300, 301, 335, 334, + 301, 302, 336, 335, + 302, 303, 337, 336, + 303, 304, 338, 337, + 304, 305, 339, 338, + 305, 306, 340, 339, + 308, 307, 341, 342, + 307, 309, 343, 341, + 309, 310, 344, 343, + 310, 311, 345, 344, + 311, 312, 346, 345, + 312, 313, 347, 346, + 313, 314, 348, 347, + 314, 315, 349, 348, + 315, 316, 350, 349, + 316, 317, 351, 350, + 317, 318, 352, 351, + 318, 319, 353, 352, + 319, 320, 354, 353, + 320, 321, 355, 354, + 321, 322, 356, 355, + 322, 323, 357, 356, + 323, 324, 358, 357, + 324, 325, 359, 358, + 325, 326, 360, 359, + 326, 327, 361, 360, + 327, 328, 362, 361, + 328, 329, 363, 362, + 329, 330, 364, 363, + 330, 331, 365, 364, + 331, 332, 366, 365, + 332, 333, 367, 366, + 333, 334, 368, 367, + 334, 335, 369, 368, + 335, 336, 370, 369, + 336, 337, 371, 370, + 337, 338, 372, 371, + 338, 339, 373, 372, + 339, 340, 374, 373, + 342, 341, 375, 376, + 341, 343, 377, 375, + 343, 344, 378, 377, + 344, 345, 379, 378, + 345, 346, 380, 379, + 346, 347, 381, 380, + 347, 348, 382, 381, + 348, 349, 383, 382, + 349, 350, 384, 383, + 350, 351, 385, 384, + 351, 352, 386, 385, + 352, 353, 387, 386, + 353, 354, 388, 387, + 354, 355, 389, 388, + 355, 356, 390, 389, + 356, 357, 391, 390, + 357, 358, 392, 391, + 358, 359, 393, 392, + 359, 360, 394, 393, + 360, 361, 395, 394, + 361, 362, 396, 395, + 362, 363, 397, 396, + 363, 364, 398, 397, + 364, 365, 399, 398, + 365, 366, 400, 399, + 366, 367, 401, 400, + 367, 368, 402, 401, + 368, 369, 403, 402, + 369, 370, 404, 403, + 370, 371, 405, 404, + 371, 372, 406, 405, + 372, 373, 407, 406, + 373, 374, 408, 407, + 376, 375, 409, 410, + 375, 377, 411, 409, + 377, 378, 412, 411, + 378, 379, 413, 412, + 379, 380, 414, 413, + 380, 381, 415, 414, + 381, 382, 416, 415, + 382, 383, 417, 416, + 383, 384, 418, 417, + 384, 385, 419, 418, + 385, 386, 420, 419, + 386, 387, 421, 420, + 387, 388, 422, 421, + 388, 389, 423, 422, + 389, 390, 424, 423, + 390, 391, 425, 424, + 391, 392, 426, 425, + 392, 393, 427, 426, + 393, 394, 428, 427, + 394, 395, 429, 428, + 395, 396, 430, 429, + 396, 397, 431, 430, + 397, 398, 432, 431, + 398, 399, 433, 432, + 399, 400, 434, 433, + 400, 401, 435, 434, + 401, 402, 436, 435, + 402, 403, 437, 436, + 403, 404, 438, 437, + 404, 405, 439, 438, + 405, 406, 440, 439, + 406, 407, 441, 440, + 407, 408, 442, 441, + 410, 409, 443, 444, + 409, 411, 445, 443, + 411, 412, 446, 445, + 412, 413, 447, 446, + 413, 414, 448, 447, + 414, 415, 449, 448, + 415, 416, 450, 449, + 416, 417, 451, 450, + 417, 418, 452, 451, + 418, 419, 453, 452, + 419, 420, 454, 453, + 420, 421, 455, 454, + 421, 422, 456, 455, + 422, 423, 457, 456, + 423, 424, 458, 457, + 424, 425, 459, 458, + 425, 426, 460, 459, + 426, 427, 461, 460, + 427, 428, 462, 461, + 428, 429, 463, 462, + 429, 430, 464, 463, + 430, 431, 465, 464, + 431, 432, 466, 465, + 432, 433, 467, 466, + 433, 434, 468, 467, + 434, 435, 469, 468, + 435, 436, 470, 469, + 436, 437, 471, 470, + 437, 438, 472, 471, + 438, 439, 473, 472, + 439, 440, 474, 473, + 440, 441, 475, 474, + 441, 442, 476, 475, + 444, 443, 477, 478, + 443, 445, 479, 477, + 445, 446, 480, 479, + 446, 447, 481, 480, + 447, 448, 482, 481, + 448, 449, 483, 482, + 449, 450, 484, 483, + 450, 451, 485, 484, + 451, 452, 486, 485, + 452, 453, 487, 486, + 453, 454, 488, 487, + 454, 455, 489, 488, + 455, 456, 490, 489, + 456, 457, 491, 490, + 457, 458, 492, 491, + 458, 459, 493, 492, + 459, 460, 494, 493, + 460, 461, 495, 494, + 461, 462, 496, 495, + 462, 463, 497, 496, + 463, 464, 498, 497, + 464, 465, 499, 498, + 465, 466, 500, 499, + 466, 467, 501, 500, + 467, 468, 502, 501, + 468, 469, 503, 502, + 469, 470, 504, 503, + 470, 471, 505, 504, + 471, 472, 506, 505, + 472, 473, 507, 506, + 473, 474, 508, 507, + 474, 475, 509, 508, + 475, 476, 510, 509, + 478, 477, 511, 512, + 477, 479, 513, 511, + 479, 480, 514, 513, + 480, 481, 515, 514, + 481, 482, 516, 515, + 482, 483, 517, 516, + 483, 484, 518, 517, + 484, 485, 519, 518, + 485, 486, 520, 519, + 486, 487, 521, 520, + 487, 488, 522, 521, + 488, 489, 523, 522, + 489, 490, 524, 523, + 490, 491, 525, 524, + 491, 492, 526, 525, + 492, 493, 527, 526, + 493, 494, 528, 527, + 494, 495, 529, 528, + 495, 496, 530, 529, + 496, 497, 531, 530, + 497, 498, 532, 531, + 498, 499, 533, 532, + 499, 500, 534, 533, + 500, 501, 535, 534, + 501, 502, 536, 535, + 502, 503, 537, 536, + 503, 504, 538, 537, + 504, 505, 539, 538, + 505, 506, 540, 539, + 506, 507, 541, 540, + 507, 508, 542, 541, + 508, 509, 543, 542, + 509, 510, 544, 543, + 512, 511, 545, 546, + 511, 513, 547, 545, + 513, 514, 548, 547, + 514, 515, 549, 548, + 515, 516, 550, 549, + 516, 517, 551, 550, + 517, 518, 552, 551, + 518, 519, 553, 552, + 519, 520, 554, 553, + 520, 521, 555, 554, + 521, 522, 556, 555, + 522, 523, 557, 556, + 523, 524, 558, 557, + 524, 525, 559, 558, + 525, 526, 560, 559, + 526, 527, 561, 560, + 527, 528, 562, 561, + 528, 529, 563, 562, + 529, 530, 564, 563, + 530, 531, 565, 564, + 531, 532, 566, 565, + 532, 533, 567, 566, + 533, 534, 568, 567, + 534, 535, 569, 568, + 535, 536, 570, 569, + 536, 537, 571, 570, + 537, 538, 572, 571, + 538, 539, 573, 572, + 539, 540, 574, 573, + 540, 541, 575, 574, + 541, 542, 576, 575, + 542, 543, 577, 576, + 543, 544, 578, 577, + 546, 545, 579, 580, + 545, 547, 581, 579, + 547, 548, 582, 581, + 548, 549, 583, 582, + 549, 550, 584, 583, + 550, 551, 585, 584, + 551, 552, 586, 585, + 552, 553, 587, 586, + 553, 554, 588, 587, + 554, 555, 589, 588, + 555, 556, 590, 589, + 556, 557, 591, 590, + 557, 558, 592, 591, + 558, 559, 593, 592, + 559, 560, 594, 593, + 560, 561, 595, 594, + 561, 562, 596, 595, + 562, 563, 597, 596, + 563, 564, 598, 597, + 564, 565, 599, 598, + 565, 566, 600, 599, + 566, 567, 601, 600, + 567, 568, 602, 601, + 568, 569, 603, 602, + 569, 570, 604, 603, + 570, 571, 605, 604, + 571, 572, 606, 605, + 572, 573, 607, 606, + 573, 574, 608, 607, + 574, 575, 609, 608, + 575, 576, 610, 609, + 576, 577, 611, 610, + 577, 578, 612, 611, + 580, 579, 613, 614, + 579, 581, 615, 613, + 581, 582, 616, 615, + 582, 583, 617, 616, + 583, 584, 618, 617, + 584, 585, 619, 618, + 585, 586, 620, 619, + 586, 587, 621, 620, + 587, 588, 622, 621, + 588, 589, 623, 622, + 589, 590, 624, 623, + 590, 591, 625, 624, + 591, 592, 626, 625, + 592, 593, 627, 626, + 593, 594, 628, 627, + 594, 595, 629, 628, + 595, 596, 630, 629, + 596, 597, 631, 630, + 597, 598, 632, 631, + 598, 599, 633, 632, + 599, 600, 634, 633, + 600, 601, 635, 634, + 601, 602, 636, 635, + 602, 603, 637, 636, + 603, 604, 638, 637, + 604, 605, 639, 638, + 605, 606, 640, 639, + 606, 607, 641, 640, + 607, 608, 642, 641, + 608, 609, 643, 642, + 609, 610, 644, 643, + 610, 611, 645, 644, + 611, 612, 646, 645, + 629, 630, 647, 628, + 630, 631, 648, 647, + 631, 632, 649, 648, + 632, 633, 650, 649, + 633, 634, 651, 650, + 634, 635, 652, 651, + 635, 636, 653, 652, + 636, 637, 654, 653, + 637, 638, 655, 654, + 638, 639, 656, 655, + 639, 640, 657, 656, + 640, 641, 658, 657, + 641, 642, 659, 658, + 642, 643, 660, 659, + 643, 644, 661, 660, + 644, 645, 662, 661, + 645, 646, 663, 662, + 628, 647, 664, 627, + 647, 648, 665, 664, + 648, 649, 666, 665, + 649, 650, 667, 666, + 650, 651, 668, 667, + 651, 652, 669, 668, + 652, 653, 670, 669, + 653, 654, 671, 670, + 654, 655, 672, 671, + 655, 656, 673, 672, + 656, 657, 674, 673, + 657, 658, 675, 674, + 658, 659, 676, 675, + 659, 660, 677, 676, + 660, 661, 678, 677, + 661, 662, 679, 678, + 662, 663, 680, 679, + 627, 664, 681, 626, + 664, 665, 682, 681, + 665, 666, 683, 682, + 666, 667, 684, 683, + 667, 668, 685, 684, + 668, 669, 686, 685, + 669, 670, 687, 686, + 670, 671, 688, 687, + 671, 672, 689, 688, + 672, 673, 690, 689, + 673, 674, 691, 690, + 674, 675, 692, 691, + 675, 676, 693, 692, + 676, 677, 694, 693, + 677, 678, 695, 694, + 678, 679, 696, 695, + 679, 680, 697, 696, + 626, 681, 698, 625, + 681, 682, 699, 698, + 682, 683, 700, 699, + 683, 684, 701, 700, + 684, 685, 702, 701, + 685, 686, 703, 702, + 686, 687, 704, 703, + 687, 688, 705, 704, + 688, 689, 706, 705, + 689, 690, 707, 706, + 690, 691, 708, 707, + 691, 692, 709, 708, + 692, 693, 710, 709, + 693, 694, 711, 710, + 694, 695, 712, 711, + 695, 696, 713, 712, + 696, 697, 714, 713, + 625, 698, 715, 624, + 698, 699, 716, 715, + 699, 700, 717, 716, + 700, 701, 718, 717, + 701, 702, 719, 718, + 702, 703, 720, 719, + 703, 704, 721, 720, + 704, 705, 722, 721, + 705, 706, 723, 722, + 706, 707, 724, 723, + 707, 708, 725, 724, + 708, 709, 726, 725, + 709, 710, 727, 726, + 710, 711, 728, 727, + 711, 712, 729, 728, + 712, 713, 730, 729, + 713, 714, 731, 730, + 624, 715, 732, 623, + 715, 716, 733, 732, + 716, 717, 734, 733, + 717, 718, 735, 734, + 718, 719, 736, 735, + 719, 720, 737, 736, + 720, 721, 738, 737, + 721, 722, 739, 738, + 722, 723, 740, 739, + 723, 724, 741, 740, + 724, 725, 742, 741, + 725, 726, 743, 742, + 726, 727, 744, 743, + 727, 728, 745, 744, + 728, 729, 746, 745, + 729, 730, 747, 746, + 730, 731, 748, 747, + 623, 732, 749, 622, + 732, 733, 750, 749, + 733, 734, 751, 750, + 734, 735, 752, 751, + 735, 736, 753, 752, + 736, 737, 754, 753, + 737, 738, 755, 754, + 738, 739, 756, 755, + 739, 740, 757, 756, + 740, 741, 758, 757, + 741, 742, 759, 758, + 742, 743, 760, 759, + 743, 744, 761, 760, + 744, 745, 762, 761, + 745, 746, 763, 762, + 746, 747, 764, 763, + 747, 748, 765, 764, + 622, 749, 766, 621, + 749, 750, 767, 766, + 750, 751, 768, 767, + 751, 752, 769, 768, + 752, 753, 770, 769, + 753, 754, 771, 770, + 754, 755, 772, 771, + 755, 756, 773, 772, + 756, 757, 774, 773, + 757, 758, 775, 774, + 758, 759, 776, 775, + 759, 760, 777, 776, + 760, 761, 778, 777, + 761, 762, 779, 778, + 762, 763, 780, 779, + 763, 764, 781, 780, + 764, 765, 782, 781, + 621, 766, 783, 620, + 766, 767, 784, 783, + 767, 768, 785, 784, + 768, 769, 786, 785, + 769, 770, 787, 786, + 770, 771, 788, 787, + 771, 772, 789, 788, + 772, 773, 790, 789, + 773, 774, 791, 790, + 774, 775, 792, 791, + 775, 776, 793, 792, + 776, 777, 794, 793, + 777, 778, 795, 794, + 778, 779, 796, 795, + 779, 780, 797, 796, + 780, 781, 798, 797, + 781, 782, 799, 798, + 620, 783, 800, 619, + 783, 784, 801, 800, + 784, 785, 802, 801, + 785, 786, 803, 802, + 786, 787, 804, 803, + 787, 788, 805, 804, + 788, 789, 806, 805, + 789, 790, 807, 806, + 790, 791, 808, 807, + 791, 792, 809, 808, + 792, 793, 810, 809, + 793, 794, 811, 810, + 794, 795, 812, 811, + 795, 796, 813, 812, + 796, 797, 814, 813, + 797, 798, 815, 814, + 798, 799, 816, 815, + 619, 800, 817, 618, + 800, 801, 818, 817, + 801, 802, 819, 818, + 802, 803, 820, 819, + 803, 804, 821, 820, + 804, 805, 822, 821, + 805, 806, 823, 822, + 806, 807, 824, 823, + 807, 808, 825, 824, + 808, 809, 826, 825, + 809, 810, 827, 826, + 810, 811, 828, 827, + 811, 812, 829, 828, + 812, 813, 830, 829, + 813, 814, 831, 830, + 814, 815, 832, 831, + 815, 816, 833, 832, + 618, 817, 834, 617, + 817, 818, 835, 834, + 818, 819, 836, 835, + 819, 820, 837, 836, + 820, 821, 838, 837, + 821, 822, 839, 838, + 822, 823, 840, 839, + 823, 824, 841, 840, + 824, 825, 842, 841, + 825, 826, 843, 842, + 826, 827, 844, 843, + 827, 828, 845, 844, + 828, 829, 846, 845, + 829, 830, 847, 846, + 830, 831, 848, 847, + 831, 832, 849, 848, + 832, 833, 850, 849, + 617, 834, 851, 616, + 834, 835, 852, 851, + 835, 836, 853, 852, + 836, 837, 854, 853, + 837, 838, 855, 854, + 838, 839, 856, 855, + 839, 840, 857, 856, + 840, 841, 858, 857, + 841, 842, 859, 858, + 842, 843, 860, 859, + 843, 844, 861, 860, + 844, 845, 862, 861, + 845, 846, 863, 862, + 846, 847, 864, 863, + 847, 848, 865, 864, + 848, 849, 866, 865, + 849, 850, 867, 866, + 616, 851, 868, 615, + 851, 852, 869, 868, + 852, 853, 870, 869, + 853, 854, 871, 870, + 854, 855, 872, 871, + 855, 856, 873, 872, + 856, 857, 874, 873, + 857, 858, 875, 874, + 858, 859, 876, 875, + 859, 860, 877, 876, + 860, 861, 878, 877, + 861, 862, 879, 878, + 862, 863, 880, 879, + 863, 864, 881, 880, + 864, 865, 882, 881, + 865, 866, 883, 882, + 866, 867, 884, 883, + 615, 868, 885, 613, + 868, 869, 886, 885, + 869, 870, 887, 886, + 870, 871, 888, 887, + 871, 872, 889, 888, + 872, 873, 890, 889, + 873, 874, 891, 890, + 874, 875, 892, 891, + 875, 876, 893, 892, + 876, 877, 894, 893, + 877, 878, 895, 894, + 878, 879, 896, 895, + 879, 880, 897, 896, + 880, 881, 898, 897, + 881, 882, 899, 898, + 882, 883, 900, 899, + 883, 884, 901, 900, + 613, 885, 902, 614, + 885, 886, 903, 902, + 886, 887, 904, 903, + 887, 888, 905, 904, + 888, 889, 906, 905, + 889, 890, 907, 906, + 890, 891, 908, 907, + 891, 892, 909, 908, + 892, 893, 910, 909, + 893, 894, 911, 910, + 894, 895, 912, 911, + 895, 896, 913, 912, + 896, 897, 914, 913, + 897, 898, 915, 914, + 898, 899, 916, 915, + 899, 900, 917, 916, + 900, 901, 918, 917, + 67, 919, 920, 68, + 919, 921, 922, 920, + 921, 923, 924, 922, + 923, 925, 926, 924, + 925, 927, 928, 926, + 927, 929, 930, 928, + 929, 931, 932, 930, + 931, 933, 934, 932, + 933, 935, 936, 934, + 935, 937, 938, 936, + 937, 939, 940, 938, + 939, 941, 942, 940, + 941, 943, 944, 942, + 943, 945, 946, 944, + 945, 947, 948, 946, + 947, 949, 950, 948, + 949, 951, 952, 950, + 951, 953, 954, 952, + 953, 955, 956, 954, + 955, 957, 958, 956, + 957, 959, 960, 958, + 959, 961, 962, 960, + 961, 963, 964, 962, + 963, 965, 966, 964, + 965, 967, 968, 966, + 967, 969, 970, 968, + 969, 971, 972, 970, + 971, 973, 974, 972, + 973, 975, 976, 974, + 975, 977, 978, 976, + 977, 979, 980, 978, + 979, 981, 982, 980, + 981, 983, 984, 982, + 68, 920, 985, 102, + 920, 922, 986, 985, + 922, 924, 987, 986, + 924, 926, 988, 987, + 926, 928, 989, 988, + 928, 930, 990, 989, + 930, 932, 991, 990, + 932, 934, 992, 991, + 934, 936, 993, 992, + 936, 938, 994, 993, + 938, 940, 995, 994, + 940, 942, 996, 995, + 942, 944, 997, 996, + 944, 946, 998, 997, + 946, 948, 999, 998, + 948, 950, 1000, 999, + 950, 952, 1001, 1000, + 952, 954, 1002, 1001, + 954, 956, 1003, 1002, + 956, 958, 1004, 1003, + 958, 960, 1005, 1004, + 960, 962, 1006, 1005, + 962, 964, 1007, 1006, + 964, 966, 1008, 1007, + 966, 968, 1009, 1008, + 968, 970, 1010, 1009, + 970, 972, 1011, 1010, + 972, 974, 1012, 1011, + 974, 976, 1013, 1012, + 976, 978, 1014, 1013, + 978, 980, 1015, 1014, + 980, 982, 1016, 1015, + 982, 984, 1017, 1016, + 102, 985, 1018, 136, + 985, 986, 1019, 1018, + 986, 987, 1020, 1019, + 987, 988, 1021, 1020, + 988, 989, 1022, 1021, + 989, 990, 1023, 1022, + 990, 991, 1024, 1023, + 991, 992, 1025, 1024, + 992, 993, 1026, 1025, + 993, 994, 1027, 1026, + 994, 995, 1028, 1027, + 995, 996, 1029, 1028, + 996, 997, 1030, 1029, + 997, 998, 1031, 1030, + 998, 999, 1032, 1031, + 999, 1000, 1033, 1032, + 1000, 1001, 1034, 1033, + 1001, 1002, 1035, 1034, + 1002, 1003, 1036, 1035, + 1003, 1004, 1037, 1036, + 1004, 1005, 1038, 1037, + 1005, 1006, 1039, 1038, + 1006, 1007, 1040, 1039, + 1007, 1008, 1041, 1040, + 1008, 1009, 1042, 1041, + 1009, 1010, 1043, 1042, + 1010, 1011, 1044, 1043, + 1011, 1012, 1045, 1044, + 1012, 1013, 1046, 1045, + 1013, 1014, 1047, 1046, + 1014, 1015, 1048, 1047, + 1015, 1016, 1049, 1048, + 1016, 1017, 1050, 1049, + 136, 1018, 1051, 170, + 1018, 1019, 1052, 1051, + 1019, 1020, 1053, 1052, + 1020, 1021, 1054, 1053, + 1021, 1022, 1055, 1054, + 1022, 1023, 1056, 1055, + 1023, 1024, 1057, 1056, + 1024, 1025, 1058, 1057, + 1025, 1026, 1059, 1058, + 1026, 1027, 1060, 1059, + 1027, 1028, 1061, 1060, + 1028, 1029, 1062, 1061, + 1029, 1030, 1063, 1062, + 1030, 1031, 1064, 1063, + 1031, 1032, 1065, 1064, + 1032, 1033, 1066, 1065, + 1033, 1034, 1067, 1066, + 1034, 1035, 1068, 1067, + 1035, 1036, 1069, 1068, + 1036, 1037, 1070, 1069, + 1037, 1038, 1071, 1070, + 1038, 1039, 1072, 1071, + 1039, 1040, 1073, 1072, + 1040, 1041, 1074, 1073, + 1041, 1042, 1075, 1074, + 1042, 1043, 1076, 1075, + 1043, 1044, 1077, 1076, + 1044, 1045, 1078, 1077, + 1045, 1046, 1079, 1078, + 1046, 1047, 1080, 1079, + 1047, 1048, 1081, 1080, + 1048, 1049, 1082, 1081, + 1049, 1050, 1083, 1082, + 170, 1051, 1084, 204, + 1051, 1052, 1085, 1084, + 1052, 1053, 1086, 1085, + 1053, 1054, 1087, 1086, + 1054, 1055, 1088, 1087, + 1055, 1056, 1089, 1088, + 1056, 1057, 1090, 1089, + 1057, 1058, 1091, 1090, + 1058, 1059, 1092, 1091, + 1059, 1060, 1093, 1092, + 1060, 1061, 1094, 1093, + 1061, 1062, 1095, 1094, + 1062, 1063, 1096, 1095, + 1063, 1064, 1097, 1096, + 1064, 1065, 1098, 1097, + 1065, 1066, 1099, 1098, + 1066, 1067, 1100, 1099, + 1067, 1068, 1101, 1100, + 1068, 1069, 1102, 1101, + 1069, 1070, 1103, 1102, + 1070, 1071, 1104, 1103, + 1071, 1072, 1105, 1104, + 1072, 1073, 1106, 1105, + 1073, 1074, 1107, 1106, + 1074, 1075, 1108, 1107, + 1075, 1076, 1109, 1108, + 1076, 1077, 1110, 1109, + 1077, 1078, 1111, 1110, + 1078, 1079, 1112, 1111, + 1079, 1080, 1113, 1112, + 1080, 1081, 1114, 1113, + 1081, 1082, 1115, 1114, + 1082, 1083, 1116, 1115, + 204, 1084, 1117, 238, + 1084, 1085, 1118, 1117, + 1085, 1086, 1119, 1118, + 1086, 1087, 1120, 1119, + 1087, 1088, 1121, 1120, + 1088, 1089, 1122, 1121, + 1089, 1090, 1123, 1122, + 1090, 1091, 1124, 1123, + 1091, 1092, 1125, 1124, + 1092, 1093, 1126, 1125, + 1093, 1094, 1127, 1126, + 1094, 1095, 1128, 1127, + 1095, 1096, 1129, 1128, + 1096, 1097, 1130, 1129, + 1097, 1098, 1131, 1130, + 1098, 1099, 1132, 1131, + 1099, 1100, 1133, 1132, + 1100, 1101, 1134, 1133, + 1101, 1102, 1135, 1134, + 1102, 1103, 1136, 1135, + 1103, 1104, 1137, 1136, + 1104, 1105, 1138, 1137, + 1105, 1106, 1139, 1138, + 1106, 1107, 1140, 1139, + 1107, 1108, 1141, 1140, + 1108, 1109, 1142, 1141, + 1109, 1110, 1143, 1142, + 1110, 1111, 1144, 1143, + 1111, 1112, 1145, 1144, + 1112, 1113, 1146, 1145, + 1113, 1114, 1147, 1146, + 1114, 1115, 1148, 1147, + 1115, 1116, 1149, 1148, + 238, 1117, 1150, 272, + 1117, 1118, 1151, 1150, + 1118, 1119, 1152, 1151, + 1119, 1120, 1153, 1152, + 1120, 1121, 1154, 1153, + 1121, 1122, 1155, 1154, + 1122, 1123, 1156, 1155, + 1123, 1124, 1157, 1156, + 1124, 1125, 1158, 1157, + 1125, 1126, 1159, 1158, + 1126, 1127, 1160, 1159, + 1127, 1128, 1161, 1160, + 1128, 1129, 1162, 1161, + 1129, 1130, 1163, 1162, + 1130, 1131, 1164, 1163, + 1131, 1132, 1165, 1164, + 1132, 1133, 1166, 1165, + 1133, 1134, 1167, 1166, + 1134, 1135, 1168, 1167, + 1135, 1136, 1169, 1168, + 1136, 1137, 1170, 1169, + 1137, 1138, 1171, 1170, + 1138, 1139, 1172, 1171, + 1139, 1140, 1173, 1172, + 1140, 1141, 1174, 1173, + 1141, 1142, 1175, 1174, + 1142, 1143, 1176, 1175, + 1143, 1144, 1177, 1176, + 1144, 1145, 1178, 1177, + 1145, 1146, 1179, 1178, + 1146, 1147, 1180, 1179, + 1147, 1148, 1181, 1180, + 1148, 1149, 1182, 1181, + 272, 1150, 1183, 306, + 1150, 1151, 1184, 1183, + 1151, 1152, 1185, 1184, + 1152, 1153, 1186, 1185, + 1153, 1154, 1187, 1186, + 1154, 1155, 1188, 1187, + 1155, 1156, 1189, 1188, + 1156, 1157, 1190, 1189, + 1157, 1158, 1191, 1190, + 1158, 1159, 1192, 1191, + 1159, 1160, 1193, 1192, + 1160, 1161, 1194, 1193, + 1161, 1162, 1195, 1194, + 1162, 1163, 1196, 1195, + 1163, 1164, 1197, 1196, + 1164, 1165, 1198, 1197, + 1165, 1166, 1199, 1198, + 1166, 1167, 1200, 1199, + 1167, 1168, 1201, 1200, + 1168, 1169, 1202, 1201, + 1169, 1170, 1203, 1202, + 1170, 1171, 1204, 1203, + 1171, 1172, 1205, 1204, + 1172, 1173, 1206, 1205, + 1173, 1174, 1207, 1206, + 1174, 1175, 1208, 1207, + 1175, 1176, 1209, 1208, + 1176, 1177, 1210, 1209, + 1177, 1178, 1211, 1210, + 1178, 1179, 1212, 1211, + 1179, 1180, 1213, 1212, + 1180, 1181, 1214, 1213, + 1181, 1182, 1215, 1214, + 306, 1183, 1216, 340, + 1183, 1184, 1217, 1216, + 1184, 1185, 1218, 1217, + 1185, 1186, 1219, 1218, + 1186, 1187, 1220, 1219, + 1187, 1188, 1221, 1220, + 1188, 1189, 1222, 1221, + 1189, 1190, 1223, 1222, + 1190, 1191, 1224, 1223, + 1191, 1192, 1225, 1224, + 1192, 1193, 1226, 1225, + 1193, 1194, 1227, 1226, + 1194, 1195, 1228, 1227, + 1195, 1196, 1229, 1228, + 1196, 1197, 1230, 1229, + 1197, 1198, 1231, 1230, + 1198, 1199, 1232, 1231, + 1199, 1200, 1233, 1232, + 1200, 1201, 1234, 1233, + 1201, 1202, 1235, 1234, + 1202, 1203, 1236, 1235, + 1203, 1204, 1237, 1236, + 1204, 1205, 1238, 1237, + 1205, 1206, 1239, 1238, + 1206, 1207, 1240, 1239, + 1207, 1208, 1241, 1240, + 1208, 1209, 1242, 1241, + 1209, 1210, 1243, 1242, + 1210, 1211, 1244, 1243, + 1211, 1212, 1245, 1244, + 1212, 1213, 1246, 1245, + 1213, 1214, 1247, 1246, + 1214, 1215, 1248, 1247, + 340, 1216, 1249, 374, + 1216, 1217, 1250, 1249, + 1217, 1218, 1251, 1250, + 1218, 1219, 1252, 1251, + 1219, 1220, 1253, 1252, + 1220, 1221, 1254, 1253, + 1221, 1222, 1255, 1254, + 1222, 1223, 1256, 1255, + 1223, 1224, 1257, 1256, + 1224, 1225, 1258, 1257, + 1225, 1226, 1259, 1258, + 1226, 1227, 1260, 1259, + 1227, 1228, 1261, 1260, + 1228, 1229, 1262, 1261, + 1229, 1230, 1263, 1262, + 1230, 1231, 1264, 1263, + 1231, 1232, 1265, 1264, + 1232, 1233, 1266, 1265, + 1233, 1234, 1267, 1266, + 1234, 1235, 1268, 1267, + 1235, 1236, 1269, 1268, + 1236, 1237, 1270, 1269, + 1237, 1238, 1271, 1270, + 1238, 1239, 1272, 1271, + 1239, 1240, 1273, 1272, + 1240, 1241, 1274, 1273, + 1241, 1242, 1275, 1274, + 1242, 1243, 1276, 1275, + 1243, 1244, 1277, 1276, + 1244, 1245, 1278, 1277, + 1245, 1246, 1279, 1278, + 1246, 1247, 1280, 1279, + 1247, 1248, 1281, 1280, + 374, 1249, 1282, 408, + 1249, 1250, 1283, 1282, + 1250, 1251, 1284, 1283, + 1251, 1252, 1285, 1284, + 1252, 1253, 1286, 1285, + 1253, 1254, 1287, 1286, + 1254, 1255, 1288, 1287, + 1255, 1256, 1289, 1288, + 1256, 1257, 1290, 1289, + 1257, 1258, 1291, 1290, + 1258, 1259, 1292, 1291, + 1259, 1260, 1293, 1292, + 1260, 1261, 1294, 1293, + 1261, 1262, 1295, 1294, + 1262, 1263, 1296, 1295, + 1263, 1264, 1297, 1296, + 1264, 1265, 1298, 1297, + 1265, 1266, 1299, 1298, + 1266, 1267, 1300, 1299, + 1267, 1268, 1301, 1300, + 1268, 1269, 1302, 1301, + 1269, 1270, 1303, 1302, + 1270, 1271, 1304, 1303, + 1271, 1272, 1305, 1304, + 1272, 1273, 1306, 1305, + 1273, 1274, 1307, 1306, + 1274, 1275, 1308, 1307, + 1275, 1276, 1309, 1308, + 1276, 1277, 1310, 1309, + 1277, 1278, 1311, 1310, + 1278, 1279, 1312, 1311, + 1279, 1280, 1313, 1312, + 1280, 1281, 1314, 1313, + 408, 1282, 1315, 442, + 1282, 1283, 1316, 1315, + 1283, 1284, 1317, 1316, + 1284, 1285, 1318, 1317, + 1285, 1286, 1319, 1318, + 1286, 1287, 1320, 1319, + 1287, 1288, 1321, 1320, + 1288, 1289, 1322, 1321, + 1289, 1290, 1323, 1322, + 1290, 1291, 1324, 1323, + 1291, 1292, 1325, 1324, + 1292, 1293, 1326, 1325, + 1293, 1294, 1327, 1326, + 1294, 1295, 1328, 1327, + 1295, 1296, 1329, 1328, + 1296, 1297, 1330, 1329, + 1297, 1298, 1331, 1330, + 1298, 1299, 1332, 1331, + 1299, 1300, 1333, 1332, + 1300, 1301, 1334, 1333, + 1301, 1302, 1335, 1334, + 1302, 1303, 1336, 1335, + 1303, 1304, 1337, 1336, + 1304, 1305, 1338, 1337, + 1305, 1306, 1339, 1338, + 1306, 1307, 1340, 1339, + 1307, 1308, 1341, 1340, + 1308, 1309, 1342, 1341, + 1309, 1310, 1343, 1342, + 1310, 1311, 1344, 1343, + 1311, 1312, 1345, 1344, + 1312, 1313, 1346, 1345, + 1313, 1314, 1347, 1346, + 442, 1315, 1348, 476, + 1315, 1316, 1349, 1348, + 1316, 1317, 1350, 1349, + 1317, 1318, 1351, 1350, + 1318, 1319, 1352, 1351, + 1319, 1320, 1353, 1352, + 1320, 1321, 1354, 1353, + 1321, 1322, 1355, 1354, + 1322, 1323, 1356, 1355, + 1323, 1324, 1357, 1356, + 1324, 1325, 1358, 1357, + 1325, 1326, 1359, 1358, + 1326, 1327, 1360, 1359, + 1327, 1328, 1361, 1360, + 1328, 1329, 1362, 1361, + 1329, 1330, 1363, 1362, + 1330, 1331, 1364, 1363, + 1331, 1332, 1365, 1364, + 1332, 1333, 1366, 1365, + 1333, 1334, 1367, 1366, + 1334, 1335, 1368, 1367, + 1335, 1336, 1369, 1368, + 1336, 1337, 1370, 1369, + 1337, 1338, 1371, 1370, + 1338, 1339, 1372, 1371, + 1339, 1340, 1373, 1372, + 1340, 1341, 1374, 1373, + 1341, 1342, 1375, 1374, + 1342, 1343, 1376, 1375, + 1343, 1344, 1377, 1376, + 1344, 1345, 1378, 1377, + 1345, 1346, 1379, 1378, + 1346, 1347, 1380, 1379, + 476, 1348, 1381, 510, + 1348, 1349, 1382, 1381, + 1349, 1350, 1383, 1382, + 1350, 1351, 1384, 1383, + 1351, 1352, 1385, 1384, + 1352, 1353, 1386, 1385, + 1353, 1354, 1387, 1386, + 1354, 1355, 1388, 1387, + 1355, 1356, 1389, 1388, + 1356, 1357, 1390, 1389, + 1357, 1358, 1391, 1390, + 1358, 1359, 1392, 1391, + 1359, 1360, 1393, 1392, + 1360, 1361, 1394, 1393, + 1361, 1362, 1395, 1394, + 1362, 1363, 1396, 1395, + 1363, 1364, 1397, 1396, + 1364, 1365, 1398, 1397, + 1365, 1366, 1399, 1398, + 1366, 1367, 1400, 1399, + 1367, 1368, 1401, 1400, + 1368, 1369, 1402, 1401, + 1369, 1370, 1403, 1402, + 1370, 1371, 1404, 1403, + 1371, 1372, 1405, 1404, + 1372, 1373, 1406, 1405, + 1373, 1374, 1407, 1406, + 1374, 1375, 1408, 1407, + 1375, 1376, 1409, 1408, + 1376, 1377, 1410, 1409, + 1377, 1378, 1411, 1410, + 1378, 1379, 1412, 1411, + 1379, 1380, 1413, 1412, + 510, 1381, 1414, 544, + 1381, 1382, 1415, 1414, + 1382, 1383, 1416, 1415, + 1383, 1384, 1417, 1416, + 1384, 1385, 1418, 1417, + 1385, 1386, 1419, 1418, + 1386, 1387, 1420, 1419, + 1387, 1388, 1421, 1420, + 1388, 1389, 1422, 1421, + 1389, 1390, 1423, 1422, + 1390, 1391, 1424, 1423, + 1391, 1392, 1425, 1424, + 1392, 1393, 1426, 1425, + 1393, 1394, 1427, 1426, + 1394, 1395, 1428, 1427, + 1395, 1396, 1429, 1428, + 1396, 1397, 1430, 1429, + 1397, 1398, 1431, 1430, + 1398, 1399, 1432, 1431, + 1399, 1400, 1433, 1432, + 1400, 1401, 1434, 1433, + 1401, 1402, 1435, 1434, + 1402, 1403, 1436, 1435, + 1403, 1404, 1437, 1436, + 1404, 1405, 1438, 1437, + 1405, 1406, 1439, 1438, + 1406, 1407, 1440, 1439, + 1407, 1408, 1441, 1440, + 1408, 1409, 1442, 1441, + 1409, 1410, 1443, 1442, + 1410, 1411, 1444, 1443, + 1411, 1412, 1445, 1444, + 1412, 1413, 1446, 1445, + 544, 1414, 1447, 578, + 1414, 1415, 1448, 1447, + 1415, 1416, 1449, 1448, + 1416, 1417, 1450, 1449, + 1417, 1418, 1451, 1450, + 1418, 1419, 1452, 1451, + 1419, 1420, 1453, 1452, + 1420, 1421, 1454, 1453, + 1421, 1422, 1455, 1454, + 1422, 1423, 1456, 1455, + 1423, 1424, 1457, 1456, + 1424, 1425, 1458, 1457, + 1425, 1426, 1459, 1458, + 1426, 1427, 1460, 1459, + 1427, 1428, 1461, 1460, + 1428, 1429, 1462, 1461, + 1429, 1430, 1463, 1462, + 1430, 1431, 1464, 1463, + 1431, 1432, 1465, 1464, + 1432, 1433, 1466, 1465, + 1433, 1434, 1467, 1466, + 1434, 1435, 1468, 1467, + 1435, 1436, 1469, 1468, + 1436, 1437, 1470, 1469, + 1437, 1438, 1471, 1470, + 1438, 1439, 1472, 1471, + 1439, 1440, 1473, 1472, + 1440, 1441, 1474, 1473, + 1441, 1442, 1475, 1474, + 1442, 1443, 1476, 1475, + 1443, 1444, 1477, 1476, + 1444, 1445, 1478, 1477, + 1445, 1446, 1479, 1478, + 578, 1447, 1480, 612, + 1447, 1448, 1481, 1480, + 1448, 1449, 1482, 1481, + 1449, 1450, 1483, 1482, + 1450, 1451, 1484, 1483, + 1451, 1452, 1485, 1484, + 1452, 1453, 1486, 1485, + 1453, 1454, 1487, 1486, + 1454, 1455, 1488, 1487, + 1455, 1456, 1489, 1488, + 1456, 1457, 1490, 1489, + 1457, 1458, 1491, 1490, + 1458, 1459, 1492, 1491, + 1459, 1460, 1493, 1492, + 1460, 1461, 1494, 1493, + 1461, 1462, 1495, 1494, + 1462, 1463, 1496, 1495, + 1463, 1464, 1497, 1496, + 1464, 1465, 1498, 1497, + 1465, 1466, 1499, 1498, + 1466, 1467, 1500, 1499, + 1467, 1468, 1501, 1500, + 1468, 1469, 1502, 1501, + 1469, 1470, 1503, 1502, + 1470, 1471, 1504, 1503, + 1471, 1472, 1505, 1504, + 1472, 1473, 1506, 1505, + 1473, 1474, 1507, 1506, + 1474, 1475, 1508, 1507, + 1475, 1476, 1509, 1508, + 1476, 1477, 1510, 1509, + 1477, 1478, 1511, 1510, + 1478, 1479, 1512, 1511, + 612, 1480, 1513, 646, + 1480, 1481, 1514, 1513, + 1481, 1482, 1515, 1514, + 1482, 1483, 1516, 1515, + 1483, 1484, 1517, 1516, + 1484, 1485, 1518, 1517, + 1485, 1486, 1519, 1518, + 1486, 1487, 1520, 1519, + 1487, 1488, 1521, 1520, + 1488, 1489, 1522, 1521, + 1489, 1490, 1523, 1522, + 1490, 1491, 1524, 1523, + 1491, 1492, 1525, 1524, + 1492, 1493, 1526, 1525, + 1493, 1494, 1527, 1526, + 1494, 1495, 1528, 1527, + 1495, 1496, 1529, 1528, + 1496, 1497, 1530, 1529, + 1497, 1498, 1531, 1530, + 1498, 1499, 1532, 1531, + 1499, 1500, 1533, 1532, + 1500, 1501, 1534, 1533, + 1501, 1502, 1535, 1534, + 1502, 1503, 1536, 1535, + 1503, 1504, 1537, 1536, + 1504, 1505, 1538, 1537, + 1505, 1506, 1539, 1538, + 1506, 1507, 1540, 1539, + 1507, 1508, 1541, 1540, + 1508, 1509, 1542, 1541, + 1509, 1510, 1543, 1542, + 1510, 1511, 1544, 1543, + 1511, 1512, 1545, 1544, + 1529, 1530, 1546, 1528, + 1530, 1531, 1547, 1546, + 1531, 1532, 1548, 1547, + 1532, 1533, 1549, 1548, + 1533, 1534, 1550, 1549, + 1534, 1535, 1551, 1550, + 1535, 1536, 1552, 1551, + 1536, 1537, 1553, 1552, + 1537, 1538, 1554, 1553, + 1538, 1539, 1555, 1554, + 1539, 1540, 1556, 1555, + 1540, 1541, 1557, 1556, + 1541, 1542, 1558, 1557, + 1542, 1543, 1559, 1558, + 1543, 1544, 1560, 1559, + 1544, 1545, 1561, 1560, + 1528, 1546, 1562, 1527, + 1546, 1547, 1563, 1562, + 1547, 1548, 1564, 1563, + 1548, 1549, 1565, 1564, + 1549, 1550, 1566, 1565, + 1550, 1551, 1567, 1566, + 1551, 1552, 1568, 1567, + 1552, 1553, 1569, 1568, + 1553, 1554, 1570, 1569, + 1554, 1555, 1571, 1570, + 1555, 1556, 1572, 1571, + 1556, 1557, 1573, 1572, + 1557, 1558, 1574, 1573, + 1558, 1559, 1575, 1574, + 1559, 1560, 1576, 1575, + 1560, 1561, 1577, 1576, + 1527, 1562, 1578, 1526, + 1562, 1563, 1579, 1578, + 1563, 1564, 1580, 1579, + 1564, 1565, 1581, 1580, + 1565, 1566, 1582, 1581, + 1566, 1567, 1583, 1582, + 1567, 1568, 1584, 1583, + 1568, 1569, 1585, 1584, + 1569, 1570, 1586, 1585, + 1570, 1571, 1587, 1586, + 1571, 1572, 1588, 1587, + 1572, 1573, 1589, 1588, + 1573, 1574, 1590, 1589, + 1574, 1575, 1591, 1590, + 1575, 1576, 1592, 1591, + 1576, 1577, 1593, 1592, + 1526, 1578, 1594, 1525, + 1578, 1579, 1595, 1594, + 1579, 1580, 1596, 1595, + 1580, 1581, 1597, 1596, + 1581, 1582, 1598, 1597, + 1582, 1583, 1599, 1598, + 1583, 1584, 1600, 1599, + 1584, 1585, 1601, 1600, + 1585, 1586, 1602, 1601, + 1586, 1587, 1603, 1602, + 1587, 1588, 1604, 1603, + 1588, 1589, 1605, 1604, + 1589, 1590, 1606, 1605, + 1590, 1591, 1607, 1606, + 1591, 1592, 1608, 1607, + 1592, 1593, 1609, 1608, + 1525, 1594, 1610, 1524, + 1594, 1595, 1611, 1610, + 1595, 1596, 1612, 1611, + 1596, 1597, 1613, 1612, + 1597, 1598, 1614, 1613, + 1598, 1599, 1615, 1614, + 1599, 1600, 1616, 1615, + 1600, 1601, 1617, 1616, + 1601, 1602, 1618, 1617, + 1602, 1603, 1619, 1618, + 1603, 1604, 1620, 1619, + 1604, 1605, 1621, 1620, + 1605, 1606, 1622, 1621, + 1606, 1607, 1623, 1622, + 1607, 1608, 1624, 1623, + 1608, 1609, 1625, 1624, + 1524, 1610, 1626, 1523, + 1610, 1611, 1627, 1626, + 1611, 1612, 1628, 1627, + 1612, 1613, 1629, 1628, + 1613, 1614, 1630, 1629, + 1614, 1615, 1631, 1630, + 1615, 1616, 1632, 1631, + 1616, 1617, 1633, 1632, + 1617, 1618, 1634, 1633, + 1618, 1619, 1635, 1634, + 1619, 1620, 1636, 1635, + 1620, 1621, 1637, 1636, + 1621, 1622, 1638, 1637, + 1622, 1623, 1639, 1638, + 1623, 1624, 1640, 1639, + 1624, 1625, 1641, 1640, + 1523, 1626, 1642, 1522, + 1626, 1627, 1643, 1642, + 1627, 1628, 1644, 1643, + 1628, 1629, 1645, 1644, + 1629, 1630, 1646, 1645, + 1630, 1631, 1647, 1646, + 1631, 1632, 1648, 1647, + 1632, 1633, 1649, 1648, + 1633, 1634, 1650, 1649, + 1634, 1635, 1651, 1650, + 1635, 1636, 1652, 1651, + 1636, 1637, 1653, 1652, + 1637, 1638, 1654, 1653, + 1638, 1639, 1655, 1654, + 1639, 1640, 1656, 1655, + 1640, 1641, 1657, 1656, + 1522, 1642, 1658, 1521, + 1642, 1643, 1659, 1658, + 1643, 1644, 1660, 1659, + 1644, 1645, 1661, 1660, + 1645, 1646, 1662, 1661, + 1646, 1647, 1663, 1662, + 1647, 1648, 1664, 1663, + 1648, 1649, 1665, 1664, + 1649, 1650, 1666, 1665, + 1650, 1651, 1667, 1666, + 1651, 1652, 1668, 1667, + 1652, 1653, 1669, 1668, + 1653, 1654, 1670, 1669, + 1654, 1655, 1671, 1670, + 1655, 1656, 1672, 1671, + 1656, 1657, 1673, 1672, + 1521, 1658, 1674, 1520, + 1658, 1659, 1675, 1674, + 1659, 1660, 1676, 1675, + 1660, 1661, 1677, 1676, + 1661, 1662, 1678, 1677, + 1662, 1663, 1679, 1678, + 1663, 1664, 1680, 1679, + 1664, 1665, 1681, 1680, + 1665, 1666, 1682, 1681, + 1666, 1667, 1683, 1682, + 1667, 1668, 1684, 1683, + 1668, 1669, 1685, 1684, + 1669, 1670, 1686, 1685, + 1670, 1671, 1687, 1686, + 1671, 1672, 1688, 1687, + 1672, 1673, 1689, 1688, + 1520, 1674, 1690, 1519, + 1674, 1675, 1691, 1690, + 1675, 1676, 1692, 1691, + 1676, 1677, 1693, 1692, + 1677, 1678, 1694, 1693, + 1678, 1679, 1695, 1694, + 1679, 1680, 1696, 1695, + 1680, 1681, 1697, 1696, + 1681, 1682, 1698, 1697, + 1682, 1683, 1699, 1698, + 1683, 1684, 1700, 1699, + 1684, 1685, 1701, 1700, + 1685, 1686, 1702, 1701, + 1686, 1687, 1703, 1702, + 1687, 1688, 1704, 1703, + 1688, 1689, 1705, 1704, + 1519, 1690, 1706, 1518, + 1690, 1691, 1707, 1706, + 1691, 1692, 1708, 1707, + 1692, 1693, 1709, 1708, + 1693, 1694, 1710, 1709, + 1694, 1695, 1711, 1710, + 1695, 1696, 1712, 1711, + 1696, 1697, 1713, 1712, + 1697, 1698, 1714, 1713, + 1698, 1699, 1715, 1714, + 1699, 1700, 1716, 1715, + 1700, 1701, 1717, 1716, + 1701, 1702, 1718, 1717, + 1702, 1703, 1719, 1718, + 1703, 1704, 1720, 1719, + 1704, 1705, 1721, 1720, + 1518, 1706, 1722, 1517, + 1706, 1707, 1723, 1722, + 1707, 1708, 1724, 1723, + 1708, 1709, 1725, 1724, + 1709, 1710, 1726, 1725, + 1710, 1711, 1727, 1726, + 1711, 1712, 1728, 1727, + 1712, 1713, 1729, 1728, + 1713, 1714, 1730, 1729, + 1714, 1715, 1731, 1730, + 1715, 1716, 1732, 1731, + 1716, 1717, 1733, 1732, + 1717, 1718, 1734, 1733, + 1718, 1719, 1735, 1734, + 1719, 1720, 1736, 1735, + 1720, 1721, 1737, 1736, + 1517, 1722, 1738, 1516, + 1722, 1723, 1739, 1738, + 1723, 1724, 1740, 1739, + 1724, 1725, 1741, 1740, + 1725, 1726, 1742, 1741, + 1726, 1727, 1743, 1742, + 1727, 1728, 1744, 1743, + 1728, 1729, 1745, 1744, + 1729, 1730, 1746, 1745, + 1730, 1731, 1747, 1746, + 1731, 1732, 1748, 1747, + 1732, 1733, 1749, 1748, + 1733, 1734, 1750, 1749, + 1734, 1735, 1751, 1750, + 1735, 1736, 1752, 1751, + 1736, 1737, 1753, 1752, + 1516, 1738, 1754, 1515, + 1738, 1739, 1755, 1754, + 1739, 1740, 1756, 1755, + 1740, 1741, 1757, 1756, + 1741, 1742, 1758, 1757, + 1742, 1743, 1759, 1758, + 1743, 1744, 1760, 1759, + 1744, 1745, 1761, 1760, + 1745, 1746, 1762, 1761, + 1746, 1747, 1763, 1762, + 1747, 1748, 1764, 1763, + 1748, 1749, 1765, 1764, + 1749, 1750, 1766, 1765, + 1750, 1751, 1767, 1766, + 1751, 1752, 1768, 1767, + 1752, 1753, 1769, 1768, + 1515, 1754, 1770, 1514, + 1754, 1755, 1771, 1770, + 1755, 1756, 1772, 1771, + 1756, 1757, 1773, 1772, + 1757, 1758, 1774, 1773, + 1758, 1759, 1775, 1774, + 1759, 1760, 1776, 1775, + 1760, 1761, 1777, 1776, + 1761, 1762, 1778, 1777, + 1762, 1763, 1779, 1778, + 1763, 1764, 1780, 1779, + 1764, 1765, 1781, 1780, + 1765, 1766, 1782, 1781, + 1766, 1767, 1783, 1782, + 1767, 1768, 1784, 1783, + 1768, 1769, 1785, 1784, + 1514, 1770, 1786, 1513, + 1770, 1771, 1787, 1786, + 1771, 1772, 1788, 1787, + 1772, 1773, 1789, 1788, + 1773, 1774, 1790, 1789, + 1774, 1775, 1791, 1790, + 1775, 1776, 1792, 1791, + 1776, 1777, 1793, 1792, + 1777, 1778, 1794, 1793, + 1778, 1779, 1795, 1794, + 1779, 1780, 1796, 1795, + 1780, 1781, 1797, 1796, + 1781, 1782, 1798, 1797, + 1782, 1783, 1799, 1798, + 1783, 1784, 1800, 1799, + 1784, 1785, 1801, 1800, + 1513, 1786, 663, 646, + 1786, 1787, 680, 663, + 1787, 1788, 697, 680, + 1788, 1789, 714, 697, + 1789, 1790, 731, 714, + 1790, 1791, 748, 731, + 1791, 1792, 765, 748, + 1792, 1793, 782, 765, + 1793, 1794, 799, 782, + 1794, 1795, 816, 799, + 1795, 1796, 833, 816, + 1796, 1797, 850, 833, + 1797, 1798, 867, 850, + 1798, 1799, 884, 867, + 1799, 1800, 901, 884, + 1800, 1801, 918, 901, + 983, 1802, 1803, 984, + 1802, 1804, 1805, 1803, + 1804, 1806, 1807, 1805, + 1806, 1808, 1809, 1807, + 1808, 1810, 1811, 1809, + 1810, 1812, 1813, 1811, + 1812, 1814, 1815, 1813, + 1814, 1816, 1817, 1815, + 1816, 1818, 1819, 1817, + 1818, 1820, 1821, 1819, + 1820, 1822, 1823, 1821, + 1822, 1824, 1825, 1823, + 1824, 1826, 1827, 1825, + 1826, 1828, 1829, 1827, + 1828, 1830, 1831, 1829, + 1830, 1832, 1833, 1831, + 1832, 1834, 1835, 1833, + 1834, 1836, 1837, 1835, + 1836, 1838, 1839, 1837, + 1838, 1840, 1841, 1839, + 1840, 1842, 1843, 1841, + 1842, 1844, 1845, 1843, + 1844, 1846, 1847, 1845, + 1846, 1848, 1849, 1847, + 1848, 1850, 1851, 1849, + 1850, 1852, 1853, 1851, + 1852, 1854, 1855, 1853, + 1854, 1856, 1857, 1855, + 1856, 1858, 1859, 1857, + 1858, 1860, 1861, 1859, + 1860, 1862, 1863, 1861, + 1862, 1864, 1865, 1863, + 1864, 1866, 1867, 1865, + 984, 1803, 1868, 1017, + 1803, 1805, 1869, 1868, + 1805, 1807, 1870, 1869, + 1807, 1809, 1871, 1870, + 1809, 1811, 1872, 1871, + 1811, 1813, 1873, 1872, + 1813, 1815, 1874, 1873, + 1815, 1817, 1875, 1874, + 1817, 1819, 1876, 1875, + 1819, 1821, 1877, 1876, + 1821, 1823, 1878, 1877, + 1823, 1825, 1879, 1878, + 1825, 1827, 1880, 1879, + 1827, 1829, 1881, 1880, + 1829, 1831, 1882, 1881, + 1831, 1833, 1883, 1882, + 1833, 1835, 1884, 1883, + 1835, 1837, 1885, 1884, + 1837, 1839, 1886, 1885, + 1839, 1841, 1887, 1886, + 1841, 1843, 1888, 1887, + 1843, 1845, 1889, 1888, + 1845, 1847, 1890, 1889, + 1847, 1849, 1891, 1890, + 1849, 1851, 1892, 1891, + 1851, 1853, 1893, 1892, + 1853, 1855, 1894, 1893, + 1855, 1857, 1895, 1894, + 1857, 1859, 1896, 1895, + 1859, 1861, 1897, 1896, + 1861, 1863, 1898, 1897, + 1863, 1865, 1899, 1898, + 1865, 1867, 1900, 1899, + 1017, 1868, 1901, 1050, + 1868, 1869, 1902, 1901, + 1869, 1870, 1903, 1902, + 1870, 1871, 1904, 1903, + 1871, 1872, 1905, 1904, + 1872, 1873, 1906, 1905, + 1873, 1874, 1907, 1906, + 1874, 1875, 1908, 1907, + 1875, 1876, 1909, 1908, + 1876, 1877, 1910, 1909, + 1877, 1878, 1911, 1910, + 1878, 1879, 1912, 1911, + 1879, 1880, 1913, 1912, + 1880, 1881, 1914, 1913, + 1881, 1882, 1915, 1914, + 1882, 1883, 1916, 1915, + 1883, 1884, 1917, 1916, + 1884, 1885, 1918, 1917, + 1885, 1886, 1919, 1918, + 1886, 1887, 1920, 1919, + 1887, 1888, 1921, 1920, + 1888, 1889, 1922, 1921, + 1889, 1890, 1923, 1922, + 1890, 1891, 1924, 1923, + 1891, 1892, 1925, 1924, + 1892, 1893, 1926, 1925, + 1893, 1894, 1927, 1926, + 1894, 1895, 1928, 1927, + 1895, 1896, 1929, 1928, + 1896, 1897, 1930, 1929, + 1897, 1898, 1931, 1930, + 1898, 1899, 1932, 1931, + 1899, 1900, 1933, 1932, + 1050, 1901, 1934, 1083, + 1901, 1902, 1935, 1934, + 1902, 1903, 1936, 1935, + 1903, 1904, 1937, 1936, + 1904, 1905, 1938, 1937, + 1905, 1906, 1939, 1938, + 1906, 1907, 1940, 1939, + 1907, 1908, 1941, 1940, + 1908, 1909, 1942, 1941, + 1909, 1910, 1943, 1942, + 1910, 1911, 1944, 1943, + 1911, 1912, 1945, 1944, + 1912, 1913, 1946, 1945, + 1913, 1914, 1947, 1946, + 1914, 1915, 1948, 1947, + 1915, 1916, 1949, 1948, + 1916, 1917, 1950, 1949, + 1917, 1918, 1951, 1950, + 1918, 1919, 1952, 1951, + 1919, 1920, 1953, 1952, + 1920, 1921, 1954, 1953, + 1921, 1922, 1955, 1954, + 1922, 1923, 1956, 1955, + 1923, 1924, 1957, 1956, + 1924, 1925, 1958, 1957, + 1925, 1926, 1959, 1958, + 1926, 1927, 1960, 1959, + 1927, 1928, 1961, 1960, + 1928, 1929, 1962, 1961, + 1929, 1930, 1963, 1962, + 1930, 1931, 1964, 1963, + 1931, 1932, 1965, 1964, + 1932, 1933, 1966, 1965, + 1083, 1934, 1967, 1116, + 1934, 1935, 1968, 1967, + 1935, 1936, 1969, 1968, + 1936, 1937, 1970, 1969, + 1937, 1938, 1971, 1970, + 1938, 1939, 1972, 1971, + 1939, 1940, 1973, 1972, + 1940, 1941, 1974, 1973, + 1941, 1942, 1975, 1974, + 1942, 1943, 1976, 1975, + 1943, 1944, 1977, 1976, + 1944, 1945, 1978, 1977, + 1945, 1946, 1979, 1978, + 1946, 1947, 1980, 1979, + 1947, 1948, 1981, 1980, + 1948, 1949, 1982, 1981, + 1949, 1950, 1983, 1982, + 1950, 1951, 1984, 1983, + 1951, 1952, 1985, 1984, + 1952, 1953, 1986, 1985, + 1953, 1954, 1987, 1986, + 1954, 1955, 1988, 1987, + 1955, 1956, 1989, 1988, + 1956, 1957, 1990, 1989, + 1957, 1958, 1991, 1990, + 1958, 1959, 1992, 1991, + 1959, 1960, 1993, 1992, + 1960, 1961, 1994, 1993, + 1961, 1962, 1995, 1994, + 1962, 1963, 1996, 1995, + 1963, 1964, 1997, 1996, + 1964, 1965, 1998, 1997, + 1965, 1966, 1999, 1998, + 1116, 1967, 2000, 1149, + 1967, 1968, 2001, 2000, + 1968, 1969, 2002, 2001, + 1969, 1970, 2003, 2002, + 1970, 1971, 2004, 2003, + 1971, 1972, 2005, 2004, + 1972, 1973, 2006, 2005, + 1973, 1974, 2007, 2006, + 1974, 1975, 2008, 2007, + 1975, 1976, 2009, 2008, + 1976, 1977, 2010, 2009, + 1977, 1978, 2011, 2010, + 1978, 1979, 2012, 2011, + 1979, 1980, 2013, 2012, + 1980, 1981, 2014, 2013, + 1981, 1982, 2015, 2014, + 1982, 1983, 2016, 2015, + 1983, 1984, 2017, 2016, + 1984, 1985, 2018, 2017, + 1985, 1986, 2019, 2018, + 1986, 1987, 2020, 2019, + 1987, 1988, 2021, 2020, + 1988, 1989, 2022, 2021, + 1989, 1990, 2023, 2022, + 1990, 1991, 2024, 2023, + 1991, 1992, 2025, 2024, + 1992, 1993, 2026, 2025, + 1993, 1994, 2027, 2026, + 1994, 1995, 2028, 2027, + 1995, 1996, 2029, 2028, + 1996, 1997, 2030, 2029, + 1997, 1998, 2031, 2030, + 1998, 1999, 2032, 2031, + 1149, 2000, 2033, 1182, + 2000, 2001, 2034, 2033, + 2001, 2002, 2035, 2034, + 2002, 2003, 2036, 2035, + 2003, 2004, 2037, 2036, + 2004, 2005, 2038, 2037, + 2005, 2006, 2039, 2038, + 2006, 2007, 2040, 2039, + 2007, 2008, 2041, 2040, + 2008, 2009, 2042, 2041, + 2009, 2010, 2043, 2042, + 2010, 2011, 2044, 2043, + 2011, 2012, 2045, 2044, + 2012, 2013, 2046, 2045, + 2013, 2014, 2047, 2046, + 2014, 2015, 2048, 2047, + 2015, 2016, 2049, 2048, + 2016, 2017, 2050, 2049, + 2017, 2018, 2051, 2050, + 2018, 2019, 2052, 2051, + 2019, 2020, 2053, 2052, + 2020, 2021, 2054, 2053, + 2021, 2022, 2055, 2054, + 2022, 2023, 2056, 2055, + 2023, 2024, 2057, 2056, + 2024, 2025, 2058, 2057, + 2025, 2026, 2059, 2058, + 2026, 2027, 2060, 2059, + 2027, 2028, 2061, 2060, + 2028, 2029, 2062, 2061, + 2029, 2030, 2063, 2062, + 2030, 2031, 2064, 2063, + 2031, 2032, 2065, 2064, + 1182, 2033, 2066, 1215, + 2033, 2034, 2067, 2066, + 2034, 2035, 2068, 2067, + 2035, 2036, 2069, 2068, + 2036, 2037, 2070, 2069, + 2037, 2038, 2071, 2070, + 2038, 2039, 2072, 2071, + 2039, 2040, 2073, 2072, + 2040, 2041, 2074, 2073, + 2041, 2042, 2075, 2074, + 2042, 2043, 2076, 2075, + 2043, 2044, 2077, 2076, + 2044, 2045, 2078, 2077, + 2045, 2046, 2079, 2078, + 2046, 2047, 2080, 2079, + 2047, 2048, 2081, 2080, + 2048, 2049, 2082, 2081, + 2049, 2050, 2083, 2082, + 2050, 2051, 2084, 2083, + 2051, 2052, 2085, 2084, + 2052, 2053, 2086, 2085, + 2053, 2054, 2087, 2086, + 2054, 2055, 2088, 2087, + 2055, 2056, 2089, 2088, + 2056, 2057, 2090, 2089, + 2057, 2058, 2091, 2090, + 2058, 2059, 2092, 2091, + 2059, 2060, 2093, 2092, + 2060, 2061, 2094, 2093, + 2061, 2062, 2095, 2094, + 2062, 2063, 2096, 2095, + 2063, 2064, 2097, 2096, + 2064, 2065, 2098, 2097, + 1215, 2066, 2099, 1248, + 2066, 2067, 2100, 2099, + 2067, 2068, 2101, 2100, + 2068, 2069, 2102, 2101, + 2069, 2070, 2103, 2102, + 2070, 2071, 2104, 2103, + 2071, 2072, 2105, 2104, + 2072, 2073, 2106, 2105, + 2073, 2074, 2107, 2106, + 2074, 2075, 2108, 2107, + 2075, 2076, 2109, 2108, + 2076, 2077, 2110, 2109, + 2077, 2078, 2111, 2110, + 2078, 2079, 2112, 2111, + 2079, 2080, 2113, 2112, + 2080, 2081, 2114, 2113, + 2081, 2082, 2115, 2114, + 2082, 2083, 2116, 2115, + 2083, 2084, 2117, 2116, + 2084, 2085, 2118, 2117, + 2085, 2086, 2119, 2118, + 2086, 2087, 2120, 2119, + 2087, 2088, 2121, 2120, + 2088, 2089, 2122, 2121, + 2089, 2090, 2123, 2122, + 2090, 2091, 2124, 2123, + 2091, 2092, 2125, 2124, + 2092, 2093, 2126, 2125, + 2093, 2094, 2127, 2126, + 2094, 2095, 2128, 2127, + 2095, 2096, 2129, 2128, + 2096, 2097, 2130, 2129, + 2097, 2098, 2131, 2130, + 1248, 2099, 2132, 1281, + 2099, 2100, 2133, 2132, + 2100, 2101, 2134, 2133, + 2101, 2102, 2135, 2134, + 2102, 2103, 2136, 2135, + 2103, 2104, 2137, 2136, + 2104, 2105, 2138, 2137, + 2105, 2106, 2139, 2138, + 2106, 2107, 2140, 2139, + 2107, 2108, 2141, 2140, + 2108, 2109, 2142, 2141, + 2109, 2110, 2143, 2142, + 2110, 2111, 2144, 2143, + 2111, 2112, 2145, 2144, + 2112, 2113, 2146, 2145, + 2113, 2114, 2147, 2146, + 2114, 2115, 2148, 2147, + 2115, 2116, 2149, 2148, + 2116, 2117, 2150, 2149, + 2117, 2118, 2151, 2150, + 2118, 2119, 2152, 2151, + 2119, 2120, 2153, 2152, + 2120, 2121, 2154, 2153, + 2121, 2122, 2155, 2154, + 2122, 2123, 2156, 2155, + 2123, 2124, 2157, 2156, + 2124, 2125, 2158, 2157, + 2125, 2126, 2159, 2158, + 2126, 2127, 2160, 2159, + 2127, 2128, 2161, 2160, + 2128, 2129, 2162, 2161, + 2129, 2130, 2163, 2162, + 2130, 2131, 2164, 2163, + 1281, 2132, 2165, 1314, + 2132, 2133, 2166, 2165, + 2133, 2134, 2167, 2166, + 2134, 2135, 2168, 2167, + 2135, 2136, 2169, 2168, + 2136, 2137, 2170, 2169, + 2137, 2138, 2171, 2170, + 2138, 2139, 2172, 2171, + 2139, 2140, 2173, 2172, + 2140, 2141, 2174, 2173, + 2141, 2142, 2175, 2174, + 2142, 2143, 2176, 2175, + 2143, 2144, 2177, 2176, + 2144, 2145, 2178, 2177, + 2145, 2146, 2179, 2178, + 2146, 2147, 2180, 2179, + 2147, 2148, 2181, 2180, + 2148, 2149, 2182, 2181, + 2149, 2150, 2183, 2182, + 2150, 2151, 2184, 2183, + 2151, 2152, 2185, 2184, + 2152, 2153, 2186, 2185, + 2153, 2154, 2187, 2186, + 2154, 2155, 2188, 2187, + 2155, 2156, 2189, 2188, + 2156, 2157, 2190, 2189, + 2157, 2158, 2191, 2190, + 2158, 2159, 2192, 2191, + 2159, 2160, 2193, 2192, + 2160, 2161, 2194, 2193, + 2161, 2162, 2195, 2194, + 2162, 2163, 2196, 2195, + 2163, 2164, 2197, 2196, + 1314, 2165, 2198, 1347, + 2165, 2166, 2199, 2198, + 2166, 2167, 2200, 2199, + 2167, 2168, 2201, 2200, + 2168, 2169, 2202, 2201, + 2169, 2170, 2203, 2202, + 2170, 2171, 2204, 2203, + 2171, 2172, 2205, 2204, + 2172, 2173, 2206, 2205, + 2173, 2174, 2207, 2206, + 2174, 2175, 2208, 2207, + 2175, 2176, 2209, 2208, + 2176, 2177, 2210, 2209, + 2177, 2178, 2211, 2210, + 2178, 2179, 2212, 2211, + 2179, 2180, 2213, 2212, + 2180, 2181, 2214, 2213, + 2181, 2182, 2215, 2214, + 2182, 2183, 2216, 2215, + 2183, 2184, 2217, 2216, + 2184, 2185, 2218, 2217, + 2185, 2186, 2219, 2218, + 2186, 2187, 2220, 2219, + 2187, 2188, 2221, 2220, + 2188, 2189, 2222, 2221, + 2189, 2190, 2223, 2222, + 2190, 2191, 2224, 2223, + 2191, 2192, 2225, 2224, + 2192, 2193, 2226, 2225, + 2193, 2194, 2227, 2226, + 2194, 2195, 2228, 2227, + 2195, 2196, 2229, 2228, + 2196, 2197, 2230, 2229, + 1347, 2198, 2231, 1380, + 2198, 2199, 2232, 2231, + 2199, 2200, 2233, 2232, + 2200, 2201, 2234, 2233, + 2201, 2202, 2235, 2234, + 2202, 2203, 2236, 2235, + 2203, 2204, 2237, 2236, + 2204, 2205, 2238, 2237, + 2205, 2206, 2239, 2238, + 2206, 2207, 2240, 2239, + 2207, 2208, 2241, 2240, + 2208, 2209, 2242, 2241, + 2209, 2210, 2243, 2242, + 2210, 2211, 2244, 2243, + 2211, 2212, 2245, 2244, + 2212, 2213, 2246, 2245, + 2213, 2214, 2247, 2246, + 2214, 2215, 2248, 2247, + 2215, 2216, 2249, 2248, + 2216, 2217, 2250, 2249, + 2217, 2218, 2251, 2250, + 2218, 2219, 2252, 2251, + 2219, 2220, 2253, 2252, + 2220, 2221, 2254, 2253, + 2221, 2222, 2255, 2254, + 2222, 2223, 2256, 2255, + 2223, 2224, 2257, 2256, + 2224, 2225, 2258, 2257, + 2225, 2226, 2259, 2258, + 2226, 2227, 2260, 2259, + 2227, 2228, 2261, 2260, + 2228, 2229, 2262, 2261, + 2229, 2230, 2263, 2262, + 1380, 2231, 2264, 1413, + 2231, 2232, 2265, 2264, + 2232, 2233, 2266, 2265, + 2233, 2234, 2267, 2266, + 2234, 2235, 2268, 2267, + 2235, 2236, 2269, 2268, + 2236, 2237, 2270, 2269, + 2237, 2238, 2271, 2270, + 2238, 2239, 2272, 2271, + 2239, 2240, 2273, 2272, + 2240, 2241, 2274, 2273, + 2241, 2242, 2275, 2274, + 2242, 2243, 2276, 2275, + 2243, 2244, 2277, 2276, + 2244, 2245, 2278, 2277, + 2245, 2246, 2279, 2278, + 2246, 2247, 2280, 2279, + 2247, 2248, 2281, 2280, + 2248, 2249, 2282, 2281, + 2249, 2250, 2283, 2282, + 2250, 2251, 2284, 2283, + 2251, 2252, 2285, 2284, + 2252, 2253, 2286, 2285, + 2253, 2254, 2287, 2286, + 2254, 2255, 2288, 2287, + 2255, 2256, 2289, 2288, + 2256, 2257, 2290, 2289, + 2257, 2258, 2291, 2290, + 2258, 2259, 2292, 2291, + 2259, 2260, 2293, 2292, + 2260, 2261, 2294, 2293, + 2261, 2262, 2295, 2294, + 2262, 2263, 2296, 2295, + 1413, 2264, 2297, 1446, + 2264, 2265, 2298, 2297, + 2265, 2266, 2299, 2298, + 2266, 2267, 2300, 2299, + 2267, 2268, 2301, 2300, + 2268, 2269, 2302, 2301, + 2269, 2270, 2303, 2302, + 2270, 2271, 2304, 2303, + 2271, 2272, 2305, 2304, + 2272, 2273, 2306, 2305, + 2273, 2274, 2307, 2306, + 2274, 2275, 2308, 2307, + 2275, 2276, 2309, 2308, + 2276, 2277, 2310, 2309, + 2277, 2278, 2311, 2310, + 2278, 2279, 2312, 2311, + 2279, 2280, 2313, 2312, + 2280, 2281, 2314, 2313, + 2281, 2282, 2315, 2314, + 2282, 2283, 2316, 2315, + 2283, 2284, 2317, 2316, + 2284, 2285, 2318, 2317, + 2285, 2286, 2319, 2318, + 2286, 2287, 2320, 2319, + 2287, 2288, 2321, 2320, + 2288, 2289, 2322, 2321, + 2289, 2290, 2323, 2322, + 2290, 2291, 2324, 2323, + 2291, 2292, 2325, 2324, + 2292, 2293, 2326, 2325, + 2293, 2294, 2327, 2326, + 2294, 2295, 2328, 2327, + 2295, 2296, 2329, 2328, + 1446, 2297, 2330, 1479, + 2297, 2298, 2331, 2330, + 2298, 2299, 2332, 2331, + 2299, 2300, 2333, 2332, + 2300, 2301, 2334, 2333, + 2301, 2302, 2335, 2334, + 2302, 2303, 2336, 2335, + 2303, 2304, 2337, 2336, + 2304, 2305, 2338, 2337, + 2305, 2306, 2339, 2338, + 2306, 2307, 2340, 2339, + 2307, 2308, 2341, 2340, + 2308, 2309, 2342, 2341, + 2309, 2310, 2343, 2342, + 2310, 2311, 2344, 2343, + 2311, 2312, 2345, 2344, + 2312, 2313, 2346, 2345, + 2313, 2314, 2347, 2346, + 2314, 2315, 2348, 2347, + 2315, 2316, 2349, 2348, + 2316, 2317, 2350, 2349, + 2317, 2318, 2351, 2350, + 2318, 2319, 2352, 2351, + 2319, 2320, 2353, 2352, + 2320, 2321, 2354, 2353, + 2321, 2322, 2355, 2354, + 2322, 2323, 2356, 2355, + 2323, 2324, 2357, 2356, + 2324, 2325, 2358, 2357, + 2325, 2326, 2359, 2358, + 2326, 2327, 2360, 2359, + 2327, 2328, 2361, 2360, + 2328, 2329, 2362, 2361, + 1479, 2330, 2363, 1512, + 2330, 2331, 2364, 2363, + 2331, 2332, 2365, 2364, + 2332, 2333, 2366, 2365, + 2333, 2334, 2367, 2366, + 2334, 2335, 2368, 2367, + 2335, 2336, 2369, 2368, + 2336, 2337, 2370, 2369, + 2337, 2338, 2371, 2370, + 2338, 2339, 2372, 2371, + 2339, 2340, 2373, 2372, + 2340, 2341, 2374, 2373, + 2341, 2342, 2375, 2374, + 2342, 2343, 2376, 2375, + 2343, 2344, 2377, 2376, + 2344, 2345, 2378, 2377, + 2345, 2346, 2379, 2378, + 2346, 2347, 2380, 2379, + 2347, 2348, 2381, 2380, + 2348, 2349, 2382, 2381, + 2349, 2350, 2383, 2382, + 2350, 2351, 2384, 2383, + 2351, 2352, 2385, 2384, + 2352, 2353, 2386, 2385, + 2353, 2354, 2387, 2386, + 2354, 2355, 2388, 2387, + 2355, 2356, 2389, 2388, + 2356, 2357, 2390, 2389, + 2357, 2358, 2391, 2390, + 2358, 2359, 2392, 2391, + 2359, 2360, 2393, 2392, + 2360, 2361, 2394, 2393, + 2361, 2362, 2395, 2394, + 1512, 2363, 2396, 1545, + 2363, 2364, 2397, 2396, + 2364, 2365, 2398, 2397, + 2365, 2366, 2399, 2398, + 2366, 2367, 2400, 2399, + 2367, 2368, 2401, 2400, + 2368, 2369, 2402, 2401, + 2369, 2370, 2403, 2402, + 2370, 2371, 2404, 2403, + 2371, 2372, 2405, 2404, + 2372, 2373, 2406, 2405, + 2373, 2374, 2407, 2406, + 2374, 2375, 2408, 2407, + 2375, 2376, 2409, 2408, + 2376, 2377, 2410, 2409, + 2377, 2378, 2411, 2410, + 2378, 2379, 2412, 2411, + 2379, 2380, 2413, 2412, + 2380, 2381, 2414, 2413, + 2381, 2382, 2415, 2414, + 2382, 2383, 2416, 2415, + 2383, 2384, 2417, 2416, + 2384, 2385, 2418, 2417, + 2385, 2386, 2419, 2418, + 2386, 2387, 2420, 2419, + 2387, 2388, 2421, 2420, + 2388, 2389, 2422, 2421, + 2389, 2390, 2423, 2422, + 2390, 2391, 2424, 2423, + 2391, 2392, 2425, 2424, + 2392, 2393, 2426, 2425, + 2393, 2394, 2427, 2426, + 2394, 2395, 2428, 2427, + 2411, 2412, 2429, 2410, + 2412, 2413, 2430, 2429, + 2413, 2414, 2431, 2430, + 2414, 2415, 2432, 2431, + 2415, 2416, 2433, 2432, + 2416, 2417, 2434, 2433, + 2417, 2418, 2435, 2434, + 2418, 2419, 2436, 2435, + 2419, 2420, 2437, 2436, + 2420, 2421, 2438, 2437, + 2421, 2422, 2439, 2438, + 2422, 2423, 2440, 2439, + 2423, 2424, 2441, 2440, + 2424, 2425, 2442, 2441, + 2425, 2426, 2443, 2442, + 2426, 2427, 2444, 2443, + 2427, 2428, 2445, 2444, + 2410, 2429, 2446, 2409, + 2429, 2430, 2447, 2446, + 2430, 2431, 2448, 2447, + 2431, 2432, 2449, 2448, + 2432, 2433, 2450, 2449, + 2433, 2434, 2451, 2450, + 2434, 2435, 2452, 2451, + 2435, 2436, 2453, 2452, + 2436, 2437, 2454, 2453, + 2437, 2438, 2455, 2454, + 2438, 2439, 2456, 2455, + 2439, 2440, 2457, 2456, + 2440, 2441, 2458, 2457, + 2441, 2442, 2459, 2458, + 2442, 2443, 2460, 2459, + 2443, 2444, 2461, 2460, + 2444, 2445, 2462, 2461, + 2409, 2446, 2463, 2408, + 2446, 2447, 2464, 2463, + 2447, 2448, 2465, 2464, + 2448, 2449, 2466, 2465, + 2449, 2450, 2467, 2466, + 2450, 2451, 2468, 2467, + 2451, 2452, 2469, 2468, + 2452, 2453, 2470, 2469, + 2453, 2454, 2471, 2470, + 2454, 2455, 2472, 2471, + 2455, 2456, 2473, 2472, + 2456, 2457, 2474, 2473, + 2457, 2458, 2475, 2474, + 2458, 2459, 2476, 2475, + 2459, 2460, 2477, 2476, + 2460, 2461, 2478, 2477, + 2461, 2462, 2479, 2478, + 2408, 2463, 2480, 2407, + 2463, 2464, 2481, 2480, + 2464, 2465, 2482, 2481, + 2465, 2466, 2483, 2482, + 2466, 2467, 2484, 2483, + 2467, 2468, 2485, 2484, + 2468, 2469, 2486, 2485, + 2469, 2470, 2487, 2486, + 2470, 2471, 2488, 2487, + 2471, 2472, 2489, 2488, + 2472, 2473, 2490, 2489, + 2473, 2474, 2491, 2490, + 2474, 2475, 2492, 2491, + 2475, 2476, 2493, 2492, + 2476, 2477, 2494, 2493, + 2477, 2478, 2495, 2494, + 2478, 2479, 2496, 2495, + 2407, 2480, 2497, 2406, + 2480, 2481, 2498, 2497, + 2481, 2482, 2499, 2498, + 2482, 2483, 2500, 2499, + 2483, 2484, 2501, 2500, + 2484, 2485, 2502, 2501, + 2485, 2486, 2503, 2502, + 2486, 2487, 2504, 2503, + 2487, 2488, 2505, 2504, + 2488, 2489, 2506, 2505, + 2489, 2490, 2507, 2506, + 2490, 2491, 2508, 2507, + 2491, 2492, 2509, 2508, + 2492, 2493, 2510, 2509, + 2493, 2494, 2511, 2510, + 2494, 2495, 2512, 2511, + 2495, 2496, 2513, 2512, + 2406, 2497, 2514, 2405, + 2497, 2498, 2515, 2514, + 2498, 2499, 2516, 2515, + 2499, 2500, 2517, 2516, + 2500, 2501, 2518, 2517, + 2501, 2502, 2519, 2518, + 2502, 2503, 2520, 2519, + 2503, 2504, 2521, 2520, + 2504, 2505, 2522, 2521, + 2505, 2506, 2523, 2522, + 2506, 2507, 2524, 2523, + 2507, 2508, 2525, 2524, + 2508, 2509, 2526, 2525, + 2509, 2510, 2527, 2526, + 2510, 2511, 2528, 2527, + 2511, 2512, 2529, 2528, + 2512, 2513, 2530, 2529, + 2405, 2514, 2531, 2404, + 2514, 2515, 2532, 2531, + 2515, 2516, 2533, 2532, + 2516, 2517, 2534, 2533, + 2517, 2518, 2535, 2534, + 2518, 2519, 2536, 2535, + 2519, 2520, 2537, 2536, + 2520, 2521, 2538, 2537, + 2521, 2522, 2539, 2538, + 2522, 2523, 2540, 2539, + 2523, 2524, 2541, 2540, + 2524, 2525, 2542, 2541, + 2525, 2526, 2543, 2542, + 2526, 2527, 2544, 2543, + 2527, 2528, 2545, 2544, + 2528, 2529, 2546, 2545, + 2529, 2530, 2547, 2546, + 2404, 2531, 2548, 2403, + 2531, 2532, 2549, 2548, + 2532, 2533, 2550, 2549, + 2533, 2534, 2551, 2550, + 2534, 2535, 2552, 2551, + 2535, 2536, 2553, 2552, + 2536, 2537, 2554, 2553, + 2537, 2538, 2555, 2554, + 2538, 2539, 2556, 2555, + 2539, 2540, 2557, 2556, + 2540, 2541, 2558, 2557, + 2541, 2542, 2559, 2558, + 2542, 2543, 2560, 2559, + 2543, 2544, 2561, 2560, + 2544, 2545, 2562, 2561, + 2545, 2546, 2563, 2562, + 2546, 2547, 2564, 2563, + 2403, 2548, 2565, 2402, + 2548, 2549, 2566, 2565, + 2549, 2550, 2567, 2566, + 2550, 2551, 2568, 2567, + 2551, 2552, 2569, 2568, + 2552, 2553, 2570, 2569, + 2553, 2554, 2571, 2570, + 2554, 2555, 2572, 2571, + 2555, 2556, 2573, 2572, + 2556, 2557, 2574, 2573, + 2557, 2558, 2575, 2574, + 2558, 2559, 2576, 2575, + 2559, 2560, 2577, 2576, + 2560, 2561, 2578, 2577, + 2561, 2562, 2579, 2578, + 2562, 2563, 2580, 2579, + 2563, 2564, 2581, 2580, + 2402, 2565, 2582, 2401, + 2565, 2566, 2583, 2582, + 2566, 2567, 2584, 2583, + 2567, 2568, 2585, 2584, + 2568, 2569, 2586, 2585, + 2569, 2570, 2587, 2586, + 2570, 2571, 2588, 2587, + 2571, 2572, 2589, 2588, + 2572, 2573, 2590, 2589, + 2573, 2574, 2591, 2590, + 2574, 2575, 2592, 2591, + 2575, 2576, 2593, 2592, + 2576, 2577, 2594, 2593, + 2577, 2578, 2595, 2594, + 2578, 2579, 2596, 2595, + 2579, 2580, 2597, 2596, + 2580, 2581, 2598, 2597, + 2401, 2582, 2599, 2400, + 2582, 2583, 2600, 2599, + 2583, 2584, 2601, 2600, + 2584, 2585, 2602, 2601, + 2585, 2586, 2603, 2602, + 2586, 2587, 2604, 2603, + 2587, 2588, 2605, 2604, + 2588, 2589, 2606, 2605, + 2589, 2590, 2607, 2606, + 2590, 2591, 2608, 2607, + 2591, 2592, 2609, 2608, + 2592, 2593, 2610, 2609, + 2593, 2594, 2611, 2610, + 2594, 2595, 2612, 2611, + 2595, 2596, 2613, 2612, + 2596, 2597, 2614, 2613, + 2597, 2598, 2615, 2614, + 2400, 2599, 2616, 2399, + 2599, 2600, 2617, 2616, + 2600, 2601, 2618, 2617, + 2601, 2602, 2619, 2618, + 2602, 2603, 2620, 2619, + 2603, 2604, 2621, 2620, + 2604, 2605, 2622, 2621, + 2605, 2606, 2623, 2622, + 2606, 2607, 2624, 2623, + 2607, 2608, 2625, 2624, + 2608, 2609, 2626, 2625, + 2609, 2610, 2627, 2626, + 2610, 2611, 2628, 2627, + 2611, 2612, 2629, 2628, + 2612, 2613, 2630, 2629, + 2613, 2614, 2631, 2630, + 2614, 2615, 2632, 2631, + 2399, 2616, 2633, 2398, + 2616, 2617, 2634, 2633, + 2617, 2618, 2635, 2634, + 2618, 2619, 2636, 2635, + 2619, 2620, 2637, 2636, + 2620, 2621, 2638, 2637, + 2621, 2622, 2639, 2638, + 2622, 2623, 2640, 2639, + 2623, 2624, 2641, 2640, + 2624, 2625, 2642, 2641, + 2625, 2626, 2643, 2642, + 2626, 2627, 2644, 2643, + 2627, 2628, 2645, 2644, + 2628, 2629, 2646, 2645, + 2629, 2630, 2647, 2646, + 2630, 2631, 2648, 2647, + 2631, 2632, 2649, 2648, + 2398, 2633, 2650, 2397, + 2633, 2634, 2651, 2650, + 2634, 2635, 2652, 2651, + 2635, 2636, 2653, 2652, + 2636, 2637, 2654, 2653, + 2637, 2638, 2655, 2654, + 2638, 2639, 2656, 2655, + 2639, 2640, 2657, 2656, + 2640, 2641, 2658, 2657, + 2641, 2642, 2659, 2658, + 2642, 2643, 2660, 2659, + 2643, 2644, 2661, 2660, + 2644, 2645, 2662, 2661, + 2645, 2646, 2663, 2662, + 2646, 2647, 2664, 2663, + 2647, 2648, 2665, 2664, + 2648, 2649, 2666, 2665, + 2397, 2650, 2667, 2396, + 2650, 2651, 2668, 2667, + 2651, 2652, 2669, 2668, + 2652, 2653, 2670, 2669, + 2653, 2654, 2671, 2670, + 2654, 2655, 2672, 2671, + 2655, 2656, 2673, 2672, + 2656, 2657, 2674, 2673, + 2657, 2658, 2675, 2674, + 2658, 2659, 2676, 2675, + 2659, 2660, 2677, 2676, + 2660, 2661, 2678, 2677, + 2661, 2662, 2679, 2678, + 2662, 2663, 2680, 2679, + 2663, 2664, 2681, 2680, + 2664, 2665, 2682, 2681, + 2665, 2666, 2683, 2682, + 2396, 2667, 1561, 1545, + 2667, 2668, 1577, 1561, + 2668, 2669, 1593, 1577, + 2669, 2670, 1609, 1593, + 2670, 2671, 1625, 1609, + 2671, 2672, 1641, 1625, + 2672, 2673, 1657, 1641, + 2673, 2674, 1673, 1657, + 2674, 2675, 1689, 1673, + 2675, 2676, 1705, 1689, + 2676, 2677, 1721, 1705, + 2677, 2678, 1737, 1721, + 2678, 2679, 1753, 1737, + 2679, 2680, 1769, 1753, + 2680, 2681, 1785, 1769, + 2681, 2682, 1801, 1785, + 2682, 2683, 918, 1801, + 1866, 2684, 2685, 1867, + 2684, 2686, 2687, 2685, + 2686, 2688, 2689, 2687, + 2688, 2690, 2691, 2689, + 2690, 2692, 2693, 2691, + 2692, 2694, 2695, 2693, + 2694, 2696, 2697, 2695, + 2696, 2698, 2699, 2697, + 2698, 2700, 2701, 2699, + 2700, 2702, 2703, 2701, + 2702, 2704, 2705, 2703, + 2704, 2706, 2707, 2705, + 2706, 2708, 2709, 2707, + 2708, 2710, 2711, 2709, + 2710, 2712, 2713, 2711, + 2712, 2714, 2715, 2713, + 2714, 2716, 2717, 2715, + 2716, 2718, 2719, 2717, + 2718, 2720, 2721, 2719, + 2720, 2722, 2723, 2721, + 2722, 2724, 2725, 2723, + 2724, 2726, 2727, 2725, + 2726, 2728, 2729, 2727, + 2728, 2730, 2731, 2729, + 2730, 2732, 2733, 2731, + 2732, 2734, 2735, 2733, + 2734, 2736, 2737, 2735, + 2736, 2738, 2739, 2737, + 2738, 2740, 2741, 2739, + 2740, 2742, 2743, 2741, + 2742, 2744, 2745, 2743, + 2744, 2746, 2747, 2745, + 2746, 1, 4, 2747, + 1867, 2685, 2748, 1900, + 2685, 2687, 2749, 2748, + 2687, 2689, 2750, 2749, + 2689, 2691, 2751, 2750, + 2691, 2693, 2752, 2751, + 2693, 2695, 2753, 2752, + 2695, 2697, 2754, 2753, + 2697, 2699, 2755, 2754, + 2699, 2701, 2756, 2755, + 2701, 2703, 2757, 2756, + 2703, 2705, 2758, 2757, + 2705, 2707, 2759, 2758, + 2707, 2709, 2760, 2759, + 2709, 2711, 2761, 2760, + 2711, 2713, 2762, 2761, + 2713, 2715, 2763, 2762, + 2715, 2717, 2764, 2763, + 2717, 2719, 2765, 2764, + 2719, 2721, 2766, 2765, + 2721, 2723, 2767, 2766, + 2723, 2725, 2768, 2767, + 2725, 2727, 2769, 2768, + 2727, 2729, 2770, 2769, + 2729, 2731, 2771, 2770, + 2731, 2733, 2772, 2771, + 2733, 2735, 2773, 2772, + 2735, 2737, 2774, 2773, + 2737, 2739, 2775, 2774, + 2739, 2741, 2776, 2775, + 2741, 2743, 2777, 2776, + 2743, 2745, 2778, 2777, + 2745, 2747, 2779, 2778, + 2747, 4, 70, 2779, + 1900, 2748, 2780, 1933, + 2748, 2749, 2781, 2780, + 2749, 2750, 2782, 2781, + 2750, 2751, 2783, 2782, + 2751, 2752, 2784, 2783, + 2752, 2753, 2785, 2784, + 2753, 2754, 2786, 2785, + 2754, 2755, 2787, 2786, + 2755, 2756, 2788, 2787, + 2756, 2757, 2789, 2788, + 2757, 2758, 2790, 2789, + 2758, 2759, 2791, 2790, + 2759, 2760, 2792, 2791, + 2760, 2761, 2793, 2792, + 2761, 2762, 2794, 2793, + 2762, 2763, 2795, 2794, + 2763, 2764, 2796, 2795, + 2764, 2765, 2797, 2796, + 2765, 2766, 2798, 2797, + 2766, 2767, 2799, 2798, + 2767, 2768, 2800, 2799, + 2768, 2769, 2801, 2800, + 2769, 2770, 2802, 2801, + 2770, 2771, 2803, 2802, + 2771, 2772, 2804, 2803, + 2772, 2773, 2805, 2804, + 2773, 2774, 2806, 2805, + 2774, 2775, 2807, 2806, + 2775, 2776, 2808, 2807, + 2776, 2777, 2809, 2808, + 2777, 2778, 2810, 2809, + 2778, 2779, 2811, 2810, + 2779, 70, 104, 2811, + 1933, 2780, 2812, 1966, + 2780, 2781, 2813, 2812, + 2781, 2782, 2814, 2813, + 2782, 2783, 2815, 2814, + 2783, 2784, 2816, 2815, + 2784, 2785, 2817, 2816, + 2785, 2786, 2818, 2817, + 2786, 2787, 2819, 2818, + 2787, 2788, 2820, 2819, + 2788, 2789, 2821, 2820, + 2789, 2790, 2822, 2821, + 2790, 2791, 2823, 2822, + 2791, 2792, 2824, 2823, + 2792, 2793, 2825, 2824, + 2793, 2794, 2826, 2825, + 2794, 2795, 2827, 2826, + 2795, 2796, 2828, 2827, + 2796, 2797, 2829, 2828, + 2797, 2798, 2830, 2829, + 2798, 2799, 2831, 2830, + 2799, 2800, 2832, 2831, + 2800, 2801, 2833, 2832, + 2801, 2802, 2834, 2833, + 2802, 2803, 2835, 2834, + 2803, 2804, 2836, 2835, + 2804, 2805, 2837, 2836, + 2805, 2806, 2838, 2837, + 2806, 2807, 2839, 2838, + 2807, 2808, 2840, 2839, + 2808, 2809, 2841, 2840, + 2809, 2810, 2842, 2841, + 2810, 2811, 2843, 2842, + 2811, 104, 138, 2843, + 1966, 2812, 2844, 1999, + 2812, 2813, 2845, 2844, + 2813, 2814, 2846, 2845, + 2814, 2815, 2847, 2846, + 2815, 2816, 2848, 2847, + 2816, 2817, 2849, 2848, + 2817, 2818, 2850, 2849, + 2818, 2819, 2851, 2850, + 2819, 2820, 2852, 2851, + 2820, 2821, 2853, 2852, + 2821, 2822, 2854, 2853, + 2822, 2823, 2855, 2854, + 2823, 2824, 2856, 2855, + 2824, 2825, 2857, 2856, + 2825, 2826, 2858, 2857, + 2826, 2827, 2859, 2858, + 2827, 2828, 2860, 2859, + 2828, 2829, 2861, 2860, + 2829, 2830, 2862, 2861, + 2830, 2831, 2863, 2862, + 2831, 2832, 2864, 2863, + 2832, 2833, 2865, 2864, + 2833, 2834, 2866, 2865, + 2834, 2835, 2867, 2866, + 2835, 2836, 2868, 2867, + 2836, 2837, 2869, 2868, + 2837, 2838, 2870, 2869, + 2838, 2839, 2871, 2870, + 2839, 2840, 2872, 2871, + 2840, 2841, 2873, 2872, + 2841, 2842, 2874, 2873, + 2842, 2843, 2875, 2874, + 2843, 138, 172, 2875, + 1999, 2844, 2876, 2032, + 2844, 2845, 2877, 2876, + 2845, 2846, 2878, 2877, + 2846, 2847, 2879, 2878, + 2847, 2848, 2880, 2879, + 2848, 2849, 2881, 2880, + 2849, 2850, 2882, 2881, + 2850, 2851, 2883, 2882, + 2851, 2852, 2884, 2883, + 2852, 2853, 2885, 2884, + 2853, 2854, 2886, 2885, + 2854, 2855, 2887, 2886, + 2855, 2856, 2888, 2887, + 2856, 2857, 2889, 2888, + 2857, 2858, 2890, 2889, + 2858, 2859, 2891, 2890, + 2859, 2860, 2892, 2891, + 2860, 2861, 2893, 2892, + 2861, 2862, 2894, 2893, + 2862, 2863, 2895, 2894, + 2863, 2864, 2896, 2895, + 2864, 2865, 2897, 2896, + 2865, 2866, 2898, 2897, + 2866, 2867, 2899, 2898, + 2867, 2868, 2900, 2899, + 2868, 2869, 2901, 2900, + 2869, 2870, 2902, 2901, + 2870, 2871, 2903, 2902, + 2871, 2872, 2904, 2903, + 2872, 2873, 2905, 2904, + 2873, 2874, 2906, 2905, + 2874, 2875, 2907, 2906, + 2875, 172, 206, 2907, + 2032, 2876, 2908, 2065, + 2876, 2877, 2909, 2908, + 2877, 2878, 2910, 2909, + 2878, 2879, 2911, 2910, + 2879, 2880, 2912, 2911, + 2880, 2881, 2913, 2912, + 2881, 2882, 2914, 2913, + 2882, 2883, 2915, 2914, + 2883, 2884, 2916, 2915, + 2884, 2885, 2917, 2916, + 2885, 2886, 2918, 2917, + 2886, 2887, 2919, 2918, + 2887, 2888, 2920, 2919, + 2888, 2889, 2921, 2920, + 2889, 2890, 2922, 2921, + 2890, 2891, 2923, 2922, + 2891, 2892, 2924, 2923, + 2892, 2893, 2925, 2924, + 2893, 2894, 2926, 2925, + 2894, 2895, 2927, 2926, + 2895, 2896, 2928, 2927, + 2896, 2897, 2929, 2928, + 2897, 2898, 2930, 2929, + 2898, 2899, 2931, 2930, + 2899, 2900, 2932, 2931, + 2900, 2901, 2933, 2932, + 2901, 2902, 2934, 2933, + 2902, 2903, 2935, 2934, + 2903, 2904, 2936, 2935, + 2904, 2905, 2937, 2936, + 2905, 2906, 2938, 2937, + 2906, 2907, 2939, 2938, + 2907, 206, 240, 2939, + 2065, 2908, 2940, 2098, + 2908, 2909, 2941, 2940, + 2909, 2910, 2942, 2941, + 2910, 2911, 2943, 2942, + 2911, 2912, 2944, 2943, + 2912, 2913, 2945, 2944, + 2913, 2914, 2946, 2945, + 2914, 2915, 2947, 2946, + 2915, 2916, 2948, 2947, + 2916, 2917, 2949, 2948, + 2917, 2918, 2950, 2949, + 2918, 2919, 2951, 2950, + 2919, 2920, 2952, 2951, + 2920, 2921, 2953, 2952, + 2921, 2922, 2954, 2953, + 2922, 2923, 2955, 2954, + 2923, 2924, 2956, 2955, + 2924, 2925, 2957, 2956, + 2925, 2926, 2958, 2957, + 2926, 2927, 2959, 2958, + 2927, 2928, 2960, 2959, + 2928, 2929, 2961, 2960, + 2929, 2930, 2962, 2961, + 2930, 2931, 2963, 2962, + 2931, 2932, 2964, 2963, + 2932, 2933, 2965, 2964, + 2933, 2934, 2966, 2965, + 2934, 2935, 2967, 2966, + 2935, 2936, 2968, 2967, + 2936, 2937, 2969, 2968, + 2937, 2938, 2970, 2969, + 2938, 2939, 2971, 2970, + 2939, 240, 274, 2971, + 2098, 2940, 2972, 2131, + 2940, 2941, 2973, 2972, + 2941, 2942, 2974, 2973, + 2942, 2943, 2975, 2974, + 2943, 2944, 2976, 2975, + 2944, 2945, 2977, 2976, + 2945, 2946, 2978, 2977, + 2946, 2947, 2979, 2978, + 2947, 2948, 2980, 2979, + 2948, 2949, 2981, 2980, + 2949, 2950, 2982, 2981, + 2950, 2951, 2983, 2982, + 2951, 2952, 2984, 2983, + 2952, 2953, 2985, 2984, + 2953, 2954, 2986, 2985, + 2954, 2955, 2987, 2986, + 2955, 2956, 2988, 2987, + 2956, 2957, 2989, 2988, + 2957, 2958, 2990, 2989, + 2958, 2959, 2991, 2990, + 2959, 2960, 2992, 2991, + 2960, 2961, 2993, 2992, + 2961, 2962, 2994, 2993, + 2962, 2963, 2995, 2994, + 2963, 2964, 2996, 2995, + 2964, 2965, 2997, 2996, + 2965, 2966, 2998, 2997, + 2966, 2967, 2999, 2998, + 2967, 2968, 3000, 2999, + 2968, 2969, 3001, 3000, + 2969, 2970, 3002, 3001, + 2970, 2971, 3003, 3002, + 2971, 274, 308, 3003, + 2131, 2972, 3004, 2164, + 2972, 2973, 3005, 3004, + 2973, 2974, 3006, 3005, + 2974, 2975, 3007, 3006, + 2975, 2976, 3008, 3007, + 2976, 2977, 3009, 3008, + 2977, 2978, 3010, 3009, + 2978, 2979, 3011, 3010, + 2979, 2980, 3012, 3011, + 2980, 2981, 3013, 3012, + 2981, 2982, 3014, 3013, + 2982, 2983, 3015, 3014, + 2983, 2984, 3016, 3015, + 2984, 2985, 3017, 3016, + 2985, 2986, 3018, 3017, + 2986, 2987, 3019, 3018, + 2987, 2988, 3020, 3019, + 2988, 2989, 3021, 3020, + 2989, 2990, 3022, 3021, + 2990, 2991, 3023, 3022, + 2991, 2992, 3024, 3023, + 2992, 2993, 3025, 3024, + 2993, 2994, 3026, 3025, + 2994, 2995, 3027, 3026, + 2995, 2996, 3028, 3027, + 2996, 2997, 3029, 3028, + 2997, 2998, 3030, 3029, + 2998, 2999, 3031, 3030, + 2999, 3000, 3032, 3031, + 3000, 3001, 3033, 3032, + 3001, 3002, 3034, 3033, + 3002, 3003, 3035, 3034, + 3003, 308, 342, 3035, + 2164, 3004, 3036, 2197, + 3004, 3005, 3037, 3036, + 3005, 3006, 3038, 3037, + 3006, 3007, 3039, 3038, + 3007, 3008, 3040, 3039, + 3008, 3009, 3041, 3040, + 3009, 3010, 3042, 3041, + 3010, 3011, 3043, 3042, + 3011, 3012, 3044, 3043, + 3012, 3013, 3045, 3044, + 3013, 3014, 3046, 3045, + 3014, 3015, 3047, 3046, + 3015, 3016, 3048, 3047, + 3016, 3017, 3049, 3048, + 3017, 3018, 3050, 3049, + 3018, 3019, 3051, 3050, + 3019, 3020, 3052, 3051, + 3020, 3021, 3053, 3052, + 3021, 3022, 3054, 3053, + 3022, 3023, 3055, 3054, + 3023, 3024, 3056, 3055, + 3024, 3025, 3057, 3056, + 3025, 3026, 3058, 3057, + 3026, 3027, 3059, 3058, + 3027, 3028, 3060, 3059, + 3028, 3029, 3061, 3060, + 3029, 3030, 3062, 3061, + 3030, 3031, 3063, 3062, + 3031, 3032, 3064, 3063, + 3032, 3033, 3065, 3064, + 3033, 3034, 3066, 3065, + 3034, 3035, 3067, 3066, + 3035, 342, 376, 3067, + 2197, 3036, 3068, 2230, + 3036, 3037, 3069, 3068, + 3037, 3038, 3070, 3069, + 3038, 3039, 3071, 3070, + 3039, 3040, 3072, 3071, + 3040, 3041, 3073, 3072, + 3041, 3042, 3074, 3073, + 3042, 3043, 3075, 3074, + 3043, 3044, 3076, 3075, + 3044, 3045, 3077, 3076, + 3045, 3046, 3078, 3077, + 3046, 3047, 3079, 3078, + 3047, 3048, 3080, 3079, + 3048, 3049, 3081, 3080, + 3049, 3050, 3082, 3081, + 3050, 3051, 3083, 3082, + 3051, 3052, 3084, 3083, + 3052, 3053, 3085, 3084, + 3053, 3054, 3086, 3085, + 3054, 3055, 3087, 3086, + 3055, 3056, 3088, 3087, + 3056, 3057, 3089, 3088, + 3057, 3058, 3090, 3089, + 3058, 3059, 3091, 3090, + 3059, 3060, 3092, 3091, + 3060, 3061, 3093, 3092, + 3061, 3062, 3094, 3093, + 3062, 3063, 3095, 3094, + 3063, 3064, 3096, 3095, + 3064, 3065, 3097, 3096, + 3065, 3066, 3098, 3097, + 3066, 3067, 3099, 3098, + 3067, 376, 410, 3099, + 2230, 3068, 3100, 2263, + 3068, 3069, 3101, 3100, + 3069, 3070, 3102, 3101, + 3070, 3071, 3103, 3102, + 3071, 3072, 3104, 3103, + 3072, 3073, 3105, 3104, + 3073, 3074, 3106, 3105, + 3074, 3075, 3107, 3106, + 3075, 3076, 3108, 3107, + 3076, 3077, 3109, 3108, + 3077, 3078, 3110, 3109, + 3078, 3079, 3111, 3110, + 3079, 3080, 3112, 3111, + 3080, 3081, 3113, 3112, + 3081, 3082, 3114, 3113, + 3082, 3083, 3115, 3114, + 3083, 3084, 3116, 3115, + 3084, 3085, 3117, 3116, + 3085, 3086, 3118, 3117, + 3086, 3087, 3119, 3118, + 3087, 3088, 3120, 3119, + 3088, 3089, 3121, 3120, + 3089, 3090, 3122, 3121, + 3090, 3091, 3123, 3122, + 3091, 3092, 3124, 3123, + 3092, 3093, 3125, 3124, + 3093, 3094, 3126, 3125, + 3094, 3095, 3127, 3126, + 3095, 3096, 3128, 3127, + 3096, 3097, 3129, 3128, + 3097, 3098, 3130, 3129, + 3098, 3099, 3131, 3130, + 3099, 410, 444, 3131, + 2263, 3100, 3132, 2296, + 3100, 3101, 3133, 3132, + 3101, 3102, 3134, 3133, + 3102, 3103, 3135, 3134, + 3103, 3104, 3136, 3135, + 3104, 3105, 3137, 3136, + 3105, 3106, 3138, 3137, + 3106, 3107, 3139, 3138, + 3107, 3108, 3140, 3139, + 3108, 3109, 3141, 3140, + 3109, 3110, 3142, 3141, + 3110, 3111, 3143, 3142, + 3111, 3112, 3144, 3143, + 3112, 3113, 3145, 3144, + 3113, 3114, 3146, 3145, + 3114, 3115, 3147, 3146, + 3115, 3116, 3148, 3147, + 3116, 3117, 3149, 3148, + 3117, 3118, 3150, 3149, + 3118, 3119, 3151, 3150, + 3119, 3120, 3152, 3151, + 3120, 3121, 3153, 3152, + 3121, 3122, 3154, 3153, + 3122, 3123, 3155, 3154, + 3123, 3124, 3156, 3155, + 3124, 3125, 3157, 3156, + 3125, 3126, 3158, 3157, + 3126, 3127, 3159, 3158, + 3127, 3128, 3160, 3159, + 3128, 3129, 3161, 3160, + 3129, 3130, 3162, 3161, + 3130, 3131, 3163, 3162, + 3131, 444, 478, 3163, + 2296, 3132, 3164, 2329, + 3132, 3133, 3165, 3164, + 3133, 3134, 3166, 3165, + 3134, 3135, 3167, 3166, + 3135, 3136, 3168, 3167, + 3136, 3137, 3169, 3168, + 3137, 3138, 3170, 3169, + 3138, 3139, 3171, 3170, + 3139, 3140, 3172, 3171, + 3140, 3141, 3173, 3172, + 3141, 3142, 3174, 3173, + 3142, 3143, 3175, 3174, + 3143, 3144, 3176, 3175, + 3144, 3145, 3177, 3176, + 3145, 3146, 3178, 3177, + 3146, 3147, 3179, 3178, + 3147, 3148, 3180, 3179, + 3148, 3149, 3181, 3180, + 3149, 3150, 3182, 3181, + 3150, 3151, 3183, 3182, + 3151, 3152, 3184, 3183, + 3152, 3153, 3185, 3184, + 3153, 3154, 3186, 3185, + 3154, 3155, 3187, 3186, + 3155, 3156, 3188, 3187, + 3156, 3157, 3189, 3188, + 3157, 3158, 3190, 3189, + 3158, 3159, 3191, 3190, + 3159, 3160, 3192, 3191, + 3160, 3161, 3193, 3192, + 3161, 3162, 3194, 3193, + 3162, 3163, 3195, 3194, + 3163, 478, 512, 3195, + 2329, 3164, 3196, 2362, + 3164, 3165, 3197, 3196, + 3165, 3166, 3198, 3197, + 3166, 3167, 3199, 3198, + 3167, 3168, 3200, 3199, + 3168, 3169, 3201, 3200, + 3169, 3170, 3202, 3201, + 3170, 3171, 3203, 3202, + 3171, 3172, 3204, 3203, + 3172, 3173, 3205, 3204, + 3173, 3174, 3206, 3205, + 3174, 3175, 3207, 3206, + 3175, 3176, 3208, 3207, + 3176, 3177, 3209, 3208, + 3177, 3178, 3210, 3209, + 3178, 3179, 3211, 3210, + 3179, 3180, 3212, 3211, + 3180, 3181, 3213, 3212, + 3181, 3182, 3214, 3213, + 3182, 3183, 3215, 3214, + 3183, 3184, 3216, 3215, + 3184, 3185, 3217, 3216, + 3185, 3186, 3218, 3217, + 3186, 3187, 3219, 3218, + 3187, 3188, 3220, 3219, + 3188, 3189, 3221, 3220, + 3189, 3190, 3222, 3221, + 3190, 3191, 3223, 3222, + 3191, 3192, 3224, 3223, + 3192, 3193, 3225, 3224, + 3193, 3194, 3226, 3225, + 3194, 3195, 3227, 3226, + 3195, 512, 546, 3227, + 2362, 3196, 3228, 2395, + 3196, 3197, 3229, 3228, + 3197, 3198, 3230, 3229, + 3198, 3199, 3231, 3230, + 3199, 3200, 3232, 3231, + 3200, 3201, 3233, 3232, + 3201, 3202, 3234, 3233, + 3202, 3203, 3235, 3234, + 3203, 3204, 3236, 3235, + 3204, 3205, 3237, 3236, + 3205, 3206, 3238, 3237, + 3206, 3207, 3239, 3238, + 3207, 3208, 3240, 3239, + 3208, 3209, 3241, 3240, + 3209, 3210, 3242, 3241, + 3210, 3211, 3243, 3242, + 3211, 3212, 3244, 3243, + 3212, 3213, 3245, 3244, + 3213, 3214, 3246, 3245, + 3214, 3215, 3247, 3246, + 3215, 3216, 3248, 3247, + 3216, 3217, 3249, 3248, + 3217, 3218, 3250, 3249, + 3218, 3219, 3251, 3250, + 3219, 3220, 3252, 3251, + 3220, 3221, 3253, 3252, + 3221, 3222, 3254, 3253, + 3222, 3223, 3255, 3254, + 3223, 3224, 3256, 3255, + 3224, 3225, 3257, 3256, + 3225, 3226, 3258, 3257, + 3226, 3227, 3259, 3258, + 3227, 546, 580, 3259, + 2395, 3228, 3260, 2428, + 3228, 3229, 3261, 3260, + 3229, 3230, 3262, 3261, + 3230, 3231, 3263, 3262, + 3231, 3232, 3264, 3263, + 3232, 3233, 3265, 3264, + 3233, 3234, 3266, 3265, + 3234, 3235, 3267, 3266, + 3235, 3236, 3268, 3267, + 3236, 3237, 3269, 3268, + 3237, 3238, 3270, 3269, + 3238, 3239, 3271, 3270, + 3239, 3240, 3272, 3271, + 3240, 3241, 3273, 3272, + 3241, 3242, 3274, 3273, + 3242, 3243, 3275, 3274, + 3243, 3244, 3276, 3275, + 3244, 3245, 3277, 3276, + 3245, 3246, 3278, 3277, + 3246, 3247, 3279, 3278, + 3247, 3248, 3280, 3279, + 3248, 3249, 3281, 3280, + 3249, 3250, 3282, 3281, + 3250, 3251, 3283, 3282, + 3251, 3252, 3284, 3283, + 3252, 3253, 3285, 3284, + 3253, 3254, 3286, 3285, + 3254, 3255, 3287, 3286, + 3255, 3256, 3288, 3287, + 3256, 3257, 3289, 3288, + 3257, 3258, 3290, 3289, + 3258, 3259, 3291, 3290, + 3259, 580, 614, 3291, + 3276, 3277, 3292, 3275, + 3277, 3278, 3293, 3292, + 3278, 3279, 3294, 3293, + 3279, 3280, 3295, 3294, + 3280, 3281, 3296, 3295, + 3281, 3282, 3297, 3296, + 3282, 3283, 3298, 3297, + 3283, 3284, 3299, 3298, + 3284, 3285, 3300, 3299, + 3285, 3286, 3301, 3300, + 3286, 3287, 3302, 3301, + 3287, 3288, 3303, 3302, + 3288, 3289, 3304, 3303, + 3289, 3290, 3305, 3304, + 3290, 3291, 3306, 3305, + 3291, 614, 902, 3306, + 3275, 3292, 3307, 3274, + 3292, 3293, 3308, 3307, + 3293, 3294, 3309, 3308, + 3294, 3295, 3310, 3309, + 3295, 3296, 3311, 3310, + 3296, 3297, 3312, 3311, + 3297, 3298, 3313, 3312, + 3298, 3299, 3314, 3313, + 3299, 3300, 3315, 3314, + 3300, 3301, 3316, 3315, + 3301, 3302, 3317, 3316, + 3302, 3303, 3318, 3317, + 3303, 3304, 3319, 3318, + 3304, 3305, 3320, 3319, + 3305, 3306, 3321, 3320, + 3306, 902, 903, 3321, + 3274, 3307, 3322, 3273, + 3307, 3308, 3323, 3322, + 3308, 3309, 3324, 3323, + 3309, 3310, 3325, 3324, + 3310, 3311, 3326, 3325, + 3311, 3312, 3327, 3326, + 3312, 3313, 3328, 3327, + 3313, 3314, 3329, 3328, + 3314, 3315, 3330, 3329, + 3315, 3316, 3331, 3330, + 3316, 3317, 3332, 3331, + 3317, 3318, 3333, 3332, + 3318, 3319, 3334, 3333, + 3319, 3320, 3335, 3334, + 3320, 3321, 3336, 3335, + 3321, 903, 904, 3336, + 3273, 3322, 3337, 3272, + 3322, 3323, 3338, 3337, + 3323, 3324, 3339, 3338, + 3324, 3325, 3340, 3339, + 3325, 3326, 3341, 3340, + 3326, 3327, 3342, 3341, + 3327, 3328, 3343, 3342, + 3328, 3329, 3344, 3343, + 3329, 3330, 3345, 3344, + 3330, 3331, 3346, 3345, + 3331, 3332, 3347, 3346, + 3332, 3333, 3348, 3347, + 3333, 3334, 3349, 3348, + 3334, 3335, 3350, 3349, + 3335, 3336, 3351, 3350, + 3336, 904, 905, 3351, + 3272, 3337, 3352, 3271, + 3337, 3338, 3353, 3352, + 3338, 3339, 3354, 3353, + 3339, 3340, 3355, 3354, + 3340, 3341, 3356, 3355, + 3341, 3342, 3357, 3356, + 3342, 3343, 3358, 3357, + 3343, 3344, 3359, 3358, + 3344, 3345, 3360, 3359, + 3345, 3346, 3361, 3360, + 3346, 3347, 3362, 3361, + 3347, 3348, 3363, 3362, + 3348, 3349, 3364, 3363, + 3349, 3350, 3365, 3364, + 3350, 3351, 3366, 3365, + 3351, 905, 906, 3366, + 3271, 3352, 3367, 3270, + 3352, 3353, 3368, 3367, + 3353, 3354, 3369, 3368, + 3354, 3355, 3370, 3369, + 3355, 3356, 3371, 3370, + 3356, 3357, 3372, 3371, + 3357, 3358, 3373, 3372, + 3358, 3359, 3374, 3373, + 3359, 3360, 3375, 3374, + 3360, 3361, 3376, 3375, + 3361, 3362, 3377, 3376, + 3362, 3363, 3378, 3377, + 3363, 3364, 3379, 3378, + 3364, 3365, 3380, 3379, + 3365, 3366, 3381, 3380, + 3366, 906, 907, 3381, + 3270, 3367, 3382, 3269, + 3367, 3368, 3383, 3382, + 3368, 3369, 3384, 3383, + 3369, 3370, 3385, 3384, + 3370, 3371, 3386, 3385, + 3371, 3372, 3387, 3386, + 3372, 3373, 3388, 3387, + 3373, 3374, 3389, 3388, + 3374, 3375, 3390, 3389, + 3375, 3376, 3391, 3390, + 3376, 3377, 3392, 3391, + 3377, 3378, 3393, 3392, + 3378, 3379, 3394, 3393, + 3379, 3380, 3395, 3394, + 3380, 3381, 3396, 3395, + 3381, 907, 908, 3396, + 3269, 3382, 3397, 3268, + 3382, 3383, 3398, 3397, + 3383, 3384, 3399, 3398, + 3384, 3385, 3400, 3399, + 3385, 3386, 3401, 3400, + 3386, 3387, 3402, 3401, + 3387, 3388, 3403, 3402, + 3388, 3389, 3404, 3403, + 3389, 3390, 3405, 3404, + 3390, 3391, 3406, 3405, + 3391, 3392, 3407, 3406, + 3392, 3393, 3408, 3407, + 3393, 3394, 3409, 3408, + 3394, 3395, 3410, 3409, + 3395, 3396, 3411, 3410, + 3396, 908, 909, 3411, + 3268, 3397, 3412, 3267, + 3397, 3398, 3413, 3412, + 3398, 3399, 3414, 3413, + 3399, 3400, 3415, 3414, + 3400, 3401, 3416, 3415, + 3401, 3402, 3417, 3416, + 3402, 3403, 3418, 3417, + 3403, 3404, 3419, 3418, + 3404, 3405, 3420, 3419, + 3405, 3406, 3421, 3420, + 3406, 3407, 3422, 3421, + 3407, 3408, 3423, 3422, + 3408, 3409, 3424, 3423, + 3409, 3410, 3425, 3424, + 3410, 3411, 3426, 3425, + 3411, 909, 910, 3426, + 3267, 3412, 3427, 3266, + 3412, 3413, 3428, 3427, + 3413, 3414, 3429, 3428, + 3414, 3415, 3430, 3429, + 3415, 3416, 3431, 3430, + 3416, 3417, 3432, 3431, + 3417, 3418, 3433, 3432, + 3418, 3419, 3434, 3433, + 3419, 3420, 3435, 3434, + 3420, 3421, 3436, 3435, + 3421, 3422, 3437, 3436, + 3422, 3423, 3438, 3437, + 3423, 3424, 3439, 3438, + 3424, 3425, 3440, 3439, + 3425, 3426, 3441, 3440, + 3426, 910, 911, 3441, + 3266, 3427, 3442, 3265, + 3427, 3428, 3443, 3442, + 3428, 3429, 3444, 3443, + 3429, 3430, 3445, 3444, + 3430, 3431, 3446, 3445, + 3431, 3432, 3447, 3446, + 3432, 3433, 3448, 3447, + 3433, 3434, 3449, 3448, + 3434, 3435, 3450, 3449, + 3435, 3436, 3451, 3450, + 3436, 3437, 3452, 3451, + 3437, 3438, 3453, 3452, + 3438, 3439, 3454, 3453, + 3439, 3440, 3455, 3454, + 3440, 3441, 3456, 3455, + 3441, 911, 912, 3456, + 3265, 3442, 3457, 3264, + 3442, 3443, 3458, 3457, + 3443, 3444, 3459, 3458, + 3444, 3445, 3460, 3459, + 3445, 3446, 3461, 3460, + 3446, 3447, 3462, 3461, + 3447, 3448, 3463, 3462, + 3448, 3449, 3464, 3463, + 3449, 3450, 3465, 3464, + 3450, 3451, 3466, 3465, + 3451, 3452, 3467, 3466, + 3452, 3453, 3468, 3467, + 3453, 3454, 3469, 3468, + 3454, 3455, 3470, 3469, + 3455, 3456, 3471, 3470, + 3456, 912, 913, 3471, + 3264, 3457, 3472, 3263, + 3457, 3458, 3473, 3472, + 3458, 3459, 3474, 3473, + 3459, 3460, 3475, 3474, + 3460, 3461, 3476, 3475, + 3461, 3462, 3477, 3476, + 3462, 3463, 3478, 3477, + 3463, 3464, 3479, 3478, + 3464, 3465, 3480, 3479, + 3465, 3466, 3481, 3480, + 3466, 3467, 3482, 3481, + 3467, 3468, 3483, 3482, + 3468, 3469, 3484, 3483, + 3469, 3470, 3485, 3484, + 3470, 3471, 3486, 3485, + 3471, 913, 914, 3486, + 3263, 3472, 3487, 3262, + 3472, 3473, 3488, 3487, + 3473, 3474, 3489, 3488, + 3474, 3475, 3490, 3489, + 3475, 3476, 3491, 3490, + 3476, 3477, 3492, 3491, + 3477, 3478, 3493, 3492, + 3478, 3479, 3494, 3493, + 3479, 3480, 3495, 3494, + 3480, 3481, 3496, 3495, + 3481, 3482, 3497, 3496, + 3482, 3483, 3498, 3497, + 3483, 3484, 3499, 3498, + 3484, 3485, 3500, 3499, + 3485, 3486, 3501, 3500, + 3486, 914, 915, 3501, + 3262, 3487, 3502, 3261, + 3487, 3488, 3503, 3502, + 3488, 3489, 3504, 3503, + 3489, 3490, 3505, 3504, + 3490, 3491, 3506, 3505, + 3491, 3492, 3507, 3506, + 3492, 3493, 3508, 3507, + 3493, 3494, 3509, 3508, + 3494, 3495, 3510, 3509, + 3495, 3496, 3511, 3510, + 3496, 3497, 3512, 3511, + 3497, 3498, 3513, 3512, + 3498, 3499, 3514, 3513, + 3499, 3500, 3515, 3514, + 3500, 3501, 3516, 3515, + 3501, 915, 916, 3516, + 3261, 3502, 3517, 3260, + 3502, 3503, 3518, 3517, + 3503, 3504, 3519, 3518, + 3504, 3505, 3520, 3519, + 3505, 3506, 3521, 3520, + 3506, 3507, 3522, 3521, + 3507, 3508, 3523, 3522, + 3508, 3509, 3524, 3523, + 3509, 3510, 3525, 3524, + 3510, 3511, 3526, 3525, + 3511, 3512, 3527, 3526, + 3512, 3513, 3528, 3527, + 3513, 3514, 3529, 3528, + 3514, 3515, 3530, 3529, + 3515, 3516, 3531, 3530, + 3516, 916, 917, 3531, + 3260, 3517, 2445, 2428, + 3517, 3518, 2462, 2445, + 3518, 3519, 2479, 2462, + 3519, 3520, 2496, 2479, + 3520, 3521, 2513, 2496, + 3521, 3522, 2530, 2513, + 3522, 3523, 2547, 2530, + 3523, 3524, 2564, 2547, + 3524, 3525, 2581, 2564, + 3525, 3526, 2598, 2581, + 3526, 3527, 2615, 2598, + 3527, 3528, 2632, 2615, + 3528, 3529, 2649, 2632, + 3529, 3530, 2666, 2649, + 3530, 3531, 2683, 2666, + 3531, 917, 918, 2683, + 1, 2746, 3532, 3533, + 3533, 3532, 3534, 3535, + 3535, 3534, 3536, 3537, + 3537, 3536, 3538, 3539, + 3539, 3538, 3540, 3541, + 2746, 2744, 3542, 3532, + 3532, 3542, 3543, 3534, + 3534, 3543, 3544, 3536, + 3536, 3544, 3545, 3538, + 3538, 3545, 3546, 3540, + 2744, 2742, 3547, 3542, + 3542, 3547, 3548, 3543, + 3543, 3548, 3549, 3544, + 3544, 3549, 3550, 3545, + 3545, 3550, 3551, 3546, + 2742, 2740, 3552, 3547, + 3547, 3552, 3553, 3548, + 3548, 3553, 3554, 3549, + 3549, 3554, 3555, 3550, + 3550, 3555, 3556, 3551, + 2740, 2738, 3557, 3552, + 3552, 3557, 3558, 3553, + 3553, 3558, 3559, 3554, + 3554, 3559, 3560, 3555, + 3555, 3560, 3561, 3556, + 2738, 2736, 3562, 3557, + 3557, 3562, 3563, 3558, + 3558, 3563, 3564, 3559, + 3559, 3564, 3565, 3560, + 3560, 3565, 3566, 3561, + 2736, 2734, 3567, 3562, + 3562, 3567, 3568, 3563, + 3563, 3568, 3569, 3564, + 3564, 3569, 3570, 3565, + 3565, 3570, 3571, 3566, + 2734, 2732, 3572, 3567, + 3567, 3572, 3573, 3568, + 3568, 3573, 3574, 3569, + 3569, 3574, 3575, 3570, + 3570, 3575, 3576, 3571, + 2732, 2730, 3577, 3572, + 3572, 3577, 3578, 3573, + 3573, 3578, 3579, 3574, + 3574, 3579, 3580, 3575, + 3575, 3580, 3581, 3576, + 2730, 2728, 3582, 3577, + 3577, 3582, 3583, 3578, + 3578, 3583, 3584, 3579, + 3579, 3584, 3585, 3580, + 3580, 3585, 3586, 3581, + 2728, 2726, 3587, 3582, + 3582, 3587, 3588, 3583, + 3583, 3588, 3589, 3584, + 3584, 3589, 3590, 3585, + 3585, 3590, 3591, 3586, + 2726, 2724, 3592, 3587, + 3587, 3592, 3593, 3588, + 3588, 3593, 3594, 3589, + 3589, 3594, 3595, 3590, + 3590, 3595, 3596, 3591, + 2724, 2722, 3597, 3592, + 3592, 3597, 3598, 3593, + 3593, 3598, 3599, 3594, + 3594, 3599, 3600, 3595, + 3595, 3600, 3601, 3596, + 2722, 2720, 3602, 3597, + 3597, 3602, 3603, 3598, + 3598, 3603, 3604, 3599, + 3599, 3604, 3605, 3600, + 3600, 3605, 3606, 3601, + 2720, 2718, 3607, 3602, + 3602, 3607, 3608, 3603, + 3603, 3608, 3609, 3604, + 3604, 3609, 3610, 3605, + 3605, 3610, 3611, 3606, + 2718, 2716, 3612, 3607, + 3607, 3612, 3613, 3608, + 3608, 3613, 3614, 3609, + 3609, 3614, 3615, 3610, + 3610, 3615, 3616, 3611, + 2716, 2714, 3617, 3612, + 3612, 3617, 3618, 3613, + 3613, 3618, 3619, 3614, + 3614, 3619, 3620, 3615, + 3615, 3620, 3621, 3616, + 2714, 2712, 3622, 3617, + 3617, 3622, 3623, 3618, + 3618, 3623, 3624, 3619, + 3619, 3624, 3625, 3620, + 3620, 3625, 3626, 3621, + 2712, 2710, 3627, 3622, + 3622, 3627, 3628, 3623, + 3623, 3628, 3629, 3624, + 3624, 3629, 3630, 3625, + 3625, 3630, 3631, 3626, + 2710, 2708, 3632, 3627, + 3627, 3632, 3633, 3628, + 3628, 3633, 3634, 3629, + 3629, 3634, 3635, 3630, + 3630, 3635, 3636, 3631, + 2708, 2706, 3637, 3632, + 3632, 3637, 3638, 3633, + 3633, 3638, 3639, 3634, + 3634, 3639, 3640, 3635, + 3635, 3640, 3641, 3636, + 2706, 2704, 3642, 3637, + 3637, 3642, 3643, 3638, + 3638, 3643, 3644, 3639, + 3639, 3644, 3645, 3640, + 3640, 3645, 3646, 3641, + 2704, 2702, 3647, 3642, + 3642, 3647, 3648, 3643, + 3643, 3648, 3649, 3644, + 3644, 3649, 3650, 3645, + 3645, 3650, 3651, 3646, + 2702, 2700, 3652, 3647, + 3647, 3652, 3653, 3648, + 3648, 3653, 3654, 3649, + 3649, 3654, 3655, 3650, + 3650, 3655, 3656, 3651, + 2700, 2698, 3657, 3652, + 3652, 3657, 3658, 3653, + 3653, 3658, 3659, 3654, + 3654, 3659, 3660, 3655, + 3655, 3660, 3661, 3656, + 2698, 2696, 3662, 3657, + 3657, 3662, 3663, 3658, + 3658, 3663, 3664, 3659, + 3659, 3664, 3665, 3660, + 3660, 3665, 3666, 3661, + 2696, 2694, 3667, 3662, + 3662, 3667, 3668, 3663, + 3663, 3668, 3669, 3664, + 3664, 3669, 3670, 3665, + 3665, 3670, 3671, 3666, + 2694, 2692, 3672, 3667, + 3667, 3672, 3673, 3668, + 3668, 3673, 3674, 3669, + 3669, 3674, 3675, 3670, + 3670, 3675, 3676, 3671, + 2692, 2690, 3677, 3672, + 3672, 3677, 3678, 3673, + 3673, 3678, 3679, 3674, + 3674, 3679, 3680, 3675, + 3675, 3680, 3681, 3676, + 2690, 2688, 3682, 3677, + 3677, 3682, 3683, 3678, + 3678, 3683, 3684, 3679, + 3679, 3684, 3685, 3680, + 3680, 3685, 3686, 3681, + 2688, 2686, 3687, 3682, + 3682, 3687, 3688, 3683, + 3683, 3688, 3689, 3684, + 3684, 3689, 3690, 3685, + 3685, 3690, 3691, 3686, + 2686, 2684, 3692, 3687, + 3687, 3692, 3693, 3688, + 3688, 3693, 3694, 3689, + 3689, 3694, 3695, 3690, + 3690, 3695, 3696, 3691, + 2684, 1866, 3697, 3692, + 3692, 3697, 3698, 3693, + 3693, 3698, 3699, 3694, + 3694, 3699, 3700, 3695, + 3695, 3700, 3701, 3696, + 1866, 1864, 3702, 3697, + 3697, 3702, 3703, 3698, + 3698, 3703, 3704, 3699, + 3699, 3704, 3705, 3700, + 3700, 3705, 3706, 3701, + 1864, 1862, 3707, 3702, + 3702, 3707, 3708, 3703, + 3703, 3708, 3709, 3704, + 3704, 3709, 3710, 3705, + 3705, 3710, 3711, 3706, + 1862, 1860, 3712, 3707, + 3707, 3712, 3713, 3708, + 3708, 3713, 3714, 3709, + 3709, 3714, 3715, 3710, + 3710, 3715, 3716, 3711, + 1860, 1858, 3717, 3712, + 3712, 3717, 3718, 3713, + 3713, 3718, 3719, 3714, + 3714, 3719, 3720, 3715, + 3715, 3720, 3721, 3716, + 1858, 1856, 3722, 3717, + 3717, 3722, 3723, 3718, + 3718, 3723, 3724, 3719, + 3719, 3724, 3725, 3720, + 3720, 3725, 3726, 3721, + 1856, 1854, 3727, 3722, + 3722, 3727, 3728, 3723, + 3723, 3728, 3729, 3724, + 3724, 3729, 3730, 3725, + 3725, 3730, 3731, 3726, + 1854, 1852, 3732, 3727, + 3727, 3732, 3733, 3728, + 3728, 3733, 3734, 3729, + 3729, 3734, 3735, 3730, + 3730, 3735, 3736, 3731, + 1852, 1850, 3737, 3732, + 3732, 3737, 3738, 3733, + 3733, 3738, 3739, 3734, + 3734, 3739, 3740, 3735, + 3735, 3740, 3741, 3736, + 1850, 1848, 3742, 3737, + 3737, 3742, 3743, 3738, + 3738, 3743, 3744, 3739, + 3739, 3744, 3745, 3740, + 3740, 3745, 3746, 3741, + 1848, 1846, 3747, 3742, + 3742, 3747, 3748, 3743, + 3743, 3748, 3749, 3744, + 3744, 3749, 3750, 3745, + 3745, 3750, 3751, 3746, + 1846, 1844, 3752, 3747, + 3747, 3752, 3753, 3748, + 3748, 3753, 3754, 3749, + 3749, 3754, 3755, 3750, + 3750, 3755, 3756, 3751, + 1844, 1842, 3757, 3752, + 3752, 3757, 3758, 3753, + 3753, 3758, 3759, 3754, + 3754, 3759, 3760, 3755, + 3755, 3760, 3761, 3756, + 1842, 1840, 3762, 3757, + 3757, 3762, 3763, 3758, + 3758, 3763, 3764, 3759, + 3759, 3764, 3765, 3760, + 3760, 3765, 3766, 3761, + 1840, 1838, 3767, 3762, + 3762, 3767, 3768, 3763, + 3763, 3768, 3769, 3764, + 3764, 3769, 3770, 3765, + 3765, 3770, 3771, 3766, + 1838, 1836, 3772, 3767, + 3767, 3772, 3773, 3768, + 3768, 3773, 3774, 3769, + 3769, 3774, 3775, 3770, + 3770, 3775, 3776, 3771, + 1836, 1834, 3777, 3772, + 3772, 3777, 3778, 3773, + 3773, 3778, 3779, 3774, + 3774, 3779, 3780, 3775, + 3775, 3780, 3781, 3776, + 1834, 1832, 3782, 3777, + 3777, 3782, 3783, 3778, + 3778, 3783, 3784, 3779, + 3779, 3784, 3785, 3780, + 3780, 3785, 3786, 3781, + 1832, 1830, 3787, 3782, + 3782, 3787, 3788, 3783, + 3783, 3788, 3789, 3784, + 3784, 3789, 3790, 3785, + 3785, 3790, 3791, 3786, + 1830, 1828, 3792, 3787, + 3787, 3792, 3793, 3788, + 3788, 3793, 3794, 3789, + 3789, 3794, 3795, 3790, + 3790, 3795, 3796, 3791, + 1828, 1826, 3797, 3792, + 3792, 3797, 3798, 3793, + 3793, 3798, 3799, 3794, + 3794, 3799, 3800, 3795, + 3795, 3800, 3801, 3796, + 1826, 1824, 3802, 3797, + 3797, 3802, 3803, 3798, + 3798, 3803, 3804, 3799, + 3799, 3804, 3805, 3800, + 3800, 3805, 3806, 3801, + 1824, 1822, 3807, 3802, + 3802, 3807, 3808, 3803, + 3803, 3808, 3809, 3804, + 3804, 3809, 3810, 3805, + 3805, 3810, 3811, 3806, + 1822, 1820, 3812, 3807, + 3807, 3812, 3813, 3808, + 3808, 3813, 3814, 3809, + 3809, 3814, 3815, 3810, + 3810, 3815, 3816, 3811, + 1820, 1818, 3817, 3812, + 3812, 3817, 3818, 3813, + 3813, 3818, 3819, 3814, + 3814, 3819, 3820, 3815, + 3815, 3820, 3821, 3816, + 1818, 1816, 3822, 3817, + 3817, 3822, 3823, 3818, + 3818, 3823, 3824, 3819, + 3819, 3824, 3825, 3820, + 3820, 3825, 3826, 3821, + 1816, 1814, 3827, 3822, + 3822, 3827, 3828, 3823, + 3823, 3828, 3829, 3824, + 3824, 3829, 3830, 3825, + 3825, 3830, 3831, 3826, + 1814, 1812, 3832, 3827, + 3827, 3832, 3833, 3828, + 3828, 3833, 3834, 3829, + 3829, 3834, 3835, 3830, + 3830, 3835, 3836, 3831, + 1812, 1810, 3837, 3832, + 3832, 3837, 3838, 3833, + 3833, 3838, 3839, 3834, + 3834, 3839, 3840, 3835, + 3835, 3840, 3841, 3836, + 1810, 1808, 3842, 3837, + 3837, 3842, 3843, 3838, + 3838, 3843, 3844, 3839, + 3839, 3844, 3845, 3840, + 3840, 3845, 3846, 3841, + 1808, 1806, 3847, 3842, + 3842, 3847, 3848, 3843, + 3843, 3848, 3849, 3844, + 3844, 3849, 3850, 3845, + 3845, 3850, 3851, 3846, + 1806, 1804, 3852, 3847, + 3847, 3852, 3853, 3848, + 3848, 3853, 3854, 3849, + 3849, 3854, 3855, 3850, + 3850, 3855, 3856, 3851, + 1804, 1802, 3857, 3852, + 3852, 3857, 3858, 3853, + 3853, 3858, 3859, 3854, + 3854, 3859, 3860, 3855, + 3855, 3860, 3861, 3856, + 1802, 983, 3862, 3857, + 3857, 3862, 3863, 3858, + 3858, 3863, 3864, 3859, + 3859, 3864, 3865, 3860, + 3860, 3865, 3866, 3861, + 983, 981, 3867, 3862, + 3862, 3867, 3868, 3863, + 3863, 3868, 3869, 3864, + 3864, 3869, 3870, 3865, + 3865, 3870, 3871, 3866, + 981, 979, 3872, 3867, + 3867, 3872, 3873, 3868, + 3868, 3873, 3874, 3869, + 3869, 3874, 3875, 3870, + 3870, 3875, 3876, 3871, + 979, 977, 3877, 3872, + 3872, 3877, 3878, 3873, + 3873, 3878, 3879, 3874, + 3874, 3879, 3880, 3875, + 3875, 3880, 3881, 3876, + 977, 975, 3882, 3877, + 3877, 3882, 3883, 3878, + 3878, 3883, 3884, 3879, + 3879, 3884, 3885, 3880, + 3880, 3885, 3886, 3881, + 975, 973, 3887, 3882, + 3882, 3887, 3888, 3883, + 3883, 3888, 3889, 3884, + 3884, 3889, 3890, 3885, + 3885, 3890, 3891, 3886, + 973, 971, 3892, 3887, + 3887, 3892, 3893, 3888, + 3888, 3893, 3894, 3889, + 3889, 3894, 3895, 3890, + 3890, 3895, 3896, 3891, + 971, 969, 3897, 3892, + 3892, 3897, 3898, 3893, + 3893, 3898, 3899, 3894, + 3894, 3899, 3900, 3895, + 3895, 3900, 3901, 3896, + 969, 967, 3902, 3897, + 3897, 3902, 3903, 3898, + 3898, 3903, 3904, 3899, + 3899, 3904, 3905, 3900, + 3900, 3905, 3906, 3901, + 967, 965, 3907, 3902, + 3902, 3907, 3908, 3903, + 3903, 3908, 3909, 3904, + 3904, 3909, 3910, 3905, + 3905, 3910, 3911, 3906, + 965, 963, 3912, 3907, + 3907, 3912, 3913, 3908, + 3908, 3913, 3914, 3909, + 3909, 3914, 3915, 3910, + 3910, 3915, 3916, 3911, + 963, 961, 3917, 3912, + 3912, 3917, 3918, 3913, + 3913, 3918, 3919, 3914, + 3914, 3919, 3920, 3915, + 3915, 3920, 3921, 3916, + 961, 959, 3922, 3917, + 3917, 3922, 3923, 3918, + 3918, 3923, 3924, 3919, + 3919, 3924, 3925, 3920, + 3920, 3925, 3926, 3921, + 959, 957, 3927, 3922, + 3922, 3927, 3928, 3923, + 3923, 3928, 3929, 3924, + 3924, 3929, 3930, 3925, + 3925, 3930, 3931, 3926, + 957, 955, 3932, 3927, + 3927, 3932, 3933, 3928, + 3928, 3933, 3934, 3929, + 3929, 3934, 3935, 3930, + 3930, 3935, 3936, 3931, + 955, 953, 3937, 3932, + 3932, 3937, 3938, 3933, + 3933, 3938, 3939, 3934, + 3934, 3939, 3940, 3935, + 3935, 3940, 3941, 3936, + 953, 951, 3942, 3937, + 3937, 3942, 3943, 3938, + 3938, 3943, 3944, 3939, + 3939, 3944, 3945, 3940, + 3940, 3945, 3946, 3941, + 951, 949, 3947, 3942, + 3942, 3947, 3948, 3943, + 3943, 3948, 3949, 3944, + 3944, 3949, 3950, 3945, + 3945, 3950, 3951, 3946, + 949, 947, 3952, 3947, + 3947, 3952, 3953, 3948, + 3948, 3953, 3954, 3949, + 3949, 3954, 3955, 3950, + 3950, 3955, 3956, 3951, + 947, 945, 3957, 3952, + 3952, 3957, 3958, 3953, + 3953, 3958, 3959, 3954, + 3954, 3959, 3960, 3955, + 3955, 3960, 3961, 3956, + 945, 943, 3962, 3957, + 3957, 3962, 3963, 3958, + 3958, 3963, 3964, 3959, + 3959, 3964, 3965, 3960, + 3960, 3965, 3966, 3961, + 943, 941, 3967, 3962, + 3962, 3967, 3968, 3963, + 3963, 3968, 3969, 3964, + 3964, 3969, 3970, 3965, + 3965, 3970, 3971, 3966, + 941, 939, 3972, 3967, + 3967, 3972, 3973, 3968, + 3968, 3973, 3974, 3969, + 3969, 3974, 3975, 3970, + 3970, 3975, 3976, 3971, + 939, 937, 3977, 3972, + 3972, 3977, 3978, 3973, + 3973, 3978, 3979, 3974, + 3974, 3979, 3980, 3975, + 3975, 3980, 3981, 3976, + 937, 935, 3982, 3977, + 3977, 3982, 3983, 3978, + 3978, 3983, 3984, 3979, + 3979, 3984, 3985, 3980, + 3980, 3985, 3986, 3981, + 935, 933, 3987, 3982, + 3982, 3987, 3988, 3983, + 3983, 3988, 3989, 3984, + 3984, 3989, 3990, 3985, + 3985, 3990, 3991, 3986, + 933, 931, 3992, 3987, + 3987, 3992, 3993, 3988, + 3988, 3993, 3994, 3989, + 3989, 3994, 3995, 3990, + 3990, 3995, 3996, 3991, + 931, 929, 3997, 3992, + 3992, 3997, 3998, 3993, + 3993, 3998, 3999, 3994, + 3994, 3999, 4000, 3995, + 3995, 4000, 4001, 3996, + 929, 927, 4002, 3997, + 3997, 4002, 4003, 3998, + 3998, 4003, 4004, 3999, + 3999, 4004, 4005, 4000, + 4000, 4005, 4006, 4001, + 927, 925, 4007, 4002, + 4002, 4007, 4008, 4003, + 4003, 4008, 4009, 4004, + 4004, 4009, 4010, 4005, + 4005, 4010, 4011, 4006, + 925, 923, 4012, 4007, + 4007, 4012, 4013, 4008, + 4008, 4013, 4014, 4009, + 4009, 4014, 4015, 4010, + 4010, 4015, 4016, 4011, + 923, 921, 4017, 4012, + 4012, 4017, 4018, 4013, + 4013, 4018, 4019, 4014, + 4014, 4019, 4020, 4015, + 4015, 4020, 4021, 4016, + 921, 919, 4022, 4017, + 4017, 4022, 4023, 4018, + 4018, 4023, 4024, 4019, + 4019, 4024, 4025, 4020, + 4020, 4025, 4026, 4021, + 919, 67, 4027, 4022, + 4022, 4027, 4028, 4023, + 4023, 4028, 4029, 4024, + 4024, 4029, 4030, 4025, + 4025, 4030, 4031, 4026, + 67, 65, 4032, 4027, + 4027, 4032, 4033, 4028, + 4028, 4033, 4034, 4029, + 4029, 4034, 4035, 4030, + 4030, 4035, 4036, 4031, + 65, 63, 4037, 4032, + 4032, 4037, 4038, 4033, + 4033, 4038, 4039, 4034, + 4034, 4039, 4040, 4035, + 4035, 4040, 4041, 4036, + 63, 61, 4042, 4037, + 4037, 4042, 4043, 4038, + 4038, 4043, 4044, 4039, + 4039, 4044, 4045, 4040, + 4040, 4045, 4046, 4041, + 61, 59, 4047, 4042, + 4042, 4047, 4048, 4043, + 4043, 4048, 4049, 4044, + 4044, 4049, 4050, 4045, + 4045, 4050, 4051, 4046, + 59, 57, 4052, 4047, + 4047, 4052, 4053, 4048, + 4048, 4053, 4054, 4049, + 4049, 4054, 4055, 4050, + 4050, 4055, 4056, 4051, + 57, 55, 4057, 4052, + 4052, 4057, 4058, 4053, + 4053, 4058, 4059, 4054, + 4054, 4059, 4060, 4055, + 4055, 4060, 4061, 4056, + 55, 53, 4062, 4057, + 4057, 4062, 4063, 4058, + 4058, 4063, 4064, 4059, + 4059, 4064, 4065, 4060, + 4060, 4065, 4066, 4061, + 53, 51, 4067, 4062, + 4062, 4067, 4068, 4063, + 4063, 4068, 4069, 4064, + 4064, 4069, 4070, 4065, + 4065, 4070, 4071, 4066, + 51, 49, 4072, 4067, + 4067, 4072, 4073, 4068, + 4068, 4073, 4074, 4069, + 4069, 4074, 4075, 4070, + 4070, 4075, 4076, 4071, + 49, 47, 4077, 4072, + 4072, 4077, 4078, 4073, + 4073, 4078, 4079, 4074, + 4074, 4079, 4080, 4075, + 4075, 4080, 4081, 4076, + 47, 45, 4082, 4077, + 4077, 4082, 4083, 4078, + 4078, 4083, 4084, 4079, + 4079, 4084, 4085, 4080, + 4080, 4085, 4086, 4081, + 45, 43, 4087, 4082, + 4082, 4087, 4088, 4083, + 4083, 4088, 4089, 4084, + 4084, 4089, 4090, 4085, + 4085, 4090, 4091, 4086, + 43, 41, 4092, 4087, + 4087, 4092, 4093, 4088, + 4088, 4093, 4094, 4089, + 4089, 4094, 4095, 4090, + 4090, 4095, 4096, 4091, + 41, 39, 4097, 4092, + 4092, 4097, 4098, 4093, + 4093, 4098, 4099, 4094, + 4094, 4099, 4100, 4095, + 4095, 4100, 4101, 4096, + 39, 37, 4102, 4097, + 4097, 4102, 4103, 4098, + 4098, 4103, 4104, 4099, + 4099, 4104, 4105, 4100, + 4100, 4105, 4106, 4101, + 37, 35, 4107, 4102, + 4102, 4107, 4108, 4103, + 4103, 4108, 4109, 4104, + 4104, 4109, 4110, 4105, + 4105, 4110, 4111, 4106, + 35, 33, 4112, 4107, + 4107, 4112, 4113, 4108, + 4108, 4113, 4114, 4109, + 4109, 4114, 4115, 4110, + 4110, 4115, 4116, 4111, + 33, 31, 4117, 4112, + 4112, 4117, 4118, 4113, + 4113, 4118, 4119, 4114, + 4114, 4119, 4120, 4115, + 4115, 4120, 4121, 4116, + 31, 29, 4122, 4117, + 4117, 4122, 4123, 4118, + 4118, 4123, 4124, 4119, + 4119, 4124, 4125, 4120, + 4120, 4125, 4126, 4121, + 29, 27, 4127, 4122, + 4122, 4127, 4128, 4123, + 4123, 4128, 4129, 4124, + 4124, 4129, 4130, 4125, + 4125, 4130, 4131, 4126, + 27, 25, 4132, 4127, + 4127, 4132, 4133, 4128, + 4128, 4133, 4134, 4129, + 4129, 4134, 4135, 4130, + 4130, 4135, 4136, 4131, + 25, 23, 4137, 4132, + 4132, 4137, 4138, 4133, + 4133, 4138, 4139, 4134, + 4134, 4139, 4140, 4135, + 4135, 4140, 4141, 4136, + 23, 21, 4142, 4137, + 4137, 4142, 4143, 4138, + 4138, 4143, 4144, 4139, + 4139, 4144, 4145, 4140, + 4140, 4145, 4146, 4141, + 21, 19, 4147, 4142, + 4142, 4147, 4148, 4143, + 4143, 4148, 4149, 4144, + 4144, 4149, 4150, 4145, + 4145, 4150, 4151, 4146, + 19, 17, 4152, 4147, + 4147, 4152, 4153, 4148, + 4148, 4153, 4154, 4149, + 4149, 4154, 4155, 4150, + 4150, 4155, 4156, 4151, + 17, 15, 4157, 4152, + 4152, 4157, 4158, 4153, + 4153, 4158, 4159, 4154, + 4154, 4159, 4160, 4155, + 4155, 4160, 4161, 4156, + 15, 13, 4162, 4157, + 4157, 4162, 4163, 4158, + 4158, 4163, 4164, 4159, + 4159, 4164, 4165, 4160, + 4160, 4165, 4166, 4161, + 13, 11, 4167, 4162, + 4162, 4167, 4168, 4163, + 4163, 4168, 4169, 4164, + 4164, 4169, 4170, 4165, + 4165, 4170, 4171, 4166, + 11, 9, 4172, 4167, + 4167, 4172, 4173, 4168, + 4168, 4173, 4174, 4169, + 4169, 4174, 4175, 4170, + 4170, 4175, 4176, 4171, + 9, 7, 4177, 4172, + 4172, 4177, 4178, 4173, + 4173, 4178, 4179, 4174, + 4174, 4179, 4180, 4175, + 4175, 4180, 4181, 4176, + 7, 5, 4182, 4177, + 4177, 4182, 4183, 4178, + 4178, 4183, 4184, 4179, + 4179, 4184, 4185, 4180, + 4180, 4185, 4186, 4181, + 5, 2, 4187, 4182, + 4182, 4187, 4188, 4183, + 4183, 4188, 4189, 4184, + 4184, 4189, 4190, 4185, + 4185, 4190, 4191, 4186, + 2, 1, 3533, 4187, + 4187, 3533, 3535, 4188, + 4188, 3535, 3537, 4189, + 4189, 3537, 3539, 4190, + 4190, 3539, 3541, 4191, + 3541, 3540, 4192, 4193, + 3540, 3546, 4194, 4192, + 3546, 3551, 4195, 4194, + 3551, 3556, 4196, 4195, + 3556, 3561, 4197, 4196, + 3561, 3566, 4198, 4197, + 3566, 3571, 4199, 4198, + 3571, 3576, 4200, 4199, + 3576, 3581, 4201, 4200, + 3581, 3586, 4202, 4201, + 3586, 3591, 4203, 4202, + 3591, 3596, 4204, 4203, + 3596, 3601, 4205, 4204, + 3601, 3606, 4206, 4205, + 3606, 3611, 4207, 4206, + 3611, 3616, 4208, 4207, + 3616, 3621, 4209, 4208, + 3621, 3626, 4210, 4209, + 3626, 3631, 4211, 4210, + 3631, 3636, 4212, 4211, + 3636, 3641, 4213, 4212, + 3641, 3646, 4214, 4213, + 3646, 3651, 4215, 4214, + 3651, 3656, 4216, 4215, + 3656, 3661, 4217, 4216, + 3661, 3666, 4218, 4217, + 3666, 3671, 4219, 4218, + 3671, 3676, 4220, 4219, + 3676, 3681, 4221, 4220, + 3681, 3686, 4222, 4221, + 3686, 3691, 4223, 4222, + 3691, 3696, 4224, 4223, + 3696, 3701, 4225, 4224, + 3701, 3706, 4226, 4225, + 3706, 3711, 4227, 4226, + 3711, 3716, 4228, 4227, + 3716, 3721, 4229, 4228, + 3721, 3726, 4230, 4229, + 3726, 3731, 4231, 4230, + 3731, 3736, 4232, 4231, + 3736, 3741, 4233, 4232, + 3741, 3746, 4234, 4233, + 3746, 3751, 4235, 4234, + 3751, 3756, 4236, 4235, + 3756, 3761, 4237, 4236, + 3761, 3766, 4238, 4237, + 3766, 3771, 4239, 4238, + 3771, 3776, 4240, 4239, + 3776, 3781, 4241, 4240, + 3781, 3786, 4242, 4241, + 3786, 3791, 4243, 4242, + 3791, 3796, 4244, 4243, + 3796, 3801, 4245, 4244, + 3801, 3806, 4246, 4245, + 3806, 3811, 4247, 4246, + 3811, 3816, 4248, 4247, + 3816, 3821, 4249, 4248, + 3821, 3826, 4250, 4249, + 3826, 3831, 4251, 4250, + 3831, 3836, 4252, 4251, + 3836, 3841, 4253, 4252, + 3841, 3846, 4254, 4253, + 3846, 3851, 4255, 4254, + 3851, 3856, 4256, 4255, + 3856, 3861, 4257, 4256, + 3861, 3866, 4258, 4257, + 3866, 3871, 4259, 4258, + 3871, 3876, 4260, 4259, + 3876, 3881, 4261, 4260, + 3881, 3886, 4262, 4261, + 3886, 3891, 4263, 4262, + 3891, 3896, 4264, 4263, + 3896, 3901, 4265, 4264, + 3901, 3906, 4266, 4265, + 3906, 3911, 4267, 4266, + 3911, 3916, 4268, 4267, + 3916, 3921, 4269, 4268, + 3921, 3926, 4270, 4269, + 3926, 3931, 4271, 4270, + 3931, 3936, 4272, 4271, + 3936, 3941, 4273, 4272, + 3941, 3946, 4274, 4273, + 3946, 3951, 4275, 4274, + 3951, 3956, 4276, 4275, + 3956, 3961, 4277, 4276, + 3961, 3966, 4278, 4277, + 3966, 3971, 4279, 4278, + 3971, 3976, 4280, 4279, + 3976, 3981, 4281, 4280, + 3981, 3986, 4282, 4281, + 3986, 3991, 4283, 4282, + 3991, 3996, 4284, 4283, + 3996, 4001, 4285, 4284, + 4001, 4006, 4286, 4285, + 4006, 4011, 4287, 4286, + 4011, 4016, 4288, 4287, + 4016, 4021, 4289, 4288, + 4021, 4026, 4290, 4289, + 4026, 4031, 4291, 4290, + 4031, 4036, 4292, 4291, + 4036, 4041, 4293, 4292, + 4041, 4046, 4294, 4293, + 4046, 4051, 4295, 4294, + 4051, 4056, 4296, 4295, + 4056, 4061, 4297, 4296, + 4061, 4066, 4298, 4297, + 4066, 4071, 4299, 4298, + 4071, 4076, 4300, 4299, + 4076, 4081, 4301, 4300, + 4081, 4086, 4302, 4301, + 4086, 4091, 4303, 4302, + 4091, 4096, 4304, 4303, + 4096, 4101, 4305, 4304, + 4101, 4106, 4306, 4305, + 4106, 4111, 4307, 4306, + 4111, 4116, 4308, 4307, + 4116, 4121, 4309, 4308, + 4121, 4126, 4310, 4309, + 4126, 4131, 4311, 4310, + 4131, 4136, 4312, 4311, + 4136, 4141, 4313, 4312, + 4141, 4146, 4314, 4313, + 4146, 4151, 4315, 4314, + 4151, 4156, 4316, 4315, + 4156, 4161, 4317, 4316, + 4161, 4166, 4318, 4317, + 4166, 4171, 4319, 4318, + 4171, 4176, 4320, 4319, + 4176, 4181, 4321, 4320, + 4181, 4186, 4322, 4321, + 4186, 4191, 4323, 4322, + 4191, 3541, 4193, 4323, + 4193, 4192, 4324, 4325, + 4325, 4324, 4326, 4327, + 4327, 4326, 4328, 4329, + 4329, 4328, 4330, 4331, + 4331, 4330, 4332, 4333, + 4333, 4332, 4334, 4335, + 4335, 4334, 4336, 4337, + 4337, 4336, 4338, 4339, + 4339, 4338, 4340, 4341, + 4341, 4340, 4342, 4343, + 4343, 4342, 4344, 4345, + 4345, 4344, 4346, 4347, + 4347, 4346, 4348, 4349, + 4349, 4348, 4350, 4351, + 4351, 4350, 4352, 4353, + 4353, 4352, 4354, 4355, + 4355, 4354, 4356, 4357, + 4357, 4356, 4358, 4359, + 4359, 4358, 4360, 4361, + 4361, 4360, 4362, 4363, + 4363, 4362, 4364, 4365, + 4365, 4364, 4366, 4367, + 4367, 4366, 4368, 4369, + 4369, 4368, 4370, 4371, + 4192, 4194, 4372, 4324, + 4324, 4372, 4373, 4326, + 4326, 4373, 4374, 4328, + 4328, 4374, 4375, 4330, + 4330, 4375, 4376, 4332, + 4332, 4376, 4377, 4334, + 4334, 4377, 4378, 4336, + 4336, 4378, 4379, 4338, + 4338, 4379, 4380, 4340, + 4340, 4380, 4381, 4342, + 4342, 4381, 4382, 4344, + 4344, 4382, 4383, 4346, + 4346, 4383, 4384, 4348, + 4348, 4384, 4385, 4350, + 4350, 4385, 4386, 4352, + 4352, 4386, 4387, 4354, + 4354, 4387, 4388, 4356, + 4356, 4388, 4389, 4358, + 4358, 4389, 4390, 4360, + 4360, 4390, 4391, 4362, + 4362, 4391, 4392, 4364, + 4364, 4392, 4393, 4366, + 4366, 4393, 4394, 4368, + 4368, 4394, 4395, 4370, + 4194, 4195, 4396, 4372, + 4372, 4396, 4397, 4373, + 4373, 4397, 4398, 4374, + 4374, 4398, 4399, 4375, + 4375, 4399, 4400, 4376, + 4376, 4400, 4401, 4377, + 4377, 4401, 4402, 4378, + 4378, 4402, 4403, 4379, + 4379, 4403, 4404, 4380, + 4380, 4404, 4405, 4381, + 4381, 4405, 4406, 4382, + 4382, 4406, 4407, 4383, + 4383, 4407, 4408, 4384, + 4384, 4408, 4409, 4385, + 4385, 4409, 4410, 4386, + 4386, 4410, 4411, 4387, + 4387, 4411, 4412, 4388, + 4388, 4412, 4413, 4389, + 4389, 4413, 4414, 4390, + 4390, 4414, 4415, 4391, + 4391, 4415, 4416, 4392, + 4392, 4416, 4417, 4393, + 4393, 4417, 4418, 4394, + 4394, 4418, 4419, 4395, + 4195, 4196, 4420, 4396, + 4396, 4420, 4421, 4397, + 4397, 4421, 4422, 4398, + 4398, 4422, 4423, 4399, + 4399, 4423, 4424, 4400, + 4400, 4424, 4425, 4401, + 4401, 4425, 4426, 4402, + 4402, 4426, 4427, 4403, + 4403, 4427, 4428, 4404, + 4404, 4428, 4429, 4405, + 4405, 4429, 4430, 4406, + 4406, 4430, 4431, 4407, + 4407, 4431, 4432, 4408, + 4408, 4432, 4433, 4409, + 4409, 4433, 4434, 4410, + 4410, 4434, 4435, 4411, + 4411, 4435, 4436, 4412, + 4412, 4436, 4437, 4413, + 4413, 4437, 4438, 4414, + 4414, 4438, 4439, 4415, + 4415, 4439, 4440, 4416, + 4416, 4440, 4441, 4417, + 4417, 4441, 4442, 4418, + 4418, 4442, 4443, 4419, + 4196, 4197, 4444, 4420, + 4420, 4444, 4445, 4421, + 4421, 4445, 4446, 4422, + 4422, 4446, 4447, 4423, + 4423, 4447, 4448, 4424, + 4424, 4448, 4449, 4425, + 4425, 4449, 4450, 4426, + 4426, 4450, 4451, 4427, + 4427, 4451, 4452, 4428, + 4428, 4452, 4453, 4429, + 4429, 4453, 4454, 4430, + 4430, 4454, 4455, 4431, + 4431, 4455, 4456, 4432, + 4432, 4456, 4457, 4433, + 4433, 4457, 4458, 4434, + 4434, 4458, 4459, 4435, + 4435, 4459, 4460, 4436, + 4436, 4460, 4461, 4437, + 4437, 4461, 4462, 4438, + 4438, 4462, 4463, 4439, + 4439, 4463, 4464, 4440, + 4440, 4464, 4465, 4441, + 4441, 4465, 4466, 4442, + 4442, 4466, 4467, 4443, + 4197, 4198, 4468, 4444, + 4444, 4468, 4469, 4445, + 4445, 4469, 4470, 4446, + 4446, 4470, 4471, 4447, + 4447, 4471, 4472, 4448, + 4448, 4472, 4473, 4449, + 4449, 4473, 4474, 4450, + 4450, 4474, 4475, 4451, + 4451, 4475, 4476, 4452, + 4452, 4476, 4477, 4453, + 4453, 4477, 4478, 4454, + 4454, 4478, 4479, 4455, + 4455, 4479, 4480, 4456, + 4456, 4480, 4481, 4457, + 4457, 4481, 4482, 4458, + 4458, 4482, 4483, 4459, + 4459, 4483, 4484, 4460, + 4460, 4484, 4485, 4461, + 4461, 4485, 4486, 4462, + 4462, 4486, 4487, 4463, + 4463, 4487, 4488, 4464, + 4464, 4488, 4489, 4465, + 4465, 4489, 4490, 4466, + 4466, 4490, 4491, 4467, + 4198, 4199, 4492, 4468, + 4468, 4492, 4493, 4469, + 4469, 4493, 4494, 4470, + 4470, 4494, 4495, 4471, + 4471, 4495, 4496, 4472, + 4472, 4496, 4497, 4473, + 4473, 4497, 4498, 4474, + 4474, 4498, 4499, 4475, + 4475, 4499, 4500, 4476, + 4476, 4500, 4501, 4477, + 4477, 4501, 4502, 4478, + 4478, 4502, 4503, 4479, + 4479, 4503, 4504, 4480, + 4480, 4504, 4505, 4481, + 4481, 4505, 4506, 4482, + 4482, 4506, 4507, 4483, + 4483, 4507, 4508, 4484, + 4484, 4508, 4509, 4485, + 4485, 4509, 4510, 4486, + 4486, 4510, 4511, 4487, + 4487, 4511, 4512, 4488, + 4488, 4512, 4513, 4489, + 4489, 4513, 4514, 4490, + 4490, 4514, 4515, 4491, + 4199, 4200, 4516, 4492, + 4492, 4516, 4517, 4493, + 4493, 4517, 4518, 4494, + 4494, 4518, 4519, 4495, + 4495, 4519, 4520, 4496, + 4496, 4520, 4521, 4497, + 4497, 4521, 4522, 4498, + 4498, 4522, 4523, 4499, + 4499, 4523, 4524, 4500, + 4500, 4524, 4525, 4501, + 4501, 4525, 4526, 4502, + 4502, 4526, 4527, 4503, + 4503, 4527, 4528, 4504, + 4504, 4528, 4529, 4505, + 4505, 4529, 4530, 4506, + 4506, 4530, 4531, 4507, + 4507, 4531, 4532, 4508, + 4508, 4532, 4533, 4509, + 4509, 4533, 4534, 4510, + 4510, 4534, 4535, 4511, + 4511, 4535, 4536, 4512, + 4512, 4536, 4537, 4513, + 4513, 4537, 4538, 4514, + 4514, 4538, 4539, 4515, + 4200, 4201, 4540, 4516, + 4516, 4540, 4541, 4517, + 4517, 4541, 4542, 4518, + 4518, 4542, 4543, 4519, + 4519, 4543, 4544, 4520, + 4520, 4544, 4545, 4521, + 4521, 4545, 4546, 4522, + 4522, 4546, 4547, 4523, + 4523, 4547, 4548, 4524, + 4524, 4548, 4549, 4525, + 4525, 4549, 4550, 4526, + 4526, 4550, 4551, 4527, + 4527, 4551, 4552, 4528, + 4528, 4552, 4553, 4529, + 4529, 4553, 4554, 4530, + 4530, 4554, 4555, 4531, + 4531, 4555, 4556, 4532, + 4532, 4556, 4557, 4533, + 4533, 4557, 4558, 4534, + 4534, 4558, 4559, 4535, + 4535, 4559, 4560, 4536, + 4536, 4560, 4561, 4537, + 4537, 4561, 4562, 4538, + 4538, 4562, 4563, 4539, + 4201, 4202, 4564, 4540, + 4540, 4564, 4565, 4541, + 4541, 4565, 4566, 4542, + 4542, 4566, 4567, 4543, + 4543, 4567, 4568, 4544, + 4544, 4568, 4569, 4545, + 4545, 4569, 4570, 4546, + 4546, 4570, 4571, 4547, + 4547, 4571, 4572, 4548, + 4548, 4572, 4573, 4549, + 4549, 4573, 4574, 4550, + 4550, 4574, 4575, 4551, + 4551, 4575, 4576, 4552, + 4552, 4576, 4577, 4553, + 4553, 4577, 4578, 4554, + 4554, 4578, 4579, 4555, + 4555, 4579, 4580, 4556, + 4556, 4580, 4581, 4557, + 4557, 4581, 4582, 4558, + 4558, 4582, 4583, 4559, + 4559, 4583, 4584, 4560, + 4560, 4584, 4585, 4561, + 4561, 4585, 4586, 4562, + 4562, 4586, 4587, 4563, + 4202, 4203, 4588, 4564, + 4564, 4588, 4589, 4565, + 4565, 4589, 4590, 4566, + 4566, 4590, 4591, 4567, + 4567, 4591, 4592, 4568, + 4568, 4592, 4593, 4569, + 4569, 4593, 4594, 4570, + 4570, 4594, 4595, 4571, + 4571, 4595, 4596, 4572, + 4572, 4596, 4597, 4573, + 4573, 4597, 4598, 4574, + 4574, 4598, 4599, 4575, + 4575, 4599, 4600, 4576, + 4576, 4600, 4601, 4577, + 4577, 4601, 4602, 4578, + 4578, 4602, 4603, 4579, + 4579, 4603, 4604, 4580, + 4580, 4604, 4605, 4581, + 4581, 4605, 4606, 4582, + 4582, 4606, 4607, 4583, + 4583, 4607, 4608, 4584, + 4584, 4608, 4609, 4585, + 4585, 4609, 4610, 4586, + 4586, 4610, 4611, 4587, + 4203, 4204, 4612, 4588, + 4588, 4612, 4613, 4589, + 4589, 4613, 4614, 4590, + 4590, 4614, 4615, 4591, + 4591, 4615, 4616, 4592, + 4592, 4616, 4617, 4593, + 4593, 4617, 4618, 4594, + 4594, 4618, 4619, 4595, + 4595, 4619, 4620, 4596, + 4596, 4620, 4621, 4597, + 4597, 4621, 4622, 4598, + 4598, 4622, 4623, 4599, + 4599, 4623, 4624, 4600, + 4600, 4624, 4625, 4601, + 4601, 4625, 4626, 4602, + 4602, 4626, 4627, 4603, + 4603, 4627, 4628, 4604, + 4604, 4628, 4629, 4605, + 4605, 4629, 4630, 4606, + 4606, 4630, 4631, 4607, + 4607, 4631, 4632, 4608, + 4608, 4632, 4633, 4609, + 4609, 4633, 4634, 4610, + 4610, 4634, 4635, 4611, + 4204, 4205, 4636, 4612, + 4612, 4636, 4637, 4613, + 4613, 4637, 4638, 4614, + 4614, 4638, 4639, 4615, + 4615, 4639, 4640, 4616, + 4616, 4640, 4641, 4617, + 4617, 4641, 4642, 4618, + 4618, 4642, 4643, 4619, + 4619, 4643, 4644, 4620, + 4620, 4644, 4645, 4621, + 4621, 4645, 4646, 4622, + 4622, 4646, 4647, 4623, + 4623, 4647, 4648, 4624, + 4624, 4648, 4649, 4625, + 4625, 4649, 4650, 4626, + 4626, 4650, 4651, 4627, + 4627, 4651, 4652, 4628, + 4628, 4652, 4653, 4629, + 4629, 4653, 4654, 4630, + 4630, 4654, 4655, 4631, + 4631, 4655, 4656, 4632, + 4632, 4656, 4657, 4633, + 4633, 4657, 4658, 4634, + 4634, 4658, 4659, 4635, + 4205, 4206, 4660, 4636, + 4636, 4660, 4661, 4637, + 4637, 4661, 4662, 4638, + 4638, 4662, 4663, 4639, + 4639, 4663, 4664, 4640, + 4640, 4664, 4665, 4641, + 4641, 4665, 4666, 4642, + 4642, 4666, 4667, 4643, + 4643, 4667, 4668, 4644, + 4644, 4668, 4669, 4645, + 4645, 4669, 4670, 4646, + 4646, 4670, 4671, 4647, + 4647, 4671, 4672, 4648, + 4648, 4672, 4673, 4649, + 4649, 4673, 4674, 4650, + 4650, 4674, 4675, 4651, + 4651, 4675, 4676, 4652, + 4652, 4676, 4677, 4653, + 4653, 4677, 4678, 4654, + 4654, 4678, 4679, 4655, + 4655, 4679, 4680, 4656, + 4656, 4680, 4681, 4657, + 4657, 4681, 4682, 4658, + 4658, 4682, 4683, 4659, + 4206, 4207, 4684, 4660, + 4660, 4684, 4685, 4661, + 4661, 4685, 4686, 4662, + 4662, 4686, 4687, 4663, + 4663, 4687, 4688, 4664, + 4664, 4688, 4689, 4665, + 4665, 4689, 4690, 4666, + 4666, 4690, 4691, 4667, + 4667, 4691, 4692, 4668, + 4668, 4692, 4693, 4669, + 4669, 4693, 4694, 4670, + 4670, 4694, 4695, 4671, + 4671, 4695, 4696, 4672, + 4672, 4696, 4697, 4673, + 4673, 4697, 4698, 4674, + 4674, 4698, 4699, 4675, + 4675, 4699, 4700, 4676, + 4676, 4700, 4701, 4677, + 4677, 4701, 4702, 4678, + 4678, 4702, 4703, 4679, + 4679, 4703, 4704, 4680, + 4680, 4704, 4705, 4681, + 4681, 4705, 4706, 4682, + 4682, 4706, 4707, 4683, + 4207, 4208, 4708, 4684, + 4684, 4708, 4709, 4685, + 4685, 4709, 4710, 4686, + 4686, 4710, 4711, 4687, + 4687, 4711, 4712, 4688, + 4688, 4712, 4713, 4689, + 4689, 4713, 4714, 4690, + 4690, 4714, 4715, 4691, + 4691, 4715, 4716, 4692, + 4692, 4716, 4717, 4693, + 4693, 4717, 4718, 4694, + 4694, 4718, 4719, 4695, + 4695, 4719, 4720, 4696, + 4696, 4720, 4721, 4697, + 4697, 4721, 4722, 4698, + 4698, 4722, 4723, 4699, + 4699, 4723, 4724, 4700, + 4700, 4724, 4725, 4701, + 4701, 4725, 4726, 4702, + 4702, 4726, 4727, 4703, + 4703, 4727, 4728, 4704, + 4704, 4728, 4729, 4705, + 4705, 4729, 4730, 4706, + 4706, 4730, 4731, 4707, + 4208, 4209, 4732, 4708, + 4708, 4732, 4733, 4709, + 4709, 4733, 4734, 4710, + 4710, 4734, 4735, 4711, + 4711, 4735, 4736, 4712, + 4712, 4736, 4737, 4713, + 4713, 4737, 4738, 4714, + 4714, 4738, 4739, 4715, + 4715, 4739, 4740, 4716, + 4716, 4740, 4741, 4717, + 4717, 4741, 4742, 4718, + 4718, 4742, 4743, 4719, + 4719, 4743, 4744, 4720, + 4720, 4744, 4745, 4721, + 4721, 4745, 4746, 4722, + 4722, 4746, 4747, 4723, + 4723, 4747, 4748, 4724, + 4724, 4748, 4749, 4725, + 4725, 4749, 4750, 4726, + 4726, 4750, 4751, 4727, + 4727, 4751, 4752, 4728, + 4728, 4752, 4753, 4729, + 4729, 4753, 4754, 4730, + 4730, 4754, 4755, 4731, + 4209, 4210, 4756, 4732, + 4732, 4756, 4757, 4733, + 4733, 4757, 4758, 4734, + 4734, 4758, 4759, 4735, + 4735, 4759, 4760, 4736, + 4736, 4760, 4761, 4737, + 4737, 4761, 4762, 4738, + 4738, 4762, 4763, 4739, + 4739, 4763, 4764, 4740, + 4740, 4764, 4765, 4741, + 4741, 4765, 4766, 4742, + 4742, 4766, 4767, 4743, + 4743, 4767, 4768, 4744, + 4744, 4768, 4769, 4745, + 4745, 4769, 4770, 4746, + 4746, 4770, 4771, 4747, + 4747, 4771, 4772, 4748, + 4748, 4772, 4773, 4749, + 4749, 4773, 4774, 4750, + 4750, 4774, 4775, 4751, + 4751, 4775, 4776, 4752, + 4752, 4776, 4777, 4753, + 4753, 4777, 4778, 4754, + 4754, 4778, 4779, 4755, + 4210, 4211, 4780, 4756, + 4756, 4780, 4781, 4757, + 4757, 4781, 4782, 4758, + 4758, 4782, 4783, 4759, + 4759, 4783, 4784, 4760, + 4760, 4784, 4785, 4761, + 4761, 4785, 4786, 4762, + 4762, 4786, 4787, 4763, + 4763, 4787, 4788, 4764, + 4764, 4788, 4789, 4765, + 4765, 4789, 4790, 4766, + 4766, 4790, 4791, 4767, + 4767, 4791, 4792, 4768, + 4768, 4792, 4793, 4769, + 4769, 4793, 4794, 4770, + 4770, 4794, 4795, 4771, + 4771, 4795, 4796, 4772, + 4772, 4796, 4797, 4773, + 4773, 4797, 4798, 4774, + 4774, 4798, 4799, 4775, + 4775, 4799, 4800, 4776, + 4776, 4800, 4801, 4777, + 4777, 4801, 4802, 4778, + 4778, 4802, 4803, 4779, + 4211, 4212, 4804, 4780, + 4780, 4804, 4805, 4781, + 4781, 4805, 4806, 4782, + 4782, 4806, 4807, 4783, + 4783, 4807, 4808, 4784, + 4784, 4808, 4809, 4785, + 4785, 4809, 4810, 4786, + 4786, 4810, 4811, 4787, + 4787, 4811, 4812, 4788, + 4788, 4812, 4813, 4789, + 4789, 4813, 4814, 4790, + 4790, 4814, 4815, 4791, + 4791, 4815, 4816, 4792, + 4792, 4816, 4817, 4793, + 4793, 4817, 4818, 4794, + 4794, 4818, 4819, 4795, + 4795, 4819, 4820, 4796, + 4796, 4820, 4821, 4797, + 4797, 4821, 4822, 4798, + 4798, 4822, 4823, 4799, + 4799, 4823, 4824, 4800, + 4800, 4824, 4825, 4801, + 4801, 4825, 4826, 4802, + 4802, 4826, 4827, 4803, + 4212, 4213, 4828, 4804, + 4804, 4828, 4829, 4805, + 4805, 4829, 4830, 4806, + 4806, 4830, 4831, 4807, + 4807, 4831, 4832, 4808, + 4808, 4832, 4833, 4809, + 4809, 4833, 4834, 4810, + 4810, 4834, 4835, 4811, + 4811, 4835, 4836, 4812, + 4812, 4836, 4837, 4813, + 4813, 4837, 4838, 4814, + 4814, 4838, 4839, 4815, + 4815, 4839, 4840, 4816, + 4816, 4840, 4841, 4817, + 4817, 4841, 4842, 4818, + 4818, 4842, 4843, 4819, + 4819, 4843, 4844, 4820, + 4820, 4844, 4845, 4821, + 4821, 4845, 4846, 4822, + 4822, 4846, 4847, 4823, + 4823, 4847, 4848, 4824, + 4824, 4848, 4849, 4825, + 4825, 4849, 4850, 4826, + 4826, 4850, 4851, 4827, + 4213, 4214, 4852, 4828, + 4828, 4852, 4853, 4829, + 4829, 4853, 4854, 4830, + 4830, 4854, 4855, 4831, + 4831, 4855, 4856, 4832, + 4832, 4856, 4857, 4833, + 4833, 4857, 4858, 4834, + 4834, 4858, 4859, 4835, + 4835, 4859, 4860, 4836, + 4836, 4860, 4861, 4837, + 4837, 4861, 4862, 4838, + 4838, 4862, 4863, 4839, + 4839, 4863, 4864, 4840, + 4840, 4864, 4865, 4841, + 4841, 4865, 4866, 4842, + 4842, 4866, 4867, 4843, + 4843, 4867, 4868, 4844, + 4844, 4868, 4869, 4845, + 4845, 4869, 4870, 4846, + 4846, 4870, 4871, 4847, + 4847, 4871, 4872, 4848, + 4848, 4872, 4873, 4849, + 4849, 4873, 4874, 4850, + 4850, 4874, 4875, 4851, + 4214, 4215, 4876, 4852, + 4852, 4876, 4877, 4853, + 4853, 4877, 4878, 4854, + 4854, 4878, 4879, 4855, + 4855, 4879, 4880, 4856, + 4856, 4880, 4881, 4857, + 4857, 4881, 4882, 4858, + 4858, 4882, 4883, 4859, + 4859, 4883, 4884, 4860, + 4860, 4884, 4885, 4861, + 4861, 4885, 4886, 4862, + 4862, 4886, 4887, 4863, + 4863, 4887, 4888, 4864, + 4864, 4888, 4889, 4865, + 4865, 4889, 4890, 4866, + 4866, 4890, 4891, 4867, + 4867, 4891, 4892, 4868, + 4868, 4892, 4893, 4869, + 4869, 4893, 4894, 4870, + 4870, 4894, 4895, 4871, + 4871, 4895, 4896, 4872, + 4872, 4896, 4897, 4873, + 4873, 4897, 4898, 4874, + 4874, 4898, 4899, 4875, + 4215, 4216, 4900, 4876, + 4876, 4900, 4901, 4877, + 4877, 4901, 4902, 4878, + 4878, 4902, 4903, 4879, + 4879, 4903, 4904, 4880, + 4880, 4904, 4905, 4881, + 4881, 4905, 4906, 4882, + 4882, 4906, 4907, 4883, + 4883, 4907, 4908, 4884, + 4884, 4908, 4909, 4885, + 4885, 4909, 4910, 4886, + 4886, 4910, 4911, 4887, + 4887, 4911, 4912, 4888, + 4888, 4912, 4913, 4889, + 4889, 4913, 4914, 4890, + 4890, 4914, 4915, 4891, + 4891, 4915, 4916, 4892, + 4892, 4916, 4917, 4893, + 4893, 4917, 4918, 4894, + 4894, 4918, 4919, 4895, + 4895, 4919, 4920, 4896, + 4896, 4920, 4921, 4897, + 4897, 4921, 4922, 4898, + 4898, 4922, 4923, 4899, + 4216, 4217, 4924, 4900, + 4900, 4924, 4925, 4901, + 4901, 4925, 4926, 4902, + 4902, 4926, 4927, 4903, + 4903, 4927, 4928, 4904, + 4904, 4928, 4929, 4905, + 4905, 4929, 4930, 4906, + 4906, 4930, 4931, 4907, + 4907, 4931, 4932, 4908, + 4908, 4932, 4933, 4909, + 4909, 4933, 4934, 4910, + 4910, 4934, 4935, 4911, + 4911, 4935, 4936, 4912, + 4912, 4936, 4937, 4913, + 4913, 4937, 4938, 4914, + 4914, 4938, 4939, 4915, + 4915, 4939, 4940, 4916, + 4916, 4940, 4941, 4917, + 4917, 4941, 4942, 4918, + 4918, 4942, 4943, 4919, + 4919, 4943, 4944, 4920, + 4920, 4944, 4945, 4921, + 4921, 4945, 4946, 4922, + 4922, 4946, 4947, 4923, + 4217, 4218, 4948, 4924, + 4924, 4948, 4949, 4925, + 4925, 4949, 4950, 4926, + 4926, 4950, 4951, 4927, + 4927, 4951, 4952, 4928, + 4928, 4952, 4953, 4929, + 4929, 4953, 4954, 4930, + 4930, 4954, 4955, 4931, + 4931, 4955, 4956, 4932, + 4932, 4956, 4957, 4933, + 4933, 4957, 4958, 4934, + 4934, 4958, 4959, 4935, + 4935, 4959, 4960, 4936, + 4936, 4960, 4961, 4937, + 4937, 4961, 4962, 4938, + 4938, 4962, 4963, 4939, + 4939, 4963, 4964, 4940, + 4940, 4964, 4965, 4941, + 4941, 4965, 4966, 4942, + 4942, 4966, 4967, 4943, + 4943, 4967, 4968, 4944, + 4944, 4968, 4969, 4945, + 4945, 4969, 4970, 4946, + 4946, 4970, 4971, 4947, + 4218, 4219, 4972, 4948, + 4948, 4972, 4973, 4949, + 4949, 4973, 4974, 4950, + 4950, 4974, 4975, 4951, + 4951, 4975, 4976, 4952, + 4952, 4976, 4977, 4953, + 4953, 4977, 4978, 4954, + 4954, 4978, 4979, 4955, + 4955, 4979, 4980, 4956, + 4956, 4980, 4981, 4957, + 4957, 4981, 4982, 4958, + 4958, 4982, 4983, 4959, + 4959, 4983, 4984, 4960, + 4960, 4984, 4985, 4961, + 4961, 4985, 4986, 4962, + 4962, 4986, 4987, 4963, + 4963, 4987, 4988, 4964, + 4964, 4988, 4989, 4965, + 4965, 4989, 4990, 4966, + 4966, 4990, 4991, 4967, + 4967, 4991, 4992, 4968, + 4968, 4992, 4993, 4969, + 4969, 4993, 4994, 4970, + 4970, 4994, 4995, 4971, + 4219, 4220, 4996, 4972, + 4972, 4996, 4997, 4973, + 4973, 4997, 4998, 4974, + 4974, 4998, 4999, 4975, + 4975, 4999, 5000, 4976, + 4976, 5000, 5001, 4977, + 4977, 5001, 5002, 4978, + 4978, 5002, 5003, 4979, + 4979, 5003, 5004, 4980, + 4980, 5004, 5005, 4981, + 4981, 5005, 5006, 4982, + 4982, 5006, 5007, 4983, + 4983, 5007, 5008, 4984, + 4984, 5008, 5009, 4985, + 4985, 5009, 5010, 4986, + 4986, 5010, 5011, 4987, + 4987, 5011, 5012, 4988, + 4988, 5012, 5013, 4989, + 4989, 5013, 5014, 4990, + 4990, 5014, 5015, 4991, + 4991, 5015, 5016, 4992, + 4992, 5016, 5017, 4993, + 4993, 5017, 5018, 4994, + 4994, 5018, 5019, 4995, + 4220, 4221, 5020, 4996, + 4996, 5020, 5021, 4997, + 4997, 5021, 5022, 4998, + 4998, 5022, 5023, 4999, + 4999, 5023, 5024, 5000, + 5000, 5024, 5025, 5001, + 5001, 5025, 5026, 5002, + 5002, 5026, 5027, 5003, + 5003, 5027, 5028, 5004, + 5004, 5028, 5029, 5005, + 5005, 5029, 5030, 5006, + 5006, 5030, 5031, 5007, + 5007, 5031, 5032, 5008, + 5008, 5032, 5033, 5009, + 5009, 5033, 5034, 5010, + 5010, 5034, 5035, 5011, + 5011, 5035, 5036, 5012, + 5012, 5036, 5037, 5013, + 5013, 5037, 5038, 5014, + 5014, 5038, 5039, 5015, + 5015, 5039, 5040, 5016, + 5016, 5040, 5041, 5017, + 5017, 5041, 5042, 5018, + 5018, 5042, 5043, 5019, + 4221, 4222, 5044, 5020, + 5020, 5044, 5045, 5021, + 5021, 5045, 5046, 5022, + 5022, 5046, 5047, 5023, + 5023, 5047, 5048, 5024, + 5024, 5048, 5049, 5025, + 5025, 5049, 5050, 5026, + 5026, 5050, 5051, 5027, + 5027, 5051, 5052, 5028, + 5028, 5052, 5053, 5029, + 5029, 5053, 5054, 5030, + 5030, 5054, 5055, 5031, + 5031, 5055, 5056, 5032, + 5032, 5056, 5057, 5033, + 5033, 5057, 5058, 5034, + 5034, 5058, 5059, 5035, + 5035, 5059, 5060, 5036, + 5036, 5060, 5061, 5037, + 5037, 5061, 5062, 5038, + 5038, 5062, 5063, 5039, + 5039, 5063, 5064, 5040, + 5040, 5064, 5065, 5041, + 5041, 5065, 5066, 5042, + 5042, 5066, 5067, 5043, + 4222, 4223, 5068, 5044, + 5044, 5068, 5069, 5045, + 5045, 5069, 5070, 5046, + 5046, 5070, 5071, 5047, + 5047, 5071, 5072, 5048, + 5048, 5072, 5073, 5049, + 5049, 5073, 5074, 5050, + 5050, 5074, 5075, 5051, + 5051, 5075, 5076, 5052, + 5052, 5076, 5077, 5053, + 5053, 5077, 5078, 5054, + 5054, 5078, 5079, 5055, + 5055, 5079, 5080, 5056, + 5056, 5080, 5081, 5057, + 5057, 5081, 5082, 5058, + 5058, 5082, 5083, 5059, + 5059, 5083, 5084, 5060, + 5060, 5084, 5085, 5061, + 5061, 5085, 5086, 5062, + 5062, 5086, 5087, 5063, + 5063, 5087, 5088, 5064, + 5064, 5088, 5089, 5065, + 5065, 5089, 5090, 5066, + 5066, 5090, 5091, 5067, + 4223, 4224, 5092, 5068, + 5068, 5092, 5093, 5069, + 5069, 5093, 5094, 5070, + 5070, 5094, 5095, 5071, + 5071, 5095, 5096, 5072, + 5072, 5096, 5097, 5073, + 5073, 5097, 5098, 5074, + 5074, 5098, 5099, 5075, + 5075, 5099, 5100, 5076, + 5076, 5100, 5101, 5077, + 5077, 5101, 5102, 5078, + 5078, 5102, 5103, 5079, + 5079, 5103, 5104, 5080, + 5080, 5104, 5105, 5081, + 5081, 5105, 5106, 5082, + 5082, 5106, 5107, 5083, + 5083, 5107, 5108, 5084, + 5084, 5108, 5109, 5085, + 5085, 5109, 5110, 5086, + 5086, 5110, 5111, 5087, + 5087, 5111, 5112, 5088, + 5088, 5112, 5113, 5089, + 5089, 5113, 5114, 5090, + 5090, 5114, 5115, 5091, + 4224, 4225, 5116, 5092, + 5092, 5116, 5117, 5093, + 5093, 5117, 5118, 5094, + 5094, 5118, 5119, 5095, + 5095, 5119, 5120, 5096, + 5096, 5120, 5121, 5097, + 5097, 5121, 5122, 5098, + 5098, 5122, 5123, 5099, + 5099, 5123, 5124, 5100, + 5100, 5124, 5125, 5101, + 5101, 5125, 5126, 5102, + 5102, 5126, 5127, 5103, + 5103, 5127, 5128, 5104, + 5104, 5128, 5129, 5105, + 5105, 5129, 5130, 5106, + 5106, 5130, 5131, 5107, + 5107, 5131, 5132, 5108, + 5108, 5132, 5133, 5109, + 5109, 5133, 5134, 5110, + 5110, 5134, 5135, 5111, + 5111, 5135, 5136, 5112, + 5112, 5136, 5137, 5113, + 5113, 5137, 5138, 5114, + 5114, 5138, 5139, 5115, + 4225, 4226, 5140, 5116, + 5116, 5140, 5141, 5117, + 5117, 5141, 5142, 5118, + 5118, 5142, 5143, 5119, + 5119, 5143, 5144, 5120, + 5120, 5144, 5145, 5121, + 5121, 5145, 5146, 5122, + 5122, 5146, 5147, 5123, + 5123, 5147, 5148, 5124, + 5124, 5148, 5149, 5125, + 5125, 5149, 5150, 5126, + 5126, 5150, 5151, 5127, + 5127, 5151, 5152, 5128, + 5128, 5152, 5153, 5129, + 5129, 5153, 5154, 5130, + 5130, 5154, 5155, 5131, + 5131, 5155, 5156, 5132, + 5132, 5156, 5157, 5133, + 5133, 5157, 5158, 5134, + 5134, 5158, 5159, 5135, + 5135, 5159, 5160, 5136, + 5136, 5160, 5161, 5137, + 5137, 5161, 5162, 5138, + 5138, 5162, 5163, 5139, + 4226, 4227, 5164, 5140, + 5140, 5164, 5165, 5141, + 5141, 5165, 5166, 5142, + 5142, 5166, 5167, 5143, + 5143, 5167, 5168, 5144, + 5144, 5168, 5169, 5145, + 5145, 5169, 5170, 5146, + 5146, 5170, 5171, 5147, + 5147, 5171, 5172, 5148, + 5148, 5172, 5173, 5149, + 5149, 5173, 5174, 5150, + 5150, 5174, 5175, 5151, + 5151, 5175, 5176, 5152, + 5152, 5176, 5177, 5153, + 5153, 5177, 5178, 5154, + 5154, 5178, 5179, 5155, + 5155, 5179, 5180, 5156, + 5156, 5180, 5181, 5157, + 5157, 5181, 5182, 5158, + 5158, 5182, 5183, 5159, + 5159, 5183, 5184, 5160, + 5160, 5184, 5185, 5161, + 5161, 5185, 5186, 5162, + 5162, 5186, 5187, 5163, + 4227, 4228, 5188, 5164, + 5164, 5188, 5189, 5165, + 5165, 5189, 5190, 5166, + 5166, 5190, 5191, 5167, + 5167, 5191, 5192, 5168, + 5168, 5192, 5193, 5169, + 5169, 5193, 5194, 5170, + 5170, 5194, 5195, 5171, + 5171, 5195, 5196, 5172, + 5172, 5196, 5197, 5173, + 5173, 5197, 5198, 5174, + 5174, 5198, 5199, 5175, + 5175, 5199, 5200, 5176, + 5176, 5200, 5201, 5177, + 5177, 5201, 5202, 5178, + 5178, 5202, 5203, 5179, + 5179, 5203, 5204, 5180, + 5180, 5204, 5205, 5181, + 5181, 5205, 5206, 5182, + 5182, 5206, 5207, 5183, + 5183, 5207, 5208, 5184, + 5184, 5208, 5209, 5185, + 5185, 5209, 5210, 5186, + 5186, 5210, 5211, 5187, + 4228, 4229, 5212, 5188, + 5188, 5212, 5213, 5189, + 5189, 5213, 5214, 5190, + 5190, 5214, 5215, 5191, + 5191, 5215, 5216, 5192, + 5192, 5216, 5217, 5193, + 5193, 5217, 5218, 5194, + 5194, 5218, 5219, 5195, + 5195, 5219, 5220, 5196, + 5196, 5220, 5221, 5197, + 5197, 5221, 5222, 5198, + 5198, 5222, 5223, 5199, + 5199, 5223, 5224, 5200, + 5200, 5224, 5225, 5201, + 5201, 5225, 5226, 5202, + 5202, 5226, 5227, 5203, + 5203, 5227, 5228, 5204, + 5204, 5228, 5229, 5205, + 5205, 5229, 5230, 5206, + 5206, 5230, 5231, 5207, + 5207, 5231, 5232, 5208, + 5208, 5232, 5233, 5209, + 5209, 5233, 5234, 5210, + 5210, 5234, 5235, 5211, + 4229, 4230, 5236, 5212, + 5212, 5236, 5237, 5213, + 5213, 5237, 5238, 5214, + 5214, 5238, 5239, 5215, + 5215, 5239, 5240, 5216, + 5216, 5240, 5241, 5217, + 5217, 5241, 5242, 5218, + 5218, 5242, 5243, 5219, + 5219, 5243, 5244, 5220, + 5220, 5244, 5245, 5221, + 5221, 5245, 5246, 5222, + 5222, 5246, 5247, 5223, + 5223, 5247, 5248, 5224, + 5224, 5248, 5249, 5225, + 5225, 5249, 5250, 5226, + 5226, 5250, 5251, 5227, + 5227, 5251, 5252, 5228, + 5228, 5252, 5253, 5229, + 5229, 5253, 5254, 5230, + 5230, 5254, 5255, 5231, + 5231, 5255, 5256, 5232, + 5232, 5256, 5257, 5233, + 5233, 5257, 5258, 5234, + 5234, 5258, 5259, 5235, + 4230, 4231, 5260, 5236, + 5236, 5260, 5261, 5237, + 5237, 5261, 5262, 5238, + 5238, 5262, 5263, 5239, + 5239, 5263, 5264, 5240, + 5240, 5264, 5265, 5241, + 5241, 5265, 5266, 5242, + 5242, 5266, 5267, 5243, + 5243, 5267, 5268, 5244, + 5244, 5268, 5269, 5245, + 5245, 5269, 5270, 5246, + 5246, 5270, 5271, 5247, + 5247, 5271, 5272, 5248, + 5248, 5272, 5273, 5249, + 5249, 5273, 5274, 5250, + 5250, 5274, 5275, 5251, + 5251, 5275, 5276, 5252, + 5252, 5276, 5277, 5253, + 5253, 5277, 5278, 5254, + 5254, 5278, 5279, 5255, + 5255, 5279, 5280, 5256, + 5256, 5280, 5281, 5257, + 5257, 5281, 5282, 5258, + 5258, 5282, 5283, 5259, + 4231, 4232, 5284, 5260, + 5260, 5284, 5285, 5261, + 5261, 5285, 5286, 5262, + 5262, 5286, 5287, 5263, + 5263, 5287, 5288, 5264, + 5264, 5288, 5289, 5265, + 5265, 5289, 5290, 5266, + 5266, 5290, 5291, 5267, + 5267, 5291, 5292, 5268, + 5268, 5292, 5293, 5269, + 5269, 5293, 5294, 5270, + 5270, 5294, 5295, 5271, + 5271, 5295, 5296, 5272, + 5272, 5296, 5297, 5273, + 5273, 5297, 5298, 5274, + 5274, 5298, 5299, 5275, + 5275, 5299, 5300, 5276, + 5276, 5300, 5301, 5277, + 5277, 5301, 5302, 5278, + 5278, 5302, 5303, 5279, + 5279, 5303, 5304, 5280, + 5280, 5304, 5305, 5281, + 5281, 5305, 5306, 5282, + 5282, 5306, 5307, 5283, + 4232, 4233, 5308, 5284, + 5284, 5308, 5309, 5285, + 5285, 5309, 5310, 5286, + 5286, 5310, 5311, 5287, + 5287, 5311, 5312, 5288, + 5288, 5312, 5313, 5289, + 5289, 5313, 5314, 5290, + 5290, 5314, 5315, 5291, + 5291, 5315, 5316, 5292, + 5292, 5316, 5317, 5293, + 5293, 5317, 5318, 5294, + 5294, 5318, 5319, 5295, + 5295, 5319, 5320, 5296, + 5296, 5320, 5321, 5297, + 5297, 5321, 5322, 5298, + 5298, 5322, 5323, 5299, + 5299, 5323, 5324, 5300, + 5300, 5324, 5325, 5301, + 5301, 5325, 5326, 5302, + 5302, 5326, 5327, 5303, + 5303, 5327, 5328, 5304, + 5304, 5328, 5329, 5305, + 5305, 5329, 5330, 5306, + 5306, 5330, 5331, 5307, + 4233, 4234, 5332, 5308, + 5308, 5332, 5333, 5309, + 5309, 5333, 5334, 5310, + 5310, 5334, 5335, 5311, + 5311, 5335, 5336, 5312, + 5312, 5336, 5337, 5313, + 5313, 5337, 5338, 5314, + 5314, 5338, 5339, 5315, + 5315, 5339, 5340, 5316, + 5316, 5340, 5341, 5317, + 5317, 5341, 5342, 5318, + 5318, 5342, 5343, 5319, + 5319, 5343, 5344, 5320, + 5320, 5344, 5345, 5321, + 5321, 5345, 5346, 5322, + 5322, 5346, 5347, 5323, + 5323, 5347, 5348, 5324, + 5324, 5348, 5349, 5325, + 5325, 5349, 5350, 5326, + 5326, 5350, 5351, 5327, + 5327, 5351, 5352, 5328, + 5328, 5352, 5353, 5329, + 5329, 5353, 5354, 5330, + 5330, 5354, 5355, 5331, + 4234, 4235, 5356, 5332, + 5332, 5356, 5357, 5333, + 5333, 5357, 5358, 5334, + 5334, 5358, 5359, 5335, + 5335, 5359, 5360, 5336, + 5336, 5360, 5361, 5337, + 5337, 5361, 5362, 5338, + 5338, 5362, 5363, 5339, + 5339, 5363, 5364, 5340, + 5340, 5364, 5365, 5341, + 5341, 5365, 5366, 5342, + 5342, 5366, 5367, 5343, + 5343, 5367, 5368, 5344, + 5344, 5368, 5369, 5345, + 5345, 5369, 5370, 5346, + 5346, 5370, 5371, 5347, + 5347, 5371, 5372, 5348, + 5348, 5372, 5373, 5349, + 5349, 5373, 5374, 5350, + 5350, 5374, 5375, 5351, + 5351, 5375, 5376, 5352, + 5352, 5376, 5377, 5353, + 5353, 5377, 5378, 5354, + 5354, 5378, 5379, 5355, + 4235, 4236, 5380, 5356, + 5356, 5380, 5381, 5357, + 5357, 5381, 5382, 5358, + 5358, 5382, 5383, 5359, + 5359, 5383, 5384, 5360, + 5360, 5384, 5385, 5361, + 5361, 5385, 5386, 5362, + 5362, 5386, 5387, 5363, + 5363, 5387, 5388, 5364, + 5364, 5388, 5389, 5365, + 5365, 5389, 5390, 5366, + 5366, 5390, 5391, 5367, + 5367, 5391, 5392, 5368, + 5368, 5392, 5393, 5369, + 5369, 5393, 5394, 5370, + 5370, 5394, 5395, 5371, + 5371, 5395, 5396, 5372, + 5372, 5396, 5397, 5373, + 5373, 5397, 5398, 5374, + 5374, 5398, 5399, 5375, + 5375, 5399, 5400, 5376, + 5376, 5400, 5401, 5377, + 5377, 5401, 5402, 5378, + 5378, 5402, 5403, 5379, + 4236, 4237, 5404, 5380, + 5380, 5404, 5405, 5381, + 5381, 5405, 5406, 5382, + 5382, 5406, 5407, 5383, + 5383, 5407, 5408, 5384, + 5384, 5408, 5409, 5385, + 5385, 5409, 5410, 5386, + 5386, 5410, 5411, 5387, + 5387, 5411, 5412, 5388, + 5388, 5412, 5413, 5389, + 5389, 5413, 5414, 5390, + 5390, 5414, 5415, 5391, + 5391, 5415, 5416, 5392, + 5392, 5416, 5417, 5393, + 5393, 5417, 5418, 5394, + 5394, 5418, 5419, 5395, + 5395, 5419, 5420, 5396, + 5396, 5420, 5421, 5397, + 5397, 5421, 5422, 5398, + 5398, 5422, 5423, 5399, + 5399, 5423, 5424, 5400, + 5400, 5424, 5425, 5401, + 5401, 5425, 5426, 5402, + 5402, 5426, 5427, 5403, + 4237, 4238, 5428, 5404, + 5404, 5428, 5429, 5405, + 5405, 5429, 5430, 5406, + 5406, 5430, 5431, 5407, + 5407, 5431, 5432, 5408, + 5408, 5432, 5433, 5409, + 5409, 5433, 5434, 5410, + 5410, 5434, 5435, 5411, + 5411, 5435, 5436, 5412, + 5412, 5436, 5437, 5413, + 5413, 5437, 5438, 5414, + 5414, 5438, 5439, 5415, + 5415, 5439, 5440, 5416, + 5416, 5440, 5441, 5417, + 5417, 5441, 5442, 5418, + 5418, 5442, 5443, 5419, + 5419, 5443, 5444, 5420, + 5420, 5444, 5445, 5421, + 5421, 5445, 5446, 5422, + 5422, 5446, 5447, 5423, + 5423, 5447, 5448, 5424, + 5424, 5448, 5449, 5425, + 5425, 5449, 5450, 5426, + 5426, 5450, 5451, 5427, + 4238, 4239, 5452, 5428, + 5428, 5452, 5453, 5429, + 5429, 5453, 5454, 5430, + 5430, 5454, 5455, 5431, + 5431, 5455, 5456, 5432, + 5432, 5456, 5457, 5433, + 5433, 5457, 5458, 5434, + 5434, 5458, 5459, 5435, + 5435, 5459, 5460, 5436, + 5436, 5460, 5461, 5437, + 5437, 5461, 5462, 5438, + 5438, 5462, 5463, 5439, + 5439, 5463, 5464, 5440, + 5440, 5464, 5465, 5441, + 5441, 5465, 5466, 5442, + 5442, 5466, 5467, 5443, + 5443, 5467, 5468, 5444, + 5444, 5468, 5469, 5445, + 5445, 5469, 5470, 5446, + 5446, 5470, 5471, 5447, + 5447, 5471, 5472, 5448, + 5448, 5472, 5473, 5449, + 5449, 5473, 5474, 5450, + 5450, 5474, 5475, 5451, + 4239, 4240, 5476, 5452, + 5452, 5476, 5477, 5453, + 5453, 5477, 5478, 5454, + 5454, 5478, 5479, 5455, + 5455, 5479, 5480, 5456, + 5456, 5480, 5481, 5457, + 5457, 5481, 5482, 5458, + 5458, 5482, 5483, 5459, + 5459, 5483, 5484, 5460, + 5460, 5484, 5485, 5461, + 5461, 5485, 5486, 5462, + 5462, 5486, 5487, 5463, + 5463, 5487, 5488, 5464, + 5464, 5488, 5489, 5465, + 5465, 5489, 5490, 5466, + 5466, 5490, 5491, 5467, + 5467, 5491, 5492, 5468, + 5468, 5492, 5493, 5469, + 5469, 5493, 5494, 5470, + 5470, 5494, 5495, 5471, + 5471, 5495, 5496, 5472, + 5472, 5496, 5497, 5473, + 5473, 5497, 5498, 5474, + 5474, 5498, 5499, 5475, + 4240, 4241, 5500, 5476, + 5476, 5500, 5501, 5477, + 5477, 5501, 5502, 5478, + 5478, 5502, 5503, 5479, + 5479, 5503, 5504, 5480, + 5480, 5504, 5505, 5481, + 5481, 5505, 5506, 5482, + 5482, 5506, 5507, 5483, + 5483, 5507, 5508, 5484, + 5484, 5508, 5509, 5485, + 5485, 5509, 5510, 5486, + 5486, 5510, 5511, 5487, + 5487, 5511, 5512, 5488, + 5488, 5512, 5513, 5489, + 5489, 5513, 5514, 5490, + 5490, 5514, 5515, 5491, + 5491, 5515, 5516, 5492, + 5492, 5516, 5517, 5493, + 5493, 5517, 5518, 5494, + 5494, 5518, 5519, 5495, + 5495, 5519, 5520, 5496, + 5496, 5520, 5521, 5497, + 5497, 5521, 5522, 5498, + 5498, 5522, 5523, 5499, + 4241, 4242, 5524, 5500, + 5500, 5524, 5525, 5501, + 5501, 5525, 5526, 5502, + 5502, 5526, 5527, 5503, + 5503, 5527, 5528, 5504, + 5504, 5528, 5529, 5505, + 5505, 5529, 5530, 5506, + 5506, 5530, 5531, 5507, + 5507, 5531, 5532, 5508, + 5508, 5532, 5533, 5509, + 5509, 5533, 5534, 5510, + 5510, 5534, 5535, 5511, + 5511, 5535, 5536, 5512, + 5512, 5536, 5537, 5513, + 5513, 5537, 5538, 5514, + 5514, 5538, 5539, 5515, + 5515, 5539, 5540, 5516, + 5516, 5540, 5541, 5517, + 5517, 5541, 5542, 5518, + 5518, 5542, 5543, 5519, + 5519, 5543, 5544, 5520, + 5520, 5544, 5545, 5521, + 5521, 5545, 5546, 5522, + 5522, 5546, 5547, 5523, + 4242, 4243, 5548, 5524, + 5524, 5548, 5549, 5525, + 5525, 5549, 5550, 5526, + 5526, 5550, 5551, 5527, + 5527, 5551, 5552, 5528, + 5528, 5552, 5553, 5529, + 5529, 5553, 5554, 5530, + 5530, 5554, 5555, 5531, + 5531, 5555, 5556, 5532, + 5532, 5556, 5557, 5533, + 5533, 5557, 5558, 5534, + 5534, 5558, 5559, 5535, + 5535, 5559, 5560, 5536, + 5536, 5560, 5561, 5537, + 5537, 5561, 5562, 5538, + 5538, 5562, 5563, 5539, + 5539, 5563, 5564, 5540, + 5540, 5564, 5565, 5541, + 5541, 5565, 5566, 5542, + 5542, 5566, 5567, 5543, + 5543, 5567, 5568, 5544, + 5544, 5568, 5569, 5545, + 5545, 5569, 5570, 5546, + 5546, 5570, 5571, 5547, + 4243, 4244, 5572, 5548, + 5548, 5572, 5573, 5549, + 5549, 5573, 5574, 5550, + 5550, 5574, 5575, 5551, + 5551, 5575, 5576, 5552, + 5552, 5576, 5577, 5553, + 5553, 5577, 5578, 5554, + 5554, 5578, 5579, 5555, + 5555, 5579, 5580, 5556, + 5556, 5580, 5581, 5557, + 5557, 5581, 5582, 5558, + 5558, 5582, 5583, 5559, + 5559, 5583, 5584, 5560, + 5560, 5584, 5585, 5561, + 5561, 5585, 5586, 5562, + 5562, 5586, 5587, 5563, + 5563, 5587, 5588, 5564, + 5564, 5588, 5589, 5565, + 5565, 5589, 5590, 5566, + 5566, 5590, 5591, 5567, + 5567, 5591, 5592, 5568, + 5568, 5592, 5593, 5569, + 5569, 5593, 5594, 5570, + 5570, 5594, 5595, 5571, + 4244, 4245, 5596, 5572, + 5572, 5596, 5597, 5573, + 5573, 5597, 5598, 5574, + 5574, 5598, 5599, 5575, + 5575, 5599, 5600, 5576, + 5576, 5600, 5601, 5577, + 5577, 5601, 5602, 5578, + 5578, 5602, 5603, 5579, + 5579, 5603, 5604, 5580, + 5580, 5604, 5605, 5581, + 5581, 5605, 5606, 5582, + 5582, 5606, 5607, 5583, + 5583, 5607, 5608, 5584, + 5584, 5608, 5609, 5585, + 5585, 5609, 5610, 5586, + 5586, 5610, 5611, 5587, + 5587, 5611, 5612, 5588, + 5588, 5612, 5613, 5589, + 5589, 5613, 5614, 5590, + 5590, 5614, 5615, 5591, + 5591, 5615, 5616, 5592, + 5592, 5616, 5617, 5593, + 5593, 5617, 5618, 5594, + 5594, 5618, 5619, 5595, + 4245, 4246, 5620, 5596, + 5596, 5620, 5621, 5597, + 5597, 5621, 5622, 5598, + 5598, 5622, 5623, 5599, + 5599, 5623, 5624, 5600, + 5600, 5624, 5625, 5601, + 5601, 5625, 5626, 5602, + 5602, 5626, 5627, 5603, + 5603, 5627, 5628, 5604, + 5604, 5628, 5629, 5605, + 5605, 5629, 5630, 5606, + 5606, 5630, 5631, 5607, + 5607, 5631, 5632, 5608, + 5608, 5632, 5633, 5609, + 5609, 5633, 5634, 5610, + 5610, 5634, 5635, 5611, + 5611, 5635, 5636, 5612, + 5612, 5636, 5637, 5613, + 5613, 5637, 5638, 5614, + 5614, 5638, 5639, 5615, + 5615, 5639, 5640, 5616, + 5616, 5640, 5641, 5617, + 5617, 5641, 5642, 5618, + 5618, 5642, 5643, 5619, + 4246, 4247, 5644, 5620, + 5620, 5644, 5645, 5621, + 5621, 5645, 5646, 5622, + 5622, 5646, 5647, 5623, + 5623, 5647, 5648, 5624, + 5624, 5648, 5649, 5625, + 5625, 5649, 5650, 5626, + 5626, 5650, 5651, 5627, + 5627, 5651, 5652, 5628, + 5628, 5652, 5653, 5629, + 5629, 5653, 5654, 5630, + 5630, 5654, 5655, 5631, + 5631, 5655, 5656, 5632, + 5632, 5656, 5657, 5633, + 5633, 5657, 5658, 5634, + 5634, 5658, 5659, 5635, + 5635, 5659, 5660, 5636, + 5636, 5660, 5661, 5637, + 5637, 5661, 5662, 5638, + 5638, 5662, 5663, 5639, + 5639, 5663, 5664, 5640, + 5640, 5664, 5665, 5641, + 5641, 5665, 5666, 5642, + 5642, 5666, 5667, 5643, + 4247, 4248, 5668, 5644, + 5644, 5668, 5669, 5645, + 5645, 5669, 5670, 5646, + 5646, 5670, 5671, 5647, + 5647, 5671, 5672, 5648, + 5648, 5672, 5673, 5649, + 5649, 5673, 5674, 5650, + 5650, 5674, 5675, 5651, + 5651, 5675, 5676, 5652, + 5652, 5676, 5677, 5653, + 5653, 5677, 5678, 5654, + 5654, 5678, 5679, 5655, + 5655, 5679, 5680, 5656, + 5656, 5680, 5681, 5657, + 5657, 5681, 5682, 5658, + 5658, 5682, 5683, 5659, + 5659, 5683, 5684, 5660, + 5660, 5684, 5685, 5661, + 5661, 5685, 5686, 5662, + 5662, 5686, 5687, 5663, + 5663, 5687, 5688, 5664, + 5664, 5688, 5689, 5665, + 5665, 5689, 5690, 5666, + 5666, 5690, 5691, 5667, + 4248, 4249, 5692, 5668, + 5668, 5692, 5693, 5669, + 5669, 5693, 5694, 5670, + 5670, 5694, 5695, 5671, + 5671, 5695, 5696, 5672, + 5672, 5696, 5697, 5673, + 5673, 5697, 5698, 5674, + 5674, 5698, 5699, 5675, + 5675, 5699, 5700, 5676, + 5676, 5700, 5701, 5677, + 5677, 5701, 5702, 5678, + 5678, 5702, 5703, 5679, + 5679, 5703, 5704, 5680, + 5680, 5704, 5705, 5681, + 5681, 5705, 5706, 5682, + 5682, 5706, 5707, 5683, + 5683, 5707, 5708, 5684, + 5684, 5708, 5709, 5685, + 5685, 5709, 5710, 5686, + 5686, 5710, 5711, 5687, + 5687, 5711, 5712, 5688, + 5688, 5712, 5713, 5689, + 5689, 5713, 5714, 5690, + 5690, 5714, 5715, 5691, + 4249, 4250, 5716, 5692, + 5692, 5716, 5717, 5693, + 5693, 5717, 5718, 5694, + 5694, 5718, 5719, 5695, + 5695, 5719, 5720, 5696, + 5696, 5720, 5721, 5697, + 5697, 5721, 5722, 5698, + 5698, 5722, 5723, 5699, + 5699, 5723, 5724, 5700, + 5700, 5724, 5725, 5701, + 5701, 5725, 5726, 5702, + 5702, 5726, 5727, 5703, + 5703, 5727, 5728, 5704, + 5704, 5728, 5729, 5705, + 5705, 5729, 5730, 5706, + 5706, 5730, 5731, 5707, + 5707, 5731, 5732, 5708, + 5708, 5732, 5733, 5709, + 5709, 5733, 5734, 5710, + 5710, 5734, 5735, 5711, + 5711, 5735, 5736, 5712, + 5712, 5736, 5737, 5713, + 5713, 5737, 5738, 5714, + 5714, 5738, 5739, 5715, + 4250, 4251, 5740, 5716, + 5716, 5740, 5741, 5717, + 5717, 5741, 5742, 5718, + 5718, 5742, 5743, 5719, + 5719, 5743, 5744, 5720, + 5720, 5744, 5745, 5721, + 5721, 5745, 5746, 5722, + 5722, 5746, 5747, 5723, + 5723, 5747, 5748, 5724, + 5724, 5748, 5749, 5725, + 5725, 5749, 5750, 5726, + 5726, 5750, 5751, 5727, + 5727, 5751, 5752, 5728, + 5728, 5752, 5753, 5729, + 5729, 5753, 5754, 5730, + 5730, 5754, 5755, 5731, + 5731, 5755, 5756, 5732, + 5732, 5756, 5757, 5733, + 5733, 5757, 5758, 5734, + 5734, 5758, 5759, 5735, + 5735, 5759, 5760, 5736, + 5736, 5760, 5761, 5737, + 5737, 5761, 5762, 5738, + 5738, 5762, 5763, 5739, + 4251, 4252, 5764, 5740, + 5740, 5764, 5765, 5741, + 5741, 5765, 5766, 5742, + 5742, 5766, 5767, 5743, + 5743, 5767, 5768, 5744, + 5744, 5768, 5769, 5745, + 5745, 5769, 5770, 5746, + 5746, 5770, 5771, 5747, + 5747, 5771, 5772, 5748, + 5748, 5772, 5773, 5749, + 5749, 5773, 5774, 5750, + 5750, 5774, 5775, 5751, + 5751, 5775, 5776, 5752, + 5752, 5776, 5777, 5753, + 5753, 5777, 5778, 5754, + 5754, 5778, 5779, 5755, + 5755, 5779, 5780, 5756, + 5756, 5780, 5781, 5757, + 5757, 5781, 5782, 5758, + 5758, 5782, 5783, 5759, + 5759, 5783, 5784, 5760, + 5760, 5784, 5785, 5761, + 5761, 5785, 5786, 5762, + 5762, 5786, 5787, 5763, + 4252, 4253, 5788, 5764, + 5764, 5788, 5789, 5765, + 5765, 5789, 5790, 5766, + 5766, 5790, 5791, 5767, + 5767, 5791, 5792, 5768, + 5768, 5792, 5793, 5769, + 5769, 5793, 5794, 5770, + 5770, 5794, 5795, 5771, + 5771, 5795, 5796, 5772, + 5772, 5796, 5797, 5773, + 5773, 5797, 5798, 5774, + 5774, 5798, 5799, 5775, + 5775, 5799, 5800, 5776, + 5776, 5800, 5801, 5777, + 5777, 5801, 5802, 5778, + 5778, 5802, 5803, 5779, + 5779, 5803, 5804, 5780, + 5780, 5804, 5805, 5781, + 5781, 5805, 5806, 5782, + 5782, 5806, 5807, 5783, + 5783, 5807, 5808, 5784, + 5784, 5808, 5809, 5785, + 5785, 5809, 5810, 5786, + 5786, 5810, 5811, 5787, + 4253, 4254, 5812, 5788, + 5788, 5812, 5813, 5789, + 5789, 5813, 5814, 5790, + 5790, 5814, 5815, 5791, + 5791, 5815, 5816, 5792, + 5792, 5816, 5817, 5793, + 5793, 5817, 5818, 5794, + 5794, 5818, 5819, 5795, + 5795, 5819, 5820, 5796, + 5796, 5820, 5821, 5797, + 5797, 5821, 5822, 5798, + 5798, 5822, 5823, 5799, + 5799, 5823, 5824, 5800, + 5800, 5824, 5825, 5801, + 5801, 5825, 5826, 5802, + 5802, 5826, 5827, 5803, + 5803, 5827, 5828, 5804, + 5804, 5828, 5829, 5805, + 5805, 5829, 5830, 5806, + 5806, 5830, 5831, 5807, + 5807, 5831, 5832, 5808, + 5808, 5832, 5833, 5809, + 5809, 5833, 5834, 5810, + 5810, 5834, 5835, 5811, + 4254, 4255, 5836, 5812, + 5812, 5836, 5837, 5813, + 5813, 5837, 5838, 5814, + 5814, 5838, 5839, 5815, + 5815, 5839, 5840, 5816, + 5816, 5840, 5841, 5817, + 5817, 5841, 5842, 5818, + 5818, 5842, 5843, 5819, + 5819, 5843, 5844, 5820, + 5820, 5844, 5845, 5821, + 5821, 5845, 5846, 5822, + 5822, 5846, 5847, 5823, + 5823, 5847, 5848, 5824, + 5824, 5848, 5849, 5825, + 5825, 5849, 5850, 5826, + 5826, 5850, 5851, 5827, + 5827, 5851, 5852, 5828, + 5828, 5852, 5853, 5829, + 5829, 5853, 5854, 5830, + 5830, 5854, 5855, 5831, + 5831, 5855, 5856, 5832, + 5832, 5856, 5857, 5833, + 5833, 5857, 5858, 5834, + 5834, 5858, 5859, 5835, + 4255, 4256, 5860, 5836, + 5836, 5860, 5861, 5837, + 5837, 5861, 5862, 5838, + 5838, 5862, 5863, 5839, + 5839, 5863, 5864, 5840, + 5840, 5864, 5865, 5841, + 5841, 5865, 5866, 5842, + 5842, 5866, 5867, 5843, + 5843, 5867, 5868, 5844, + 5844, 5868, 5869, 5845, + 5845, 5869, 5870, 5846, + 5846, 5870, 5871, 5847, + 5847, 5871, 5872, 5848, + 5848, 5872, 5873, 5849, + 5849, 5873, 5874, 5850, + 5850, 5874, 5875, 5851, + 5851, 5875, 5876, 5852, + 5852, 5876, 5877, 5853, + 5853, 5877, 5878, 5854, + 5854, 5878, 5879, 5855, + 5855, 5879, 5880, 5856, + 5856, 5880, 5881, 5857, + 5857, 5881, 5882, 5858, + 5858, 5882, 5883, 5859, + 4256, 4257, 5884, 5860, + 5860, 5884, 5885, 5861, + 5861, 5885, 5886, 5862, + 5862, 5886, 5887, 5863, + 5863, 5887, 5888, 5864, + 5864, 5888, 5889, 5865, + 5865, 5889, 5890, 5866, + 5866, 5890, 5891, 5867, + 5867, 5891, 5892, 5868, + 5868, 5892, 5893, 5869, + 5869, 5893, 5894, 5870, + 5870, 5894, 5895, 5871, + 5871, 5895, 5896, 5872, + 5872, 5896, 5897, 5873, + 5873, 5897, 5898, 5874, + 5874, 5898, 5899, 5875, + 5875, 5899, 5900, 5876, + 5876, 5900, 5901, 5877, + 5877, 5901, 5902, 5878, + 5878, 5902, 5903, 5879, + 5879, 5903, 5904, 5880, + 5880, 5904, 5905, 5881, + 5881, 5905, 5906, 5882, + 5882, 5906, 5907, 5883, + 4257, 4258, 5908, 5884, + 5884, 5908, 5909, 5885, + 5885, 5909, 5910, 5886, + 5886, 5910, 5911, 5887, + 5887, 5911, 5912, 5888, + 5888, 5912, 5913, 5889, + 5889, 5913, 5914, 5890, + 5890, 5914, 5915, 5891, + 5891, 5915, 5916, 5892, + 5892, 5916, 5917, 5893, + 5893, 5917, 5918, 5894, + 5894, 5918, 5919, 5895, + 5895, 5919, 5920, 5896, + 5896, 5920, 5921, 5897, + 5897, 5921, 5922, 5898, + 5898, 5922, 5923, 5899, + 5899, 5923, 5924, 5900, + 5900, 5924, 5925, 5901, + 5901, 5925, 5926, 5902, + 5902, 5926, 5927, 5903, + 5903, 5927, 5928, 5904, + 5904, 5928, 5929, 5905, + 5905, 5929, 5930, 5906, + 5906, 5930, 5931, 5907, + 4258, 4259, 5932, 5908, + 5908, 5932, 5933, 5909, + 5909, 5933, 5934, 5910, + 5910, 5934, 5935, 5911, + 5911, 5935, 5936, 5912, + 5912, 5936, 5937, 5913, + 5913, 5937, 5938, 5914, + 5914, 5938, 5939, 5915, + 5915, 5939, 5940, 5916, + 5916, 5940, 5941, 5917, + 5917, 5941, 5942, 5918, + 5918, 5942, 5943, 5919, + 5919, 5943, 5944, 5920, + 5920, 5944, 5945, 5921, + 5921, 5945, 5946, 5922, + 5922, 5946, 5947, 5923, + 5923, 5947, 5948, 5924, + 5924, 5948, 5949, 5925, + 5925, 5949, 5950, 5926, + 5926, 5950, 5951, 5927, + 5927, 5951, 5952, 5928, + 5928, 5952, 5953, 5929, + 5929, 5953, 5954, 5930, + 5930, 5954, 5955, 5931, + 4259, 4260, 5956, 5932, + 5932, 5956, 5957, 5933, + 5933, 5957, 5958, 5934, + 5934, 5958, 5959, 5935, + 5935, 5959, 5960, 5936, + 5936, 5960, 5961, 5937, + 5937, 5961, 5962, 5938, + 5938, 5962, 5963, 5939, + 5939, 5963, 5964, 5940, + 5940, 5964, 5965, 5941, + 5941, 5965, 5966, 5942, + 5942, 5966, 5967, 5943, + 5943, 5967, 5968, 5944, + 5944, 5968, 5969, 5945, + 5945, 5969, 5970, 5946, + 5946, 5970, 5971, 5947, + 5947, 5971, 5972, 5948, + 5948, 5972, 5973, 5949, + 5949, 5973, 5974, 5950, + 5950, 5974, 5975, 5951, + 5951, 5975, 5976, 5952, + 5952, 5976, 5977, 5953, + 5953, 5977, 5978, 5954, + 5954, 5978, 5979, 5955, + 4260, 4261, 5980, 5956, + 5956, 5980, 5981, 5957, + 5957, 5981, 5982, 5958, + 5958, 5982, 5983, 5959, + 5959, 5983, 5984, 5960, + 5960, 5984, 5985, 5961, + 5961, 5985, 5986, 5962, + 5962, 5986, 5987, 5963, + 5963, 5987, 5988, 5964, + 5964, 5988, 5989, 5965, + 5965, 5989, 5990, 5966, + 5966, 5990, 5991, 5967, + 5967, 5991, 5992, 5968, + 5968, 5992, 5993, 5969, + 5969, 5993, 5994, 5970, + 5970, 5994, 5995, 5971, + 5971, 5995, 5996, 5972, + 5972, 5996, 5997, 5973, + 5973, 5997, 5998, 5974, + 5974, 5998, 5999, 5975, + 5975, 5999, 6000, 5976, + 5976, 6000, 6001, 5977, + 5977, 6001, 6002, 5978, + 5978, 6002, 6003, 5979, + 4261, 4262, 6004, 5980, + 5980, 6004, 6005, 5981, + 5981, 6005, 6006, 5982, + 5982, 6006, 6007, 5983, + 5983, 6007, 6008, 5984, + 5984, 6008, 6009, 5985, + 5985, 6009, 6010, 5986, + 5986, 6010, 6011, 5987, + 5987, 6011, 6012, 5988, + 5988, 6012, 6013, 5989, + 5989, 6013, 6014, 5990, + 5990, 6014, 6015, 5991, + 5991, 6015, 6016, 5992, + 5992, 6016, 6017, 5993, + 5993, 6017, 6018, 5994, + 5994, 6018, 6019, 5995, + 5995, 6019, 6020, 5996, + 5996, 6020, 6021, 5997, + 5997, 6021, 6022, 5998, + 5998, 6022, 6023, 5999, + 5999, 6023, 6024, 6000, + 6000, 6024, 6025, 6001, + 6001, 6025, 6026, 6002, + 6002, 6026, 6027, 6003, + 4262, 4263, 6028, 6004, + 6004, 6028, 6029, 6005, + 6005, 6029, 6030, 6006, + 6006, 6030, 6031, 6007, + 6007, 6031, 6032, 6008, + 6008, 6032, 6033, 6009, + 6009, 6033, 6034, 6010, + 6010, 6034, 6035, 6011, + 6011, 6035, 6036, 6012, + 6012, 6036, 6037, 6013, + 6013, 6037, 6038, 6014, + 6014, 6038, 6039, 6015, + 6015, 6039, 6040, 6016, + 6016, 6040, 6041, 6017, + 6017, 6041, 6042, 6018, + 6018, 6042, 6043, 6019, + 6019, 6043, 6044, 6020, + 6020, 6044, 6045, 6021, + 6021, 6045, 6046, 6022, + 6022, 6046, 6047, 6023, + 6023, 6047, 6048, 6024, + 6024, 6048, 6049, 6025, + 6025, 6049, 6050, 6026, + 6026, 6050, 6051, 6027, + 4263, 4264, 6052, 6028, + 6028, 6052, 6053, 6029, + 6029, 6053, 6054, 6030, + 6030, 6054, 6055, 6031, + 6031, 6055, 6056, 6032, + 6032, 6056, 6057, 6033, + 6033, 6057, 6058, 6034, + 6034, 6058, 6059, 6035, + 6035, 6059, 6060, 6036, + 6036, 6060, 6061, 6037, + 6037, 6061, 6062, 6038, + 6038, 6062, 6063, 6039, + 6039, 6063, 6064, 6040, + 6040, 6064, 6065, 6041, + 6041, 6065, 6066, 6042, + 6042, 6066, 6067, 6043, + 6043, 6067, 6068, 6044, + 6044, 6068, 6069, 6045, + 6045, 6069, 6070, 6046, + 6046, 6070, 6071, 6047, + 6047, 6071, 6072, 6048, + 6048, 6072, 6073, 6049, + 6049, 6073, 6074, 6050, + 6050, 6074, 6075, 6051, + 4264, 4265, 6076, 6052, + 6052, 6076, 6077, 6053, + 6053, 6077, 6078, 6054, + 6054, 6078, 6079, 6055, + 6055, 6079, 6080, 6056, + 6056, 6080, 6081, 6057, + 6057, 6081, 6082, 6058, + 6058, 6082, 6083, 6059, + 6059, 6083, 6084, 6060, + 6060, 6084, 6085, 6061, + 6061, 6085, 6086, 6062, + 6062, 6086, 6087, 6063, + 6063, 6087, 6088, 6064, + 6064, 6088, 6089, 6065, + 6065, 6089, 6090, 6066, + 6066, 6090, 6091, 6067, + 6067, 6091, 6092, 6068, + 6068, 6092, 6093, 6069, + 6069, 6093, 6094, 6070, + 6070, 6094, 6095, 6071, + 6071, 6095, 6096, 6072, + 6072, 6096, 6097, 6073, + 6073, 6097, 6098, 6074, + 6074, 6098, 6099, 6075, + 4265, 4266, 6100, 6076, + 6076, 6100, 6101, 6077, + 6077, 6101, 6102, 6078, + 6078, 6102, 6103, 6079, + 6079, 6103, 6104, 6080, + 6080, 6104, 6105, 6081, + 6081, 6105, 6106, 6082, + 6082, 6106, 6107, 6083, + 6083, 6107, 6108, 6084, + 6084, 6108, 6109, 6085, + 6085, 6109, 6110, 6086, + 6086, 6110, 6111, 6087, + 6087, 6111, 6112, 6088, + 6088, 6112, 6113, 6089, + 6089, 6113, 6114, 6090, + 6090, 6114, 6115, 6091, + 6091, 6115, 6116, 6092, + 6092, 6116, 6117, 6093, + 6093, 6117, 6118, 6094, + 6094, 6118, 6119, 6095, + 6095, 6119, 6120, 6096, + 6096, 6120, 6121, 6097, + 6097, 6121, 6122, 6098, + 6098, 6122, 6123, 6099, + 4266, 4267, 6124, 6100, + 6100, 6124, 6125, 6101, + 6101, 6125, 6126, 6102, + 6102, 6126, 6127, 6103, + 6103, 6127, 6128, 6104, + 6104, 6128, 6129, 6105, + 6105, 6129, 6130, 6106, + 6106, 6130, 6131, 6107, + 6107, 6131, 6132, 6108, + 6108, 6132, 6133, 6109, + 6109, 6133, 6134, 6110, + 6110, 6134, 6135, 6111, + 6111, 6135, 6136, 6112, + 6112, 6136, 6137, 6113, + 6113, 6137, 6138, 6114, + 6114, 6138, 6139, 6115, + 6115, 6139, 6140, 6116, + 6116, 6140, 6141, 6117, + 6117, 6141, 6142, 6118, + 6118, 6142, 6143, 6119, + 6119, 6143, 6144, 6120, + 6120, 6144, 6145, 6121, + 6121, 6145, 6146, 6122, + 6122, 6146, 6147, 6123, + 4267, 4268, 6148, 6124, + 6124, 6148, 6149, 6125, + 6125, 6149, 6150, 6126, + 6126, 6150, 6151, 6127, + 6127, 6151, 6152, 6128, + 6128, 6152, 6153, 6129, + 6129, 6153, 6154, 6130, + 6130, 6154, 6155, 6131, + 6131, 6155, 6156, 6132, + 6132, 6156, 6157, 6133, + 6133, 6157, 6158, 6134, + 6134, 6158, 6159, 6135, + 6135, 6159, 6160, 6136, + 6136, 6160, 6161, 6137, + 6137, 6161, 6162, 6138, + 6138, 6162, 6163, 6139, + 6139, 6163, 6164, 6140, + 6140, 6164, 6165, 6141, + 6141, 6165, 6166, 6142, + 6142, 6166, 6167, 6143, + 6143, 6167, 6168, 6144, + 6144, 6168, 6169, 6145, + 6145, 6169, 6170, 6146, + 6146, 6170, 6171, 6147, + 4268, 4269, 6172, 6148, + 6148, 6172, 6173, 6149, + 6149, 6173, 6174, 6150, + 6150, 6174, 6175, 6151, + 6151, 6175, 6176, 6152, + 6152, 6176, 6177, 6153, + 6153, 6177, 6178, 6154, + 6154, 6178, 6179, 6155, + 6155, 6179, 6180, 6156, + 6156, 6180, 6181, 6157, + 6157, 6181, 6182, 6158, + 6158, 6182, 6183, 6159, + 6159, 6183, 6184, 6160, + 6160, 6184, 6185, 6161, + 6161, 6185, 6186, 6162, + 6162, 6186, 6187, 6163, + 6163, 6187, 6188, 6164, + 6164, 6188, 6189, 6165, + 6165, 6189, 6190, 6166, + 6166, 6190, 6191, 6167, + 6167, 6191, 6192, 6168, + 6168, 6192, 6193, 6169, + 6169, 6193, 6194, 6170, + 6170, 6194, 6195, 6171, + 4269, 4270, 6196, 6172, + 6172, 6196, 6197, 6173, + 6173, 6197, 6198, 6174, + 6174, 6198, 6199, 6175, + 6175, 6199, 6200, 6176, + 6176, 6200, 6201, 6177, + 6177, 6201, 6202, 6178, + 6178, 6202, 6203, 6179, + 6179, 6203, 6204, 6180, + 6180, 6204, 6205, 6181, + 6181, 6205, 6206, 6182, + 6182, 6206, 6207, 6183, + 6183, 6207, 6208, 6184, + 6184, 6208, 6209, 6185, + 6185, 6209, 6210, 6186, + 6186, 6210, 6211, 6187, + 6187, 6211, 6212, 6188, + 6188, 6212, 6213, 6189, + 6189, 6213, 6214, 6190, + 6190, 6214, 6215, 6191, + 6191, 6215, 6216, 6192, + 6192, 6216, 6217, 6193, + 6193, 6217, 6218, 6194, + 6194, 6218, 6219, 6195, + 4270, 4271, 6220, 6196, + 6196, 6220, 6221, 6197, + 6197, 6221, 6222, 6198, + 6198, 6222, 6223, 6199, + 6199, 6223, 6224, 6200, + 6200, 6224, 6225, 6201, + 6201, 6225, 6226, 6202, + 6202, 6226, 6227, 6203, + 6203, 6227, 6228, 6204, + 6204, 6228, 6229, 6205, + 6205, 6229, 6230, 6206, + 6206, 6230, 6231, 6207, + 6207, 6231, 6232, 6208, + 6208, 6232, 6233, 6209, + 6209, 6233, 6234, 6210, + 6210, 6234, 6235, 6211, + 6211, 6235, 6236, 6212, + 6212, 6236, 6237, 6213, + 6213, 6237, 6238, 6214, + 6214, 6238, 6239, 6215, + 6215, 6239, 6240, 6216, + 6216, 6240, 6241, 6217, + 6217, 6241, 6242, 6218, + 6218, 6242, 6243, 6219, + 4271, 4272, 6244, 6220, + 6220, 6244, 6245, 6221, + 6221, 6245, 6246, 6222, + 6222, 6246, 6247, 6223, + 6223, 6247, 6248, 6224, + 6224, 6248, 6249, 6225, + 6225, 6249, 6250, 6226, + 6226, 6250, 6251, 6227, + 6227, 6251, 6252, 6228, + 6228, 6252, 6253, 6229, + 6229, 6253, 6254, 6230, + 6230, 6254, 6255, 6231, + 6231, 6255, 6256, 6232, + 6232, 6256, 6257, 6233, + 6233, 6257, 6258, 6234, + 6234, 6258, 6259, 6235, + 6235, 6259, 6260, 6236, + 6236, 6260, 6261, 6237, + 6237, 6261, 6262, 6238, + 6238, 6262, 6263, 6239, + 6239, 6263, 6264, 6240, + 6240, 6264, 6265, 6241, + 6241, 6265, 6266, 6242, + 6242, 6266, 6267, 6243, + 4272, 4273, 6268, 6244, + 6244, 6268, 6269, 6245, + 6245, 6269, 6270, 6246, + 6246, 6270, 6271, 6247, + 6247, 6271, 6272, 6248, + 6248, 6272, 6273, 6249, + 6249, 6273, 6274, 6250, + 6250, 6274, 6275, 6251, + 6251, 6275, 6276, 6252, + 6252, 6276, 6277, 6253, + 6253, 6277, 6278, 6254, + 6254, 6278, 6279, 6255, + 6255, 6279, 6280, 6256, + 6256, 6280, 6281, 6257, + 6257, 6281, 6282, 6258, + 6258, 6282, 6283, 6259, + 6259, 6283, 6284, 6260, + 6260, 6284, 6285, 6261, + 6261, 6285, 6286, 6262, + 6262, 6286, 6287, 6263, + 6263, 6287, 6288, 6264, + 6264, 6288, 6289, 6265, + 6265, 6289, 6290, 6266, + 6266, 6290, 6291, 6267, + 4273, 4274, 6292, 6268, + 6268, 6292, 6293, 6269, + 6269, 6293, 6294, 6270, + 6270, 6294, 6295, 6271, + 6271, 6295, 6296, 6272, + 6272, 6296, 6297, 6273, + 6273, 6297, 6298, 6274, + 6274, 6298, 6299, 6275, + 6275, 6299, 6300, 6276, + 6276, 6300, 6301, 6277, + 6277, 6301, 6302, 6278, + 6278, 6302, 6303, 6279, + 6279, 6303, 6304, 6280, + 6280, 6304, 6305, 6281, + 6281, 6305, 6306, 6282, + 6282, 6306, 6307, 6283, + 6283, 6307, 6308, 6284, + 6284, 6308, 6309, 6285, + 6285, 6309, 6310, 6286, + 6286, 6310, 6311, 6287, + 6287, 6311, 6312, 6288, + 6288, 6312, 6313, 6289, + 6289, 6313, 6314, 6290, + 6290, 6314, 6315, 6291, + 4274, 4275, 6316, 6292, + 6292, 6316, 6317, 6293, + 6293, 6317, 6318, 6294, + 6294, 6318, 6319, 6295, + 6295, 6319, 6320, 6296, + 6296, 6320, 6321, 6297, + 6297, 6321, 6322, 6298, + 6298, 6322, 6323, 6299, + 6299, 6323, 6324, 6300, + 6300, 6324, 6325, 6301, + 6301, 6325, 6326, 6302, + 6302, 6326, 6327, 6303, + 6303, 6327, 6328, 6304, + 6304, 6328, 6329, 6305, + 6305, 6329, 6330, 6306, + 6306, 6330, 6331, 6307, + 6307, 6331, 6332, 6308, + 6308, 6332, 6333, 6309, + 6309, 6333, 6334, 6310, + 6310, 6334, 6335, 6311, + 6311, 6335, 6336, 6312, + 6312, 6336, 6337, 6313, + 6313, 6337, 6338, 6314, + 6314, 6338, 6339, 6315, + 4275, 4276, 6340, 6316, + 6316, 6340, 6341, 6317, + 6317, 6341, 6342, 6318, + 6318, 6342, 6343, 6319, + 6319, 6343, 6344, 6320, + 6320, 6344, 6345, 6321, + 6321, 6345, 6346, 6322, + 6322, 6346, 6347, 6323, + 6323, 6347, 6348, 6324, + 6324, 6348, 6349, 6325, + 6325, 6349, 6350, 6326, + 6326, 6350, 6351, 6327, + 6327, 6351, 6352, 6328, + 6328, 6352, 6353, 6329, + 6329, 6353, 6354, 6330, + 6330, 6354, 6355, 6331, + 6331, 6355, 6356, 6332, + 6332, 6356, 6357, 6333, + 6333, 6357, 6358, 6334, + 6334, 6358, 6359, 6335, + 6335, 6359, 6360, 6336, + 6336, 6360, 6361, 6337, + 6337, 6361, 6362, 6338, + 6338, 6362, 6363, 6339, + 4276, 4277, 6364, 6340, + 6340, 6364, 6365, 6341, + 6341, 6365, 6366, 6342, + 6342, 6366, 6367, 6343, + 6343, 6367, 6368, 6344, + 6344, 6368, 6369, 6345, + 6345, 6369, 6370, 6346, + 6346, 6370, 6371, 6347, + 6347, 6371, 6372, 6348, + 6348, 6372, 6373, 6349, + 6349, 6373, 6374, 6350, + 6350, 6374, 6375, 6351, + 6351, 6375, 6376, 6352, + 6352, 6376, 6377, 6353, + 6353, 6377, 6378, 6354, + 6354, 6378, 6379, 6355, + 6355, 6379, 6380, 6356, + 6356, 6380, 6381, 6357, + 6357, 6381, 6382, 6358, + 6358, 6382, 6383, 6359, + 6359, 6383, 6384, 6360, + 6360, 6384, 6385, 6361, + 6361, 6385, 6386, 6362, + 6362, 6386, 6387, 6363, + 4277, 4278, 6388, 6364, + 6364, 6388, 6389, 6365, + 6365, 6389, 6390, 6366, + 6366, 6390, 6391, 6367, + 6367, 6391, 6392, 6368, + 6368, 6392, 6393, 6369, + 6369, 6393, 6394, 6370, + 6370, 6394, 6395, 6371, + 6371, 6395, 6396, 6372, + 6372, 6396, 6397, 6373, + 6373, 6397, 6398, 6374, + 6374, 6398, 6399, 6375, + 6375, 6399, 6400, 6376, + 6376, 6400, 6401, 6377, + 6377, 6401, 6402, 6378, + 6378, 6402, 6403, 6379, + 6379, 6403, 6404, 6380, + 6380, 6404, 6405, 6381, + 6381, 6405, 6406, 6382, + 6382, 6406, 6407, 6383, + 6383, 6407, 6408, 6384, + 6384, 6408, 6409, 6385, + 6385, 6409, 6410, 6386, + 6386, 6410, 6411, 6387, + 4278, 4279, 6412, 6388, + 6388, 6412, 6413, 6389, + 6389, 6413, 6414, 6390, + 6390, 6414, 6415, 6391, + 6391, 6415, 6416, 6392, + 6392, 6416, 6417, 6393, + 6393, 6417, 6418, 6394, + 6394, 6418, 6419, 6395, + 6395, 6419, 6420, 6396, + 6396, 6420, 6421, 6397, + 6397, 6421, 6422, 6398, + 6398, 6422, 6423, 6399, + 6399, 6423, 6424, 6400, + 6400, 6424, 6425, 6401, + 6401, 6425, 6426, 6402, + 6402, 6426, 6427, 6403, + 6403, 6427, 6428, 6404, + 6404, 6428, 6429, 6405, + 6405, 6429, 6430, 6406, + 6406, 6430, 6431, 6407, + 6407, 6431, 6432, 6408, + 6408, 6432, 6433, 6409, + 6409, 6433, 6434, 6410, + 6410, 6434, 6435, 6411, + 4279, 4280, 6436, 6412, + 6412, 6436, 6437, 6413, + 6413, 6437, 6438, 6414, + 6414, 6438, 6439, 6415, + 6415, 6439, 6440, 6416, + 6416, 6440, 6441, 6417, + 6417, 6441, 6442, 6418, + 6418, 6442, 6443, 6419, + 6419, 6443, 6444, 6420, + 6420, 6444, 6445, 6421, + 6421, 6445, 6446, 6422, + 6422, 6446, 6447, 6423, + 6423, 6447, 6448, 6424, + 6424, 6448, 6449, 6425, + 6425, 6449, 6450, 6426, + 6426, 6450, 6451, 6427, + 6427, 6451, 6452, 6428, + 6428, 6452, 6453, 6429, + 6429, 6453, 6454, 6430, + 6430, 6454, 6455, 6431, + 6431, 6455, 6456, 6432, + 6432, 6456, 6457, 6433, + 6433, 6457, 6458, 6434, + 6434, 6458, 6459, 6435, + 4280, 4281, 6460, 6436, + 6436, 6460, 6461, 6437, + 6437, 6461, 6462, 6438, + 6438, 6462, 6463, 6439, + 6439, 6463, 6464, 6440, + 6440, 6464, 6465, 6441, + 6441, 6465, 6466, 6442, + 6442, 6466, 6467, 6443, + 6443, 6467, 6468, 6444, + 6444, 6468, 6469, 6445, + 6445, 6469, 6470, 6446, + 6446, 6470, 6471, 6447, + 6447, 6471, 6472, 6448, + 6448, 6472, 6473, 6449, + 6449, 6473, 6474, 6450, + 6450, 6474, 6475, 6451, + 6451, 6475, 6476, 6452, + 6452, 6476, 6477, 6453, + 6453, 6477, 6478, 6454, + 6454, 6478, 6479, 6455, + 6455, 6479, 6480, 6456, + 6456, 6480, 6481, 6457, + 6457, 6481, 6482, 6458, + 6458, 6482, 6483, 6459, + 4281, 4282, 6484, 6460, + 6460, 6484, 6485, 6461, + 6461, 6485, 6486, 6462, + 6462, 6486, 6487, 6463, + 6463, 6487, 6488, 6464, + 6464, 6488, 6489, 6465, + 6465, 6489, 6490, 6466, + 6466, 6490, 6491, 6467, + 6467, 6491, 6492, 6468, + 6468, 6492, 6493, 6469, + 6469, 6493, 6494, 6470, + 6470, 6494, 6495, 6471, + 6471, 6495, 6496, 6472, + 6472, 6496, 6497, 6473, + 6473, 6497, 6498, 6474, + 6474, 6498, 6499, 6475, + 6475, 6499, 6500, 6476, + 6476, 6500, 6501, 6477, + 6477, 6501, 6502, 6478, + 6478, 6502, 6503, 6479, + 6479, 6503, 6504, 6480, + 6480, 6504, 6505, 6481, + 6481, 6505, 6506, 6482, + 6482, 6506, 6507, 6483, + 4282, 4283, 6508, 6484, + 6484, 6508, 6509, 6485, + 6485, 6509, 6510, 6486, + 6486, 6510, 6511, 6487, + 6487, 6511, 6512, 6488, + 6488, 6512, 6513, 6489, + 6489, 6513, 6514, 6490, + 6490, 6514, 6515, 6491, + 6491, 6515, 6516, 6492, + 6492, 6516, 6517, 6493, + 6493, 6517, 6518, 6494, + 6494, 6518, 6519, 6495, + 6495, 6519, 6520, 6496, + 6496, 6520, 6521, 6497, + 6497, 6521, 6522, 6498, + 6498, 6522, 6523, 6499, + 6499, 6523, 6524, 6500, + 6500, 6524, 6525, 6501, + 6501, 6525, 6526, 6502, + 6502, 6526, 6527, 6503, + 6503, 6527, 6528, 6504, + 6504, 6528, 6529, 6505, + 6505, 6529, 6530, 6506, + 6506, 6530, 6531, 6507, + 4283, 4284, 6532, 6508, + 6508, 6532, 6533, 6509, + 6509, 6533, 6534, 6510, + 6510, 6534, 6535, 6511, + 6511, 6535, 6536, 6512, + 6512, 6536, 6537, 6513, + 6513, 6537, 6538, 6514, + 6514, 6538, 6539, 6515, + 6515, 6539, 6540, 6516, + 6516, 6540, 6541, 6517, + 6517, 6541, 6542, 6518, + 6518, 6542, 6543, 6519, + 6519, 6543, 6544, 6520, + 6520, 6544, 6545, 6521, + 6521, 6545, 6546, 6522, + 6522, 6546, 6547, 6523, + 6523, 6547, 6548, 6524, + 6524, 6548, 6549, 6525, + 6525, 6549, 6550, 6526, + 6526, 6550, 6551, 6527, + 6527, 6551, 6552, 6528, + 6528, 6552, 6553, 6529, + 6529, 6553, 6554, 6530, + 6530, 6554, 6555, 6531, + 4284, 4285, 6556, 6532, + 6532, 6556, 6557, 6533, + 6533, 6557, 6558, 6534, + 6534, 6558, 6559, 6535, + 6535, 6559, 6560, 6536, + 6536, 6560, 6561, 6537, + 6537, 6561, 6562, 6538, + 6538, 6562, 6563, 6539, + 6539, 6563, 6564, 6540, + 6540, 6564, 6565, 6541, + 6541, 6565, 6566, 6542, + 6542, 6566, 6567, 6543, + 6543, 6567, 6568, 6544, + 6544, 6568, 6569, 6545, + 6545, 6569, 6570, 6546, + 6546, 6570, 6571, 6547, + 6547, 6571, 6572, 6548, + 6548, 6572, 6573, 6549, + 6549, 6573, 6574, 6550, + 6550, 6574, 6575, 6551, + 6551, 6575, 6576, 6552, + 6552, 6576, 6577, 6553, + 6553, 6577, 6578, 6554, + 6554, 6578, 6579, 6555, + 4285, 4286, 6580, 6556, + 6556, 6580, 6581, 6557, + 6557, 6581, 6582, 6558, + 6558, 6582, 6583, 6559, + 6559, 6583, 6584, 6560, + 6560, 6584, 6585, 6561, + 6561, 6585, 6586, 6562, + 6562, 6586, 6587, 6563, + 6563, 6587, 6588, 6564, + 6564, 6588, 6589, 6565, + 6565, 6589, 6590, 6566, + 6566, 6590, 6591, 6567, + 6567, 6591, 6592, 6568, + 6568, 6592, 6593, 6569, + 6569, 6593, 6594, 6570, + 6570, 6594, 6595, 6571, + 6571, 6595, 6596, 6572, + 6572, 6596, 6597, 6573, + 6573, 6597, 6598, 6574, + 6574, 6598, 6599, 6575, + 6575, 6599, 6600, 6576, + 6576, 6600, 6601, 6577, + 6577, 6601, 6602, 6578, + 6578, 6602, 6603, 6579, + 4286, 4287, 6604, 6580, + 6580, 6604, 6605, 6581, + 6581, 6605, 6606, 6582, + 6582, 6606, 6607, 6583, + 6583, 6607, 6608, 6584, + 6584, 6608, 6609, 6585, + 6585, 6609, 6610, 6586, + 6586, 6610, 6611, 6587, + 6587, 6611, 6612, 6588, + 6588, 6612, 6613, 6589, + 6589, 6613, 6614, 6590, + 6590, 6614, 6615, 6591, + 6591, 6615, 6616, 6592, + 6592, 6616, 6617, 6593, + 6593, 6617, 6618, 6594, + 6594, 6618, 6619, 6595, + 6595, 6619, 6620, 6596, + 6596, 6620, 6621, 6597, + 6597, 6621, 6622, 6598, + 6598, 6622, 6623, 6599, + 6599, 6623, 6624, 6600, + 6600, 6624, 6625, 6601, + 6601, 6625, 6626, 6602, + 6602, 6626, 6627, 6603, + 4287, 4288, 6628, 6604, + 6604, 6628, 6629, 6605, + 6605, 6629, 6630, 6606, + 6606, 6630, 6631, 6607, + 6607, 6631, 6632, 6608, + 6608, 6632, 6633, 6609, + 6609, 6633, 6634, 6610, + 6610, 6634, 6635, 6611, + 6611, 6635, 6636, 6612, + 6612, 6636, 6637, 6613, + 6613, 6637, 6638, 6614, + 6614, 6638, 6639, 6615, + 6615, 6639, 6640, 6616, + 6616, 6640, 6641, 6617, + 6617, 6641, 6642, 6618, + 6618, 6642, 6643, 6619, + 6619, 6643, 6644, 6620, + 6620, 6644, 6645, 6621, + 6621, 6645, 6646, 6622, + 6622, 6646, 6647, 6623, + 6623, 6647, 6648, 6624, + 6624, 6648, 6649, 6625, + 6625, 6649, 6650, 6626, + 6626, 6650, 6651, 6627, + 4288, 4289, 6652, 6628, + 6628, 6652, 6653, 6629, + 6629, 6653, 6654, 6630, + 6630, 6654, 6655, 6631, + 6631, 6655, 6656, 6632, + 6632, 6656, 6657, 6633, + 6633, 6657, 6658, 6634, + 6634, 6658, 6659, 6635, + 6635, 6659, 6660, 6636, + 6636, 6660, 6661, 6637, + 6637, 6661, 6662, 6638, + 6638, 6662, 6663, 6639, + 6639, 6663, 6664, 6640, + 6640, 6664, 6665, 6641, + 6641, 6665, 6666, 6642, + 6642, 6666, 6667, 6643, + 6643, 6667, 6668, 6644, + 6644, 6668, 6669, 6645, + 6645, 6669, 6670, 6646, + 6646, 6670, 6671, 6647, + 6647, 6671, 6672, 6648, + 6648, 6672, 6673, 6649, + 6649, 6673, 6674, 6650, + 6650, 6674, 6675, 6651, + 4289, 4290, 6676, 6652, + 6652, 6676, 6677, 6653, + 6653, 6677, 6678, 6654, + 6654, 6678, 6679, 6655, + 6655, 6679, 6680, 6656, + 6656, 6680, 6681, 6657, + 6657, 6681, 6682, 6658, + 6658, 6682, 6683, 6659, + 6659, 6683, 6684, 6660, + 6660, 6684, 6685, 6661, + 6661, 6685, 6686, 6662, + 6662, 6686, 6687, 6663, + 6663, 6687, 6688, 6664, + 6664, 6688, 6689, 6665, + 6665, 6689, 6690, 6666, + 6666, 6690, 6691, 6667, + 6667, 6691, 6692, 6668, + 6668, 6692, 6693, 6669, + 6669, 6693, 6694, 6670, + 6670, 6694, 6695, 6671, + 6671, 6695, 6696, 6672, + 6672, 6696, 6697, 6673, + 6673, 6697, 6698, 6674, + 6674, 6698, 6699, 6675, + 4290, 4291, 6700, 6676, + 6676, 6700, 6701, 6677, + 6677, 6701, 6702, 6678, + 6678, 6702, 6703, 6679, + 6679, 6703, 6704, 6680, + 6680, 6704, 6705, 6681, + 6681, 6705, 6706, 6682, + 6682, 6706, 6707, 6683, + 6683, 6707, 6708, 6684, + 6684, 6708, 6709, 6685, + 6685, 6709, 6710, 6686, + 6686, 6710, 6711, 6687, + 6687, 6711, 6712, 6688, + 6688, 6712, 6713, 6689, + 6689, 6713, 6714, 6690, + 6690, 6714, 6715, 6691, + 6691, 6715, 6716, 6692, + 6692, 6716, 6717, 6693, + 6693, 6717, 6718, 6694, + 6694, 6718, 6719, 6695, + 6695, 6719, 6720, 6696, + 6696, 6720, 6721, 6697, + 6697, 6721, 6722, 6698, + 6698, 6722, 6723, 6699, + 4291, 4292, 6724, 6700, + 6700, 6724, 6725, 6701, + 6701, 6725, 6726, 6702, + 6702, 6726, 6727, 6703, + 6703, 6727, 6728, 6704, + 6704, 6728, 6729, 6705, + 6705, 6729, 6730, 6706, + 6706, 6730, 6731, 6707, + 6707, 6731, 6732, 6708, + 6708, 6732, 6733, 6709, + 6709, 6733, 6734, 6710, + 6710, 6734, 6735, 6711, + 6711, 6735, 6736, 6712, + 6712, 6736, 6737, 6713, + 6713, 6737, 6738, 6714, + 6714, 6738, 6739, 6715, + 6715, 6739, 6740, 6716, + 6716, 6740, 6741, 6717, + 6717, 6741, 6742, 6718, + 6718, 6742, 6743, 6719, + 6719, 6743, 6744, 6720, + 6720, 6744, 6745, 6721, + 6721, 6745, 6746, 6722, + 6722, 6746, 6747, 6723, + 4292, 4293, 6748, 6724, + 6724, 6748, 6749, 6725, + 6725, 6749, 6750, 6726, + 6726, 6750, 6751, 6727, + 6727, 6751, 6752, 6728, + 6728, 6752, 6753, 6729, + 6729, 6753, 6754, 6730, + 6730, 6754, 6755, 6731, + 6731, 6755, 6756, 6732, + 6732, 6756, 6757, 6733, + 6733, 6757, 6758, 6734, + 6734, 6758, 6759, 6735, + 6735, 6759, 6760, 6736, + 6736, 6760, 6761, 6737, + 6737, 6761, 6762, 6738, + 6738, 6762, 6763, 6739, + 6739, 6763, 6764, 6740, + 6740, 6764, 6765, 6741, + 6741, 6765, 6766, 6742, + 6742, 6766, 6767, 6743, + 6743, 6767, 6768, 6744, + 6744, 6768, 6769, 6745, + 6745, 6769, 6770, 6746, + 6746, 6770, 6771, 6747, + 4293, 4294, 6772, 6748, + 6748, 6772, 6773, 6749, + 6749, 6773, 6774, 6750, + 6750, 6774, 6775, 6751, + 6751, 6775, 6776, 6752, + 6752, 6776, 6777, 6753, + 6753, 6777, 6778, 6754, + 6754, 6778, 6779, 6755, + 6755, 6779, 6780, 6756, + 6756, 6780, 6781, 6757, + 6757, 6781, 6782, 6758, + 6758, 6782, 6783, 6759, + 6759, 6783, 6784, 6760, + 6760, 6784, 6785, 6761, + 6761, 6785, 6786, 6762, + 6762, 6786, 6787, 6763, + 6763, 6787, 6788, 6764, + 6764, 6788, 6789, 6765, + 6765, 6789, 6790, 6766, + 6766, 6790, 6791, 6767, + 6767, 6791, 6792, 6768, + 6768, 6792, 6793, 6769, + 6769, 6793, 6794, 6770, + 6770, 6794, 6795, 6771, + 4294, 4295, 6796, 6772, + 6772, 6796, 6797, 6773, + 6773, 6797, 6798, 6774, + 6774, 6798, 6799, 6775, + 6775, 6799, 6800, 6776, + 6776, 6800, 6801, 6777, + 6777, 6801, 6802, 6778, + 6778, 6802, 6803, 6779, + 6779, 6803, 6804, 6780, + 6780, 6804, 6805, 6781, + 6781, 6805, 6806, 6782, + 6782, 6806, 6807, 6783, + 6783, 6807, 6808, 6784, + 6784, 6808, 6809, 6785, + 6785, 6809, 6810, 6786, + 6786, 6810, 6811, 6787, + 6787, 6811, 6812, 6788, + 6788, 6812, 6813, 6789, + 6789, 6813, 6814, 6790, + 6790, 6814, 6815, 6791, + 6791, 6815, 6816, 6792, + 6792, 6816, 6817, 6793, + 6793, 6817, 6818, 6794, + 6794, 6818, 6819, 6795, + 4295, 4296, 6820, 6796, + 6796, 6820, 6821, 6797, + 6797, 6821, 6822, 6798, + 6798, 6822, 6823, 6799, + 6799, 6823, 6824, 6800, + 6800, 6824, 6825, 6801, + 6801, 6825, 6826, 6802, + 6802, 6826, 6827, 6803, + 6803, 6827, 6828, 6804, + 6804, 6828, 6829, 6805, + 6805, 6829, 6830, 6806, + 6806, 6830, 6831, 6807, + 6807, 6831, 6832, 6808, + 6808, 6832, 6833, 6809, + 6809, 6833, 6834, 6810, + 6810, 6834, 6835, 6811, + 6811, 6835, 6836, 6812, + 6812, 6836, 6837, 6813, + 6813, 6837, 6838, 6814, + 6814, 6838, 6839, 6815, + 6815, 6839, 6840, 6816, + 6816, 6840, 6841, 6817, + 6817, 6841, 6842, 6818, + 6818, 6842, 6843, 6819, + 4296, 4297, 6844, 6820, + 6820, 6844, 6845, 6821, + 6821, 6845, 6846, 6822, + 6822, 6846, 6847, 6823, + 6823, 6847, 6848, 6824, + 6824, 6848, 6849, 6825, + 6825, 6849, 6850, 6826, + 6826, 6850, 6851, 6827, + 6827, 6851, 6852, 6828, + 6828, 6852, 6853, 6829, + 6829, 6853, 6854, 6830, + 6830, 6854, 6855, 6831, + 6831, 6855, 6856, 6832, + 6832, 6856, 6857, 6833, + 6833, 6857, 6858, 6834, + 6834, 6858, 6859, 6835, + 6835, 6859, 6860, 6836, + 6836, 6860, 6861, 6837, + 6837, 6861, 6862, 6838, + 6838, 6862, 6863, 6839, + 6839, 6863, 6864, 6840, + 6840, 6864, 6865, 6841, + 6841, 6865, 6866, 6842, + 6842, 6866, 6867, 6843, + 4297, 4298, 6868, 6844, + 6844, 6868, 6869, 6845, + 6845, 6869, 6870, 6846, + 6846, 6870, 6871, 6847, + 6847, 6871, 6872, 6848, + 6848, 6872, 6873, 6849, + 6849, 6873, 6874, 6850, + 6850, 6874, 6875, 6851, + 6851, 6875, 6876, 6852, + 6852, 6876, 6877, 6853, + 6853, 6877, 6878, 6854, + 6854, 6878, 6879, 6855, + 6855, 6879, 6880, 6856, + 6856, 6880, 6881, 6857, + 6857, 6881, 6882, 6858, + 6858, 6882, 6883, 6859, + 6859, 6883, 6884, 6860, + 6860, 6884, 6885, 6861, + 6861, 6885, 6886, 6862, + 6862, 6886, 6887, 6863, + 6863, 6887, 6888, 6864, + 6864, 6888, 6889, 6865, + 6865, 6889, 6890, 6866, + 6866, 6890, 6891, 6867, + 4298, 4299, 6892, 6868, + 6868, 6892, 6893, 6869, + 6869, 6893, 6894, 6870, + 6870, 6894, 6895, 6871, + 6871, 6895, 6896, 6872, + 6872, 6896, 6897, 6873, + 6873, 6897, 6898, 6874, + 6874, 6898, 6899, 6875, + 6875, 6899, 6900, 6876, + 6876, 6900, 6901, 6877, + 6877, 6901, 6902, 6878, + 6878, 6902, 6903, 6879, + 6879, 6903, 6904, 6880, + 6880, 6904, 6905, 6881, + 6881, 6905, 6906, 6882, + 6882, 6906, 6907, 6883, + 6883, 6907, 6908, 6884, + 6884, 6908, 6909, 6885, + 6885, 6909, 6910, 6886, + 6886, 6910, 6911, 6887, + 6887, 6911, 6912, 6888, + 6888, 6912, 6913, 6889, + 6889, 6913, 6914, 6890, + 6890, 6914, 6915, 6891, + 4299, 4300, 6916, 6892, + 6892, 6916, 6917, 6893, + 6893, 6917, 6918, 6894, + 6894, 6918, 6919, 6895, + 6895, 6919, 6920, 6896, + 6896, 6920, 6921, 6897, + 6897, 6921, 6922, 6898, + 6898, 6922, 6923, 6899, + 6899, 6923, 6924, 6900, + 6900, 6924, 6925, 6901, + 6901, 6925, 6926, 6902, + 6902, 6926, 6927, 6903, + 6903, 6927, 6928, 6904, + 6904, 6928, 6929, 6905, + 6905, 6929, 6930, 6906, + 6906, 6930, 6931, 6907, + 6907, 6931, 6932, 6908, + 6908, 6932, 6933, 6909, + 6909, 6933, 6934, 6910, + 6910, 6934, 6935, 6911, + 6911, 6935, 6936, 6912, + 6912, 6936, 6937, 6913, + 6913, 6937, 6938, 6914, + 6914, 6938, 6939, 6915, + 4300, 4301, 6940, 6916, + 6916, 6940, 6941, 6917, + 6917, 6941, 6942, 6918, + 6918, 6942, 6943, 6919, + 6919, 6943, 6944, 6920, + 6920, 6944, 6945, 6921, + 6921, 6945, 6946, 6922, + 6922, 6946, 6947, 6923, + 6923, 6947, 6948, 6924, + 6924, 6948, 6949, 6925, + 6925, 6949, 6950, 6926, + 6926, 6950, 6951, 6927, + 6927, 6951, 6952, 6928, + 6928, 6952, 6953, 6929, + 6929, 6953, 6954, 6930, + 6930, 6954, 6955, 6931, + 6931, 6955, 6956, 6932, + 6932, 6956, 6957, 6933, + 6933, 6957, 6958, 6934, + 6934, 6958, 6959, 6935, + 6935, 6959, 6960, 6936, + 6936, 6960, 6961, 6937, + 6937, 6961, 6962, 6938, + 6938, 6962, 6963, 6939, + 4301, 4302, 6964, 6940, + 6940, 6964, 6965, 6941, + 6941, 6965, 6966, 6942, + 6942, 6966, 6967, 6943, + 6943, 6967, 6968, 6944, + 6944, 6968, 6969, 6945, + 6945, 6969, 6970, 6946, + 6946, 6970, 6971, 6947, + 6947, 6971, 6972, 6948, + 6948, 6972, 6973, 6949, + 6949, 6973, 6974, 6950, + 6950, 6974, 6975, 6951, + 6951, 6975, 6976, 6952, + 6952, 6976, 6977, 6953, + 6953, 6977, 6978, 6954, + 6954, 6978, 6979, 6955, + 6955, 6979, 6980, 6956, + 6956, 6980, 6981, 6957, + 6957, 6981, 6982, 6958, + 6958, 6982, 6983, 6959, + 6959, 6983, 6984, 6960, + 6960, 6984, 6985, 6961, + 6961, 6985, 6986, 6962, + 6962, 6986, 6987, 6963, + 4302, 4303, 6988, 6964, + 6964, 6988, 6989, 6965, + 6965, 6989, 6990, 6966, + 6966, 6990, 6991, 6967, + 6967, 6991, 6992, 6968, + 6968, 6992, 6993, 6969, + 6969, 6993, 6994, 6970, + 6970, 6994, 6995, 6971, + 6971, 6995, 6996, 6972, + 6972, 6996, 6997, 6973, + 6973, 6997, 6998, 6974, + 6974, 6998, 6999, 6975, + 6975, 6999, 7000, 6976, + 6976, 7000, 7001, 6977, + 6977, 7001, 7002, 6978, + 6978, 7002, 7003, 6979, + 6979, 7003, 7004, 6980, + 6980, 7004, 7005, 6981, + 6981, 7005, 7006, 6982, + 6982, 7006, 7007, 6983, + 6983, 7007, 7008, 6984, + 6984, 7008, 7009, 6985, + 6985, 7009, 7010, 6986, + 6986, 7010, 7011, 6987, + 4303, 4304, 7012, 6988, + 6988, 7012, 7013, 6989, + 6989, 7013, 7014, 6990, + 6990, 7014, 7015, 6991, + 6991, 7015, 7016, 6992, + 6992, 7016, 7017, 6993, + 6993, 7017, 7018, 6994, + 6994, 7018, 7019, 6995, + 6995, 7019, 7020, 6996, + 6996, 7020, 7021, 6997, + 6997, 7021, 7022, 6998, + 6998, 7022, 7023, 6999, + 6999, 7023, 7024, 7000, + 7000, 7024, 7025, 7001, + 7001, 7025, 7026, 7002, + 7002, 7026, 7027, 7003, + 7003, 7027, 7028, 7004, + 7004, 7028, 7029, 7005, + 7005, 7029, 7030, 7006, + 7006, 7030, 7031, 7007, + 7007, 7031, 7032, 7008, + 7008, 7032, 7033, 7009, + 7009, 7033, 7034, 7010, + 7010, 7034, 7035, 7011, + 4304, 4305, 7036, 7012, + 7012, 7036, 7037, 7013, + 7013, 7037, 7038, 7014, + 7014, 7038, 7039, 7015, + 7015, 7039, 7040, 7016, + 7016, 7040, 7041, 7017, + 7017, 7041, 7042, 7018, + 7018, 7042, 7043, 7019, + 7019, 7043, 7044, 7020, + 7020, 7044, 7045, 7021, + 7021, 7045, 7046, 7022, + 7022, 7046, 7047, 7023, + 7023, 7047, 7048, 7024, + 7024, 7048, 7049, 7025, + 7025, 7049, 7050, 7026, + 7026, 7050, 7051, 7027, + 7027, 7051, 7052, 7028, + 7028, 7052, 7053, 7029, + 7029, 7053, 7054, 7030, + 7030, 7054, 7055, 7031, + 7031, 7055, 7056, 7032, + 7032, 7056, 7057, 7033, + 7033, 7057, 7058, 7034, + 7034, 7058, 7059, 7035, + 4305, 4306, 7060, 7036, + 7036, 7060, 7061, 7037, + 7037, 7061, 7062, 7038, + 7038, 7062, 7063, 7039, + 7039, 7063, 7064, 7040, + 7040, 7064, 7065, 7041, + 7041, 7065, 7066, 7042, + 7042, 7066, 7067, 7043, + 7043, 7067, 7068, 7044, + 7044, 7068, 7069, 7045, + 7045, 7069, 7070, 7046, + 7046, 7070, 7071, 7047, + 7047, 7071, 7072, 7048, + 7048, 7072, 7073, 7049, + 7049, 7073, 7074, 7050, + 7050, 7074, 7075, 7051, + 7051, 7075, 7076, 7052, + 7052, 7076, 7077, 7053, + 7053, 7077, 7078, 7054, + 7054, 7078, 7079, 7055, + 7055, 7079, 7080, 7056, + 7056, 7080, 7081, 7057, + 7057, 7081, 7082, 7058, + 7058, 7082, 7083, 7059, + 4306, 4307, 7084, 7060, + 7060, 7084, 7085, 7061, + 7061, 7085, 7086, 7062, + 7062, 7086, 7087, 7063, + 7063, 7087, 7088, 7064, + 7064, 7088, 7089, 7065, + 7065, 7089, 7090, 7066, + 7066, 7090, 7091, 7067, + 7067, 7091, 7092, 7068, + 7068, 7092, 7093, 7069, + 7069, 7093, 7094, 7070, + 7070, 7094, 7095, 7071, + 7071, 7095, 7096, 7072, + 7072, 7096, 7097, 7073, + 7073, 7097, 7098, 7074, + 7074, 7098, 7099, 7075, + 7075, 7099, 7100, 7076, + 7076, 7100, 7101, 7077, + 7077, 7101, 7102, 7078, + 7078, 7102, 7103, 7079, + 7079, 7103, 7104, 7080, + 7080, 7104, 7105, 7081, + 7081, 7105, 7106, 7082, + 7082, 7106, 7107, 7083, + 4307, 4308, 7108, 7084, + 7084, 7108, 7109, 7085, + 7085, 7109, 7110, 7086, + 7086, 7110, 7111, 7087, + 7087, 7111, 7112, 7088, + 7088, 7112, 7113, 7089, + 7089, 7113, 7114, 7090, + 7090, 7114, 7115, 7091, + 7091, 7115, 7116, 7092, + 7092, 7116, 7117, 7093, + 7093, 7117, 7118, 7094, + 7094, 7118, 7119, 7095, + 7095, 7119, 7120, 7096, + 7096, 7120, 7121, 7097, + 7097, 7121, 7122, 7098, + 7098, 7122, 7123, 7099, + 7099, 7123, 7124, 7100, + 7100, 7124, 7125, 7101, + 7101, 7125, 7126, 7102, + 7102, 7126, 7127, 7103, + 7103, 7127, 7128, 7104, + 7104, 7128, 7129, 7105, + 7105, 7129, 7130, 7106, + 7106, 7130, 7131, 7107, + 4308, 4309, 7132, 7108, + 7108, 7132, 7133, 7109, + 7109, 7133, 7134, 7110, + 7110, 7134, 7135, 7111, + 7111, 7135, 7136, 7112, + 7112, 7136, 7137, 7113, + 7113, 7137, 7138, 7114, + 7114, 7138, 7139, 7115, + 7115, 7139, 7140, 7116, + 7116, 7140, 7141, 7117, + 7117, 7141, 7142, 7118, + 7118, 7142, 7143, 7119, + 7119, 7143, 7144, 7120, + 7120, 7144, 7145, 7121, + 7121, 7145, 7146, 7122, + 7122, 7146, 7147, 7123, + 7123, 7147, 7148, 7124, + 7124, 7148, 7149, 7125, + 7125, 7149, 7150, 7126, + 7126, 7150, 7151, 7127, + 7127, 7151, 7152, 7128, + 7128, 7152, 7153, 7129, + 7129, 7153, 7154, 7130, + 7130, 7154, 7155, 7131, + 4309, 4310, 7156, 7132, + 7132, 7156, 7157, 7133, + 7133, 7157, 7158, 7134, + 7134, 7158, 7159, 7135, + 7135, 7159, 7160, 7136, + 7136, 7160, 7161, 7137, + 7137, 7161, 7162, 7138, + 7138, 7162, 7163, 7139, + 7139, 7163, 7164, 7140, + 7140, 7164, 7165, 7141, + 7141, 7165, 7166, 7142, + 7142, 7166, 7167, 7143, + 7143, 7167, 7168, 7144, + 7144, 7168, 7169, 7145, + 7145, 7169, 7170, 7146, + 7146, 7170, 7171, 7147, + 7147, 7171, 7172, 7148, + 7148, 7172, 7173, 7149, + 7149, 7173, 7174, 7150, + 7150, 7174, 7175, 7151, + 7151, 7175, 7176, 7152, + 7152, 7176, 7177, 7153, + 7153, 7177, 7178, 7154, + 7154, 7178, 7179, 7155, + 4310, 4311, 7180, 7156, + 7156, 7180, 7181, 7157, + 7157, 7181, 7182, 7158, + 7158, 7182, 7183, 7159, + 7159, 7183, 7184, 7160, + 7160, 7184, 7185, 7161, + 7161, 7185, 7186, 7162, + 7162, 7186, 7187, 7163, + 7163, 7187, 7188, 7164, + 7164, 7188, 7189, 7165, + 7165, 7189, 7190, 7166, + 7166, 7190, 7191, 7167, + 7167, 7191, 7192, 7168, + 7168, 7192, 7193, 7169, + 7169, 7193, 7194, 7170, + 7170, 7194, 7195, 7171, + 7171, 7195, 7196, 7172, + 7172, 7196, 7197, 7173, + 7173, 7197, 7198, 7174, + 7174, 7198, 7199, 7175, + 7175, 7199, 7200, 7176, + 7176, 7200, 7201, 7177, + 7177, 7201, 7202, 7178, + 7178, 7202, 7203, 7179, + 4311, 4312, 7204, 7180, + 7180, 7204, 7205, 7181, + 7181, 7205, 7206, 7182, + 7182, 7206, 7207, 7183, + 7183, 7207, 7208, 7184, + 7184, 7208, 7209, 7185, + 7185, 7209, 7210, 7186, + 7186, 7210, 7211, 7187, + 7187, 7211, 7212, 7188, + 7188, 7212, 7213, 7189, + 7189, 7213, 7214, 7190, + 7190, 7214, 7215, 7191, + 7191, 7215, 7216, 7192, + 7192, 7216, 7217, 7193, + 7193, 7217, 7218, 7194, + 7194, 7218, 7219, 7195, + 7195, 7219, 7220, 7196, + 7196, 7220, 7221, 7197, + 7197, 7221, 7222, 7198, + 7198, 7222, 7223, 7199, + 7199, 7223, 7224, 7200, + 7200, 7224, 7225, 7201, + 7201, 7225, 7226, 7202, + 7202, 7226, 7227, 7203, + 4312, 4313, 7228, 7204, + 7204, 7228, 7229, 7205, + 7205, 7229, 7230, 7206, + 7206, 7230, 7231, 7207, + 7207, 7231, 7232, 7208, + 7208, 7232, 7233, 7209, + 7209, 7233, 7234, 7210, + 7210, 7234, 7235, 7211, + 7211, 7235, 7236, 7212, + 7212, 7236, 7237, 7213, + 7213, 7237, 7238, 7214, + 7214, 7238, 7239, 7215, + 7215, 7239, 7240, 7216, + 7216, 7240, 7241, 7217, + 7217, 7241, 7242, 7218, + 7218, 7242, 7243, 7219, + 7219, 7243, 7244, 7220, + 7220, 7244, 7245, 7221, + 7221, 7245, 7246, 7222, + 7222, 7246, 7247, 7223, + 7223, 7247, 7248, 7224, + 7224, 7248, 7249, 7225, + 7225, 7249, 7250, 7226, + 7226, 7250, 7251, 7227, + 4313, 4314, 7252, 7228, + 7228, 7252, 7253, 7229, + 7229, 7253, 7254, 7230, + 7230, 7254, 7255, 7231, + 7231, 7255, 7256, 7232, + 7232, 7256, 7257, 7233, + 7233, 7257, 7258, 7234, + 7234, 7258, 7259, 7235, + 7235, 7259, 7260, 7236, + 7236, 7260, 7261, 7237, + 7237, 7261, 7262, 7238, + 7238, 7262, 7263, 7239, + 7239, 7263, 7264, 7240, + 7240, 7264, 7265, 7241, + 7241, 7265, 7266, 7242, + 7242, 7266, 7267, 7243, + 7243, 7267, 7268, 7244, + 7244, 7268, 7269, 7245, + 7245, 7269, 7270, 7246, + 7246, 7270, 7271, 7247, + 7247, 7271, 7272, 7248, + 7248, 7272, 7273, 7249, + 7249, 7273, 7274, 7250, + 7250, 7274, 7275, 7251, + 4314, 4315, 7276, 7252, + 7252, 7276, 7277, 7253, + 7253, 7277, 7278, 7254, + 7254, 7278, 7279, 7255, + 7255, 7279, 7280, 7256, + 7256, 7280, 7281, 7257, + 7257, 7281, 7282, 7258, + 7258, 7282, 7283, 7259, + 7259, 7283, 7284, 7260, + 7260, 7284, 7285, 7261, + 7261, 7285, 7286, 7262, + 7262, 7286, 7287, 7263, + 7263, 7287, 7288, 7264, + 7264, 7288, 7289, 7265, + 7265, 7289, 7290, 7266, + 7266, 7290, 7291, 7267, + 7267, 7291, 7292, 7268, + 7268, 7292, 7293, 7269, + 7269, 7293, 7294, 7270, + 7270, 7294, 7295, 7271, + 7271, 7295, 7296, 7272, + 7272, 7296, 7297, 7273, + 7273, 7297, 7298, 7274, + 7274, 7298, 7299, 7275, + 4315, 4316, 7300, 7276, + 7276, 7300, 7301, 7277, + 7277, 7301, 7302, 7278, + 7278, 7302, 7303, 7279, + 7279, 7303, 7304, 7280, + 7280, 7304, 7305, 7281, + 7281, 7305, 7306, 7282, + 7282, 7306, 7307, 7283, + 7283, 7307, 7308, 7284, + 7284, 7308, 7309, 7285, + 7285, 7309, 7310, 7286, + 7286, 7310, 7311, 7287, + 7287, 7311, 7312, 7288, + 7288, 7312, 7313, 7289, + 7289, 7313, 7314, 7290, + 7290, 7314, 7315, 7291, + 7291, 7315, 7316, 7292, + 7292, 7316, 7317, 7293, + 7293, 7317, 7318, 7294, + 7294, 7318, 7319, 7295, + 7295, 7319, 7320, 7296, + 7296, 7320, 7321, 7297, + 7297, 7321, 7322, 7298, + 7298, 7322, 7323, 7299, + 4316, 4317, 7324, 7300, + 7300, 7324, 7325, 7301, + 7301, 7325, 7326, 7302, + 7302, 7326, 7327, 7303, + 7303, 7327, 7328, 7304, + 7304, 7328, 7329, 7305, + 7305, 7329, 7330, 7306, + 7306, 7330, 7331, 7307, + 7307, 7331, 7332, 7308, + 7308, 7332, 7333, 7309, + 7309, 7333, 7334, 7310, + 7310, 7334, 7335, 7311, + 7311, 7335, 7336, 7312, + 7312, 7336, 7337, 7313, + 7313, 7337, 7338, 7314, + 7314, 7338, 7339, 7315, + 7315, 7339, 7340, 7316, + 7316, 7340, 7341, 7317, + 7317, 7341, 7342, 7318, + 7318, 7342, 7343, 7319, + 7319, 7343, 7344, 7320, + 7320, 7344, 7345, 7321, + 7321, 7345, 7346, 7322, + 7322, 7346, 7347, 7323, + 4317, 4318, 7348, 7324, + 7324, 7348, 7349, 7325, + 7325, 7349, 7350, 7326, + 7326, 7350, 7351, 7327, + 7327, 7351, 7352, 7328, + 7328, 7352, 7353, 7329, + 7329, 7353, 7354, 7330, + 7330, 7354, 7355, 7331, + 7331, 7355, 7356, 7332, + 7332, 7356, 7357, 7333, + 7333, 7357, 7358, 7334, + 7334, 7358, 7359, 7335, + 7335, 7359, 7360, 7336, + 7336, 7360, 7361, 7337, + 7337, 7361, 7362, 7338, + 7338, 7362, 7363, 7339, + 7339, 7363, 7364, 7340, + 7340, 7364, 7365, 7341, + 7341, 7365, 7366, 7342, + 7342, 7366, 7367, 7343, + 7343, 7367, 7368, 7344, + 7344, 7368, 7369, 7345, + 7345, 7369, 7370, 7346, + 7346, 7370, 7371, 7347, + 4318, 4319, 7372, 7348, + 7348, 7372, 7373, 7349, + 7349, 7373, 7374, 7350, + 7350, 7374, 7375, 7351, + 7351, 7375, 7376, 7352, + 7352, 7376, 7377, 7353, + 7353, 7377, 7378, 7354, + 7354, 7378, 7379, 7355, + 7355, 7379, 7380, 7356, + 7356, 7380, 7381, 7357, + 7357, 7381, 7382, 7358, + 7358, 7382, 7383, 7359, + 7359, 7383, 7384, 7360, + 7360, 7384, 7385, 7361, + 7361, 7385, 7386, 7362, + 7362, 7386, 7387, 7363, + 7363, 7387, 7388, 7364, + 7364, 7388, 7389, 7365, + 7365, 7389, 7390, 7366, + 7366, 7390, 7391, 7367, + 7367, 7391, 7392, 7368, + 7368, 7392, 7393, 7369, + 7369, 7393, 7394, 7370, + 7370, 7394, 7395, 7371, + 4319, 4320, 7396, 7372, + 7372, 7396, 7397, 7373, + 7373, 7397, 7398, 7374, + 7374, 7398, 7399, 7375, + 7375, 7399, 7400, 7376, + 7376, 7400, 7401, 7377, + 7377, 7401, 7402, 7378, + 7378, 7402, 7403, 7379, + 7379, 7403, 7404, 7380, + 7380, 7404, 7405, 7381, + 7381, 7405, 7406, 7382, + 7382, 7406, 7407, 7383, + 7383, 7407, 7408, 7384, + 7384, 7408, 7409, 7385, + 7385, 7409, 7410, 7386, + 7386, 7410, 7411, 7387, + 7387, 7411, 7412, 7388, + 7388, 7412, 7413, 7389, + 7389, 7413, 7414, 7390, + 7390, 7414, 7415, 7391, + 7391, 7415, 7416, 7392, + 7392, 7416, 7417, 7393, + 7393, 7417, 7418, 7394, + 7394, 7418, 7419, 7395, + 4320, 4321, 7420, 7396, + 7396, 7420, 7421, 7397, + 7397, 7421, 7422, 7398, + 7398, 7422, 7423, 7399, + 7399, 7423, 7424, 7400, + 7400, 7424, 7425, 7401, + 7401, 7425, 7426, 7402, + 7402, 7426, 7427, 7403, + 7403, 7427, 7428, 7404, + 7404, 7428, 7429, 7405, + 7405, 7429, 7430, 7406, + 7406, 7430, 7431, 7407, + 7407, 7431, 7432, 7408, + 7408, 7432, 7433, 7409, + 7409, 7433, 7434, 7410, + 7410, 7434, 7435, 7411, + 7411, 7435, 7436, 7412, + 7412, 7436, 7437, 7413, + 7413, 7437, 7438, 7414, + 7414, 7438, 7439, 7415, + 7415, 7439, 7440, 7416, + 7416, 7440, 7441, 7417, + 7417, 7441, 7442, 7418, + 7418, 7442, 7443, 7419, + 4321, 4322, 7444, 7420, + 7420, 7444, 7445, 7421, + 7421, 7445, 7446, 7422, + 7422, 7446, 7447, 7423, + 7423, 7447, 7448, 7424, + 7424, 7448, 7449, 7425, + 7425, 7449, 7450, 7426, + 7426, 7450, 7451, 7427, + 7427, 7451, 7452, 7428, + 7428, 7452, 7453, 7429, + 7429, 7453, 7454, 7430, + 7430, 7454, 7455, 7431, + 7431, 7455, 7456, 7432, + 7432, 7456, 7457, 7433, + 7433, 7457, 7458, 7434, + 7434, 7458, 7459, 7435, + 7435, 7459, 7460, 7436, + 7436, 7460, 7461, 7437, + 7437, 7461, 7462, 7438, + 7438, 7462, 7463, 7439, + 7439, 7463, 7464, 7440, + 7440, 7464, 7465, 7441, + 7441, 7465, 7466, 7442, + 7442, 7466, 7467, 7443, + 4322, 4323, 7468, 7444, + 7444, 7468, 7469, 7445, + 7445, 7469, 7470, 7446, + 7446, 7470, 7471, 7447, + 7447, 7471, 7472, 7448, + 7448, 7472, 7473, 7449, + 7449, 7473, 7474, 7450, + 7450, 7474, 7475, 7451, + 7451, 7475, 7476, 7452, + 7452, 7476, 7477, 7453, + 7453, 7477, 7478, 7454, + 7454, 7478, 7479, 7455, + 7455, 7479, 7480, 7456, + 7456, 7480, 7481, 7457, + 7457, 7481, 7482, 7458, + 7458, 7482, 7483, 7459, + 7459, 7483, 7484, 7460, + 7460, 7484, 7485, 7461, + 7461, 7485, 7486, 7462, + 7462, 7486, 7487, 7463, + 7463, 7487, 7488, 7464, + 7464, 7488, 7489, 7465, + 7465, 7489, 7490, 7466, + 7466, 7490, 7491, 7467, + 4323, 4193, 4325, 7468, + 7468, 4325, 4327, 7469, + 7469, 4327, 4329, 7470, + 7470, 4329, 4331, 7471, + 7471, 4331, 4333, 7472, + 7472, 4333, 4335, 7473, + 7473, 4335, 4337, 7474, + 7474, 4337, 4339, 7475, + 7475, 4339, 4341, 7476, + 7476, 4341, 4343, 7477, + 7477, 4343, 4345, 7478, + 7478, 4345, 4347, 7479, + 7479, 4347, 4349, 7480, + 7480, 4349, 4351, 7481, + 7481, 4351, 4353, 7482, + 7482, 4353, 4355, 7483, + 7483, 4355, 4357, 7484, + 7484, 4357, 4359, 7485, + 7485, 4359, 4361, 7486, + 7486, 4361, 4363, 7487, + 7487, 4363, 4365, 7488, + 7488, 4365, 4367, 7489, + 7489, 4367, 4369, 7490, + 7490, 4369, 4371, 7491 ; + + elem_ss1 = 7016, 6992, 6968, 6944, 6920, 6896, 6872, 6848, 6824, 6800, 6776, + 6752, 6728, 6704, 6680, 6656, 6632, 6608, 6584, 6560, 6536, 6512, 6488, + 6464, 6440, 6416, 6392, 6368, 6344, 6320, 6296, 6272, 6248, 6224, 6200, + 6176, 6152, 6128, 6104, 6080, 6056, 6032, 6008, 5984, 5960, 5936, 5912, + 5888, 5864, 5840, 5816, 5792, 5768, 5744, 5720, 5696, 5672, 5648, 5624, + 5600, 5576, 5552, 5528, 5504, 5480, 5456, 5432, 5408, 5384, 5360, 5336, + 5312, 5288, 5264, 5240, 5216, 5192, 5168, 5144, 5120, 5096, 5072, 5048, + 5024, 5000, 4976, 4952, 4928, 4904, 4880, 4856, 4832, 4808, 4784, 4760, + 4736, 4712, 4688, 4664, 4640, 4616, 4592, 4568, 4544, 4520, 4496, 4472, + 4448, 4424, 4400, 4376, 4352, 4328, 4304, 4280, 7424, 7400, 7376, 7352, + 7328, 7304, 7280, 7256, 7232, 7208, 7184, 7160, 7136, 7112, 7088, 7064, + 7040 ; + + side_ss1 = 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 ; + + dist_fact_ss1 = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1 ; + + qa_records = + "CUBIT", + "15.2", + "10/15/2019", + "15:20:36" ; + + elem_map = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, + 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, + 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, + 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, + 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, + 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, + 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, + 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, + 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, + 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, + 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, + 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, + 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, + 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, + 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, + 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, + 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, + 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, + 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, + 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, + 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, + 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, + 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, + 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, + 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, + 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, + 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, + 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, + 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, + 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, + 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, + 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, + 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, + 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, + 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, + 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, + 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, + 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, + 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, + 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, + 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, + 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, + 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, + 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, + 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, + 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, + 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, + 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, + 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, + 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, + 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, + 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, + 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, + 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, + 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, + 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, + 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, + 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, + 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, + 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, + 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, + 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, + 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, + 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, + 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, + 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, + 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, + 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, + 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, + 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, + 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, + 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, + 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, + 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, + 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, + 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, + 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, + 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, + 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, + 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, + 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, + 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, + 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, + 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, + 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, + 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, + 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, + 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, + 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, + 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, + 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, + 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, + 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, + 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, + 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, + 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, + 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, + 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, + 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, + 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, + 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, + 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, + 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, + 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, + 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, + 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, + 1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, + 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840, 1841, 1842, + 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, + 1855, 1856, 1857, 1858, 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, + 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, + 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, + 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902, + 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914, + 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, + 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, 1938, + 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, + 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, + 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, + 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, + 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, + 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, + 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, + 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046, + 2047, 2048, 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2057, 2058, + 2059, 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068, 2069, 2070, + 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080, 2081, 2082, + 2083, 2084, 2085, 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2094, + 2095, 2096, 2097, 2098, 2099, 2100, 2101, 2102, 2103, 2104, 2105, 2106, + 2107, 2108, 2109, 2110, 2111, 2112, 2113, 2114, 2115, 2116, 2117, 2118, + 2119, 2120, 2121, 2122, 2123, 2124, 2125, 2126, 2127, 2128, 2129, 2130, + 2131, 2132, 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2140, 2141, 2142, + 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 2152, 2153, 2154, + 2155, 2156, 2157, 2158, 2159, 2160, 2161, 2162, 2163, 2164, 2165, 2166, + 2167, 2168, 2169, 2170, 2171, 2172, 2173, 2174, 2175, 2176, 2177, 2178, + 2179, 2180, 2181, 2182, 2183, 2184, 2185, 2186, 2187, 2188, 2189, 2190, + 2191, 2192, 2193, 2194, 2195, 2196, 2197, 2198, 2199, 2200, 2201, 2202, + 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2213, 2214, + 2215, 2216, 2217, 2218, 2219, 2220, 2221, 2222, 2223, 2224, 2225, 2226, + 2227, 2228, 2229, 2230, 2231, 2232, 2233, 2234, 2235, 2236, 2237, 2238, + 2239, 2240, 2241, 2242, 2243, 2244, 2245, 2246, 2247, 2248, 2249, 2250, + 2251, 2252, 2253, 2254, 2255, 2256, 2257, 2258, 2259, 2260, 2261, 2262, + 2263, 2264, 2265, 2266, 2267, 2268, 2269, 2270, 2271, 2272, 2273, 2274, + 2275, 2276, 2277, 2278, 2279, 2280, 2281, 2282, 2283, 2284, 2285, 2286, + 2287, 2288, 2289, 2290, 2291, 2292, 2293, 2294, 2295, 2296, 2297, 2298, + 2299, 2300, 2301, 2302, 2303, 2304, 2305, 2306, 2307, 2308, 2309, 2310, + 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2318, 2319, 2320, 2321, 2322, + 2323, 2324, 2325, 2326, 2327, 2328, 2329, 2330, 2331, 2332, 2333, 2334, + 2335, 2336, 2337, 2338, 2339, 2340, 2341, 2342, 2343, 2344, 2345, 2346, + 2347, 2348, 2349, 2350, 2351, 2352, 2353, 2354, 2355, 2356, 2357, 2358, + 2359, 2360, 2361, 2362, 2363, 2364, 2365, 2366, 2367, 2368, 2369, 2370, + 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, + 2383, 2384, 2385, 2386, 2387, 2388, 2389, 2390, 2391, 2392, 2393, 2394, + 2395, 2396, 2397, 2398, 2399, 2400, 2401, 2402, 2403, 2404, 2405, 2406, + 2407, 2408, 2409, 2410, 2411, 2412, 2413, 2414, 2415, 2416, 2417, 2418, + 2419, 2420, 2421, 2422, 2423, 2424, 2425, 2426, 2427, 2428, 2429, 2430, + 2431, 2432, 2433, 2434, 2435, 2436, 2437, 2438, 2439, 2440, 2441, 2442, + 2443, 2444, 2445, 2446, 2447, 2448, 2449, 2450, 2451, 2452, 2453, 2454, + 2455, 2456, 2457, 2458, 2459, 2460, 2461, 2462, 2463, 2464, 2465, 2466, + 2467, 2468, 2469, 2470, 2471, 2472, 2473, 2474, 2475, 2476, 2477, 2478, + 2479, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 2489, 2490, + 2491, 2492, 2493, 2494, 2495, 2496, 2497, 2498, 2499, 2500, 2501, 2502, + 2503, 2504, 2505, 2506, 2507, 2508, 2509, 2510, 2511, 2512, 2513, 2514, + 2515, 2516, 2517, 2518, 2519, 2520, 2521, 2522, 2523, 2524, 2525, 2526, + 2527, 2528, 2529, 2530, 2531, 2532, 2533, 2534, 2535, 2536, 2537, 2538, + 2539, 2540, 2541, 2542, 2543, 2544, 2545, 2546, 2547, 2548, 2549, 2550, + 2551, 2552, 2553, 2554, 2555, 2556, 2557, 2558, 2559, 2560, 2561, 2562, + 2563, 2564, 2565, 2566, 2567, 2568, 2569, 2570, 2571, 2572, 2573, 2574, + 2575, 2576, 2577, 2578, 2579, 2580, 2581, 2582, 2583, 2584, 2585, 2586, + 2587, 2588, 2589, 2590, 2591, 2592, 2593, 2594, 2595, 2596, 2597, 2598, + 2599, 2600, 2601, 2602, 2603, 2604, 2605, 2606, 2607, 2608, 2609, 2610, + 2611, 2612, 2613, 2614, 2615, 2616, 2617, 2618, 2619, 2620, 2621, 2622, + 2623, 2624, 2625, 2626, 2627, 2628, 2629, 2630, 2631, 2632, 2633, 2634, + 2635, 2636, 2637, 2638, 2639, 2640, 2641, 2642, 2643, 2644, 2645, 2646, + 2647, 2648, 2649, 2650, 2651, 2652, 2653, 2654, 2655, 2656, 2657, 2658, + 2659, 2660, 2661, 2662, 2663, 2664, 2665, 2666, 2667, 2668, 2669, 2670, + 2671, 2672, 2673, 2674, 2675, 2676, 2677, 2678, 2679, 2680, 2681, 2682, + 2683, 2684, 2685, 2686, 2687, 2688, 2689, 2690, 2691, 2692, 2693, 2694, + 2695, 2696, 2697, 2698, 2699, 2700, 2701, 2702, 2703, 2704, 2705, 2706, + 2707, 2708, 2709, 2710, 2711, 2712, 2713, 2714, 2715, 2716, 2717, 2718, + 2719, 2720, 2721, 2722, 2723, 2724, 2725, 2726, 2727, 2728, 2729, 2730, + 2731, 2732, 2733, 2734, 2735, 2736, 2737, 2738, 2739, 2740, 2741, 2742, + 2743, 2744, 2745, 2746, 2747, 2748, 2749, 2750, 2751, 2752, 2753, 2754, + 2755, 2756, 2757, 2758, 2759, 2760, 2761, 2762, 2763, 2764, 2765, 2766, + 2767, 2768, 2769, 2770, 2771, 2772, 2773, 2774, 2775, 2776, 2777, 2778, + 2779, 2780, 2781, 2782, 2783, 2784, 2785, 2786, 2787, 2788, 2789, 2790, + 2791, 2792, 2793, 2794, 2795, 2796, 2797, 2798, 2799, 2800, 2801, 2802, + 2803, 2804, 2805, 2806, 2807, 2808, 2809, 2810, 2811, 2812, 2813, 2814, + 2815, 2816, 2817, 2818, 2819, 2820, 2821, 2822, 2823, 2824, 2825, 2826, + 2827, 2828, 2829, 2830, 2831, 2832, 2833, 2834, 2835, 2836, 2837, 2838, + 2839, 2840, 2841, 2842, 2843, 2844, 2845, 2846, 2847, 2848, 2849, 2850, + 2851, 2852, 2853, 2854, 2855, 2856, 2857, 2858, 2859, 2860, 2861, 2862, + 2863, 2864, 2865, 2866, 2867, 2868, 2869, 2870, 2871, 2872, 2873, 2874, + 2875, 2876, 2877, 2878, 2879, 2880, 2881, 2882, 2883, 2884, 2885, 2886, + 2887, 2888, 2889, 2890, 2891, 2892, 2893, 2894, 2895, 2896, 2897, 2898, + 2899, 2900, 2901, 2902, 2903, 2904, 2905, 2906, 2907, 2908, 2909, 2910, + 2911, 2912, 2913, 2914, 2915, 2916, 2917, 2918, 2919, 2920, 2921, 2922, + 2923, 2924, 2925, 2926, 2927, 2928, 2929, 2930, 2931, 2932, 2933, 2934, + 2935, 2936, 2937, 2938, 2939, 2940, 2941, 2942, 2943, 2944, 2945, 2946, + 2947, 2948, 2949, 2950, 2951, 2952, 2953, 2954, 2955, 2956, 2957, 2958, + 2959, 2960, 2961, 2962, 2963, 2964, 2965, 2966, 2967, 2968, 2969, 2970, + 2971, 2972, 2973, 2974, 2975, 2976, 2977, 2978, 2979, 2980, 2981, 2982, + 2983, 2984, 2985, 2986, 2987, 2988, 2989, 2990, 2991, 2992, 2993, 2994, + 2995, 2996, 2997, 2998, 2999, 3000, 3001, 3002, 3003, 3004, 3005, 3006, + 3007, 3008, 3009, 3010, 3011, 3012, 3013, 3014, 3015, 3016, 3017, 3018, + 3019, 3020, 3021, 3022, 3023, 3024, 3025, 3026, 3027, 3028, 3029, 3030, + 3031, 3032, 3033, 3034, 3035, 3036, 3037, 3038, 3039, 3040, 3041, 3042, + 3043, 3044, 3045, 3046, 3047, 3048, 3049, 3050, 3051, 3052, 3053, 3054, + 3055, 3056, 3057, 3058, 3059, 3060, 3061, 3062, 3063, 3064, 3065, 3066, + 3067, 3068, 3069, 3070, 3071, 3072, 3073, 3074, 3075, 3076, 3077, 3078, + 3079, 3080, 3081, 3082, 3083, 3084, 3085, 3086, 3087, 3088, 3089, 3090, + 3091, 3092, 3093, 3094, 3095, 3096, 3097, 3098, 3099, 3100, 3101, 3102, + 3103, 3104, 3105, 3106, 3107, 3108, 3109, 3110, 3111, 3112, 3113, 3114, + 3115, 3116, 3117, 3118, 3119, 3120, 3121, 3122, 3123, 3124, 3125, 3126, + 3127, 3128, 3129, 3130, 3131, 3132, 3133, 3134, 3135, 3136, 3137, 3138, + 3139, 3140, 3141, 3142, 3143, 3144, 3145, 3146, 3147, 3148, 3149, 3150, + 3151, 3152, 3153, 3154, 3155, 3156, 3157, 3158, 3159, 3160, 3161, 3162, + 3163, 3164, 3165, 3166, 3167, 3168, 3169, 3170, 3171, 3172, 3173, 3174, + 3175, 3176, 3177, 3178, 3179, 3180, 3181, 3182, 3183, 3184, 3185, 3186, + 3187, 3188, 3189, 3190, 3191, 3192, 3193, 3194, 3195, 3196, 3197, 3198, + 3199, 3200, 3201, 3202, 3203, 3204, 3205, 3206, 3207, 3208, 3209, 3210, + 3211, 3212, 3213, 3214, 3215, 3216, 3217, 3218, 3219, 3220, 3221, 3222, + 3223, 3224, 3225, 3226, 3227, 3228, 3229, 3230, 3231, 3232, 3233, 3234, + 3235, 3236, 3237, 3238, 3239, 3240, 3241, 3242, 3243, 3244, 3245, 3246, + 3247, 3248, 3249, 3250, 3251, 3252, 3253, 3254, 3255, 3256, 3257, 3258, + 3259, 3260, 3261, 3262, 3263, 3264, 3265, 3266, 3267, 3268, 3269, 3270, + 3271, 3272, 3273, 3274, 3275, 3276, 3277, 3278, 3279, 3280, 3281, 3282, + 3283, 3284, 3285, 3286, 3287, 3288, 3289, 3290, 3291, 3292, 3293, 3294, + 3295, 3296, 3297, 3298, 3299, 3300, 3301, 3302, 3303, 3304, 3305, 3306, + 3307, 3308, 3309, 3310, 3311, 3312, 3313, 3314, 3315, 3316, 3317, 3318, + 3319, 3320, 3321, 3322, 3323, 3324, 3325, 3326, 3327, 3328, 3329, 3330, + 3331, 3332, 3333, 3334, 3335, 3336, 3337, 3338, 3339, 3340, 3341, 3342, + 3343, 3344, 3345, 3346, 3347, 3348, 3349, 3350, 3351, 3352, 3353, 3354, + 3355, 3356, 3357, 3358, 3359, 3360, 3361, 3362, 3363, 3364, 3365, 3366, + 3367, 3368, 3369, 3370, 3371, 3372, 3373, 3374, 3375, 3376, 3377, 3378, + 3379, 3380, 3381, 3382, 3383, 3384, 3385, 3386, 3387, 3388, 3389, 3390, + 3391, 3392, 3393, 3394, 3395, 3396, 3397, 3398, 3399, 3400, 3401, 3402, + 3403, 3404, 3405, 3406, 3407, 3408, 3409, 3410, 3411, 3412, 3413, 3414, + 3415, 3416, 3417, 3418, 3419, 3420, 3421, 3422, 3423, 3424, 3425, 3426, + 3427, 3428, 3429, 3430, 3431, 3432, 3433, 3434, 3435, 3436, 3437, 3438, + 3439, 3440, 3441, 3442, 3443, 3444, 3445, 3446, 3447, 3448, 3449, 3450, + 3451, 3452, 3453, 3454, 3455, 3456, 3457, 3458, 3459, 3460, 3461, 3462, + 3463, 3464, 3465, 3466, 3467, 3468, 3469, 3470, 3471, 3472, 3473, 3474, + 3475, 3476, 3477, 3478, 3479, 3480, 3481, 3482, 3483, 3484, 3485, 3486, + 3487, 3488, 3489, 3490, 3491, 3492, 3493, 3494, 3495, 3496, 3497, 3498, + 3499, 3500, 3501, 3502, 3503, 3504, 3505, 3506, 3507, 3508, 3509, 3510, + 3511, 3512, 3513, 3514, 3515, 3516, 3517, 3518, 3519, 3520, 3521, 3522, + 3523, 3524, 3525, 3526, 3527, 3528, 3529, 3530, 3531, 3532, 3533, 3534, + 3535, 3536, 3537, 3538, 3539, 3540, 3541, 3542, 3543, 3544, 3545, 3546, + 3547, 3548, 3549, 3550, 3551, 3552, 3553, 3554, 3555, 3556, 3557, 3558, + 3559, 3560, 3561, 3562, 3563, 3564, 3565, 3566, 3567, 3568, 3569, 3570, + 3571, 3572, 3573, 3574, 3575, 3576, 3577, 3578, 3579, 3580, 3581, 3582, + 3583, 3584, 3585, 3586, 3587, 3588, 3589, 3590, 3591, 3592, 3593, 3594, + 3595, 3596, 3597, 3598, 3599, 3600, 3601, 3602, 3603, 3604, 3605, 3606, + 3607, 3608, 3609, 3610, 3611, 3612, 3613, 3614, 3615, 3616, 3617, 3618, + 3619, 3620, 3621, 3622, 3623, 3624, 3625, 3626, 3627, 3628, 3629, 3630, + 3631, 3632, 3633, 3634, 3635, 3636, 3637, 3638, 3639, 3640, 3641, 3642, + 3643, 3644, 3645, 3646, 3647, 3648, 3649, 3650, 3651, 3652, 3653, 3654, + 3655, 3656, 3657, 3658, 3659, 3660, 3661, 3662, 3663, 3664, 3665, 3666, + 3667, 3668, 3669, 3670, 3671, 3672, 3673, 3674, 3675, 3676, 3677, 3678, + 3679, 3680, 3681, 3682, 3683, 3684, 3685, 3686, 3687, 3688, 3689, 3690, + 3691, 3692, 3693, 3694, 3695, 3696, 3697, 3698, 3699, 3700, 3701, 3702, + 3703, 3704, 3705, 3706, 3707, 3708, 3709, 3710, 3711, 3712, 3713, 3714, + 3715, 3716, 3717, 3718, 3719, 3720, 3721, 3722, 3723, 3724, 3725, 3726, + 3727, 3728, 3729, 3730, 3731, 3732, 3733, 3734, 3735, 3736, 3737, 3738, + 3739, 3740, 3741, 3742, 3743, 3744, 3745, 3746, 3747, 3748, 3749, 3750, + 3751, 3752, 3753, 3754, 3755, 3756, 3757, 3758, 3759, 3760, 3761, 3762, + 3763, 3764, 3765, 3766, 3767, 3768, 3769, 3770, 3771, 3772, 3773, 3774, + 3775, 3776, 3777, 3778, 3779, 3780, 3781, 3782, 3783, 3784, 3785, 3786, + 3787, 3788, 3789, 3790, 3791, 3792, 3793, 3794, 3795, 3796, 3797, 3798, + 3799, 3800, 3801, 3802, 3803, 3804, 3805, 3806, 3807, 3808, 3809, 3810, + 3811, 3812, 3813, 3814, 3815, 3816, 3817, 3818, 3819, 3820, 3821, 3822, + 3823, 3824, 3825, 3826, 3827, 3828, 3829, 3830, 3831, 3832, 3833, 3834, + 3835, 3836, 3837, 3838, 3839, 3840, 3841, 3842, 3843, 3844, 3845, 3846, + 3847, 3848, 3849, 3850, 3851, 3852, 3853, 3854, 3855, 3856, 3857, 3858, + 3859, 3860, 3861, 3862, 3863, 3864, 3865, 3866, 3867, 3868, 3869, 3870, + 3871, 3872, 3873, 3874, 3875, 3876, 3877, 3878, 3879, 3880, 3881, 3882, + 3883, 3884, 3885, 3886, 3887, 3888, 3889, 3890, 3891, 3892, 3893, 3894, + 3895, 3896, 3897, 3898, 3899, 3900, 3901, 3902, 3903, 3904, 3905, 3906, + 3907, 3908, 3909, 3910, 3911, 3912, 3913, 3914, 3915, 3916, 3917, 3918, + 3919, 3920, 3921, 3922, 3923, 3924, 3925, 3926, 3927, 3928, 3929, 3930, + 3931, 3932, 3933, 3934, 3935, 3936, 3937, 3938, 3939, 3940, 3941, 3942, + 3943, 3944, 3945, 3946, 3947, 3948, 3949, 3950, 3951, 3952, 3953, 3954, + 3955, 3956, 3957, 3958, 3959, 3960, 3961, 3962, 3963, 3964, 3965, 3966, + 3967, 3968, 3969, 3970, 3971, 3972, 3973, 3974, 3975, 3976, 3977, 3978, + 3979, 3980, 3981, 3982, 3983, 3984, 3985, 3986, 3987, 3988, 3989, 3990, + 3991, 3992, 3993, 3994, 3995, 3996, 3997, 3998, 3999, 4000, 4001, 4002, + 4003, 4004, 4005, 4006, 4007, 4008, 4009, 4010, 4011, 4012, 4013, 4014, + 4015, 4016, 4017, 4018, 4019, 4020, 4021, 4022, 4023, 4024, 4025, 4026, + 4027, 4028, 4029, 4030, 4031, 4032, 4033, 4034, 4035, 4036, 4037, 4038, + 4039, 4040, 4041, 4042, 4043, 4044, 4045, 4046, 4047, 4048, 4049, 4050, + 4051, 4052, 4053, 4054, 4055, 4056, 4057, 4058, 4059, 4060, 4061, 4062, + 4063, 4064, 4065, 4066, 4067, 4068, 4069, 4070, 4071, 4072, 4073, 4074, + 4075, 4076, 4077, 4078, 4079, 4080, 4081, 4082, 4083, 4084, 4085, 4086, + 4087, 4088, 4089, 4090, 4091, 4092, 4093, 4094, 4095, 4096, 4097, 4098, + 4099, 4100, 4101, 4102, 4103, 4104, 4105, 4106, 4107, 4108, 4109, 4110, + 4111, 4112, 4113, 4114, 4115, 4116, 4117, 4118, 4119, 4120, 4121, 4122, + 4123, 4124, 4125, 4126, 4127, 4128, 4129, 4130, 4131, 4132, 4133, 4134, + 4135, 4136, 4137, 4138, 4139, 4140, 4141, 4142, 4143, 4144, 4145, 4146, + 4147, 4148, 4149, 4150, 4151, 4152, 4153, 4154, 4155, 4156, 4157, 4158, + 4159, 4160, 4161, 4162, 4163, 4164, 4165, 4166, 4167, 4168, 4169, 4170, + 4171, 4172, 4173, 4174, 4175, 4176, 4177, 4178, 4179, 4180, 4181, 4182, + 4183, 4184, 4185, 4186, 4187, 4188, 4189, 4190, 4191, 4192, 4193, 4194, + 4195, 4196, 4197, 4198, 4199, 4200, 4201, 4202, 4203, 4204, 4205, 4206, + 4207, 4208, 4209, 4210, 4211, 4212, 4213, 4214, 4215, 4216, 4217, 4218, + 4219, 4220, 4221, 4222, 4223, 4224, 4225, 4226, 4227, 4228, 4229, 4230, + 4231, 4232, 4233, 4234, 4235, 4236, 4237, 4238, 4239, 4240, 4241, 4242, + 4243, 4244, 4245, 4246, 4247, 4248, 4249, 4250, 4251, 4252, 4253, 4254, + 4255, 4256, 4257, 4258, 4259, 4260, 4261, 4262, 4263, 4264, 4265, 4266, + 4267, 4268, 4269, 4270, 4271, 4272, 4273, 4274, 4275, 4276, 4277, 4278, + 4279, 4280, 4281, 4282, 4283, 4284, 4285, 4286, 4287, 4288, 4289, 4290, + 4291, 4292, 4293, 4294, 4295, 4296, 4297, 4298, 4299, 4300, 4301, 4302, + 4303, 4304, 4305, 4306, 4307, 4308, 4309, 4310, 4311, 4312, 4313, 4314, + 4315, 4316, 4317, 4318, 4319, 4320, 4321, 4322, 4323, 4324, 4325, 4326, + 4327, 4328, 4329, 4330, 4331, 4332, 4333, 4334, 4335, 4336, 4337, 4338, + 4339, 4340, 4341, 4342, 4343, 4344, 4345, 4346, 4347, 4348, 4349, 4350, + 4351, 4352, 4353, 4354, 4355, 4356, 4357, 4358, 4359, 4360, 4361, 4362, + 4363, 4364, 4365, 4366, 4367, 4368, 4369, 4370, 4371, 4372, 4373, 4374, + 4375, 4376, 4377, 4378, 4379, 4380, 4381, 4382, 4383, 4384, 4385, 4386, + 4387, 4388, 4389, 4390, 4391, 4392, 4393, 4394, 4395, 4396, 4397, 4398, + 4399, 4400, 4401, 4402, 4403, 4404, 4405, 4406, 4407, 4408, 4409, 4410, + 4411, 4412, 4413, 4414, 4415, 4416, 4417, 4418, 4419, 4420, 4421, 4422, + 4423, 4424, 4425, 4426, 4427, 4428, 4429, 4430, 4431, 4432, 4433, 4434, + 4435, 4436, 4437, 4438, 4439, 4440, 4441, 4442, 4443, 4444, 4445, 4446, + 4447, 4448, 4449, 4450, 4451, 4452, 4453, 4454, 4455, 4456, 4457, 4458, + 4459, 4460, 4461, 4462, 4463, 4464, 4465, 4466, 4467, 4468, 4469, 4470, + 4471, 4472, 4473, 4474, 4475, 4476, 4477, 4478, 4479, 4480, 4481, 4482, + 4483, 4484, 4485, 4486, 4487, 4488, 4489, 4490, 4491, 4492, 4493, 4494, + 4495, 4496, 4497, 4498, 4499, 4500, 4501, 4502, 4503, 4504, 4505, 4506, + 4507, 4508, 4509, 4510, 4511, 4512, 4513, 4514, 4515, 4516, 4517, 4518, + 4519, 4520, 4521, 4522, 4523, 4524, 4525, 4526, 4527, 4528, 4529, 4530, + 4531, 4532, 4533, 4534, 4535, 4536, 4537, 4538, 4539, 4540, 4541, 4542, + 4543, 4544, 4545, 4546, 4547, 4548, 4549, 4550, 4551, 4552, 4553, 4554, + 4555, 4556, 4557, 4558, 4559, 4560, 4561, 4562, 4563, 4564, 4565, 4566, + 4567, 4568, 4569, 4570, 4571, 4572, 4573, 4574, 4575, 4576, 4577, 4578, + 4579, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, + 4591, 4592, 4593, 4594, 4595, 4596, 4597, 4598, 4599, 4600, 4601, 4602, + 4603, 4604, 4605, 4606, 4607, 4608, 4609, 4610, 4611, 4612, 4613, 4614, + 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622, 4623, 4624, 4625, 4626, + 4627, 4628, 4629, 4630, 4631, 4632, 4633, 4634, 4635, 4636, 4637, 4638, + 4639, 4640, 4641, 4642, 4643, 4644, 4645, 4646, 4647, 4648, 4649, 4650, + 4651, 4652, 4653, 4654, 4655, 4656, 4657, 4658, 4659, 4660, 4661, 4662, + 4663, 4664, 4665, 4666, 4667, 4668, 4669, 4670, 4671, 4672, 4673, 4674, + 4675, 4676, 4677, 4678, 4679, 4680, 4681, 4682, 4683, 4684, 4685, 4686, + 4687, 4688, 4689, 4690, 4691, 4692, 4693, 4694, 4695, 4696, 4697, 4698, + 4699, 4700, 4701, 4702, 4703, 4704, 4705, 4706, 4707, 4708, 4709, 4710, + 4711, 4712, 4713, 4714, 4715, 4716, 4717, 4718, 4719, 4720, 4721, 4722, + 4723, 4724, 4725, 4726, 4727, 4728, 4729, 4730, 4731, 4732, 4733, 4734, + 4735, 4736, 4737, 4738, 4739, 4740, 4741, 4742, 4743, 4744, 4745, 4746, + 4747, 4748, 4749, 4750, 4751, 4752, 4753, 4754, 4755, 4756, 4757, 4758, + 4759, 4760, 4761, 4762, 4763, 4764, 4765, 4766, 4767, 4768, 4769, 4770, + 4771, 4772, 4773, 4774, 4775, 4776, 4777, 4778, 4779, 4780, 4781, 4782, + 4783, 4784, 4785, 4786, 4787, 4788, 4789, 4790, 4791, 4792, 4793, 4794, + 4795, 4796, 4797, 4798, 4799, 4800, 4801, 4802, 4803, 4804, 4805, 4806, + 4807, 4808, 4809, 4810, 4811, 4812, 4813, 4814, 4815, 4816, 4817, 4818, + 4819, 4820, 4821, 4822, 4823, 4824, 4825, 4826, 4827, 4828, 4829, 4830, + 4831, 4832, 4833, 4834, 4835, 4836, 4837, 4838, 4839, 4840, 4841, 4842, + 4843, 4844, 4845, 4846, 4847, 4848, 4849, 4850, 4851, 4852, 4853, 4854, + 4855, 4856, 4857, 4858, 4859, 4860, 4861, 4862, 4863, 4864, 4865, 4866, + 4867, 4868, 4869, 4870, 4871, 4872, 4873, 4874, 4875, 4876, 4877, 4878, + 4879, 4880, 4881, 4882, 4883, 4884, 4885, 4886, 4887, 4888, 4889, 4890, + 4891, 4892, 4893, 4894, 4895, 4896, 4897, 4898, 4899, 4900, 4901, 4902, + 4903, 4904, 4905, 4906, 4907, 4908, 4909, 4910, 4911, 4912, 4913, 4914, + 4915, 4916, 4917, 4918, 4919, 4920, 4921, 4922, 4923, 4924, 4925, 4926, + 4927, 4928, 4929, 4930, 4931, 4932, 4933, 4934, 4935, 4936, 4937, 4938, + 4939, 4940, 4941, 4942, 4943, 4944, 4945, 4946, 4947, 4948, 4949, 4950, + 4951, 4952, 4953, 4954, 4955, 4956, 4957, 4958, 4959, 4960, 4961, 4962, + 4963, 4964, 4965, 4966, 4967, 4968, 4969, 4970, 4971, 4972, 4973, 4974, + 4975, 4976, 4977, 4978, 4979, 4980, 4981, 4982, 4983, 4984, 4985, 4986, + 4987, 4988, 4989, 4990, 4991, 4992, 4993, 4994, 4995, 4996, 4997, 4998, + 4999, 5000, 5001, 5002, 5003, 5004, 5005, 5006, 5007, 5008, 5009, 5010, + 5011, 5012, 5013, 5014, 5015, 5016, 5017, 5018, 5019, 5020, 5021, 5022, + 5023, 5024, 5025, 5026, 5027, 5028, 5029, 5030, 5031, 5032, 5033, 5034, + 5035, 5036, 5037, 5038, 5039, 5040, 5041, 5042, 5043, 5044, 5045, 5046, + 5047, 5048, 5049, 5050, 5051, 5052, 5053, 5054, 5055, 5056, 5057, 5058, + 5059, 5060, 5061, 5062, 5063, 5064, 5065, 5066, 5067, 5068, 5069, 5070, + 5071, 5072, 5073, 5074, 5075, 5076, 5077, 5078, 5079, 5080, 5081, 5082, + 5083, 5084, 5085, 5086, 5087, 5088, 5089, 5090, 5091, 5092, 5093, 5094, + 5095, 5096, 5097, 5098, 5099, 5100, 5101, 5102, 5103, 5104, 5105, 5106, + 5107, 5108, 5109, 5110, 5111, 5112, 5113, 5114, 5115, 5116, 5117, 5118, + 5119, 5120, 5121, 5122, 5123, 5124, 5125, 5126, 5127, 5128, 5129, 5130, + 5131, 5132, 5133, 5134, 5135, 5136, 5137, 5138, 5139, 5140, 5141, 5142, + 5143, 5144, 5145, 5146, 5147, 5148, 5149, 5150, 5151, 5152, 5153, 5154, + 5155, 5156, 5157, 5158, 5159, 5160, 5161, 5162, 5163, 5164, 5165, 5166, + 5167, 5168, 5169, 5170, 5171, 5172, 5173, 5174, 5175, 5176, 5177, 5178, + 5179, 5180, 5181, 5182, 5183, 5184, 5185, 5186, 5187, 5188, 5189, 5190, + 5191, 5192, 5193, 5194, 5195, 5196, 5197, 5198, 5199, 5200, 5201, 5202, + 5203, 5204, 5205, 5206, 5207, 5208, 5209, 5210, 5211, 5212, 5213, 5214, + 5215, 5216, 5217, 5218, 5219, 5220, 5221, 5222, 5223, 5224, 5225, 5226, + 5227, 5228, 5229, 5230, 5231, 5232, 5233, 5234, 5235, 5236, 5237, 5238, + 5239, 5240, 5241, 5242, 5243, 5244, 5245, 5246, 5247, 5248, 5249, 5250, + 5251, 5252, 5253, 5254, 5255, 5256, 5257, 5258, 5259, 5260, 5261, 5262, + 5263, 5264, 5265, 5266, 5267, 5268, 5269, 5270, 5271, 5272, 5273, 5274, + 5275, 5276, 5277, 5278, 5279, 5280, 5281, 5282, 5283, 5284, 5285, 5286, + 5287, 5288, 5289, 5290, 5291, 5292, 5293, 5294, 5295, 5296, 5297, 5298, + 5299, 5300, 5301, 5302, 5303, 5304, 5305, 5306, 5307, 5308, 5309, 5310, + 5311, 5312, 5313, 5314, 5315, 5316, 5317, 5318, 5319, 5320, 5321, 5322, + 5323, 5324, 5325, 5326, 5327, 5328, 5329, 5330, 5331, 5332, 5333, 5334, + 5335, 5336, 5337, 5338, 5339, 5340, 5341, 5342, 5343, 5344, 5345, 5346, + 5347, 5348, 5349, 5350, 5351, 5352, 5353, 5354, 5355, 5356, 5357, 5358, + 5359, 5360, 5361, 5362, 5363, 5364, 5365, 5366, 5367, 5368, 5369, 5370, + 5371, 5372, 5373, 5374, 5375, 5376, 5377, 5378, 5379, 5380, 5381, 5382, + 5383, 5384, 5385, 5386, 5387, 5388, 5389, 5390, 5391, 5392, 5393, 5394, + 5395, 5396, 5397, 5398, 5399, 5400, 5401, 5402, 5403, 5404, 5405, 5406, + 5407, 5408, 5409, 5410, 5411, 5412, 5413, 5414, 5415, 5416, 5417, 5418, + 5419, 5420, 5421, 5422, 5423, 5424, 5425, 5426, 5427, 5428, 5429, 5430, + 5431, 5432, 5433, 5434, 5435, 5436, 5437, 5438, 5439, 5440, 5441, 5442, + 5443, 5444, 5445, 5446, 5447, 5448, 5449, 5450, 5451, 5452, 5453, 5454, + 5455, 5456, 5457, 5458, 5459, 5460, 5461, 5462, 5463, 5464, 5465, 5466, + 5467, 5468, 5469, 5470, 5471, 5472, 5473, 5474, 5475, 5476, 5477, 5478, + 5479, 5480, 5481, 5482, 5483, 5484, 5485, 5486, 5487, 5488, 5489, 5490, + 5491, 5492, 5493, 5494, 5495, 5496, 5497, 5498, 5499, 5500, 5501, 5502, + 5503, 5504, 5505, 5506, 5507, 5508, 5509, 5510, 5511, 5512, 5513, 5514, + 5515, 5516, 5517, 5518, 5519, 5520, 5521, 5522, 5523, 5524, 5525, 5526, + 5527, 5528, 5529, 5530, 5531, 5532, 5533, 5534, 5535, 5536, 5537, 5538, + 5539, 5540, 5541, 5542, 5543, 5544, 5545, 5546, 5547, 5548, 5549, 5550, + 5551, 5552, 5553, 5554, 5555, 5556, 5557, 5558, 5559, 5560, 5561, 5562, + 5563, 5564, 5565, 5566, 5567, 5568, 5569, 5570, 5571, 5572, 5573, 5574, + 5575, 5576, 5577, 5578, 5579, 5580, 5581, 5582, 5583, 5584, 5585, 5586, + 5587, 5588, 5589, 5590, 5591, 5592, 5593, 5594, 5595, 5596, 5597, 5598, + 5599, 5600, 5601, 5602, 5603, 5604, 5605, 5606, 5607, 5608, 5609, 5610, + 5611, 5612, 5613, 5614, 5615, 5616, 5617, 5618, 5619, 5620, 5621, 5622, + 5623, 5624, 5625, 5626, 5627, 5628, 5629, 5630, 5631, 5632, 5633, 5634, + 5635, 5636, 5637, 5638, 5639, 5640, 5641, 5642, 5643, 5644, 5645, 5646, + 5647, 5648, 5649, 5650, 5651, 5652, 5653, 5654, 5655, 5656, 5657, 5658, + 5659, 5660, 5661, 5662, 5663, 5664, 5665, 5666, 5667, 5668, 5669, 5670, + 5671, 5672, 5673, 5674, 5675, 5676, 5677, 5678, 5679, 5680, 5681, 5682, + 5683, 5684, 5685, 5686, 5687, 5688, 5689, 5690, 5691, 5692, 5693, 5694, + 5695, 5696, 5697, 5698, 5699, 5700, 5701, 5702, 5703, 5704, 5705, 5706, + 5707, 5708, 5709, 5710, 5711, 5712, 5713, 5714, 5715, 5716, 5717, 5718, + 5719, 5720, 5721, 5722, 5723, 5724, 5725, 5726, 5727, 5728, 5729, 5730, + 5731, 5732, 5733, 5734, 5735, 5736, 5737, 5738, 5739, 5740, 5741, 5742, + 5743, 5744, 5745, 5746, 5747, 5748, 5749, 5750, 5751, 5752, 5753, 5754, + 5755, 5756, 5757, 5758, 5759, 5760, 5761, 5762, 5763, 5764, 5765, 5766, + 5767, 5768, 5769, 5770, 5771, 5772, 5773, 5774, 5775, 5776, 5777, 5778, + 5779, 5780, 5781, 5782, 5783, 5784, 5785, 5786, 5787, 5788, 5789, 5790, + 5791, 5792, 5793, 5794, 5795, 5796, 5797, 5798, 5799, 5800, 5801, 5802, + 5803, 5804, 5805, 5806, 5807, 5808, 5809, 5810, 5811, 5812, 5813, 5814, + 5815, 5816, 5817, 5818, 5819, 5820, 5821, 5822, 5823, 5824, 5825, 5826, + 5827, 5828, 5829, 5830, 5831, 5832, 5833, 5834, 5835, 5836, 5837, 5838, + 5839, 5840, 5841, 5842, 5843, 5844, 5845, 5846, 5847, 5848, 5849, 5850, + 5851, 5852, 5853, 5854, 5855, 5856, 5857, 5858, 5859, 5860, 5861, 5862, + 5863, 5864, 5865, 5866, 5867, 5868, 5869, 5870, 5871, 5872, 5873, 5874, + 5875, 5876, 5877, 5878, 5879, 5880, 5881, 5882, 5883, 5884, 5885, 5886, + 5887, 5888, 5889, 5890, 5891, 5892, 5893, 5894, 5895, 5896, 5897, 5898, + 5899, 5900, 5901, 5902, 5903, 5904, 5905, 5906, 5907, 5908, 5909, 5910, + 5911, 5912, 5913, 5914, 5915, 5916, 5917, 5918, 5919, 5920, 5921, 5922, + 5923, 5924, 5925, 5926, 5927, 5928, 5929, 5930, 5931, 5932, 5933, 5934, + 5935, 5936, 5937, 5938, 5939, 5940, 5941, 5942, 5943, 5944, 5945, 5946, + 5947, 5948, 5949, 5950, 5951, 5952, 5953, 5954, 5955, 5956, 5957, 5958, + 5959, 5960, 5961, 5962, 5963, 5964, 5965, 5966, 5967, 5968, 5969, 5970, + 5971, 5972, 5973, 5974, 5975, 5976, 5977, 5978, 5979, 5980, 5981, 5982, + 5983, 5984, 5985, 5986, 5987, 5988, 5989, 5990, 5991, 5992, 5993, 5994, + 5995, 5996, 5997, 5998, 5999, 6000, 6001, 6002, 6003, 6004, 6005, 6006, + 6007, 6008, 6009, 6010, 6011, 6012, 6013, 6014, 6015, 6016, 6017, 6018, + 6019, 6020, 6021, 6022, 6023, 6024, 6025, 6026, 6027, 6028, 6029, 6030, + 6031, 6032, 6033, 6034, 6035, 6036, 6037, 6038, 6039, 6040, 6041, 6042, + 6043, 6044, 6045, 6046, 6047, 6048, 6049, 6050, 6051, 6052, 6053, 6054, + 6055, 6056, 6057, 6058, 6059, 6060, 6061, 6062, 6063, 6064, 6065, 6066, + 6067, 6068, 6069, 6070, 6071, 6072, 6073, 6074, 6075, 6076, 6077, 6078, + 6079, 6080, 6081, 6082, 6083, 6084, 6085, 6086, 6087, 6088, 6089, 6090, + 6091, 6092, 6093, 6094, 6095, 6096, 6097, 6098, 6099, 6100, 6101, 6102, + 6103, 6104, 6105, 6106, 6107, 6108, 6109, 6110, 6111, 6112, 6113, 6114, + 6115, 6116, 6117, 6118, 6119, 6120, 6121, 6122, 6123, 6124, 6125, 6126, + 6127, 6128, 6129, 6130, 6131, 6132, 6133, 6134, 6135, 6136, 6137, 6138, + 6139, 6140, 6141, 6142, 6143, 6144, 6145, 6146, 6147, 6148, 6149, 6150, + 6151, 6152, 6153, 6154, 6155, 6156, 6157, 6158, 6159, 6160, 6161, 6162, + 6163, 6164, 6165, 6166, 6167, 6168, 6169, 6170, 6171, 6172, 6173, 6174, + 6175, 6176, 6177, 6178, 6179, 6180, 6181, 6182, 6183, 6184, 6185, 6186, + 6187, 6188, 6189, 6190, 6191, 6192, 6193, 6194, 6195, 6196, 6197, 6198, + 6199, 6200, 6201, 6202, 6203, 6204, 6205, 6206, 6207, 6208, 6209, 6210, + 6211, 6212, 6213, 6214, 6215, 6216, 6217, 6218, 6219, 6220, 6221, 6222, + 6223, 6224, 6225, 6226, 6227, 6228, 6229, 6230, 6231, 6232, 6233, 6234, + 6235, 6236, 6237, 6238, 6239, 6240, 6241, 6242, 6243, 6244, 6245, 6246, + 6247, 6248, 6249, 6250, 6251, 6252, 6253, 6254, 6255, 6256, 6257, 6258, + 6259, 6260, 6261, 6262, 6263, 6264, 6265, 6266, 6267, 6268, 6269, 6270, + 6271, 6272, 6273, 6274, 6275, 6276, 6277, 6278, 6279, 6280, 6281, 6282, + 6283, 6284, 6285, 6286, 6287, 6288, 6289, 6290, 6291, 6292, 6293, 6294, + 6295, 6296, 6297, 6298, 6299, 6300, 6301, 6302, 6303, 6304, 6305, 6306, + 6307, 6308, 6309, 6310, 6311, 6312, 6313, 6314, 6315, 6316, 6317, 6318, + 6319, 6320, 6321, 6322, 6323, 6324, 6325, 6326, 6327, 6328, 6329, 6330, + 6331, 6332, 6333, 6334, 6335, 6336, 6337, 6338, 6339, 6340, 6341, 6342, + 6343, 6344, 6345, 6346, 6347, 6348, 6349, 6350, 6351, 6352, 6353, 6354, + 6355, 6356, 6357, 6358, 6359, 6360, 6361, 6362, 6363, 6364, 6365, 6366, + 6367, 6368, 6369, 6370, 6371, 6372, 6373, 6374, 6375, 6376, 6377, 6378, + 6379, 6380, 6381, 6382, 6383, 6384, 6385, 6386, 6387, 6388, 6389, 6390, + 6391, 6392, 6393, 6394, 6395, 6396, 6397, 6398, 6399, 6400, 6401, 6402, + 6403, 6404, 6405, 6406, 6407, 6408, 6409, 6410, 6411, 6412, 6413, 6414, + 6415, 6416, 6417, 6418, 6419, 6420, 6421, 6422, 6423, 6424, 6425, 6426, + 6427, 6428, 6429, 6430, 6431, 6432, 6433, 6434, 6435, 6436, 6437, 6438, + 6439, 6440, 6441, 6442, 6443, 6444, 6445, 6446, 6447, 6448, 6449, 6450, + 6451, 6452, 6453, 6454, 6455, 6456, 6457, 6458, 6459, 6460, 6461, 6462, + 6463, 6464, 6465, 6466, 6467, 6468, 6469, 6470, 6471, 6472, 6473, 6474, + 6475, 6476, 6477, 6478, 6479, 6480, 6481, 6482, 6483, 6484, 6485, 6486, + 6487, 6488, 6489, 6490, 6491, 6492, 6493, 6494, 6495, 6496, 6497, 6498, + 6499, 6500, 6501, 6502, 6503, 6504, 6505, 6506, 6507, 6508, 6509, 6510, + 6511, 6512, 6513, 6514, 6515, 6516, 6517, 6518, 6519, 6520, 6521, 6522, + 6523, 6524, 6525, 6526, 6527, 6528, 6529, 6530, 6531, 6532, 6533, 6534, + 6535, 6536, 6537, 6538, 6539, 6540, 6541, 6542, 6543, 6544, 6545, 6546, + 6547, 6548, 6549, 6550, 6551, 6552, 6553, 6554, 6555, 6556, 6557, 6558, + 6559, 6560, 6561, 6562, 6563, 6564, 6565, 6566, 6567, 6568, 6569, 6570, + 6571, 6572, 6573, 6574, 6575, 6576, 6577, 6578, 6579, 6580, 6581, 6582, + 6583, 6584, 6585, 6586, 6587, 6588, 6589, 6590, 6591, 6592, 6593, 6594, + 6595, 6596, 6597, 6598, 6599, 6600, 6601, 6602, 6603, 6604, 6605, 6606, + 6607, 6608, 6609, 6610, 6611, 6612, 6613, 6614, 6615, 6616, 6617, 6618, + 6619, 6620, 6621, 6622, 6623, 6624, 6625, 6626, 6627, 6628, 6629, 6630, + 6631, 6632, 6633, 6634, 6635, 6636, 6637, 6638, 6639, 6640, 6641, 6642, + 6643, 6644, 6645, 6646, 6647, 6648, 6649, 6650, 6651, 6652, 6653, 6654, + 6655, 6656, 6657, 6658, 6659, 6660, 6661, 6662, 6663, 6664, 6665, 6666, + 6667, 6668, 6669, 6670, 6671, 6672, 6673, 6674, 6675, 6676, 6677, 6678, + 6679, 6680, 6681, 6682, 6683, 6684, 6685, 6686, 6687, 6688, 6689, 6690, + 6691, 6692, 6693, 6694, 6695, 6696, 6697, 6698, 6699, 6700, 6701, 6702, + 6703, 6704, 6705, 6706, 6707, 6708, 6709, 6710, 6711, 6712, 6713, 6714, + 6715, 6716, 6717, 6718, 6719, 6720, 6721, 6722, 6723, 6724, 6725, 6726, + 6727, 6728, 6729, 6730, 6731, 6732, 6733, 6734, 6735, 6736, 6737, 6738, + 6739, 6740, 6741, 6742, 6743, 6744, 6745, 6746, 6747, 6748, 6749, 6750, + 6751, 6752, 6753, 6754, 6755, 6756, 6757, 6758, 6759, 6760, 6761, 6762, + 6763, 6764, 6765, 6766, 6767, 6768, 6769, 6770, 6771, 6772, 6773, 6774, + 6775, 6776, 6777, 6778, 6779, 6780, 6781, 6782, 6783, 6784, 6785, 6786, + 6787, 6788, 6789, 6790, 6791, 6792, 6793, 6794, 6795, 6796, 6797, 6798, + 6799, 6800, 6801, 6802, 6803, 6804, 6805, 6806, 6807, 6808, 6809, 6810, + 6811, 6812, 6813, 6814, 6815, 6816, 6817, 6818, 6819, 6820, 6821, 6822, + 6823, 6824, 6825, 6826, 6827, 6828, 6829, 6830, 6831, 6832, 6833, 6834, + 6835, 6836, 6837, 6838, 6839, 6840, 6841, 6842, 6843, 6844, 6845, 6846, + 6847, 6848, 6849, 6850, 6851, 6852, 6853, 6854, 6855, 6856, 6857, 6858, + 6859, 6860, 6861, 6862, 6863, 6864, 6865, 6866, 6867, 6868, 6869, 6870, + 6871, 6872, 6873, 6874, 6875, 6876, 6877, 6878, 6879, 6880, 6881, 6882, + 6883, 6884, 6885, 6886, 6887, 6888, 6889, 6890, 6891, 6892, 6893, 6894, + 6895, 6896, 6897, 6898, 6899, 6900, 6901, 6902, 6903, 6904, 6905, 6906, + 6907, 6908, 6909, 6910, 6911, 6912, 6913, 6914, 6915, 6916, 6917, 6918, + 6919, 6920, 6921, 6922, 6923, 6924, 6925, 6926, 6927, 6928, 6929, 6930, + 6931, 6932, 6933, 6934, 6935, 6936, 6937, 6938, 6939, 6940, 6941, 6942, + 6943, 6944, 6945, 6946, 6947, 6948, 6949, 6950, 6951, 6952, 6953, 6954, + 6955, 6956, 6957, 6958, 6959, 6960, 6961, 6962, 6963, 6964, 6965, 6966, + 6967, 6968, 6969, 6970, 6971, 6972, 6973, 6974, 6975, 6976, 6977, 6978, + 6979, 6980, 6981, 6982, 6983, 6984, 6985, 6986, 6987, 6988, 6989, 6990, + 6991, 6992, 6993, 6994, 6995, 6996, 6997, 6998, 6999, 7000, 7001, 7002, + 7003, 7004, 7005, 7006, 7007, 7008, 7009, 7010, 7011, 7012, 7013, 7014, + 7015, 7016, 7017, 7018, 7019, 7020, 7021, 7022, 7023, 7024, 7025, 7026, + 7027, 7028, 7029, 7030, 7031, 7032, 7033, 7034, 7035, 7036, 7037, 7038, + 7039, 7040, 7041, 7042, 7043, 7044, 7045, 7046, 7047, 7048, 7049, 7050, + 7051, 7052, 7053, 7054, 7055, 7056, 7057, 7058, 7059, 7060, 7061, 7062, + 7063, 7064, 7065, 7066, 7067, 7068, 7069, 7070, 7071, 7072, 7073, 7074, + 7075, 7076, 7077, 7078, 7079, 7080, 7081, 7082, 7083, 7084, 7085, 7086, + 7087, 7088, 7089, 7090, 7091, 7092, 7093, 7094, 7095, 7096, 7097, 7098, + 7099, 7100, 7101, 7102, 7103, 7104, 7105, 7106, 7107, 7108, 7109, 7110, + 7111, 7112, 7113, 7114, 7115, 7116, 7117, 7118, 7119, 7120, 7121, 7122, + 7123, 7124, 7125, 7126, 7127, 7128, 7129, 7130, 7131, 7132, 7133, 7134, + 7135, 7136, 7137, 7138, 7139, 7140, 7141, 7142, 7143, 7144, 7145, 7146, + 7147, 7148, 7149, 7150, 7151, 7152, 7153, 7154, 7155, 7156, 7157, 7158, + 7159, 7160, 7161, 7162, 7163, 7164, 7165, 7166, 7167, 7168, 7169, 7170, + 7171, 7172, 7173, 7174, 7175, 7176, 7177, 7178, 7179, 7180, 7181, 7182, + 7183, 7184, 7185, 7186, 7187, 7188, 7189, 7190, 7191, 7192, 7193, 7194, + 7195, 7196, 7197, 7198, 7199, 7200, 7201, 7202, 7203, 7204, 7205, 7206, + 7207, 7208, 7209, 7210, 7211, 7212, 7213, 7214, 7215, 7216, 7217, 7218, + 7219, 7220, 7221, 7222, 7223, 7224, 7225, 7226, 7227, 7228, 7229, 7230, + 7231, 7232, 7233, 7234, 7235, 7236, 7237, 7238, 7239, 7240, 7241, 7242, + 7243, 7244, 7245, 7246, 7247, 7248, 7249, 7250, 7251, 7252, 7253, 7254, + 7255, 7256, 7257, 7258, 7259, 7260, 7261, 7262, 7263, 7264, 7265, 7266, + 7267, 7268, 7269, 7270, 7271, 7272, 7273, 7274, 7275, 7276, 7277, 7278, + 7279, 7280, 7281, 7282, 7283, 7284, 7285, 7286, 7287, 7288, 7289, 7290, + 7291, 7292, 7293, 7294, 7295, 7296, 7297, 7298, 7299, 7300, 7301, 7302, + 7303, 7304, 7305, 7306, 7307, 7308, 7309, 7310, 7311, 7312, 7313, 7314, + 7315, 7316, 7317, 7318, 7319, 7320, 7321, 7322, 7323, 7324, 7325, 7326, + 7327, 7328, 7329, 7330, 7331, 7332, 7333, 7334, 7335, 7336, 7337, 7338, + 7339, 7340, 7341, 7342, 7343, 7344, 7345, 7346, 7347, 7348, 7349, 7350, + 7351, 7352, 7353, 7354, 7355, 7356, 7357, 7358, 7359, 7360, 7361, 7362, + 7363, 7364, 7365, 7366, 7367, 7368, 7369, 7370, 7371, 7372, 7373, 7374, + 7375, 7376, 7377, 7378, 7379, 7380, 7381, 7382, 7383, 7384, 7385, 7386, + 7387, 7388, 7389, 7390, 7391, 7392, 7393, 7394, 7395, 7396, 7397, 7398, + 7399, 7400, 7401, 7402, 7403, 7404, 7405, 7406, 7407, 7408, 7409, 7410, + 7411, 7412, 7413, 7414, 7415, 7416, 7417, 7418, 7419, 7420, 7421, 7422, + 7423, 7424 ; + + elem_num_map = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, + 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, + 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, + 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, + 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, + 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, + 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, + 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, + 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, + 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, + 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, + 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, + 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, + 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, + 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, + 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, + 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, + 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, + 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, + 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, + 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, + 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, + 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, + 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, + 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, + 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, + 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, + 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, + 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, + 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, + 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, + 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, + 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, + 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, + 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, + 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, + 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, + 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, + 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, + 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, + 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, + 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, + 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, + 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, + 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, + 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, + 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, + 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, + 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, + 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, + 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, + 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, + 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, + 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, + 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, + 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, + 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, + 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, + 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, + 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, + 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, + 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, + 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, + 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, + 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, + 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, + 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, + 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, + 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, + 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, + 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, + 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, + 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, + 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, + 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, + 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, + 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, + 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, + 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, + 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, + 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, + 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, + 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, + 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, + 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, + 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, + 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, + 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, + 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, + 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, + 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, + 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, + 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, + 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, + 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, + 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, + 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, + 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, + 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, + 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, + 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, + 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1769, + 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, + 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, + 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, + 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, + 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, + 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840, 1841, + 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, + 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861, 1862, 1863, 1864, 1865, + 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, + 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, + 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, + 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, + 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, + 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, + 1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, + 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, + 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, + 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, + 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, + 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, + 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, + 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, + 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, + 2046, 2047, 2048, 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2057, + 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068, 2069, + 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080, 2081, + 2082, 2083, 2084, 2085, 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093, + 2094, 2095, 2096, 2097, 2098, 2099, 2100, 2101, 2102, 2103, 2104, 2105, + 2106, 2107, 2108, 2109, 2110, 2111, 2112, 2113, 2114, 2115, 2116, 2117, + 2118, 2119, 2120, 2121, 2122, 2123, 2124, 2125, 2126, 2127, 2128, 2129, + 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2140, 2141, + 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 2152, 2153, + 2154, 2155, 2156, 2157, 2158, 2159, 2160, 2161, 2162, 2163, 2164, 2165, + 2166, 2167, 2168, 2169, 2170, 2171, 2172, 2173, 2174, 2175, 2176, 2177, + 2178, 2179, 2180, 2181, 2182, 2183, 2184, 2185, 2186, 2187, 2188, 2189, + 2190, 2191, 2192, 2193, 2194, 2195, 2196, 2197, 2198, 2199, 2200, 2201, + 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2213, + 2214, 2215, 2216, 2217, 2218, 2219, 2220, 2221, 2222, 2223, 2224, 2225, + 2226, 2227, 2228, 2229, 2230, 2231, 2232, 2233, 2234, 2235, 2236, 2237, + 2238, 2239, 2240, 2241, 2242, 2243, 2244, 2245, 2246, 2247, 2248, 2249, + 2250, 2251, 2252, 2253, 2254, 2255, 2256, 2257, 2258, 2259, 2260, 2261, + 2262, 2263, 2264, 2265, 2266, 2267, 2268, 2269, 2270, 2271, 2272, 2273, + 2274, 2275, 2276, 2277, 2278, 2279, 2280, 2281, 2282, 2283, 2284, 2285, + 2286, 2287, 2288, 2289, 2290, 2291, 2292, 2293, 2294, 2295, 2296, 2297, + 2298, 2299, 2300, 2301, 2302, 2303, 2304, 2305, 2306, 2307, 2308, 2309, + 2310, 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2318, 2319, 2320, 2321, + 2322, 2323, 2324, 2325, 2326, 2327, 2328, 2329, 2330, 2331, 2332, 2333, + 2334, 2335, 2336, 2337, 2338, 2339, 2340, 2341, 2342, 2343, 2344, 2345, + 2346, 2347, 2348, 2349, 2350, 2351, 2352, 2353, 2354, 2355, 2356, 2357, + 2358, 2359, 2360, 2361, 2362, 2363, 2364, 2365, 2366, 2367, 2368, 2369, + 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, + 2382, 2383, 2384, 2385, 2386, 2387, 2388, 2389, 2390, 2391, 2392, 2393, + 2394, 2395, 2396, 2397, 2398, 2399, 2400, 2401, 2402, 2403, 2404, 2405, + 2406, 2407, 2408, 2409, 2410, 2411, 2412, 2413, 2414, 2415, 2416, 2417, + 2418, 2419, 2420, 2421, 2422, 2423, 2424, 2425, 2426, 2427, 2428, 2429, + 2430, 2431, 2432, 2433, 2434, 2435, 2436, 2437, 2438, 2439, 2440, 2441, + 2442, 2443, 2444, 2445, 2446, 2447, 2448, 2449, 2450, 2451, 2452, 2453, + 2454, 2455, 2456, 2457, 2458, 2459, 2460, 2461, 2462, 2463, 2464, 2465, + 2466, 2467, 2468, 2469, 2470, 2471, 2472, 2473, 2474, 2475, 2476, 2477, + 2478, 2479, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 2489, + 2490, 2491, 2492, 2493, 2494, 2495, 2496, 2497, 2498, 2499, 2500, 2501, + 2502, 2503, 2504, 2505, 2506, 2507, 2508, 2509, 2510, 2511, 2512, 2513, + 2514, 2515, 2516, 2517, 2518, 2519, 2520, 2521, 2522, 2523, 2524, 2525, + 2526, 2527, 2528, 2529, 2530, 2531, 2532, 2533, 2534, 2535, 2536, 2537, + 2538, 2539, 2540, 2541, 2542, 2543, 2544, 2545, 2546, 2547, 2548, 2549, + 2550, 2551, 2552, 2553, 2554, 2555, 2556, 2557, 2558, 2559, 2560, 2561, + 2562, 2563, 2564, 2565, 2566, 2567, 2568, 2569, 2570, 2571, 2572, 2573, + 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 2582, 2583, 2584, 2585, + 2586, 2587, 2588, 2589, 2590, 2591, 2592, 2593, 2594, 2595, 2596, 2597, + 2598, 2599, 2600, 2601, 2602, 2603, 2604, 2605, 2606, 2607, 2608, 2609, + 2610, 2611, 2612, 2613, 2614, 2615, 2616, 2617, 2618, 2619, 2620, 2621, + 2622, 2623, 2624, 2625, 2626, 2627, 2628, 2629, 2630, 2631, 2632, 2633, + 2634, 2635, 2636, 2637, 2638, 2639, 2640, 2641, 2642, 2643, 2644, 2645, + 2646, 2647, 2648, 2649, 2650, 2651, 2652, 2653, 2654, 2655, 2656, 2657, + 2658, 2659, 2660, 2661, 2662, 2663, 2664, 2665, 2666, 2667, 2668, 2669, + 2670, 2671, 2672, 2673, 2674, 2675, 2676, 2677, 2678, 2679, 2680, 2681, + 2682, 2683, 2684, 2685, 2686, 2687, 2688, 2689, 2690, 2691, 2692, 2693, + 2694, 2695, 2696, 2697, 2698, 2699, 2700, 2701, 2702, 2703, 2704, 2705, + 2706, 2707, 2708, 2709, 2710, 2711, 2712, 2713, 2714, 2715, 2716, 2717, + 2718, 2719, 2720, 2721, 2722, 2723, 2724, 2725, 2726, 2727, 2728, 2729, + 2730, 2731, 2732, 2733, 2734, 2735, 2736, 2737, 2738, 2739, 2740, 2741, + 2742, 2743, 2744, 2745, 2746, 2747, 2748, 2749, 2750, 2751, 2752, 2753, + 2754, 2755, 2756, 2757, 2758, 2759, 2760, 2761, 2762, 2763, 2764, 2765, + 2766, 2767, 2768, 2769, 2770, 2771, 2772, 2773, 2774, 2775, 2776, 2777, + 2778, 2779, 2780, 2781, 2782, 2783, 2784, 2785, 2786, 2787, 2788, 2789, + 2790, 2791, 2792, 2793, 2794, 2795, 2796, 2797, 2798, 2799, 2800, 2801, + 2802, 2803, 2804, 2805, 2806, 2807, 2808, 2809, 2810, 2811, 2812, 2813, + 2814, 2815, 2816, 2817, 2818, 2819, 2820, 2821, 2822, 2823, 2824, 2825, + 2826, 2827, 2828, 2829, 2830, 2831, 2832, 2833, 2834, 2835, 2836, 2837, + 2838, 2839, 2840, 2841, 2842, 2843, 2844, 2845, 2846, 2847, 2848, 2849, + 2850, 2851, 2852, 2853, 2854, 2855, 2856, 2857, 2858, 2859, 2860, 2861, + 2862, 2863, 2864, 2865, 2866, 2867, 2868, 2869, 2870, 2871, 2872, 2873, + 2874, 2875, 2876, 2877, 2878, 2879, 2880, 2881, 2882, 2883, 2884, 2885, + 2886, 2887, 2888, 2889, 2890, 2891, 2892, 2893, 2894, 2895, 2896, 2897, + 2898, 2899, 2900, 2901, 2902, 2903, 2904, 2905, 2906, 2907, 2908, 2909, + 2910, 2911, 2912, 2913, 2914, 2915, 2916, 2917, 2918, 2919, 2920, 2921, + 2922, 2923, 2924, 2925, 2926, 2927, 2928, 2929, 2930, 2931, 2932, 2933, + 2934, 2935, 2936, 2937, 2938, 2939, 2940, 2941, 2942, 2943, 2944, 2945, + 2946, 2947, 2948, 2949, 2950, 2951, 2952, 2953, 2954, 2955, 2956, 2957, + 2958, 2959, 2960, 2961, 2962, 2963, 2964, 2965, 2966, 2967, 2968, 2969, + 2970, 2971, 2972, 2973, 2974, 2975, 2976, 2977, 2978, 2979, 2980, 2981, + 2982, 2983, 2984, 2985, 2986, 2987, 2988, 2989, 2990, 2991, 2992, 2993, + 2994, 2995, 2996, 2997, 2998, 2999, 3000, 3001, 3002, 3003, 3004, 3005, + 3006, 3007, 3008, 3009, 3010, 3011, 3012, 3013, 3014, 3015, 3016, 3017, + 3018, 3019, 3020, 3021, 3022, 3023, 3024, 3025, 3026, 3027, 3028, 3029, + 3030, 3031, 3032, 3033, 3034, 3035, 3036, 3037, 3038, 3039, 3040, 3041, + 3042, 3043, 3044, 3045, 3046, 3047, 3048, 3049, 3050, 3051, 3052, 3053, + 3054, 3055, 3056, 3057, 3058, 3059, 3060, 3061, 3062, 3063, 3064, 3065, + 3066, 3067, 3068, 3069, 3070, 3071, 3072, 3073, 3074, 3075, 3076, 3077, + 3078, 3079, 3080, 3081, 3082, 3083, 3084, 3085, 3086, 3087, 3088, 3089, + 3090, 3091, 3092, 3093, 3094, 3095, 3096, 3097, 3098, 3099, 3100, 3101, + 3102, 3103, 3104, 3105, 3106, 3107, 3108, 3109, 3110, 3111, 3112, 3113, + 3114, 3115, 3116, 3117, 3118, 3119, 3120, 3121, 3122, 3123, 3124, 3125, + 3126, 3127, 3128, 3129, 3130, 3131, 3132, 3133, 3134, 3135, 3136, 3137, + 3138, 3139, 3140, 3141, 3142, 3143, 3144, 3145, 3146, 3147, 3148, 3149, + 3150, 3151, 3152, 3153, 3154, 3155, 3156, 3157, 3158, 3159, 3160, 3161, + 3162, 3163, 3164, 3165, 3166, 3167, 3168, 3169, 3170, 3171, 3172, 3173, + 3174, 3175, 3176, 3177, 3178, 3179, 3180, 3181, 3182, 3183, 3184, 3185, + 3186, 3187, 3188, 3189, 3190, 3191, 3192, 3193, 3194, 3195, 3196, 3197, + 3198, 3199, 3200, 3201, 3202, 3203, 3204, 3205, 3206, 3207, 3208, 3209, + 3210, 3211, 3212, 3213, 3214, 3215, 3216, 3217, 3218, 3219, 3220, 3221, + 3222, 3223, 3224, 3225, 3226, 3227, 3228, 3229, 3230, 3231, 3232, 3233, + 3234, 3235, 3236, 3237, 3238, 3239, 3240, 3241, 3242, 3243, 3244, 3245, + 3246, 3247, 3248, 3249, 3250, 3251, 3252, 3253, 3254, 3255, 3256, 3257, + 3258, 3259, 3260, 3261, 3262, 3263, 3264, 3265, 3266, 3267, 3268, 3269, + 3270, 3271, 3272, 3273, 3274, 3275, 3276, 3277, 3278, 3279, 3280, 3281, + 3282, 3283, 3284, 3285, 3286, 3287, 3288, 3289, 3290, 3291, 3292, 3293, + 3294, 3295, 3296, 3297, 3298, 3299, 3300, 3301, 3302, 3303, 3304, 3305, + 3306, 3307, 3308, 3309, 3310, 3311, 3312, 3313, 3314, 3315, 3316, 3317, + 3318, 3319, 3320, 3321, 3322, 3323, 3324, 3325, 3326, 3327, 3328, 3329, + 3330, 3331, 3332, 3333, 3334, 3335, 3336, 3337, 3338, 3339, 3340, 3341, + 3342, 3343, 3344, 3345, 3346, 3347, 3348, 3349, 3350, 3351, 3352, 3353, + 3354, 3355, 3356, 3357, 3358, 3359, 3360, 3361, 3362, 3363, 3364, 3365, + 3366, 3367, 3368, 3369, 3370, 3371, 3372, 3373, 3374, 3375, 3376, 3377, + 3378, 3379, 3380, 3381, 3382, 3383, 3384, 3385, 3386, 3387, 3388, 3389, + 3390, 3391, 3392, 3393, 3394, 3395, 3396, 3397, 3398, 3399, 3400, 3401, + 3402, 3403, 3404, 3405, 3406, 3407, 3408, 3409, 3410, 3411, 3412, 3413, + 3414, 3415, 3416, 3417, 3418, 3419, 3420, 3421, 3422, 3423, 3424, 3425, + 3426, 3427, 3428, 3429, 3430, 3431, 3432, 3433, 3434, 3435, 3436, 3437, + 3438, 3439, 3440, 3441, 3442, 3443, 3444, 3445, 3446, 3447, 3448, 3449, + 3450, 3451, 3452, 3453, 3454, 3455, 3456, 3457, 3458, 3459, 3460, 3461, + 3462, 3463, 3464, 3465, 3466, 3467, 3468, 3469, 3470, 3471, 3472, 3473, + 3474, 3475, 3476, 3477, 3478, 3479, 3480, 3481, 3482, 3483, 3484, 3485, + 3486, 3487, 3488, 3489, 3490, 3491, 3492, 3493, 3494, 3495, 3496, 3497, + 3498, 3499, 3500, 3501, 3502, 3503, 3504, 3505, 3506, 3507, 3508, 3509, + 3510, 3511, 3512, 3513, 3514, 3515, 3516, 3517, 3518, 3519, 3520, 3521, + 3522, 3523, 3524, 3525, 3526, 3527, 3528, 3529, 3530, 3531, 3532, 3533, + 3534, 3535, 3536, 3537, 3538, 3539, 3540, 3541, 3542, 3543, 3544, 3545, + 3546, 3547, 3548, 3549, 3550, 3551, 3552, 3553, 3554, 3555, 3556, 3557, + 3558, 3559, 3560, 3561, 3562, 3563, 3564, 3565, 3566, 3567, 3568, 3569, + 3570, 3571, 3572, 3573, 3574, 3575, 3576, 3577, 3578, 3579, 3580, 3581, + 3582, 3583, 3584, 3585, 3586, 3587, 3588, 3589, 3590, 3591, 3592, 3593, + 3594, 3595, 3596, 3597, 3598, 3599, 3600, 3601, 3602, 3603, 3604, 3605, + 3606, 3607, 3608, 3609, 3610, 3611, 3612, 3613, 3614, 3615, 3616, 3617, + 3618, 3619, 3620, 3621, 3622, 3623, 3624, 3625, 3626, 3627, 3628, 3629, + 3630, 3631, 3632, 3633, 3634, 3635, 3636, 3637, 3638, 3639, 3640, 3641, + 3642, 3643, 3644, 3645, 3646, 3647, 3648, 3649, 3650, 3651, 3652, 3653, + 3654, 3655, 3656, 3657, 3658, 3659, 3660, 3661, 3662, 3663, 3664, 3665, + 3666, 3667, 3668, 3669, 3670, 3671, 3672, 3673, 3674, 3675, 3676, 3677, + 3678, 3679, 3680, 3681, 3682, 3683, 3684, 3685, 3686, 3687, 3688, 3689, + 3690, 3691, 3692, 3693, 3694, 3695, 3696, 3697, 3698, 3699, 3700, 3701, + 3702, 3703, 3704, 3705, 3706, 3707, 3708, 3709, 3710, 3711, 3712, 3713, + 3714, 3715, 3716, 3717, 3718, 3719, 3720, 3721, 3722, 3723, 3724, 3725, + 3726, 3727, 3728, 3729, 3730, 3731, 3732, 3733, 3734, 3735, 3736, 3737, + 3738, 3739, 3740, 3741, 3742, 3743, 3744, 3745, 3746, 3747, 3748, 3749, + 3750, 3751, 3752, 3753, 3754, 3755, 3756, 3757, 3758, 3759, 3760, 3761, + 3762, 3763, 3764, 3765, 3766, 3767, 3768, 3769, 3770, 3771, 3772, 3773, + 3774, 3775, 3776, 3777, 3778, 3779, 3780, 3781, 3782, 3783, 3784, 3785, + 3786, 3787, 3788, 3789, 3790, 3791, 3792, 3793, 3794, 3795, 3796, 3797, + 3798, 3799, 3800, 3801, 3802, 3803, 3804, 3805, 3806, 3807, 3808, 3809, + 3810, 3811, 3812, 3813, 3814, 3815, 3816, 3817, 3818, 3819, 3820, 3821, + 3822, 3823, 3824, 3825, 3826, 3827, 3828, 3829, 3830, 3831, 3832, 3833, + 3834, 3835, 3836, 3837, 3838, 3839, 3840, 3841, 3842, 3843, 3844, 3845, + 3846, 3847, 3848, 3849, 3850, 3851, 3852, 3853, 3854, 3855, 3856, 3857, + 3858, 3859, 3860, 3861, 3862, 3863, 3864, 3865, 3866, 3867, 3868, 3869, + 3870, 3871, 3872, 3873, 3874, 3875, 3876, 3877, 3878, 3879, 3880, 3881, + 3882, 3883, 3884, 3885, 3886, 3887, 3888, 3889, 3890, 3891, 3892, 3893, + 3894, 3895, 3896, 3897, 3898, 3899, 3900, 3901, 3902, 3903, 3904, 3905, + 3906, 3907, 3908, 3909, 3910, 3911, 3912, 3913, 3914, 3915, 3916, 3917, + 3918, 3919, 3920, 3921, 3922, 3923, 3924, 3925, 3926, 3927, 3928, 3929, + 3930, 3931, 3932, 3933, 3934, 3935, 3936, 3937, 3938, 3939, 3940, 3941, + 3942, 3943, 3944, 3945, 3946, 3947, 3948, 3949, 3950, 3951, 3952, 3953, + 3954, 3955, 3956, 3957, 3958, 3959, 3960, 3961, 3962, 3963, 3964, 3965, + 3966, 3967, 3968, 3969, 3970, 3971, 3972, 3973, 3974, 3975, 3976, 3977, + 3978, 3979, 3980, 3981, 3982, 3983, 3984, 3985, 3986, 3987, 3988, 3989, + 3990, 3991, 3992, 3993, 3994, 3995, 3996, 3997, 3998, 3999, 4000, 4001, + 4002, 4003, 4004, 4005, 4006, 4007, 4008, 4009, 4010, 4011, 4012, 4013, + 4014, 4015, 4016, 4017, 4018, 4019, 4020, 4021, 4022, 4023, 4024, 4025, + 4026, 4027, 4028, 4029, 4030, 4031, 4032, 4033, 4034, 4035, 4036, 4037, + 4038, 4039, 4040, 4041, 4042, 4043, 4044, 4045, 4046, 4047, 4048, 4049, + 4050, 4051, 4052, 4053, 4054, 4055, 4056, 4057, 4058, 4059, 4060, 4061, + 4062, 4063, 4064, 4065, 4066, 4067, 4068, 4069, 4070, 4071, 4072, 4073, + 4074, 4075, 4076, 4077, 4078, 4079, 4080, 4081, 4082, 4083, 4084, 4085, + 4086, 4087, 4088, 4089, 4090, 4091, 4092, 4093, 4094, 4095, 4096, 4097, + 4098, 4099, 4100, 4101, 4102, 4103, 4104, 4105, 4106, 4107, 4108, 4109, + 4110, 4111, 4112, 4113, 4114, 4115, 4116, 4117, 4118, 4119, 4120, 4121, + 4122, 4123, 4124, 4125, 4126, 4127, 4128, 4129, 4130, 4131, 4132, 4133, + 4134, 4135, 4136, 4137, 4138, 4139, 4140, 4141, 4142, 4143, 4144, 4145, + 4146, 4147, 4148, 4149, 4150, 4151, 4152, 4153, 4154, 4155, 4156, 4157, + 4158, 4159, 4160, 4161, 4162, 4163, 4164, 4165, 4166, 4167, 4168, 4169, + 4170, 4171, 4172, 4173, 4174, 4175, 4176, 4177, 4178, 4179, 4180, 4181, + 4182, 4183, 4184, 4185, 4186, 4187, 4188, 4189, 4190, 4191, 4192, 4193, + 4194, 4195, 4196, 4197, 4198, 4199, 4200, 4201, 4202, 4203, 4204, 4205, + 4206, 4207, 4208, 4209, 4210, 4211, 4212, 4213, 4214, 4215, 4216, 4217, + 4218, 4219, 4220, 4221, 4222, 4223, 4224, 4225, 4226, 4227, 4228, 4229, + 4230, 4231, 4232, 4233, 4234, 4235, 4236, 4237, 4238, 4239, 4240, 4241, + 4242, 4243, 4244, 4245, 4246, 4247, 4248, 4249, 4250, 4251, 4252, 4253, + 4254, 4255, 4256, 4257, 4258, 4259, 4260, 4261, 4262, 4263, 4264, 4265, + 4266, 4267, 4268, 4269, 4270, 4271, 4272, 4273, 4274, 4275, 4276, 4277, + 4278, 4279, 4280, 4281, 4282, 4283, 4284, 4285, 4286, 4287, 4288, 4289, + 4290, 4291, 4292, 4293, 4294, 4295, 4296, 4297, 4298, 4299, 4300, 4301, + 4302, 4303, 4304, 4305, 4306, 4307, 4308, 4309, 4310, 4311, 4312, 4313, + 4314, 4315, 4316, 4317, 4318, 4319, 4320, 4321, 4322, 4323, 4324, 4325, + 4326, 4327, 4328, 4329, 4330, 4331, 4332, 4333, 4334, 4335, 4336, 4337, + 4338, 4339, 4340, 4341, 4342, 4343, 4344, 4345, 4346, 4347, 4348, 4349, + 4350, 4351, 4352, 4353, 4354, 4355, 4356, 4357, 4358, 4359, 4360, 4361, + 4362, 4363, 4364, 4365, 4366, 4367, 4368, 4369, 4370, 4371, 4372, 4373, + 4374, 4375, 4376, 4377, 4378, 4379, 4380, 4381, 4382, 4383, 4384, 4385, + 4386, 4387, 4388, 4389, 4390, 4391, 4392, 4393, 4394, 4395, 4396, 4397, + 4398, 4399, 4400, 4401, 4402, 4403, 4404, 4405, 4406, 4407, 4408, 4409, + 4410, 4411, 4412, 4413, 4414, 4415, 4416, 4417, 4418, 4419, 4420, 4421, + 4422, 4423, 4424, 4425, 4426, 4427, 4428, 4429, 4430, 4431, 4432, 4433, + 4434, 4435, 4436, 4437, 4438, 4439, 4440, 4441, 4442, 4443, 4444, 4445, + 4446, 4447, 4448, 4449, 4450, 4451, 4452, 4453, 4454, 4455, 4456, 4457, + 4458, 4459, 4460, 4461, 4462, 4463, 4464, 4465, 4466, 4467, 4468, 4469, + 4470, 4471, 4472, 4473, 4474, 4475, 4476, 4477, 4478, 4479, 4480, 4481, + 4482, 4483, 4484, 4485, 4486, 4487, 4488, 4489, 4490, 4491, 4492, 4493, + 4494, 4495, 4496, 4497, 4498, 4499, 4500, 4501, 4502, 4503, 4504, 4505, + 4506, 4507, 4508, 4509, 4510, 4511, 4512, 4513, 4514, 4515, 4516, 4517, + 4518, 4519, 4520, 4521, 4522, 4523, 4524, 4525, 4526, 4527, 4528, 4529, + 4530, 4531, 4532, 4533, 4534, 4535, 4536, 4537, 4538, 4539, 4540, 4541, + 4542, 4543, 4544, 4545, 4546, 4547, 4548, 4549, 4550, 4551, 4552, 4553, + 4554, 4555, 4556, 4557, 4558, 4559, 4560, 4561, 4562, 4563, 4564, 4565, + 4566, 4567, 4568, 4569, 4570, 4571, 4572, 4573, 4574, 4575, 4576, 4577, + 4578, 4579, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, + 4590, 4591, 4592, 4593, 4594, 4595, 4596, 4597, 4598, 4599, 4600, 4601, + 4602, 4603, 4604, 4605, 4606, 4607, 4608, 4609, 4610, 4611, 4612, 4613, + 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622, 4623, 4624, 4625, + 4626, 4627, 4628, 4629, 4630, 4631, 4632, 4633, 4634, 4635, 4636, 4637, + 4638, 4639, 4640, 4641, 4642, 4643, 4644, 4645, 4646, 4647, 4648, 4649, + 4650, 4651, 4652, 4653, 4654, 4655, 4656, 4657, 4658, 4659, 4660, 4661, + 4662, 4663, 4664, 4665, 4666, 4667, 4668, 4669, 4670, 4671, 4672, 4673, + 4674, 4675, 4676, 4677, 4678, 4679, 4680, 4681, 4682, 4683, 4684, 4685, + 4686, 4687, 4688, 4689, 4690, 4691, 4692, 4693, 4694, 4695, 4696, 4697, + 4698, 4699, 4700, 4701, 4702, 4703, 4704, 4705, 4706, 4707, 4708, 4709, + 4710, 4711, 4712, 4713, 4714, 4715, 4716, 4717, 4718, 4719, 4720, 4721, + 4722, 4723, 4724, 4725, 4726, 4727, 4728, 4729, 4730, 4731, 4732, 4733, + 4734, 4735, 4736, 4737, 4738, 4739, 4740, 4741, 4742, 4743, 4744, 4745, + 4746, 4747, 4748, 4749, 4750, 4751, 4752, 4753, 4754, 4755, 4756, 4757, + 4758, 4759, 4760, 4761, 4762, 4763, 4764, 4765, 4766, 4767, 4768, 4769, + 4770, 4771, 4772, 4773, 4774, 4775, 4776, 4777, 4778, 4779, 4780, 4781, + 4782, 4783, 4784, 4785, 4786, 4787, 4788, 4789, 4790, 4791, 4792, 4793, + 4794, 4795, 4796, 4797, 4798, 4799, 4800, 4801, 4802, 4803, 4804, 4805, + 4806, 4807, 4808, 4809, 4810, 4811, 4812, 4813, 4814, 4815, 4816, 4817, + 4818, 4819, 4820, 4821, 4822, 4823, 4824, 4825, 4826, 4827, 4828, 4829, + 4830, 4831, 4832, 4833, 4834, 4835, 4836, 4837, 4838, 4839, 4840, 4841, + 4842, 4843, 4844, 4845, 4846, 4847, 4848, 4849, 4850, 4851, 4852, 4853, + 4854, 4855, 4856, 4857, 4858, 4859, 4860, 4861, 4862, 4863, 4864, 4865, + 4866, 4867, 4868, 4869, 4870, 4871, 4872, 4873, 4874, 4875, 4876, 4877, + 4878, 4879, 4880, 4881, 4882, 4883, 4884, 4885, 4886, 4887, 4888, 4889, + 4890, 4891, 4892, 4893, 4894, 4895, 4896, 4897, 4898, 4899, 4900, 4901, + 4902, 4903, 4904, 4905, 4906, 4907, 4908, 4909, 4910, 4911, 4912, 4913, + 4914, 4915, 4916, 4917, 4918, 4919, 4920, 4921, 4922, 4923, 4924, 4925, + 4926, 4927, 4928, 4929, 4930, 4931, 4932, 4933, 4934, 4935, 4936, 4937, + 4938, 4939, 4940, 4941, 4942, 4943, 4944, 4945, 4946, 4947, 4948, 4949, + 4950, 4951, 4952, 4953, 4954, 4955, 4956, 4957, 4958, 4959, 4960, 4961, + 4962, 4963, 4964, 4965, 4966, 4967, 4968, 4969, 4970, 4971, 4972, 4973, + 4974, 4975, 4976, 4977, 4978, 4979, 4980, 4981, 4982, 4983, 4984, 4985, + 4986, 4987, 4988, 4989, 4990, 4991, 4992, 4993, 4994, 4995, 4996, 4997, + 4998, 4999, 5000, 5001, 5002, 5003, 5004, 5005, 5006, 5007, 5008, 5009, + 5010, 5011, 5012, 5013, 5014, 5015, 5016, 5017, 5018, 5019, 5020, 5021, + 5022, 5023, 5024, 5025, 5026, 5027, 5028, 5029, 5030, 5031, 5032, 5033, + 5034, 5035, 5036, 5037, 5038, 5039, 5040, 5041, 5042, 5043, 5044, 5045, + 5046, 5047, 5048, 5049, 5050, 5051, 5052, 5053, 5054, 5055, 5056, 5057, + 5058, 5059, 5060, 5061, 5062, 5063, 5064, 5065, 5066, 5067, 5068, 5069, + 5070, 5071, 5072, 5073, 5074, 5075, 5076, 5077, 5078, 5079, 5080, 5081, + 5082, 5083, 5084, 5085, 5086, 5087, 5088, 5089, 5090, 5091, 5092, 5093, + 5094, 5095, 5096, 5097, 5098, 5099, 5100, 5101, 5102, 5103, 5104, 5105, + 5106, 5107, 5108, 5109, 5110, 5111, 5112, 5113, 5114, 5115, 5116, 5117, + 5118, 5119, 5120, 5121, 5122, 5123, 5124, 5125, 5126, 5127, 5128, 5129, + 5130, 5131, 5132, 5133, 5134, 5135, 5136, 5137, 5138, 5139, 5140, 5141, + 5142, 5143, 5144, 5145, 5146, 5147, 5148, 5149, 5150, 5151, 5152, 5153, + 5154, 5155, 5156, 5157, 5158, 5159, 5160, 5161, 5162, 5163, 5164, 5165, + 5166, 5167, 5168, 5169, 5170, 5171, 5172, 5173, 5174, 5175, 5176, 5177, + 5178, 5179, 5180, 5181, 5182, 5183, 5184, 5185, 5186, 5187, 5188, 5189, + 5190, 5191, 5192, 5193, 5194, 5195, 5196, 5197, 5198, 5199, 5200, 5201, + 5202, 5203, 5204, 5205, 5206, 5207, 5208, 5209, 5210, 5211, 5212, 5213, + 5214, 5215, 5216, 5217, 5218, 5219, 5220, 5221, 5222, 5223, 5224, 5225, + 5226, 5227, 5228, 5229, 5230, 5231, 5232, 5233, 5234, 5235, 5236, 5237, + 5238, 5239, 5240, 5241, 5242, 5243, 5244, 5245, 5246, 5247, 5248, 5249, + 5250, 5251, 5252, 5253, 5254, 5255, 5256, 5257, 5258, 5259, 5260, 5261, + 5262, 5263, 5264, 5265, 5266, 5267, 5268, 5269, 5270, 5271, 5272, 5273, + 5274, 5275, 5276, 5277, 5278, 5279, 5280, 5281, 5282, 5283, 5284, 5285, + 5286, 5287, 5288, 5289, 5290, 5291, 5292, 5293, 5294, 5295, 5296, 5297, + 5298, 5299, 5300, 5301, 5302, 5303, 5304, 5305, 5306, 5307, 5308, 5309, + 5310, 5311, 5312, 5313, 5314, 5315, 5316, 5317, 5318, 5319, 5320, 5321, + 5322, 5323, 5324, 5325, 5326, 5327, 5328, 5329, 5330, 5331, 5332, 5333, + 5334, 5335, 5336, 5337, 5338, 5339, 5340, 5341, 5342, 5343, 5344, 5345, + 5346, 5347, 5348, 5349, 5350, 5351, 5352, 5353, 5354, 5355, 5356, 5357, + 5358, 5359, 5360, 5361, 5362, 5363, 5364, 5365, 5366, 5367, 5368, 5369, + 5370, 5371, 5372, 5373, 5374, 5375, 5376, 5377, 5378, 5379, 5380, 5381, + 5382, 5383, 5384, 5385, 5386, 5387, 5388, 5389, 5390, 5391, 5392, 5393, + 5394, 5395, 5396, 5397, 5398, 5399, 5400, 5401, 5402, 5403, 5404, 5405, + 5406, 5407, 5408, 5409, 5410, 5411, 5412, 5413, 5414, 5415, 5416, 5417, + 5418, 5419, 5420, 5421, 5422, 5423, 5424, 5425, 5426, 5427, 5428, 5429, + 5430, 5431, 5432, 5433, 5434, 5435, 5436, 5437, 5438, 5439, 5440, 5441, + 5442, 5443, 5444, 5445, 5446, 5447, 5448, 5449, 5450, 5451, 5452, 5453, + 5454, 5455, 5456, 5457, 5458, 5459, 5460, 5461, 5462, 5463, 5464, 5465, + 5466, 5467, 5468, 5469, 5470, 5471, 5472, 5473, 5474, 5475, 5476, 5477, + 5478, 5479, 5480, 5481, 5482, 5483, 5484, 5485, 5486, 5487, 5488, 5489, + 5490, 5491, 5492, 5493, 5494, 5495, 5496, 5497, 5498, 5499, 5500, 5501, + 5502, 5503, 5504, 5505, 5506, 5507, 5508, 5509, 5510, 5511, 5512, 5513, + 5514, 5515, 5516, 5517, 5518, 5519, 5520, 5521, 5522, 5523, 5524, 5525, + 5526, 5527, 5528, 5529, 5530, 5531, 5532, 5533, 5534, 5535, 5536, 5537, + 5538, 5539, 5540, 5541, 5542, 5543, 5544, 5545, 5546, 5547, 5548, 5549, + 5550, 5551, 5552, 5553, 5554, 5555, 5556, 5557, 5558, 5559, 5560, 5561, + 5562, 5563, 5564, 5565, 5566, 5567, 5568, 5569, 5570, 5571, 5572, 5573, + 5574, 5575, 5576, 5577, 5578, 5579, 5580, 5581, 5582, 5583, 5584, 5585, + 5586, 5587, 5588, 5589, 5590, 5591, 5592, 5593, 5594, 5595, 5596, 5597, + 5598, 5599, 5600, 5601, 5602, 5603, 5604, 5605, 5606, 5607, 5608, 5609, + 5610, 5611, 5612, 5613, 5614, 5615, 5616, 5617, 5618, 5619, 5620, 5621, + 5622, 5623, 5624, 5625, 5626, 5627, 5628, 5629, 5630, 5631, 5632, 5633, + 5634, 5635, 5636, 5637, 5638, 5639, 5640, 5641, 5642, 5643, 5644, 5645, + 5646, 5647, 5648, 5649, 5650, 5651, 5652, 5653, 5654, 5655, 5656, 5657, + 5658, 5659, 5660, 5661, 5662, 5663, 5664, 5665, 5666, 5667, 5668, 5669, + 5670, 5671, 5672, 5673, 5674, 5675, 5676, 5677, 5678, 5679, 5680, 5681, + 5682, 5683, 5684, 5685, 5686, 5687, 5688, 5689, 5690, 5691, 5692, 5693, + 5694, 5695, 5696, 5697, 5698, 5699, 5700, 5701, 5702, 5703, 5704, 5705, + 5706, 5707, 5708, 5709, 5710, 5711, 5712, 5713, 5714, 5715, 5716, 5717, + 5718, 5719, 5720, 5721, 5722, 5723, 5724, 5725, 5726, 5727, 5728, 5729, + 5730, 5731, 5732, 5733, 5734, 5735, 5736, 5737, 5738, 5739, 5740, 5741, + 5742, 5743, 5744, 5745, 5746, 5747, 5748, 5749, 5750, 5751, 5752, 5753, + 5754, 5755, 5756, 5757, 5758, 5759, 5760, 5761, 5762, 5763, 5764, 5765, + 5766, 5767, 5768, 5769, 5770, 5771, 5772, 5773, 5774, 5775, 5776, 5777, + 5778, 5779, 5780, 5781, 5782, 5783, 5784, 5785, 5786, 5787, 5788, 5789, + 5790, 5791, 5792, 5793, 5794, 5795, 5796, 5797, 5798, 5799, 5800, 5801, + 5802, 5803, 5804, 5805, 5806, 5807, 5808, 5809, 5810, 5811, 5812, 5813, + 5814, 5815, 5816, 5817, 5818, 5819, 5820, 5821, 5822, 5823, 5824, 5825, + 5826, 5827, 5828, 5829, 5830, 5831, 5832, 5833, 5834, 5835, 5836, 5837, + 5838, 5839, 5840, 5841, 5842, 5843, 5844, 5845, 5846, 5847, 5848, 5849, + 5850, 5851, 5852, 5853, 5854, 5855, 5856, 5857, 5858, 5859, 5860, 5861, + 5862, 5863, 5864, 5865, 5866, 5867, 5868, 5869, 5870, 5871, 5872, 5873, + 5874, 5875, 5876, 5877, 5878, 5879, 5880, 5881, 5882, 5883, 5884, 5885, + 5886, 5887, 5888, 5889, 5890, 5891, 5892, 5893, 5894, 5895, 5896, 5897, + 5898, 5899, 5900, 5901, 5902, 5903, 5904, 5905, 5906, 5907, 5908, 5909, + 5910, 5911, 5912, 5913, 5914, 5915, 5916, 5917, 5918, 5919, 5920, 5921, + 5922, 5923, 5924, 5925, 5926, 5927, 5928, 5929, 5930, 5931, 5932, 5933, + 5934, 5935, 5936, 5937, 5938, 5939, 5940, 5941, 5942, 5943, 5944, 5945, + 5946, 5947, 5948, 5949, 5950, 5951, 5952, 5953, 5954, 5955, 5956, 5957, + 5958, 5959, 5960, 5961, 5962, 5963, 5964, 5965, 5966, 5967, 5968, 5969, + 5970, 5971, 5972, 5973, 5974, 5975, 5976, 5977, 5978, 5979, 5980, 5981, + 5982, 5983, 5984, 5985, 5986, 5987, 5988, 5989, 5990, 5991, 5992, 5993, + 5994, 5995, 5996, 5997, 5998, 5999, 6000, 6001, 6002, 6003, 6004, 6005, + 6006, 6007, 6008, 6009, 6010, 6011, 6012, 6013, 6014, 6015, 6016, 6017, + 6018, 6019, 6020, 6021, 6022, 6023, 6024, 6025, 6026, 6027, 6028, 6029, + 6030, 6031, 6032, 6033, 6034, 6035, 6036, 6037, 6038, 6039, 6040, 6041, + 6042, 6043, 6044, 6045, 6046, 6047, 6048, 6049, 6050, 6051, 6052, 6053, + 6054, 6055, 6056, 6057, 6058, 6059, 6060, 6061, 6062, 6063, 6064, 6065, + 6066, 6067, 6068, 6069, 6070, 6071, 6072, 6073, 6074, 6075, 6076, 6077, + 6078, 6079, 6080, 6081, 6082, 6083, 6084, 6085, 6086, 6087, 6088, 6089, + 6090, 6091, 6092, 6093, 6094, 6095, 6096, 6097, 6098, 6099, 6100, 6101, + 6102, 6103, 6104, 6105, 6106, 6107, 6108, 6109, 6110, 6111, 6112, 6113, + 6114, 6115, 6116, 6117, 6118, 6119, 6120, 6121, 6122, 6123, 6124, 6125, + 6126, 6127, 6128, 6129, 6130, 6131, 6132, 6133, 6134, 6135, 6136, 6137, + 6138, 6139, 6140, 6141, 6142, 6143, 6144, 6145, 6146, 6147, 6148, 6149, + 6150, 6151, 6152, 6153, 6154, 6155, 6156, 6157, 6158, 6159, 6160, 6161, + 6162, 6163, 6164, 6165, 6166, 6167, 6168, 6169, 6170, 6171, 6172, 6173, + 6174, 6175, 6176, 6177, 6178, 6179, 6180, 6181, 6182, 6183, 6184, 6185, + 6186, 6187, 6188, 6189, 6190, 6191, 6192, 6193, 6194, 6195, 6196, 6197, + 6198, 6199, 6200, 6201, 6202, 6203, 6204, 6205, 6206, 6207, 6208, 6209, + 6210, 6211, 6212, 6213, 6214, 6215, 6216, 6217, 6218, 6219, 6220, 6221, + 6222, 6223, 6224, 6225, 6226, 6227, 6228, 6229, 6230, 6231, 6232, 6233, + 6234, 6235, 6236, 6237, 6238, 6239, 6240, 6241, 6242, 6243, 6244, 6245, + 6246, 6247, 6248, 6249, 6250, 6251, 6252, 6253, 6254, 6255, 6256, 6257, + 6258, 6259, 6260, 6261, 6262, 6263, 6264, 6265, 6266, 6267, 6268, 6269, + 6270, 6271, 6272, 6273, 6274, 6275, 6276, 6277, 6278, 6279, 6280, 6281, + 6282, 6283, 6284, 6285, 6286, 6287, 6288, 6289, 6290, 6291, 6292, 6293, + 6294, 6295, 6296, 6297, 6298, 6299, 6300, 6301, 6302, 6303, 6304, 6305, + 6306, 6307, 6308, 6309, 6310, 6311, 6312, 6313, 6314, 6315, 6316, 6317, + 6318, 6319, 6320, 6321, 6322, 6323, 6324, 6325, 6326, 6327, 6328, 6329, + 6330, 6331, 6332, 6333, 6334, 6335, 6336, 6337, 6338, 6339, 6340, 6341, + 6342, 6343, 6344, 6345, 6346, 6347, 6348, 6349, 6350, 6351, 6352, 6353, + 6354, 6355, 6356, 6357, 6358, 6359, 6360, 6361, 6362, 6363, 6364, 6365, + 6366, 6367, 6368, 6369, 6370, 6371, 6372, 6373, 6374, 6375, 6376, 6377, + 6378, 6379, 6380, 6381, 6382, 6383, 6384, 6385, 6386, 6387, 6388, 6389, + 6390, 6391, 6392, 6393, 6394, 6395, 6396, 6397, 6398, 6399, 6400, 6401, + 6402, 6403, 6404, 6405, 6406, 6407, 6408, 6409, 6410, 6411, 6412, 6413, + 6414, 6415, 6416, 6417, 6418, 6419, 6420, 6421, 6422, 6423, 6424, 6425, + 6426, 6427, 6428, 6429, 6430, 6431, 6432, 6433, 6434, 6435, 6436, 6437, + 6438, 6439, 6440, 6441, 6442, 6443, 6444, 6445, 6446, 6447, 6448, 6449, + 6450, 6451, 6452, 6453, 6454, 6455, 6456, 6457, 6458, 6459, 6460, 6461, + 6462, 6463, 6464, 6465, 6466, 6467, 6468, 6469, 6470, 6471, 6472, 6473, + 6474, 6475, 6476, 6477, 6478, 6479, 6480, 6481, 6482, 6483, 6484, 6485, + 6486, 6487, 6488, 6489, 6490, 6491, 6492, 6493, 6494, 6495, 6496, 6497, + 6498, 6499, 6500, 6501, 6502, 6503, 6504, 6505, 6506, 6507, 6508, 6509, + 6510, 6511, 6512, 6513, 6514, 6515, 6516, 6517, 6518, 6519, 6520, 6521, + 6522, 6523, 6524, 6525, 6526, 6527, 6528, 6529, 6530, 6531, 6532, 6533, + 6534, 6535, 6536, 6537, 6538, 6539, 6540, 6541, 6542, 6543, 6544, 6545, + 6546, 6547, 6548, 6549, 6550, 6551, 6552, 6553, 6554, 6555, 6556, 6557, + 6558, 6559, 6560, 6561, 6562, 6563, 6564, 6565, 6566, 6567, 6568, 6569, + 6570, 6571, 6572, 6573, 6574, 6575, 6576, 6577, 6578, 6579, 6580, 6581, + 6582, 6583, 6584, 6585, 6586, 6587, 6588, 6589, 6590, 6591, 6592, 6593, + 6594, 6595, 6596, 6597, 6598, 6599, 6600, 6601, 6602, 6603, 6604, 6605, + 6606, 6607, 6608, 6609, 6610, 6611, 6612, 6613, 6614, 6615, 6616, 6617, + 6618, 6619, 6620, 6621, 6622, 6623, 6624, 6625, 6626, 6627, 6628, 6629, + 6630, 6631, 6632, 6633, 6634, 6635, 6636, 6637, 6638, 6639, 6640, 6641, + 6642, 6643, 6644, 6645, 6646, 6647, 6648, 6649, 6650, 6651, 6652, 6653, + 6654, 6655, 6656, 6657, 6658, 6659, 6660, 6661, 6662, 6663, 6664, 6665, + 6666, 6667, 6668, 6669, 6670, 6671, 6672, 6673, 6674, 6675, 6676, 6677, + 6678, 6679, 6680, 6681, 6682, 6683, 6684, 6685, 6686, 6687, 6688, 6689, + 6690, 6691, 6692, 6693, 6694, 6695, 6696, 6697, 6698, 6699, 6700, 6701, + 6702, 6703, 6704, 6705, 6706, 6707, 6708, 6709, 6710, 6711, 6712, 6713, + 6714, 6715, 6716, 6717, 6718, 6719, 6720, 6721, 6722, 6723, 6724, 6725, + 6726, 6727, 6728, 6729, 6730, 6731, 6732, 6733, 6734, 6735, 6736, 6737, + 6738, 6739, 6740, 6741, 6742, 6743, 6744, 6745, 6746, 6747, 6748, 6749, + 6750, 6751, 6752, 6753, 6754, 6755, 6756, 6757, 6758, 6759, 6760, 6761, + 6762, 6763, 6764, 6765, 6766, 6767, 6768, 6769, 6770, 6771, 6772, 6773, + 6774, 6775, 6776, 6777, 6778, 6779, 6780, 6781, 6782, 6783, 6784, 6785, + 6786, 6787, 6788, 6789, 6790, 6791, 6792, 6793, 6794, 6795, 6796, 6797, + 6798, 6799, 6800, 6801, 6802, 6803, 6804, 6805, 6806, 6807, 6808, 6809, + 6810, 6811, 6812, 6813, 6814, 6815, 6816, 6817, 6818, 6819, 6820, 6821, + 6822, 6823, 6824, 6825, 6826, 6827, 6828, 6829, 6830, 6831, 6832, 6833, + 6834, 6835, 6836, 6837, 6838, 6839, 6840, 6841, 6842, 6843, 6844, 6845, + 6846, 6847, 6848, 6849, 6850, 6851, 6852, 6853, 6854, 6855, 6856, 6857, + 6858, 6859, 6860, 6861, 6862, 6863, 6864, 6865, 6866, 6867, 6868, 6869, + 6870, 6871, 6872, 6873, 6874, 6875, 6876, 6877, 6878, 6879, 6880, 6881, + 6882, 6883, 6884, 6885, 6886, 6887, 6888, 6889, 6890, 6891, 6892, 6893, + 6894, 6895, 6896, 6897, 6898, 6899, 6900, 6901, 6902, 6903, 6904, 6905, + 6906, 6907, 6908, 6909, 6910, 6911, 6912, 6913, 6914, 6915, 6916, 6917, + 6918, 6919, 6920, 6921, 6922, 6923, 6924, 6925, 6926, 6927, 6928, 6929, + 6930, 6931, 6932, 6933, 6934, 6935, 6936, 6937, 6938, 6939, 6940, 6941, + 6942, 6943, 6944, 6945, 6946, 6947, 6948, 6949, 6950, 6951, 6952, 6953, + 6954, 6955, 6956, 6957, 6958, 6959, 6960, 6961, 6962, 6963, 6964, 6965, + 6966, 6967, 6968, 6969, 6970, 6971, 6972, 6973, 6974, 6975, 6976, 6977, + 6978, 6979, 6980, 6981, 6982, 6983, 6984, 6985, 6986, 6987, 6988, 6989, + 6990, 6991, 6992, 6993, 6994, 6995, 6996, 6997, 6998, 6999, 7000, 7001, + 7002, 7003, 7004, 7005, 7006, 7007, 7008, 7009, 7010, 7011, 7012, 7013, + 7014, 7015, 7016, 7017, 7018, 7019, 7020, 7021, 7022, 7023, 7024, 7025, + 7026, 7027, 7028, 7029, 7030, 7031, 7032, 7033, 7034, 7035, 7036, 7037, + 7038, 7039, 7040, 7041, 7042, 7043, 7044, 7045, 7046, 7047, 7048, 7049, + 7050, 7051, 7052, 7053, 7054, 7055, 7056, 7057, 7058, 7059, 7060, 7061, + 7062, 7063, 7064, 7065, 7066, 7067, 7068, 7069, 7070, 7071, 7072, 7073, + 7074, 7075, 7076, 7077, 7078, 7079, 7080, 7081, 7082, 7083, 7084, 7085, + 7086, 7087, 7088, 7089, 7090, 7091, 7092, 7093, 7094, 7095, 7096, 7097, + 7098, 7099, 7100, 7101, 7102, 7103, 7104, 7105, 7106, 7107, 7108, 7109, + 7110, 7111, 7112, 7113, 7114, 7115, 7116, 7117, 7118, 7119, 7120, 7121, + 7122, 7123, 7124, 7125, 7126, 7127, 7128, 7129, 7130, 7131, 7132, 7133, + 7134, 7135, 7136, 7137, 7138, 7139, 7140, 7141, 7142, 7143, 7144, 7145, + 7146, 7147, 7148, 7149, 7150, 7151, 7152, 7153, 7154, 7155, 7156, 7157, + 7158, 7159, 7160, 7161, 7162, 7163, 7164, 7165, 7166, 7167, 7168, 7169, + 7170, 7171, 7172, 7173, 7174, 7175, 7176, 7177, 7178, 7179, 7180, 7181, + 7182, 7183, 7184, 7185, 7186, 7187, 7188, 7189, 7190, 7191, 7192, 7193, + 7194, 7195, 7196, 7197, 7198, 7199, 7200, 7201, 7202, 7203, 7204, 7205, + 7206, 7207, 7208, 7209, 7210, 7211, 7212, 7213, 7214, 7215, 7216, 7217, + 7218, 7219, 7220, 7221, 7222, 7223, 7224, 7225, 7226, 7227, 7228, 7229, + 7230, 7231, 7232, 7233, 7234, 7235, 7236, 7237, 7238, 7239, 7240, 7241, + 7242, 7243, 7244, 7245, 7246, 7247, 7248, 7249, 7250, 7251, 7252, 7253, + 7254, 7255, 7256, 7257, 7258, 7259, 7260, 7261, 7262, 7263, 7264, 7265, + 7266, 7267, 7268, 7269, 7270, 7271, 7272, 7273, 7274, 7275, 7276, 7277, + 7278, 7279, 7280, 7281, 7282, 7283, 7284, 7285, 7286, 7287, 7288, 7289, + 7290, 7291, 7292, 7293, 7294, 7295, 7296, 7297, 7298, 7299, 7300, 7301, + 7302, 7303, 7304, 7305, 7306, 7307, 7308, 7309, 7310, 7311, 7312, 7313, + 7314, 7315, 7316, 7317, 7318, 7319, 7320, 7321, 7322, 7323, 7324, 7325, + 7326, 7327, 7328, 7329, 7330, 7331, 7332, 7333, 7334, 7335, 7336, 7337, + 7338, 7339, 7340, 7341, 7342, 7343, 7344, 7345, 7346, 7347, 7348, 7349, + 7350, 7351, 7352, 7353, 7354, 7355, 7356, 7357, 7358, 7359, 7360, 7361, + 7362, 7363, 7364, 7365, 7366, 7367, 7368, 7369, 7370, 7371, 7372, 7373, + 7374, 7375, 7376, 7377, 7378, 7379, 7380, 7381, 7382, 7383, 7384, 7385, + 7386, 7387, 7388, 7389, 7390, 7391, 7392, 7393, 7394, 7395, 7396, 7397, + 7398, 7399, 7400, 7401, 7402, 7403, 7404, 7405, 7406, 7407, 7408, 7409, + 7410, 7411, 7412, 7413, 7414, 7415, 7416, 7417, 7418, 7419, 7420, 7421, + 7422, 7423, 7424 ; + + node_num_map = 265, 266, 1188, 946, 267, 1189, 268, 1190, 269, 1191, 270, + 1192, 271, 1193, 272, 1194, 273, 1195, 274, 1196, 275, 1197, 276, 1198, + 277, 1199, 278, 1200, 279, 1201, 280, 1202, 281, 1203, 282, 1204, 283, + 1205, 284, 1206, 285, 1207, 286, 1208, 287, 1209, 288, 1210, 289, 1211, + 290, 1212, 291, 1213, 292, 1214, 293, 1215, 294, 1216, 295, 1217, 296, + 1218, 297, 1219, 298, 995, 1220, 945, 1221, 1222, 1223, 1224, 1225, 1226, + 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, + 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, + 1251, 994, 1252, 944, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, + 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, + 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 993, + 1284, 943, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, + 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, + 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 992, 1316, 942, + 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, + 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, + 1341, 1342, 1343, 1344, 1345, 1346, 1347, 991, 1348, 941, 1349, 1350, + 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, + 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, + 1375, 1376, 1377, 1378, 1379, 990, 1380, 940, 1381, 1382, 1383, 1384, + 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, + 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, + 1409, 1410, 1411, 989, 1412, 939, 1413, 1414, 1415, 1416, 1417, 1418, + 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, + 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, + 1443, 988, 1444, 938, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, + 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, + 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 987, + 1476, 937, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, + 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, + 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 986, 1508, 936, + 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, + 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, + 1533, 1534, 1535, 1536, 1537, 1538, 1539, 985, 1540, 935, 1541, 1542, + 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, + 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, + 1567, 1568, 1569, 1570, 1571, 984, 1572, 934, 1573, 1574, 1575, 1576, + 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, + 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, + 1601, 1602, 1603, 983, 1604, 933, 1605, 1606, 1607, 1608, 1609, 1610, + 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, + 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, + 1635, 982, 1636, 932, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, + 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, + 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 981, + 1668, 931, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, + 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, + 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 980, 1700, 930, + 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, + 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, + 1725, 1726, 1727, 1728, 1729, 1730, 1731, 979, 947, 926, 948, 949, 950, + 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, + 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, + 927, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, + 1743, 1744, 1745, 1746, 1747, 1156, 1748, 1749, 1750, 1751, 1752, 1753, + 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1155, 1764, + 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, + 1777, 1778, 1779, 1154, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, + 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1153, 1796, 1797, 1798, + 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, + 1811, 1152, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, + 1822, 1823, 1824, 1825, 1826, 1827, 1151, 1828, 1829, 1830, 1831, 1832, + 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840, 1841, 1842, 1843, 1150, + 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855, + 1856, 1857, 1858, 1859, 1149, 1860, 1861, 1862, 1863, 1864, 1865, 1866, + 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1148, 1876, 1877, + 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, + 1890, 1891, 1147, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, + 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1146, 1908, 1909, 1910, 1911, + 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, + 1145, 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, + 1935, 1936, 1937, 1938, 1939, 1144, 1940, 1941, 1942, 1943, 1944, 1945, + 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1143, 1956, + 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, + 1969, 1970, 1971, 1142, 1141, 1140, 1139, 1138, 1137, 1136, 1135, 1134, + 1133, 1132, 1131, 1130, 1129, 1128, 1127, 1126, 925, 299, 1972, 300, + 1973, 301, 1974, 302, 1975, 303, 1976, 304, 1977, 305, 1978, 306, 1979, + 307, 1980, 308, 1981, 309, 1982, 310, 1983, 311, 1984, 312, 1985, 313, + 1986, 314, 1987, 315, 1988, 316, 1989, 317, 1990, 318, 1991, 319, 1992, + 320, 1993, 321, 1994, 322, 1995, 323, 1996, 324, 1997, 325, 1998, 326, + 1999, 327, 2000, 328, 2001, 329, 2002, 330, 2003, 331, 1044, 2004, 2005, + 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, + 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, + 2030, 2031, 2032, 2033, 2034, 2035, 1043, 2036, 2037, 2038, 2039, 2040, + 2041, 2042, 2043, 2044, 2045, 2046, 2047, 2048, 2049, 2050, 2051, 2052, + 2053, 2054, 2055, 2056, 2057, 2058, 2059, 2060, 2061, 2062, 2063, 2064, + 2065, 2066, 2067, 1042, 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075, + 2076, 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087, + 2088, 2089, 2090, 2091, 2092, 2093, 2094, 2095, 2096, 2097, 2098, 2099, + 1041, 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107, 2108, 2109, 2110, + 2111, 2112, 2113, 2114, 2115, 2116, 2117, 2118, 2119, 2120, 2121, 2122, + 2123, 2124, 2125, 2126, 2127, 2128, 2129, 2130, 2131, 1040, 2132, 2133, + 2134, 2135, 2136, 2137, 2138, 2139, 2140, 2141, 2142, 2143, 2144, 2145, + 2146, 2147, 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2156, 2157, + 2158, 2159, 2160, 2161, 2162, 2163, 1039, 2164, 2165, 2166, 2167, 2168, + 2169, 2170, 2171, 2172, 2173, 2174, 2175, 2176, 2177, 2178, 2179, 2180, + 2181, 2182, 2183, 2184, 2185, 2186, 2187, 2188, 2189, 2190, 2191, 2192, + 2193, 2194, 2195, 1038, 2196, 2197, 2198, 2199, 2200, 2201, 2202, 2203, + 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2213, 2214, 2215, + 2216, 2217, 2218, 2219, 2220, 2221, 2222, 2223, 2224, 2225, 2226, 2227, + 1037, 2228, 2229, 2230, 2231, 2232, 2233, 2234, 2235, 2236, 2237, 2238, + 2239, 2240, 2241, 2242, 2243, 2244, 2245, 2246, 2247, 2248, 2249, 2250, + 2251, 2252, 2253, 2254, 2255, 2256, 2257, 2258, 2259, 1036, 2260, 2261, + 2262, 2263, 2264, 2265, 2266, 2267, 2268, 2269, 2270, 2271, 2272, 2273, + 2274, 2275, 2276, 2277, 2278, 2279, 2280, 2281, 2282, 2283, 2284, 2285, + 2286, 2287, 2288, 2289, 2290, 2291, 1035, 2292, 2293, 2294, 2295, 2296, + 2297, 2298, 2299, 2300, 2301, 2302, 2303, 2304, 2305, 2306, 2307, 2308, + 2309, 2310, 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2318, 2319, 2320, + 2321, 2322, 2323, 1034, 2324, 2325, 2326, 2327, 2328, 2329, 2330, 2331, + 2332, 2333, 2334, 2335, 2336, 2337, 2338, 2339, 2340, 2341, 2342, 2343, + 2344, 2345, 2346, 2347, 2348, 2349, 2350, 2351, 2352, 2353, 2354, 2355, + 1033, 2356, 2357, 2358, 2359, 2360, 2361, 2362, 2363, 2364, 2365, 2366, + 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, + 2379, 2380, 2381, 2382, 2383, 2384, 2385, 2386, 2387, 1032, 2388, 2389, + 2390, 2391, 2392, 2393, 2394, 2395, 2396, 2397, 2398, 2399, 2400, 2401, + 2402, 2403, 2404, 2405, 2406, 2407, 2408, 2409, 2410, 2411, 2412, 2413, + 2414, 2415, 2416, 2417, 2418, 2419, 1031, 2420, 2421, 2422, 2423, 2424, + 2425, 2426, 2427, 2428, 2429, 2430, 2431, 2432, 2433, 2434, 2435, 2436, + 2437, 2438, 2439, 2440, 2441, 2442, 2443, 2444, 2445, 2446, 2447, 2448, + 2449, 2450, 2451, 1030, 2452, 2453, 2454, 2455, 2456, 2457, 2458, 2459, + 2460, 2461, 2462, 2463, 2464, 2465, 2466, 2467, 2468, 2469, 2470, 2471, + 2472, 2473, 2474, 2475, 2476, 2477, 2478, 2479, 2480, 2481, 2482, 2483, + 1029, 2484, 2485, 2486, 2487, 2488, 2489, 2490, 2491, 2492, 2493, 2494, + 2495, 2496, 2497, 2498, 2499, 2500, 2501, 2502, 2503, 2504, 2505, 2506, + 2507, 2508, 2509, 2510, 2511, 2512, 2513, 2514, 2515, 1028, 996, 997, + 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, + 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, + 1022, 1023, 1024, 1025, 1026, 1027, 928, 2516, 2517, 2518, 2519, 2520, + 2521, 2522, 2523, 2524, 2525, 2526, 2527, 2528, 2529, 2530, 1172, 2531, + 2532, 2533, 2534, 2535, 2536, 2537, 2538, 2539, 2540, 2541, 2542, 2543, + 2544, 2545, 1171, 2546, 2547, 2548, 2549, 2550, 2551, 2552, 2553, 2554, + 2555, 2556, 2557, 2558, 2559, 2560, 1170, 2561, 2562, 2563, 2564, 2565, + 2566, 2567, 2568, 2569, 2570, 2571, 2572, 2573, 2574, 2575, 1169, 2576, + 2577, 2578, 2579, 2580, 2581, 2582, 2583, 2584, 2585, 2586, 2587, 2588, + 2589, 2590, 1168, 2591, 2592, 2593, 2594, 2595, 2596, 2597, 2598, 2599, + 2600, 2601, 2602, 2603, 2604, 2605, 1167, 2606, 2607, 2608, 2609, 2610, + 2611, 2612, 2613, 2614, 2615, 2616, 2617, 2618, 2619, 2620, 1166, 2621, + 2622, 2623, 2624, 2625, 2626, 2627, 2628, 2629, 2630, 2631, 2632, 2633, + 2634, 2635, 1165, 2636, 2637, 2638, 2639, 2640, 2641, 2642, 2643, 2644, + 2645, 2646, 2647, 2648, 2649, 2650, 1164, 2651, 2652, 2653, 2654, 2655, + 2656, 2657, 2658, 2659, 2660, 2661, 2662, 2663, 2664, 2665, 1163, 2666, + 2667, 2668, 2669, 2670, 2671, 2672, 2673, 2674, 2675, 2676, 2677, 2678, + 2679, 2680, 1162, 2681, 2682, 2683, 2684, 2685, 2686, 2687, 2688, 2689, + 2690, 2691, 2692, 2693, 2694, 2695, 1161, 2696, 2697, 2698, 2699, 2700, + 2701, 2702, 2703, 2704, 2705, 2706, 2707, 2708, 2709, 2710, 1160, 2711, + 2712, 2713, 2714, 2715, 2716, 2717, 2718, 2719, 2720, 2721, 2722, 2723, + 2724, 2725, 1159, 2726, 2727, 2728, 2729, 2730, 2731, 2732, 2733, 2734, + 2735, 2736, 2737, 2738, 2739, 2740, 1158, 2741, 2742, 2743, 2744, 2745, + 2746, 2747, 2748, 2749, 2750, 2751, 2752, 2753, 2754, 2755, 1157, 332, + 2756, 333, 2757, 334, 2758, 335, 2759, 336, 2760, 337, 2761, 338, 2762, + 339, 2763, 340, 2764, 341, 2765, 342, 2766, 343, 2767, 344, 2768, 345, + 2769, 346, 2770, 347, 2771, 348, 2772, 349, 2773, 350, 2774, 351, 2775, + 352, 2776, 353, 2777, 354, 2778, 355, 2779, 356, 2780, 357, 2781, 358, + 2782, 359, 2783, 360, 2784, 361, 2785, 362, 2786, 363, 2787, 364, 1093, + 2788, 2789, 2790, 2791, 2792, 2793, 2794, 2795, 2796, 2797, 2798, 2799, + 2800, 2801, 2802, 2803, 2804, 2805, 2806, 2807, 2808, 2809, 2810, 2811, + 2812, 2813, 2814, 2815, 2816, 2817, 2818, 2819, 1092, 2820, 2821, 2822, + 2823, 2824, 2825, 2826, 2827, 2828, 2829, 2830, 2831, 2832, 2833, 2834, + 2835, 2836, 2837, 2838, 2839, 2840, 2841, 2842, 2843, 2844, 2845, 2846, + 2847, 2848, 2849, 2850, 2851, 1091, 2852, 2853, 2854, 2855, 2856, 2857, + 2858, 2859, 2860, 2861, 2862, 2863, 2864, 2865, 2866, 2867, 2868, 2869, + 2870, 2871, 2872, 2873, 2874, 2875, 2876, 2877, 2878, 2879, 2880, 2881, + 2882, 2883, 1090, 2884, 2885, 2886, 2887, 2888, 2889, 2890, 2891, 2892, + 2893, 2894, 2895, 2896, 2897, 2898, 2899, 2900, 2901, 2902, 2903, 2904, + 2905, 2906, 2907, 2908, 2909, 2910, 2911, 2912, 2913, 2914, 2915, 1089, + 2916, 2917, 2918, 2919, 2920, 2921, 2922, 2923, 2924, 2925, 2926, 2927, + 2928, 2929, 2930, 2931, 2932, 2933, 2934, 2935, 2936, 2937, 2938, 2939, + 2940, 2941, 2942, 2943, 2944, 2945, 2946, 2947, 1088, 2948, 2949, 2950, + 2951, 2952, 2953, 2954, 2955, 2956, 2957, 2958, 2959, 2960, 2961, 2962, + 2963, 2964, 2965, 2966, 2967, 2968, 2969, 2970, 2971, 2972, 2973, 2974, + 2975, 2976, 2977, 2978, 2979, 1087, 2980, 2981, 2982, 2983, 2984, 2985, + 2986, 2987, 2988, 2989, 2990, 2991, 2992, 2993, 2994, 2995, 2996, 2997, + 2998, 2999, 3000, 3001, 3002, 3003, 3004, 3005, 3006, 3007, 3008, 3009, + 3010, 3011, 1086, 3012, 3013, 3014, 3015, 3016, 3017, 3018, 3019, 3020, + 3021, 3022, 3023, 3024, 3025, 3026, 3027, 3028, 3029, 3030, 3031, 3032, + 3033, 3034, 3035, 3036, 3037, 3038, 3039, 3040, 3041, 3042, 3043, 1085, + 3044, 3045, 3046, 3047, 3048, 3049, 3050, 3051, 3052, 3053, 3054, 3055, + 3056, 3057, 3058, 3059, 3060, 3061, 3062, 3063, 3064, 3065, 3066, 3067, + 3068, 3069, 3070, 3071, 3072, 3073, 3074, 3075, 1084, 3076, 3077, 3078, + 3079, 3080, 3081, 3082, 3083, 3084, 3085, 3086, 3087, 3088, 3089, 3090, + 3091, 3092, 3093, 3094, 3095, 3096, 3097, 3098, 3099, 3100, 3101, 3102, + 3103, 3104, 3105, 3106, 3107, 1083, 3108, 3109, 3110, 3111, 3112, 3113, + 3114, 3115, 3116, 3117, 3118, 3119, 3120, 3121, 3122, 3123, 3124, 3125, + 3126, 3127, 3128, 3129, 3130, 3131, 3132, 3133, 3134, 3135, 3136, 3137, + 3138, 3139, 1082, 3140, 3141, 3142, 3143, 3144, 3145, 3146, 3147, 3148, + 3149, 3150, 3151, 3152, 3153, 3154, 3155, 3156, 3157, 3158, 3159, 3160, + 3161, 3162, 3163, 3164, 3165, 3166, 3167, 3168, 3169, 3170, 3171, 1081, + 3172, 3173, 3174, 3175, 3176, 3177, 3178, 3179, 3180, 3181, 3182, 3183, + 3184, 3185, 3186, 3187, 3188, 3189, 3190, 3191, 3192, 3193, 3194, 3195, + 3196, 3197, 3198, 3199, 3200, 3201, 3202, 3203, 1080, 3204, 3205, 3206, + 3207, 3208, 3209, 3210, 3211, 3212, 3213, 3214, 3215, 3216, 3217, 3218, + 3219, 3220, 3221, 3222, 3223, 3224, 3225, 3226, 3227, 3228, 3229, 3230, + 3231, 3232, 3233, 3234, 3235, 1079, 3236, 3237, 3238, 3239, 3240, 3241, + 3242, 3243, 3244, 3245, 3246, 3247, 3248, 3249, 3250, 3251, 3252, 3253, + 3254, 3255, 3256, 3257, 3258, 3259, 3260, 3261, 3262, 3263, 3264, 3265, + 3266, 3267, 1078, 3268, 3269, 3270, 3271, 3272, 3273, 3274, 3275, 3276, + 3277, 3278, 3279, 3280, 3281, 3282, 3283, 3284, 3285, 3286, 3287, 3288, + 3289, 3290, 3291, 3292, 3293, 3294, 3295, 3296, 3297, 3298, 3299, 1077, + 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, + 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, + 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 929, 3300, 3301, 3302, + 3303, 3304, 3305, 3306, 3307, 3308, 3309, 3310, 3311, 3312, 3313, 3314, + 3315, 1187, 3316, 3317, 3318, 3319, 3320, 3321, 3322, 3323, 3324, 3325, + 3326, 3327, 3328, 3329, 3330, 3331, 1186, 3332, 3333, 3334, 3335, 3336, + 3337, 3338, 3339, 3340, 3341, 3342, 3343, 3344, 3345, 3346, 3347, 1185, + 3348, 3349, 3350, 3351, 3352, 3353, 3354, 3355, 3356, 3357, 3358, 3359, + 3360, 3361, 3362, 3363, 1184, 3364, 3365, 3366, 3367, 3368, 3369, 3370, + 3371, 3372, 3373, 3374, 3375, 3376, 3377, 3378, 3379, 1183, 3380, 3381, + 3382, 3383, 3384, 3385, 3386, 3387, 3388, 3389, 3390, 3391, 3392, 3393, + 3394, 3395, 1182, 3396, 3397, 3398, 3399, 3400, 3401, 3402, 3403, 3404, + 3405, 3406, 3407, 3408, 3409, 3410, 3411, 1181, 3412, 3413, 3414, 3415, + 3416, 3417, 3418, 3419, 3420, 3421, 3422, 3423, 3424, 3425, 3426, 3427, + 1180, 3428, 3429, 3430, 3431, 3432, 3433, 3434, 3435, 3436, 3437, 3438, + 3439, 3440, 3441, 3442, 3443, 1179, 3444, 3445, 3446, 3447, 3448, 3449, + 3450, 3451, 3452, 3453, 3454, 3455, 3456, 3457, 3458, 3459, 1178, 3460, + 3461, 3462, 3463, 3464, 3465, 3466, 3467, 3468, 3469, 3470, 3471, 3472, + 3473, 3474, 3475, 1177, 3476, 3477, 3478, 3479, 3480, 3481, 3482, 3483, + 3484, 3485, 3486, 3487, 3488, 3489, 3490, 3491, 1176, 3492, 3493, 3494, + 3495, 3496, 3497, 3498, 3499, 3500, 3501, 3502, 3503, 3504, 3505, 3506, + 3507, 1175, 3508, 3509, 3510, 3511, 3512, 3513, 3514, 3515, 3516, 3517, + 3518, 3519, 3520, 3521, 3522, 3523, 1174, 3524, 3525, 3526, 3527, 3528, + 3529, 3530, 3531, 3532, 3533, 3534, 3535, 3536, 3537, 3538, 3539, 1173, + 365, 3540, 366, 3541, 367, 3542, 368, 3543, 369, 3544, 370, 3545, 371, + 3546, 372, 3547, 373, 3548, 374, 3549, 375, 3550, 376, 3551, 377, 3552, + 378, 3553, 379, 3554, 380, 3555, 381, 3556, 382, 3557, 383, 3558, 384, + 3559, 385, 3560, 386, 3561, 387, 3562, 388, 3563, 389, 3564, 390, 3565, + 391, 3566, 392, 3567, 393, 3568, 394, 3569, 395, 3570, 396, 3571, 3572, + 3573, 3574, 3575, 3576, 3577, 3578, 3579, 3580, 3581, 3582, 3583, 3584, + 3585, 3586, 3587, 3588, 3589, 3590, 3591, 3592, 3593, 3594, 3595, 3596, + 3597, 3598, 3599, 3600, 3601, 3602, 3603, 3604, 3605, 3606, 3607, 3608, + 3609, 3610, 3611, 3612, 3613, 3614, 3615, 3616, 3617, 3618, 3619, 3620, + 3621, 3622, 3623, 3624, 3625, 3626, 3627, 3628, 3629, 3630, 3631, 3632, + 3633, 3634, 3635, 3636, 3637, 3638, 3639, 3640, 3641, 3642, 3643, 3644, + 3645, 3646, 3647, 3648, 3649, 3650, 3651, 3652, 3653, 3654, 3655, 3656, + 3657, 3658, 3659, 3660, 3661, 3662, 3663, 3664, 3665, 3666, 3667, 3668, + 3669, 3670, 3671, 3672, 3673, 3674, 3675, 3676, 3677, 3678, 3679, 3680, + 3681, 3682, 3683, 3684, 3685, 3686, 3687, 3688, 3689, 3690, 3691, 3692, + 3693, 3694, 3695, 3696, 3697, 3698, 3699, 3700, 3701, 3702, 3703, 3704, + 3705, 3706, 3707, 3708, 3709, 3710, 3711, 3712, 3713, 3714, 3715, 3716, + 3717, 3718, 3719, 3720, 3721, 3722, 3723, 3724, 3725, 3726, 3727, 3728, + 3729, 3730, 3731, 3732, 3733, 3734, 3735, 3736, 3737, 3738, 3739, 3740, + 3741, 3742, 3743, 3744, 3745, 3746, 3747, 3748, 3749, 3750, 3751, 3752, + 3753, 3754, 3755, 3756, 3757, 3758, 3759, 3760, 3761, 3762, 3763, 3764, + 3765, 3766, 3767, 3768, 3769, 3770, 3771, 3772, 3773, 3774, 3775, 3776, + 3777, 3778, 3779, 3780, 3781, 3782, 3783, 3784, 3785, 3786, 3787, 3788, + 3789, 3790, 3791, 3792, 3793, 3794, 3795, 3796, 3797, 3798, 3799, 3800, + 3801, 3802, 3803, 3804, 3805, 3806, 3807, 3808, 3809, 3810, 3811, 3812, + 3813, 3814, 3815, 3816, 3817, 3818, 3819, 3820, 3821, 3822, 3823, 3824, + 3825, 3826, 3827, 3828, 3829, 3830, 3831, 3832, 3833, 3834, 3835, 3836, + 3837, 3838, 3839, 3840, 3841, 3842, 3843, 3844, 3845, 3846, 3847, 3848, + 3849, 3850, 3851, 3852, 3853, 3854, 3855, 3856, 3857, 3858, 3859, 3860, + 3861, 3862, 3863, 3864, 3865, 3866, 3867, 3868, 3869, 3870, 3871, 3872, + 3873, 3874, 3875, 3876, 3877, 3878, 3879, 3880, 3881, 3882, 3883, 3884, + 3885, 3886, 3887, 3888, 3889, 3890, 3891, 3892, 3893, 3894, 3895, 3896, + 3897, 3898, 3899, 3900, 3901, 3902, 3903, 3904, 3905, 3906, 3907, 3908, + 3909, 3910, 3911, 3912, 3913, 3914, 3915, 3916, 3917, 3918, 3919, 3920, + 3921, 3922, 3923, 3924, 3925, 3926, 3927, 3928, 3929, 3930, 3931, 3932, + 3933, 3934, 3935, 3936, 3937, 3938, 3939, 3940, 3941, 3942, 3943, 3944, + 3945, 3946, 3947, 3948, 3949, 3950, 3951, 3952, 3953, 3954, 3955, 3956, + 3957, 3958, 3959, 3960, 3961, 3962, 3963, 3964, 3965, 3966, 3967, 3968, + 3969, 3970, 3971, 3972, 3973, 3974, 3975, 3976, 3977, 3978, 3979, 3980, + 3981, 3982, 3983, 3984, 3985, 3986, 3987, 3988, 3989, 3990, 3991, 3992, + 3993, 3994, 3995, 3996, 3997, 3998, 3999, 4000, 4001, 4002, 4003, 4004, + 4005, 4006, 4007, 4008, 4009, 4010, 4011, 4012, 4013, 4014, 4015, 4016, + 4017, 4018, 4019, 4020, 4021, 4022, 4023, 4024, 4025, 4026, 4027, 4028, + 4029, 4030, 4031, 4032, 4033, 4034, 4035, 4036, 4037, 4038, 4039, 4040, + 4041, 4042, 4043, 4044, 4045, 4046, 4047, 4048, 4049, 4050, 4051, 4052, + 4053, 4054, 4055, 4056, 4057, 4058, 4059, 4060, 4061, 4062, 4063, 4064, + 4065, 4066, 4067, 4068, 4069, 4070, 4071, 4072, 4073, 4074, 4075, 4076, + 4077, 4078, 4079, 4080, 4081, 4082, 4083, 1094, 1095, 1096, 1097, 1098, + 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, + 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, + 1123, 1124, 1125, 4084, 4085, 4086, 4087, 4088, 4089, 4090, 4091, 4092, + 4093, 4094, 4095, 4096, 4097, 4098, 4099, 4100, 4101, 4102, 4103, 4104, + 4105, 4106, 4107, 4108, 4109, 4110, 4111, 4112, 4113, 4114, 4115, 4116, + 4117, 4118, 4119, 4120, 4121, 4122, 4123, 4124, 4125, 4126, 4127, 4128, + 4129, 4130, 4131, 4132, 4133, 4134, 4135, 4136, 4137, 4138, 4139, 4140, + 4141, 4142, 4143, 4144, 4145, 4146, 4147, 4148, 4149, 4150, 4151, 4152, + 4153, 4154, 4155, 4156, 4157, 4158, 4159, 4160, 4161, 4162, 4163, 4164, + 4165, 4166, 4167, 4168, 4169, 4170, 4171, 4172, 4173, 4174, 4175, 4176, + 4177, 4178, 4179, 4180, 4181, 4182, 4183, 4184, 4185, 4186, 4187, 4188, + 4189, 4190, 4191, 4192, 4193, 4194, 4195, 4196, 4197, 4198, 4199, 4200, + 4201, 4202, 4203, 4204, 4205, 4206, 4207, 4208, 4209, 4210, 4211, 4212, + 4213, 4214, 4215, 4216, 4217, 4218, 4219, 4220, 4221, 4222, 4223, 4224, + 4225, 4226, 4227, 4228, 4229, 4230, 4231, 4232, 4233, 4234, 4235, 4236, + 4237, 4238, 4239, 4240, 4241, 4242, 4243, 4244, 4245, 4246, 4247, 4248, + 4249, 4250, 4251, 4252, 4253, 4254, 4255, 4256, 4257, 4258, 4259, 4260, + 4261, 4262, 4263, 4264, 4265, 4266, 4267, 4268, 4269, 4270, 4271, 4272, + 4273, 4274, 4275, 4276, 4277, 4278, 4279, 4280, 4281, 4282, 4283, 4284, + 4285, 4286, 4287, 4288, 4289, 4290, 4291, 4292, 4293, 4294, 4295, 4296, + 4297, 4298, 4299, 4300, 4301, 4302, 4303, 4304, 4305, 4306, 4307, 4308, + 4309, 4310, 4311, 4312, 4313, 4314, 4315, 4316, 4317, 4318, 4319, 4320, + 4321, 4322, 4323, 401, 397, 402, 398, 403, 399, 404, 400, 2, 1, 405, 406, + 407, 408, 3, 409, 410, 411, 412, 4, 413, 414, 415, 416, 5, 417, 418, 419, + 420, 6, 421, 422, 423, 424, 7, 425, 426, 427, 428, 8, 429, 430, 431, 432, + 9, 433, 434, 435, 436, 10, 437, 438, 439, 440, 11, 441, 442, 443, 444, + 12, 445, 446, 447, 448, 13, 449, 450, 451, 452, 14, 453, 454, 455, 456, + 15, 457, 458, 459, 460, 16, 461, 462, 463, 464, 17, 465, 466, 467, 468, + 18, 469, 470, 471, 472, 19, 473, 474, 475, 476, 20, 477, 478, 479, 480, + 21, 481, 482, 483, 484, 22, 485, 486, 487, 488, 23, 489, 490, 491, 492, + 24, 493, 494, 495, 496, 25, 497, 498, 499, 500, 26, 501, 502, 503, 504, + 27, 505, 506, 507, 508, 28, 509, 510, 511, 512, 29, 513, 514, 515, 516, + 30, 517, 518, 519, 520, 31, 521, 522, 523, 524, 32, 525, 526, 527, 528, + 33, 529, 530, 531, 532, 34, 533, 534, 535, 536, 35, 537, 538, 539, 540, + 36, 541, 542, 543, 544, 37, 545, 546, 547, 548, 38, 549, 550, 551, 552, + 39, 553, 554, 555, 556, 40, 557, 558, 559, 560, 41, 561, 562, 563, 564, + 42, 565, 566, 567, 568, 43, 569, 570, 571, 572, 44, 573, 574, 575, 576, + 45, 577, 578, 579, 580, 46, 581, 582, 583, 584, 47, 585, 586, 587, 588, + 48, 589, 590, 591, 592, 49, 593, 594, 595, 596, 50, 597, 598, 599, 600, + 51, 601, 602, 603, 604, 52, 605, 606, 607, 608, 53, 609, 610, 611, 612, + 54, 613, 614, 615, 616, 55, 617, 618, 619, 620, 56, 621, 622, 623, 624, + 57, 625, 626, 627, 628, 58, 629, 630, 631, 632, 59, 633, 634, 635, 636, + 60, 637, 638, 639, 640, 61, 641, 642, 643, 644, 62, 645, 646, 647, 648, + 63, 649, 650, 651, 652, 64, 653, 654, 655, 656, 65, 657, 658, 659, 660, + 66, 661, 662, 663, 664, 67, 665, 666, 667, 668, 68, 669, 670, 671, 672, + 69, 673, 674, 675, 676, 70, 677, 678, 679, 680, 71, 681, 682, 683, 684, + 72, 685, 686, 687, 688, 73, 689, 690, 691, 692, 74, 693, 694, 695, 696, + 75, 697, 698, 699, 700, 76, 701, 702, 703, 704, 77, 705, 706, 707, 708, + 78, 709, 710, 711, 712, 79, 713, 714, 715, 716, 80, 717, 718, 719, 720, + 81, 721, 722, 723, 724, 82, 725, 726, 727, 728, 83, 729, 730, 731, 732, + 84, 733, 734, 735, 736, 85, 737, 738, 739, 740, 86, 741, 742, 743, 744, + 87, 745, 746, 747, 748, 88, 749, 750, 751, 752, 89, 753, 754, 755, 756, + 90, 757, 758, 759, 760, 91, 761, 762, 763, 764, 92, 765, 766, 767, 768, + 93, 769, 770, 771, 772, 94, 773, 774, 775, 776, 95, 777, 778, 779, 780, + 96, 781, 782, 783, 784, 97, 785, 786, 787, 788, 98, 789, 790, 791, 792, + 99, 793, 794, 795, 796, 100, 797, 798, 799, 800, 101, 801, 802, 803, 804, + 102, 805, 806, 807, 808, 103, 809, 810, 811, 812, 104, 813, 814, 815, + 816, 105, 817, 818, 819, 820, 106, 821, 822, 823, 824, 107, 825, 826, + 827, 828, 108, 829, 830, 831, 832, 109, 833, 834, 835, 836, 110, 837, + 838, 839, 840, 111, 841, 842, 843, 844, 112, 845, 846, 847, 848, 113, + 849, 850, 851, 852, 114, 853, 854, 855, 856, 115, 857, 858, 859, 860, + 116, 861, 862, 863, 864, 117, 865, 866, 867, 868, 118, 869, 870, 871, + 872, 119, 873, 874, 875, 876, 120, 877, 878, 879, 880, 121, 881, 882, + 883, 884, 122, 885, 886, 887, 888, 123, 889, 890, 891, 892, 124, 893, + 894, 895, 896, 125, 897, 898, 899, 900, 126, 901, 902, 903, 904, 127, + 905, 906, 907, 908, 128, 909, 910, 911, 912, 129, 913, 914, 915, 916, + 130, 917, 918, 919, 920, 131, 921, 922, 923, 924, 132, 134, 133, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 4479, 4456, 4480, 4457, 4481, 4458, 4482, 4459, 4483, + 4460, 4484, 4461, 4485, 4462, 4486, 4463, 4487, 4464, 4488, 4465, 4489, + 4466, 4490, 4467, 4491, 4468, 4492, 4469, 4493, 4470, 4494, 4471, 4495, + 4472, 4496, 4473, 4497, 4474, 4498, 4475, 4499, 4476, 4500, 4477, 4501, + 4478, 4438, 4439, 4502, 4503, 4504, 4505, 4506, 4507, 4508, 4509, 4510, + 4511, 4512, 4513, 4514, 4515, 4516, 4517, 4518, 4519, 4520, 4521, 4522, + 4523, 4524, 4437, 4525, 4526, 4527, 4528, 4529, 4530, 4531, 4532, 4533, + 4534, 4535, 4536, 4537, 4538, 4539, 4540, 4541, 4542, 4543, 4544, 4545, + 4546, 4547, 4436, 4548, 4549, 4550, 4551, 4552, 4553, 4554, 4555, 4556, + 4557, 4558, 4559, 4560, 4561, 4562, 4563, 4564, 4565, 4566, 4567, 4568, + 4569, 4570, 4435, 4571, 4572, 4573, 4574, 4575, 4576, 4577, 4578, 4579, + 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4591, + 4592, 4593, 4434, 4594, 4595, 4596, 4597, 4598, 4599, 4600, 4601, 4602, + 4603, 4604, 4605, 4606, 4607, 4608, 4609, 4610, 4611, 4612, 4613, 4614, + 4615, 4616, 4433, 4617, 4618, 4619, 4620, 4621, 4622, 4623, 4624, 4625, + 4626, 4627, 4628, 4629, 4630, 4631, 4632, 4633, 4634, 4635, 4636, 4637, + 4638, 4639, 4432, 4640, 4641, 4642, 4643, 4644, 4645, 4646, 4647, 4648, + 4649, 4650, 4651, 4652, 4653, 4654, 4655, 4656, 4657, 4658, 4659, 4660, + 4661, 4662, 4431, 4663, 4664, 4665, 4666, 4667, 4668, 4669, 4670, 4671, + 4672, 4673, 4674, 4675, 4676, 4677, 4678, 4679, 4680, 4681, 4682, 4683, + 4684, 4685, 4430, 4686, 4687, 4688, 4689, 4690, 4691, 4692, 4693, 4694, + 4695, 4696, 4697, 4698, 4699, 4700, 4701, 4702, 4703, 4704, 4705, 4706, + 4707, 4708, 4429, 4709, 4710, 4711, 4712, 4713, 4714, 4715, 4716, 4717, + 4718, 4719, 4720, 4721, 4722, 4723, 4724, 4725, 4726, 4727, 4728, 4729, + 4730, 4731, 4428, 4732, 4733, 4734, 4735, 4736, 4737, 4738, 4739, 4740, + 4741, 4742, 4743, 4744, 4745, 4746, 4747, 4748, 4749, 4750, 4751, 4752, + 4753, 4754, 4427, 4755, 4756, 4757, 4758, 4759, 4760, 4761, 4762, 4763, + 4764, 4765, 4766, 4767, 4768, 4769, 4770, 4771, 4772, 4773, 4774, 4775, + 4776, 4777, 4426, 4778, 4779, 4780, 4781, 4782, 4783, 4784, 4785, 4786, + 4787, 4788, 4789, 4790, 4791, 4792, 4793, 4794, 4795, 4796, 4797, 4798, + 4799, 4800, 4425, 4801, 4802, 4803, 4804, 4805, 4806, 4807, 4808, 4809, + 4810, 4811, 4812, 4813, 4814, 4815, 4816, 4817, 4818, 4819, 4820, 4821, + 4822, 4823, 4424, 4824, 4825, 4826, 4827, 4828, 4829, 4830, 4831, 4832, + 4833, 4834, 4835, 4836, 4837, 4838, 4839, 4840, 4841, 4842, 4843, 4844, + 4845, 4846, 4391, 4847, 4848, 4849, 4850, 4851, 4852, 4853, 4854, 4855, + 4856, 4857, 4858, 4859, 4860, 4861, 4862, 4863, 4864, 4865, 4866, 4867, + 4868, 4869, 4423, 4870, 4871, 4872, 4873, 4874, 4875, 4876, 4877, 4878, + 4879, 4880, 4881, 4882, 4883, 4884, 4885, 4886, 4887, 4888, 4889, 4890, + 4891, 4892, 4422, 4893, 4894, 4895, 4896, 4897, 4898, 4899, 4900, 4901, + 4902, 4903, 4904, 4905, 4906, 4907, 4908, 4909, 4910, 4911, 4912, 4913, + 4914, 4915, 4421, 4916, 4917, 4918, 4919, 4920, 4921, 4922, 4923, 4924, + 4925, 4926, 4927, 4928, 4929, 4930, 4931, 4932, 4933, 4934, 4935, 4936, + 4937, 4938, 4420, 4939, 4940, 4941, 4942, 4943, 4944, 4945, 4946, 4947, + 4948, 4949, 4950, 4951, 4952, 4953, 4954, 4955, 4956, 4957, 4958, 4959, + 4960, 4961, 4419, 4962, 4963, 4964, 4965, 4966, 4967, 4968, 4969, 4970, + 4971, 4972, 4973, 4974, 4975, 4976, 4977, 4978, 4979, 4980, 4981, 4982, + 4983, 4984, 4418, 4985, 4986, 4987, 4988, 4989, 4990, 4991, 4992, 4993, + 4994, 4995, 4996, 4997, 4998, 4999, 5000, 5001, 5002, 5003, 5004, 5005, + 5006, 5007, 4417, 5008, 5009, 5010, 5011, 5012, 5013, 5014, 5015, 5016, + 5017, 5018, 5019, 5020, 5021, 5022, 5023, 5024, 5025, 5026, 5027, 5028, + 5029, 5030, 4416, 5031, 5032, 5033, 5034, 5035, 5036, 5037, 5038, 5039, + 5040, 5041, 5042, 5043, 5044, 5045, 5046, 5047, 5048, 5049, 5050, 5051, + 5052, 5053, 4415, 5054, 5055, 5056, 5057, 5058, 5059, 5060, 5061, 5062, + 5063, 5064, 5065, 5066, 5067, 5068, 5069, 5070, 5071, 5072, 5073, 5074, + 5075, 5076, 4414, 5077, 5078, 5079, 5080, 5081, 5082, 5083, 5084, 5085, + 5086, 5087, 5088, 5089, 5090, 5091, 5092, 5093, 5094, 5095, 5096, 5097, + 5098, 5099, 4413, 5100, 5101, 5102, 5103, 5104, 5105, 5106, 5107, 5108, + 5109, 5110, 5111, 5112, 5113, 5114, 5115, 5116, 5117, 5118, 5119, 5120, + 5121, 5122, 4412, 5123, 5124, 5125, 5126, 5127, 5128, 5129, 5130, 5131, + 5132, 5133, 5134, 5135, 5136, 5137, 5138, 5139, 5140, 5141, 5142, 5143, + 5144, 5145, 4411, 5146, 5147, 5148, 5149, 5150, 5151, 5152, 5153, 5154, + 5155, 5156, 5157, 5158, 5159, 5160, 5161, 5162, 5163, 5164, 5165, 5166, + 5167, 5168, 4410, 5169, 5170, 5171, 5172, 5173, 5174, 5175, 5176, 5177, + 5178, 5179, 5180, 5181, 5182, 5183, 5184, 5185, 5186, 5187, 5188, 5189, + 5190, 5191, 4409, 5192, 5193, 5194, 5195, 5196, 5197, 5198, 5199, 5200, + 5201, 5202, 5203, 5204, 5205, 5206, 5207, 5208, 5209, 5210, 5211, 5212, + 5213, 5214, 4408, 5215, 5216, 5217, 5218, 5219, 5220, 5221, 5222, 5223, + 5224, 5225, 5226, 5227, 5228, 5229, 5230, 5231, 5232, 5233, 5234, 5235, + 5236, 5237, 4407, 5238, 5239, 5240, 5241, 5242, 5243, 5244, 5245, 5246, + 5247, 5248, 5249, 5250, 5251, 5252, 5253, 5254, 5255, 5256, 5257, 5258, + 5259, 5260, 4406, 5261, 5262, 5263, 5264, 5265, 5266, 5267, 5268, 5269, + 5270, 5271, 5272, 5273, 5274, 5275, 5276, 5277, 5278, 5279, 5280, 5281, + 5282, 5283, 4405, 5284, 5285, 5286, 5287, 5288, 5289, 5290, 5291, 5292, + 5293, 5294, 5295, 5296, 5297, 5298, 5299, 5300, 5301, 5302, 5303, 5304, + 5305, 5306, 4404, 5307, 5308, 5309, 5310, 5311, 5312, 5313, 5314, 5315, + 5316, 5317, 5318, 5319, 5320, 5321, 5322, 5323, 5324, 5325, 5326, 5327, + 5328, 5329, 4403, 5330, 5331, 5332, 5333, 5334, 5335, 5336, 5337, 5338, + 5339, 5340, 5341, 5342, 5343, 5344, 5345, 5346, 5347, 5348, 5349, 5350, + 5351, 5352, 4402, 5353, 5354, 5355, 5356, 5357, 5358, 5359, 5360, 5361, + 5362, 5363, 5364, 5365, 5366, 5367, 5368, 5369, 5370, 5371, 5372, 5373, + 5374, 5375, 4401, 5376, 5377, 5378, 5379, 5380, 5381, 5382, 5383, 5384, + 5385, 5386, 5387, 5388, 5389, 5390, 5391, 5392, 5393, 5394, 5395, 5396, + 5397, 5398, 4400, 5399, 5400, 5401, 5402, 5403, 5404, 5405, 5406, 5407, + 5408, 5409, 5410, 5411, 5412, 5413, 5414, 5415, 5416, 5417, 5418, 5419, + 5420, 5421, 4399, 5422, 5423, 5424, 5425, 5426, 5427, 5428, 5429, 5430, + 5431, 5432, 5433, 5434, 5435, 5436, 5437, 5438, 5439, 5440, 5441, 5442, + 5443, 5444, 4398, 5445, 5446, 5447, 5448, 5449, 5450, 5451, 5452, 5453, + 5454, 5455, 5456, 5457, 5458, 5459, 5460, 5461, 5462, 5463, 5464, 5465, + 5466, 5467, 4397, 5468, 5469, 5470, 5471, 5472, 5473, 5474, 5475, 5476, + 5477, 5478, 5479, 5480, 5481, 5482, 5483, 5484, 5485, 5486, 5487, 5488, + 5489, 5490, 4396, 5491, 5492, 5493, 5494, 5495, 5496, 5497, 5498, 5499, + 5500, 5501, 5502, 5503, 5504, 5505, 5506, 5507, 5508, 5509, 5510, 5511, + 5512, 5513, 4395, 5514, 5515, 5516, 5517, 5518, 5519, 5520, 5521, 5522, + 5523, 5524, 5525, 5526, 5527, 5528, 5529, 5530, 5531, 5532, 5533, 5534, + 5535, 5536, 4394, 5537, 5538, 5539, 5540, 5541, 5542, 5543, 5544, 5545, + 5546, 5547, 5548, 5549, 5550, 5551, 5552, 5553, 5554, 5555, 5556, 5557, + 5558, 5559, 4393, 5560, 5561, 5562, 5563, 5564, 5565, 5566, 5567, 5568, + 5569, 5570, 5571, 5572, 5573, 5574, 5575, 5576, 5577, 5578, 5579, 5580, + 5581, 5582, 4392, 5583, 5584, 5585, 5586, 5587, 5588, 5589, 5590, 5591, + 5592, 5593, 5594, 5595, 5596, 5597, 5598, 5599, 5600, 5601, 5602, 5603, + 5604, 5605, 4358, 5606, 5607, 5608, 5609, 5610, 5611, 5612, 5613, 5614, + 5615, 5616, 5617, 5618, 5619, 5620, 5621, 5622, 5623, 5624, 5625, 5626, + 5627, 5628, 4390, 5629, 5630, 5631, 5632, 5633, 5634, 5635, 5636, 5637, + 5638, 5639, 5640, 5641, 5642, 5643, 5644, 5645, 5646, 5647, 5648, 5649, + 5650, 5651, 4389, 5652, 5653, 5654, 5655, 5656, 5657, 5658, 5659, 5660, + 5661, 5662, 5663, 5664, 5665, 5666, 5667, 5668, 5669, 5670, 5671, 5672, + 5673, 5674, 4388, 5675, 5676, 5677, 5678, 5679, 5680, 5681, 5682, 5683, + 5684, 5685, 5686, 5687, 5688, 5689, 5690, 5691, 5692, 5693, 5694, 5695, + 5696, 5697, 4387, 5698, 5699, 5700, 5701, 5702, 5703, 5704, 5705, 5706, + 5707, 5708, 5709, 5710, 5711, 5712, 5713, 5714, 5715, 5716, 5717, 5718, + 5719, 5720, 4386, 5721, 5722, 5723, 5724, 5725, 5726, 5727, 5728, 5729, + 5730, 5731, 5732, 5733, 5734, 5735, 5736, 5737, 5738, 5739, 5740, 5741, + 5742, 5743, 4385, 5744, 5745, 5746, 5747, 5748, 5749, 5750, 5751, 5752, + 5753, 5754, 5755, 5756, 5757, 5758, 5759, 5760, 5761, 5762, 5763, 5764, + 5765, 5766, 4384, 5767, 5768, 5769, 5770, 5771, 5772, 5773, 5774, 5775, + 5776, 5777, 5778, 5779, 5780, 5781, 5782, 5783, 5784, 5785, 5786, 5787, + 5788, 5789, 4383, 5790, 5791, 5792, 5793, 5794, 5795, 5796, 5797, 5798, + 5799, 5800, 5801, 5802, 5803, 5804, 5805, 5806, 5807, 5808, 5809, 5810, + 5811, 5812, 4382, 5813, 5814, 5815, 5816, 5817, 5818, 5819, 5820, 5821, + 5822, 5823, 5824, 5825, 5826, 5827, 5828, 5829, 5830, 5831, 5832, 5833, + 5834, 5835, 4381, 5836, 5837, 5838, 5839, 5840, 5841, 5842, 5843, 5844, + 5845, 5846, 5847, 5848, 5849, 5850, 5851, 5852, 5853, 5854, 5855, 5856, + 5857, 5858, 4380, 5859, 5860, 5861, 5862, 5863, 5864, 5865, 5866, 5867, + 5868, 5869, 5870, 5871, 5872, 5873, 5874, 5875, 5876, 5877, 5878, 5879, + 5880, 5881, 4379, 5882, 5883, 5884, 5885, 5886, 5887, 5888, 5889, 5890, + 5891, 5892, 5893, 5894, 5895, 5896, 5897, 5898, 5899, 5900, 5901, 5902, + 5903, 5904, 4378, 5905, 5906, 5907, 5908, 5909, 5910, 5911, 5912, 5913, + 5914, 5915, 5916, 5917, 5918, 5919, 5920, 5921, 5922, 5923, 5924, 5925, + 5926, 5927, 4377, 5928, 5929, 5930, 5931, 5932, 5933, 5934, 5935, 5936, + 5937, 5938, 5939, 5940, 5941, 5942, 5943, 5944, 5945, 5946, 5947, 5948, + 5949, 5950, 4376, 5951, 5952, 5953, 5954, 5955, 5956, 5957, 5958, 5959, + 5960, 5961, 5962, 5963, 5964, 5965, 5966, 5967, 5968, 5969, 5970, 5971, + 5972, 5973, 4375, 5974, 5975, 5976, 5977, 5978, 5979, 5980, 5981, 5982, + 5983, 5984, 5985, 5986, 5987, 5988, 5989, 5990, 5991, 5992, 5993, 5994, + 5995, 5996, 4374, 5997, 5998, 5999, 6000, 6001, 6002, 6003, 6004, 6005, + 6006, 6007, 6008, 6009, 6010, 6011, 6012, 6013, 6014, 6015, 6016, 6017, + 6018, 6019, 4373, 6020, 6021, 6022, 6023, 6024, 6025, 6026, 6027, 6028, + 6029, 6030, 6031, 6032, 6033, 6034, 6035, 6036, 6037, 6038, 6039, 6040, + 6041, 6042, 4372, 6043, 6044, 6045, 6046, 6047, 6048, 6049, 6050, 6051, + 6052, 6053, 6054, 6055, 6056, 6057, 6058, 6059, 6060, 6061, 6062, 6063, + 6064, 6065, 4371, 6066, 6067, 6068, 6069, 6070, 6071, 6072, 6073, 6074, + 6075, 6076, 6077, 6078, 6079, 6080, 6081, 6082, 6083, 6084, 6085, 6086, + 6087, 6088, 4370, 6089, 6090, 6091, 6092, 6093, 6094, 6095, 6096, 6097, + 6098, 6099, 6100, 6101, 6102, 6103, 6104, 6105, 6106, 6107, 6108, 6109, + 6110, 6111, 4369, 6112, 6113, 6114, 6115, 6116, 6117, 6118, 6119, 6120, + 6121, 6122, 6123, 6124, 6125, 6126, 6127, 6128, 6129, 6130, 6131, 6132, + 6133, 6134, 4368, 6135, 6136, 6137, 6138, 6139, 6140, 6141, 6142, 6143, + 6144, 6145, 6146, 6147, 6148, 6149, 6150, 6151, 6152, 6153, 6154, 6155, + 6156, 6157, 4367, 6158, 6159, 6160, 6161, 6162, 6163, 6164, 6165, 6166, + 6167, 6168, 6169, 6170, 6171, 6172, 6173, 6174, 6175, 6176, 6177, 6178, + 6179, 6180, 4366, 6181, 6182, 6183, 6184, 6185, 6186, 6187, 6188, 6189, + 6190, 6191, 6192, 6193, 6194, 6195, 6196, 6197, 6198, 6199, 6200, 6201, + 6202, 6203, 4365, 6204, 6205, 6206, 6207, 6208, 6209, 6210, 6211, 6212, + 6213, 6214, 6215, 6216, 6217, 6218, 6219, 6220, 6221, 6222, 6223, 6224, + 6225, 6226, 4364, 6227, 6228, 6229, 6230, 6231, 6232, 6233, 6234, 6235, + 6236, 6237, 6238, 6239, 6240, 6241, 6242, 6243, 6244, 6245, 6246, 6247, + 6248, 6249, 4363, 6250, 6251, 6252, 6253, 6254, 6255, 6256, 6257, 6258, + 6259, 6260, 6261, 6262, 6263, 6264, 6265, 6266, 6267, 6268, 6269, 6270, + 6271, 6272, 4362, 6273, 6274, 6275, 6276, 6277, 6278, 6279, 6280, 6281, + 6282, 6283, 6284, 6285, 6286, 6287, 6288, 6289, 6290, 6291, 6292, 6293, + 6294, 6295, 4361, 6296, 6297, 6298, 6299, 6300, 6301, 6302, 6303, 6304, + 6305, 6306, 6307, 6308, 6309, 6310, 6311, 6312, 6313, 6314, 6315, 6316, + 6317, 6318, 4360, 6319, 6320, 6321, 6322, 6323, 6324, 6325, 6326, 6327, + 6328, 6329, 6330, 6331, 6332, 6333, 6334, 6335, 6336, 6337, 6338, 6339, + 6340, 6341, 4359, 6342, 6343, 6344, 6345, 6346, 6347, 6348, 6349, 6350, + 6351, 6352, 6353, 6354, 6355, 6356, 6357, 6358, 6359, 6360, 6361, 6362, + 6363, 6364, 4325, 6365, 6366, 6367, 6368, 6369, 6370, 6371, 6372, 6373, + 6374, 6375, 6376, 6377, 6378, 6379, 6380, 6381, 6382, 6383, 6384, 6385, + 6386, 6387, 4357, 6388, 6389, 6390, 6391, 6392, 6393, 6394, 6395, 6396, + 6397, 6398, 6399, 6400, 6401, 6402, 6403, 6404, 6405, 6406, 6407, 6408, + 6409, 6410, 4356, 6411, 6412, 6413, 6414, 6415, 6416, 6417, 6418, 6419, + 6420, 6421, 6422, 6423, 6424, 6425, 6426, 6427, 6428, 6429, 6430, 6431, + 6432, 6433, 4355, 6434, 6435, 6436, 6437, 6438, 6439, 6440, 6441, 6442, + 6443, 6444, 6445, 6446, 6447, 6448, 6449, 6450, 6451, 6452, 6453, 6454, + 6455, 6456, 4354, 6457, 6458, 6459, 6460, 6461, 6462, 6463, 6464, 6465, + 6466, 6467, 6468, 6469, 6470, 6471, 6472, 6473, 6474, 6475, 6476, 6477, + 6478, 6479, 4353, 6480, 6481, 6482, 6483, 6484, 6485, 6486, 6487, 6488, + 6489, 6490, 6491, 6492, 6493, 6494, 6495, 6496, 6497, 6498, 6499, 6500, + 6501, 6502, 4352, 6503, 6504, 6505, 6506, 6507, 6508, 6509, 6510, 6511, + 6512, 6513, 6514, 6515, 6516, 6517, 6518, 6519, 6520, 6521, 6522, 6523, + 6524, 6525, 4351, 6526, 6527, 6528, 6529, 6530, 6531, 6532, 6533, 6534, + 6535, 6536, 6537, 6538, 6539, 6540, 6541, 6542, 6543, 6544, 6545, 6546, + 6547, 6548, 4350, 6549, 6550, 6551, 6552, 6553, 6554, 6555, 6556, 6557, + 6558, 6559, 6560, 6561, 6562, 6563, 6564, 6565, 6566, 6567, 6568, 6569, + 6570, 6571, 4349, 6572, 6573, 6574, 6575, 6576, 6577, 6578, 6579, 6580, + 6581, 6582, 6583, 6584, 6585, 6586, 6587, 6588, 6589, 6590, 6591, 6592, + 6593, 6594, 4348, 6595, 6596, 6597, 6598, 6599, 6600, 6601, 6602, 6603, + 6604, 6605, 6606, 6607, 6608, 6609, 6610, 6611, 6612, 6613, 6614, 6615, + 6616, 6617, 4347, 6618, 6619, 6620, 6621, 6622, 6623, 6624, 6625, 6626, + 6627, 6628, 6629, 6630, 6631, 6632, 6633, 6634, 6635, 6636, 6637, 6638, + 6639, 6640, 4346, 6641, 6642, 6643, 6644, 6645, 6646, 6647, 6648, 6649, + 6650, 6651, 6652, 6653, 6654, 6655, 6656, 6657, 6658, 6659, 6660, 6661, + 6662, 6663, 4345, 6664, 6665, 6666, 6667, 6668, 6669, 6670, 6671, 6672, + 6673, 6674, 6675, 6676, 6677, 6678, 6679, 6680, 6681, 6682, 6683, 6684, + 6685, 6686, 4344, 6687, 6688, 6689, 6690, 6691, 6692, 6693, 6694, 6695, + 6696, 6697, 6698, 6699, 6700, 6701, 6702, 6703, 6704, 6705, 6706, 6707, + 6708, 6709, 4343, 6710, 6711, 6712, 6713, 6714, 6715, 6716, 6717, 6718, + 6719, 6720, 6721, 6722, 6723, 6724, 6725, 6726, 6727, 6728, 6729, 6730, + 6731, 6732, 4342, 6733, 6734, 6735, 6736, 6737, 6738, 6739, 6740, 6741, + 6742, 6743, 6744, 6745, 6746, 6747, 6748, 6749, 6750, 6751, 6752, 6753, + 6754, 6755, 4341, 6756, 6757, 6758, 6759, 6760, 6761, 6762, 6763, 6764, + 6765, 6766, 6767, 6768, 6769, 6770, 6771, 6772, 6773, 6774, 6775, 6776, + 6777, 6778, 4340, 6779, 6780, 6781, 6782, 6783, 6784, 6785, 6786, 6787, + 6788, 6789, 6790, 6791, 6792, 6793, 6794, 6795, 6796, 6797, 6798, 6799, + 6800, 6801, 4339, 6802, 6803, 6804, 6805, 6806, 6807, 6808, 6809, 6810, + 6811, 6812, 6813, 6814, 6815, 6816, 6817, 6818, 6819, 6820, 6821, 6822, + 6823, 6824, 4338, 6825, 6826, 6827, 6828, 6829, 6830, 6831, 6832, 6833, + 6834, 6835, 6836, 6837, 6838, 6839, 6840, 6841, 6842, 6843, 6844, 6845, + 6846, 6847, 4337, 6848, 6849, 6850, 6851, 6852, 6853, 6854, 6855, 6856, + 6857, 6858, 6859, 6860, 6861, 6862, 6863, 6864, 6865, 6866, 6867, 6868, + 6869, 6870, 4336, 6871, 6872, 6873, 6874, 6875, 6876, 6877, 6878, 6879, + 6880, 6881, 6882, 6883, 6884, 6885, 6886, 6887, 6888, 6889, 6890, 6891, + 6892, 6893, 4335, 6894, 6895, 6896, 6897, 6898, 6899, 6900, 6901, 6902, + 6903, 6904, 6905, 6906, 6907, 6908, 6909, 6910, 6911, 6912, 6913, 6914, + 6915, 6916, 4334, 6917, 6918, 6919, 6920, 6921, 6922, 6923, 6924, 6925, + 6926, 6927, 6928, 6929, 6930, 6931, 6932, 6933, 6934, 6935, 6936, 6937, + 6938, 6939, 4333, 6940, 6941, 6942, 6943, 6944, 6945, 6946, 6947, 6948, + 6949, 6950, 6951, 6952, 6953, 6954, 6955, 6956, 6957, 6958, 6959, 6960, + 6961, 6962, 4332, 6963, 6964, 6965, 6966, 6967, 6968, 6969, 6970, 6971, + 6972, 6973, 6974, 6975, 6976, 6977, 6978, 6979, 6980, 6981, 6982, 6983, + 6984, 6985, 4331, 6986, 6987, 6988, 6989, 6990, 6991, 6992, 6993, 6994, + 6995, 6996, 6997, 6998, 6999, 7000, 7001, 7002, 7003, 7004, 7005, 7006, + 7007, 7008, 4330, 7009, 7010, 7011, 7012, 7013, 7014, 7015, 7016, 7017, + 7018, 7019, 7020, 7021, 7022, 7023, 7024, 7025, 7026, 7027, 7028, 7029, + 7030, 7031, 4329, 7032, 7033, 7034, 7035, 7036, 7037, 7038, 7039, 7040, + 7041, 7042, 7043, 7044, 7045, 7046, 7047, 7048, 7049, 7050, 7051, 7052, + 7053, 7054, 4328, 7055, 7056, 7057, 7058, 7059, 7060, 7061, 7062, 7063, + 7064, 7065, 7066, 7067, 7068, 7069, 7070, 7071, 7072, 7073, 7074, 7075, + 7076, 7077, 4327, 7078, 7079, 7080, 7081, 7082, 7083, 7084, 7085, 7086, + 7087, 7088, 7089, 7090, 7091, 7092, 7093, 7094, 7095, 7096, 7097, 7098, + 7099, 7100, 4326, 7101, 7102, 7103, 7104, 7105, 7106, 7107, 7108, 7109, + 7110, 7111, 7112, 7113, 7114, 7115, 7116, 7117, 7118, 7119, 7120, 7121, + 7122, 7123, 4324, 7124, 7125, 7126, 7127, 7128, 7129, 7130, 7131, 7132, + 7133, 7134, 7135, 7136, 7137, 7138, 7139, 7140, 7141, 7142, 7143, 7144, + 7145, 7146, 4455, 7147, 7148, 7149, 7150, 7151, 7152, 7153, 7154, 7155, + 7156, 7157, 7158, 7159, 7160, 7161, 7162, 7163, 7164, 7165, 7166, 7167, + 7168, 7169, 4454, 7170, 7171, 7172, 7173, 7174, 7175, 7176, 7177, 7178, + 7179, 7180, 7181, 7182, 7183, 7184, 7185, 7186, 7187, 7188, 7189, 7190, + 7191, 7192, 4453, 7193, 7194, 7195, 7196, 7197, 7198, 7199, 7200, 7201, + 7202, 7203, 7204, 7205, 7206, 7207, 7208, 7209, 7210, 7211, 7212, 7213, + 7214, 7215, 4452, 7216, 7217, 7218, 7219, 7220, 7221, 7222, 7223, 7224, + 7225, 7226, 7227, 7228, 7229, 7230, 7231, 7232, 7233, 7234, 7235, 7236, + 7237, 7238, 4451, 7239, 7240, 7241, 7242, 7243, 7244, 7245, 7246, 7247, + 7248, 7249, 7250, 7251, 7252, 7253, 7254, 7255, 7256, 7257, 7258, 7259, + 7260, 7261, 4450, 7262, 7263, 7264, 7265, 7266, 7267, 7268, 7269, 7270, + 7271, 7272, 7273, 7274, 7275, 7276, 7277, 7278, 7279, 7280, 7281, 7282, + 7283, 7284, 4449, 7285, 7286, 7287, 7288, 7289, 7290, 7291, 7292, 7293, + 7294, 7295, 7296, 7297, 7298, 7299, 7300, 7301, 7302, 7303, 7304, 7305, + 7306, 7307, 4448, 7308, 7309, 7310, 7311, 7312, 7313, 7314, 7315, 7316, + 7317, 7318, 7319, 7320, 7321, 7322, 7323, 7324, 7325, 7326, 7327, 7328, + 7329, 7330, 4447, 7331, 7332, 7333, 7334, 7335, 7336, 7337, 7338, 7339, + 7340, 7341, 7342, 7343, 7344, 7345, 7346, 7347, 7348, 7349, 7350, 7351, + 7352, 7353, 4446, 7354, 7355, 7356, 7357, 7358, 7359, 7360, 7361, 7362, + 7363, 7364, 7365, 7366, 7367, 7368, 7369, 7370, 7371, 7372, 7373, 7374, + 7375, 7376, 4445, 7377, 7378, 7379, 7380, 7381, 7382, 7383, 7384, 7385, + 7386, 7387, 7388, 7389, 7390, 7391, 7392, 7393, 7394, 7395, 7396, 7397, + 7398, 7399, 4444, 7400, 7401, 7402, 7403, 7404, 7405, 7406, 7407, 7408, + 7409, 7410, 7411, 7412, 7413, 7414, 7415, 7416, 7417, 7418, 7419, 7420, + 7421, 7422, 4443, 7423, 7424, 7425, 7426, 7427, 7428, 7429, 7430, 7431, + 7432, 7433, 7434, 7435, 7436, 7437, 7438, 7439, 7440, 7441, 7442, 7443, + 7444, 7445, 4442, 7446, 7447, 7448, 7449, 7450, 7451, 7452, 7453, 7454, + 7455, 7456, 7457, 7458, 7459, 7460, 7461, 7462, 7463, 7464, 7465, 7466, + 7467, 7468, 4441, 7469, 7470, 7471, 7472, 7473, 7474, 7475, 7476, 7477, + 7478, 7479, 7480, 7481, 7482, 7483, 7484, 7485, 7486, 7487, 7488, 7489, + 7490, 7491, 4440 ; +} diff --git a/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/mesh/helmholtz-mesh-1.e b/packages/rol/example/PDE-OPT/published/Helmholtz_KouriRidzalTuminaro2020/mesh/helmholtz-mesh-1.e new file mode 100644 index 0000000000000000000000000000000000000000..57b9efa5163c3f04e4f35823ad79c47efece3e30 GIT binary patch literal 1317440 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]sX^Mc)+TreYqJaStVc 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

3`j&FL0H9z-1~2x9J_< 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�!Lj=U$1WF~x|(qAcEiEz4F_)(oV$*2^0;?ra{tb~7dpYw`vE7< z7tS8{vuKBJFC4x>aQ1S-=_>=r&jXHMb2xpS;ruOw0~iDca3P$(rf>pJi6b~R9~{9* zIDvD-85~Ce=+cT_n?0N}pJv$pFr+ zO?T;%ORaCc_<9#E)Bn0no!~O%<8f+rop>JH|F}=VaGm%(x+DC!OA~%wys2YWFCKq2 zPA=ZpnxC7s{P5<@e<`W1RF5padvQDYXv0_iHpU3{2e~WZ1~CJTf1BN z;BGB|tHnO3cDeGv?aEE!c8!P2l?c~sE{XdUPU3!zh3hqr#03k08@3m2*g&{oeE$D_ z^;Ssl9dO4s!5#C0E5_&lhTGG4+TDd)=1Ag}4T4Ly46YgHfk#eeol|=f+_QBgu2~{n zG@d6M?X=$ATz*TzyckMFVwUuzyCc$Onbp$i>EUE3y^MtkAb_*`sQMhio zcpbCVeY*wsO~G|rNaDgxf*WVRjq3mxE()$(6x_LkaOV<9T)EP4=}N(^+YPs_DqK1z zaqUW{fqUl)_pTvayVG#-?!nFDUa!A%L!L6GhDt2aQiC3 z?aK|9Z!KIuH@JUy#Qn?U1lR8#T)>;M;VCvDTNpf4Q3QT$v<9HHNwp)KMF z*&HJ66!H4_p&M?zDfnF+qM{aFr($)C`1_p`c5Pq9xpebE;aT$!Bb#Hie9x;i;W>VH zl4^d<^elW|s-x63W3?TFd0tD(D7#7zJHS!8%FnytFjXrQ+q@XBe>*+nXZf3afBPbO zM#Xj;;5coA^OO(H(+W6FHQ_*Y`ptI$4IUXN2VZHv2IqTpD0z`^2mdfLhA2Pf+k9IQ?x zjuwymoPAxM{ZkdrRv;X$mLv{WCpcYG;B@i%d+?)3W3ne4uiS9Hj*~cFd|b#;cX+13 zod1`}n$2+811D@foUm(fzyjfj&1WYd$@326Zzq!4T6)#{wfWv*C&zh2Zjy!l&;kL-<&nmQ4@!) zB8k)HWpmn0hfN%}$#CBO{ z_Z5!c6gYq}Z~~ve3G4v}ur(aP2og7N5|1~yLBF~}L7gsN*t9Cu9m?rm=E(lVJpa_{ z67f7V?GBx=xkbOZMsSP7J=*b`i)6Y-;wD+otG~EP=+hN<=_9Xyv${-te%1ZFS8eW+ zxJ~?hK=)pmO4ftx#LvZC+PrtCE}WBD-KSN*xllIusn41o557KuD|H>NR9O-?YNO4a z`d^od$LSoG2{}7*-gawV(;P!C!L>RH*J_x}trGXDG+ZoqxL9s*uj1im@%+7U#OwM(2VC5Fjr&LZm%V@crX*ahn{c=4!|lpI;(CR_^l~#G+&J#h-O{d% z_i|Uba^Y~}vcaAE0GF;mT)Go*=kCL;djZ$36I{CqaO>8>y{icqFBe?A+HmhW!_8|A zS8p6#y=b_3oFo3#+cIa{X}EmxaQUXf-8%!f?*&}H@o@bT;r2Cv`}YYh;0bX7?K8mr zn*%rSmN=oVZdelD#0 zChNf+ddB|7s9S%*3&80D&64NCyof6Y6u{jpH&vtaGV-epwU~Im!Hs`=} z4NT|2bPuEl{~3DkE0Xl!mqRc9AoQfqLN7XhE_7eoN%W?Np+~zEdb6jXN81^_+EdW8 z9DrWsLg-n(D!t2|_9Q*LW6-;M1wFj&(aYtO*$6$4*U{@3h@Qs_=zZ*j9>B8b{rid@zyS0D-j|-Z5C`W5Pbf(EsA+)c1vB!OszOzvU1(7u-*x-GeYV2c_X2lz@XU z1-9?dOeV;vg)6E|B!sykmiyrM!=+(}Lp6$`-UEYtLH+dRzB7qNjBndRq&k$JOlhe2X5>9VES;v(fW861|Vp z(DUel-bXj|Ko&<&;AQj#?jmsjZ@~TQY;yoj7f_tIcW~jxz=^xcewO2$pOLfJQ3`3f z&^HNgm>Y>B#`Dbk?N0O$%?M{IA6%*ZaHfLbPHp6Qq~Z{XJ4A4ZhLX5MC2UTO>C%W( z^V8CG@BdN3VJidbR`6tNjx_+w;-8{S!UR zCDFUw13k?3(92v5J-sW?%j<`p-cji7<@N5m$2A_kt^LvC+629>i_!CW6TP0p(evqo z-p>i>iRAN!?uqP|>OShe$b4`g60v*F(>e22`&|rc)$tO%A?~usSuoE=l*-vI~9Bv(B+9AK;p>Pw%>KSv&UY#Wg8p zb56v)_yf*GA-ESwa4?p^MaT~aAs<|XS8x(WqBlPedh&DHdh?}6zcqT*c|C&Oz8vUP z-+`X>is;=gLejJShxBf@vY>~%FnXB_poiHBz08E3<~Qi=&5fSk;?mpO$__og?&x(b zgdW$5((BqP3wmDt&=YD%PiU)Ra6b7u6TRNzeEN{MpM3t%4kSNcUKQ0p-O-D1AUSu| zF63vM6DTgAJDk8la0BbZk;`Fo@qV4=wTj18@qaf|rI=-nQQ9`2mzz**#Z9jE2f}$h!nN)+r12IwW3%9nZMHdN;!^du zIaK0OJ%CeH8*UNLLx^@>c_mFQxJ7(C8MeMwov4v;ZC=2!*#*~T9-JE&xFj8Rg+7%z~593~s_hI0{?PtIvJ>y03RHdi58eXWt3E>s8RR z?t|WS?qjcVXIS5`X!LToKo9pp^m4nQr~5H_n|;yKd;-1AYtZ9796iBT&=btLly-di z{!{n%b5F(l^V!>7Yzo)6Hk{WpHrLg3Ud4UwU~@pl{XETmnc{$&E~x25iVN9~#EINs zb0bYhP~5=uHb>BO1x;s8Tsbe!qpi-|J-Bo1;nm$gA*f_VxMO{J-n!Kx3x!L@&!@Fh zbrLQWJ5&9tb?kmR6WppeI7a8-77c`B)C8_k8TMRm{MoP@&s)`f_h;eU%!GT>4-QIy zxF;Fmpqzw@vI$NG&r|8Kuyomv{orJLgPU;=jsp7&`u%r>qtF7bLU#1*pGU8LR`l$j zLGS)-^sx6w@A`1`u(v`ldl-7UbE21fJbJo2p||@ydZOo{Cwd^yPY}1+behF&c7)@+ zki_*3h2whyu5UV<^DFM_R1)V^!F^2w2X-M`P)9hRd|w*4!0pFAc0e!e=$myHJCWLr zTuCZ+}`i zIBDRbgup?W1{WnAoD@g68Cl_El!2R(4vt1fxC%|+DD;J^kPgm5I`r;OL(hJB^zLUy z55FUN*$1G9y(W6ubEBs{6MDiMOHcT!VsN^T!sY%9r<-%RW-IRO4}5BKoW*VK4#)Yh z&2=`N-{A9O2k%%CU~_&=_g5TPdzX?jgqkj>IH6rQw-7hfbRi(^{wBluJ;eQo;{J*Q zJj3R~Y6q4b5OHA-km6G60as%UoQ?Y8E=+NRvv3OT!bUg@$KV9;^GogV?c$t$lbvJd4itK6>7LJp zMpCGDIJp1jdNZHtGkG1$%h}DZy?3*@?BcX1z-=$ZIfU!7C1bC^?dBdV?Rf7calP+x zK4Ep96Kt-t={%e6v*`ev?yuuklHp7y!<{S(hp-mh!I3tHP+UTG8KcL2Iq0z;F5PRJ zQ)jw$;+S#%w7Ts1Z=E~BF-w4J#_Qhnb}xl%LvU2sUD5k*92}L7B(6#)I2-J9=>I+m&PErw8_94Y=D>;QL*IfUCx`Fb zP2Vh`d25I9^VFi-+6O(&L17to)fjv`fI{1K1=O{d*-+r@DYwz=NocrS+Q&GR9&^F7(-KAX<7xX-O^4z%e4n+~wJz=3dr z*V)`yabjP?jU53;wxrD!6-PAD=8B3ldXj?lbFw@(XVP>hO@~rkLS7H09YVhU)IL!) zIE8%w37=e?y1j7g+Q6~ndC=N5yJU0B#5EgkbI!!QN`!M&6Yf?u8) z*x*31HgJ-v!OeLCC#O2xoLq2pOjqRq9F;n7Rr0}EX%8pF8BRzM3M=0>>_v10eKT6S zaT^bP(_Y9Uejb?U(Y|m&3hm-jy84nx3eg@Tzb;Aq8FH}&g-%Ee%EIe>zs_ye+wG5N z`m(8UT&>SB^yOqyg@X^h>FbW9908n*n2x)+?a?;J-E`ee=i79>#rfU|_xqF0ffo1q zCmiUUoMVX#Z92i?0>{G%=6DZaBo#~v3 zYsSy9@cT{oOdPBjxK}^nVC{m7JWZfs^zMZqhQ7NwMHVU~qWRT;U zaPCtb(B|?&Kl94{SVHJh3ozlj(aP(?vZfb`T183zb@nIdXqTcmEnH7zyU8z;zIL! z=+U}?5{JWkMxpcALw^nc|BT1afZ8o>ibP7$kP#i-Sn`GjTMf0`zgKL?I-W;&?ZV{eKl!?%WM#L2 zGMrCX-Bs?>EB-Nh!rc25lH=vOfavPW{N;HL2fuI zFPwc8eQwxz&fui8^r@Xo?!bU;^l3;|qrkbQ^tnr#N@FV=g!4WJt~=+K+IyT0_np_v zEa>;3QMHyf_gftBb8x{6*_>$8g*KgNaihDy5&jQu@H9BWJ;`*1O=s40WyP7jN8-+I zfJ6Ea?kLZf$M%~psW_E`;8IqCQ+Xb4x`w86C$1g$ck7?u+~(ei zgH{pl*)%w4-EA(KI9c1^V$Fb))yw8)i4!#oPE;QX3+w;)=1-sKTk^;clWH}fZ&{~J z>^N@?g%)1qSowZ1_oc1fn5igx3C`|iK9A!0P;EWWUhxT~;6CSCxo2ujpGRGNF{Aq? z`UHRL(>^;p@#l49I6iAIMlM-aHzB^VcYG`hW)kf z&HDsJ81@0VGOU06#<0JozYKd<{bkq>^qzj@aCO7JfA-Zyzb6}Z@z-9yx65GIB@O)c zW6pfT9>2#9zlXW7t!r)qUR|H0-6}A<-bj7gWdN2LkEawgT zLqj9n6EYk2O|Gb%tHe2d<^NWj8EGDqcx|xlKcy(lq;?GBp<{ypH*$q3-^MAG*U)r#{_+|OiWv+%@ z_vlg1&q58mmX((G@vU!I-n+jYm4&w_+OF;XQsWHEsw`EqjEyxcvvb#)*<*-dDX?hC zvID%|E9B2M;o@w=VYKJV!0D|Ghs@<%A4Hz!{kgPE#OB6^gIiMg(UYAG`%ClkPMl$H z*dN^Yp{hc29)AhK+?^h$9yUE+v!L9Z3$s-MW zx4xI^fA%x%N9131bl?!fKEw0$okv&<`!X{xyB%z1*!gX}@_eYjVRvBD?8FJ147+As zf9{!C)v)V-?rPa`EeuQYQ~ya{c)Q-`9qqE8uqK5hu^IH!mzJi>2B6ryAAuE z!GF*Dvc|B#Q2Ao_A^iR%B%R9jubW}_@Q)fDhyP>PO~|})L;9MA-L_m#d-C&sZBTYf z_5Y?BcDWN0p6^REET=;H{n5nFumm=Ie!10H!!qOV`W@a5Gb~+R`1O0cOr?BZ*P&&y zhhZr+blcmh{rUY$NPJiPgi5J4KL5RX^;Pot4)3~7yrq)QmG-skxXZAw*8X{?mptAd zRT$K*#Vy0$q2lI~Zgma&0oz_pes|HZ+m~Z?*K7?8yUA(4_w>qa*yVpSt#8rRhF$ZR z#qsM5!xH>*&W`*|4U3O=+5yX!8kWB6R}GHk{pIF6rO}R-hNa@Z(H~2+HZ1mI3Jx2b zNu{`~Z~c7t29>fs_uU-r-Bt3Npo`sl98}4xTn4c)}` zSJN1l&yVfA#vL>)OMQ!XpUCe=kE^PEpX(|m<=>D>KlnIS<#6NVDV{3jK*ej#fA&%- zt)_PMF1br3uN~vpvRiqT{M{k_s-%7@x%Tr`FC7M{q*p_$K3;l4C6(#BeE`){NwbbE zEtP>kKOHmQuTv$|u*CJ5UTFFi!>;|FP-f8kJJXrP;tPja148*L*Gac&g-g zC#OtU(o!W)|F*f(w{Vpduqrfm!48#N#q!L3)CZL`y=~oFo#v>d{56d$f3#7FL!Pc% z?v>{p#wTMdy(*;=Ql8qsy1~b97x$!)mWe7QY}Cc+4T~F=dZmiYC^D3fn?)Y1A6Z?c z1b82IEnHcpwAlJ@k>I~nvitQWerqSFlwy_gK1^Dnk|*z&-ze~#N{Wki9Ok@3CH-CO zMwTzvRMMSn;m3ShtE7_u_Won*VU_6FcIkC5->Xrx+1X^3(zktFzv;Z) z_E(2@7}$v4hhbwq-)7|fQD?xP&u^%t74=tDis#R7-haQuwMe6q#%~$W%riwLep45V z7wo4JTQ>=HYEV%n-aYYRP0o0gSm9>Jpea!*;c&|W8GFU5gp93QB+v9y35(v}EFbh; z#lKH%GP&tj6+f)~#E2a$RowMXdp=PQ6>sGBzT)vgCD(gXKK+RRmE@kka8xG#yw)vU zZri)cD*0K{+?JNHDrrko@60=1tE99YbG;rItrCYXO&{RnrV*rAqAc@2k*! zhDx}5CFyjYqAH+>@I)+#P#RN$1t?^OK! zS8M9G{aeL-N-S|WQyLXF=)nDflc%WI8*lvE-piumS`|1|;F_08jLgup$KqoAd+t47 zc-u)Orc6j|ID*H|<^lx*YP{ypYjmv}^(`tPU{lwVIWwt*+I=6t?#kcan>f0227i@M zH~Qe4XG>N5?lPS+ZH-a!S;8LFc@v`IcTIdZ;y`;9pCP7T>?9`@H}!P;L8acP*pD;s ztQ!7U#f_WPd4AJC75gG)W%gXVRBVT4t$mIKsGk=y2LwlvifuCK`qp=@Dq+jeb8Um{ zRYI2Br?%wf*HaPKR*lQ75?lIPie$W`5=vE^f2*3Kil6QK-^cd$DlTHg(W*=ARs1^F z#_7WO)nR8!lcR|$Zg4)2>6h(P>{Gw}{t0&c`=9&F9vP!z-{qR>T`^q6x{TSAv!)&Y z{z5x@kF@aiw5c5v@>TuxT^Lo}dn<@(lx`zA6(ggMH834~43@Qf?`|9G-8Ry^7h?;g4nOj;a{T^POYn^-|H(e6o%I7NKIYZuQFTT*QC9pH^0}^}F}{RI{v#jhqv`)74AGO+J-3OU7j?c5JD+A6;gspFX~hqgEGJ zKb=b-j|nTJeuf2PuTZ(E`Z;3M_OUrLs~B3|bM{|OD#nO%Om{H5iuszW{ORaNDrU%; zGl|c)sp!i+j;~6aQAIbo)HC0JG%EUIuV#%e3{uepEe{s&s-&W>mQCw^FA9t*R zifLZWe$wrlD*Eo=j>8Uy@%!L!cl@sfDkgKTS>HatR?*!y@9s7Kpo)5XJEC2`0V;ZR zzr+gj|5VXVN2d-ex>iN~W8b)OgF-4Ys`i>%d7r4LtqC#veZHxvVy(u1=-xs_&K&-( zOynvR>A16cfx9j$a{q=O#iDnqX!mlHzE)1JqN|N*f8wtvD*9*bf43GssAB%voOyPy zwkmr51g9xmN2sXFXUb0-wns(%ot&oeqA@Bu$A5>rK#tcy^QADaec+}A)w zPFi~A!Ig|Es$#{*IdYs`dF3tKTwMW%bOddr(=SP={IIE)WZ!9)^ zYdIAeA6@y$oqtrM+-Io>xsOtjs|F8Uv- zQEr|35i>Z4L!}@UaV@2D+krkRvclX+XG?plh{3N@;;J82KQ=A9Mb*oyAN9NzPp>^r zML76+?6upee(c)Sx$V8xDm*Z-X`OmLDtxv>N~CgBKh(b|aXaU!@K*yo_KupU!i!b# zKGvkY`o3^~*prntRrvHKo!d2ZRpI$dq{L_LrosYZT-$EEuEMf4d*$!mOMM@ep>wO# z>s0vm=Zg#db6SPBy!xPO=UnPXk@aIYUz(zROl$XGf*ssqhhpCJ#GSRE6iNF|EVCC>6FgPrqlyyQpu$-=b2YbExm*r^S!|bA<}? zU1@1jrndU#?7yVUwOcB5-OfMSZCR+ovg~opmHU^uWy=C&DYLZ{GV3+>1?6-%1QmdtuaD74~A<<7}DdtM4UYCOwB|ZOtJ@WJ)wpe}HJ7B@a>s~5k;HPFDTW_k6XvfRx zi=I(mAKmiwaqOhN6doRZr_37_ylK2^nnjt_*JdYk-5&EweL1~(TF^^Z6`XVWlX{=( zsL#vhHy_(FoKEE2> zT^F|&vn~ss*ih|2KLOpSbeN=e8Y}8Rn(^sIg&ff+pazh8Q4DS zKaT2ykIRj>-=C-tEk7ic>N`_?{OYyqX2&t=ivNH13jH@ zst-T9HfvU_iTW_%;70rOp6XrL$qnC+j#KZZw+X0GIKO)TGcNdIxRZJp*!9k>x?B0r z{r}5$Kd1W8s@RydXXDieukF=-UT>)0zb=)~wP6PJu3)XTe-Cq0Z_n?YxY6ETy`NZq zVS!8e)cZ_TvIjLQtKRm=)%C@esp?JK+7P ze{-mMQ@3yOzJYJl+uIHPD|^4QdONUD{m{;X)azs0FWrwls)E9%FYI1!JO7+!{>PqA zP(dxci(Y@~rCxcSXcFtVLA^PY?aP9%mDO9jE^W)KcUNyZrY$jkZVB}&$Dtu*YE4yv zlic094C7yA}OzW}Q2>Q%!XZj~b+s=$?tlQWj^QO`$DsMomdP4(>2KfTA! zJgQ#49Y6Nt-}}^)t92UYa;m7FwBL20@4wFKdGev?!`7d-c<}B3r~c~sq!&KJR((*9 z12gA19NJzz9x`cqY}Wzm+4oHI%JhD%o(*Zx>SOsA>QTg-PfagRRF7u;)qZuQMe6D6 zk=b|ue59Us-Tt(n-yQWR!>RMHHf>f9*B32S-oaBnxqD|v;ng?PlNKq10{i%>heh31 zP8xMlJvbZ{clr4}_1L#+g)J2>syoAzPH!%kUfsTHbnsYvUOm`WG`PUv73x8<_vRXj zY1D&ypZwB9Us1Pf%nkKU{zu)~cy-b3VTIKF=bk&iFNjt5r;MBa!l|;lnV7zK(8D|G zW zKRkS*{2vu8IAQiYbv4-clz;kob)kM@l6#q4%EvwDK>N~7)z$HzdmV5tqWn^_IxHUF zRQaSSbA3>$3CeqD!%F@o_b5NNnjXUr4pn}6dUkMmwM?DA)p2dv5)ah*szYMkO4zF_ z?*GPC%y~jxsc>*-mKIOdxpgyphZe7)&c?2}(ze(Db@}w&W??fDe0-N)x%=L!xsT7M zDW#uY$fu6z?eteiC#73Cq*fJm#JXLj<9*Ja8hYeQn>{{W^SjrK52~y@^>$WOo_f0m z`5gbdl~3kT=X?$}ov^Te@)C7eZ|6qkp|>l*XQ$ucvKN)%v%>PiErb0Fqfe zY*&L`4KsxN?ccA#n#Eb?j*95_zSWUz&NQ zE#EZrPvoIyK5ENL&3x6&Th06xd8_1rBajR3MoyR)x#2Ebj%dpjb%^h_P>5N>` z%qhR5=9XrTiCojnIc>S8nTMMBsF{}{A2oA8TP|qkggQ5Dj~p>uYOZMJj5>F`gB)_X zEtfQNO35u-Bgf2yT=N`q&daH}r_Mu{q~@bKFMVvwMYTA&YVK&}kUEzviJUSka?97qF}oqxj784*4!P$8U@;*Tb-A34yp4|&JA=9 zXeh}AGa@J4irkQMR-GgIB3G=2obeiRN8Zmmhcu8&_C`(_iQIAya!g<3noE##7D4W5 zK^|%#A3cS<^e;0XHFH2S7c_H1nt3VmQRIMaQgcD%gvbq%BYsZJ70sLxxucmw+Hy%Vr!;d*Gsi@(Y37`^ z+!J}IEgwZ*D*0$v0B@XIpLqk4UZ#7?1x;D^EAmBQ*%c%heR$ZIb{NJ%c;mQ z|3$7@9XaQ4TkdJgL(P2D%u6L7MGkm0H5b%5VQ%Dx`;jB=K(4qBIU|2gb?*2Va!AgZ zbuP)D2c1*8A-CjwT<4g4{L#6l3v$j($UW;J53P-S^d|DsrDi^g9MBcHU|r;d$B`Qj zK#tf4xnfyc&M3KK59E-CQ*%klDUn+qO3g8mYf8@9C^h%oi9A&2qcf40o-^}N3-V~}%hw&k9Zhwel^ zdKr1?S2G_)4wx0WU~%MxE07zGK#mxIT#>h5=Zu4pJ96HxbI66rCGR4qtcTq419Hq= z$TjzyIVW<@`^ZBrsre}KQprcdkOTT77aW0{unBU*p~w+4q~?k`XZ(TO(IYj7)Vbt! ztYpy}gdCiu4A`eAA$~msiOL@DIk4g@B47p%BlS zH_VuV9I-8O#X#hYEs#6zKn}_KLFbYukW>DF+|n62CVyUZuDKXFX9RN3K;)qnk&pI9 zUV0t*DCcuJ2ON-^3nC|!+;9hS#OJBGB63E_9djdxY?qo#BBzwx(hWH#=ecICiJVjC zp7oNEhyIzGk0LLXeDoD^z#z#5gAyet+?Ryh@Iz{jXw4NzBuma%gI{&-_#HW9l;o1} z$&yoEN=9xOj~vq?x#nX2b8F7oE(N(~TI8Xelk0qxb6K62T9A(ta=;151w)Y&c13RJ zfgJG-a>Yx?87m-n%#9q<1-ayU$tj#nfCHdc>b4m~7me%*(nqw|R zt{IM;vkr34ipWFx->37@S;$MTA|Jhi9MBiJU_Io7qa-(6l#Cp)0dmFN$Qhp?cbuA< zLn4=yoKhjTj6#lC9l7RsWO^xCGyg2$VWRV$pPCU7wm_e@EUT%Eyxjr zmE?+*ku$DG?pRw%4mn@_NU?q;BBvZ^%Pl3xEP`A!06AwhOAy3^3hEyQvaM3 z`@Xy$}hksEeKjyMpxVs+$?8r+`ARo0z4p=!ExnKt5ge8$19z%}U7rCM{a>j1R z9kU{byog+KJaWnv$Sp@9$1IFo^B{80E66?XAP=2|d^8AoX)N;50>}X~BNxnuobUs3 z!}*dU7D)JiWSx0jP22zf8_qlrC_@pcgk;JT=S_xWs!W-ZG4l|SIde!Nl8}sLjFd60 ztw<_z$xM<=QBtC4_^r-*tMBjQ{<9yQd#`hx_I|DRdcB^nz0p^^f<9v)`i?&6L*}C| zISGAA2lOo`qmTIleN74aoNv(gbVENhwbmc~>zDrZN0|?(LSImWKH)6%4WrOUq&}eD zS4={mu@U-?kI;vt|GnOq^g*989eqm!^fC9Muh{~9&K2l;wnaZQ8U4{m=$E!ef3z+7 zfV0pS+>Ab9IQoX;(MKGNzTy+~8NJYV?1?_49r}`=(Wmr5-_jg?OeOO*4J**++=#xX z0s5ie(H~WyUmAw~Xeaam!)txPzdj-J4P((qOsn-3|N4x~cg$rzWXSJYU-GX{$$U!< z`k1!0zUE(_llh(&=!dqg^+*5urOY2agg#(A`hqvmCp?9|;WhLT3HpkA(P!L%zT++Q zA@8Cuxd4623FuqiM<4SM`kF52b9O=B^BMY~uhAd1M88yp{^)S@0iDqoY=A!DbmkkL zeT_ciRrD3((P!kL@3f4-s*n2WyP1oR1Q(Kk#)A2E#iip_tb&zOY1qYwI!L(rGpfj;GU^et`B$23M? z(}ww+R;B2BW}_c^75&j9^h<-#ADxaqVE=?mSIz!Rm>H80TW)l!$-oil8=9bx_%Y$! z!uuC4xfLf+ibUB-?TEhPW%MBf5+ZVwo=-U}OW2|JA^V_j>483`O~PRG9|QHrCFpyW zqaS+L@t}Ee_j6NEIG#|((0f9N&>!tgm`{0#Fkf{mVLt0H!hFriMDKI9pwE}m`?B>2 z^J$+E=8L`~%qKlTn6Dc_n9nHVx~eC=O^`P{t-^Og4y<}=g#;_H2J z`rJ*uPkxUuUm6JWsp}KwtJfpUXCF_Pul<=YzdMmIfBq=Z`}H>Yg!$jo2=mETQ~tQd z*QfVm();|E2=mnyg!$~5gyjN92+Ij*uTAgEhZ5$~dlHr_EGH~ym`<3lZ$+5TUr1Ok zL3>pCoT3+DxxgjD@`BZbST2!5SWb~f zSguk;nEpu#%QfizhV(hd1Hy6{`aE=fPSc0>#cOhrEW&bZ-!t%dv1am^da!vYN9DUCDncn|i zpDPlUGxi}Y7rjAPPP&t@T=E%VIVJ52=yO$ie{Frv+MV_VYI03JVL9i1!g5*KPtoVJ zxrF7S9cVA9CNE7TEZ@CE*!;4Mu>7T3e z<>fyKo3E}CmQzaz%hk&W%h`Jp%(V&T-1L5lHMu-}{-HjnPa!N9uTNM`o=p3JHMzco zu$+G=y)SA_u1@cttk2o${n+(fKnP)+z%#;f`TK$X3A9I`=M>Tjash;K0;WJ`YaMHMkJQJ1ik=|M7+}USkho{DT2uoWwrDxQbVU1=j!)I^f>@}uEdBi&V=4ST+emvB8>BhB#cYB zPZ*~{pCiJ!5Q4l2LB53`??Ru~r{_lq+h2|%jEixi&*iG&Wa#_qxs;=XaVkZGaWy9i z<7{3L#sd?~=R=sg630)nIH|6LaY^(!=Xzf03_<^ZFy87mVf@kv!Z@cRgmGEFiJsFU z^!bWn&ma#%6+C89~mB zFs`dDVZ7HPf_xf5UX3vRi$1?q&xz5$C*#@(a&CnALw1C5X4B~V)NpaP3FGAK2=j*y z62_@LCXA~KBaE}7&&6h38$r&EAeToNr}vm37e|nnBaH9sMHufFP0$~r&$F)K?3NS8 z1=c)oyM_~_&)L>dU=F#g@%N2h6aRjeI|r)euD|)5)BCB6b%UD0@o783C0t~ zH5w4~{|Ms>^9l3U%!%IrYfwe>{@?2=!uUfK{X8|CVlI9E8m{stVVq?KVO--!`g0BE z_?0j&^9eytlOPvKkdq|HbrR$}3F9jN5XM;=5cE$8a-xKBnS8={O$kB1lpt?P7{5sf z^LM=oa;XG4Rl@w;BlP|CoG3xAl_2LzkSis~nG)n;339Roxm1FjDnYK6AZJUEYbD6L z66A9U^11~1SHk>p`u*#<-tmNSzB>tWwFEg^f?O~`PM9E3)Q9$zKTLl#2-Cs+$nT zSr-$=HJ1|PoC)Ky?-IsoM-n|3eb#`md_h1M*S(Z5&U+|fT(y*7zCais-jZXycom2F z0%4qX8ev?yHDR3jF2cC(IfQZEGQzm@3c~UuZ^F3nGlX&CLkQ#A9}>p7_arQzDI_eP z2_}q-kLHk*CyYzC=a5(Dkgw;Ex95;wCyaB~(DR{&%daGi(;rG07r%foPX0bYuAeZ@ z{~JNBo_-H{&YrOR4G8NA>?FwLbI9p)tXHs*V?Bd?9OL@`;~4L6z_ETp6777{^cC_s z?IM_Q))%9 z7sO#th{IkJhdn0_dqo`U8ToLGKWNIao>Uo!y(A8MN*wD|{l_u>;1q|wCJys`j`0WU zIo8)2&$0efe}X+J`gv-4UDh1ydHo@bj|k?lXT@PJjAK2qG!A=N9P$wy<2TxK*fZm> z*TrGai$i{c!=4(4d<2JmF%J0+4*3lZ`3S;#X5obKFES2$avbZWWpLP2=+$kHelG{l4_QI1c#|4tsqZ>-jb1Sg$UbL%xK5o|=AOJjeQigE-_% zIL7Dn;aIP56^A`T4tsqZ_WbDgR?|y#<&YoZSTE3!V|-3;j`bQXIo5MjaI9CjmSa7` zn;h#!mT{~nnai%dI^Ge^7<*=8^VNaFAUM+_`TMm1z^!(EI zTsiFJa>%c7*o);@Uv>+J{az0Hz8v;vsh;Y4wjB0@IqVB_*vsV%Sx=Y4zA=aWV-9=0 z9QJ%U-yHV6IUfEw z*axrse2ky0`~Da|S@-!EKUw$vF@Cc4^ZoPvv3_{n=VSb2-S_vupO5jAb>AQ3C+mK{ z|9k$i-gVvYm-Vvi&Og@MuKWG6UU%L3$9ms&zhA~r)}4R<`}<}5WZn74_({AzcH#Bw zkJs;3yguCOt`FABuDgC&Z@cdLV7>0T>zDPu>#h&h3&-m>`QPh<^~>@4eNuOQ=zG+w zQU6w={!K@HDXZ0&fAo*_w(InT@sqXs_y6n5n1A)}fAxj&lXd#X_({}fI=8W2b=~@* z?_IA&eZKk6`tgrGvtD=I`l0WA{~vv3y>MJVnxQ@$qCWS=_2Uw*A5;(Z{qhmGzJ=lX zOXq9Wv&Qu;y>5MDy=+{6@8bHFitF0|Tz~EB*5ChK-&ilaZvADw@!Iw6pY@mZ%W*!S z^EvBP1GHy^NGH_k7={+SQ37moAG$$#eq)-T8TWh~AIqw3}> z)~l|a|Ndvb`gi_gy=|PY=-mE4^WQ)773+o9&3~*nUN>JcezI=v)Ia-=f98AE zFR$Bwuzor2k4$m@R*w5O7u+AM!u?S$?%xjJ{;dG_M|8f`_qgfjWBerU-*)`FKVtl3 z-TqDA8?W0R{j-15_sf%Uf2qLzZwuW22I2m44(>10aQ{m`KjSBHe`$mJ%T2id&BXn0 zcidm*;r{Y4?thQt{#S(i%LjG)OV%&P{qG{&UltIyKTrL~KfvBK?$4$F_y^eA#{K!= zfBXaFCvkrs^pAhQ_UG;X?$7`A5A^-=_ULcCL;uAC{g>_NZ+u37qY(WU4*i!O=x>yu zzfq3ia>ve{vP!FWE}ce=I9UgLVsvG`d0zyUlpT2^b-9cTf+RS@#tTr zpg;5z{k3W6|8eO5rK7(ViT>J)|MCCcqQ6$Z)?Z`(-&gei%Kq`!nEz*t{-1(gkNVzt zt-r?nzlP}lS)#v|jsD~t=AUL)G5_>F?@V z{}g-Q=uaB`s&{b%Oy zHmLP?|JQ&1|NY%d|KmSXA6DNR|LgBIL;o4je?Eo&t_J<_AL!rzWd40(CHmuS&>yF{ z0qbR>e=k9Q`~dpnS?J%ZYW@5F^~afiZ;t-GCHmv5&>yFtU*9jcMgP7%`r|>EFGOPg zF%a{QV9Xc#W4`be^N%N(e>A~-Aq4YA*QPgY|7HifW!>jCClW|+UFVg6>1`PMAVx9Hzb-~SFJjGwH)e5)1agYOhhRSFgZZF8=9fm8UtYm{FbMO(1DIdV!~C)Z z=7Xm&AEf`io}YY%`6WH?^!eZ=%vb4s8TGyDy8M^rt7|b|efCfO%kouw%vS^c$$weC zT7>y(lYjDGmajTvzPk9I{8yi^Ua7=HQ1!{qkp+pMS@ET7&sMeeQ|AS1m*SAP4jP zjV#}9^auHaIOGokFyHsVeE$>j2jh@Gu)}=c6Z3s~e?xsQ+z9!DCz$WMV7|{Ge{c%< zgVmVtpG7`Gh5SZ6^8hI|Blp0K{hJp=g-U*tFLF+O5e74i|g zk>9XFeq%NA5%l>WdOm_apHR@}CHBa_(C3ip`4=DLOPV2HqGJ4uA-&J5z9&wfcc|w}43IA=LjFa9{L4<{ zOFAH*L!Vcy?^T~cekcR^oNLJE(C63bd)Z%*ACe%S^NH~}A=Sta*&;tQ5c!-2$miH0 zKQsgRp#bD_TGaA6j30_Zeki4u&tZJi738myk-s{Rd{ZLwO}CK0I*9z$R^*$~YWXI{ zUoAoYYBKUoPmphVh5VH(@>e~PZ^}i!>C->_72}&GA|K{~{F*KDYfBj)cJ?dsVI1;n zNyx8JZcNXI1t1^hj{Mp<n{i@^z`m*BwLtPlEhkF7kE$$k&ZW{_h&{e<8@%b*ts;82>ki@qgBR zk*_O4zAl6De>P2!|0_klZUyp*BalaIk36CR`NMqV4^xmgJc_)bKjRCnCosOyraSV4 zvA|2Y^%j9`*?3fV3h<^Zglzv%;HA3|&Uz~F@cxcGyniDv?)K54 z(;j%EBPL~4tNBh6>~Xy#@aF9L znm2kI@I(SAId%kiO^ytjeG`DUUfc9i`8wb^T)h2l>rya&WbgXHC>M+i_B(%llmxut zO+r4sqpz1Xj@9($gYmAHt*#D?0OO1N8^ccMfM+uPa6oQ27)KRdpYAFH;{k0N_0H`G z#&eAiSMK=)#+jwx9pc$GTu+z0ylm;K2@ zjpbkzv}CB;eA zEJ8EN5R8mxu9_3p6AVvXw|2{`NAJt$@+I;x4~%**RbF}U1`OA%O`KswkFCbvT_1P~ z3};EpW?h*GhDoGPd!-xJXRuuiyP ze2n(Fo~{{U`lEraa+dc-odNBw^)l2A9kWFD`|`UOw_7URpZO0QY~uoSfBpoIPmQMi ztjjIO4>9YZEAJX8c)YxmuDq^A2d^ws^q`{w+> z`{tB(KeqN(kKww~6DiHPv@yC8Wx?xA3jJ-4};}oqn9|pvyn+cD%J@g6`|OhD$f6#OVsOL*rd7s&yY1oDCh~ z_DuJoa=_i-n_G0Bo@88}@V-R%d8AvYrpI^PyMxOm{e)q9TW^EB8e|)V&?u()ZN0-nzFje#?6v&(u9VH+jZ#-Amom zZW#|#PV;mx70xs4TYb^J3^PgPd*h9dg=BA$Am2k6j2dTHLAc4zSUT|C; zu8YzCcT;pRXGU(}TbI@K-PX>I3RQtv;Y$)arv?5A5pn zL9Z87Z~p4TUp>(4Ln-P-`&xbYs|QRUG^iIn>hwXc2cC8M@K-PN`XEC+kf1)yLcMrg zrw@8P2ts{`MZFk|`fw5TARYCA-j7hP7Y9)vX4mRLtv;Y$FnzGE)dRgg9H+g>8oiif zfcil1ucz08EvOF~)Qc6U4<)sFP^%B97fc`M{pR#~V1fD|L%ncEeRzXcbKp(}NMZzxu%RA_Mio1NGoJ>ce2v3uDv=AJl^fb^4&!i=U_u&ruHwQ6Ds@7i~}< z0#FaGqCR+`UUXsl&|Frl2TUI}pKc!c`U4D})!^?}~cNUsNdYxUu;UNC)l zihA&o>BFfC)QeB34X^`Ve3y>KKDvT2Gk%EFw&=l!WOUeXg%w?+OXi zFAu`>j?U3~eas;2@1IYY{(U6u`*9*nU+KKB*W2TSeLq=*>Fr~}zJK~0T)keuBTRp{ z(&tvy=yfS!`c9v-s@MC@^f{_E`u&?e52;4)FB7&ts0dpxS`oeeHy0DOUK9|vzPJ;% z-jouyerzIay}3`=`ZS2J^~#X2_2((U^@`y6OK`m-xPB2_@2JnFUmpouFBcQG{*5AR zy=+O?`YIu8y>%sQ{aj3asG9Y*DPh-NN5ap%66*}OndKM2kngv}4%37a=)9-^O5IuX<#!t}+Cuz7{%bo%)wmSgh{ z&29Aa%Pg8V*33IW9Gj2m&-!`kF^BUHhw~E0=Btw&o42w#oS!&0Z+UX4zckOOnb&%7 zZ2po_zNThgGv;u<<8a>NaDL-(-s5mSk|^D>9?FURKPn;e_3BRQP6Ib0t( zoVPhPpJ#J8uXAkvUeDpY&f$E|;k?h`{LbOL&*6T7!~Fw?^FN3C2M+fO9PS@D+)vc~ zdp1AR{r_x!sQdHT{80D)Y<{TweERtz2S5Mky3fbvhkyV6Y<{TyesF(*-=80TKYsZA zQvQeSFKWO4+V5AtpP;`V{rvFv_ou+$PZ0iokNo@l*Y7V}@cgj*=lsF>q3--*`wKk( z+T-~}`6fI+|M&d;dw#O>djg*S(RJs)etwYR^+EG4{r;lv`uTf(uME#E?(cUc>TA->%Ti*-yKjNX#QBUzc_ACs~=1sicw#-qW;uF{aKCr z@&onB3iYcC>Q_(HCm!mX1?ry+_0Jvkjph#e{e;y&`ic7s)K@pu-^r-IcTry{|F7Rq zJVE`Y{=9y_L3;^oe^ION|EvE@-=E|9P>AbCJzPI%Pes4K*n;cJ6e8@y5sty z!u6>L*Dv~sv6ck1n`==CSp2xgoBPxwyU-|FizG z^|b`oX9=#~mbiW|!1Z}JuJ7}4{a?)1|5nAgzI)+(um|UXLr{hSg?8VT4MROX(w~>jH#Y4A+UX8f8;%X7$D#dwH;$!8{Xd{( z_i?31t?0mo`=ISmoGq}Q0h;QVJ)0BO(c{y!OGM)cd+Md{Tb~sKcIx zYj$=4^|U>1yUpC`vGQeQ?^mG4&!NWmQFlm+u$<=#>JIMW`X}drs#?MA?YxN|H+u~V zPX;x94i&zSDr0bSpF0kqN>BGQy?F>!VFB&Jhg=2KK2_enl9Tkv{=O>wURBc`pSanq z38<#^{n+^VBT#iPj5s*0fF8qVd>R}KD*WD6_&&<2#8KwOLQqz&Jkv8z0m{&yjiI6s zD8mN4nCnsqO8oPc`2Q)}|L1xAXcj2#=Wp#>ZwV;wekvc(<`gK>$G#I+B!EKyxidh4 zpGPq@&)Z|<5l~E-Jj11LHpnYpJ{>Ya1M;f5UrwCc3JUxja(o~8-e2=eg$qC)IAV z98C+5;pdRy`$((I*4oXMfV85A(fB9zLAoby;l#p$Al)0qUzz+Jr1&|c_&(D1_FK}M zJOgRFwmDM-t3Z+(HEg>1d61-CQ#AA?Ai>We!S|6&b=u{9|2Rk{H%px9kO$&F;ce#( zGX-(wy#|-813`kHLyYeu-aBeP&wmk!_h=8y_Z|#lyX{h+HU1#B&uQxZd<=;3dl%vN zDoUGq^l%3NQL13M@7_2NOREhsLL9%a;N_OfGZiMKAHzc+Qd=F!m|4lK;7P8TgMU8K;14z?po~$s)`;#eb=~ys`9w?+!s_A(gr3+d-;GW zHC5TAx<9D)j0kSMraP!Y3n%7&SPrTwyDH4)tOeDiw`%k1cA&DGyGygi5>)nG!bTSd zfU^9`Ov~?0L0S64N?K(P${lj+;wn>6h8P~+SJ@VnZCqX`#XUf2W7X<;l>sPj>RNM^ zpFweZw`N0q7f^VfwynfQgHvy!rtQCjXrh&9YGsicTrXWe^)+?pb z5F|+p1~l0I93X$aTko;SPt<^j%bqkbtr>`}UUD8-5eOppOc(nKUl5J8-k0^H9SBPn zJRF$Y6NFzr4K}Ip1mQ-*AypLvKp1#Ul2|wxgjU8*9eejlkb#(^6!+8~E#1k6!!d z5%3%D9W&!k0`M&tPFUq|r0zV=aO`I~X(K)Vr%vG)-Kcv#EHy>?b~$Ln{I=RBOF%m{ zE_0ye4toB#ZKZzb0NVCD15J{OL2LiL-lR?SKvUUv%(9RB=&|&h*~J*pq>XiNacmA~ z?#_(ZHP9S1dyc<5b?O*sLKEX#?P&#?DJ@LfZTtY5Nx3%3GWxTf`P`Rt>GjcW^NP+( zj)MBnm+T(iUZDOxHnt?QBdAkC%VhRfK%MH^ySGOZQ16aAHo*BAsCPZ;X}PN>s3$7d zIhG`WdQwB-kZyZG-FDTi;kI<0Y(41C$dLm;^(#O&_fiI^%HQ4_(^v_rl>YV;rS#|I zTW*_7-9Qy=5E`-U38;3R3Yl851ymCiKW7!t>tej)%S$iEgUV)EvrNagplZEn%z|tq zP=1T?D>%3sl%Hp%XF6tpa_zg3)zwcx8Q|BeeDyC-TJ+}gy%vD7(YPG@q&J|5&6+i7 zV?HRZiPP1+>Cye+PO}zMKrv|Wk6q3`K>qIb>SSpZ$iM6#-HP`bxmp9MqWLE6yt=E`>TdQhtSn@;KvlBg{Y23op; zFQ8R~CZMIOTM8^=S|s&^g#A#e?AF zRi~;q-XQ3+P9ouQK+x$jH)$gQ{ylq_UCwF1f9dj|!I81RU#tynzCH{1)1tGIrCGqM zvhXaqpACH3tMPWzhSZ(s=@}iCUeeL?pVuQ*np^jJm}qIR$t}?C4V(IH&T7z3nY!1z zc>=u-WEVYJoS^5u>RYpR0ibPXe>eNtAJF`+s2H__>Ul+d+fO}afhM)#^z#D-gC^y! z-Ti*cK(lMlq<(*{fM&PZ5x?Pfpz*TEhKVZBcuoqrap5OuY}=-Ep3xaJZLAuJW)*|F z%y#61C0U>@EiXH3PWAm}N^8rkSWw@x+Znbl9@N1d?s*061@-n_6Ao=;whs5Php2b4Ld8G_1Va3|H{cc2mi&(~@?t6F}C+X?|0e?jY-0y3PH9JxCu^8Re$_ z0BQ2eEXAeEARV{3YgLO*Ae|{#?vrx`q=t%Oqq3DCDUls4*bxhot;daCQJt0SGnpBp z0+6(C`nH7)4aXgd%1ZW~wR_3Hrqo|9YfR|f+x>-Xj# zUlhRmyuD=c_@8y>dAj3PWfq-d(l>ZI-L|WHeXl5C^VV^o4P92RX>?c6PKu9cw{iq% zCvR_*K8&9CcIsuydhwubQ*5Jioe!EayVzlt+dxyk=c)Vicc8i5sB`EcdVVL*cJwTZ z0!>g<%DjwQpb3r$c`>yYXvQ}$Hg7c>G-L8yS4ZZ6re(7iL5nLuV;$u>sW1%GC9TgL zznB8*q6t$Y2AY8S`o6+*W^^4$JTLp~R|4v-oo2V~)eO{|p7`DPPUj(atgA71*px21-{<58C0JF8x+hv0;;b!H@Y)%vtP{-#Et8a6aC`L#W$Tzbbh`TP@9^;hfK&~;ta=wY?+h$kpB&Rq-5 zYyirezPpxLjtAxF!V_T`yFoeS@>26L3qkRl>v;TKIw%UguU%P8_bVH6?msi*fnsNB zQQLV|ps@MxOkCMoP&6Ks`|GwN$S*wnWiod$$jOVDj_Y26eAK&^x8x2WcOES5QvWo_ zvTrvXbt4yK1z&Op?WJ?ih941+EWUuuw^zp{(;Ia zNRS?}9~XaVD@ePZod4L9t_v=TteIQ|NZy(Re;+goB$>_EmkNG^WZM3)dNCb9;@515 z-($M}P_~j7c*#IqQSVHr(X&9jYdbf*`Ur?mv`^WbKOMw9yRTO+=0My^khLi4If%%b zPa&=<5M?>(LaQ5tX!f8A^DRq2G_tHBw#*rXUwu>$BmF^SG~&t$?E|_mnBdzsqBRKD zeX%Tdz5>FAQ@g2)ia=;Ty?wmRCb}<}SLhh~76dV`hqT{k1A_jeCb{+Y0)gk!Q@46L z0>9MXd(fRw;J?cBUGRA?@E1963Euet_<>tmJaYRE{1!WN#=aU1eDTeL=evu57uo$n zW-jFou7w}SoqnS3JWtzx$lm@OXw%-;i!_>6_xhf+R=`UG?ViTHye84>U}E&^;9Vln zdd2k25!!*a^=@~6@h;HXI;`aAx}^DWt8r1uWYGLv=G{#C3p6)9S8$5)pdoJ8EiCDE zu;tBIw-Je;33LkfQr!g2Xq)2(S}V|um{Y!XBfSpHe}`STWD1(*@~e^cw}Sd>@qI8U z1oh{DE^j~3>maWFQ;i8-2QEL&&1p0O)aw#{`8T2S(CVX0`Z!yFdSLtdK7RK>J>-b2 zSySpKm~L*yS*!!KHZktV$(5kW9z6Wvi&mg|H>a~#iw~eW=jLKyI$(2sw}qDy6~ZoVI?TyqMn2VB$4U zo@n-F^L{$__i!}(Sm6W8fqN#y)b*fvGjW^$%)y{|FnYZ61bY5Y^9he8)}Zih701o1 z4+=?1wt>$ZkpJHPT-xxR2r1_MrRlChHA0@#wts`{CB(g&@sqp!y*Y%P)ffqqCOz8#(i$R?C ze7XOT1Q6egaLy>CB*x^co7)bX3F75Pk8)9)K&+a3&*02Z5dF%!z5VI}6N86g zz>hq4CHVS2;CH_J^LvvYz#p*%;OS)G~~-kbuSzu7J> zr?l=oze}DDR6U{Rztwfe$fUa0cMn;ztoM4*hO9Za%i=U>C+If5?BEYt&&BQIbNhkT zCj4vhdI4yyswY@FjRH*(=`?pl8_*QrjBeM0?t>FPO__Zw05sRuNH0w@1kHwCxz)Z; zK(kqC9zD$kG;W=rzZb|rGo0~rzhCd_IUoqsZ&%NF z5l#2Gr+Yz*t8G9Xb4nWiiTYd19;7_oq5<{dDw8>BMxgF>qcHvj-48hZT34^tLr^Qs zd%C9W2DNC_?W!+lLG`fb!2uQPK=rI|+4k8ZL3L#I#WYz1Q0=c=yi-1!`dK#yy)bVB zsyVyn3(hYPYIIi*|J0FJAWJ*_!j9GI;ZTO(E6$Pz5v!%=cj+XLbA``9vgKT+jr}-~%rAY|x3ecmjD7u|jHdscSw+9Y3$sBSJ20Wq zMK2JCmbRPWcM-(4i(mf^_XKhOy&Xb+yaUmTypwW==^(oCBQP*Q3?jG1JIVo$#Lv$oOF__~_-Oei3Gh>V+_y!=(|xYd2Tz0Fz+dG${%N0; zz#mg=Xm-~Ncm)e%V!p_LuRi$5b%O!$j(-_=_x1*QzJK@ZBfAW|dJAP)cJ#XF-j#C_ z3hK`D)JG@J$5S8q?m%wkJ6_%EyF&cSQ^cU%88v*;EN{?`U0$ha8V=fVuX`^!NqwP~ z)`lg48ql^FdLk+79%#NccU`oVp67)Nk`~Nw0Gi9!))lxn22EV)Z%ZAW>sQ@9n)QSF z&ue*3vpP2gjmuEukEYZo>VI&^#*@@PRxbGE;F$>;?cQ5c{@8%})!Pj@+4OvW);IEF zJ$im0Hg(y1*8$WgTKAi9vpuNi`|@8Lqd(95^22#G^?f>!gXJ9$fVyj9%IMAAL2V@3 zlr^gtsQ!cuIQi)TsBTUFJ~o0!eO~tgZbO_vwflhZzCGO+Z|}ZeI=l<0Mk)Fxi0GU@ z;eF~L?O;$@w+p!Q(-lkqg} zKv8`4N#!-V-xW06y{gwWP=uYWzm%6u=blNn6D^;BqJd}?x1%R0T0`i9v<#5n$TFD~ z{21g>G5=YVQ-7!1Xv_6er670p4x2hE8)UhE8hSSQ2(q-QrFr*#KsNq(djGD^>AVvZ zK03DuWTNJc-J;7uS~$c!>L`G8%?}^3JPM@Y@dpOYHv(zffoA3KIw|hS7U!J1rfasKs~Q)5VdnV*6`3k zI^VxsmyLI=D6twr}; zX7SBI+tg~6-<~C)`B2p4$+axdeBR=4ygA+fUU>Sl&5nzpId?UoQ%-x(ELlG;gdYT& z&>(!6>p;**l2el?*QkD^nd{Ow3)J^=x}Ehs z0qQ*`pG)`iK)rvG`oCB@-%N?QG^XivP)}IoH4n7`4Hk`kD#*kACykfoem(^O7vOFIc&+Gas6hUq`;q)h=`@$H2p)Nq2lAlA=Tleh z0lDwJw^4?hK+d1kY|7x?Aa6Rp`63VMLc{^?#_ydwhy~nCcKFe52a{}#2inn-3V1I?LED2r0`Kh5 z)bYdSJF67*{woJKbLb#u>i-9?uN}`zHt-RnWKzyJC;6SUj=9`Crp1hm6H{JPhlp6??M=a;-R18tM1 z@4nst544T8xOj``-1D~eL4&lepvjZJ`jWH>G^d>&f4oHfps0J_!ULT^GjBnkPD6)+ z#%J06cPGDrrd!ONHwUTj-&wQ!zG^J>JL5ijKb%T)!uQKtJJaW6 ztGe$AxNi3wREFtmFE>92%ECtn4-KT}|4P$75AQ{Ta+gu*^ftFZ*=*iN&wAA77mxoW za3i1yJ-of!f?;-6s~TO9OG|=Yx(3-hy~szWtA^l_1I=)%@%A z4o_%Fm zK21Sr$ z7Z;y^@nf|_(WQX$_2mH}XQzVk-f7FX?Y@PciU{xMNlKdZ5A0oICDIj(6z!9)I3_+HZP( zuTb0+r`)0YUY^y%ph!?V^ENLWNq>g9?aqdXK+R8&aGOZ;G6nCGstL`bv-r;E^0ai` zv6Yp!rha~Kz>2V6X`l+{pB!?!E2z8#;;%lQpc?rh-|?0NRE_(2+XOvT@k{Jz-JDkY{Ngs>CDQ~PmoROV=dTA7h zf0#^P+=I?F{-)L!?k)rI=>5?pDjN{xdTi<*eG0@f(@)<4g_21J&PX3ttY0fgrpw~017N&TB0=4u~15XuMr86$}Sp=0BM_rY|2Pi+#@ zqA5_F7d?wSO7pAcx8pzch^2GA*#fV#fxyo(Zy(X)8Su}p3u%|t5%^to3zp7_1O6QI z;+JVHfmhZvuA#>Q;3ZWIA$$km4Y}G{aPSiFHZ=1c^?~+QR2B}qeFb3rY>8;7Ll-cf z(&7D{`}DbW2P}R)G#(DdHqEapchY`F!MCK>-juWUI}>SHod8C0EtU^y`laqXPp*n_ zt3Ls>x6TFqUXWS$`j!c1Ki)=wc5|iY5!-8^9aJGN0lE$hm7e+LJ_od#Ydt?I7lY0S0vf7I*tr|0#f zso%MH>7z|_ZfaV(JmAzPP`~@p>N(dB)cGw0_kPjix&QX0&Zr0KsN(0gkB@+Q_V<7l z`PHCa>Zu+?JnLJNb`VpMP2S0(0r<-@S}Ns%57A7P zgwAhG_qi*+_Tyj?s5W)?I&;9B`kJ44Bix%# zh6_M8AhG9@Hnt#}W%4y&G!>*JzLM;GI>%>TKj1ei52T~7{Asi{0;DS++B{09zNVmE z|J1X+K=S6&n1nObzwy3!#q+5KBs&79-UxaH64TG?Vi(Z!``ZN*L&FR@&!6)>+J^cz zNBT!bxtoBv_0hxw9qE3x`gB&m(R7aAe6qvGwZB0WZ}4hoeRmM`n(%w$&ms^hPwd=s zCXVh~j~2ClIuC?*uA44@wjG3SrVjJ3*@Cd?;i319tU(YJadtr)>Q}z-9Wix(DhQ@L z^ck~iItbbwkZDHm2ma-Kv*Ol`1b#ug;Gq+Zfxjg1oD&=dzAp6csIyAo-Pvtj_Vh0B zsy}CRZBBblTl(j>HKy~-u$`Os8`1v5)1db~+x7&W=9tLh{c?Jq8(KBEV*0~Dzt^4T zN$YbW)W<=a+-!TX7z%6E<0wJH!)XLo+vs+QBa z$HDp7FS_rYcCD3@h~`%d9(7rJEC^Jc>aAJUmFB=Uy~J-D(H!gX`mCzaALzVuI_T}* zW}x)7Gk=iS9F$|Xg?3+IPyNi0(MuwhgW}KmbL71xDAslC6(gfQ{?z@Zu{Upl{PU6L zh41B5_v7zJbhHNfj;@~D$J&5=-l_eqMWaAg5mY(Madaj-w-4uA3S4 z=`RgPwCURkB!SPHhrCjQM4j_4vwAE@9MguH%ys~A^5AU2uCCO-`E*>?oN@_`i>5pG zD+KYt%(lTMuT8M_PyYv{eb^# z(u6f>biYch&J{Qo1HZ4`f>vJCw_o+HVBU9U;Pa-h@-%e;-d%_G)7EbS-q4=Khfh2J z-qz3ZA-ci9Q_nu=IDIJX`}Di`I*raP9z%Q^7Szl&g>74Jccs0X1veVSxr5Q`kq)C& zXTfOl_+Ps^((B+@$q?~NdfvD8eN}EW3JgC^y>fpvea_&VIm;!>w}Rn?vN@kxdDNZf zTw!+Cz{Q}wd3ECKVY0f{*ZU+siJ<%4wXYKvno{1dPe%C3<6}YFuZ?-{0!z>e-mg0A zXb)QB>wdZIssD59)aXWuy=m?n@!E8oBWSjIIIe#|_p=-Kbsp|Q^MU>W+HFs5Kr>jq z|68k(ppmEj8S6*$0^ySHx290vCUsh7MUfKJnH$F5zB3opJ9}Ph-+<=0TSlDgymB3= zU7P~viGI?Y>sP}A)95@@@BA`h9G&;29cG=_GZR!97S3-hUV-Y#%x8;?BPhq$qD!{> zDeCX2tWD0*bzn#}-?jTKP>p%Dci`bmbl%zXGp;BJREmOk0e8B9^3c`w>!L=2@>;|h zSVR4uUh3Hi~V zws%j3k30s_b5Y*XdD}qxq|=eo1rtF!CTdcK!VjeO8(Xa0>;sb6$!`iG$AIK@qh?3W z1cSsY@Xaz8$|-b$1D;m_#FxxHG9Ow~KA}2d*r%Hy_V$@zwdpyCyHwN%ntO__KL0P) zxRlQI?;BTI7K3Qs=ogPD*COh1IjBVw%A?)ba`Fh~5 z7Y%>8l{pR=IlOs*WDf4^ET&cEHlu9?k1yLzpaK@C^i^X659RO!f=}ll|DfTg=1v05iuFE*!E(@azr{CvNI5t-A?u&@ zo$hmQ+XyiUnP7m26dQl9@^;R2h-?Rj! z@yODu;J%=EU+;|Ai{@BU_B<57KLLvM8@;0m!|=%q2x* zK)yb2U~~F){va zy^kQ`7g{&W6N2!8C8s*w0fa-3e^A>8f^d^rnEOQ=5DJEfx2injc6FPs32EI^oe_moLooiYj z)235B?{_Axp6dzVZSJm%+D?1o!kOoDCWyiKR@dZ{F9uVVhQ9 zEKCh?`$K!#H|-tk=fr}M?!x2-(`8_^xs10pZ6+9rtbLRBZ2`l?4gn3mOry`~y?D-K z0Rh8+Q6DO1oCHJBCXdct(!k()r!1474Z)yW{BP40K41_Ke|MfBzwSK0v8-(M+2No~ zoY0T>8PvVL^4hl5MFyZ98=1c3MnBMW3jE~gYyj%w{I-8M zdi;`^Tsn*L4krgDEH=pp^@Rb8u6Lnx{`_NCm&a65zB@Ut_%`L+EPI|^=o1WTJHzVk z)>V{anAo@c5Iw%Ve7vYB<#Z0UkC=DQ0aT|Fwq7-%ug`4wz;6dVjz1k*K-WE0qn117 zSkv{vdTE2M!YWXvM_(?it^j3>PWkv0O&HoLOQ^mG<6X|hf%ChU7UV!-5wOLno_=Cjy%%v&AeuMa!ckf(XIf#AEjf>Bx z+)cre!590|>%hX|-lTTauQ~Y2Bc~}n&Is*!{t(TX-fguz``ZLWjY9J#D$D3R?>7H+ zH9dN+ZhCse4G=u{QANj00bxDqpYh**fgm_#)5|wybiX>?@PtH6eVH-EN2i_xfqboI zZ01kkZ|!mLIlUVc-(|?VNHPL=w|i$rG^Dwd;Abn3n4iE~e?IQ%A$o+)xA!lO1mo+i zE`??G2cE%f7`5Xkz3)KF^v7%H(ZMV#wAEKIx}XjV*{}ly6TKIT@N(C)p-U*|oaJQnmg;`z!wqzcsn1{B#_Z&Gnr{^@7&E3#K4?zK=EwN8 zq<;V9mi6Y+xn_2sHmg6Mq`pt|CVsLPXe|037_SJYe9yg(pQjapI?toW@LZZ-y~>G= z9rKv>8&=*G9an)m@?D=q&sEgdpXXxp;ufe!n7;8Wasjn6t~9>KMo>2_cMBO!{hB8m zJSrbiolkd@NjGtHUt7?8(tp&q3{iT`7`Bh{JK^3B({n)8XG_;BW}QJ<;S$k=-iJXY zYdOECvlS?JdKC-{cusSyb!m6KM}Q*#+ArVAG*C*GR9LR{raHe}Qoig5^>s=toA1_v z{CR8FOxrlxFF4xpz7ORU{vTO)0##G@{sH{n=6O`8BuSD)M270wp{NiFA<0ZqgorfA z5E*)#kPuQzA(}`cRFX7D(LB%dJp8wF&py`r|Ezbd7H_C)-+lIe_OrjAlW)`>AI5e4 z^?S~p{fO7|>31X5wmd*0Z9jBQ@41ge4%8a0wVI7Y^z(}f+9n|3coA-o3%C!bVtA9X z#Tz`|OYZ4ki~DrutemGQH;#ltU93uCPT+d|Ovfz40wlCX&*P!~Zd|vFy>fX~BksRx ziC<8L>-1mDeVi7xBSHN`4@~Et!{<>dRTcQ(L%?H)_;q1pB#_|tTuDtB*X0A=^(x&) z`~v~HOCG*Q{0`p_)-BdX{1MN-WlmN_{K_9o9!S2%=TN)>zS($vW3878`xFu1-Qva* zLU^8^&^lnum5q1{PqsA=5D?Go;$#iu$;`64u)rM-Wh-aDN ziO%=k_`G$VN_vYE;vO_w5M0ZHxL<94cz@GD#69aqwn=jt;&!xJe(Vn(=gp2AjEa;H zS4i4W|9Nx7HF11q=%ft9wb#o=J{zxR{@l0kNMDB7H+3x5ztBf)J_q+v!`FztIriL_ zlnliBk$EjBaWnR=!=od9V~@NsB{r&d8Dg!jxa;t;2F5*GEv{^=hOwXX#Q3CCVKgn| zz)p~WF{jCn3s#KbzT{VScU3cSUrz3>&11NpsT`kF6pH&G_WoM5)^8t@s_-}18NV7y z8Fy@!Dw4zJQsO4r(Wyx4{;{-%^f$PF&1}uFU+PFQQxmS@{vFAyYqgDb;67+MjohIo zyq^Clw8e8o46obmW^rjJBS|6eDep!0;d89|Kcb@UNYebv?m)#(+=m}2ooPloqpCxLYS{3`Y<0}&+q8gGB-jJrpr#h-J6K} z5KJ@kF5>xH_DZaYHtyRIoHVw=X%-T{-pYSRd?BvOr{DWngZu9%@?Kuzw;tE)pGrNO zKM9Fl+%qNFVhD-eT5&XH`9mZ+(PNuhXBQGn@R7DJw!A;`w{x z=$uLGasSPLzkYXeC=xkgX2M%>842HBCVO)n*Jmau#QpX{nlep}2n#~8d`x%2#{wft8kFuCP);Ws%XP-J)OLcu%SPe1cfVE+TeAEdr}?HOCd zFL%)N%d8~C|Gg?YLJprh8Q)7x(%Xmlg2EQ+{t`iaay5#vUON!q7t2rIZHy70fpm7c zrv~D^t1O_Q^Bnib@9cbBH;#DUW&i376T|h$E4ADiU5MxIy;Au=+&?2<`q|Gg1o6bK z?2u_LL_BlHhtqX=YDFy3pXP67;CWqFvfHPu9maI8r@8C>2jkMJ z$$|gvhcThx{I|u}3)d68;}E<6M)WS)Sq~M!D3?@YxdQH=^rHqklHAgHx6l{Y(K{+# z1OMK4)AWAS@KzH^zSh~cqF4w?D!5voC?3Y^4B=@Lrp!f>C$BH;+=ut2I@OZ*yX%p} zlUvoVcke+Gwkly8!vm4T(BjrL=QrbX)*Bf^5_rF<8FR3+1<$K>E?boMj35cun$YkE z^YJ=-sr#lmA-Hci;I~cNUL-c~V%LMyS-1}AW5xAO42gSZIoS9QATf`Ox-xEU+%HyT zr*J(O_Z6R3O^PW%Vgb|3WV2r)QNQ8N?UT51U%ZUdokw;^Z1RtQW6jr*=>4;6zT7WbSGY*#uoAI(;UO+6*Hk5}udjxm+0uC+_CkWPtm_49I~6-aPj zWytm3NPNCDXT3?@QCxrd#s8#z4H9S@o{{B_>*%K^JQEf=g9KM!NMVcMdi(czPFAyc zkpNqBp0R%w;=j5o&TFa(UZ?+_lVFH{UUa!uYB!#@rFSh&i@e1wdD~1_65O5 z+;Bf|dAWH;FuwmW!{2bldk@6>JUa9I>ITHO*IRh{n~k_nW>KnZktX8RNjLkDkH_za zih}VSiHP?|mGiG|A;i;lLu;WpK0h@c+NOv1Mcnz)DxN40W2QOP9ZukGT812XX1iX4;4?Qgrm%WX{V#yDP^HJj2i2H*^k(MNc+{VR>Ypz+#=eC*XO=z7v?Y9iCFR# zf=9ok<8{of$A_fD5Nq0sZJ+0zhjHWXDb^v@FlMDXvovlFjGLCJ=m))ru}uqodkUOj z)PC!H%daCa;(krHuq+Ekt*^76iOq$P12so?t!jW_-;`AwyMtjUv};3-fE^4UTUI{N zBLw%kOf<~J=NJ+*Mtg)eOhyv#`_ns)bs&iWeR0o<0VHuT#(f7@0}}u9b>-FVxZlMg zFl0pwA-)i86MB}rhvWD?IoE@s&|H2iCSxtPBlWULrd+#`)*i%TPWdFC=Be-tf=q(%3 zZH>>1#x8rxtVJSr+G=Vu@&0g(ec^6J8QxbO8?e&RMI!&z9$L6n1K(%Lt`rZ#eO}Xo z^*qh9k;qib60x%iNH{9Xr2d`=5_)~;PQR!j5;9!WXPbuaJuQW#5AShbK>BNqI~C1H zu$X6Knfn4Hcrf?H#wB?CZc@E>oU0TGRt1TzQOQICLl1<%bSvZjM!SPcqVTiTx@;(g_ZR25w*OT@QsVStP_ zt`lAnY~S;~9P!E(n--tmjPG|u@V0GUjCcvHSJl{rVxz<5Rbaxe25yk3!7 zFW-6sv4k#u=oQ}!<2+Y}9nuP5Oid+r%aTtpKDTR6@a_m0Gx=q>F3bx?O;e8ON4;&I!(;l{~nxL@UZ^f9rDXxz^QKJ%_?AOT5>xe3OGh+j?6 z{OJQcE>rg{T5he3_`?tW(C4*A{Cel?KYzsiiB=yc{l@h}-hPGQlcj-pocoHIp2Ky* zLt)W*OCk{Of2YgDgEk=E*##dWwhH6=VA5L4-j9ek;73b&ObO26oA-Fd#4or%_u9qZ zMeg|XYOd`+g4fX>2WPjc<9w;1hJ#K4OA&X#N>d5*9>ilQ`t5j~D&lTawjFw;kGSWC z%!!nGj<~*#NUX@k>+B0ULLSyz5VxFZq=4K}yq@0D^~YyAVvoHpJhiS2alN!LzEN}q zaT%Rxl<|Fp*muMeB}H!|_JYGf*fK`!-&eeX*Cipg<9)U1`2G&-d-}PR-Xe%~aQePa3Lm~P?OI}e|${2k_=l}Ok#rL690 z5WY`W?5B~PgV(`-9}Bo2#o~}fEyDXX)yr)esr2ie<@VC24#4l6v*uI}IcG}{9Ak$=AA)Q!h! z`L&trCgS{kOd39aH_w=%>xuYh$R8ZpwG^MvM}_B2cSHQ2^bcJP zSd946s|E8fb|F67$iF`j|E`?bEBNp|3)Zfd;nVp3kf@`n$B#XT_vMln%N_;9cfb4j z>n6Nz*1LGr&PoySnzOIZn^b^!dcSJ&>)~_z-xKGnd@n}4XP$Qd0UyM3+b0`;=Xn2T z=@55m1o2K@8W#{_jCc~VPOY2Hg}BRxw;_hi5O5re7-N5@o6haA$HWZi;^$15UYoJ&?D9@l|+R; z4a7ESG0IfFh**uT0_Xkpaa|C9+j6xq{^me;Ain?1@)FNn#@mlrst>)pPrZb(vA_R7 zkubLM?>~baj9=Y%zVr!7zCIe0*8k0T_50w$v>57xc&9Op^{5 zfxeNc{2x19puhEN@`pH6=vQww(7OE|`V5{MA6?P{y_fa86+Nw>@1VrzM=n}O@C4^| z5uAF|^b@YL2yM76v&rBEuDek`kl?^YxAC9&d_2?B-JnJW37ia!O=;bS1RppyMLHzl zK5&~&oA{EDfKo)GUSAyI|CT)E9g7dw;nrd+E(HnrFH?`y{*3sYayBj%+>H3ARbNV! z3d83uY5^ACG7x{2%=q~3EX0@9m$XQ}5AmHAY>&n3a{epawh@E)e$d>GLJOY)#5aA4 z%6!d0#G5_O@}&;0Ll>37_{^V(@7%Y@i1&XGuk(uQng%-fUi0RUQ6^r9Pvwn_#imNc z`z_3Etfdz5{5aI7ZvGSZOPy1Hx#_NQ$@fpg_lMuJ+*O8F(2N92$ae#UG5aNzoG(P4uhPZP7 zXeoNXL0m2!`+@^-J=;pfHbM-Kdv3`>^Cx_WON~27?mix;`Lfx!!y^$_#5mro2_vrc zEs;<2#Sz<8om=+h5Ms~L)A4_6g4fX{GUm28KlFaO+ZcNiVil~nllpWQvE25A_+&LB zwqb13)7uKT&i81O`CKK$QgqPqoV3a#LK}Znihgx4PT))y5Mx*vcK5=w} zk*x(vdqU#zw(_yzZuTRk6@7%zvORMi2US&B>|yR0jQrCaQ-@yo0{@&hbJ0FVLG{ zv81fX6?#R_JSu5agg&0E!gY4p(7Q1_@^MfR^z3;kTr`{l-EY!Q*% zH@#uh*#8Le4JBS~>9^?5Ub3(|6rx*A4+2{I};(OWL%2E}3LZT4Q zbnRUJUR;03+bJc~yB~2CTFhw<>_J>!0cVe2*G1eOSIk9w=OgZUul*%@@c3O;lrik- ziP-IvWIdfT5m))2Lg}8bi0h_+tZYvJVn5otSNJHNPd5d{`0d|@xb)|5ncRcV5nHWp zEA(jM^+4&kywxMbdN*awGm1j{~=Z+Z?IbT4m@sCZJiFg!?=_o?|p4#&;_I(FBR4WIghFL}NQ{KZ!l-aQ~p|vnJJ0{hk<`tfo`Bt8+ zF@X`OJdwh_-!SZK5nfwu2O|yJ(#}>_;q}Ff)gIM&+?E$F@BJ|XLq=Q6c;9)$@DuLL z%hfo)lG}34^{Pl1jQZ^?6CnqK(mN;22#AECT~XP7Rm)-U1AG0Q$`TlGu6(iZ{1WJ| z*lS{Fp8LZUq{Wj;A?P=%tKGES68fSKx$j$55B()$Mb9c8LjMwT%b1EK z&?ns@e^MLgSDvwtzc`H#`fi1nB$VetZ|{gza`_?Xsp#AgAQ}KYtB$vX;+rJB7VFDC zm9wDd)f1bqWw)U_y6;Pe+BeN3|9Rp(}He?b$bi{e1)zv!^s6H`OsPE zYFQJt8@j$fsw@4o3)i(&|5iZp^Z2aOn@tn&_)Xbn9XB8G;?>VYLp(n5iDQ_GFWxWZ zO#h&V^OL`;v%UBA-3XiKar&=h)Ze3l7v>gKP$emXnY5r4}WFgJ35OID?p)DPB;d!Z~W3W%5p+% zBNeS1%Wz$7{jngW9(-;hoVIG_@5hKW>Y!QpY!PC`zSWo_cMHaEENs|uRR{0W%9kJB zj>n}P@2tI7@cLl-devuxmN0hKE7(~>9!9&g`Yw%%zcO(WzHf!>{bf|*itYYi;2-oKvZp>F+gXi5c z6^)qLc)h#AJuyo%4Tj#TOZ}=!gpoCGag#$23@5Fhmfa8wL-X?O>R;n=8t#(Tdm$Kx zXVod}NIwBXw_Rjg!f+0=qUtp6P1j+-|HoNLRW}&omy$etp%(^EJ{1w#6AuHzrwbMP zk3s)=<+&OeyJ4V4pYP6cCm7gRz*d{41APPEt}MM{0euc9s#n_@LI1}?!|~(&&_8#) z&#){Jdg~PRHZNNYy;kYB_KK)O-~E7&f@GZIEIPY+Pw-Oc$v@h8?2iKUn8=yBJr{%C zvma~mn1r6DEfpSHlW=dzrzh9lSkSFwH-6Ww3wkVDOC=V&KzF)l;e&~~(Dht)YlKoY zbg87gj_)jh?nRSx=Jbw0SLln(cLndD^X?(ht9DJ69v&o2?Wqz%8AzIKI9kJ6M9 zUw!ECO8Qu_Hxk;%GIf3*UJM-_$KD<~#zI_los->Jns#!g7UEW!egBreGUBGnqI(fn zwJTpmLj_{T&2D1*f!D8jgAfV+)p6O}O+5u@nT(3j-d9@o@za`Tj8argYXEn>R3u&K@;d`T@ol zZhN9PO9IATkDttOy$&Pk@(DX9q`}DAq_IR z@cMP+TEwFg7@gZ%f7Oi(MxOg7PAPDOp~~R=RF?`EI;baCy15QU=ID6E%o>E@XTP_u zbUO)yZGU$4%xl5p?OcSYP&W*#d(0{>=!Bt&8AFHF?O|YKO2>?vAs9ISUPnKL4MQ_C zGsoPTU@*+#?tg`NohxYVy5)`l^xqu&a`d^fvNGQzcMEiu zpO*`IW{v0R>;YSg@e@IduBG3r(M+ z4jspLx7RLlg!Uf3BO|IE&?&y_hsZNo zk2w#ZUG_otEWSn1DxWdwzZH|9WtKo#YX1yqlWue{i^0!PPMrtF<l=?)DISMJ z2aFJlu79#FeNMeC?hj)xlNRleX@s#=YMbot$RpM|0R?5%YQ&N;JsG911*3lgPPizn zh0zmSe%=r8bNtPe`*x9IFup2ugZr<$Fe>Em>aH@bUxob6jeJrAV@0!h0t6Pp*xs0g zh(&oYqGR0gc9skbe@_tq8np^WyBFIg?{k1rkCZ97{=zW4S4H#JTxS>>`fqK+t0)+i zFwCh<4Tq8YS)PNPD`CiI%x+*|86G!>ukpW;z~j$cM{FvdPm_K%DX(*d!Q`LMChD$$ zK?}o7)s&MkY+`e7(K$I7`dPo;*+%M6c0TXnMu=klN@vu|qd?qKNIwMW0A7O!guVz|_z?D2k1Cr-Ci z2)g@oc61!V^XCmcm+_YQ&@1!);0D2P=m|BH-?w-rbgM)Li#zOtuB3@cie0y%Xa2Wr z=lvDX{c)qm^?-BGwc$dE=E+RxtnVDu8yJCZvtQZ|KTn3PvYqvDU2)Lqx^vQ67ftA# zkfmcaZUbF*bwQcaHbUp{k+o%JZP4*-$!5FrzR+P1cG89SGjv|*VRgA)h0aN5V)>#~ zq5b8|Sra8&pzRO)z@kYTpd*}pK(6#NbS(6en=51kZGxpwHYvtK>!P^o6EozX-D^tF zrDFro_GC8e`425<+2b?KZ?-Em``GS$rBwy3sf+g)YuG|dxnb7$l}FH&yz*Y|Vk2m5 zQY`Jze+JDX<_l)ll|b`kn>*`QPJl+)K{;_l320c6Z>ec|0-6>b89)7S4GeMixiGZ; z!>%efoNpd?S@*U;4~%l^KQLmR5uOyA1A~1GtxK6Ake=`xSlQ z(=_N!DS44-JPy74I`(%cUV#1`@{_#nN1<=n%JYTXPv{llQ=Hi?gx8bug*(%IpzqGT zwmj?_^y!pu?Q`_O&tt7?w}NG%du-K;A4h|sw@B%WoT44{p4dH4FVh&hL#>AS4W~o5 ziQ_An909#jkMHhsngKm8YxyoJv!ScQ>yT61T<8kCuk<`M4tmT~k3Icf2HmX(erGwq zg)ZIK#dWuqL1)$1n~H}&LbrFss*V|f&^@c^wRA4dW%nvK+Kg5~r)JOSjS1hOD?>w3 z=iEBz+JEHA_E~s-EEJ0U(r6AHXO#|*CYL}L&+{JFLO$qx)UorCdlhs{TQq&4uMM={ zxD{LS{Tp-|Xl15pyoZkR;|m*q20>fNr|Bk6MbM_&_TO7PZ*-iCeJFb26m-b|Cv?k6ZN6_(Ws)BeLpnnDh8&fEQSUz z6JDKzE1{{}t!Go(3usc{%Dks|0O|`)9uJpX5A{kRRkClbpwaSTNR5*sGz18on*F^9 z>g=-CU)pm3Y7_h4_lcZ<`dsg|$7lFJy_neax93(vE${R>`{LZ8X2ZI>h1S=g&ctVk zUC4r7YMq~h=aC7Ud!ojmzq!fkaNs21O#iyjf9H#K--0ga)s0=BH(?I+bXl0ZIJ*t{ zSA~eW=YE5}-ZOQ=4o{#byl3ULDlh2S;jeFN91neuH@y!Ob%(wU^KL0U+Xg+-+KX4c ztcC83g84HhO@Q8UVTWhN+Rz(Sw|Zf{ICQ(7(BN`g0o~dYW|Y?*h2Cu+l|Ec(gkFKW zgQm)<(A5|_HF@oQ=z3r=IVd&@dg7gO3qRobaPNjl8|zchWzi#jT7DS1g#1M}d8$K? zl*aj{k&Sp=$-n(%kOp*q(B_}tWC@)o3)m7HEM!h}GhfX< zZtZI5V0TyT*>nWj9cCtaI4{EMPVQCEtc=HN+0;z05j?&QMCq>bg*LYy7w!5!FdzK$}6YDFqTt0AirUwr+ zcZJ(mneBphwbilXy62$Hb8P>F)AONuNB!=5c>mk`+REppIW9y@W?>pEy%b|^!? z{Vp_VA25-6>jaGt!u7s;O&*W*90Q2o#WZfF#$*Yesj4;q|i&R8+y8Z@uF zTI%{J5t<^=HNP@DsINRQX|%fm>eqyeB&Hfd6K|hhgq#vI?t0etep3O|CDgNy`#gfW z>8d@N)??6+yz4>!e_qfqdE)wp?|M*sV}E_)ob6CE7*_gtI1%bkd}ogdbU|It`Pb4b z!=Pqw-4E-`2~eG*`f2j*qfn=@c(0oKHmJSaCZqRG462vyk1yDt1yx~TkvA8rK~44J zw2l3#Py<^}9bDi9Rg!i0O}H;Yxc1tHZh=V?sWV-EojTS zdAtnT=WP7={K!jaOK`e;qC5;beOJA0|I`hgW+4&lCkQ~BLD1S|8}35uxA)TQPd?Bo zGI;CdUIpmL+;~YMb{@2Ds{EO;@B*|{@ZP@>eg--&KRa=ZXC-tP^6bvF*a|JSv-WP9 z>;TO@Yt`kw@j8-g#|EuXduVsFbDQ4C3(c-a+bc)6L9>8=+*1cLXd6=8UUNkg+D_yw zellw_H2Ef;wXekUj>2z)h2~44wf(%zzOQc3YP+CI_0Usj3}^8Tf0+x7TGO*qbyT3G zrZ&4?Fc(^O-g*`uF$4`st9-q1eWbzgu%(&2I5d|SdmS`UhGvW5eQHgnQ2*nmqRe$3 zsNedkx^!#^ntntZG+sRkO(r`PBh~LiU3F2!qoeImcVx)nU{wt?evufq%}j$vNc}n6 zwhd|r6c^65_yx7+4TgHtvZ3MaiP#q5NzkxR^}ncR22d-q@58&rpP?r3%BAy>Z=n9g zPx~XLhoD~ls_C3&U#L-vUSq8A9I7L8rNnQ9LfsSHnQh+hpl)g#&x_eLP_5llT*SHq zRVkD11v}n=+MoxO4q2j5E3@JKJiA3uWvshrcg+Q;%(s~}YqK-d_;3exitL0Mp}12q zQC?8F!?UeD!yYQ?!(-!@?t$uy2P_=d#6UG`vex{T5~w)#?Tky5C6xD2d|_f+wVc?j+IM|aGjy#nD>`_e|ad2YdO(&w*&q>Td(Qx zdpZ2Nn7_g1G#~s7lKb7dy#s!Sysqz5@P`IYn*-F>b-A4K`2{U6zs`G9Wdp7B`lrQY z&CT2c;ZT3G@TAx*N2p(%cqBAc2%4*Zw2im4LGwBDb()UaP*-_(|FUh5q3)`yb#AvV zG|Lu6TlJsC4$3wWZd%Owbn)i#+8mp4G|#hI%E zlKG)lQ^-JLQwTJ=)TmDsxsBIt2d)_YR|YjjtxHnd7DJ6&&it*Ha-rcxQ^SdgGoZoP ze$}I3JE&26t==)!7OHatr(a6shWe_`u-s{}Q15b*cRXwus?RtpOj#cc)zhseylz|w z^)dtdG&Pn(-HWrItzxb~RThYvcw|G>NoC$jx&2VLdVIR~q8zBLI)DDnyNOVx$TN28 z)i_k9)%S~;-iBHi-pU4pop^j)F_29QgGz_Y_RtzFsGJntu*@YBYF>zh7@D>~&FY)u z$8#4z#YdltJel24VSD`7!D#&TR7qPu+I$A8&ju#vl%_(3^yb`gBY!AAeLP_H`)yDy zBd0LFOAxA_-*cH$w;swemt3-JzXoOUhG_jDvp2p2P1O7ge{Tw@~`gyC%_eH55H?FF2)F z0fn7LUqT(Eprpt5vCO6-D4BU@m!r)-C|n^DpBu6g3jFiJ$8w$E*S3(UKWw|<=k>5M zjg#jgzwY)O4X$v=Uu=DK>w=$9{2@B{in|09b;oY2yLu1uuBx29v`+|fOPlOo2kJtR zYSQEt0UA)a^<#0!gSU`7=jD!ybbH8gb21Yh2!VoY83Ch_tKknd&L!Y?*jC*&NtRGO zMg01@{^d|j&Hpw~RcKhVe)}}|z0fXv#^ewv{p>C|da41cuDdMTkivp0!&koM%4JY$ z?&nfiqy;5aVfD|oouP8Hq0!>fJE)AGiZ(Uf#qZ0v8!!2Ogc8>GWa~~rsI=d7Ys)(P zd8*!Rmai<~*Ud^b9kUJaOR>jKJo*k)l%*POlU)QAfdj$Y&rE=y&-q6ige&2vp8UZN zwzHtZOtahSPd8NX?=!JB$c5r8&HURL$Dnxoa{XhfZ=u{xXL*XL4V1M%?nsrM0!2-m zB8)F`L6P&J3Dc@gpv*?%{^ybs_>*&PP5Pr-P$b~uI%MDrg|}`t<~_i_jv9wDZ7tw; z%;u-x=Sx7L>SK$@F=Z%-i%;>ivW4H%K5hOnm<6T2^LX+;UWI~{nd;l$zJmPxKLOg4 zhM<%y_*LN*BPcm8X!COeH{|c`WQm+w4tZTXwl#%U;a9bjSm~q>@XNgF-Jc3q$n%(3 zn7kk#@+4-X0AG3d`Pt02;^{K@sr_zJwZj19KG1)5q+<`{YHpM@TK5c!pQxqP>BK>? zOu&hT@nevayw5{1svC0FoNn$HUIs;%xRjgIHKDN2KBw(Q6Z}Y+6n#IR53&ov)9mIg zDBNG_+PV2D6cn%4=uzAU-@Es3Wvx+z?~>OwV+0bRU{!2MU!5}KCr6W54*Me-OT2Rl9h6XaMpA5BPEM%0RAj zfdNle9%MW<+pdz}1?g!{^9oN)f}AGQ&hLK{a<)a^6S7(ZX*KuwF3pR8G_Fs-7qu>d zAA#C|a;v2v`;=(c)Z%OKMX4#KKH@8U2Fc5}_iuymTk6-%IKT^8i$6rF_qoBR9gBAu zD>p&v*`4zT%g?~K$w7ScE)Kxgq2s$3$sC7|cP`^3-G7Wgwsa^}G)Y1p<^aAvIvAKxj)Hq*C?LS&(<6sxz_44f5oD zN`Al6hL7nA$I=z-;N#9{^u+ZA5fm&yE!3U~MU?JqH1O=`Z z+yFUwtKAOg^1+8$e}Cg?NTKRcPWXM=ckt%zB*>W)y5Y6WQFtH66)==P49RsW3leU7 zz>oOQlh4;1!w)Ies^0R~kW9Ug`QhE_0}fi#Zb0@CD>*%fDeyfbq2=oDB*1Prvu>6=eSB$=~!X5WcpQmCWDHf_Uouelf&R`>AC3x_W7pbJHQncpT{Z z(K!$Pe)$DL%OMtj^*-4dkUrM6K~PW^(zmUfzW#PNyry1nGk8V4&IOPb7twoLO#;#+ zdDF`i&Oi+H`fh`l)azIQU+i`T%`~cp&*{l__C;&qCH49pfalcfR05x;Pu7p$mjIt! zPfCpTDnaz$*TGo;3@Te3cyDnuge9G zcfg0{nr#a6(;$rc{$$_@^?fM8hgC>pPwG5KG1M8|{CEL8roMg+cu0Mniy?Wq{b6k? zAG~`NZgisJ7lcq>pCR0%zK#$`I%M6hDj0z`uWwdk!QPWos+z znM1<$i$7zmRKf4>pYPiMKGdIsU+_9QykaKUZR=Du}!E;d{x%10X&C@dAh+K>Gs38zBAw;}HPS2$3r1L3h`1HKZW=z#9JZ$ z3h`JNuZ8woi049l8REYX4~FxBJR8Qlq5T`;;Se8( z_H>A^Gl50@VD5Jj2Y_(_h!a5E0OAPHt^jcc7!DH4nr>@E(38I7`K5q4z%k)oCn5zpd5%K#JCW|iJ;vG z;z%&A1aT&4cY@nz^&IfTnhyy~qAjAn_+z{f35LbjaBg7pc4heBdh*Ltl zCB!jdTodA)5ch;QD8xk}P6}~Th@(QgD#Te~+!f-m?4w;4;QPj3C5Km&IIjF z5QlG8bL7WT5y`UTn?7`4325~YNH-k7D#ML0q2JLPThl6oBh|@vb z4$ATH`saEO=YzN(lmjAx^8+|82ysFfH-tDM#1$dV2ysVn$|K}1Ar+{_~h-1LG2E;j_-2;w;Q1s75AWi~t6DUVvJf;bVh8$lci#+4w>1no{R4h3;3 z_HmpF#;u?ni)o0s7R0$=+zZOVxWl*@#K~aX4B}`ISEIO|<809G25~qTmxDMR#O)xC z2XQ@!^FiDX;(*XD2ysFfH-tDM#1$dV2ysV#sjf365|MuT`QHYa5+!W%d(5?z` zRv34MI4s0vAx;Z%TWHTkn)Y4(XZ+I+01t5ih!a4&0mKntTmj+?(Cz?n2pE@uI0eKl zAdUg;8W87zaSw=tkic;fh?Bs$3B*w#t^(~W5O;y&FkJZOG7zVMb{mM}z_<>?d7#|~ z;y^Gi1aTsW8$me|S%|n2#F=2+3F1)DE(LKa7`K9QEFy3Y9PL`r&INHV7zcy67{tk- z-3;PrFs?=z?QGEQ25~qTmxDMR#O)xC2XQ@!^FiE?YT5yzT@d1gFm4EOM2IUwoDt%V zP!5UtKbM3!CA3>Y923ShAaT;j1fjAC~>p+|b;yzFg1a=N-7lJquj2l5Y z5(S9362zHc+zH}P5SM~>Du`RbaV)UwMO+KwT+r?XaWEJcgE$$qn?W26#?>Is2JLQe z91iSm5SN2?IvBTuI3C3HAkGJIKZpZDyCB2~VcZbP5y}7OiV$anxFf_NAub7VN@%x) zI3|p1LYx!go)8CxxG2O)A#MugsH8Kl3UO8#cZE1C#AP8)3vpX$&qbQ{UH)~97hA!M~SOJI~$CEwtw%P5UnYGyZ7@fN=pRC*T(21`tPpaRn%6K#6t- z>KKQB;}Yz{xk!JVf=Jpe_(D4d+KA&CwA0RkHtilfrX2(++C?~nI8H*!KR1DL6gp{F zfd}U~{dE>_z7ug5h{N#kugh?Qb{g{kxeb)#fZamMb(q9B55#?790=k<5GR6mBZwox zxDv#fpxp`LP%th9aVluHf;bk8YeAd~;$9F3gLW~9lfk$dl%r9_xEjRSVB8JjaD;PQ z4&rn$ZU=EZi0eU|58{3h2ZXpF#0jC@5aNh1t_X2Ph&w_Y65^5&r-XJ(h-1RICd4@* z?g?>Fh>Jp;6yl~3M}>A(h_k}DE5uv5h}%MYF4DB`@;~FBb^tgofIQB}`0E7l zGHw9J5!gq&0{EUR`e z8tt4g?g{0fwEc5Yh?7Fx6ym7Rt_pEh7p+vhC zuW85P0PR{lV4Mray&w(-Z%VC|4thb~Yv>;%*R!gK;@1rvrNh zwA(=(502|$^3VAo?ne+W#{nTO2ysGaH-zJev>?V6p_~zZ+8s&z=a5h?3H~{8N+`Dk zzaRSkIwqSL*MvAHjC(>H6yl-~Cxy5v#8IJL72>Qg?h0{Oh|5AbEgndkxGl8jB2D=& zh&lHq?*onl(1G&?XcvHX0yu5}zSm1R0LEyso;5jY=aS}Lg!d}`@NM~FH;w&)k0_8B^ykgpAAWj3vZD{}JI1tx? zb{>fPz;PgC|G5yf6TxvKPScJA&VM7W1no?4+zCCzI26RCAWjACRuIR6aV>~*LAw_m z2Lt;6#Kj;^2IXd4#rf)g9gWt1t_E>7D0c(rI8qMBE5x`Q#Oa{i4jIPrU|bL4d=U48 zI3UCYAx;Q!Lx>|nyCTFHVcZeokPw%II3>g_A&v>{nh@uNaZiYYLR=K$q!2fSI4ZQO zLYx)GT_Fw&aaoAdLfjVGbCITf7c%b2N8$i*T!3q|6R@0i1GdnPz$Sdp_pd83Ksy7^ z8Fzqj2#8BSI|alo;5Y_r|G5T~b8s1P+yhhEK`=%f7eSwP5_)is)L%DYHSH)EA&#qn zb9yLe!G?AhuqQ}449owy48&=m-3H<~Fs=h}9&$MD192c27lLvko-l3%aU?jdgca>f zNFk0pfpb17hho7$mx4GIv|GV(Eav`mEokS0xECA;1Lxxs7lU>(h?~JU8pPG0oejp_ zAPxuZauBD3aXX0PLAxHr`C!}+;($;t2zC-ECxn-FL&Olr5xGvgA~v)$l0>^BBL5r` z$|aGdoswgS?2Lb1zP%Z+_sid5QRfyvz+@~Fd zi?pkN$35jNU>}om7qE{>ISdwv<1+ZtP6PHeDYpUd7bwR8yKI!}fPH4ldB8p==n>X2jg~7j>kR5^&rj%<9-kagt#D-6S9GJL!Qx&$OGCHDWjbc+kfr|aY%?uLYxxH zEx~RZ<(Swrt_g8Y825xYD8xk}P6}~TGX6R$_jsmVHQLX}h zE>OSo@ zDkw+dDeX$AA&xVVO}i6bv_o-#b}4XfIptK~yhqBdSoP1bAg%@FT;Tlx9+pEUq3Lr-isJwC5sC`z~bM(;sOEpb6)SP%Z$XodDVm=%XD0 z{E>DA*t9diaR>TnhX8-1T>|11aNGjy7ZAsQb`6Mgz;O@yX$PVIpNl{{2^=?}pLP`R z=Mh(db{079!T`=K{Od3b{Bs#-r-8T)9LE8F9&sIL=YhBni~~Vj2-=C@xDnWupd1OD z6G~hO+L_?E6WFC74h3;3Xs3d>6~wV%Tnpk{(C!7t!N5)iaWROKLAe>&%cC6)#?>Is z2JLPThl6oBh|@v29oY4t9S_F!AkGKveh>$QaY2X^Lb)O1{~QtGiV$anc1MUq!nh>F zDIsnNaZHG7LYx!YJs}PXZI0x0Uol%}$85@NDXmJsV*>Si>y;c^A&<>5!Q$ zx(2c0+CFSt-+g~PB`1z51 z?swR8oFlws%h$r1JBTacZDKtCa>TuOPJDLHPsA0cmB1@!hq$$bL$%lAJlDjK*!n65 z#Ir>DH7kb?aYxnux95@+;!#U+^-aQghHoy#Oim6)yh{dO%zw53@r2$v{IL_~dMh2b z?40S1c;DJZo8HdE`-bvodoS%myuoXYly+DnzDY9|nEB1ed3PHl&K<|@$+9oufxB)X zK7Y27>sRbHi;|Xyf`4|BVI_Tb!ettoX1} zeIpXo`|rWf#0Dhbd9ZL9b|3}Dm#5kmsUX4kJolw}-H?#}so>e&cz=CX;YE-zUSIX~ z1%EZjL_+VIf>u`GJYd*ydq*~2PdVmX88~$h3AII@ni+i*38&-)IwfJ}9j)-c8G(Op zdtvY9>J>=1&U(Y8$+Ae~L%i?PTYN~=V3yCv3&BWa_hS9Hb&a?WNosb@g?C8wWAKd< z#|21ix%jp2ota2dfrb650ZFf^WpPp z>?tdG7EE;gh$O6!X1|Oaw-hHC96iMce z`RXQ3M^bybm&zw%XE9XcjoMruBqiSLRj?WRT5Es09q#DI{`CIE+E4I0N##L;fdckc zyuUbcW4D}m7t+*yoxL~*PiIPC+!Yv^9uXqzhw~l{awse)51>&A^UisMo&ego3_`2t?4dP~X)mVDr{CWRhS|=YVA|8=>2uv>^ z?&Ikb-aWw{VBK9qrPNi3$Mdq8Ko53FhRSy2-Cu`zwmO`=P>$4{TH6vYK-{P8se`7K1cjQ2XFnkE`s>a>1G&2a^w6+__7&I!1brVf~k%8 zT(3i7;7Qsr64+fkOR%~d32L-fHTsqz!O)eRuXR@8!l z%yjpE*bf^RSoYXkABh|_GdZG->$aC(olSe5h=d0(MX7&#fkf)Vwk|3YM55NC2U(Zx zalZVv-!~fYzNCDvNH_0&BwA$QlsOOk3TvNT^eb6{L^pElZBY(HqMwV8B*As;LUH-; z@WeUcx?3O5oWqU8be`RxYK8N{Bi*t+u`?(B`ejT<(Lp33<5{r->XG;q^RfEC6G+@g zZLaBSJ0!7T?t#<^cpY}Fq+PXf4PKAA&Mj`h9>mgy)q;J|NFw8slXo)quXwaZJA7l1 z#EFeIy1Z(5U;gg2y>uv&gg+NI9oUOK=qn;`btfW;dR3ngWhEr3mqSKicqa~MQb~ppZH?j_ zXAzt;H5i;*TmvKX2Z~3Yy22=56I(|E!DwsRuKY#sU@X&5wIBfJtCf_hAA89KW6!h9 zqZZ)&_VAs}g*|qNwOrQnaKs}RKcDPUmv8~GW^XZWE8k{!-<7oHHA)p8Y`$@3)Pr1v^d#;(S_TyJIuB5Vz#?Jv(gEagMEg z|4TWwy5$4qqE!g+@fFU!TRdjZbfx3B6uUKNX< zH@tCqjwXm#dCbHiRvq#FF}CdSor?DzFOp6g;OEV?zH*U1VZ__lemqjA1@XO=ozmNZ zpD$`I?oJ`Nj%(8(u*w2}8HIDb`+P}0sM)CgSes0=S zutx&NUxW`l$LAYWvO><*_e4B@a zPrGbAcP1DKUAR|dCxZ9!ZGndc*B!^tnX05Qbpa%@$ym|#7k-~v-WU(_u|UG9m;G1d zVW0KW3-@ua3M4vTrrLcm_8BzX)hZ{*Ad$e+$*!CFkZ6dD5v%?U5)-R>>TzoZ5@j9R zD1WOMiP|2jOZ=6H#LgKDa~b&}vE~;?&i7&`vtakx&GOif(BCfJz2h|YW@U1?pBzHs z87}iLSQH|$r{Cy#4qZQh?DHug(T9!TFYF+P^=%fxUv`%8FL|u-CEh*&PkN{_^_@N?w-jjSU4{;)T%{F$~5vGTjFmL7eLSo)zn*{;fn^`Iej zkxw^bFZpjlnY;*MKbZTw;tPJiu;;klfBYG-cRT9w#rq>Jp6rX&4$1g^azwLEP8P90 z#Shtk-G{hTh7*c@FT(XI;o^qR4v2eUq-cmUaj*W`AwJ6PuRQQ?WFfnNN8K$9{EGO zNN|TtnvX#oe!p$=9I(KS(}!asiqbo9F1~o2QgS>Jn)<-N=D-#tle;%ng233(_xXe(5VY*Lv}&Olbhm$~Ydj_f zf)L&H2Yg4-+{?}GeY*odxO4r%&`Z5^p7BoPN0@?8rqB3T@>=K}waQ_|b35q$V{6x& z{1Jp7_dF3*xlo(j(S{`^*aua^X0y`o>3Byt8q`^q?Lfj*?(N?a@;i@ zC&^&d&kUMNdieIaj5QN@+{|0t@w;d)`IxG!%0*#3?(qk4%Nl0V9NwG9PaM8L>#l1Z z>F3|kpIg!6BS_$hO_DRrmZA4U>aOh5y;DW|#l_m=&xTPqh3r-zLS3uELyy*v-Om$$ za(+kJdzxo0cBW`tB6Z-5C+7MaaCqX^%ajYvuJI%`pI&z?_X$tpv&ZjW)il?-`rdr) zMKsrX?o#({>*#vd@RLh)x+SQOek}2rEWMxZC;2vbmkITXKGj#c#`7e9A2I(md^=BS zs@oTx3En(On*%y}r&sbMgY`D-zFx|cx_Z#~=*$>;pJZQTs&xxbQdsC6{$L+ZYSpbD zjbS35^nB-uW7li*q=WZ_9NBHllX_{xo%){MN0jE89EjJX9+RW?&tud}-DH1%%%upP z^yYUiQNKfZ((m_%@Joz&GM{z~IqXO4H}$R8Q=U^-c+l8FlSaC}?3g#?n2=r$QHpA}Bp=2kXOw5f%Ut~*ovYJ+2eZ%(gCFj$5=gOL++I94Kl!L-gb9F>K z*_79ay2X4+a|DCM)Rk>uFvuKcZ-lBJewBJPZ6mbJhcm)>gR-f&a4K1B1?g{Dtfi z=(0AJojhFwx>}7txYp3z>!!Eode+h$*Bc9uN<6&|-Su@#4)dn(;3 zKZ3e5{onuy8fGS0%iMyV+p~^c|MD6H2W0RRYnhIkUsOCxVdq4$w>A9o-O!%I4Iy%wGt7SIqp4 zg${Jyp>NOSEzKR(Y@mC}<7hk#fwgfomwc3H+nW{8cj(`4^J)I`KlY4Xzr+TvKBrj9 zWXz0Myz22Y+(q4it;hIwLF`;R|Q zeAnY)fu(jl@y}yj;!NvkzxsDr0(jyBdBqYcj}xly9HTkgI@)s7BN2D+-!Y!}uYc!f zDXrInk4#>4mnW&DleX-s9#3M_zr$b5lb||B&)R)F$!$;c+_>-PefM#mckO6DC7gd> zJV}**=kEqjO8!air)ZjczeRUy(IEO< z{cn#awXFaA@}xIDooPLqdL^&N-*h@2#FKjTZ@0Jcr20<}b+@IS)?Cjv;K^*zoBL)e z;YpkKpIDx>_rLQ$m?!h<*}d$`OL?*qdM(`*G^fAx-)VWwllj*SrctMAZRo<0yuCcx z7ZZYbe!X=4fwCIZuaNouuYIiK$#Fvk+dHoCGsoU{v!B(69pnE|}NbK7v=op*wqND^7-MG--6gXnb+t`FaP-Xf z3zxn_H)Q$zEnN-WzkYAJ=Rm!uK|jCMb}WLPuwmMZH)nxhbNYmpjYc47N^Mth)divX z7WY?48$p;C`d4*&CG>ctd`%V%1EF%##q*vr(0ib5w(CO|5Xqa~%aQE@;lsq0^CYSN zFeP3~MDy)LkI#0^boGF~*}qobFQPw>u{9qD<$`GGw;A*z+Q-JbO&Q7KT+d&n?DvJL`cjH?g_jR>f$d0W%Zl9t~&OPdDjrubxS)2Bw zUAdBaWg$E<8-q-lRQlZ3oz-5mBqsB?ud-{;g#_@poms!i9dFaz?&F4gW*(p}(!&ye z=V*F=CiAWN#B20^&2PVlP3P!!P~455k9&CH2{hCA5Aei(Wq9q4zb{4y$dbq0dhyxIMLWpPji&cMYcpTP2zXK$ zE3ajzLgzQ;T`=E*2d!@sG<@7Tpd}&bioZn{w9dB}H?O%H+GgKQu~ce=wpja<{HImW z8ej3H&R+m+R_9myETFmVHbzsP@rr4#yJX3_KYyStUax6ZyAawflg^h0ifDdkmXG`a z>KBwgvG^jN1nu9Qv@b2Dd83w!9}K#=G}qXb?;IQp{8o!++H*cbN8GDrf1Zc|-@>-` z)G`U^Jf^lTJ^L+mam(esTwVe{w$)3oR}wns-O@}8m4dE|Z@$cs34!iGUe1+|0-!T? zM%0m2GSFq7vsjxe3*GltXy2W67X+inWLW>c30*NqDiU7ELASYvyURKS5Ik%3>T$XR zJyT<5ypZ&Q?r)!m4U<#?!Q73nzD6oT&-yAnFR(;O zmd;O!1`EHX?S)=jj_{zPJ@gRsqi^31rt?<0>c*{V(3_L?a-10T3O5IC&c44Egn0J3 zq~cKMh4J&kKMVs=)xJR&rrXl~0UF+=4c^q)@ zS>h1@qOS^ykH3t7zBw;KY#eES@mk|Fevt-`lK_?+_1n<*WvN-)5G@`@>&Tv;TW;{U z^5aM5Rt)BGmn!iiBWXX~WNk9qh`t7BNVqB7!<9(XWOZl!}(jAmRRad z{n1YkM!cs^sYd)M(_s=ku}v@6tCe~3xErrH?z`qg=dq15;&#yMtDxJ44X=86VwLXl z@h9kd-rvb$>a*zgM~G6LRD5~j`a8=X{&RDj7k@c2?rvARM_shc?x?}VJW0vV8CQxo^2GC_c0||uQJ?j!fgHKdle7+gzB4?JCwcYC z8MC9Sc@i5|^=`WDKj2-^b@To@Bmr8lW^NtGNtJ3ECQ3vEzT4>8Q8R+PKy{$y@ zJk1s7`OD%O=on?=b$`NB=(rZY(W1o)_|>UdhDT{G`Ie1J8w}|@CYo#1_`U-8dq1n( z^`!aFId${B>Jy=B=~2({kh{SDYgB8#U@UYlij1vSra9IL(jT(6I6$|VZ>vbd1Uf%Y zeBhh21-kxwdKd!wpgUS;qHd-P2qwMWx%BEE=(<0~w#GgHy5%0|`%E?i!4qDVy#H2yISxIyHmdyiWDP?3I_p+9n!~%<=dQ8N3m#eLXo~P~>SM&LF{_^c`3c3WnwK|i1?bd^EXt$Q} zV_y)SJJ?yWXF7gK)sPV zVqQh-OwQ5uiG@84zRu9+{j2V5@l_s&J8s*ZOuF8ntg3#hbv1Ry{>&J<)Qrb5DgEX2 zu7bze7ic>7eiV;;E^t{`xGs+yv&$J|m3W+I8$*YB(DlJ$%^`K$S5T*K@}=K9srx>& zGq)4yg8z<L>N=Jw8R{*9`lz*4 zE>CD4`>UxBq#e#cllzqIOB-L%{Oc{`#TZv;G<3LE`|tuZ>)ugInYD-d149otpY(vn zmVF2HM)=d5_alpT-iw6h4&Qt=atm5E4l$c4PVyQA#uYR-I%&{N)!RDI>Y5X9Nh}arGdEn;`$qGh4Q{j>{V{>|dn#)-j93J1 z(~1r!ctk;)&-NYmW@gaAx&F~(^H%6^P#*a>=n%BERxOhdCPMr2J#!v^S`Hn*u6ZU@ zT%!5sie>eB51~D>N#Fcv0dx#HIJCrM7w`kF&R5y<20En_!lu7WgpPfk;vRgOlbv>~ zS?ewJ*Y;jfT-)*&IFRs+}xqkYGo#74WGQITs5zS-m3YIha{z(J) zO;T?KEgI0dpo63?K3seYx+iMQed9pu$IC&J zm+O{5&ylnBu{Xk?r&w}n)$gy+U8k$jT;T+Qg<;ayAM-&t|I8bOp}#@+N@D2Lb=5Q{ ze^UG8ZFGCGk;OkpQx}9PQ7iq0(CaQ%aHMz;^f=D=xu=L;&n15NC>KEQ7g3w(!Ps#i zTFedlW9>-23_<3SIh<2_r z-1@r`L~(ycalH5OI5)nAZ+<}6L*m>wwjk}FIveF5+6w4)|ACLRpAD>k)`~^jS7o?D zwTdP_IPrky%3iE)c)A{HBU>CMhirtptrH#Hj!{=&Ntf!JjA2mIXg~X^Fca!kcJ2PW zWHQZz4{{P8GYo34X6`5)?+ta6%&$#ez7!gq|L(QsbD&X6-TB6kYN$(zc;|jn0qUK! zic_EdfX1IITyh>{K+}n9`?dCega-Mma#|VZpdqYhnsYDBbskdw!7zySi@m33W-G)) z<3dL})Z;>9P0l&x2mc4}FA|5npDHD1He|7cF0HK6xCP)z;Oo$s7SKuIoRM zg^!^nxyy8W)Lm%aF^JPwLvy3wBo28>3*OeTG;LRl_NU|1=7e4FgcflReOomXXjx%o z)-~ZabxhK}E^c*&HhpKa7CT3pqu;P1(2UlJt-%fpR<4A$)AD#Lo;oIfLU|@rmqV-h zh7-+>uc6gj_2ylVLA3u_k$gWZXunWC*F%E(CnY~Zc(>?vmVxKT>d;i`S)Ga*<2(gA zOh%c1&!uj_DdS%^@ZbE`SZCN(D`6*!kjM|(AgnBzhrzoogbTB(|3=i>mg4s9`&H>eT$wYp1Jvn_D?J8 z@jVf=zi$c{eXEdecgX7>VRN9Xr|d`aPTEgboLcDo>n?Q8NlDm`{?K{Vt6+Gh0J@)R zC9BT70s^tmHg6w$Lg(LE&EIO*LD$4qNyonTAXvXHWu2lM2qHTd2@mh4PFSdh>X4zd z|8AN5QQwvJvs*tOmTZEat%ghH*(`_d5yR$fgAC~2le$)Jl>x0!f2CHwwF05a-ldmD z&4%tzXPsW}rv9(I>8bS|O(1lTOPh3&dKUQ1HmyyE{=K%_V!lfTybJ2546OfD4*j!r zztm(XA9+XI;`&!8fAB_VG3+-~h6J?UExHX=MmxO7`#z``nbtAyVKr1dXlR@_z89+E z_0_7q9iVzuQ;5o*45-wSt1^#Jh01{O#pWh@P+jrX*u>HlYTS+`ZqW*cDlLmYbIBa2 z3fP)4cfoR+AJ1ENzDo&eeI;vOr5}cBE%#(z8r@#N{W#uQ>U`)VAI}LZfx4)h3Vml5 zLXFn@FHr0QH33=C;P4FUEmjAN-}naVGe=BWYCHmJwOU`9HGhHHhsw{)j$}Z?_7ZYf zjO=J2HR%-cm^$=DbZpH z%b+FkmHX`|DQH$1Kgs`DAvD|02pi#41Fb6F^YsI1j{I6T<*!#=p!tS{uK(0_Xii)H zShKwkS_9YQELK z-I`0#zHHJ|h%5wa#q4X}K3V z?RV*qGo-H5paoTTx}%_D*_s{0zI>(grFH8Et!(JzPyDo4o{lFscNX6{^<%)h$QGf65_ABZ`X9nI~f^ zm8bw^`;HIM>5_o562)Zqh67L%tn%uUemay&4j=1s^)_`j0#D_Z7D0K;G!w(zMNn!# z`p(#9J19-im&;u-8Y&FGH(vSq5h@<94X%vUgEBos_bYEJq3q(U*1788P&v461Mj^r zRGx7k^Qz3%57}^gcce>Wrs>a`(qcV+WFXh$=w1d4_~=>6R!s<6z#sL zJ|<9=Z8ZJaHEXE0N~{y}iiQg3ozoMf&O*hnz0Zz2E`;iL8y?vm)q$GvjccNvZ$jnN zLnEf7C`08<_v_`8Goj}0DJ7NdBB+%e9JhO&6I8aI7r%Sc52{vNKfI`YGt?dpITp7h z7iw!~8faNqK~>b9I_?@Bs2&oy>FtMFs9T?0b!27~)Fp3vkTGR6btRr<>>lw7s&gW( zv^-p)es;^si8|MyKKzW_x#0q+G5PQzqjV4oX-a-ToBZrb=Wd~@u8hUt^L^jYg z>PNGm#zF0d-)hZr7okC9I>|?10gcY7WerV{Q2ROmLh#-tP&cwnxHfGtG!||3n_r;? zO-tKtALU)5{z3gdMZ;XED{3$M=KBDe$a$%rUtQ3wex)$1l#V03-ZgGr+n_#3GFg9v z9_@$OGjsmZ>%ohod?j+Vp+Q{9tnf<%H0&7q+DH2}G=FnwHprlUNB3)+O+T+f!}n3T z^SusJKW6;Bo=Q__G3W`ooM-_pyDhozV|t+R{8YsVYcXi7HaWH9c>2g4gJXtmkx?DQfNnkAn#@@nOw*=UlUrsiH~ z^?LK;-m}ZpbL!QJe{2rT_K{mV7NybpddB@uY zb^CwbMO**#KMqhZ(<1tp`(Ma4eEvN7D-Uv`+nYw3-h+aI{V5XzQ{k^iK*_}zn$tbo z%+UE`EBwLpZe%9S4+73}sD=#-66 zENGa0DR&Z-Eb@w<>8J~TH(ppIco7YMOVV#Fny3UN0UEYd0xc+Mipalxc^DMhYy5r? zwhIbtcMNUPBTzbbzP;rL6)5%o+uZg-28x_ttmi#dhoV;g1MhMBptRiec#s(v%8cZt zY*PhLJo{nu{`7JvJ{jk&aZ?4#&Of@*x49L{{+MXKXs&}|teF;TYYHV|idjy|j!>?j z8e(^<9Li7ZG>}*Q3ndnYht*PP9{;&D>R+x>m*i*9rw@;_p<)pDO9!A*ZB^yLs`pU2vwr`W zBau*=t~6KH`XQ7JHY|NDlR~|f)AUYl7*xp)Kj-217|K?yIkP^Y3(D@C&=o(g16AuI z22K9YAF9Hw?iYN%MfW2xA>7Iq$~C_`u97?fRlR?8FE73V)k_aX&MZ6&?>$@i zsTI&_3R#~{g_P{EgY;>Jw<1RkrFrkY2e#SjLH20* zciUoBX%4+_Lb*l)q?1J3!KY?HhP2P5xYvsyyM9#e&I2bPXIW@)z^UbY0c4(u>gwCm44KIu*%1%KAg}Dq$pb|Uf*YP+!&WT`HU+M23H zJ%u6Os(reU|MG5t+chB+sEv8auZ)DOhs7>&Q%xYN^7&%7tqY;xXgD4*+XV$hM!&jm zkAUn+hyK&`wu5ZfxiUGi&hXcQ6d!9yhreM9n}wF=Ap4Vi<%M=n$l+$k%^K$oh00mn zlMiM?q1)y`qV^WZS@4K{!Z;Xmt~+`7pMM91c{O7^7d?X_-oa_yU^~dkHr}}SeIn$J z6q_Zg$%CRNz4J~B2SKr9Y?#=DGRWQjQ$0eXp86Gc_*-p6P;7GHwRzT8DBiR9qt~gs zklV5?Q}v_@{4tpn8T)c96bGor#7#N~#c4Uo5`UJ!ANQ{7u0=E8&-d89x+=5|5cmIW zc~%cfjJD>VGZ2S7g=-6Q=B|Uh73=ga9M}UTj=E*>1%*&@zph^T!h6W`(~+9_*d6kU z8_Q}lZ$L?EMEip2K2XYa6J98GhWzm#zWGZALB8{uhl`D(pmh3di62)MK{I^_AMQk zGW#`@8LCZIsJaRTX~)`P>A3l~zwXx_@GTr5QNejbm*Zx@bpNiYvn&BSy)P_SXb6dR z(GOk)I6-2#sL1~JF(68D3R5Sk02%!?({zRuB=*i9ttE3Fek{JeEo;s#Ak#niFEAC- zT==LRD=k{#$Ag^UD+eCIkH%4z^Pav0vi{Y?EsLsw>1o8nlm>0}1h4bi*kI$Om6Ff7cI?>~V2& zPDCpt|4QF?twIDO<$A%h6A?g)E(J%O34s*t;jgVU6(D8b*0x?-4Ir&&oyZk`_$KK& zJ>`}Uq>!)~QS|)%RB1iD=i?0crhZJA>wgKp{pS`}9_$G}x6b-7rpX+BMxGYr=`4kB zX8W!*haZA(%l51kMma$$H`(;&Iy*>RKG=Q1HAnci!+xa9=k4(A@Rka-xb=`4v;q5K z4?}8eFgLpE41Bw^;e~dJEqr^h+HGQ{75p-r8RDSV4v zBxzAT4StoKh%dMk4r#+n&sbM(gm2kaKW*#v;akmIU%Pf~NHdpuGS0Ic(st{|b2WFv zH=*f92jNhNQ8pguCZPan-b*SA-Zn$p$Ai-EZ4W`r7=wmW3St9!|J{&QdPmQvwinXn zK3Th*Jp(Zd#-F^WNnL;qV=SMHt%P*LqTM#y@{qnk{Ic#xZ-{XosTlcR0mKYA9qC@< z!^KvqL;7=@l)p_6A?B9qgCDc06Y*4WXVyFd>AzhXK3vj;^qyNvzB=I$^HF9}iA^-b z{1oeGSn&cf#=f7j52rzfO@ZyAbsr(7sP{|vhG2+k?K&s9-48NcIs3=A^B}`t$6Neb z0>nzTEg7`u2E?j24jp;$9Av~TcwIDMF=W&`{r(u639CSt(8JJw{(*}oJQ=BBxpV(r2zE6%ILk@_`(21iCG2-1Hj2UH_Jd-$x2E*W?(I z{^NHH&JO(j)BS(P0hx2xQL6UU2LG{TtxY|8us;To!#~ zPD>T+?En9su!_AR^Id{5mbLr-hdt=OkU1FBkhw4?u-}QfUysbq*n-T_xQfh`u|wv} z{6yw%d_?AOR3md~%#b-XFOj(&Ly$Qh=Ez(dEo9Ekb!6_xK4cEa17t1^2bq(z51AX1 zg#C`lw@zfPPBAiP#}=78qJzvK(L?6)5M)k|0W!A)kvS%-k-0uW$ebTlWbR2lG6%&A znG19p`<BXe6^kvT5%$Xp{; zWX@4CGWR72nFC{j%ti7-<|NHV=EkHVb7XcRbCueWIZNT#@6N0jB6DcGk-1DekU32w zkhwJzkU2I4nd_8^%z3(s%)Oz+r*ktT?#&!sixl7xy-(j+^Mdp$vBXi39khx9!vEOl;--XOIb3o>t z86k6@0GR`I8kvhGiOfmMMCL}tBXgu=k-2I?$egwP$lR$#$Q-I0$XqraGN(-mnOpT6 znPW8+nd|l!ne!Ho%)MHV%)xqq%!NCK%!#u`=4O>3bF_4jxpL~roViM5?v?{GhbtVJ zOZOI;Q+EcL+tq~3@tTIrwOfwNxx0bP{W^rq0sDZ=#p^=mm{Z!N?r98OU720A$XgBr^AHH8Kb8 z2r?JZ37M0aiOh}j!vRMQ2V6xQa2AodbAPelq5Im011=*nr*S_rw@w=eJUe8*V=fMO zk66a$0b~x|LhN@T?ZlBek?P3YywAuSy-BoR{&OWKA#*0pk-2*halqk2=2EUf=2SW% zbNjrIIezWPT+36)oXgwD+&_C{4qz@a7xOtXCvyujH*g^`NANQ;S93QqXVVRtJ2)Ac zLl}t6<@7}6bY8*%w-A|Q=!MMnyoJp9e24??Ar3f*$Xw7cWKL)l4!DUp;3y(KRR)I=5Fpq=5XpFb7@Z?b864wfZK`8@w|h~wY`bVx%J1Ie)rQB z2OLlwaB-12xsf>FhT?!DipKPIK9Z+(hy{x>1G`8eX*I{ z_r-zrA7l=yA2JvCE;1+B6q%d40GXr8N9GC_BXfqmkh!bD$Q;&CWG=BTGN(8RncM1# z%yC_V%r$mK<{Yacb6+PTb6_QrxyaGToaA-L+}HwSj_ey`uCfrBvmA)boxOz2q1}qi zWuAvs{Z4ZwZ6E*KS`%cBtqL;N`4Tecc``Ehwi20x`vsW`oq^1Wc0=ao-a_W+Iw5nV z)sZ>VpOLw{^N=~b8pvGgEy$c|ab#|9Gcw0F0hwzZg3P&Ih|K+ch|B>#gpHO@sf*o+ z15P$FH+V5JM_31$t33mmv+ab;9qvKq5NF_k%Z&q0H!`<46q#e}i36@TGUxjZ4!Fn2 z9OOyJT=28VobWZs++-;naFmg`;uCPd8As+WuSe!ETjGFAjss3P4!F%Y;5g%eYmUr0 zH^%|@83!C_9B|Qbz)45uMi=3LBaH*DIu1DN$lU2@9B`;{z-7k)ryU2}Y8>#aalm)S z0q-5#`p17dAND)gcagd9cab^qSCF~c<;WcEsmNS;Ph`&gL1gasabym6JTjNw9+^|W z9xKlObGucMIo_L)x%NwtIrrws-0v`C4mclcn%eZ%4mHBs#|a;*_v#~a!_AR7;#aY5 zjla#2I4!J~-}hHma}Y9jJQtZmu7mYx>3r{i1U4Mh;7myDLgtpcAal$=W20{4&5xt% zY5R&DyYNskZLj~_b7^D_`U-5ib|)(DXC^j}HX1v_dj~Q%Jph@bUW3iYwfFRXDa7V1 zxv1|oYmm9?Gmts#r?6#md+#;1bZog$WVM=SgUoGDLFTw$!Ish=*R}Ssu-GPnK~GROWSw!hZQ+MM8n9STxf@pP?lIr4|cb$PlSNB+TAa~A}5VEc|` zVOusG!S?7w=~*NI`9JSnQb}>f&hcIuxt&$mA#=amW=srrtpBD>&QxRPDQC?`W4B>v z{@NXmOA4?fymG;eDrM~GlXrP;JsrDdn7=SMwi>&xPweP^@(cOPrryzhz8?9HSAD&$ z=!so5!_2;=TVwY;?)i(tSmbvctCV*M!Or=Cik|7o*zI4Jwp`B?yZPC}HC9Ap=e_UK z`O{jlv#yph$?7PuC0k29rlO$#x&JU^(|{>fF1#V&X31mqyx(gl+qlztt6M|aQUj}$ zl*WEMxdN-wFE2hg?mpJkYUMYZMPuz3iwEf@%dpy4=J0<%OR;9{*}(Ec`dD{k_vY6I z^;p0C#%Q1aF3|Z_Ea`#PeylC>XkQio9vh6_mbs48!A9BqC#$p&>wZ)-*izNfJ*S(4 zt;^2jO?LZ<%|!=i)Z_+W%Upw`_=z#t`f1oFtyVv5(+Trec5%R#pytg%o|V`t@v_}L zOAgzv%{kFmZ-i}~X&ajzC9u_g@5K!hCSz;jL@nc!%dvgycC+G&3~W#0k4oPbh;0*U z-waMagl(5Y=Qoe@!;a|}Ip2z$u_HjU=+5`Pmfbl=VhMp$_U0zi(NZimma_l*KJehBrU>@Z0+wF zS}xf6LSRLgjj?Ok)$yyW6_9USw2ptk8~OJhG-kv{W7jEd8O!f^*j4+w#>hMr`8{@C zuQc+pbEBsEWoHp~ue40k#Y5QrCHMI-Qw!|;`sc;2*fH3peb?M#m=y}f@3|uVK@|lz zL{42Zim>bS>KyGoyRoZ$$Q~hHLxJGt;_BDo*t0`t@}DWku-h_|^Jj1bc0cv@eY-0Q zdw#xC{t>qA22% z(Z(S)NIxg_^ixzC3g4bLy(`m>eHu%KE%uJaf#=__mp%W3wMKjUjyzh4^%G=5VmkG( zK{HYP<~&WT8@}b9tp%Oeg)63wuPnhvrSq3IUsuE?u9a|7ULV#MS*G+|e1;7%CiXcK zU9hQLYOheY6`K!kYpR%e02`nD$9eh72%9d9^gFj-gw6Fa&r&u!VT=8kt#8im#O4_n zG^WUH!{(>lT^jlE*iv*_!|(YfY+YOO`&9Z`Y*9ZJCG}zgwp?uIw7Orx){MDV96Fa{ zo6RFj+mSZd(zADQ;nHSob*l7B8od(RzH>yz^DMC4Y|A?>M>A|K++6jx^*y#N{WJYh zoF=xvBl{$;8)JuowqE_)so3^y`KhbE?$~aaoO;y06g$E^N`B|-BY$j>-zV-^Y!9~7 z+-YKk9Yel4ER&_}$UIGc6NJ4P77^+ zZYM((<=U~k@$c65sSVgQRrz#m>^AIrbm7;lTk$Axn4^)ux(Wp){=Z{RlwkK@u@U#} z^|AZRamVw8y@#O{vv=z}uNDA?sJzA0}d3KxG89d7)I!UWBC zo7L#{a;t0?K7Wrr3%5KlI;n}hyyN?zp_Xb7bettdS;V2A9@#=1|!d?~2w2GK#*f&nFqBP?P_B~v$@S`gLdr#rW^jiwp z+h(%+%g%j-qhME>dwmh%(7w57j5UgOM7|3(%0yB2e-gejCWLeL^L>14ML01|N2V<> z$G-W&%RK+w$G#6E1DwJ{gwr=-Wk|jm;m%Gm&~TnjI74jQ!p#f_XNk;+F}h`hd*p=T zHLeNazWuM3duux3oQsROt9*-a@RXxsmlff*>Hz4f!=gDN?`A=*dT;sAd(iodW zNyY_xtg!jQr*FkOBC%=c!_)~jtKJ?V2AZ$@p-Id|<6afgdIg!|A?9_LEX(ydmW1n30 zki=G>gW`dwXJDIJ>NLfPAFzF)hKP_x?-6&eLP2OiXmZF8L!_TAhcGAF#+nGJ6Gfj(Ym?fM*VN-THNWknS1m*3um< zzUn4+J`(#|^xt~y8na2!CaaK+V<+M}&IF=h>Tjp2H!rd4@dwlQp4+f{oSM@({Yn&k z)K~pe`WbuXdA?5>l!VSJa#7bMZe7q{e7Eo zM#!9&2L-~_I_RS?ixBR1txCz|^9jc;dib|nO9l8MMMm2m6bE_a?< zML30ntS6gg(BJ!7Tz*T9h#6=XHs38EVs0r0H4)nhceB$GznayA8>peO%l>4kU$mcaixZwn`{WU^(QfdiW&{zRm#Ux1?;_$Cj-E_a@*rZ{#^kt~Z6snr zX)gLc4~h6sowNj9DIzf_Z7i8{m57zOOBGia6LFpY0`8cNArh;PANsILjY!2nfGcoc%BkXm#W;kY%8}_MMN}gM*iha*xb|2bv z8bzEgW1qcIDDvJmN8(x=;f#4$^#+a+j>{&$|EvwMZ)}RWTLgW5Yc#(y{Q%*79=Yi8 z@>;@`$?wy&drUZEZFQe_uOl2M$q73yb`kC>zepeZ4TKxCZioE7!Gsg_apFjgyM)v0 zGCAux9T%I_=@a|OL~M3;Vvm;>;ace!T$`OkxYzznw@Nuo#4h+AKX}!Yh-IyuRCl|b zaC5F1^=%wV#I)zleAf_7#K))>Zx0M7;?C*b`C&VWm_wK8KKIo`Eb;|RQ0gG!pKe&L zh#E;GWR`R$f5{?Zf^Bn49{SRDJIumw>I@>WN-=C+!ZjlCD8=qmx)l+>oHBno$t2>L zrxwaDb0rdumzAgGiHPKE>u=A?qlv^wqeZc$w7u@ETYBO^6p_3j<2ts{nMh_P=-%%d zPb6LjE}tR3f=G0(TG`;!Mx;ic{iDV$CQ{B8m#@g*C6Y9eGDOFl{vNL1^wy9_eG)g5 z7-CBXKL1DtKL3TSKZ7ds|8B>&4+*Znm9}8}_DAyBJp|iamh8y-n}Y2s-KD<@r(=iW zv7o#fZR~ira%N$+2fdzpvgJqNee76iTNqm;j{L2Y(n@0su~S}pS7oFbc612sz7*|2 z{+*|J?}{?9Gpblr8xVk9n?CwBUhc)tnJd;t7Snc|C(3?a9E{yEw?b zpRwyi*vcm*@^n02mGQ9TAPVf}uNSNwfjv^%Euy){v72yh@0ApwU~71)Pw71Dc_p|g zHaQQ4>oT>aM$Ez<@wJPtmeP9kiFnfaGBxZKfALOE)(?AMoL{2I??$23s|BaZPN1-Q zef;sVauluEQZcA}E%tF|ofwk-9(ylIS-6!iLeYPbF)rm%wB4!=9*)BZNB>ZkQub^V z{oKfNtkA?h7n!fyE6xy($M(P*DRqRCY3rmKd!KM*)@w~}95zeiEsq@8^*PH6YlS!sdt}-5ivb+KaGHOgliM2F{Uk^aQ)By z8Pz5rVkeq+`uoZevGl(NT9-c(ZiC(35$%(Sn3>_4;qBXqxb6>O;OX5&{CITYn4`mq z*maqqL)&i?v7*0OgWHpcc-mv1V3$N9G494@UHc|e?=}4&)BRg*I`d2#!gR{?(id$I;+2hFT6k`kIuU~d9E>$aFx3u(UD3d z;)<7Y`C>#eb?Vv(<4PhmcBGEsRFQ@eIcN3{2vQ1IrtcX+!|C5m> zpGdyjdbx`qK%``h7k2P7i1g^PbMI9{i1eYf<+Eg06RCBIvaOv`L@Km2v8i(wkxu?H z@-s(@$Y_Vw%;CQ!QiAvA>pPu^w9PfEn$931<90g=8+HKOOD8n+Gi7+7e{3KKc4SO*yn%Eus!g!M^|DYt!L+4*7CAL{@j<=`)1Z-$MUCP zkNvWdFOib9#3>c|!cqS|IgFjr*W(92rPo){Eq&c)@!07&Og~uVD|YSYoY}e2AG`nC zZ~jj0KkU*pUA3e%3cG%8_2`bG<8nnQS0?E*3IdnodRmusdz=dkJ{ODvgXdXG*WRb~ zD@|1}&PU;p>9czqY28qk)+f;S!5&|}ez5Q|3V#I)mIe!GyBzZV(S}PXT%fsXY3gYd z3V0rZz+)(~ICrQ`RRcw$&KVYoVb~kKGwjKM11Q>bDa+PkH?1RgwcYlZML09-*S2d^ zV4upXzMi4murDS{|4B6+NAKvoAHknUI4nnkaAvXg!11|`z41DPyUh2HbNFY%efcx% z&IOv5P#?5v#T0GAwT!BLc6S63Q;?cYwl5-Lj%GeJX1548Ai+b#RVUoeydf)g)A>K1 zzP;fEM11V4<+D0;h?s4C*t6ftL@cxqM5gjY+_NfjdzupwFVt4K@;r)&ix0|L@kEM< z+v)5MRT3i-vuS$8IU$j_dn2`Q+dLxv)~HW(NJJ!*tbJD$35Z0;kIB+=t`Nx;+^bX7 zGl|45JN?iFd?G=dQ54xqBqRRq_y{7Uc);e=ukA!~_^DMZH5!TJ0iW7XuUaCtyMJMX zNF|iX{ys~8J~_lgR9``)bUqAOxvGRnkJEGzZl&$8Kjy-VNS#a$3;p_+NM#p7-}qc2 zU36vql3__i#x(BVi6GKbnzL5k$RyGi#dn8xrxBTZ!itBf>xs<2(-Rs*q)UhN^=(Tb zGPCu3S0*PC*_C@Ax16aZvXLR;8e0sB%&pn_VbkM?Ov7UAdw@hviSG66V?@qr=r{Tg zk+s^gYL(O{BKz<_ZJ5hDBKPB8e25&8*FEp?<>zuD+jZ8XFE@(FExS8p)!bJ^-U|yW zpZO8_e;@zyDj{+M>p*-5mAIf2ld*F_nMl`-gI#J9O?GW2d;G#uYzgpy@A%Bz7{qrE82*-pxWV(?@S_YIM{tkO(hZcIraJQkx4{i z%ayYQ+3rLle(K|S!{Uf|dy@dA=)Avr(@d#bpNQmtnIv?b9Fe?vq)^$n z9ao3Xdg~i$O(Z)<^tk2UCQ^3a)C)%B6Uk%G+Wx|IB3UrZQ0Hehk&4-AWWH%Mk=B!4 z@$BI)A~omiJ|{aZA{Ef~@=fhdB7OD6ex>4YBHgy^n%n4BBF))a-*Y64NN-L1Z=O^$ zky+dEJb$|hk@$J}6dA{}eyc*&Rkw@&!ejIka>R%cG-(~4Lkd$CkPX}k=PIj2!M zJTjihR9)2BO4CSXo6e1Pbyz~=R_UANh2A2v3p%$wOI<-^!*&KX+xZc>kEwRN+B_n! zecFedUhujH;CDKiD;PrB}yP1MKSkE*o376}$8FZ3~VZ zz^=~!EUMnoIyqTPG7nNv5PkhlhvaGO@oq0t^!7$UKyG|Wf*RL1d0G_G)aD4c;t?B0Zg`H8a1{>$HnKF7ese+c+)hcI9sr#mHU0 z=p2N7#ZBfHR#XwrrZ9`NeJ8Nbw`9?AK3zAMULf@jMiEX*LABjG33~mne7U;!3gHAK z?3(H&MeE_$38C=~gd1u;#m!;}5gX?En|mpMa1R9Njg`wJ+=7c2{Fi(pVrQQox|*&_ z#M<&SG={w-Vpgs-L%f5CSi~0VYuOix_%?+vA)Ab7od8=6gOP}9*o4Vw>?7i5jO9*k zT0A9IFZ~YM?QjQ@nGG>O-?|UoRoV-D#Bcw-<9(9SxXw8g!VLzBi&pGKF_w6u|e(Lbc zOmY*Ex#Hw7GyFc05j>Rt-ZqxV3|cwmowX&AISx0bUY$r}9nxPdpBYYMb0n4*dQK-Y z75dGg>4S;v(xJ=7stJgkr4fI3{AVKf#_?XKq9u|2z>V}@OWWs|2Gt?{i9~+1{~WIs zsYL#IYKgMnY9eIw=v47!{u>3c=-jTlH#gFcC z6a=>}OOtV=?HlJWZ}X$=-8E%cv=sK-zgoNVfG!F>ub5^PCSkAhI>WU;X#MQ@ROZcO zy8gA3jOWzuLXn;B`24r}*k|1~a#P@X6fOK?xg_K~_DyNs?!WCB;b<1i?)x53INtGR z3}@52SMDt7P~Jf}Csl1V8(axjHeA#e!6#f#pQCSeuMtjDK#}?X(RJo=G4JpDZ<~Fe zNg{=$Lda5CiV~?TEtae)B9tvk5mJ<;k~T?*q%4)CLZ!KdkYtOjNg`_^(%$brGjE^s z?KQvCKl5-t&ODBf*SzO`UH5f8ue&=zdGVmtD^A7X91-x#FA2}@YPU6`M1`PSeyKew zEEQBHPYl1bG#6Cf+k9#cn~n3rV2`}E@1Sz!p;o1JF{m0XJVWdI6jUEe-URyW0yVpq zc@`i0fa;OYV+M8BqF&&4$NBXioD-_bI~QICn%OM}c#O~A9jbEz3YehQxUV)jQ4?sH z870BCAA#OKc9L~r5YSfi^1J142(*`{Xmztk0X=CG&_-$kL*hQB_|$ozPdAC{HqsX8 zP^4!ro&$_MlXG_UwgaZ}5M#SooF_(1zqq)51u#-yPS{mlxA#S)~B`)j(?!HWhfE_G+AJSP1;4Ecc`SrFc%` zUb)qI0DnRE)CUh&1HbIV$Uj+ILGU5aMR!RX2#1_s{^M&22&{~6=tM+<;NsO8lf3Z! zuGBl}oE8tl)C2D>E?xpciQW%Wy=Net>NV<4Oce;9C{Lc3q*2*G6*RjMC-b-Z@O`dZJsVH^xfNe5C^NKS&Xwu6Pcdl)Dm7R~r{!4#CcfBDL5ECJ;h%aIqJ z*MUl}$18nQ-h)a~Tu{r5SWw}|ZgIJabI0zFH`|g&f@&|91HmUIf@)HaO!hCFGiVn4 zVfeTJ$5ORtac_ zbeTqG=RoaeOdwlhOa#suI+{}HhS|z}E8unhi zxDc35uLfV5^cGk>)~0^&-UO_J!wXhl9RSRG#(oP1&~Q%JAywuY0$cOfqd&Z7z)r~h zw9PdPSl6F3Qom0H_V~e$_K(&AM>9Z)k!1>;gs~d?I^W|wu|45?PAqUtp1h4sxD4Fx z?SnNPV}W}>YMp${8aU?%4jjGt1#peF`c%4h;`jabd4@lJ0`GwJ+Vc~R12^qae#it} z;Po?5GsJr-zdJ2#bc_@5<8K|lR-**GBb%q*W3B{#kNa`!zC?gPV|TXw$Se@VPbqn{ z(-rt}{VFxe&VfMaub+Ru9E2QteTEkug!Z+qKVn=#u(x!LTWk{uRihTD6!1Z~=MKXp zKNo~0r^Nv^JP=xq37R!H8H8JFPNW?j4kGqm?LzKS5ZQYVP#Jj@gawheTZA`2*fQ$d z)Zp15+B0pW%|dk$l?)lbXQvm4%-)HPG}MB~H^St{(f|;%1@>hb*FkJoKU@4%3q%*q z=2=&8Kve&BYrO4Y5bu8IKD)yQDE>K!En74?TvyWgwc{spvxvgbce3W4rwQ8a#OAE4LL z;-bq=1Kmne_9kR7&~MJUe$UMw7;Ek=|1in~7)^2JqmKbF><(Yfx9|kUz3PlpJ$C?e z`$9nkX9}>`dev1Mo&wX^;CTF>W59gsePBmAsLBxJ|L+8m^`S@A)9d z`vY@<@7|!N8*2%?z~>|0CKdr-S;z4H#!BFS&imurj?dNg!6kP*X90ib678!q+d#ld z7oQp40|agMM|wTL=jeppqb_Tkf*|4>?4E?6-{t%z5cb&MLPypeS zvHp1;mq8e@uwmE?8xRSyf9H(d38I;rZ(Qr`L3lrCRk~Fu;f+ z?6J#Ds|@FDdH)Mg{V$;M#mC9!XloCJ2jnK)w*fVI{|l%#+l)whPXo0e zW4&8n{ekL#0h+x31!#<(-F`NF23n*VL%VeW(C*Lunc|TNbb0>^(AB>+*{M7L`k{(X z8`u+o>VE--y#ECly4PMD6=ehC)S0^_J@kPg?|%WNy#EE5#&HF|`y>GK(zeV#hFsJk zj!(Tfu@qSH{uf}4TXA&C(5=9_IU~x?^arry{V%|l_rCyps>SwW;}!$^v4KzNB%CLd zAMLvOVkF-4Di6T6NZ`y9E%`HTGU^envvg-(0jmE6xbprN;CjBdnYO?PxOMl<{FfXB zs{aLe^8Od#`Cc(h@e%>AEu}}9PY6)`FTj`gzW_fZg54bO8w6~>HofhhK=r?XK;HiX zg8gpa9Cp0`A-De;3tN4l`d>gO?|%WIL!#%SyZCvC5x6aPI0!;{{|n9;ms0C{zXRdZ z9dp_rJAs#l5Xt*rK(uhRy&>w2qU3iI3SGB?NZ$VfB6KgMm0jA z4DOBiw6q?d$FuJGU7ZACdH)NDy(SoK{d5Y%nV0&juUZUZdH)NDf7iZk$(ah`pGMlJ zerSQjnVNyRR(*<-*~+G`=hcs{aU-8)mI`c4!2u z{|i*E8Jl;j$_A?c2&n!ep!&an>i+_&{|MBSyewz$!})vC*%EcfbfEgbfa*U28ohDA zoUA`U^?w1?{{>Y45$bue{v)7INgpmAi|72F0auiRb9z*9=*u@vK=mI1V|wZbk#Qt2 z9_WGa%t)a6kAUhw!Z{@+QP}?lFdyq~5F~F0s{aV6{v*`qj!hS683NV+1yuhLQ2j^1 zb~&oT7j6Km{|oiCp95v zm-in5)qey6dH)v(K8oF#vl2ld?>_>n{|JQg{x1;9`@cXa?>_?J>4H61x_5$5-v0%{ zKlB>aK0QGw?>_>n{|M)iVkec?t3V|0{{oS`{|H3#{v!~{`@cXW@Badky#ENO{v!~} z`@cXe@Bad^y#ENq^8OOTUBy#EU%Tetty{{<3x{}D*! z{YOCcf05@O^}(DwtLfiB-v8)1J$sDx;=~rfof^UkX~)Apk|-C z?o18t_2m6`An(8X4D$ZR!65H{w87^)yKHq~3D81cE;RXm8fZ7U=5r3>d@k#M^ancq z%$N2)dw?Dqxao!y?pLlkUib6d4~+5a8MNuB>(QsN_6FMlBUC%V`QiYO_di}oz4=mP zzh19^NvkvHQG+_(&cd9x>K}o5<@v)4s*S)hYwKqDMF1??zKQ9RP?whX-vKLEXU_dc zIH$|{AFY5*GhS?(whP!hmFnA{EeH06#c#eP&qKXV*8d1p{~d649Os9RF#t|xnkQ#< z1kU4kPAASf2~__baCcZ6^*rp|ZC$OgV@_OrD^Lh(7j)6;CxGT_VlANv8-{|Hq79qJtVJ8oXn1HsWNA;D?0fa-q) zq4MV4#Q`cfhc9_JP~-zbdH*BMGeU#znT{abK29&f-?w9``W(g`wB#y z;VVzZtpKY34ygV+oZGF#S2G(yB=3I&k-Yy7MDqSS5ZzvSzpY*XRR1GT{dYk1-+@@( z{|Mrp2Tf+!=YUw=e+Ob&|J_5N`X51}n(tpdtPH6BJD~dSKqBvd1j+W-1?x0xK_c(J z1Btx<4qxjkM}==tIR8}tDNy~tpj_*5xy)q(?r&uMry%b?os519S^qDnyq;w`TZr?_ zfy<@ujD~=!x(%NjsR63;{$JEtCS818(i2pp9y^$P$Ndb?Eoza|2T+@C@$=Zp2cRbJ z{{^+(-yZI|SccE{&EgB)a)Ijq1)5Yp^P4%&?IFw=FE<`WeK0Og?fDL%`hS7y{{^c5 z6sZ1FU>FO$Mm^R5hP?k5U{7r!UX^{7y?gtLzp}Wgv)Cq&{Bx}WO1;wj+&!>i-3vy#E(?Q(i4w z7q0>G{?iWBQI0>ad(Q*Dy#E*E{in6SzqVt*xBUCSm-qhy)&C1r|0xJ${ijDjAn*SL zs{a?L{!eJ4q|!#FHrrzAfdnCl3{KP5_$hANaX#$Ad&a~f<)eb3KDt$ zDNy~tis%1)llR8~b5LLWr~e)IlCu7HFHjle`>I(5@2Mvmrm9Moj}@4=`mdL1@jHXY>s*Hdw>i8W}dxDE3DchpzZ zmThs>vZjF6+OZ4D_{?_o7lJ0X^+V##*B)koUjq1O4*? zi(`S-An(7n!g(g8eo%!s$ot#-p3za9;& zjhVhFMmunibH2N>@?F$lrdHCUM*-D;4f6hX5wKHtp6I%wJz}I-5&z-{`UdEmG!@`0eSy5>WAI(>H@b91bP2^Ht=Nq?=3*}Ujx;D z4Sa*!*Qaf_0=~Te9jN|m;LH23f$Dz;fvo>s0#yGs2xR@&y-|nxbYiiW5eQ}d@Aq-u zQQsCY3UwKI|1}6@{qOiaAn$(%VaERNdqnuZe|AiZ-Vy;qdH*|5{qG<$5G+dk%mvYs zvhFFf_ku{?{|+K~|2t6q*Fg1OgGk>04pjd;-fP+83zC>1mi1qUfmq)E4q|!#JBa1| z*C3YnUxQfQ{|;3DJ5c@CAd&Z9gGAo{4ib6)J4odH*C3JiU*l^>mQ%Nd3g=&Cl;*bI zUZ|J*pH0^5%mbBg--}**js}&?{KZOp@O<}ooybYYef*N)@8ilYgX%Ls=5$k2)FGAi zHEwBun)n2>?|ZzTPP;OQemDozirS`0X(RFZZu5Dt>Pt}T{8TzhcO2?52FEIDNe(3d>&nY+aU=r4R{dK@YS z25(C1Ty_TT-}mW=e2jqMq-nY)59gX&`I?)ag#+WyBg;F_&j52(wB4Iwf?}~7w&O25_R=UOGUkGP5{R!eMEVtE^z2WZEk0n11Ip2;p4kUfrE6O zh;GMFha3_xX-gmAH2AVBKdS(DW%sY2nYjN6Uw5dz2Jf-T*@d}Nb%0xySN2;U=Np%W z=anWIqF(;z?dpq3!23E@%|HwHK4nTVoF#kkIiKRIvHctBI$QPM1SbOj={36ppL+m5 z-^QhHvLgtFeHv|4co76s)w~^@5Gj4G^SHow6}o$}-NH11c_b;h`zP0|5j)UM45e@al_8OZ%TXgAJ1dmmmHgmX~a>j{_g zwu6Xv_lVOXTM${U8k!Nq0MV!+7q8k~0MYs&y`pFDK(v{Eja6I>qMUQiOIt!gl=(33 z_HxuKKlh{G`!fl3NT+v2Lu^1iu)$YnF%881H*9N8c281H{Ru z2cF*90pg_Yb1P3g2XV#nlA4ih5WjdfV0gPVNV)~&?Hi^75^>(xPuItSWIE^UcV};q zIBHG#;!y;WJq52PCu|4F?uFXF-W~zTjm*fFwf8}C({*)9siori&+fNr8s2|Zz9-J~ zwZyq)@vJPX0yR)I)V(6ue+18Y-#?F3@pJG*#O9lQ1GUMe9xpCF1vOz`(^y|R?uq*N z&i;TpWL}swZ72Y3uyxP%XHJ7!Q}65^bJhUOTj%G?l72ut+Tm+y5DRqil?U9Etw5{N z8FpmsGt_Ie*Sckd1AV9Oz~{YjZ{K9RGxd-o&~Nw3>eqWbFwC{Sy^q2)(#kJYKHbrO z@;YtoxEMX$hiVz6tEA(8zNgp94GVzjxHz68-~;ozc74Sje9kBIIBoPn1T3!R$L}sT zfo1Z1$_YB^@aeH9*9MmWD@fDe{G9+`{p!AK!`Q*7TRJM6cc5P+lCyxd=?JiwYowZ< z#r@~2Ztt3PaKEWkocpA47jV`Gi;nyF0LQVLZa$tT&JA_WXtqCk&tO>k6V(ptQTEL4HEeN|^2E6kF zE0QZ!fZy-K@Ktla;B#Mi$bL*P@B;-exM$5!mp>LU`pFa2D;IpEJ4u0GFVMWN{S^cr ze3$+El0gutIpNX0bbQ`FK7758na_{IJAT+)eXi{AW!j=68B=xxf zLN_|=tB)%P6KSWWp+8iZ5?rC;nhwHORXdg^9R^`J%{H?}0wTWJM`5pTAkr8&tn3BO zI}V55m}uhpwp9yTHw({uu$um($Yc=hY7Rd%dlQI?T*fHJt^rYjYVn9$`0Ga1rEyBL zK-8LD>-oq7#3tg{GT}TB8>^}{jy4AIN|h5XK6t)YubnV*`g9Pd-TR&xZVloSD%O`z z*MPWE`CX59g&=-A=&(}BD3J8rZSTo60*R(_@aA3zK;o?2_tmU*Aer&u&pjJmkVH&O z9kHW3NWzt_Swv0+NijBL-O|U`cX50XZ{RCUD6J+1w}yXh~pak`403o%J;l7MgraPbysQb zT-=)$sn?`T2j;Q9F@YU-LfzYyM~BU*&9{7aetK5y zc5wyPy{+TgzM=j;UObIPI}7Z^wu29FX^VIEU(N!qUfAK6Z!ZBi_Sd4`@wiX*Ym6BjlnmUD zdybhL90fd@d!Hp!tx&hT_cl#A6nOJ=vMkQu2j1NaS0|Nt0`J3^;{(RjbTyZw@GCJ4vG?aCk00>X();w(3h1YzL8-_^4!K)8O2tI}SkrL$){NI6(!P4)uA3o<`df6r^&U{yT<^aE7K3PZ z*qQs@8$h(r>B3`wDeCyAo^uYVf#_b<=nUVJc;D5!Qn3@ywbFZdxqmi@=^BX+j&>j( zH?`%*z^@=4optNY;S>=21eCoy^&Rz|kohsRNYp#86pXAI2I4c;Pik|=fVhVD>Pt~5 zh(FZ#dYXqiXK(#2{&9XF=~eOWd)Y&f%sTeD;iWc6TozRJT&oF^eKF$-?DIhq>Gk7J z?Fx|GGHGgU$i~+@M_v27DxUxFsug*C5<&Iq<>}SCszJ?2*t%UO5LDZ&`<$_1gPK=r zMUofJH;F6KduOWyjaf9a&@KbiUNR#iqCTJ=?=@*_?rflK)KXsX26dbF>oZz6Q~~YE zy|y(kZvuUQ@kMuKJnu6~=OyBPpI+3TF)CS%b56`kXZ;lPV>kA-o{D}!<1H5}OwIt~ z$Wu4pyAy%2an7@m>w0_#eRJ4dto3Rid9I?8=44jX2lq*k}~E0rO^1JLBzr zV1BAv<`gaj)|}De`o1{ljC^;onK2GnCu~-JHp&E6@qTIKr3t9teD)qZ^%bxsr~1Bh z)&_P6=UM5-aA2ocYu>H)1&-*@&6WOqVEZa+W zrC0*z;fVI5wa5M2N8hMfDQdviU~YkZ7Qo-(K5&uVQ{b=KG1=z!df>nM z&|&uN9q@l%dD@=076k6%kR(So&O3HF10>EM$Up1dbJR5u-1jmb^F9THI&bT|ui|~R zTiE`cS(>QpjQZMP^#Fvk`4bCppDTyG>JdSAzJfuH*VW${^`C z{bW)3J&^Pr6Rn+t&-*!FzQs>|0g`!}+Qq#SL9#z>hWkoSkVGA}3zV+Lg+WS$U_HA8O z))(}1&HbsYea8)G!{!aFV}%0kNb#v();P};`#A4SLtpmrpDE3uY@l;T7`ANj1$w~I zbfrt^7dYzk+tXtaFgOi1PbOsJ9+qoB|FHxZGyPBU2F(M8|M~>$zHDIBG<-VOiNEjK z`~H%p&cGb%bfU*meBL{47_0L-8<y=3lrFDem|OM;tFi%wY^7O!}BkFb!1#C zeh<9z>vutN5jeJuzP*1kaZhWfJ;{UvoWz`@DQi@KljBz$@n9iv`~KF1Gp`J@+!O*0Jplehik7|+}C<0c+9Q@o~J)|lHGaWJ#Jcf z(U1=jxOfI(Yv*)V^Uq&jp0BNsKb%$vE#jPj;GS4Z=qjhbOlMgNV81X2+Kd z5UDUj%U6!WIlr*jC2S0c#$Bz;dGQQH8#=msm*Dwc<4b#S0?+%&L6a6<8wR2?<1G7K zF#^%st;=7e&&ECP+Z|PvMj)0PxUrPqXFW2>Bv0GjCVW5*pzKr^}1_@fukQCnlA%=?DM^MU=_eNJZGGvM&2Mx42Wb9}%s zhbhZb@VPIkHp!R`oYG>i0Iqdds6dsdYHt`~S8c=m^{sgSOuJcn`Q& z-oy@^7y~@L8?)}b!+A$g$#hJ!2j1qW{S`}Z18?7{?kl#x23||Vb5@^V;MH1dx#~>> zzVq)BHPzREztkr&U1|XQ2QCY27vkrkFnx&Ev2nP!opCYQf*-t@u-0NZqR|AC4CN@QQ;a;F}>WoJ(27pLXn0@?IAkO_d7LFycAhP}w ztUlloi0p=S^YJeO(bg2d3ATMf6!4(9Vz(GXS*JOPA00uI-K|309p|A>yUgBxztBLy`DDgpdrv>2Hps|gZZ6yw?mdU%z@FvW3;Hg9`&0qdOvM11H&`k zM@hOK7!ONrArJReUwwp+l7oObtEufmlP%^bRC)*Hyanb-vqsDFn!uE9`xxVh^UVNy z`TDfyz!I*yr*w8Yur{TnKw2pJZz5nu=W$@Qsh=I`vJzM|&o>1fM?bHFz{&FPPhc-S zl%Sq99N71DLw?iI?|WsEq0+$t!0ETC17cC1A9ZTY6W1c(954ssXpuc`j@p3*5?^y=PyoMt|>Aj#;-e zz%$)t92DpSyyQZL<;HZp-#+@&ebolwYt60xbMqg+WJ9Hr&l}+T4#13~@ zk9yEMZxgqEA3*pqT;toS<2dg-gugx*1|rR{KF}Ax52hXG_UVoDjk84M-c9tKg+BGa z`ojV5y#;@QdR+$5rHbmRo-;v|f3Pl7dj#q{3q6k5bqCScpJkTa>p-l_yOP{(59&RA zUPNwa1M%D%$F0d#Aa*fKRg&m~INUnQO?VB&k!i)NOK*Vqx|g|YQyPe`xo!sj0uVO_ zc=qA^0ddoi3l4gFL1OgNaJ=IhkPM1-4q`=v#4XFBiZKKv?m0(>2F?UYe1LlIbi60W zl?<>{E5URBUOic5DM;>`?-7*uQat~8iAmMVPJ&u_OW3b3sLNX{?nm1i1+;$qtLD9$ z3bgRu{T@4^Up@6sp@taecK)!r`l+!%`yJ#tq@_}>QdI2Nr{>|kLM}To~q3_@$gMg_r^YTdv=7TiN z+ycV-0yF4H>zJc?^M7&<*n3h{UbPtmyMcT7+rA6H ze%n3j#}s_N+w;p;0Oly>Zy43l5B2=(FU$G4mwojd3mkehZ99 zeRmfGOD=8HnY#{s!$Ff%K1>5aMQwF<|U|mUY=BA?)(IO4A*uxMWF6e z-}qZK1Lyqy1B>?lLH(w$g+cc1%^;d}`OZ4k=^&cx8l`S!45EnWg-LsUfN0N1ufgN` zfT-{s_mh7Eh^`e6(kn+j^mlVph7NuYGz`j2y@=0kgEU9?x&+ic2N#wfLhKK?L>i9jdIHKoWhg~39;&H%Jw*Vvu5^XxOj-b8;PhT^q_OfwnZg{5q!`Xihsf*Gw9Y_t-6JGY78* z+C5|YXxkE?kGur#JEfR6-VlDH+i9Th_U<;K{R8^n$D11C_Yy<3_)KT#8Nk{8aLNZ= zV9cGbFDY{chS&7I_sx@m@#x8cBLVR^-#cf9Ga8}Sa z`BYs7j$cB4?Ge=TEBg$~eTja|2OTQa=pW^d`n}irJnpe3rKN>x>H{}psP?Q`y?~qi zO;U8w8*>^pNyE3}^IbhRMlV{7zRPjUhWkw5t$n3;d_@iLo;}VGJNE(JyPI3Db5PHj zGWA!q?Ju17@0tXUL0^1&(bb>23BbQlzS4c?XAtz9Uu9hM27SeOHjCNiAn-q5_OL+& zg6;2Sb#^`l!KamX@0+8KzUq{V)ywH1)N@?(?Cnk5>jw0>Z~hkjYvwO=U*bG8XX;4d z6ZENtPj0d;QAT}VDgHyMXXT7YR2Kj{8koO_(_+Z(s}q7Nt6)~*dd2O0O4UiW7JtDD-< zOYxDw>T}p;aoY)Ch3%NQxearlfn%Sa$x%mt!g|Tk$BDqI^O_Lb_6YMH&XyT%pMhK$V%_eGxw_w{rk=9JT!_&-%Uh^p z_D>nH0CQ=)@IAwP+fm=y;h{b9!))MvIpi`x4d?!bbweZD^KltGXK-5kBb@sm?bq(N z1o(NZyCSR4=wlc^2--h^z)*j{^A08S@mSGlZm9R{@*mf{^$+fKc?Lf_aPI&8OP|wW z41(`j{@)I71>vCebJybDKsaPow0N5y2;JX`bUKHEa1p<8l-oHq?FM<2frj@%bK`ePXgL-iL2HT3OBM1)>tx9=~ltAZp*j3hoR?z5h$) zSWon;4Gr6D;)gn?as94++wgn9!-H|C6Mwy=pXSh=A3z*mm@^;_KMw~gLesb5=i}}a zS~l)s#U=Bc`0$$tL#O4D1naEs}2+*?g? z-@gv?{V@-JM$VlHw7rJ?nFDdo`BC{bMrS9`TIPi8wdwRp$48H(_Sb5$khnYZdY*TAJrO4^CzNn-Rungi1KjU1>8WO?r!T*0* zagwApo>PGpIi=qBf*P=Xt6Ww}Mc-O$;$UwFP1N!G6s|C>0rvbW+x8x;1$NQe$r=&Q zfqgs8VVTZ3^eYUmT0+NM-T(vsvF#<8=X?Fs$hQDEaoOt@)!6~3ZLG?Ir|7?Lj6Hm5 zMJD<(r!1YY@F>pv*J9>geGA+>wtBNuGk|+T#ps^Xe&7wf{Az-!VESv`0e`jlT*Oj{^MpXTD__7l;M@A}%lx$hkGX~v3obh8Kk zosZ3vjZTBWc+H-P>V6pI9&P2;icbD=b2cm_53jimqfQ|dv6C}eBGkz51Y`>vukMLv@59h-1XPI zb`*0ccGuJ0(C^TmYOv~sHwZiVaKI!Kbxvniw^QCA8m6>xYic+9VBDq9GmrEyNN z+W2`$c$O&MZw8_Rmz)c2QRlfU&J8KT`#`By^?n-O6FL_S5(KD%sAF|cJ9AqQ54*FK zpKAr;;m6lUeEp1j-uDGuw+HyD_qN;^_5FmPNe5342l2rHYJ19a(dXkmjb)4a=-rp6 z7U>NFain+RvK3@Z5hZ&x-B_l4Yj)J5Ef;^B=HA zRdXc1+Kuw%^6}iCNE#E$z}JFH+rxYQ@7(|W9MFu%+b?!@1=@&zentZA;6Fd;zlqN& zmNah!TDy_e&EzPcQ=c39GT9IM6OLcqI5{2YB|SzP))fK0RQ7|pKG_e>{rj?C#Jxg& zhi)8h{u}3g`TH`d_hC?fkIW?v2H*D@0F!!OCiOndk`*b(hNHe|T-Dq8`CMR8@5`dz zhjn1~A+@0Oz-qszk!yhZJ@vk9>V4QA*3q72sh9`M-=QkxldgFacUF@seeyMy}xkjlatr_^a9~Q zVa>q?ychia_o@GWVd+#|pIfGQ?!(-sBwhy*^}ZtN&mkIKbVP48>N-o?U$$GJ?^E`^ zp6GA;=O+=q>eG4;M;>V3q^^hKkW z;5k3&?jSZpeUy4%@!$6;O$z_Q&c<_JQF6V~3jLn4ACORgPRR%fGwFO8p8M%GzW?~0 zsXw=bdLPNb-8-hwK_6)8jUof14frbm@B4f1|Gxh3{FBdr;`}Q-|H<=DKL5${Pd@+2 z^G`niyPW@diqC)I{3|^F$@5P>|H<=DKL5${Pd@+2^G`niiSw`U{O@x9aV{dC|K#~6 zpa10fC!hc1`6r+M#Q9fv{*&jQeEut(f8zO1o`3TBuW{_isXOi`Tw$@zzz|H=7>od3JbKfe{{e{%jI=l?GAPrl;( zPtHH&{NH8%*`YZ9lk*Qb|C93%IsbQ=e}*W||K$8b&i~~6L(c!?{6o(F#y@F{Jb#ZR-AON8NvsFC)``B$WQcBJRJh6!jnS z{@X?WsZzZElKKyM|0VUGF85!&ACUS_m;0}f(0|b9DZBs9pzgo%iuw0}1^H_rc`-SEm1i?wvN$UTk{z>Zpr2a|j|1$k^ z!N2+^ssEGuC#nCF`X{OXllmvA|C9PBssEGuC#nCF`saV?|FZp88nORnDek|z?0=Cj zO76e9?0*MP`>$$h|AjtI+5Q)~W3v5k9<~26qV``8sr@hN{<8hAJ+=QrpPOv|)r;Ey zq7Ee6{~}jGw*Nv7-rxNfvH$J5|H6G&m;G<6;{Hpv|GiG_fA>=RFZA>O-G9mUzcZ-) zuNJlc`ugwwOSb<-yff64t9x&I~iUtRXU3l;ZYct|3LbG zNdE)r{~`Skr2mKTKPdQrWc~--3;gvzkp3T;|DpO{{{!Lwk^3KTFZS2}K>B~W_#YY+ z{Xa7Q!$8Xa;I8QZk@+7E{LlZO;Qt~052XL6i~r%2g8xUs|3LbGNdE)r{~`Skr2mKX zKal<((*HpEe@OoW>Hq2Cf5173^#73l2h#sT`X5OD59xm({XeAtf%N~7{)hka|H%Ar z49fqBK7X12^9tdAQ>Of%=#P;3KhX~)^S`0*Q|5nbrTm|lDE}w&q-6d#%&E)#Z;h1y z)1C5v;ypp;fAgXIZ|Dn>`9C?7{}X-9GXL8u%K!G6@_*(~{!h&9%KUGhl>e=U@_#O( z{GZvB|IPhh|C`MJ$@Oy~U;iiR ze8GS>f|DW_f6aIg>|CvkqpH&t7|8oB`a!X|XXXLVy{(qVO`6K0jexvCBm-(O3 z=l|FLO#1)3_@7Z9CH?<0|1;(uW&UT}o00y1(*I2Q|4IKd;s00gKa>7{(*I2Q|4IKd z>HjDF&!qpK^gomSf71U<`u|D)^MCpO|K?xF{1=&jA@g5k{)Nnc5&0K|{1=gbQOJK0 z`4@%!7ny${@?Tx^FBw4QzZCK>Wd4iHzmWMaGXFy6zsURxng1g4FADjuF8P;g#rzkU zeIXD*th$qD%hwt7869mj6Zn zn=JneAkRPIUO<+Ayb1FBFXmvV{I5d(u}l8@*iaR_qA01T@Mua4`lwG9_`h-aS z1DSs(`443No#a1s$-nz3@*l|j`+xBtDE^58|A*k8DDZy>{)qzrrwjkYLXrPN@J~qo zPgnlQEd~CM0{?{I|0wWJ2>wr3{t52U2>y=(|HSj+W!H*-`9BK$6O#W!@=qogT0AxS zKl~q(e`0n$X#dmy!~Y@qCnW!;3;zUjkloAZtU+bCCw`FTsf_%eF8q@MMg9-TKOy-) z1ph>V|3mUmNd6DWKOy-)B>#lu|B(C>lK(^UPe}d`$v^oI{*Urs{*|})CibTA|MA}x z_*Vq~O@V(!@ZS{pR|Nm9EC0$?k^k0(e`TY{f9t}(!tV)^|JH?ng}f`0|JH?nHAa#D zM)I#jRqyV1F8G)KmOHu7a3cEXWc;fUiu^Z%f2F{GOS0JNm2L!o`Bw`3w|%2rBjy?Y zkAJ1We+wQlE{lt~8H#_Uz<=`{qVu3o7w4ffk#7(50R{dW$-g4`ZzTVUWV&v7EJ?%KH^=N}$c`L*U z)hPZg7v%iguN40o^Y^y~osishr1-aYDgG_qr)^Jfl}u`+_|JzG`L{Cu^F)yIpFdOl zTl;_cw=({76vclwrTDkVk&y9kF<&p^KO+}c#(xe51^%s!|2zQX{O1RX{976S*$?FW z=Ux>5)|TSm8dCgc%ooe}&&xs1zeQfeU;Zt@e^%h%%J|RoDgHBZvbykZmn!g|75KLV z|5<^5OY)yd{w=|OR^Z=~{AZGXOYol+__rkgxeNam^8y6_S%H5`@}Eimt<*9`X+j41 z{HOTm-zok-eh#`nnHFmIkm8>=QT%g!mGS=vQT%`GC0Z+JemK5~;-BNIjQ?Ln@&CtA z{PQM|^Uv{B#{Z9{`2Tej|Gb&vpEpzde_N3A|B=TMaxS~#Xfwq>$KQ9;s{BZgHj4j` zyrDf~4?mY8cS6QLZ=v}A$WN5<|B=5U`gxl0^c75V=%{yFl4hL{~) zx&~iK{=bZW-b(S$@s;!W!B-|3_|+jQ?MQx#2|)AhVVm^}OpOgH5l7CL}|4IHi$^R$$=c87A3S>0@%l{|&=T`%owr0#wIR70h z289cR_ShGCt|lH5_^VY9|hQUHgIkU47Qi`C+gZ zXnEclQxY(*Jm$?Ak5JrKCrz{Iv(Odjng$~rV*cqvc0RRbeG@Ro-b{;kj|6(Ga-Xet zXuuG>%vHxgG zcg(GYEPpaK*$Mf&6N*+o)dN zzTb+@>=h%2V#d7(`(J_J=HR@}Tga1GY+!X+xe_@lZg9gN^EG`!%DZp9213`hC0RXA zgRnYr{Dbe9lhl1&_4d!8Aaj+H;~?&LC0}5Ly#leKL#cg`L-epC+C0A><|iA*Xk8wKoJ6B5 zhC|grEcmjkd^QjHLeI8&)gv#WX4$BbshE$^J9^2gS0ae_-t<#NKHlH{BYFRe2lhXk zX~*YapKiZX$r>@MrR^+drOJB?rR`7Oj~&RICGEHwGw163-q_dJ;-1F9KIrn}MQg0a zNISEw{2Vhrfs)h4J3p1?NjvkV^fTK$0F)e>uXVl%2c_F(&+<=6LD{l@?amo`pj344 z=aN6zGiq{N_qO_GP`(t{IK6ETs0=BmX{KU-Qo7#^qhUVCTelC1nvV0;$w888hnb+N z9jtq%=?bVs>RkNgg*{11KWpafnhUD2&xiRQ?+t2PW6SYVc7W>oTj~X=j-dMC(4;;^ z_&pL5=D_^*8Pr-T7d|?IJfpd5e0RLD1hrD@)Q@eWu=m!)J85zb`ZvNiFa6OIxzydC zPU|rgXy?Du&ztIF&hy=#p^4jo{%lM_vo-RJ^uVm!4D1s<5bGJR7WU1Ze+t;q4Fa2ed|>6f=b4T{ z4(||?&xtO`BVya@2uE!I&h}$Q&)=ed;~2YV$A&w=kyK7uydQwm)HF6_?>OMDb+BJG z61lyh7d97XV$Q!g^z6X9=YU&#a;|A58+fkm%ay{AN9{fDRpiHX?B5v5ZJ;5i_vuW( z661303q7+l=EWG`IjdT@=*9!@M#ZZ9@sarbq7u6>1i9+wb5jfks{-Hb%#q#;LV%OqEA%%Bjdx!Wf>XUTUdfU8&z5%?~!LTx8<7JculJRE|%*5 zGM2WwxQXxgG?ljO)z}%9+#zjU#K@A6}vw+EtGbY#ORmD#Y@{?yd1dhoT{`VvvkJU5jUirX^Xx*`L!C9CTPs@ zI+Y^r489up;Zi6l4RV zcH6#Pss-iNtm@UCGeCKTmGI+|Nq7$*ow_qsA5>OqO#H3^pz#MWz`-YbD$On1tx*hgwvIha}wcVUw z(U^yxl9lgk6^@*k#y8wXaw13y*_lsd*kYBO~ex5!uCkK>bUbHHy zCLcN0@zvFT9FY4$vzxTB6Zd)}pAXyK9*O+NhsC|euLkD&thA;~5OGJLC! z-%IiSSGUe;1YUBWjZ$qM@cGs0+YjgiPidXA)&cDGSh?cE<>!}yzr~KDViOJgFIlUC ze`CKv`Qpv9wUC1`ZoZ&lp+EK*bbFwhx&j2Z1BdUJiJZLj87HES&H;gV>gd65MtdXu#2-6xC9A-|-}Cw(qYITbH$3BEcaw05Ahby~~L@UgF? zEz8?RXx%rHwhr2v@#WVuXVneIk42`)gH|5Be?+Ag_Uj!T z`l{;YQczYNyzNK|-p?2NSkQB^KT@r1=esq9_&HfMylP`;kqvii^z@Y} zs660Qe7vy+R839?eOY}QR6;F%$9-pD&%w^&Y0A$)^^o0wx*mP;ep36W{`w|RwY^g> zP)`Td)BKE$1_7Y9EOc|jsz>;J(qFGpa}cO;W~_WO#vatX6AUL$(?UMv^?OZ4$j>{l z*ss+axxx2dz0X?o6=*~IrgZl~&PKa(?~d-sMO}RKj?%SAphYcn+qN?Tc>`y(YZGuz zyFJcF)$0TD1YT>=HO2$o`TI+UGuTI&Ju=}^p%O4+Hs4?Z=7^emuHvjj|6sR(*}Wg2 zkKC_N687#mFkP=`@G)1qNyQEDl|4V0Y7fJsNWe%(4MM?iuZAe~hcvjkUef`}U)Hd_&QWo4ulo*2UDbw=7zcJ9Ys zvs<9_|LFSicq*SS{(G&VMN$c&P0}Wnw29K9RJ1QhB~hY<7Rp*FB_frqsf47>k}T)3 zui5wYy4=;h*R}8b#%;d8-yfgX&#PDSdd{6W=Y3|*Idh(Qo_R(%Jj8k4RRVq8dVZzq zJD7A`Xg=#m2SJj{W*8)q2vS;*pPCjrmrp)$`hz_q1nGv8(zEOr1gUV{@xK*{1o_VE z#}y}65ag;?3n`&^$i{Q#Z$IZ6uQrOL|l=ZOC^L_ZofaXxjNfV`dq&*y}qXelE!_zA}ms|9vfT zpbf2`rC7|p^R9)EkUQ^F`~`h?e)f_UZC*Ap&AMT(;~2UxayTcsC}le#QDO4%c99J+ zEz{R9O#*#?USW^Nm`*x)!C{pbAz4%X*5Irb zdLHwv^qEyQ`fkVmrowH>#PmP=PAVHR38^PL#s1ztLP${rf&c%W|2}YN!_XPoH0Zx} zKD|bP4FfXTW z0wdhbg$C37VD$ACN1wDGFmh7@apu9OOsL+9j#)6aW2<`2%~EuKvbAyHazy_%weepA z#*XGM+vaWz<1e>8yVyJ(Cbn$f8sn!9V|`N-8}c87?y!m`vns<3f%MQRRl>sEON)GEP`aGJaOR{y1&1T)Sl5tkfe~BYrF_jR``j>GujBU zoJw4@)pde&7B#DpCrGiI8nPaILFYxi7c0&p5#)?TX8eUd1Zm8D3K>B*6ntoa5Ssfw zY0h0GH2*A~rB#8}k3**BT@!*l#YTZc2&G3{KC^loAv|X>Jn%&4!fu~pe4h~Vp6dVU zgz)7L^TVlU2;tNvcG=s|`3xW>hWo*F;&y$`8Rbt#E8C~s5MXq|0Ah?)yJmJprlrUA6h79aUk=qfswK|-}{S*|-F zMn>>LbqO)!sqrl%#7#eMHdr*95dXRSrH#{jLhL_oA5t8KSk&FH4yC5gjk9Zm>5E4rThDAtB!7H~XBx9!j zqM+|_ z+SxF0*uA9o{WKV06tCVQ^%DA9sg-xr6JWrO61qV@5(Zu8J`27r4?}WhtO-g43{19I zbrrsbL7%4eUyL5Z(D$f)=MSjE@V@TItc0I1q+CB?S#ukPzSR~iHnD`^wymP7DqCRW z-ouMeys}_;N40-5^#lx;R+2$qhA^QriM+B?e$DEdSUp zQFIRS+FYfHXH1y*@MvhWy)#U1Ej{l>3nIapt;vGTS+hq5nHV4g1 zVe@wl*AZmPtXzk+iUi50@%XHFX#}aZVaqjBbdK^*rbDEKIYFMBv9vbu6G2w4S1wYC zBgmKQMAh0O384e)s-~47zj$-PV~fZdg8Z$9{Wvm|AP-iTc38hAgxZ}nuWr6c2(Jxm z3${%}=W|vi>|FJN5b~^i7uNL{-3Mj+{{1jQ2ln85Q#l`(C?lUI_Jb`EGzCXA>36m z*FN2h5ZP2bQsIWyr}e|X^tJn=ye{XgsvLS>(xr%^p^yABuQ2C@_+IoKS+?ZKLyGA8 z_%oBAc$_ChXBEVB7VaQKPv-j?cyA)a9M)SU|NexYYo40V=CaWHlX(uGjnMi8BloQ6 zoaN|!u={z6OI8!&r{CW`c5NS!}lbOwy*nSM+EF%w3Azhsz&I>DIk`9SGS_UK8&^MM#`W1xHW(p)*^#yR?>-n$&u=<*Ne(7-uGo*wUI3GW zv+O%9cM_x>cK(N4LSZ6(`iu{0@-VsmYvciIqs* zASvCw`q$i-AWJP@SVx;fkPpus`0)ezshNTHA}v&g%8NKme@T%221>o0(fw0ROVq{v zPY6;oyDXpTN01k$ged;@BZTC0-L}maA%x80&d9dA5@gfo*4JP7qj}79W3~mlzlwOR z$^AA?2+^ITa_>8$^PblT$!$S&#fcId=>S4l{ZdERK6Fl;?ZLFWb8itsCZ+Fyj{Gt> z{PLVsbiT^ZjjxT`x(MNcg?20A(0OxBH`ZVFLv%&G$rP(Mgvb`reL{{5LgWEgrE#wX zI-fx!5Xq<-j-NvzL`738o>NQ-;l_B2L^k?fzrv$+l0*<8YVh&P zrPu~S)cg5EoqHz;k+a9g&0Yr+B0;JJKW%~uQ9&M30sNW(-Xe*&&{ZT8b|Cl`@Q;hE zI2=$1-G`PgH^{Pr?wp_IHy>yNKifrU*z^u`uODvuuxuXmY}XA8+B6M%;!7&B_^AE| z`$R)d0`$mq`3%G#gWgr9Qk5>Sd#=Sj=yAVd9q!Z%J>9fj`*-<4pTa$79VG+k z^A}IDtXlxR=gk%Sq%@$ntYILeq6GRS1Nc5Knb7aPbj9xjzoAd}c-h`}*P!oPS# z>Civ?^Fo{GQy93R8!Q2*p&&%oaR>DNRZaBSk1jhP#<QymklHKFlkiM zFzaa%Oy--;(cTpV<5e9GTQX%}LjRoElczrjl5&5fhI0bS`%*Kr8&aLMJLEc}#ao%Aa zf}~9?wMn8Ar0e0^^n%d*_Bh-)CRUXoXI{45Au*F6MVUs=b3yBW6ot8+7mpF-i8Wr8 zmj=-DqW;g9Gg}Dq{5p4H?^5K?0bK#=y@ZfMYSx%Cx*z-DLGith=0(q=CRb*n^Ql3) zK&R&=I>&DR_|p2r%bfVS_zv(itpeF$&w#J`Mz(m1E%0B= zyTgCr4!rK`x6~BFq3ioy!%Knj!0!)elqKFkx9MD+&BC$3M@M~^KeGV-n_ZLF4S3L< z{p!8x9s+t+$%?o=tpff)9%t6HyU=~&K;73oA?WeaTj`f7{(%FXr4N9b^C{uW6)pv z!ZnZf90oScXy>SfL*I`s^_}-xpnvwQd2QNOFc9j!SNduK42n&U*$`I<{nrPDT?Trf zzs!-ZlyDyguRWh}s=EaStEH|#*w6z5YbTo0?8RWf$GyNr(-(%ec~!o@i{`73l3F<_ z3NX+mmN3#S4}*uiA_BjCgkhodHu^7&M0=__NxGvvQS52h!8b6xN=fgR)hQT$ z7P01tDiucWKH_Bget}Vn=wU`Bz;LIkJfCI*Bl}~-eLkRkaPPxk)8|#e*f)`R8mE~s z60^E*%>`E&mH0vVyGRno=Xu;a7CZ*y&O%LhDYIeJdgI@#t*>A-KlzVjs1l6R+;@a5 zSq2ja$q^ZrXx&3?dt|gp6pVRh`0rC#4-@fjqO|BkFsVqgmf&23F~)8edVM;K?kq1vNJy8J@qUF1@=9&lrpKNOLF*ye&Zgaf{Bxiko!Tv{PvW|{d@}8Kf0~fM4Cb8`Bl~qj(dT1Xh>#z#av+VEVp`(RRBl&@|Dy> zYk&h0Ho}YN1KYdGqGh=+bgtg{V$G3*z_o3@W-veko|2rcZvhKBi@zs1Kad2DjS{8g zb3X9?9<{3tserEgFK#H^NCB>tx1>_VBjCo2uD2cE3H-So$(j*pe!Awqxn_DU@b+7q z!177pv1%XBI+6&6zpGhJ1e}L|y zp=}rA-vZxaHffUO2>f69b3aeiLC=zaG;t;5PfqK%$2@U`ZebU7BiT*ReN;b5%FCf3j$!95zT(+Ax>AFcKsI|{w-Qt&F*40`LMb+t8)K+n#z_xaX8 zp~p|=(5?@5QAi^vw}X)B1-eTD9`*17&+MwdVz#VvEO?ON#9R^FLY zw*-3KHkJCqDm4G`I<%{vLBCIGmi10K=x3bKpB_6M`cys*QCMu~yKXw;$>cs5&>77B zJ`d%QuLE`;b?FE6W!J^)WIsdytRk&?b>wF}&71*Le{gr%o_9x)-=1?n;I;$#`?t;J zD~_S{zL0Bq+tVswuwQC#+wxpAKl1I%uPlOrL!Y1Cb3yBUhEe$sU#1}c++(nO^gHr* zv(QDaS`gp4KMP{E!_a7ZLD41Tr$^oP+m^nC!R^I)Hy{`Wy*-*1RE@y!7o{SZ&Cg*( zDD^EhEfZo|lrLBp{-S77LVw7ksRdB}gw*Zfhp zM}GF|Z&;fdjGos#wClhT7*?FW>%xu-7`|F^O7i$Rl%JNC&=dB+nDn*7UdmfxIOUPe z&nvz#BDKx!j7t}cSxJ_yeu~yhAj+t$cPWzB`&uaA5c1=xzgQTbx(hay1NyxB^EbrS zL&w55!umdi&=K-$On*KF=#im4Z(DL+mYPlPTvO#)7p;@ZQTRDiA2^G%1J2kfv}Q95^o0sl4jF4yhYD!wlYSe<}t%4;yN3)>-J9qj`%LoC6$XOaJY&6@U}w@qAmL26ROX ziO##d2KWoiijm4i9&ftpgaGY^XqtV z;7c!G9UMgkzR|`QMH>$ENc-(o4^M@jQx3Dzy{`k`S6?+)V-WadM?NU@qxmuXWZeB^lfNtsY%0bD~q1(tVSmD7u=+#(g?RfMB^xh?D&eYur-M-FpL3%3CUG_Xc zL3Abb0(B%})d2K~=VWOu_=4mG&3;#)1wBU5FXX-Tpzm#J&zE)es?p8GKEjOY)Dt3lm>1yG?dUNPCYIj`_auxdR*2gVK)_c(scW^v#~x|CZ$ieZ~uK%6$!h zffwmz);1zAQ1kxn_$ieCzFf(BdjrkGxcJb8JE^2QC}73BR@@Gt!90#zxqXa4+rpeXYw ztgu|5xDFl*6?z6#pW{(CW@rI*l4({X6akdB$^0XijG%4Tv~6Pfve16rY3|aYnb6)g zqsW=-1Z^Lszon?x166dv5}O zl(rBBw#1z5E2nP)y~k7d?aMG=9QCpp-w+t_Z#u~*R{(Qv zxLHCn4?52jG45_ohR!0hkczdcz`Pw*aYgYLFl&G8QF6HpoUPr*RxR}hPV7U;$MPg# zX(uOFP`3jsFmtu%ZXw_) zc(x_&+^z&*r#3$Mc@qEr7eQ4!+l2Y8(u)CGw1pY%|_^K?Q72n zKzSQ}DJa-NkH@cqz$i3-r;IPn{jdx8mOsw-8sq)i44Rs56t4(&xFbIP6f~B_dWdQM0Ln>1 zb# zZRNg(t7M=pRNja&vKZRBzBj&prT{IL@|7VmSD}S%F|SK48>o7FEq5!*0@bgX-}`ks zwAy|>qx)GAT6+dU{Fd1RwZq;iLPr$ZwWP$1N+y7^HH?3woDP%+*?#gbWuV>jz3=3? z0cfw+R`|;20R>p=vy610O=w27&8#cXpLiE`9$xxt8U-OP^$!lnPd{QpW zI}1Agj;17kr~{g^-yW+C<hxR#|)SuJ-0zJtcJ*oW)42cDg zUEW1P`|*6&7GD9H<^7l88E1eN^?tp9>tkRsEG#2_T>!TBNVl;* zqO)_VdUl|=wu*iG-9!tpy(*L9aBRN;s z=N=O{_HwE7w=M@x&bK`|#VWuUWmB~`%K{UxdvbC9Q?=~0Mbq@BP$nn7kaMOG%FN0~ zL!LE5l~=oisf7+y@vl8zvQh89uxtuu3BSH1?!Pn+#mtfrshKk1C+`8SaP`Nn$& z-HV00I+vlTRjYLPwIbB4zP(b_?+nz~>rJc8vVmrOg5t=nfaaL}{IT7hP?I7>f6|Bg zgItrnWtlIu%&I0o2-yZL4(Dc1^z}gPzV~Q{aRk)**ti6HCO}IAYq6_g6twEzT2KCH z0<|@pOb`CfgSv%6TP9fb(E4e7m;0DBP(-t0gjTde-NnCh-{m`@F6Pa^`2*uX(SGuC zXLUMIt{(j3;r15lx-V48JdlQZ?bScB;uZrXR3?$8rYn{t1NZ$JDzfu|W8TJ$z_^=q*EEtkL>V(OO-uiWA}+`OeVSCK!n10NG%B ze<*T!x~BGf6BLz}Uw=Vk0a5JJ6m{PVh*qzU@ekdhSY^S_J@SK4eEodyxREFjJ&$aN z=Z=se>bjx$)eR^nVm8Jq5Q1yGu1yYAk%i?j2|mY zA=7Psb=vw|DEC+%D|B2I%D)^aZte<#%vUlY1zXc0^Ye^L)w>d)ywZ-F?6nxmM_sL0;;vvq|bRB&u6|72A{)=Fl}3MWU% z(rJ&}=y3xoWqtczo1KBmZ3%O447EX)af_|qGb_jv*u6Pa;_{nNdH`p_3*t^!XJu4O z!q@Md?$@8~;p;T?#N3GqvF8*H>Kd8CmqbmJ@K?Z>83s|T;k^)JVP2E|Hx;5&?uz(F ztb=G7A5E*UYUdSl>!sq!_DfB*3h_vlwrQ|!pr(EIrzQJAaX`%e? zOE)awqy4&DTXxsOhoXJ&XUQLe4~x&0wDU3{;@<7C-&q^sec20j?>DjVe)*?U7i<IdvHb72qC+5R5lSfU^wV3Gn@fKmo2#@J4{g4_;#&0Rs6Kz+WKu zAovO7X~Ro_oJHUx;4cf_n6DSs*Hggf1w0b8HwSk?yA9wXs4oqUSgr&9-44?);p^l7 z%Bgn^rvBhNF2B{hO6IGPAPkq`|LFg}{~_$_idz&T5`4oY@vkNTZl6TydS*r&79Nth35qej zDCyyDi#;SLo#KCZ5~?u067wx*{)&1t&lM^#y}bOg@tV~ns1(Q{Lmj5qVm#IDk9Sln zxIzu4SLaQ4iP=PkT8yU&(;G34`j%6*b5vZR0n_VKf5fSx`@u#5E;3Lsy%pncu3u?u zjPAo*FunQbiKd7HC~wF8L&fwqjGMxm6v_+Gg*Hs5R8ENcsJlWN)}sT{+p)e>hSed< zHw3g}I<=%M`0rX*Xvh6Z$8;Ljv!kQ@o#;DVpkaDP!G{e}8(e`V(3=EIOlRQ!p;Nce zJ_ZxOz;t@HLy^H|S76|AW@9=F_Y1T2~e+9ss7xJ)?qQ7i~Et&a68}aqb_hUofFS}DZI}GxKsVQe-ikZ z-i7<0S4)vqi6o#4(|O+rHNAtb(1rW|n@9TUvb)G1{+0h~{lEVq?934c5svI1mw@Xh zMU+ICoFPFHz6Shz9;RpEan5>stE|of**C6NI#u48gd+bvR`aY$P-HjFEB`sN=c)E# zlTeAJW0?wrQfqj z;0p9|0gjKw>4zKuj&N`sD#B$R6g41kl@%Jz)85ST5z|=nNVgts^*%NPl&4 zgEj#UGPFa}yePy4Xj3>p zB74C2=~q?nZ<+-_KY0FpW2_4>rttro1Qy24G}|z6L{S%*0-P?un$jb45<0PdY~x+m zuc;BhUSq^PT!`Wa){l$z;^-T*pKR0xj#B%pgCAfW& z(4n4|eiF*h|H&_zYQF=;2i&e)(2uTAj>owY^Qp!BtF^zRR}#n`6xU5eH6eSL;@>q1 zjhJt}?6tN>?XFPQllwbRgai#(P75xZ_!=VGVy@6saQ5cYRU~M^^4qXn%BA5s4zegd z93GmtEe6F0jH4anqaJNoTB3^L!`7X*Hl&lF9pj^6TpfBTTFW<~_<-@!1USjSz}NJ( z!Fyc|P<)tOyLu@d#RuF!ECFs8U@m-cs{Ra`m&O-)DUP6dYf2AcWDi(Bwv^cwO`9FS zVqRs;oiPdQDZS=T0tf5WIlRN^*#k81R3_@rSd8W+tS1la&t<4Q@9;tM43OT7qIEVN z9>2I}Tb|yqLiX^l{I5NnFWq(C7uf?Y({cU8DI7CNkcj1^F42_G8h z$$&yp70OpIj&@v97sq4-9Y^s&a*i~a>k3qiuLI-i5R8{DwBzyVz&Pm`Kdnzjrof#5 zT8-h5t+Ff71^CIp6yQejqA4fEJWv-Hsn(p2+OFvNGSWjIjXTzlm2>an;5PzTSPwSt zM-IO3j9WeZMXoM%KKW2BeZ>_x0zJ{VWBs|WDGAG(2=u&}DA?oS3Oqc1aoQKhjejG1 z_*eed9%c?D>9tNm94^yw{lu94GFv3mLU2KHza=Vm;VcKbFfY)6`y+r<%NP2n!$qTc95qI9RXFi}E3U zGf{ll{?Zcd3Y~@p$~j?F-c!v!wEnJ&1(R(%2;UD`=1G z0kL7Q}uU6G*y^R3(O-Z>PB>;YdlU^&fLev|lycS;Ob zXr!1=yFP;i%~(DK%Wch~@7t~B3axKC4ptpS_JDCvF}^n9!05(!0@^;u8w4Ao_<-?s zU|j8?A1n4%qxj%)+vbp+D|BF-bc~;Ne?0nZKZ+0Mw0%f^C_do+VPf2jvnO2b=Arno zW#q@t1QZ{p^vFf=0qeus{OzQ>7K#t^QmZWLT!D@C<6yly<)*C(IEnJj9_PV%qbR?? zdUCP;oPqPAQFjR7l;|xeP(t|y*8i(tB2DHLvWI`=f9=8gK$wsVS`Wcx8m^y+{VEa1 zg*5zoE~aNm0$5l-W^bYKUdJ84EUPV1S3r3v)~^%m z#V+oLw_zyX{A}|?UY`V=SWhl4IgyK2vvPES<4oQuX+r`o*8eNkH{@UWUwfG6AVV!f z@d20UWeh?8B;YujFoj2v1ZjfbNsxo-nR_{#-b9li6YHOY>;1*;3$Wi6+={&Z_%@0U zxP1j~S9Xi1InCJ>%5Xfaz;db?{7O48JuMxWUOjnT=bV8xrJn=JH?dx9w|1i-CW;Rx zXBI4cj^YE>lZ*A|9B(_ZQU=9`)fra~B%}C%^^fIB6juz9AoySTAA1PS3VocVJPEP5 zOvUvRe&n4F-9mx{Y;UPkzpEg7!1PR6RTbez5@bx-cORnTdd0YX!C@94+8#Z-2wBhb$v5%)!G$m z&G>(vy^uX%IZar8qta##(R{RyHfRxgf=7ZTjGuz#wxl#zhc8F=;8SO}_6V{EjDw2t zwXI4k57~v{!~d=^zIKd@I{L!)%1r{O*q_@mP8!DFQFu;jQ-m&hpCgdpw1WgR+&>Hf zZWo{ju8k5YNAclqW&OSzBw%1YSXe)%6-mE>jP6JAIJ2;RomelnR#{t^28s`}_r|DH zlYou&!a?pR)d7^g0{l?3_JxY5Hxh(6WcZW79I zyE5!or4y9l!4?vf|8Lwe|H>HQZBBZ~9=xC4H!?-`fce*BzO~y8KE8}W_Mi~q^s$Hp zbpknLXu|Rv%6z9s%|Z4Mo#HsW8QFsXKN@!|x8-7uefoW551XnS4}M1L69OD$Xv6p@ zc)Tfs@ki?u0(@wF0^_3Qtc!5?tP50p-Hvh6F#e7gRW+`SC_dbnmAdRMiVqk+1LLNj zx-0oy8pQ`~#jT~^T!Df0U}623ixqU<=%ajdQZ3~k9px9eAK6$hR%iOnh-{M?<_a9Ff9zh9c>lM^9{!d8wTFe>wjKltVsV)& zsE6!f<0DVopC~@yIFpKh&k@kckRh;pRARr)5!4fcVk|E|{e}{G85!~g_z+#tUI@yu zzm%5kJD@6s)~Viq3qGbzhH~sb)mUyN?#D{pkJT7Qoq#X8{~R7YlGKUT-Rq96D4LG! zVM@;4Nod0I8{Fxv{btA>Ok_?5c_8|fe3*n*EVo6f!lkJktyi^{J-RxE>_LEo1Z@}} z1^YJz`+FP4*N$;f@px15__t%6G>pIF=>GSGb5VT2*EEcuj&alH6W8V(B7lbdnvV5g zV*MCRTG}R0P`;VGD`AH^37B}C*;p@Dc&zZJ43uv=EiPVeiQ>bQo)1wR!1{MyT2#Ut zMe$)fxqVgyqT})V()U>H7Lx=)|H}W^Lr{@C)k2yCUvQZss7Ho)j5A(--RGs zKo^1xL7YSOAc%8h$j0@G1nq?&-=Y8FrK_kkPI^55g%A|s_T@M}mfo7jb-zT0QhjHg z?|#T0aJ;O-ax1alRARrW`ro(<_#%5q{7PzBh3p|fw6^;ovIl`2v`&fjZP>UyhZBwL zVW#zl?WKs0^=lQ#Mft?960cEJWDlOjzFx-29;R@-oP;)vkAmYl1;_WcDSS`Sx;4f{ z#r{pj{@yOYNrn!LzXOkVJ0AZIjGvBi(`u)czVp@v8os7uJ(yTO#%p8EMMWq++%o$n zat*}?tREZe#X27NDq0f72MuXc^*9tC1bUL86YJk8+cv1Nj{r6&Q_83dx&*_pZ8`_d7no0#fIrGJaGb2b^FWn=zYx@6zBRa?Y6Sg+ zp4(wLjac7$#;b@IeP}(KAfzes$R4KTpF{Bh%WXbe_jt`IZ}=f2-m<_1l**^#-ULeL_> zAq;I(_^OaS;CzjO^Eb*AJ}$BcjH?aL-)(q4r(&EPxPRJlJa5PGy#wQ?V}GV$|E6Jo zr{g%r!2QO+<4wnQ&A|Q0!g?{mKJi*m3&*`qtUufS!rq_lC_WhOJX`67;se${ zW=!azY#j;S{VV@t5AQ18=!lX?5QEDM9=H7oCYkv9`{2%?uP~}zeONd2%5fR#-3P)?7@ZjK{G<}L4X70n^XA2 zkUil1ytQFY;3xFlgffK>-G@Kekt&O5;S1>%~)>J(exyHN3@>3JT*=D6Urwr4hqKC8r7k7OBt$ zr*aljY_@!QBOwgg+A6B0@%w?O_i;XXX*Xmn+2ieU*9)?J?ef>#_(Ne|S$-SsG333z zd#4WVJIxzcJ2tJi42rBNtu0P7psdcJKZkknLP?FVAOGD8C|@*Z3E5N} zs@fTjzFp8n0*{x2CXA=MOS3#14U;`(9^(dXpq;VYtT}s)>}3P(C+jXJ7JPvA4=sm%Gjh@U z?et@B<1fq4&Ahs2o2l_8b_VN|8;T0qFg0$>)r~ zIADnF_ee-;1V)SfPigf2K1;LsLC?M0z%=RiyX^W1n2Ae0-e`CM%e(6M!of~pHxI>| zR>c5&+J!*1<Wjf6X>*hV>3@$8#=339h<+;4mjdPXU9*VeJDM%_qJU=37y#|xc4@m z0nX;C!nCPz-{)uIk+C}A9d1wJ_^3Ti$1w-zriiwnJc`IWK;of zL!y&h2VEM!Gj8zQq07|dC4ajq zbV)h=wL1_7JWAzek=4u5e$t)xi4ljOD?#n#192VbGN1m|sC@=>ZOqoB%s&BLl!Hx& za?!qS(d6&GyAb_Xqlgc;5Vh+qxo%|xeEH5@pPNvrp;!YBg}@iSnW2F8U3N8_@49&4 zGw}5}H@z6BJe@l8#A&o&ZdJg&I|*n%xtz#CgGX|}w_UL$rbGky?yt2ccQ&H$GEDuQ z0KRVjWy?nwfd4xDM%6$T@CExBzrYv9-kXB{$$PYbW6y;+&cHSQz+zD1k_py+d#4DTIV?-1eDu6b-FrX3Z-TT{g@AZp_Kl{ zk7DZ&Y-8d)d zJGAba;=^Mr=qP!V_GkJgXzyvg z_Rakwbm&o@mFz<6l`6|rnENZ2i)jr%;_xpo848-{70&B}ne zdDG(uUL|P#l4?9@mJW<0M->C~{yWouMu} z>;vN2BJ4Qm43!Tu@J9Pca`caKT>?;E`FIhf2Kg;X#3eQJGH_-FZ@g}54xKe;txWnu zfwTQ&sn#O2e&zT@>6`02;5@iuEiQ!oevk0st>49gli0A|e0~^kdL?d4$9)72`$q54 zvMAvE;;mV29Shtw;xB{wAJOv?(XT5sKLGc5c;LR30l-y}*mH0K`E^9@1LfW7z-{t8 zIQQgF;HJ|w=SU9$*J~&3Yv^9!$xa>;oo$c&`OcxfA}zE}Z0!%(fJor>c-`=?Gy>kk zpj5?iY2c+0D|WA8AwRvbcGasG;GHVFt`eYzzOUdZRB;Nu54QYZ(>XUe;PHZb&#lk} zUYgj;-7Wplb@nS)`w%L9XH3jiMElAQe{d||w?LP&a+0j~Ea=LdXj^>-#e@E?Yy-5v zzANs&3++xmbh*qLKN)`%_;cd>^0%P1e89^N;F}fP+IdYL`1`Vo zw6^kq|K2=mx9nr!C)IE4d$SzvtNVH>T@~$Xv)^jtYA^)+zs~|rC80RbzP&HC7VU%m zb@^QtAMJ|`^>Q_MhT_7I+KXvxwV->(oaIL!djY?3;GEU?7~0nsH?A}&1l@}^)c7k` zLHEWJk1CQEqW$cr;?O_fcYS`Gxbir3?~4n1bB+PsCSpI(KZtD?+H{qd4Z;7)|HO-s z3pEecTL!{cT&A`?h|~!gfrMxm^O5~=kSMXSPq`)o($15jKaFTX&S&kxwy#GZQ)-mv z>a2#|qj!?v3?74AF$WOq_J-m{TTw%GE)?h;b$-oJfr9U|m*rGd!Qa!d&maDlhYGR7 z>X}VVP_{*QUi>|ED0BUDaVSL+DvpJ^eUlf1>JTyVRYhN@ERT6TZ!8h2mY<7AY~e%o zh)P!aheoJh_aLVI2+A`q>(wmZbRBAo9bpKhrisoVqt&#!5Cp+E(#paMBb;1|gcr3<` z)ppP}UF4(Gr$J~tVjNU)808Pz$5J!GQM~v`iL22?>)2(q1G^IIpnc(X+1i8p&>^(U zhJ(I4MzgPt>F3C_V2rZu_4<3nTZk5k7XQrenuJS zUwV~l9!Ub@#c4ge(|C8)Bwxq^y^J_O~C%T{w!fO z0<6-w7_~${V6Sb`uYd0cowLk(ohtVN=Ti6{^~h4_d}>|R?~eABa}T;ouH6BgqHWXP zKHG%+{V#id^aOCCHpwkgL*GT2Gw=NLwT8ew!%uLjya3#5a(SD6Z3OPh-cz6B0)hK} zx@FhySHNYc$(beP0+(aHR;z0#aAQ-QHW_aN-pU&mNkI^_WuLCpGvf?R0H7kc`R5j_Z@g`R}#+K9|PXU!M>d}JE3a>|D9{lZ0K?@Qz%(@ z6S_|HJ3dxG^RS}E{N6m|x4*J)75bt1yGOk!Puvf>3Z`#XpIeXopHyEbhrZ7;fBPw0 z4k|ZZ+COsqAn?)KPkWhu=sje$A=`TZ{3DJdy2T>ExATqm-1!Ii#(H~Y+%(bt(#PIk zHz5Ce<{guj>J0qPUa=%CJ>WlV>R>Hh1^lbC=8ji<1AeCUruA2k0Ka)}re(MV@DpEa zJl&ZD{E%d?+ifn1nR&>6fxEWu5_k$%BzQ?oXh5h0(LO<9z7W zYq#ClQx4s-yH9j4NCW=(aqlm-XdnCO{kLZ4`9b&fA9uLHN18PvYm4^i2YbjO=~+o0eg(NjO}FNV_QT&M_XCZ3@=&A^ z{+QQ^qkLk}$CFn18RZLCMZ)fxp#5*Fg~{F9psi!tm34kYC_cCuJ~*-;I*u96oowxb zcAK-_hhx$H)f7k3{OQx6Bl0H5T&4QN9sKHOVam5lb; zGdd4c&qm+rWr!Jt<{nrG4D&dp#M$eBxlhOH=ipOd{pcT`KO5x}CE+aDh0B4pnrV5g z`Yy2N_+1?MWeJ@QidS8BqWew%ryCBaqx+3PttF{H(Z14#`gZppzk$2qX#!c<8NGK^ zDXpu4-p@=u6@FVY9k?O2rq;i*fm^!#;%p(bAKb0(xx{QO;PT%kiT0`hZLgysX_ zUHbg>gKRhOSI4CA?{uDrY_q(z z9oxR|+!)cTPv`&lrY3D~I+qGh?miiV?UUwmGe7*m_5s2z3dzstzK+;bWlQq|7ysf9 z8F>)f&36g3c8x}wd-1+5;v3DUX*+jzNffp_JEvtx$z!|Em1lOJreV9invLO}2AVf> zMRL-mJZyh8#^zES&6oN8Kq2fK{axU@Uv|lU*zS4cj`jTnY_GoYSb3ojw*S4T5)f)j zb1Y5>7dRiGb9;A3T97z$##e2;>P~akG!2~G46k8(@3AX6Z)yHbjd0lo*~>K7aL8bd zk>8PH_2YU)QZI65Jo;I3Q=aCvT?#J{~bU0b5>Lyi$ioR&1z{d#2@p- zw|C|$;n%HRk7MS9;n(oAqJtwpOFk=}{Ml_DuKKB%v3;gT%{$8FJs+|!=6W1vJ!;S1|NbH7DRwuw)>56ZK(NsD zb|dE8sOj)NxeoKr7EgRhb0G^`axR>3iNgZ%x({6%6{eLUM}NX-x8CpPlO*cGqFKZ|qkk9q$G%i*!>fusm5+qk0iSA8y)-Ac2JP2Pg# zo^KDf(;S4#$;*eT-c-g44F~;SYIRuQT0Gw7JJk{PVqdb-{$f?Po6*!fKdc(LU48n3 z9ayz}h4ER-4_LkVT&-sPVXVpON;v-?@e;K$!?R?}u?AlJj#snAT1ts-I&6k@VU86t zcfVq7oR;Bw2bx=>5PzX8>p9j-JhO1n>cs|^2R@^Gb+P`2XUynv3lj%?JLcUp!?Tu)5O_-u>Hlyj=(qJbWR&e8k*@I zkKz`26lP-k-GNFPxkz)Qv^JRs%FvvPbMe0n>GxdQH|<;L^Eqm(b>#GrGp{V}vC>ZD z7%u(n%+aJdaa&|7qG=w+sKP3{p;gE^9JFWM<{ac)9V$KXr7NAo=L>aao^V2jBG*Y;uU6j#xeG6s(LdxWOWBAoKZ#t= znRnnz5OVJsG~Y95!B<1-Qg83qz(Dr=AG`?M@VjL^OCLK7s;c(`COzT=S z^M&yq{M|R$ZB`QT7A`rNd0Cm5zI>8eK*L4M;wP&Veh19xbbOfqQ3o?umuK?J-eLBJ z&=c!(%Q3HEvUs+X7Us0_@8sF(V(uofg-YAhNFU$X){*CeMFl!fUw8|!pgdxme##vz z++0?$Mre-3o40?tKYj`RNmw~}Y2Y0!Nx`kh?|dhI^U__9Ei181*(~a9;!`ZoT=d(0 zsV0^cM1)?w7>DIkF11-Ln~fC{qi2bKeuR2|LJ zxfDIE{UFvhL|-3pG6CxkPL00)%m?e-j~`MbEX`5e^0>3$JGO2(7{5ZSiTZcm zOI!b9Y#V1ftmSehwrRh;uP&C#jD2jZ;ckxdYqw zYUj>=_y*fvxclggJ&0|kzBeX4Cp>9Yeo?c3Bh~Ro_Ze^7Mt${*KCNMu*uLcZ!Oi<< zPSlD-)7m;G!U6u^y{Z-1zW?{z?H6LO{Z4w9eXt2VJk$gwr#TJVyPb2(;jS{2>Pj*DuRJ*T-;n=go6zf5zABQrmJJ9e1v*MKhX~V?_+FhG5zPRC*c2hVe<$GCR;sB;+ee~J9cK~LGn*Gu{ zXM&mcDz;jfjKs|PioE#WdoX9fNQJo?$(a9n=xr%UNz8q%85z3zHRg@6Qk|u}2n$qR zES#nvh{eATHP3ilgoR(D#^yg$>PdWh|R)CMTJ+S zCk&JR{i((Qo1GVbIz->!vTy1lp|mWvrug4q@k4+u6;CW)Eg6cfTcxkBTPmPB;4e4z zeG}dPH|O)7Q$4TvGJd^h9ky9it5$v4MLhX0tFC0K3li4-qw_DiA zeAL&(_GjZ}=s2Ci_L8Xzd*oHHz45Akbk0+3|Ezy@{fOPjk$S&n(allF(O>I1bZ7^1 zRyzIqxy=PRa%YDmjJr?(ri78-u#(^S=_er{vK* zSD}XA=*4s|H@tKYLz;(|@My)YR|?3TQt$iofIV{81>ZdLU^|`f_@maKMRVx1Xb`I_ zo#%%O3@)Fi`}I!V;1l7bQDP@@P2XhbO-n}Z=P!@)1CAiKtZC1SL^`LRR}C_4 zrg?b}`1fO6>AVeE>~OB}Ci13TK4m_d>Hy(2ow-HJY2IbSq(s|&$Xmwob>8WUydCBd zKCdN^r+#p`Yg8@rWKQattd&KcTjomnP(zxZx3(nkfj{!BGTu}Pr_y}%N8K8EV#s^> zQ)%pEnva>ZW{+o3JI%>_yK=|K;mC6|a927@e_!%b*K$-4^0@1yG~JDn7b(#g__Y*y z53J=p_8mk1kfhOutxd?6TQ&Chu5-vs`S+r^nz4U=gc%Q%uw7?r4_7#DV_Tc7t{QrRQENv zyjD^Fv9ED~;-3weV|m~1iOX2bT6+Ac{ndw_c?eI^*C5@Qzld(*5OY{C~d$3&Z@Xb|j53y2w82{sLnj_YCuou$xuwrd% z=}+AoG)L=*+WOA(SUoEHh;4vBRt;~RFLibsR#}T}s}L)vIal}2xk&3_?U+C*vs7=& zfkwl2t+7~hfa_=%{U6pI-MGuj))MQb%PQfi7S_q=yCg@KW1XXNvDX|ktUuPh^-YHf zHV&0a>3L6c^hOBtAI

8yv-EDDNDCjYlOre1DQI$$#=AY)S$)_L;BCJV5wyV4%vt zRZA%^&Nn)kK=WXWRW#-8y0N*gy1RVkA8awdp|^E~F}7}=J#%SdIks61ztXWinRtUq zAwzuE5>EJ9?r@^}{=TfT(y$0@D;Rk~_6P^t9!L(lSV#SS;k@FRqb#spVY82>>~NYR zX}lrjE8)P{R~7Ak$B2)sxZi9^efPa%0pY<^zb8D~7kHbVmrfOam|ckN+184!?h9y+ zAT6H}UU5J^F9H zx~iR%(wiyBy*SF-**lQ#T@%~P3E9Yf5$vR&w}a-?&ettiCWhQf_doUH{E#OdY%yRA z{k-pnd#*3dx6Pf z`?MvBrl;(Xf1x5oO|uyJj<-s*w@pHRxz)2tahs6OJw3moZvlNz=f>bpdhgTRxldLW z1%oDS=qye_fpp9s`iHN-sjN8F>Wh!r^MCLnNM?|c%+R;^M)dshW%bgl{058;Hs79d z=sm`a=Lo0lb-@Iw_LRH39^o&)IR26kWAXc(!4r0yoW}3h3Qq8N1VYSal`8)Yo`eRjjbINlpe)yr~ zl3FOu6DWSv;#^BQ>2%EmQvsHHEnn+ez68sTbFH+ihGAKZPl|+21oa`~2fkcYjFnGU zr&h@w!HT&EK2O)md*CfpzojD=lkDw#t8(?kkPWd9TCl zLJF~|@NfR}aMB~!^<6Qce0j^dL%sVhwqWazgh9^~-e61Gr<_Y=tFU!N<-s_2;t?lD z*bmoEpgjm3FV>DAp1|s0-p1r`Z1Y=TxOCc3I{(Fsj*Q%Z?b{y)ZeK$4p%vDvWKW~> zZn^8|X>C*5d(aSZZ5QD}MatMa)Y!K_UTE$bC64WNUJ4SU2nW=sUpf=hjGP^7wW