From ac7875e07379c7d4c96dcfa3dd12456f0f4f78e4 Mon Sep 17 00:00:00 2001 From: iyevugah Date: Wed, 15 Jan 2025 18:40:34 -0500 Subject: [PATCH 01/39] updated the reformPlasticStrainTensor method --- src/materials/BVCreepUpdateBase.C | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/materials/BVCreepUpdateBase.C b/src/materials/BVCreepUpdateBase.C index e4abfa3..ad71745 100644 --- a/src/materials/BVCreepUpdateBase.C +++ b/src/materials/BVCreepUpdateBase.C @@ -109,7 +109,8 @@ BVCreepUpdateBase::reformPlasticStrainTensor(const ADReal & eqv_strain_incr) ADRankTwoTensor flow_dir = (_eqv_stress_tr != 0.0) ? _stress_tr.deviatoric() / _eqv_stress_tr : ADRankTwoTensor(); - return 1.5 * creepRate(eqv_strain_incr) * _dt * flow_dir; + // return 1.5 * creepRate(eqv_strain_incr) * _dt * flow_dir; + return 1.5 * eqv_strain_incr * _dt * flow_dir; } void From 3bfde1955cddb49aad7130565a4310dfbdaad30c Mon Sep 17 00:00:00 2001 From: iyevugah Date: Wed, 15 Jan 2025 19:11:36 -0500 Subject: [PATCH 02/39] new derived classes:DeviatoricVolumetricUpdate and BlancoMartinRTL2020ModelUpdate with a test --- .../BVBlancoMartinRTL2020ModelUpdate.h | 76 ++++ .../BVDeviatoricVolumetricUpdateBase.h | 54 +++ .../BVBlancoMartinRTL2020ModelUpdate.C | 278 +++++++++++++++ .../BVDeviatoricVolumetricUpdateBase.C | 260 ++++++++++++++ .../BVBlancoMartinRTL2020ModelUpdate.i | 324 ++++++++++++++++++ 5 files changed, 992 insertions(+) create mode 100644 include/materials/BVBlancoMartinRTL2020ModelUpdate.h create mode 100644 include/materials/BVDeviatoricVolumetricUpdateBase.h create mode 100644 src/materials/BVBlancoMartinRTL2020ModelUpdate.C create mode 100644 src/materials/BVDeviatoricVolumetricUpdateBase.C create mode 100644 test/tests/viscoelasticity/BVBlancoMartinRTL2020ModelUpdate.i diff --git a/include/materials/BVBlancoMartinRTL2020ModelUpdate.h b/include/materials/BVBlancoMartinRTL2020ModelUpdate.h new file mode 100644 index 0000000..08e8c1e --- /dev/null +++ b/include/materials/BVBlancoMartinRTL2020ModelUpdate.h @@ -0,0 +1,76 @@ +/******************************************************************************/ +/* This file is part of */ +/* BEAVER, a MOOSE-based application */ +/* Multiphase Flow Poromechanics for Induced Seismicity Problems */ +/* */ +/* Copyright (C) 2024 by Antoine B. Jacquey */ +/* Polytechnique Montréal */ +/* */ +/* Licensed under GNU Lesser General Public License v2.1 */ +/* please see LICENSE for details */ +/* or http://www.gnu.org/licenses/lgpl.html */ +/******************************************************************************/ + +#pragma once + +#include "BVDeviatoricVolumetricUpdateBase.h" + +class BVBlancoMartinRTL2020ModelUpdate : public BVDeviatoricVolumetricUpdateBase +{ +public: + static InputParameters validParams(); + BVBlancoMartinRTL2020ModelUpdate(const InputParameters & parameters); + +protected: + virtual void initQpStatefulProperties() override; + virtual ADReal creepRate(const std::vector & eqv_strain_incr, + const unsigned int i) override; + virtual ADReal creepRateR(const std::vector & eqv_strain_incr); + virtual ADReal creepRateLemaitre(const std::vector & eqv_strain_incr); + virtual ADReal creepRateMunsonDawson(const std::vector & eqv_strain_incr); + virtual ADReal creepRateDerivative(const std::vector & eqv_strain_incr, + const unsigned int i, + const unsigned int j) override; + virtual ADReal creepRateRDerivative(const std::vector & eqv_strain_incr); + virtual ADReal creepRateLemaitreDerivative(const std::vector & eqv_strain_incr, + const unsigned int /*j*/); + virtual ADReal creepRateMunsonDawsonDerivative(const std::vector & eqv_strain_incr, + const unsigned int j); + virtual ADReal lemaitreCreepStrain(const std::vector & eqv_strain_incr); + virtual ADReal munsondawsonCreepStrain(const std::vector & eqv_strain_incr); + virtual void preReturnMap() override; + virtual void postReturnMap(const std::vector & eqv_strain_incr) override; + + virtual ADReal VcreepRate(const std::vector & creep_strain_incr, + const ADReal & Vcreep_strain_incr) override; + virtual ADReal VcreepRateDerivative(const std::vector & creep_strain_incr, + const ADReal & Vcreep_strain_incr) override; + + // Lemaitre creep strain rate parameters + const Real _alpha; + const Real _kr1; + const Real _kr2; + const Real _beta1; + const Real _beta2; + + // Munson-Dawson creep strain rate parameters + const Real _A1; + const Real _n1; + const Real _A; + const Real _B; + const Real _m; + const Real _n; + + // Internal variable for Lemaitre and Munson-Dawson creep strain + ADMaterialProperty & _eqv_creep_strain_L; + const MaterialProperty & _eqv_creep_strain_L_old; + ADMaterialProperty & _eqv_creep_strain_R; + const MaterialProperty & _eqv_creep_strain_R_old; + + // Volumetric creep strain rate parameters + const Real _z; + const Real _Nz; + const Real _nz; + const Real _Mz; + const Real _mz; +}; diff --git a/include/materials/BVDeviatoricVolumetricUpdateBase.h b/include/materials/BVDeviatoricVolumetricUpdateBase.h new file mode 100644 index 0000000..2f3de9e --- /dev/null +++ b/include/materials/BVDeviatoricVolumetricUpdateBase.h @@ -0,0 +1,54 @@ +/******************************************************************************/ +/* This file is part of */ +/* BEAVER, a MOOSE-based application */ +/* Multiphase Flow Poromechanics for Induced Seismicity Problems */ +/* */ +/* Copyright (C) 2024 by Antoine B. Jacquey */ +/* Polytechnique Montréal */ +/* */ +/* Licensed under GNU Lesser General Public License v2.1 */ +/* please see LICENSE for details */ +/* or http://www.gnu.org/licenses/lgpl.html */ +/******************************************************************************/ + +#pragma once + +#include "BVTwoCreepUpdateBase.h" + +class BVDeviatoricVolumetricUpdateBase : public BVTwoCreepUpdateBase +{ +public: + static InputParameters validParams(); + BVDeviatoricVolumetricUpdateBase(const InputParameters & parameters); + virtual void inelasticUpdate(ADRankTwoTensor & stress, const RankFourTensor & Cijkl) override; + +protected: +// virtual std::vector returnMap() override; + virtual void nrStep(const std::vector & res, + const std::vector> & jac, + std::vector & creep_strain_incr) override; + virtual ADReal norm(const std::vector & vec) override; + virtual std::vector residual(const std::vector & creep_strain_incr) override; + virtual std::vector> jacobian(const std::vector & creep_strain_incr) override; + virtual ADReal creepRate(const std::vector & creep_strain_incr, const unsigned int i) override = 0; + virtual ADReal creepRateDerivative(const std::vector & creep_strain_incr, + const unsigned int i, + const unsigned int j) override = 0; + virtual void preReturnMap() override; + virtual void postReturnMap(const std::vector & creep_strain_incr) override; + +// newly added methods + virtual void DVreturnMap(std::vector& creep_strain_incr_out, + ADReal & Vcreep_strain_incr_out); + virtual ADReal Vresidual(const std::vector & creep_strain_incr, const ADReal & Vcreep_strain_incr); + virtual ADReal Vjacobian(const std::vector & creep_strain_incr, const ADReal & Vcreep_strain_incr); + virtual ADRankTwoTensor DVreformPlasticStrainTensor(const std::vector & creep_strain_incr, const ADReal & Vcreep_strain_incr); + virtual ADReal VcreepRate(const std::vector & creep_strain_incr, const ADReal & Vcreep_strain_incr) = 0; + virtual ADReal VcreepRateDerivative(const std::vector & creep_strain_incr,const ADReal & Vcreep_strain_incr) = 0; + + const unsigned int _num_cm; + const RankTwoTensor _identity_two; + ADReal _mean_stress_tr; // mean stress to compute the equivalent volumetric creep strain + bool _dev_vol; + +}; \ No newline at end of file diff --git a/src/materials/BVBlancoMartinRTL2020ModelUpdate.C b/src/materials/BVBlancoMartinRTL2020ModelUpdate.C new file mode 100644 index 0000000..45a75a6 --- /dev/null +++ b/src/materials/BVBlancoMartinRTL2020ModelUpdate.C @@ -0,0 +1,278 @@ +/******************************************************************************/ +/* This file is part of */ +/* BEAVER, a MOOSE-based application */ +/* Multiphase Flow Poromechanics for Induced Seismicity Problems */ +/* */ +/* Copyright (C) 2024 by Antoine B. Jacquey */ +/* Polytechnique Montréal */ +/* */ +/* Licensed under GNU Lesser General Public License v2.1 */ +/* please see LICENSE for details */ +/* or http://www.gnu.org/licenses/lgpl.html */ +/******************************************************************************/ + +#include "BVBlancoMartinRTL2020ModelUpdate.h" + +registerMooseObject("BeaverApp", BVBlancoMartinRTL2020ModelUpdate); + +InputParameters +BVBlancoMartinRTL2020ModelUpdate::validParams() +{ + InputParameters params = BVDeviatoricVolumetricUpdateBase::validParams(); + params.addClassDescription( + "Material for computing a RTL2020 creep update. See Azabou et al. (2021), Rock salt " + "behavior: From laboratory experiments to pertinent long-term predictions."); + params.addRequiredRangeCheckedParam("alpha", "0.0 < alpha & alpha < 1.0", "The alpha parameter."); + params.addRequiredRangeCheckedParam("kr1", "kr1 > 0.0", "The kr1 parameter."); + params.addRequiredRangeCheckedParam("kr2", "kr2 > 0.0", "The kr2 parameter."); + params.addRequiredRangeCheckedParam("beta1", "beta1 > 0.0", "The beta1 parameter."); + params.addRequiredRangeCheckedParam("beta2", "beta2 > 0.0", "The beta2 parameter."); + params.addRequiredRangeCheckedParam("A1", "A1 > 0.0", "The A1 parameter."); + params.addRequiredRangeCheckedParam("n1", "n1 > 0.0", "The n1 parameter."); + params.addRequiredRangeCheckedParam("A", "A >= 0.0", "The A parameter."); + params.addRequiredRangeCheckedParam("B", "B >= 0.0", "The B parameter."); + params.addRequiredRangeCheckedParam("m", "m > 1.0", "The m parameter."); + params.addRequiredRangeCheckedParam("n", "n > 1.0", "The n parameter."); + params.addRequiredParam("z","number of creep models"); + params.addRequiredParam("Nz", "number of creep models"); + params.addRequiredParam("nz","number of creep models"); + params.addRequiredParam("Mz", "number of creep models"); + params.addRequiredParam("mz", "number of creep models"); + return params; +} + +BVBlancoMartinRTL2020ModelUpdate::BVBlancoMartinRTL2020ModelUpdate(const InputParameters & parameters) + : BVDeviatoricVolumetricUpdateBase(parameters), + // Modified Lemaitre creep strain rate parameters + _alpha(getParam("alpha")), + _kr1(getParam("kr1")), + _kr2(getParam("kr2")), + _beta1(getParam("beta1")), + _beta2(getParam("beta2")), + // Munson-Dawson creep strain rate parameters + _A1(getParam("A1")), + _n1(getParam("n1")), + _A(getParam("A")), + _B(getParam("B")), + _m(getParam("m")), + _n(getParam("n")), + // Internal variable for Lemaitre and Munson-Dawson creep strain + _eqv_creep_strain_L(declareADProperty(_base_name + "eqv_creep_strain_L")), + _eqv_creep_strain_L_old(getMaterialPropertyOld(_base_name + "eqv_creep_strain_L")), + _eqv_creep_strain_R(declareADProperty(_base_name + "eqv_creep_strain_R")), + _eqv_creep_strain_R_old(getMaterialPropertyOld(_base_name + "eqv_creep_strain_R")), + // Volumetric creep strain rate parameters + _z(getParam("z")), + _Nz(getParam("Nz")), + _nz(getParam("nz")), + _Mz(getParam("Mz")), + _mz(getParam("mz")) + +{ +} + +void +BVBlancoMartinRTL2020ModelUpdate::initQpStatefulProperties() +{ + _eqv_creep_strain_L[_qp] = 0.0; + _eqv_creep_strain_R[_qp] = 0.0; +} + +ADReal +BVBlancoMartinRTL2020ModelUpdate::creepRate(const std::vector & eqv_strain_incr, const unsigned int i) +{ + if (i == 0) // Lemaitre + return creepRateLemaitre(eqv_strain_incr); + else if (i == 1) // Munson-Dawson + return creepRateMunsonDawson(eqv_strain_incr); + else + throw MooseException("BVBlancoMartinRTL2020ModelUpdate: error, unknow creep model called in `creepRate`!"); +} + +ADReal +BVBlancoMartinRTL2020ModelUpdate::creepRateR(const std::vector & eqv_strain_incr) +{ + ADReal q = _eqv_stress_tr - 3.0 * _G * (eqv_strain_incr[0] + eqv_strain_incr[1]); + + if (q == 0.0) + return 0.0; + else + return 1.0e-06 * std::pow(std::pow(q / _kr1, _beta1) + std::pow(q / _kr2, _beta2), 1.0 / _alpha); +} + +ADReal +BVBlancoMartinRTL2020ModelUpdate::creepRateLemaitre(const std::vector & eqv_strain_incr) +{ + ADReal gamma_l = 1.0e+06 * lemaitreCreepStrain(eqv_strain_incr); + + if (gamma_l == 0.0) + return _alpha * creepRateR(eqv_strain_incr); + else + return _alpha * creepRateR(eqv_strain_incr) * std::pow(gamma_l, 1.0 - 1.0 / _alpha); +} + +ADReal +BVBlancoMartinRTL2020ModelUpdate::creepRateMunsonDawson(const std::vector & eqv_strain_incr) +{ + ADReal q = _eqv_stress_tr - 3.0 * _G * (eqv_strain_incr[0] + eqv_strain_incr[1]); + ADReal saturation_strain = (q != 0.0) ? std::pow(q / _A1, _n1) : 1.0e+06; + + ADReal gamma_ms = 1.0e+06 * munsondawsonCreepStrain(eqv_strain_incr); + + if (gamma_ms < saturation_strain) + return _A * std::pow(1.0 - gamma_ms / saturation_strain, _n) * + creepRateR(eqv_strain_incr); + else + return -_B * std::pow(gamma_ms / saturation_strain - 1.0, _m) * + creepRateR(eqv_strain_incr); +} + +ADReal +BVBlancoMartinRTL2020ModelUpdate::creepRateDerivative(const std::vector & eqv_strain_incr, + const unsigned int i, + const unsigned int j) +{ + if (i == 0) // Lemaitre + return creepRateLemaitreDerivative(eqv_strain_incr, j); + else if (i == 1) // Munson-Dawson + return creepRateMunsonDawsonDerivative(eqv_strain_incr, j); + else + throw MooseException( + "BVBlancoMartinRTL2020ModelUpdate: error, unknow creep model called in `creepRateDerivative`!"); +} + +ADReal +BVBlancoMartinRTL2020ModelUpdate::creepRateRDerivative(const std::vector & eqv_strain_incr) +{ + ADReal q = _eqv_stress_tr - 3.0 * _G * (eqv_strain_incr[0] + eqv_strain_incr[1]); + + if (q == 0.0) + return 1.0; + else + return -1.0e-06 * 3.0 * _G / _alpha * + std::pow(std::pow(q / _kr1, _beta1) + std::pow(q / _kr2, _beta2), 1.0 / _alpha - 1.0) * + (_beta1 / _kr1 * std::pow(q / _kr1, _beta1 - 1.0) + + _beta2 / _kr2 * std::pow(q / _kr2, _beta2 - 1.0)); +} + +ADReal +BVBlancoMartinRTL2020ModelUpdate::creepRateLemaitreDerivative(const std::vector & eqv_strain_incr, + const unsigned int j) +{ + ADReal gamma_l = 1.0e+06 * lemaitreCreepStrain(eqv_strain_incr); + + if (j == 0) // Lemaitre wrt Lemaitre + if (gamma_l == 0.0) + return _alpha * creepRateRDerivative(eqv_strain_incr); + else + return std::pow(gamma_l, -1.0 / _alpha) * + (_alpha * gamma_l * creepRateRDerivative(eqv_strain_incr) + + 1.0e+06 * (_alpha - 1.0) * creepRateR(eqv_strain_incr)); + + else if (j == 1) // Lemaitre wrt Munson-Dawson + if (gamma_l == 0.0) + return _alpha * creepRateRDerivative(eqv_strain_incr); + else + return _alpha * creepRateRDerivative(eqv_strain_incr) * std::pow(gamma_l, 1.0 - 1.0 / _alpha); + else + throw MooseException( + "BVBlancoMartinRTL2020ModelUpdate: error, unknow creep model called in `creepRateDerivative`!"); +} + +ADReal +BVBlancoMartinRTL2020ModelUpdate::creepRateMunsonDawsonDerivative(const std::vector & eqv_strain_incr, + const unsigned int j) +{ + ADReal q = _eqv_stress_tr - 3.0 * _G * (eqv_strain_incr[0] + eqv_strain_incr[1]); + ADReal saturation_strain = (q != 0.0) ? std::pow(q / _A1, _n1) : 1.0e+06; + + ADReal gamma_ms = 1.0e+06 * munsondawsonCreepStrain(eqv_strain_incr); + + if (j == 0) // Munson-Dawson wrt Lemaitre + if (gamma_ms < saturation_strain) + return _A * std::pow(1.0 - gamma_ms / saturation_strain, _n) * + creepRateRDerivative(eqv_strain_incr); + else + return -_B * std::pow(gamma_ms / saturation_strain - 1.0, _m) * + creepRateRDerivative(eqv_strain_incr); + + else if (j == 1) // Munson-Dawson wrt Munson-Dawson + if (gamma_ms < saturation_strain) + return _A * std::pow(1.0 - gamma_ms / saturation_strain, _n - 1.0) * + ((1.0 - gamma_ms / saturation_strain) * creepRateRDerivative(eqv_strain_incr) - + 1.0e+06 * _n / saturation_strain * creepRateR(eqv_strain_incr)); + else + return -_B * std::pow(gamma_ms / saturation_strain - 1.0, _m - 1.0) * + ((gamma_ms / saturation_strain - 1.0) * creepRateRDerivative(eqv_strain_incr) + + 1.0e+06 * _m / saturation_strain * creepRateR(eqv_strain_incr)); + else + throw MooseException( + "BVBlancoMartinRTL2020ModelUpdate: error, unknow creep model called in `creepRateDerivative`!"); +} + +ADReal +BVBlancoMartinRTL2020ModelUpdate::lemaitreCreepStrain(const std::vector & eqv_strain_incr) +{ + return _eqv_creep_strain_L_old[_qp] + eqv_strain_incr[0]; +} + +ADReal +BVBlancoMartinRTL2020ModelUpdate::munsondawsonCreepStrain(const std::vector & eqv_strain_incr) +{ + return _eqv_creep_strain_R_old[_qp] + eqv_strain_incr[1]; +} + +void +BVBlancoMartinRTL2020ModelUpdate::preReturnMap() +{ + _eqv_creep_strain_L[_qp] = _eqv_creep_strain_L_old[_qp]; + _eqv_creep_strain_R[_qp] = _eqv_creep_strain_R_old[_qp]; +} + +void +BVBlancoMartinRTL2020ModelUpdate::postReturnMap(const std::vector & eqv_strain_incr) +{ + _eqv_creep_strain_L[_qp] = lemaitreCreepStrain(eqv_strain_incr); + _eqv_creep_strain_R[_qp] = munsondawsonCreepStrain(eqv_strain_incr); +} + +ADReal +BVBlancoMartinRTL2020ModelUpdate::VcreepRate(const std::vector & creep_strain_incr, + const ADReal & Vcreep_strain_incr) +{ + ADReal p = _mean_stress_tr - (_K * Vcreep_strain_incr); + + // Parameters to compute the volumetric creep strain rate easily + ADReal k = 0; // Proportionality constant + ADReal numer = 0; // Numerator of proportionality constant k + ADReal denom = 0; // Denominator of proportionality constant k + ADReal gamma_vp = 1.0e+06 * (lemaitreCreepStrain(creep_strain_incr) + munsondawsonCreepStrain(creep_strain_incr)); + + // Calculate numer and denom for k + numer = std::pow((p / _Nz) > 0.0 ? (p / _Nz) : 0.0, _nz) - gamma_vp; + denom = std::pow((p / _Mz) > 0.0 ? (p / _mz) : 0.0, _nz) + gamma_vp; + + // Safeguard against division by zero + if (denom != 0.0) + { + k = _z * (numer) / denom; + } + else // Handle the case where denom is zero (potentially set k to 0 or a defined value) + { + k = 0.0; // Or another appropriate default value + } + + ADReal res = 0; // Initialize res to zero before aggregation + for (unsigned int i = 0; i < creep_strain_incr.size(); ++i) + { + res += k * creep_strain_incr[i]; + } + return res; +} + +ADReal +BVBlancoMartinRTL2020ModelUpdate::VcreepRateDerivative(const std::vector & creep_strain_incr, + const ADReal & Vcreep_strain_incr) +{ + return 0.0; +} \ No newline at end of file diff --git a/src/materials/BVDeviatoricVolumetricUpdateBase.C b/src/materials/BVDeviatoricVolumetricUpdateBase.C new file mode 100644 index 0000000..1382a9f --- /dev/null +++ b/src/materials/BVDeviatoricVolumetricUpdateBase.C @@ -0,0 +1,260 @@ +/******************************************************************************/ +/* This file is part of */ +/* BEAVER, a MOOSE-based application */ +/* Multiphase Flow Poromechanics for Induced Seismicity Problems */ +/* */ +/* Copyright (C) 2024 by Antoine B. Jacquey */ +/* Polytechnique Montréal */ +/* */ +/* Licensed under GNU Lesser General Public License v2.1 */ +/* please see LICENSE for details */ +/* or http://www.gnu.org/licenses/lgpl.html */ +/******************************************************************************/ + +#include "BVDeviatoricVolumetricUpdateBase.h" +#include "BVElasticityTensorTools.h" + +InputParameters +BVDeviatoricVolumetricUpdateBase::validParams() +{ + InputParameters params = BVTwoCreepUpdateBase::validParams(); + params.addClassDescription("Base material for computing multiple creep stress" + "updates with Two flow directions (or rules). This class inherits from BVTwoCreepUpdateBase."); + params.addParam( + "base_name", + "Optional parameter that defines a prefix for all material " + "properties related to this stress update model. This allows for " + "multiple models of the same type to be used without naming conflicts."); + params.addRequiredParam("num_cm", "number of creep models"); + params.addParam("dev_vol", + true, + "Whether to perform deviatoric and volumetric calculations or only deviatoric calculations"); + return params; +} + +BVDeviatoricVolumetricUpdateBase::BVDeviatoricVolumetricUpdateBase(const InputParameters & parameters) + : BVTwoCreepUpdateBase(parameters), + _identity_two(RankTwoTensor::initIdentity), + _num_cm(getParam("num_cm")), + _dev_vol(parameters.get("dev_vol")) +// _creep_strain_incr(declareADProperty(_base_name + "creep_strain_increment")) +{ +} + +void +BVDeviatoricVolumetricUpdateBase::inelasticUpdate(ADRankTwoTensor & stress, const RankFourTensor & Cijkl) +{ + // Here we do an iterative update with a single variable being the scalar effective stress + // We are trying to find the zero of the function F which is defined as: + // $F\left(\sigma_{e}\right) = \sigma_{e}^{tr} - \sigme_{e} - 3 * \eta * \dot{gamma}$ + // $\dot{\gamma}$: scalar creep strain rate + // $\sigma_{e}$: scalar effective stress + // $\eta$: the viscosity + // flow rule: $\dot{\gamma} = \frac{\sigma_{e}}{3 \eta}$ + + // Trial stress + _stress_tr = stress; + // Trial effective stress + _eqv_stress_tr = std::sqrt(1.5) * _stress_tr.deviatoric().L2norm(); + _avg_stress_tr = _stress_tr.trace(); + _mean_stress_tr = _avg_stress_tr / 3.0; // my modification: mean stress + // Shear and bulk modulus + _G = BVElasticityTensorTools::getIsotropicShearModulus(Cijkl); + _K = BVElasticityTensorTools::getIsotropicBulkModulus(Cijkl); + + // Initialize creep strain increment + _creep_strain_incr[_qp].zero(); + + // Pre return map calculations (model specific) + preReturnMap(); + + // initialize the equivalent creep strains + std::vector eqv_strain_incr(_num_cm, 0.0); + ADReal Vol_eqv_strain_incr = 0.0; + // Viscoelastic update + DVreturnMap(eqv_strain_incr, Vol_eqv_strain_incr); + + _creep_strain_incr[_qp] = DVreformPlasticStrainTensor(eqv_strain_incr, Vol_eqv_strain_incr); + stress -= 2.0 * _G * _creep_strain_incr[_qp]; + postReturnMap(eqv_strain_incr); +} + +void +BVDeviatoricVolumetricUpdateBase::nrStep(const std::vector & res, + const std::vector> & jac, + std::vector & creep_strain_incr) +{ + std::vector dx(_num_cm, 0.0); + + // Check determinant + ADReal det = jac[0][0] * jac[1][1] - jac[0][1] * jac[1][0]; + + if (det == 0.0) + throw MooseException("BVDeviatoricVolumetricUpdateBase: matrix is singular in 'returnMap!"); + + creep_strain_incr[0] -= (jac[1][1] * res[0] - jac[0][1] * res[1]) / det; + creep_strain_incr[1] -= (jac[0][0] * res[1] - jac[1][0] * res[0]) / det; + + return; +} + +ADReal +BVDeviatoricVolumetricUpdateBase::norm(const std::vector & vec) +{ + ADReal res = 0.0; + for (const auto & r : vec) + res += r * r; + + return std::sqrt(res); +} + +std::vector +BVDeviatoricVolumetricUpdateBase::residual(const std::vector & creep_strain_incr) +{ + std::vector res(_num_cm); + for (unsigned int i = 0; i < _num_cm; ++i) + res[i] = creepRate(creep_strain_incr, i) * _dt - creep_strain_incr[i]; + + return res; +} + +std::vector> +BVDeviatoricVolumetricUpdateBase::jacobian(const std::vector & creep_strain_incr) +{ + std::vector> jac(_num_cm, std::vector(_num_cm)); + + for (unsigned int i = 0; i < _num_cm; ++i) + for (unsigned int j = 0; j < _num_cm; ++j) + jac[i][j] = creepRateDerivative(creep_strain_incr, i, j) * _dt - ((i == j) ? 1.0 : 0.0); + + return jac; +} + +void +BVDeviatoricVolumetricUpdateBase::preReturnMap() +{ +} + +void +BVDeviatoricVolumetricUpdateBase::postReturnMap(const std::vector & /*creep_strain_incr*/) +{ +} + + +void +BVDeviatoricVolumetricUpdateBase::DVreturnMap(std::vector& creep_strain_incr_out, + ADReal & Vcreep_strain_incr_out) +{ + // Initialize scalar deviatoric creep strain increment + std::vector creep_strain_incr(_num_cm, 0.0); + + // Initial residual + std::vector res_ini = residual(creep_strain_incr); // initialize residual + std::vector res = res_ini; + + std::vector> jac = jacobian(creep_strain_incr); // initialize Jacobian + + if (_dev_vol) + { + // Initialize scalar volumetric creep strain increment + ADReal Vcreep_strain_incr = 0.0; + + // Initial volumetric residual + ADReal Vres_ini = Vresidual(creep_strain_incr, Vcreep_strain_incr); // initialize volumetric residual + ADReal Vres = Vres_ini; + + // Initial volumetric jacobian + ADReal Vjac = Vjacobian(creep_strain_incr,Vcreep_strain_incr); // initialize volumetric Jacobian + + // Newton loop + for (unsigned int iter = 0; iter < _max_its; ++iter) + { + // Call to nrStep to update the scalar deviatoric strain increment + nrStep(res, jac, creep_strain_incr); + + // Recalculate residuals and Jacobians for the deviatoric part + res = residual(creep_strain_incr); + jac = jacobian(creep_strain_incr); + + // compute and update the scalar volumetric strain increment + Vcreep_strain_incr -= Vres / Vjac; + Vres = Vresidual(creep_strain_incr, Vcreep_strain_incr); + Vjac = Vjacobian(creep_strain_incr, Vcreep_strain_incr); + + // Convergence check + bool D_converge = (norm(res) <= _abs_tol) || (norm(res) / norm(res_ini) <= _rel_tol); + bool V_converge = (abs(Vres) <= _abs_tol) || (abs(Vres) / Vres_ini <= _rel_tol); + bool converge = D_converge && V_converge; + + // Check if convergence was achieved + if (converge) + { + // Assign results to output parameters + creep_strain_incr_out = creep_strain_incr; + Vcreep_strain_incr_out = Vcreep_strain_incr; // Ensure Vcreep_strain_incr is returned + return; // Exit after successfully converging + } + } + // If maximum iterations are exceeded without convergence, throw an exception + throw MooseException("BVDeviatoricVolumetricUpdateBase: maximum number of iterations exceeded in the deviatoric-volumetric 'returnMap'!"); + } + else // Implement only the deviatoric part for now + { + // Newton loop for deviatoric part + for (unsigned int iter = 0; iter < _max_its; ++iter) + { + // Call to nrStep which updates strain increments + nrStep(res, jac, creep_strain_incr); // Assuming nrStep works for deviatoric part without volumetric parameters + + // Recalculate residuals and Jacobians + res = residual(creep_strain_incr); + jac = jacobian(creep_strain_incr); + + // Convergence check + if ((norm(res) <= _abs_tol) || (norm(res) / norm(res_ini) <= _rel_tol)) { + // Assign results to output parameters + creep_strain_incr_out = creep_strain_incr; + return; // Exit after successfully converging + } + } + + // If maximum iterations are exceeded without convergence, throw an exception + throw MooseException("BVDeviatoricVolumetricUpdateBase: maximum number of iterations exceeded in deviatoric 'returnMap'!"); + } +} + +ADReal +BVDeviatoricVolumetricUpdateBase::Vresidual(const std::vector & creep_strain_incr, const ADReal & Vcreep_strain_incr) +{ + return VcreepRate(creep_strain_incr, Vcreep_strain_incr) * _dt - Vcreep_strain_incr; +} + +ADReal +BVDeviatoricVolumetricUpdateBase::Vjacobian(const std::vector & creep_strain_incr, const ADReal & Vcreep_strain_incr) +{ + return VcreepRateDerivative(creep_strain_incr,Vcreep_strain_incr) * _dt - 1.0; +} + +ADRankTwoTensor +BVDeviatoricVolumetricUpdateBase::DVreformPlasticStrainTensor(const std::vector & creep_strain_incr, const ADReal & Vcreep_strain_incr) +{ + ADRankTwoTensor res; + ADRankTwoTensor Dres; + ADRankTwoTensor Vres; + res.zero(); + Dres.zero(); + Vres.zero(); + + ADRankTwoTensor flow_dir1 = + (_eqv_stress_tr != 0.0) ? _stress_tr.deviatoric() / _eqv_stress_tr : ADRankTwoTensor(); + + ADRankTwoTensor flow_dir2 = _identity_two; + + for (unsigned int i = 0; i < creep_strain_incr.size(); ++i) + Dres += 1.5 * creep_strain_incr[i] * flow_dir1; + + Vres = ((1.0 / std::sqrt(3)) * Vcreep_strain_incr * _dt * flow_dir2); + + res = Dres + Vres; + return res; +} diff --git a/test/tests/viscoelasticity/BVBlancoMartinRTL2020ModelUpdate.i b/test/tests/viscoelasticity/BVBlancoMartinRTL2020ModelUpdate.i new file mode 100644 index 0000000..2261c69 --- /dev/null +++ b/test/tests/viscoelasticity/BVBlancoMartinRTL2020ModelUpdate.i @@ -0,0 +1,324 @@ +# Modified Lemaitre creep model +# See Blanco-Martin et al. (2023) +# Parameters +# Units: stress in MPa, time in days, strain in m / m +E = 12000 +nu = 0.3 +alpha = 0.575 +kr1 = 1.302 +beta1 = 3.053 +kr2 = 0.091 +beta2 = 1.053 +A = 100 +n = 9 +A1 = 0.034 +n1 = 1.499 +P = 5.0 +Q = 5.0 + +[Mesh] + type = GeneratedMesh + dim = 3 + # nx = 5 + # ny = 10 + # nz = 5 + nx = 1 + ny = 1 + nz = 1 + xmin = 0 + xmax = 65e-03 + ymin = 0 + ymax = 130e-03 + zmin = 0 + zmax = 65e-03 +[] + +[Variables] + [disp_x] + order = FIRST + family = LAGRANGE + [] + [disp_y] + order = FIRST + family = LAGRANGE + [] + [disp_z] + order = FIRST + family = LAGRANGE + [] +[] + +[Kernels] + [stress_x] + type = BVStressDivergence + component = x + variable = disp_x + [] + [stress_y] + type = BVStressDivergence + component = y + variable = disp_y + [] + [stress_z] + type = BVStressDivergence + component = z + variable = disp_z + [] +[] + +[AuxVariables] + [eqv_stress] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain_rate] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_L] + order = CONSTANT + family = MONOMIAL + [] + [strain_yy] + order = CONSTANT + family = MONOMIAL + [] + [stress_yy] + order = CONSTANT + family = MONOMIAL + [] +[] + +[AuxKernels] + [eqv_stress_aux] + type = BVMisesStressAux + variable = eqv_stress + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_aux] + type = BVEqvStrainAux + variable = eqv_strain + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_rate_aux] + type = BVEqvStrainRateAux + variable = eqv_strain_rate + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_L_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_L + property = eqv_creep_strain_L + execute_on = 'TIMESTEP_END' + [] + [strain_zz_aux] + type = BVStrainComponentAux + variable = strain_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [stress_zz_aux] + type = BVStressComponentAux + variable = stress_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] +[] + +[Functions] + [loading2] + type = ParsedFunction + expression = 'if(t<=20,5.5,if(t<=55,6,if(t<=76,7,if(t<=97,10,if(t<=118,15,if(t<=139,20,25))))))' + [] +[] + +[BCs] + [no_x] + type = DirichletBC + variable = disp_x + boundary = 'left' + value = 0.0 + [] + [no_y] + type = DirichletBC + variable = disp_y + boundary = 'bottom' + value = 0.0 + [] + [no_z] + type = DirichletBC + variable = disp_z + boundary = 'back' + value = 0.0 + [] + [BVPressure] + [pressure_right] + boundary = 'right' + displacement_vars = 'disp_x disp_y disp_z' + value = ${P} + [] + [pressure_front] + boundary = 'front' + displacement_vars = 'disp_x disp_y disp_z' + value = ${P} + [] + [pressure_top] + boundary = 'top' + displacement_vars = 'disp_x disp_y disp_z' + function = loading2 + [] + [] +[] + +[Materials] + [elasticity] + type = BVMechanicalMaterial + displacements = 'disp_x disp_y disp_z' + young_modulus = ${E} + poisson_ratio = ${nu} + initial_stress = '-${P} -${Q} -${P}' + inelastic_models = 'viscoelastic' + [] + #[viscoelastic] + # type = BVModifiedLemaitreModelUpdate + # alpha = ${alpha} + # kr1 = ${kr1} + # beta1 = ${beta1} + # kr2 = ${kr2} + # beta2 = ${beta2} + #[] + #[viscoelastic] + # type = BVBlancoMartinModelUpdate + # alpha = ${alpha} + # kr1 = ${kr1} + # beta1 = ${beta1} + # kr2 = ${kr2} + # beta2 = ${beta2} + # A1 = ${A1} + # n1 = ${n1} + # A = ${A} + # n = ${n} + # B = 0.0 + # m = ${n} + #[] + [viscoelastic] + type = BVBlancoMartinRTL2020ModelUpdate + alpha = ${alpha} + kr1 = ${kr1} + beta1 = ${beta1} + kr2 = ${kr2} + beta2 = ${beta2} + A1 = ${A1} + n1 = ${n1} + A = ${A} + n = ${n} + B = 0.0 + m = ${n} + Nz=0.0241 + nz=1.2644 + Mz=0.024 + mz=1.028 + z = 0.4523 + num_cm = 2 + [] +[] + +[Postprocessors] + [eqv_strain_rate] + type = ElementAverageValue + variable = eqv_strain_rate + outputs = csv + [] + [eqv_strain] + type = ElementAverageValue + variable = eqv_strain + outputs = csv + [] + [eqv_strain_L] + type = ElementAverageValue + variable = eqv_creep_strain_L + outputs = csv + [] + [strain_zz] + type = ElementAverageValue + variable = strain_yy + outputs = csv + [] + [stress_zz] + type = ElementAverageValue + variable = stress_yy + outputs = csv + [] + [q] + type = ElementAverageValue + variable = eqv_stress + outputs = csv + [] +[] + +[Preconditioning] + active = 'hypre' + [hypre] + type = SMP + full = true + petsc_options = '-snes_ksp_ew' + petsc_options_iname = '-pc_type -pc_hypre_type + -snes_atol -snes_rtol -snes_stol -snes_max_it + -snes_linesearch_type' + petsc_options_value = 'hypre boomeramg + 1.0e-10 1.0e-12 0 20 + basic' + [] + [superlu] + type = SMP + full = true + petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_gmres_modifiedgramschmidt -ksp_diagonal_scale -ksp_diagonal_scale_fix' + petsc_options_iname = '-snes_type + -snes_atol -snes_rtol -snes_max_it + -pc_type -pc_factor_mat_solver_package + -snes_linesearch_type' + petsc_options_value = 'newtonls + 1e-10 1e-12 50 + lu superlu_dist + l2' + [] + [asm] + type = SMP + petsc_options = '-snes_ksp_ew' + petsc_options_iname = '-ksp_type + -pc_type + -sub_pc_type + -snes_type -snes_atol -snes_rtol -snes_max_it -snes_linesearch_type + -ksp_gmres_restart' + petsc_options_value = 'fgmres + asm + ilu + newtonls 1e-10 1e-10 120 basic + 201' + [] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + automatic_scaling = true + start_time = 0.0 + end_time = 200 # 200 days + dt = 0.02 + timestep_tolerance = 1.0e-10 +[] + +[Outputs] + perf_graph = true + exodus = true + [csv] + type = CSV + execute_on = 'timestep_end' + [] +[] \ No newline at end of file From 96bfb47f2e72e344e6a1f023380d4551a099edd3 Mon Sep 17 00:00:00 2001 From: iyevugah Date: Thu, 16 Jan 2025 11:01:20 -0500 Subject: [PATCH 03/39] made a few upgrades to the vol creep part --- .../BVDeviatoricVolumetricUpdateBase.h | 3 +- .../BVDeviatoricVolumetricUpdateBase.C | 123 +++++++++++------- .../BVBlancoMartinRTL2020ModelUpdate.i | 1 + 3 files changed, 81 insertions(+), 46 deletions(-) diff --git a/include/materials/BVDeviatoricVolumetricUpdateBase.h b/include/materials/BVDeviatoricVolumetricUpdateBase.h index 2f3de9e..78617e5 100644 --- a/include/materials/BVDeviatoricVolumetricUpdateBase.h +++ b/include/materials/BVDeviatoricVolumetricUpdateBase.h @@ -23,13 +23,14 @@ class BVDeviatoricVolumetricUpdateBase : public BVTwoCreepUpdateBase virtual void inelasticUpdate(ADRankTwoTensor & stress, const RankFourTensor & Cijkl) override; protected: -// virtual std::vector returnMap() override; + virtual std::vector returnMap() override; virtual void nrStep(const std::vector & res, const std::vector> & jac, std::vector & creep_strain_incr) override; virtual ADReal norm(const std::vector & vec) override; virtual std::vector residual(const std::vector & creep_strain_incr) override; virtual std::vector> jacobian(const std::vector & creep_strain_incr) override; + virtual ADRankTwoTensor reformPlasticStrainTensor(const std::vector & creep_strain_incr) override; virtual ADReal creepRate(const std::vector & creep_strain_incr, const unsigned int i) override = 0; virtual ADReal creepRateDerivative(const std::vector & creep_strain_incr, const unsigned int i, diff --git a/src/materials/BVDeviatoricVolumetricUpdateBase.C b/src/materials/BVDeviatoricVolumetricUpdateBase.C index 1382a9f..ffa3616 100644 --- a/src/materials/BVDeviatoricVolumetricUpdateBase.C +++ b/src/materials/BVDeviatoricVolumetricUpdateBase.C @@ -79,6 +79,34 @@ BVDeviatoricVolumetricUpdateBase::inelasticUpdate(ADRankTwoTensor & stress, cons postReturnMap(eqv_strain_incr); } +std::vector +BVDeviatoricVolumetricUpdateBase::returnMap() +{ + // Initialize scalar creep strain incr + std::vector creep_strain_incr(_num_cm, 0.0); + + // Initial residual + std::vector res_ini = residual(creep_strain_incr); // residual function to initialize the res to prevent non-singularity in the return map + + std::vector res = res_ini; + std::vector> jac = jacobian(creep_strain_incr); // jacobian function to initialize the jac to prevent non-singularity in the return map + + // Newton loop + for (unsigned int iter = 0; iter < _max_its; ++iter) + { + nrStep(res, jac, creep_strain_incr); + + res = residual(creep_strain_incr); + jac = jacobian(creep_strain_incr); + + // Convergence check + if ((norm(res) <= _abs_tol) || (norm(res) / norm(res_ini) <= _rel_tol)) + return creep_strain_incr; + } + throw MooseException( + "BVTwoCreepUpdateBase: maximum number of iterations exceeded in 'returnMap'!"); +} + void BVDeviatoricVolumetricUpdateBase::nrStep(const std::vector & res, const std::vector> & jac, @@ -130,6 +158,22 @@ BVDeviatoricVolumetricUpdateBase::jacobian(const std::vector & creep_str return jac; } + +ADRankTwoTensor +BVDeviatoricVolumetricUpdateBase::reformPlasticStrainTensor(const std::vector & creep_strain_incr) +{ + ADRankTwoTensor res; + res.zero(); + + ADRankTwoTensor flow_dir = + (_eqv_stress_tr != 0.0) ? _stress_tr.deviatoric() / _eqv_stress_tr : ADRankTwoTensor(); + + for (unsigned int i = 0; i < _num_cm; ++i) + res += 1.5 * creep_strain_incr[i] * flow_dir; + + return res; +} + void BVDeviatoricVolumetricUpdateBase::preReturnMap() { @@ -140,22 +184,21 @@ BVDeviatoricVolumetricUpdateBase::postReturnMap(const std::vector & /*cr { } - +//Deviatoric-Volumetric updates void BVDeviatoricVolumetricUpdateBase::DVreturnMap(std::vector& creep_strain_incr_out, ADReal & Vcreep_strain_incr_out) { - // Initialize scalar deviatoric creep strain increment - std::vector creep_strain_incr(_num_cm, 0.0); - - // Initial residual - std::vector res_ini = residual(creep_strain_incr); // initialize residual - std::vector res = res_ini; - - std::vector> jac = jacobian(creep_strain_incr); // initialize Jacobian - if (_dev_vol) { + // Initialize scalar deviatoric creep strain increment + std::vector creep_strain_incr(_num_cm, 0.0); + + // Initial residual + std::vector res_ini = residual(creep_strain_incr); // initialize residual + std::vector res = res_ini; + + std::vector> jac = jacobian(creep_strain_incr); // initialize Jacobian // Initialize scalar volumetric creep strain increment ADReal Vcreep_strain_incr = 0.0; @@ -200,26 +243,9 @@ BVDeviatoricVolumetricUpdateBase::DVreturnMap(std::vector& creep_strain_ } else // Implement only the deviatoric part for now { - // Newton loop for deviatoric part - for (unsigned int iter = 0; iter < _max_its; ++iter) - { - // Call to nrStep which updates strain increments - nrStep(res, jac, creep_strain_incr); // Assuming nrStep works for deviatoric part without volumetric parameters - - // Recalculate residuals and Jacobians - res = residual(creep_strain_incr); - jac = jacobian(creep_strain_incr); - - // Convergence check - if ((norm(res) <= _abs_tol) || (norm(res) / norm(res_ini) <= _rel_tol)) { - // Assign results to output parameters - creep_strain_incr_out = creep_strain_incr; - return; // Exit after successfully converging - } - } - - // If maximum iterations are exceeded without convergence, throw an exception - throw MooseException("BVDeviatoricVolumetricUpdateBase: maximum number of iterations exceeded in deviatoric 'returnMap'!"); + // Call the returnMap function if only deviatoric updates are required + creep_strain_incr_out = returnMap(); + Vcreep_strain_incr_out = 0.0; // Since volumetric update is not required in this case, set it to a default value } } @@ -238,23 +264,30 @@ BVDeviatoricVolumetricUpdateBase::Vjacobian(const std::vector & creep_st ADRankTwoTensor BVDeviatoricVolumetricUpdateBase::DVreformPlasticStrainTensor(const std::vector & creep_strain_incr, const ADReal & Vcreep_strain_incr) { - ADRankTwoTensor res; - ADRankTwoTensor Dres; - ADRankTwoTensor Vres; - res.zero(); - Dres.zero(); - Vres.zero(); + if (_dev_vol) + { + ADRankTwoTensor res; + ADRankTwoTensor Dres; + ADRankTwoTensor Vres; + res.zero(); + Dres.zero(); + Vres.zero(); - ADRankTwoTensor flow_dir1 = - (_eqv_stress_tr != 0.0) ? _stress_tr.deviatoric() / _eqv_stress_tr : ADRankTwoTensor(); + ADRankTwoTensor flow_dir1 = + (_eqv_stress_tr != 0.0) ? _stress_tr.deviatoric() / _eqv_stress_tr : ADRankTwoTensor(); - ADRankTwoTensor flow_dir2 = _identity_two; - - for (unsigned int i = 0; i < creep_strain_incr.size(); ++i) - Dres += 1.5 * creep_strain_incr[i] * flow_dir1; + ADRankTwoTensor flow_dir2 = _identity_two; + + for (unsigned int i = 0; i < creep_strain_incr.size(); ++i) + Dres += 1.5 * creep_strain_incr[i] * flow_dir1; - Vres = ((1.0 / std::sqrt(3)) * Vcreep_strain_incr * _dt * flow_dir2); + Vres = ((1.0 / std::sqrt(3)) * Vcreep_strain_incr * _dt * flow_dir2); - res = Dres + Vres; - return res; + res = Dres + Vres; + return res; + } + else + { + return reformPlasticStrainTensor(creep_strain_incr); + } } diff --git a/test/tests/viscoelasticity/BVBlancoMartinRTL2020ModelUpdate.i b/test/tests/viscoelasticity/BVBlancoMartinRTL2020ModelUpdate.i index 2261c69..1285e2e 100644 --- a/test/tests/viscoelasticity/BVBlancoMartinRTL2020ModelUpdate.i +++ b/test/tests/viscoelasticity/BVBlancoMartinRTL2020ModelUpdate.i @@ -226,6 +226,7 @@ Q = 5.0 mz=1.028 z = 0.4523 num_cm = 2 + dev_vol = true [] [] From 4c1ceeddeb0d1b286266c31f0b391ab3981e2dc0 Mon Sep 17 00:00:00 2001 From: iyevugah Date: Fri, 17 Jan 2025 12:54:35 -0500 Subject: [PATCH 04/39] updated Vcreeprate and added its derivative --- .../BVBlancoMartinRTL2020ModelUpdate.C | 72 +++++++++++++------ 1 file changed, 51 insertions(+), 21 deletions(-) diff --git a/src/materials/BVBlancoMartinRTL2020ModelUpdate.C b/src/materials/BVBlancoMartinRTL2020ModelUpdate.C index 45a75a6..2925152 100644 --- a/src/materials/BVBlancoMartinRTL2020ModelUpdate.C +++ b/src/materials/BVBlancoMartinRTL2020ModelUpdate.C @@ -241,38 +241,68 @@ BVBlancoMartinRTL2020ModelUpdate::VcreepRate(const std::vector & creep_s const ADReal & Vcreep_strain_incr) { ADReal p = _mean_stress_tr - (_K * Vcreep_strain_incr); + if (p == 0.0) + return 0.0; // No contribution since p is zero - // Parameters to compute the volumetric creep strain rate easily - ADReal k = 0; // Proportionality constant - ADReal numer = 0; // Numerator of proportionality constant k - ADReal denom = 0; // Denominator of proportionality constant k + // Calculate numerator and denomenator for proportionality constant k ADReal gamma_vp = 1.0e+06 * (lemaitreCreepStrain(creep_strain_incr) + munsondawsonCreepStrain(creep_strain_incr)); - - // Calculate numer and denom for k - numer = std::pow((p / _Nz) > 0.0 ? (p / _Nz) : 0.0, _nz) - gamma_vp; - denom = std::pow((p / _Mz) > 0.0 ? (p / _mz) : 0.0, _nz) + gamma_vp; + ADReal numer = std::pow((p / _Nz) > 0.0 ? (p / _Nz) : 0.0, _nz) - gamma_vp; + ADReal denom = std::pow((p / _Mz) > 0.0 ? (p / _mz) : 0.0, _nz) + gamma_vp; // Safeguard against division by zero if (denom != 0.0) { - k = _z * (numer) / denom; + ADReal k = _z * (numer) / denom; // proportionality constant + ADReal res = 0.0; // Initialize res to zero before aggregation + for (unsigned int i = 0; i < creep_strain_incr.size(); ++i) + { + res += k * creep_strain_incr[i]; + } + return res; } - else // Handle the case where denom is zero (potentially set k to 0 or a defined value) + else // Handle the case where denom is zero { - k = 0.0; // Or another appropriate default value + return 0.0; // No contribution since k is not defined } +} + +ADReal BVBlancoMartinRTL2020ModelUpdate::VcreepRateDerivative(const std::vector & creep_strain_incr, + const ADReal & Vcreep_strain_incr) +{ + ADReal p = _mean_stress_tr - (_K * Vcreep_strain_incr); + if (p == 0.0) + return 0.0; // No contribution since p is zero + + ADReal gamma_vp = 1.0e+06 * (lemaitreCreepStrain(creep_strain_incr) + munsondawsonCreepStrain(creep_strain_incr)); + ADReal numer = std::pow((p / _Nz) > 0.0 ? (p / _Nz) : 0.0, _nz) - gamma_vp; + ADReal denom = std::pow((p / _Mz) > 0.0 ? (p / _mz) : 0.0, _nz) + gamma_vp; - ADReal res = 0; // Initialize res to zero before aggregation - for (unsigned int i = 0; i < creep_strain_incr.size(); ++i) + // Derivative contributions + ADReal dp_dVcreep_strain_incr = -_K; // derivative of p with respect to Vcreep_strain_incr + + // Computing the derivatives of numerator and denomenator + ADReal dnumer_dVcreep_strain_incr = _nz * std::pow((p / _Nz) > 0.0 ? (p / _Nz) : 0.0, _nz - 1) * (dp_dVcreep_strain_incr / _Nz); + ADReal ddenom_dVcreep_strain_incr = _nz * std::pow((p / _Mz) > 0.0 ? (p / _Mz) : 0.0, _nz - 1) * (dp_dVcreep_strain_incr / _Mz); + + // Safeguard situation for denominator + if (denom != 0.0) { - res += k * creep_strain_incr[i]; + // Using the quotient rule to differentiate k + ADReal k = _z * (numer) / denom; + ADReal dk_dVcreep_strain_incr = _z * (ddenom_dVcreep_strain_incr * numer - dnumer_dVcreep_strain_incr * denom) / (denom * denom); + + // Initialize res to zero before aggregation + ADReal res = 0; + for (unsigned int i = 0; i < creep_strain_incr.size(); ++i) + { + res += dk_dVcreep_strain_incr * creep_strain_incr[i]; // Use the derivative of k + } + return res; + } + else + { + // If denom is zero, then k is set to a default value (0.0 in this case) + return 0.0; // No contribution since k is not defined } - return res; } -ADReal -BVBlancoMartinRTL2020ModelUpdate::VcreepRateDerivative(const std::vector & creep_strain_incr, - const ADReal & Vcreep_strain_incr) -{ - return 0.0; -} \ No newline at end of file From 44102e3427abab316590f9a9c6d21a76bae70587 Mon Sep 17 00:00:00 2001 From: iyevugah Date: Thu, 23 Jan 2025 12:28:17 -0500 Subject: [PATCH 05/39] deleted blancomartinRTL2020 and upgraded RTL2020 --- .../BVBlancoMartinRTL2020ModelUpdate.h | 76 ----- .../BVDeviatoricVolumetricUpdateBase.h | 27 +- include/materials/BVRTL2020ModelUpdate.h | 19 +- .../BVBlancoMartinRTL2020ModelUpdate.C | 308 ------------------ .../BVDeviatoricVolumetricUpdateBase.C | 133 +------- src/materials/BVRTL2020ModelUpdate.C | 88 ++++- 6 files changed, 120 insertions(+), 531 deletions(-) delete mode 100644 include/materials/BVBlancoMartinRTL2020ModelUpdate.h delete mode 100644 src/materials/BVBlancoMartinRTL2020ModelUpdate.C diff --git a/include/materials/BVBlancoMartinRTL2020ModelUpdate.h b/include/materials/BVBlancoMartinRTL2020ModelUpdate.h deleted file mode 100644 index 08e8c1e..0000000 --- a/include/materials/BVBlancoMartinRTL2020ModelUpdate.h +++ /dev/null @@ -1,76 +0,0 @@ -/******************************************************************************/ -/* This file is part of */ -/* BEAVER, a MOOSE-based application */ -/* Multiphase Flow Poromechanics for Induced Seismicity Problems */ -/* */ -/* Copyright (C) 2024 by Antoine B. Jacquey */ -/* Polytechnique Montréal */ -/* */ -/* Licensed under GNU Lesser General Public License v2.1 */ -/* please see LICENSE for details */ -/* or http://www.gnu.org/licenses/lgpl.html */ -/******************************************************************************/ - -#pragma once - -#include "BVDeviatoricVolumetricUpdateBase.h" - -class BVBlancoMartinRTL2020ModelUpdate : public BVDeviatoricVolumetricUpdateBase -{ -public: - static InputParameters validParams(); - BVBlancoMartinRTL2020ModelUpdate(const InputParameters & parameters); - -protected: - virtual void initQpStatefulProperties() override; - virtual ADReal creepRate(const std::vector & eqv_strain_incr, - const unsigned int i) override; - virtual ADReal creepRateR(const std::vector & eqv_strain_incr); - virtual ADReal creepRateLemaitre(const std::vector & eqv_strain_incr); - virtual ADReal creepRateMunsonDawson(const std::vector & eqv_strain_incr); - virtual ADReal creepRateDerivative(const std::vector & eqv_strain_incr, - const unsigned int i, - const unsigned int j) override; - virtual ADReal creepRateRDerivative(const std::vector & eqv_strain_incr); - virtual ADReal creepRateLemaitreDerivative(const std::vector & eqv_strain_incr, - const unsigned int /*j*/); - virtual ADReal creepRateMunsonDawsonDerivative(const std::vector & eqv_strain_incr, - const unsigned int j); - virtual ADReal lemaitreCreepStrain(const std::vector & eqv_strain_incr); - virtual ADReal munsondawsonCreepStrain(const std::vector & eqv_strain_incr); - virtual void preReturnMap() override; - virtual void postReturnMap(const std::vector & eqv_strain_incr) override; - - virtual ADReal VcreepRate(const std::vector & creep_strain_incr, - const ADReal & Vcreep_strain_incr) override; - virtual ADReal VcreepRateDerivative(const std::vector & creep_strain_incr, - const ADReal & Vcreep_strain_incr) override; - - // Lemaitre creep strain rate parameters - const Real _alpha; - const Real _kr1; - const Real _kr2; - const Real _beta1; - const Real _beta2; - - // Munson-Dawson creep strain rate parameters - const Real _A1; - const Real _n1; - const Real _A; - const Real _B; - const Real _m; - const Real _n; - - // Internal variable for Lemaitre and Munson-Dawson creep strain - ADMaterialProperty & _eqv_creep_strain_L; - const MaterialProperty & _eqv_creep_strain_L_old; - ADMaterialProperty & _eqv_creep_strain_R; - const MaterialProperty & _eqv_creep_strain_R_old; - - // Volumetric creep strain rate parameters - const Real _z; - const Real _Nz; - const Real _nz; - const Real _Mz; - const Real _mz; -}; diff --git a/include/materials/BVDeviatoricVolumetricUpdateBase.h b/include/materials/BVDeviatoricVolumetricUpdateBase.h index 78617e5..9b5c3e6 100644 --- a/include/materials/BVDeviatoricVolumetricUpdateBase.h +++ b/include/materials/BVDeviatoricVolumetricUpdateBase.h @@ -23,29 +23,14 @@ class BVDeviatoricVolumetricUpdateBase : public BVTwoCreepUpdateBase virtual void inelasticUpdate(ADRankTwoTensor & stress, const RankFourTensor & Cijkl) override; protected: - virtual std::vector returnMap() override; - virtual void nrStep(const std::vector & res, - const std::vector> & jac, - std::vector & creep_strain_incr) override; - virtual ADReal norm(const std::vector & vec) override; - virtual std::vector residual(const std::vector & creep_strain_incr) override; - virtual std::vector> jacobian(const std::vector & creep_strain_incr) override; - virtual ADRankTwoTensor reformPlasticStrainTensor(const std::vector & creep_strain_incr) override; - virtual ADReal creepRate(const std::vector & creep_strain_incr, const unsigned int i) override = 0; - virtual ADReal creepRateDerivative(const std::vector & creep_strain_incr, - const unsigned int i, - const unsigned int j) override = 0; - virtual void preReturnMap() override; - virtual void postReturnMap(const std::vector & creep_strain_incr) override; - // newly added methods - virtual void DVreturnMap(std::vector& creep_strain_incr_out, + virtual void dvreturnMap(std::vector& creep_strain_incr_out, ADReal & Vcreep_strain_incr_out); - virtual ADReal Vresidual(const std::vector & creep_strain_incr, const ADReal & Vcreep_strain_incr); - virtual ADReal Vjacobian(const std::vector & creep_strain_incr, const ADReal & Vcreep_strain_incr); - virtual ADRankTwoTensor DVreformPlasticStrainTensor(const std::vector & creep_strain_incr, const ADReal & Vcreep_strain_incr); - virtual ADReal VcreepRate(const std::vector & creep_strain_incr, const ADReal & Vcreep_strain_incr) = 0; - virtual ADReal VcreepRateDerivative(const std::vector & creep_strain_incr,const ADReal & Vcreep_strain_incr) = 0; + virtual ADReal vresidual(const std::vector & creep_strain_incr, const ADReal & Vcreep_strain_incr); + virtual ADReal vjacobian(const std::vector & creep_strain_incr, const ADReal & Vcreep_strain_incr); + virtual ADRankTwoTensor dvreformPlasticStrainTensor(const std::vector & creep_strain_incr, const ADReal & Vcreep_strain_incr); + virtual ADReal vcreepRate(const std::vector & creep_strain_incr, const ADReal & Vcreep_strain_incr) = 0; + virtual ADReal vcreepRateDerivative(const std::vector & creep_strain_incr,const ADReal & Vcreep_strain_incr) = 0; const unsigned int _num_cm; const RankTwoTensor _identity_two; diff --git a/include/materials/BVRTL2020ModelUpdate.h b/include/materials/BVRTL2020ModelUpdate.h index 93f134d..7178744 100644 --- a/include/materials/BVRTL2020ModelUpdate.h +++ b/include/materials/BVRTL2020ModelUpdate.h @@ -13,9 +13,9 @@ #pragma once -#include "BVTwoCreepUpdateBase.h" +#include "BVDeviatoricVolumetricUpdateBase.h" -class BVRTL2020ModelUpdate : public BVTwoCreepUpdateBase +class BVRTL2020ModelUpdate : public BVDeviatoricVolumetricUpdateBase { public: static InputParameters validParams(); @@ -41,6 +41,11 @@ class BVRTL2020ModelUpdate : public BVTwoCreepUpdateBase virtual void preReturnMap() override; virtual void postReturnMap(const std::vector & eqv_strain_incr) override; + virtual ADReal vcreepRate(const std::vector & creep_strain_incr, + const ADReal & Vcreep_strain_incr) override; + virtual ADReal vcreepRateDerivative(const std::vector & creep_strain_incr, + const ADReal & Vcreep_strain_incr) override; + // Lemaitre creep strain rate parameters const Real _alpha; const Real _A2; @@ -52,11 +57,19 @@ class BVRTL2020ModelUpdate : public BVTwoCreepUpdateBase const Real _A; const Real _B; const Real _m; - const Real _n; + const Real _n; + + // Volumetric creep strain rate parameters + const Real _z; + const Real _Nz; + const Real _nz; + const Real _Mz; + const Real _mz; // Internal variable for Lemaitre and Munson-Dawson creep strain ADMaterialProperty & _eqv_creep_strain_L; const MaterialProperty & _eqv_creep_strain_L_old; ADMaterialProperty & _eqv_creep_strain_R; const MaterialProperty & _eqv_creep_strain_R_old; + }; diff --git a/src/materials/BVBlancoMartinRTL2020ModelUpdate.C b/src/materials/BVBlancoMartinRTL2020ModelUpdate.C deleted file mode 100644 index 2925152..0000000 --- a/src/materials/BVBlancoMartinRTL2020ModelUpdate.C +++ /dev/null @@ -1,308 +0,0 @@ -/******************************************************************************/ -/* This file is part of */ -/* BEAVER, a MOOSE-based application */ -/* Multiphase Flow Poromechanics for Induced Seismicity Problems */ -/* */ -/* Copyright (C) 2024 by Antoine B. Jacquey */ -/* Polytechnique Montréal */ -/* */ -/* Licensed under GNU Lesser General Public License v2.1 */ -/* please see LICENSE for details */ -/* or http://www.gnu.org/licenses/lgpl.html */ -/******************************************************************************/ - -#include "BVBlancoMartinRTL2020ModelUpdate.h" - -registerMooseObject("BeaverApp", BVBlancoMartinRTL2020ModelUpdate); - -InputParameters -BVBlancoMartinRTL2020ModelUpdate::validParams() -{ - InputParameters params = BVDeviatoricVolumetricUpdateBase::validParams(); - params.addClassDescription( - "Material for computing a RTL2020 creep update. See Azabou et al. (2021), Rock salt " - "behavior: From laboratory experiments to pertinent long-term predictions."); - params.addRequiredRangeCheckedParam("alpha", "0.0 < alpha & alpha < 1.0", "The alpha parameter."); - params.addRequiredRangeCheckedParam("kr1", "kr1 > 0.0", "The kr1 parameter."); - params.addRequiredRangeCheckedParam("kr2", "kr2 > 0.0", "The kr2 parameter."); - params.addRequiredRangeCheckedParam("beta1", "beta1 > 0.0", "The beta1 parameter."); - params.addRequiredRangeCheckedParam("beta2", "beta2 > 0.0", "The beta2 parameter."); - params.addRequiredRangeCheckedParam("A1", "A1 > 0.0", "The A1 parameter."); - params.addRequiredRangeCheckedParam("n1", "n1 > 0.0", "The n1 parameter."); - params.addRequiredRangeCheckedParam("A", "A >= 0.0", "The A parameter."); - params.addRequiredRangeCheckedParam("B", "B >= 0.0", "The B parameter."); - params.addRequiredRangeCheckedParam("m", "m > 1.0", "The m parameter."); - params.addRequiredRangeCheckedParam("n", "n > 1.0", "The n parameter."); - params.addRequiredParam("z","number of creep models"); - params.addRequiredParam("Nz", "number of creep models"); - params.addRequiredParam("nz","number of creep models"); - params.addRequiredParam("Mz", "number of creep models"); - params.addRequiredParam("mz", "number of creep models"); - return params; -} - -BVBlancoMartinRTL2020ModelUpdate::BVBlancoMartinRTL2020ModelUpdate(const InputParameters & parameters) - : BVDeviatoricVolumetricUpdateBase(parameters), - // Modified Lemaitre creep strain rate parameters - _alpha(getParam("alpha")), - _kr1(getParam("kr1")), - _kr2(getParam("kr2")), - _beta1(getParam("beta1")), - _beta2(getParam("beta2")), - // Munson-Dawson creep strain rate parameters - _A1(getParam("A1")), - _n1(getParam("n1")), - _A(getParam("A")), - _B(getParam("B")), - _m(getParam("m")), - _n(getParam("n")), - // Internal variable for Lemaitre and Munson-Dawson creep strain - _eqv_creep_strain_L(declareADProperty(_base_name + "eqv_creep_strain_L")), - _eqv_creep_strain_L_old(getMaterialPropertyOld(_base_name + "eqv_creep_strain_L")), - _eqv_creep_strain_R(declareADProperty(_base_name + "eqv_creep_strain_R")), - _eqv_creep_strain_R_old(getMaterialPropertyOld(_base_name + "eqv_creep_strain_R")), - // Volumetric creep strain rate parameters - _z(getParam("z")), - _Nz(getParam("Nz")), - _nz(getParam("nz")), - _Mz(getParam("Mz")), - _mz(getParam("mz")) - -{ -} - -void -BVBlancoMartinRTL2020ModelUpdate::initQpStatefulProperties() -{ - _eqv_creep_strain_L[_qp] = 0.0; - _eqv_creep_strain_R[_qp] = 0.0; -} - -ADReal -BVBlancoMartinRTL2020ModelUpdate::creepRate(const std::vector & eqv_strain_incr, const unsigned int i) -{ - if (i == 0) // Lemaitre - return creepRateLemaitre(eqv_strain_incr); - else if (i == 1) // Munson-Dawson - return creepRateMunsonDawson(eqv_strain_incr); - else - throw MooseException("BVBlancoMartinRTL2020ModelUpdate: error, unknow creep model called in `creepRate`!"); -} - -ADReal -BVBlancoMartinRTL2020ModelUpdate::creepRateR(const std::vector & eqv_strain_incr) -{ - ADReal q = _eqv_stress_tr - 3.0 * _G * (eqv_strain_incr[0] + eqv_strain_incr[1]); - - if (q == 0.0) - return 0.0; - else - return 1.0e-06 * std::pow(std::pow(q / _kr1, _beta1) + std::pow(q / _kr2, _beta2), 1.0 / _alpha); -} - -ADReal -BVBlancoMartinRTL2020ModelUpdate::creepRateLemaitre(const std::vector & eqv_strain_incr) -{ - ADReal gamma_l = 1.0e+06 * lemaitreCreepStrain(eqv_strain_incr); - - if (gamma_l == 0.0) - return _alpha * creepRateR(eqv_strain_incr); - else - return _alpha * creepRateR(eqv_strain_incr) * std::pow(gamma_l, 1.0 - 1.0 / _alpha); -} - -ADReal -BVBlancoMartinRTL2020ModelUpdate::creepRateMunsonDawson(const std::vector & eqv_strain_incr) -{ - ADReal q = _eqv_stress_tr - 3.0 * _G * (eqv_strain_incr[0] + eqv_strain_incr[1]); - ADReal saturation_strain = (q != 0.0) ? std::pow(q / _A1, _n1) : 1.0e+06; - - ADReal gamma_ms = 1.0e+06 * munsondawsonCreepStrain(eqv_strain_incr); - - if (gamma_ms < saturation_strain) - return _A * std::pow(1.0 - gamma_ms / saturation_strain, _n) * - creepRateR(eqv_strain_incr); - else - return -_B * std::pow(gamma_ms / saturation_strain - 1.0, _m) * - creepRateR(eqv_strain_incr); -} - -ADReal -BVBlancoMartinRTL2020ModelUpdate::creepRateDerivative(const std::vector & eqv_strain_incr, - const unsigned int i, - const unsigned int j) -{ - if (i == 0) // Lemaitre - return creepRateLemaitreDerivative(eqv_strain_incr, j); - else if (i == 1) // Munson-Dawson - return creepRateMunsonDawsonDerivative(eqv_strain_incr, j); - else - throw MooseException( - "BVBlancoMartinRTL2020ModelUpdate: error, unknow creep model called in `creepRateDerivative`!"); -} - -ADReal -BVBlancoMartinRTL2020ModelUpdate::creepRateRDerivative(const std::vector & eqv_strain_incr) -{ - ADReal q = _eqv_stress_tr - 3.0 * _G * (eqv_strain_incr[0] + eqv_strain_incr[1]); - - if (q == 0.0) - return 1.0; - else - return -1.0e-06 * 3.0 * _G / _alpha * - std::pow(std::pow(q / _kr1, _beta1) + std::pow(q / _kr2, _beta2), 1.0 / _alpha - 1.0) * - (_beta1 / _kr1 * std::pow(q / _kr1, _beta1 - 1.0) + - _beta2 / _kr2 * std::pow(q / _kr2, _beta2 - 1.0)); -} - -ADReal -BVBlancoMartinRTL2020ModelUpdate::creepRateLemaitreDerivative(const std::vector & eqv_strain_incr, - const unsigned int j) -{ - ADReal gamma_l = 1.0e+06 * lemaitreCreepStrain(eqv_strain_incr); - - if (j == 0) // Lemaitre wrt Lemaitre - if (gamma_l == 0.0) - return _alpha * creepRateRDerivative(eqv_strain_incr); - else - return std::pow(gamma_l, -1.0 / _alpha) * - (_alpha * gamma_l * creepRateRDerivative(eqv_strain_incr) + - 1.0e+06 * (_alpha - 1.0) * creepRateR(eqv_strain_incr)); - - else if (j == 1) // Lemaitre wrt Munson-Dawson - if (gamma_l == 0.0) - return _alpha * creepRateRDerivative(eqv_strain_incr); - else - return _alpha * creepRateRDerivative(eqv_strain_incr) * std::pow(gamma_l, 1.0 - 1.0 / _alpha); - else - throw MooseException( - "BVBlancoMartinRTL2020ModelUpdate: error, unknow creep model called in `creepRateDerivative`!"); -} - -ADReal -BVBlancoMartinRTL2020ModelUpdate::creepRateMunsonDawsonDerivative(const std::vector & eqv_strain_incr, - const unsigned int j) -{ - ADReal q = _eqv_stress_tr - 3.0 * _G * (eqv_strain_incr[0] + eqv_strain_incr[1]); - ADReal saturation_strain = (q != 0.0) ? std::pow(q / _A1, _n1) : 1.0e+06; - - ADReal gamma_ms = 1.0e+06 * munsondawsonCreepStrain(eqv_strain_incr); - - if (j == 0) // Munson-Dawson wrt Lemaitre - if (gamma_ms < saturation_strain) - return _A * std::pow(1.0 - gamma_ms / saturation_strain, _n) * - creepRateRDerivative(eqv_strain_incr); - else - return -_B * std::pow(gamma_ms / saturation_strain - 1.0, _m) * - creepRateRDerivative(eqv_strain_incr); - - else if (j == 1) // Munson-Dawson wrt Munson-Dawson - if (gamma_ms < saturation_strain) - return _A * std::pow(1.0 - gamma_ms / saturation_strain, _n - 1.0) * - ((1.0 - gamma_ms / saturation_strain) * creepRateRDerivative(eqv_strain_incr) - - 1.0e+06 * _n / saturation_strain * creepRateR(eqv_strain_incr)); - else - return -_B * std::pow(gamma_ms / saturation_strain - 1.0, _m - 1.0) * - ((gamma_ms / saturation_strain - 1.0) * creepRateRDerivative(eqv_strain_incr) + - 1.0e+06 * _m / saturation_strain * creepRateR(eqv_strain_incr)); - else - throw MooseException( - "BVBlancoMartinRTL2020ModelUpdate: error, unknow creep model called in `creepRateDerivative`!"); -} - -ADReal -BVBlancoMartinRTL2020ModelUpdate::lemaitreCreepStrain(const std::vector & eqv_strain_incr) -{ - return _eqv_creep_strain_L_old[_qp] + eqv_strain_incr[0]; -} - -ADReal -BVBlancoMartinRTL2020ModelUpdate::munsondawsonCreepStrain(const std::vector & eqv_strain_incr) -{ - return _eqv_creep_strain_R_old[_qp] + eqv_strain_incr[1]; -} - -void -BVBlancoMartinRTL2020ModelUpdate::preReturnMap() -{ - _eqv_creep_strain_L[_qp] = _eqv_creep_strain_L_old[_qp]; - _eqv_creep_strain_R[_qp] = _eqv_creep_strain_R_old[_qp]; -} - -void -BVBlancoMartinRTL2020ModelUpdate::postReturnMap(const std::vector & eqv_strain_incr) -{ - _eqv_creep_strain_L[_qp] = lemaitreCreepStrain(eqv_strain_incr); - _eqv_creep_strain_R[_qp] = munsondawsonCreepStrain(eqv_strain_incr); -} - -ADReal -BVBlancoMartinRTL2020ModelUpdate::VcreepRate(const std::vector & creep_strain_incr, - const ADReal & Vcreep_strain_incr) -{ - ADReal p = _mean_stress_tr - (_K * Vcreep_strain_incr); - if (p == 0.0) - return 0.0; // No contribution since p is zero - - // Calculate numerator and denomenator for proportionality constant k - ADReal gamma_vp = 1.0e+06 * (lemaitreCreepStrain(creep_strain_incr) + munsondawsonCreepStrain(creep_strain_incr)); - ADReal numer = std::pow((p / _Nz) > 0.0 ? (p / _Nz) : 0.0, _nz) - gamma_vp; - ADReal denom = std::pow((p / _Mz) > 0.0 ? (p / _mz) : 0.0, _nz) + gamma_vp; - - // Safeguard against division by zero - if (denom != 0.0) - { - ADReal k = _z * (numer) / denom; // proportionality constant - ADReal res = 0.0; // Initialize res to zero before aggregation - for (unsigned int i = 0; i < creep_strain_incr.size(); ++i) - { - res += k * creep_strain_incr[i]; - } - return res; - } - else // Handle the case where denom is zero - { - return 0.0; // No contribution since k is not defined - } -} - -ADReal BVBlancoMartinRTL2020ModelUpdate::VcreepRateDerivative(const std::vector & creep_strain_incr, - const ADReal & Vcreep_strain_incr) -{ - ADReal p = _mean_stress_tr - (_K * Vcreep_strain_incr); - if (p == 0.0) - return 0.0; // No contribution since p is zero - - ADReal gamma_vp = 1.0e+06 * (lemaitreCreepStrain(creep_strain_incr) + munsondawsonCreepStrain(creep_strain_incr)); - ADReal numer = std::pow((p / _Nz) > 0.0 ? (p / _Nz) : 0.0, _nz) - gamma_vp; - ADReal denom = std::pow((p / _Mz) > 0.0 ? (p / _mz) : 0.0, _nz) + gamma_vp; - - // Derivative contributions - ADReal dp_dVcreep_strain_incr = -_K; // derivative of p with respect to Vcreep_strain_incr - - // Computing the derivatives of numerator and denomenator - ADReal dnumer_dVcreep_strain_incr = _nz * std::pow((p / _Nz) > 0.0 ? (p / _Nz) : 0.0, _nz - 1) * (dp_dVcreep_strain_incr / _Nz); - ADReal ddenom_dVcreep_strain_incr = _nz * std::pow((p / _Mz) > 0.0 ? (p / _Mz) : 0.0, _nz - 1) * (dp_dVcreep_strain_incr / _Mz); - - // Safeguard situation for denominator - if (denom != 0.0) - { - // Using the quotient rule to differentiate k - ADReal k = _z * (numer) / denom; - ADReal dk_dVcreep_strain_incr = _z * (ddenom_dVcreep_strain_incr * numer - dnumer_dVcreep_strain_incr * denom) / (denom * denom); - - // Initialize res to zero before aggregation - ADReal res = 0; - for (unsigned int i = 0; i < creep_strain_incr.size(); ++i) - { - res += dk_dVcreep_strain_incr * creep_strain_incr[i]; // Use the derivative of k - } - return res; - } - else - { - // If denom is zero, then k is set to a default value (0.0 in this case) - return 0.0; // No contribution since k is not defined - } -} - diff --git a/src/materials/BVDeviatoricVolumetricUpdateBase.C b/src/materials/BVDeviatoricVolumetricUpdateBase.C index ffa3616..aafd09e 100644 --- a/src/materials/BVDeviatoricVolumetricUpdateBase.C +++ b/src/materials/BVDeviatoricVolumetricUpdateBase.C @@ -26,9 +26,7 @@ BVDeviatoricVolumetricUpdateBase::validParams() "properties related to this stress update model. This allows for " "multiple models of the same type to be used without naming conflicts."); params.addRequiredParam("num_cm", "number of creep models"); - params.addParam("dev_vol", - true, - "Whether to perform deviatoric and volumetric calculations or only deviatoric calculations"); + params.addRequiredParam("dev_vol", "Whether to perform deviatoric and volumetric calculations or only deviatoric calculations"); return params; } @@ -37,7 +35,6 @@ BVDeviatoricVolumetricUpdateBase::BVDeviatoricVolumetricUpdateBase(const InputPa _identity_two(RankTwoTensor::initIdentity), _num_cm(getParam("num_cm")), _dev_vol(parameters.get("dev_vol")) -// _creep_strain_incr(declareADProperty(_base_name + "creep_strain_increment")) { } @@ -72,121 +69,17 @@ BVDeviatoricVolumetricUpdateBase::inelasticUpdate(ADRankTwoTensor & stress, cons std::vector eqv_strain_incr(_num_cm, 0.0); ADReal Vol_eqv_strain_incr = 0.0; // Viscoelastic update - DVreturnMap(eqv_strain_incr, Vol_eqv_strain_incr); + dvreturnMap(eqv_strain_incr, Vol_eqv_strain_incr); - _creep_strain_incr[_qp] = DVreformPlasticStrainTensor(eqv_strain_incr, Vol_eqv_strain_incr); + _creep_strain_incr[_qp] = dvreformPlasticStrainTensor(eqv_strain_incr, Vol_eqv_strain_incr); stress -= 2.0 * _G * _creep_strain_incr[_qp]; postReturnMap(eqv_strain_incr); } -std::vector -BVDeviatoricVolumetricUpdateBase::returnMap() -{ - // Initialize scalar creep strain incr - std::vector creep_strain_incr(_num_cm, 0.0); - - // Initial residual - std::vector res_ini = residual(creep_strain_incr); // residual function to initialize the res to prevent non-singularity in the return map - - std::vector res = res_ini; - std::vector> jac = jacobian(creep_strain_incr); // jacobian function to initialize the jac to prevent non-singularity in the return map - - // Newton loop - for (unsigned int iter = 0; iter < _max_its; ++iter) - { - nrStep(res, jac, creep_strain_incr); - - res = residual(creep_strain_incr); - jac = jacobian(creep_strain_incr); - - // Convergence check - if ((norm(res) <= _abs_tol) || (norm(res) / norm(res_ini) <= _rel_tol)) - return creep_strain_incr; - } - throw MooseException( - "BVTwoCreepUpdateBase: maximum number of iterations exceeded in 'returnMap'!"); -} - -void -BVDeviatoricVolumetricUpdateBase::nrStep(const std::vector & res, - const std::vector> & jac, - std::vector & creep_strain_incr) -{ - std::vector dx(_num_cm, 0.0); - - // Check determinant - ADReal det = jac[0][0] * jac[1][1] - jac[0][1] * jac[1][0]; - - if (det == 0.0) - throw MooseException("BVDeviatoricVolumetricUpdateBase: matrix is singular in 'returnMap!"); - - creep_strain_incr[0] -= (jac[1][1] * res[0] - jac[0][1] * res[1]) / det; - creep_strain_incr[1] -= (jac[0][0] * res[1] - jac[1][0] * res[0]) / det; - - return; -} - -ADReal -BVDeviatoricVolumetricUpdateBase::norm(const std::vector & vec) -{ - ADReal res = 0.0; - for (const auto & r : vec) - res += r * r; - - return std::sqrt(res); -} - -std::vector -BVDeviatoricVolumetricUpdateBase::residual(const std::vector & creep_strain_incr) -{ - std::vector res(_num_cm); - for (unsigned int i = 0; i < _num_cm; ++i) - res[i] = creepRate(creep_strain_incr, i) * _dt - creep_strain_incr[i]; - - return res; -} - -std::vector> -BVDeviatoricVolumetricUpdateBase::jacobian(const std::vector & creep_strain_incr) -{ - std::vector> jac(_num_cm, std::vector(_num_cm)); - - for (unsigned int i = 0; i < _num_cm; ++i) - for (unsigned int j = 0; j < _num_cm; ++j) - jac[i][j] = creepRateDerivative(creep_strain_incr, i, j) * _dt - ((i == j) ? 1.0 : 0.0); - - return jac; -} - - -ADRankTwoTensor -BVDeviatoricVolumetricUpdateBase::reformPlasticStrainTensor(const std::vector & creep_strain_incr) -{ - ADRankTwoTensor res; - res.zero(); - - ADRankTwoTensor flow_dir = - (_eqv_stress_tr != 0.0) ? _stress_tr.deviatoric() / _eqv_stress_tr : ADRankTwoTensor(); - - for (unsigned int i = 0; i < _num_cm; ++i) - res += 1.5 * creep_strain_incr[i] * flow_dir; - - return res; -} - -void -BVDeviatoricVolumetricUpdateBase::preReturnMap() -{ -} - -void -BVDeviatoricVolumetricUpdateBase::postReturnMap(const std::vector & /*creep_strain_incr*/) -{ -} //Deviatoric-Volumetric updates void -BVDeviatoricVolumetricUpdateBase::DVreturnMap(std::vector& creep_strain_incr_out, +BVDeviatoricVolumetricUpdateBase::dvreturnMap(std::vector& creep_strain_incr_out, ADReal & Vcreep_strain_incr_out) { if (_dev_vol) @@ -203,11 +96,11 @@ BVDeviatoricVolumetricUpdateBase::DVreturnMap(std::vector& creep_strain_ ADReal Vcreep_strain_incr = 0.0; // Initial volumetric residual - ADReal Vres_ini = Vresidual(creep_strain_incr, Vcreep_strain_incr); // initialize volumetric residual + ADReal Vres_ini = vresidual(creep_strain_incr, Vcreep_strain_incr); // initialize volumetric residual ADReal Vres = Vres_ini; // Initial volumetric jacobian - ADReal Vjac = Vjacobian(creep_strain_incr,Vcreep_strain_incr); // initialize volumetric Jacobian + ADReal Vjac = vjacobian(creep_strain_incr,Vcreep_strain_incr); // initialize volumetric Jacobian // Newton loop for (unsigned int iter = 0; iter < _max_its; ++iter) @@ -221,8 +114,8 @@ BVDeviatoricVolumetricUpdateBase::DVreturnMap(std::vector& creep_strain_ // compute and update the scalar volumetric strain increment Vcreep_strain_incr -= Vres / Vjac; - Vres = Vresidual(creep_strain_incr, Vcreep_strain_incr); - Vjac = Vjacobian(creep_strain_incr, Vcreep_strain_incr); + Vres = vresidual(creep_strain_incr, Vcreep_strain_incr); + Vjac = vjacobian(creep_strain_incr, Vcreep_strain_incr); // Convergence check bool D_converge = (norm(res) <= _abs_tol) || (norm(res) / norm(res_ini) <= _rel_tol); @@ -250,19 +143,19 @@ BVDeviatoricVolumetricUpdateBase::DVreturnMap(std::vector& creep_strain_ } ADReal -BVDeviatoricVolumetricUpdateBase::Vresidual(const std::vector & creep_strain_incr, const ADReal & Vcreep_strain_incr) +BVDeviatoricVolumetricUpdateBase::vresidual(const std::vector & creep_strain_incr, const ADReal & Vcreep_strain_incr) { - return VcreepRate(creep_strain_incr, Vcreep_strain_incr) * _dt - Vcreep_strain_incr; + return vcreepRate(creep_strain_incr, Vcreep_strain_incr) * _dt - Vcreep_strain_incr; } ADReal -BVDeviatoricVolumetricUpdateBase::Vjacobian(const std::vector & creep_strain_incr, const ADReal & Vcreep_strain_incr) +BVDeviatoricVolumetricUpdateBase::vjacobian(const std::vector & creep_strain_incr, const ADReal & Vcreep_strain_incr) { - return VcreepRateDerivative(creep_strain_incr,Vcreep_strain_incr) * _dt - 1.0; + return vcreepRateDerivative(creep_strain_incr,Vcreep_strain_incr) * _dt - 1.0; } ADRankTwoTensor -BVDeviatoricVolumetricUpdateBase::DVreformPlasticStrainTensor(const std::vector & creep_strain_incr, const ADReal & Vcreep_strain_incr) +BVDeviatoricVolumetricUpdateBase::dvreformPlasticStrainTensor(const std::vector & creep_strain_incr, const ADReal & Vcreep_strain_incr) { if (_dev_vol) { diff --git a/src/materials/BVRTL2020ModelUpdate.C b/src/materials/BVRTL2020ModelUpdate.C index 970efd4..3d93bb8 100644 --- a/src/materials/BVRTL2020ModelUpdate.C +++ b/src/materials/BVRTL2020ModelUpdate.C @@ -18,7 +18,7 @@ registerMooseObject("BeaverApp", BVRTL2020ModelUpdate); InputParameters BVRTL2020ModelUpdate::validParams() { - InputParameters params = BVTwoCreepUpdateBase::validParams(); + InputParameters params = BVDeviatoricVolumetricUpdateBase::validParams(); params.addClassDescription( "Material for computing a RTL2020 creep update. See Azabou et al. (2021), Rock salt " "behavior: From laboratory experiments to pertinent long-term predictions."); @@ -33,11 +33,17 @@ BVRTL2020ModelUpdate::validParams() params.addRequiredRangeCheckedParam("B", "B >= 0.0", "The B parameter."); params.addRequiredRangeCheckedParam("m", "m > 1.0", "The m parameter."); params.addRequiredRangeCheckedParam("n", "n > 1.0", "The n parameter."); + // volume creep parameters + params.addRequiredParam("z","volumetric creep parameter z"); + params.addRequiredParam("Nz", "volumetric creep parameter Nz"); + params.addRequiredParam("nz","volumetric creep parameter nz"); + params.addRequiredParam("Mz", "volumetric creep parameter Mz"); + params.addRequiredParam("mz", "volumetric creep parameter mz"); return params; } BVRTL2020ModelUpdate::BVRTL2020ModelUpdate(const InputParameters & parameters) - : BVTwoCreepUpdateBase(parameters), + : BVDeviatoricVolumetricUpdateBase(parameters), // Lemaitre creep strain rate parameters _alpha(getParam("alpha")), _A2(getParam("A2")), @@ -49,6 +55,12 @@ BVRTL2020ModelUpdate::BVRTL2020ModelUpdate(const InputParameters & parameters) _B(getParam("B")), _m(getParam("m")), _n(getParam("n")), + // Volumetric creep strain rate parameters + _z(getParam("z")), + _Nz(getParam("Nz")), + _nz(getParam("nz")), + _Mz(getParam("Mz")), + _mz(getParam("mz")), // Internal variable for Lemaitre and Munson-Dawson creep strain _eqv_creep_strain_L(declareADProperty(_base_name + "eqv_creep_strain_L")), _eqv_creep_strain_L_old(getMaterialPropertyOld(_base_name + "eqv_creep_strain_L")), @@ -83,7 +95,7 @@ BVRTL2020ModelUpdate::creepRateR(const std::vector & eqv_strain_incr) if (q == 0.0) return 0.0; else - return 1.0e-06 * std::pow(q / _A2, _n2); + return 1.0e-06 * std::pow((q / _A2 >= 0.0 ? q / _A2 : 0.0), _n2); //macaulay brackets to guide against negative values } ADReal @@ -219,4 +231,74 @@ BVRTL2020ModelUpdate::postReturnMap(const std::vector & eqv_strain_incr) { _eqv_creep_strain_L[_qp] = lemaitreCreepStrain(eqv_strain_incr); _eqv_creep_strain_R[_qp] = munsondawsonCreepStrain(eqv_strain_incr); +} + +ADReal +BVRTL2020ModelUpdate::vcreepRate(const std::vector & creep_strain_incr, + const ADReal & Vcreep_strain_incr) +{ + ADReal p = _mean_stress_tr - (_K * Vcreep_strain_incr); + if (p == 0.0) + return 0.0; // No contribution since p is zero + + // Calculate numerator and denomenator for proportionality constant k + ADReal gamma_vp = 1.0e+06 * (lemaitreCreepStrain(creep_strain_incr) + munsondawsonCreepStrain(creep_strain_incr)); + ADReal numer = std::pow((p / _Nz) > 0.0 ? (p / _Nz) : 0.0, _nz) - gamma_vp; + ADReal denom = std::pow((p / _Mz) > 0.0 ? (p / _mz) : 0.0, _nz) + gamma_vp; + + // Safeguard against division by zero + if (denom != 0.0) + { + ADReal k = _z * (numer) / denom; // proportionality constant + ADReal res = 0.0; // Initialize res to zero before aggregation + for (unsigned int i = 0; i < creep_strain_incr.size(); ++i) + { + res += k * creep_strain_incr[i]; + } + return res; + } + else // Handle the case where denom is zero + { + return 0.0; // No contribution since k is not defined + } +} + +ADReal BVRTL2020ModelUpdate::vcreepRateDerivative(const std::vector & creep_strain_incr, + const ADReal & Vcreep_strain_incr) +{ + ADReal p = _mean_stress_tr - (_K * Vcreep_strain_incr); + if (p == 0.0) + return 0.0; // No contribution since p is zero + + ADReal gamma_vp = 1.0e+06 * (lemaitreCreepStrain(creep_strain_incr) + munsondawsonCreepStrain(creep_strain_incr)); + ADReal numer = std::pow((p / _Nz) > 0.0 ? (p / _Nz) : 0.0, _nz) - gamma_vp; + ADReal denom = std::pow((p / _Mz) > 0.0 ? (p / _mz) : 0.0, _nz) + gamma_vp; + + // Derivative contributions + ADReal dp_dVcreep_strain_incr = -_K; // derivative of p with respect to Vcreep_strain_incr + + // Computing the derivatives of numerator and denomenator + ADReal dnumer_dVcreep_strain_incr = _nz * std::pow((p / _Nz) > 0.0 ? (p / _Nz) : 0.0, _nz - 1) * (dp_dVcreep_strain_incr / _Nz); + ADReal ddenom_dVcreep_strain_incr = _nz * std::pow((p / _Mz) > 0.0 ? (p / _Mz) : 0.0, _nz - 1) * (dp_dVcreep_strain_incr / _Mz); + + // Safeguard situation for denominator + if (denom != 0.0) + { + // Using the quotient rule to differentiate k + ADReal k = _z * (numer) / denom; + ADReal dk_dVcreep_strain_incr = _z * (ddenom_dVcreep_strain_incr * numer - dnumer_dVcreep_strain_incr * denom) / (denom * denom); + + // Initialize res to zero before aggregation + ADReal res = 0; + for (unsigned int i = 0; i < creep_strain_incr.size(); ++i) + { + res += dk_dVcreep_strain_incr * creep_strain_incr[i]; // Use the derivative of k + } + return res; + } + else + { + // If denom is zero, then k is set to a default value (0.0 in this case) + return 0.0; // No contribution since k is not defined + } } \ No newline at end of file From 10734d3796cd139182309a1a6aff870f44ec3f71 Mon Sep 17 00:00:00 2001 From: iyevugah Date: Thu, 23 Jan 2025 12:29:54 -0500 Subject: [PATCH 06/39] test for RTL2020 --- .../viscoelasticity/BVRTL2020ModelUpdate.i | 332 ++++++++++++++++++ 1 file changed, 332 insertions(+) create mode 100644 test/tests/viscoelasticity/BVRTL2020ModelUpdate.i diff --git a/test/tests/viscoelasticity/BVRTL2020ModelUpdate.i b/test/tests/viscoelasticity/BVRTL2020ModelUpdate.i new file mode 100644 index 0000000..50499a4 --- /dev/null +++ b/test/tests/viscoelasticity/BVRTL2020ModelUpdate.i @@ -0,0 +1,332 @@ +# Modified Lemaitre creep model +# See Blanco-Martin et al. (2023) +# Parameters +# Units: stress in MPa, time in days, strain in m / m +E = 28567 +nu = 0.30 +alpha = 0.2601 +A1 = 0.0181 +n1 = 1.162 +A2 = 0.3986 +n2 = 9.6768 +A = 0.01 +n = 13.5 +B = 0.0 +m = 2.0 +P = 10.0 +Q = 5.0 +Nz = 0.0241 +nz = 1.2644 +Mz = 0.024 +mz = 1.028 +z = 0.4523 + +[Mesh] + type = GeneratedMesh + dim = 3 + # nx = 5 + # ny = 10 + # nz = 5 + nx = 1 + ny = 1 + nz = 1 + xmin = 0 + xmax = 65e-03 + ymin = 0 + ymax = 130e-03 + zmin = 0 + zmax = 65e-03 +[] + +[Variables] + [disp_x] + order = FIRST + family = LAGRANGE + [] + [disp_y] + order = FIRST + family = LAGRANGE + [] + [disp_z] + order = FIRST + family = LAGRANGE + [] +[] + +[Kernels] + [stress_x] + type = BVStressDivergence + component = x + variable = disp_x + [] + [stress_y] + type = BVStressDivergence + component = y + variable = disp_y + [] + [stress_z] + type = BVStressDivergence + component = z + variable = disp_z + [] +[] + +[AuxVariables] + [eqv_stress] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain_rate] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_L] + order = CONSTANT + family = MONOMIAL + [] + [strain_yy] + order = CONSTANT + family = MONOMIAL + [] + [stress_yy] + order = CONSTANT + family = MONOMIAL + [] +[] + +[AuxKernels] + [eqv_stress_aux] + type = BVMisesStressAux + variable = eqv_stress + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_aux] + type = BVEqvStrainAux + variable = eqv_strain + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_rate_aux] + type = BVEqvStrainRateAux + variable = eqv_strain_rate + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_L_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_L + property = eqv_creep_strain_L + execute_on = 'TIMESTEP_END' + [] + [strain_zz_aux] + type = BVStrainComponentAux + variable = strain_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [stress_zz_aux] + type = BVStressComponentAux + variable = stress_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] +[] + +[Functions] + [loading2] + type = ParsedFunction + expression = 'if(t<=20,5.5,if(t<=55,6,if(t<=76,7,if(t<=97,10,if(t<=118,15,if(t<=139,20,25))))))' + [] + [salt3loading] + type = ParsedFunction + expression = 'if(t<=15,14.4,if(t<=29,20,24.4))' + [] +[] + +[BCs] + [no_x] + type = DirichletBC + variable = disp_x + boundary = 'left' + value = 0.0 + [] + [no_y] + type = DirichletBC + variable = disp_y + boundary = 'bottom' + value = 0.0 + [] + [no_z] + type = DirichletBC + variable = disp_z + boundary = 'back' + value = 0.0 + [] + [BVPressure] + [pressure_right] + boundary = 'right' + displacement_vars = 'disp_x disp_y disp_z' + value = ${P} + [] + [pressure_front] + boundary = 'front' + displacement_vars = 'disp_x disp_y disp_z' + value = ${P} + [] + [pressure_top] + boundary = 'top' + displacement_vars = 'disp_x disp_y disp_z' + function = salt3loading #loading2 + [] + [] +[] + +[Materials] + [elasticity] + type = BVMechanicalMaterial + displacements = 'disp_x disp_y disp_z' + young_modulus = ${E} + poisson_ratio = ${nu} + initial_stress = '-${P} -${Q} -${P}' + inelastic_models = 'viscoelastic' + [] + #[viscoelastic] + # type = BVModifiedLemaitreModelUpdate + # alpha = ${alpha} + # kr1 = ${kr1} + # beta1 = ${beta1} + # kr2 = ${kr2} + # beta2 = ${beta2} + #[] + #[viscoelastic] + # type = BVBlancoMartinModelUpdate + # alpha = ${alpha} + # kr1 = ${kr1} + # beta1 = ${beta1} + # kr2 = ${kr2} + # beta2 = ${beta2} + # A1 = ${A1} + # n1 = ${n1} + # A = ${A} + # n = ${n} + # B = 0.0 + # m = ${n} + #[] + [viscoelastic] + type = BVRTL2020ModelUpdate + num_cm = 2 + dev_vol = true + alpha = ${alpha} + A1 = ${A1} + n1 = ${n1} + A2 = ${A2} + n2 = ${n2} + A = ${A} + n = ${n} + B = ${B} + m = ${m} + Nz = ${Nz} + nz = ${nz} + Mz = ${Mz} + mz = ${mz} + z = ${z} + [] +[] + +[Postprocessors] + [eqv_strain_rate] + type = ElementAverageValue + variable = eqv_strain_rate + outputs = csv + [] + [eqv_strain] + type = ElementAverageValue + variable = eqv_strain + outputs = csv + [] + [eqv_strain_L] + type = ElementAverageValue + variable = eqv_creep_strain_L + outputs = csv + [] + [strain_zz] + type = ElementAverageValue + variable = strain_yy + outputs = csv + [] + [stress_zz] + type = ElementAverageValue + variable = stress_yy + outputs = csv + [] + [q] + type = ElementAverageValue + variable = eqv_stress + outputs = csv + [] +[] + +[Preconditioning] + active = 'hypre' + [hypre] + type = SMP + full = true + petsc_options = '-snes_ksp_ew' + petsc_options_iname = '-pc_type -pc_hypre_type + -snes_atol -snes_rtol -snes_stol -snes_max_it + -snes_linesearch_type' + petsc_options_value = 'hypre boomeramg + 1.0e-10 1.0e-12 0 20 + basic' + [] + [superlu] + type = SMP + full = true + petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_gmres_modifiedgramschmidt -ksp_diagonal_scale -ksp_diagonal_scale_fix' + petsc_options_iname = '-snes_type + -snes_atol -snes_rtol -snes_max_it + -pc_type -pc_factor_mat_solver_package + -snes_linesearch_type' + petsc_options_value = 'newtonls + 1e-10 1e-12 50 + lu superlu_dist + l2' + [] + [asm] + type = SMP + petsc_options = '-snes_ksp_ew' + petsc_options_iname = '-ksp_type + -pc_type + -sub_pc_type + -snes_type -snes_atol -snes_rtol -snes_max_it -snes_linesearch_type + -ksp_gmres_restart' + petsc_options_value = 'fgmres + asm + ilu + newtonls 1e-10 1e-10 120 basic + 201' + [] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + automatic_scaling = true + start_time = 0.0 + end_time = 50 # 50 days + dt = 0.02 + timestep_tolerance = 1.0e-10 +[] + +[Outputs] + perf_graph = true + exodus = true + [csv] + type = CSV + execute_on = 'timestep_end' + [] +[] \ No newline at end of file From ff6ee742e59f74e65a236b9660671adebd899a93 Mon Sep 17 00:00:00 2001 From: Antoine Jacquey Date: Thu, 6 Feb 2025 15:41:30 -0500 Subject: [PATCH 07/39] Update avg stress definition --- src/materials/BVDeviatoricVolumetricUpdateBase.C | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/materials/BVDeviatoricVolumetricUpdateBase.C b/src/materials/BVDeviatoricVolumetricUpdateBase.C index aafd09e..dc84105 100644 --- a/src/materials/BVDeviatoricVolumetricUpdateBase.C +++ b/src/materials/BVDeviatoricVolumetricUpdateBase.C @@ -53,8 +53,7 @@ BVDeviatoricVolumetricUpdateBase::inelasticUpdate(ADRankTwoTensor & stress, cons _stress_tr = stress; // Trial effective stress _eqv_stress_tr = std::sqrt(1.5) * _stress_tr.deviatoric().L2norm(); - _avg_stress_tr = _stress_tr.trace(); - _mean_stress_tr = _avg_stress_tr / 3.0; // my modification: mean stress + _avg_stress_tr = -_stress_tr.trace() / 3.0; // Shear and bulk modulus _G = BVElasticityTensorTools::getIsotropicShearModulus(Cijkl); _K = BVElasticityTensorTools::getIsotropicBulkModulus(Cijkl); From f5ddf377d7446f9f7b9907083007b33ac16a2045 Mon Sep 17 00:00:00 2001 From: iyevugah Date: Mon, 10 Feb 2025 16:58:39 -0500 Subject: [PATCH 08/39] updated the volumetric creep rates and the test --- .../BVDeviatoricVolumetricUpdateBase.h | 24 +- include/materials/BVRTL2020ModelUpdate.h | 8 +- .../BVDeviatoricVolumetricUpdateBase.C | 225 ++++++++---------- src/materials/BVRTL2020ModelUpdate.C | 32 ++- .../viscoelasticity/BVRTL2020ModelUpdate.i | 3 +- 5 files changed, 142 insertions(+), 150 deletions(-) diff --git a/include/materials/BVDeviatoricVolumetricUpdateBase.h b/include/materials/BVDeviatoricVolumetricUpdateBase.h index 9b5c3e6..383cb61 100644 --- a/include/materials/BVDeviatoricVolumetricUpdateBase.h +++ b/include/materials/BVDeviatoricVolumetricUpdateBase.h @@ -24,17 +24,19 @@ class BVDeviatoricVolumetricUpdateBase : public BVTwoCreepUpdateBase protected: // newly added methods - virtual void dvreturnMap(std::vector& creep_strain_incr_out, - ADReal & Vcreep_strain_incr_out); - virtual ADReal vresidual(const std::vector & creep_strain_incr, const ADReal & Vcreep_strain_incr); - virtual ADReal vjacobian(const std::vector & creep_strain_incr, const ADReal & Vcreep_strain_incr); - virtual ADRankTwoTensor dvreformPlasticStrainTensor(const std::vector & creep_strain_incr, const ADReal & Vcreep_strain_incr); - virtual ADReal vcreepRate(const std::vector & creep_strain_incr, const ADReal & Vcreep_strain_incr) = 0; - virtual ADReal vcreepRateDerivative(const std::vector & creep_strain_incr,const ADReal & Vcreep_strain_incr) = 0; + virtual std::vector returnMap() override; + virtual std::vector vresidual(const std::vector & creep_strain_incr, + const std::vector & vcreep_strain_incr); + virtual std::vector> vjacobian(const std::vector & creep_strain_incr, + const std::vector & vcreep_strain_incr); + virtual ADReal vcreepRate(const std::vector & creep_strain_incr, + const std::vector & vcreep_strain_incr) = 0; + virtual ADReal vcreepRateDerivative(const std::vector & creep_strain_incr, + const std::vector & vcreep_strain_incr) = 0; + virtual ADRankTwoTensor reformPlasticStrainTensor(const std::vector & creep_strain_incr) override; - const unsigned int _num_cm; - const RankTwoTensor _identity_two; - ADReal _mean_stress_tr; // mean stress to compute the equivalent volumetric creep strain - bool _dev_vol; + bool _volumetric; +// volumetric creep strain increment + ADMaterialProperty & _vcreep_strain_incr; }; \ No newline at end of file diff --git a/include/materials/BVRTL2020ModelUpdate.h b/include/materials/BVRTL2020ModelUpdate.h index 7178744..bdbc3be 100644 --- a/include/materials/BVRTL2020ModelUpdate.h +++ b/include/materials/BVRTL2020ModelUpdate.h @@ -38,13 +38,14 @@ class BVRTL2020ModelUpdate : public BVDeviatoricVolumetricUpdateBase const unsigned int j); virtual ADReal lemaitreCreepStrain(const std::vector & eqv_strain_incr); virtual ADReal munsondawsonCreepStrain(const std::vector & eqv_strain_incr); + virtual ADReal volumetricCreepStrain(const std::vector & v_eqv_strain_incr); virtual void preReturnMap() override; virtual void postReturnMap(const std::vector & eqv_strain_incr) override; virtual ADReal vcreepRate(const std::vector & creep_strain_incr, - const ADReal & Vcreep_strain_incr) override; + const std::vector & vcreep_strain_incr) override; virtual ADReal vcreepRateDerivative(const std::vector & creep_strain_incr, - const ADReal & Vcreep_strain_incr) override; + const std::vector & vcreep_strain_incr) override; // Lemaitre creep strain rate parameters const Real _alpha; @@ -72,4 +73,7 @@ class BVRTL2020ModelUpdate : public BVDeviatoricVolumetricUpdateBase ADMaterialProperty & _eqv_creep_strain_R; const MaterialProperty & _eqv_creep_strain_R_old; + // Internal variable for volumetric creep strain + ADMaterialProperty & _v_eqv_creep_strain; + const MaterialProperty & _v_eqv_creep_strain_old; }; diff --git a/src/materials/BVDeviatoricVolumetricUpdateBase.C b/src/materials/BVDeviatoricVolumetricUpdateBase.C index dc84105..71a0dd3 100644 --- a/src/materials/BVDeviatoricVolumetricUpdateBase.C +++ b/src/materials/BVDeviatoricVolumetricUpdateBase.C @@ -13,6 +13,7 @@ #include "BVDeviatoricVolumetricUpdateBase.h" #include "BVElasticityTensorTools.h" +#include "RankTwoTensor.h" InputParameters BVDeviatoricVolumetricUpdateBase::validParams() @@ -20,166 +21,140 @@ BVDeviatoricVolumetricUpdateBase::validParams() InputParameters params = BVTwoCreepUpdateBase::validParams(); params.addClassDescription("Base material for computing multiple creep stress" "updates with Two flow directions (or rules). This class inherits from BVTwoCreepUpdateBase."); - params.addParam( - "base_name", - "Optional parameter that defines a prefix for all material " - "properties related to this stress update model. This allows for " - "multiple models of the same type to be used without naming conflicts."); - params.addRequiredParam("num_cm", "number of creep models"); - params.addRequiredParam("dev_vol", "Whether to perform deviatoric and volumetric calculations or only deviatoric calculations"); + params.addRequiredParam("volumetric", "Whether to perform deviatoric and volumetric" + "calculations or only deviatoric calculations"); return params; } BVDeviatoricVolumetricUpdateBase::BVDeviatoricVolumetricUpdateBase(const InputParameters & parameters) : BVTwoCreepUpdateBase(parameters), - _identity_two(RankTwoTensor::initIdentity), - _num_cm(getParam("num_cm")), - _dev_vol(parameters.get("dev_vol")) + _volumetric(parameters.get("volumetric")), + _vcreep_strain_incr(declareADProperty(_base_name + "vcreep_strain_increment")) { } void BVDeviatoricVolumetricUpdateBase::inelasticUpdate(ADRankTwoTensor & stress, const RankFourTensor & Cijkl) { - // Here we do an iterative update with a single variable being the scalar effective stress - // We are trying to find the zero of the function F which is defined as: - // $F\left(\sigma_{e}\right) = \sigma_{e}^{tr} - \sigme_{e} - 3 * \eta * \dot{gamma}$ - // $\dot{\gamma}$: scalar creep strain rate - // $\sigma_{e}$: scalar effective stress - // $\eta$: the viscosity - // flow rule: $\dot{\gamma} = \frac{\sigma_{e}}{3 \eta}$ - - // Trial stress - _stress_tr = stress; - // Trial effective stress - _eqv_stress_tr = std::sqrt(1.5) * _stress_tr.deviatoric().L2norm(); - _avg_stress_tr = -_stress_tr.trace() / 3.0; - // Shear and bulk modulus - _G = BVElasticityTensorTools::getIsotropicShearModulus(Cijkl); - _K = BVElasticityTensorTools::getIsotropicBulkModulus(Cijkl); - - // Initialize creep strain increment - _creep_strain_incr[_qp].zero(); - - // Pre return map calculations (model specific) - preReturnMap(); - - // initialize the equivalent creep strains - std::vector eqv_strain_incr(_num_cm, 0.0); - ADReal Vol_eqv_strain_incr = 0.0; - // Viscoelastic update - dvreturnMap(eqv_strain_incr, Vol_eqv_strain_incr); - - _creep_strain_incr[_qp] = dvreformPlasticStrainTensor(eqv_strain_incr, Vol_eqv_strain_incr); - stress -= 2.0 * _G * _creep_strain_incr[_qp]; - postReturnMap(eqv_strain_incr); + if (_volumetric) + { + // Here we do an iterative update with a single variable being the scalar effective stress + // We are trying to find the zero of the function F which is defined as: + // $F\left(\sigma_{e}\right) = \sigma_{e}^{tr} - \sigme_{e} - 3 * \eta * \dot{gamma}$ + // $\dot{\gamma}$: scalar creep strain rate + // $\sigma_{e}$: scalar effective stress + // $\eta$: the viscosity + // flow rule: $\dot{\gamma} = \frac{\sigma_{e}}{3 \eta}$ + + // Trial stress + _stress_tr = stress; + // Trial effective stress + _eqv_stress_tr = std::sqrt(1.5) * _stress_tr.deviatoric().L2norm(); + _avg_stress_tr = -_stress_tr.trace() / 3.0; + // Shear and bulk modulus + _G = BVElasticityTensorTools::getIsotropicShearModulus(Cijkl); + _K = BVElasticityTensorTools::getIsotropicBulkModulus(Cijkl); + + // Initialize creep strain increments + _creep_strain_incr[_qp].zero(); + _vcreep_strain_incr[_qp].zero(); + + // Pre return map calculations (model specific) + preReturnMap(); + + // Viscoelastic update + std::vector creep_strain_incr = BVTwoCreepUpdateBase::returnMap(); + std::vector vcreep_strain_incr = returnMap(); + + // Concatenate the two vectors + std::vector total_creep_strain_inc; + total_creep_strain_inc.reserve(creep_strain_incr.size() + vcreep_strain_incr.size()); // Reserve memory + total_creep_strain_inc.insert(total_creep_strain_inc.end(), creep_strain_incr.begin(), creep_strain_incr.end()); // Add first vector + total_creep_strain_inc.insert(total_creep_strain_inc.end(), vcreep_strain_incr.begin(), vcreep_strain_incr.end()); // Add second vector + + _creep_strain_incr[_qp] = BVTwoCreepUpdateBase::reformPlasticStrainTensor(creep_strain_incr); + _vcreep_strain_incr[_qp] = reformPlasticStrainTensor(vcreep_strain_incr); + stress -= ((2.0 * _G * _creep_strain_incr[_qp]) + (_K * _vcreep_strain_incr[_qp])); + postReturnMap(total_creep_strain_inc); + } + else + { + BVTwoCreepUpdateBase::inelasticUpdate(stress, Cijkl); + } } - -//Deviatoric-Volumetric updates -void -BVDeviatoricVolumetricUpdateBase::dvreturnMap(std::vector& creep_strain_incr_out, - ADReal & Vcreep_strain_incr_out) -{ - if (_dev_vol) +std::vector +BVDeviatoricVolumetricUpdateBase::returnMap() +{ + if (_volumetric) { - // Initialize scalar deviatoric creep strain increment - std::vector creep_strain_incr(_num_cm, 0.0); + std::vector creep_strain_incr(_num_cm, 0.0); // initialize deviatoric creep strain increment + std::vector vcreep_strain_incr (1.0, 0.0); // initialize volumetric creep strain increment - // Initial residual - std::vector res_ini = residual(creep_strain_incr); // initialize residual - std::vector res = res_ini; + // Initial volumetric residual + std::vector vres_ini = vresidual(creep_strain_incr,vcreep_strain_incr); // initialize volumetric residual + std::vector vres = vres_ini; + std::vector> vjac = vjacobian(creep_strain_incr,vcreep_strain_incr); // initialize volumetric Jacobian - std::vector> jac = jacobian(creep_strain_incr); // initialize Jacobian - // Initialize scalar volumetric creep strain increment - ADReal Vcreep_strain_incr = 0.0; + // Newton loop + for (unsigned int iter = 0; iter < _max_its; ++iter) + { + vcreep_strain_incr[0] -= vres[0] / vjac[0][0]; // Newton-Raphson step - // Initial volumetric residual - ADReal Vres_ini = vresidual(creep_strain_incr, Vcreep_strain_incr); // initialize volumetric residual - ADReal Vres = Vres_ini; + vres = vresidual(creep_strain_incr, vcreep_strain_incr); + vjac = vjacobian(creep_strain_incr, vcreep_strain_incr); - // Initial volumetric jacobian - ADReal Vjac = vjacobian(creep_strain_incr,Vcreep_strain_incr); // initialize volumetric Jacobian + // Convergence check + if ((norm(vres) <= _abs_tol) || (norm(vres) / norm(vres_ini) <= _rel_tol)) - // Newton loop - for (unsigned int iter = 0; iter < _max_its; ++iter) - { - // Call to nrStep to update the scalar deviatoric strain increment - nrStep(res, jac, creep_strain_incr); - - // Recalculate residuals and Jacobians for the deviatoric part - res = residual(creep_strain_incr); - jac = jacobian(creep_strain_incr); - - // compute and update the scalar volumetric strain increment - Vcreep_strain_incr -= Vres / Vjac; - Vres = vresidual(creep_strain_incr, Vcreep_strain_incr); - Vjac = vjacobian(creep_strain_incr, Vcreep_strain_incr); - - // Convergence check - bool D_converge = (norm(res) <= _abs_tol) || (norm(res) / norm(res_ini) <= _rel_tol); - bool V_converge = (abs(Vres) <= _abs_tol) || (abs(Vres) / Vres_ini <= _rel_tol); - bool converge = D_converge && V_converge; - - // Check if convergence was achieved - if (converge) - { - // Assign results to output parameters - creep_strain_incr_out = creep_strain_incr; - Vcreep_strain_incr_out = Vcreep_strain_incr; // Ensure Vcreep_strain_incr is returned - return; // Exit after successfully converging - } - } + return vcreep_strain_incr; // Ensure vcreep_strain_incr is updated correctly + } // If maximum iterations are exceeded without convergence, throw an exception - throw MooseException("BVDeviatoricVolumetricUpdateBase: maximum number of iterations exceeded in the deviatoric-volumetric 'returnMap'!"); + throw MooseException("BVDeviatoricVolumetricUpdateBase: maximum number of iterations exceeded in the deviatoric-volumetric 'returnMap'!"); } - else // Implement only the deviatoric part for now - { - // Call the returnMap function if only deviatoric updates are required - creep_strain_incr_out = returnMap(); - Vcreep_strain_incr_out = 0.0; // Since volumetric update is not required in this case, set it to a default value + else + { + return BVTwoCreepUpdateBase::returnMap(); } } -ADReal -BVDeviatoricVolumetricUpdateBase::vresidual(const std::vector & creep_strain_incr, const ADReal & Vcreep_strain_incr) +std::vector +BVDeviatoricVolumetricUpdateBase::vresidual(const std::vector & creep_strain_incr, const std::vector & vcreep_strain_incr) { - return vcreepRate(creep_strain_incr, Vcreep_strain_incr) * _dt - Vcreep_strain_incr; + std::vector res(vcreep_strain_incr.size()); + for (unsigned int i = 0; i < vcreep_strain_incr.size(); ++i) + res[i] = vcreepRate(creep_strain_incr, vcreep_strain_incr) * _dt - vcreep_strain_incr[i]; + return res; } -ADReal -BVDeviatoricVolumetricUpdateBase::vjacobian(const std::vector & creep_strain_incr, const ADReal & Vcreep_strain_incr) +std::vector> +BVDeviatoricVolumetricUpdateBase::vjacobian(const std::vector & creep_strain_incr, const std::vector & vcreep_strain_incr) { - return vcreepRateDerivative(creep_strain_incr,Vcreep_strain_incr) * _dt - 1.0; + std::vector> jac(vcreep_strain_incr.size(), std::vector(vcreep_strain_incr.size())); + + for (unsigned int i = 0; i < vcreep_strain_incr.size(); ++i) + for (unsigned int j = 0; j < vcreep_strain_incr.size(); ++j) + jac[i][j] = vcreepRateDerivative(creep_strain_incr,vcreep_strain_incr) * _dt - ((i == j) ? 1.0 : 0.0); + + return jac; } ADRankTwoTensor -BVDeviatoricVolumetricUpdateBase::dvreformPlasticStrainTensor(const std::vector & creep_strain_incr, const ADReal & Vcreep_strain_incr) +BVDeviatoricVolumetricUpdateBase::reformPlasticStrainTensor(const std::vector & creep_strain_incr) { - if (_dev_vol) + if (_volumetric) { - ADRankTwoTensor res; - ADRankTwoTensor Dres; - ADRankTwoTensor Vres; - res.zero(); - Dres.zero(); - Vres.zero(); - - ADRankTwoTensor flow_dir1 = - (_eqv_stress_tr != 0.0) ? _stress_tr.deviatoric() / _eqv_stress_tr : ADRankTwoTensor(); - - ADRankTwoTensor flow_dir2 = _identity_two; - + ADRankTwoTensor res; + res.zero(); + ADRankTwoTensor flow_dir2 = RankTwoTensor::Identity(); + for (unsigned int i = 0; i < creep_strain_incr.size(); ++i) - Dres += 1.5 * creep_strain_incr[i] * flow_dir1; - - Vres = ((1.0 / std::sqrt(3)) * Vcreep_strain_incr * _dt * flow_dir2); - - res = Dres + Vres; - return res; + res += (1.0 / std::sqrt(3)) * creep_strain_incr[i] * _dt * flow_dir2; + + return res; } - else + else { - return reformPlasticStrainTensor(creep_strain_incr); + return BVTwoCreepUpdateBase::reformPlasticStrainTensor(creep_strain_incr); } } diff --git a/src/materials/BVRTL2020ModelUpdate.C b/src/materials/BVRTL2020ModelUpdate.C index 3d93bb8..99ebf9e 100644 --- a/src/materials/BVRTL2020ModelUpdate.C +++ b/src/materials/BVRTL2020ModelUpdate.C @@ -65,7 +65,10 @@ BVRTL2020ModelUpdate::BVRTL2020ModelUpdate(const InputParameters & parameters) _eqv_creep_strain_L(declareADProperty(_base_name + "eqv_creep_strain_L")), _eqv_creep_strain_L_old(getMaterialPropertyOld(_base_name + "eqv_creep_strain_L")), _eqv_creep_strain_R(declareADProperty(_base_name + "eqv_creep_strain_R")), - _eqv_creep_strain_R_old(getMaterialPropertyOld(_base_name + "eqv_creep_strain_R")) + _eqv_creep_strain_R_old(getMaterialPropertyOld(_base_name + "eqv_creep_strain_R")), + // Internal variable for volumetric creep strain + _v_eqv_creep_strain(declareADProperty(_base_name + "_v_eqv_creep_strain")), + _v_eqv_creep_strain_old(getMaterialPropertyOld(_base_name + "_v_eqv_creep_strain")) { } @@ -74,6 +77,7 @@ BVRTL2020ModelUpdate::initQpStatefulProperties() { _eqv_creep_strain_L[_qp] = 0.0; _eqv_creep_strain_R[_qp] = 0.0; + _v_eqv_creep_strain[_qp] = 0.0; } ADReal @@ -219,11 +223,18 @@ BVRTL2020ModelUpdate::munsondawsonCreepStrain(const std::vector & eqv_st return _eqv_creep_strain_R_old[_qp] + eqv_strain_incr[1]; } +ADReal +BVRTL2020ModelUpdate::volumetricCreepStrain(const std::vector & eqv_strain_incr) +{ + return _v_eqv_creep_strain_old[_qp] + eqv_strain_incr[2]; +} + void BVRTL2020ModelUpdate::preReturnMap() { _eqv_creep_strain_L[_qp] = _eqv_creep_strain_L_old[_qp]; _eqv_creep_strain_R[_qp] = _eqv_creep_strain_R_old[_qp]; + _v_eqv_creep_strain[_qp] = _v_eqv_creep_strain_old[_qp]; } void @@ -231,13 +242,14 @@ BVRTL2020ModelUpdate::postReturnMap(const std::vector & eqv_strain_incr) { _eqv_creep_strain_L[_qp] = lemaitreCreepStrain(eqv_strain_incr); _eqv_creep_strain_R[_qp] = munsondawsonCreepStrain(eqv_strain_incr); + _v_eqv_creep_strain[_qp] = volumetricCreepStrain(eqv_strain_incr); } ADReal BVRTL2020ModelUpdate::vcreepRate(const std::vector & creep_strain_incr, - const ADReal & Vcreep_strain_incr) + const std::vector & vcreep_strain_incr) { - ADReal p = _mean_stress_tr - (_K * Vcreep_strain_incr); + ADReal p = _avg_stress_tr - (_K * vcreep_strain_incr[0]); if (p == 0.0) return 0.0; // No contribution since p is zero @@ -264,9 +276,9 @@ BVRTL2020ModelUpdate::vcreepRate(const std::vector & creep_strain_incr, } ADReal BVRTL2020ModelUpdate::vcreepRateDerivative(const std::vector & creep_strain_incr, - const ADReal & Vcreep_strain_incr) + const std::vector & vcreep_strain_incr) { - ADReal p = _mean_stress_tr - (_K * Vcreep_strain_incr); + ADReal p = _avg_stress_tr - (_K * vcreep_strain_incr[0]); if (p == 0.0) return 0.0; // No contribution since p is zero @@ -275,24 +287,24 @@ ADReal BVRTL2020ModelUpdate::vcreepRateDerivative(const std::vector & cr ADReal denom = std::pow((p / _Mz) > 0.0 ? (p / _mz) : 0.0, _nz) + gamma_vp; // Derivative contributions - ADReal dp_dVcreep_strain_incr = -_K; // derivative of p with respect to Vcreep_strain_incr + ADReal dp_dvcreep_strain_incr = -_K; // derivative of p with respect to vcreep_strain_incr // Computing the derivatives of numerator and denomenator - ADReal dnumer_dVcreep_strain_incr = _nz * std::pow((p / _Nz) > 0.0 ? (p / _Nz) : 0.0, _nz - 1) * (dp_dVcreep_strain_incr / _Nz); - ADReal ddenom_dVcreep_strain_incr = _nz * std::pow((p / _Mz) > 0.0 ? (p / _Mz) : 0.0, _nz - 1) * (dp_dVcreep_strain_incr / _Mz); + ADReal dnumer_dvcreep_strain_incr = _nz * std::pow((p / _Nz) > 0.0 ? (p / _Nz) : 0.0, _nz - 1) * (dp_dvcreep_strain_incr / _Nz); + ADReal ddenom_dvcreep_strain_incr = _nz * std::pow((p / _Mz) > 0.0 ? (p / _Mz) : 0.0, _nz - 1) * (dp_dvcreep_strain_incr / _Mz); // Safeguard situation for denominator if (denom != 0.0) { // Using the quotient rule to differentiate k ADReal k = _z * (numer) / denom; - ADReal dk_dVcreep_strain_incr = _z * (ddenom_dVcreep_strain_incr * numer - dnumer_dVcreep_strain_incr * denom) / (denom * denom); + ADReal dk_dvcreep_strain_incr = _z * (ddenom_dvcreep_strain_incr * numer - dnumer_dvcreep_strain_incr * denom) / (denom * denom); // Initialize res to zero before aggregation ADReal res = 0; for (unsigned int i = 0; i < creep_strain_incr.size(); ++i) { - res += dk_dVcreep_strain_incr * creep_strain_incr[i]; // Use the derivative of k + res += dk_dvcreep_strain_incr * creep_strain_incr[i]; // Use the derivative of k } return res; } diff --git a/test/tests/viscoelasticity/BVRTL2020ModelUpdate.i b/test/tests/viscoelasticity/BVRTL2020ModelUpdate.i index 50499a4..8c06cd7 100644 --- a/test/tests/viscoelasticity/BVRTL2020ModelUpdate.i +++ b/test/tests/viscoelasticity/BVRTL2020ModelUpdate.i @@ -218,8 +218,7 @@ z = 0.4523 #[] [viscoelastic] type = BVRTL2020ModelUpdate - num_cm = 2 - dev_vol = true + volumetric = true alpha = ${alpha} A1 = ${A1} n1 = ${n1} From 86951cf0ae2f0df9ac540830dd663341c734bb57 Mon Sep 17 00:00:00 2001 From: Antoine Jacquey Date: Mon, 10 Feb 2025 21:45:02 -0500 Subject: [PATCH 09/39] Restructured the volumetric update. --- .../BVDeviatoricVolumetricUpdateBase.h | 18 +- include/materials/BVRTL2020ModelUpdate.h | 8 +- include/materials/BVTwoCreepUpdateBase.h | 3 - src/materials/BVCreepUpdateBase.C | 3 +- .../BVDeviatoricVolumetricUpdateBase.C | 170 +++++++----------- src/materials/BVRTL2020ModelUpdate.C | 136 +++++++------- src/materials/BVTwoCreepUpdateBase.C | 24 ++- 7 files changed, 149 insertions(+), 213 deletions(-) diff --git a/include/materials/BVDeviatoricVolumetricUpdateBase.h b/include/materials/BVDeviatoricVolumetricUpdateBase.h index 383cb61..72a3a02 100644 --- a/include/materials/BVDeviatoricVolumetricUpdateBase.h +++ b/include/materials/BVDeviatoricVolumetricUpdateBase.h @@ -20,23 +20,13 @@ class BVDeviatoricVolumetricUpdateBase : public BVTwoCreepUpdateBase public: static InputParameters validParams(); BVDeviatoricVolumetricUpdateBase(const InputParameters & parameters); - virtual void inelasticUpdate(ADRankTwoTensor & stress, const RankFourTensor & Cijkl) override; protected: -// newly added methods virtual std::vector returnMap() override; - virtual std::vector vresidual(const std::vector & creep_strain_incr, - const std::vector & vcreep_strain_incr); - virtual std::vector> vjacobian(const std::vector & creep_strain_incr, - const std::vector & vcreep_strain_incr); - virtual ADReal vcreepRate(const std::vector & creep_strain_incr, - const std::vector & vcreep_strain_incr) = 0; - virtual ADReal vcreepRateDerivative(const std::vector & creep_strain_incr, - const std::vector & vcreep_strain_incr) = 0; + virtual ADReal residualVol(const ADReal & vol_strain_incr); + virtual ADReal jacobianVol(const ADReal & vol_strain_incr); + virtual ADReal creepRateVol(const ADReal & vol_strain_incr); + virtual ADReal creepRateVolDerivative(const ADReal & vol_strain_incr); virtual ADRankTwoTensor reformPlasticStrainTensor(const std::vector & creep_strain_incr) override; - bool _volumetric; -// volumetric creep strain increment - ADMaterialProperty & _vcreep_strain_incr; - }; \ No newline at end of file diff --git a/include/materials/BVRTL2020ModelUpdate.h b/include/materials/BVRTL2020ModelUpdate.h index bdbc3be..0c108ff 100644 --- a/include/materials/BVRTL2020ModelUpdate.h +++ b/include/materials/BVRTL2020ModelUpdate.h @@ -42,10 +42,10 @@ class BVRTL2020ModelUpdate : public BVDeviatoricVolumetricUpdateBase virtual void preReturnMap() override; virtual void postReturnMap(const std::vector & eqv_strain_incr) override; - virtual ADReal vcreepRate(const std::vector & creep_strain_incr, - const std::vector & vcreep_strain_incr) override; - virtual ADReal vcreepRateDerivative(const std::vector & creep_strain_incr, - const std::vector & vcreep_strain_incr) override; + // virtual ADReal vcreepRate(const std::vector & creep_strain_incr, + // const std::vector & vcreep_strain_incr) override; + // virtual ADReal vcreepRateDerivative(const std::vector & creep_strain_incr, + // const std::vector & vcreep_strain_incr) override; // Lemaitre creep strain rate parameters const Real _alpha; diff --git a/include/materials/BVTwoCreepUpdateBase.h b/include/materials/BVTwoCreepUpdateBase.h index cdd7722..eba7a7e 100644 --- a/include/materials/BVTwoCreepUpdateBase.h +++ b/include/materials/BVTwoCreepUpdateBase.h @@ -41,9 +41,6 @@ class BVTwoCreepUpdateBase : public BVInelasticUpdateBase // Name used as a prefix for all material properties related to this creep model const std::string _base_name; - // Number of creep models - const unsigned int _num_cm; - // Creep strain increment ADMaterialProperty & _creep_strain_incr; diff --git a/src/materials/BVCreepUpdateBase.C b/src/materials/BVCreepUpdateBase.C index ad71745..a370a18 100644 --- a/src/materials/BVCreepUpdateBase.C +++ b/src/materials/BVCreepUpdateBase.C @@ -109,8 +109,7 @@ BVCreepUpdateBase::reformPlasticStrainTensor(const ADReal & eqv_strain_incr) ADRankTwoTensor flow_dir = (_eqv_stress_tr != 0.0) ? _stress_tr.deviatoric() / _eqv_stress_tr : ADRankTwoTensor(); - // return 1.5 * creepRate(eqv_strain_incr) * _dt * flow_dir; - return 1.5 * eqv_strain_incr * _dt * flow_dir; + return 1.5 * eqv_strain_incr * flow_dir; } void diff --git a/src/materials/BVDeviatoricVolumetricUpdateBase.C b/src/materials/BVDeviatoricVolumetricUpdateBase.C index 71a0dd3..129d984 100644 --- a/src/materials/BVDeviatoricVolumetricUpdateBase.C +++ b/src/materials/BVDeviatoricVolumetricUpdateBase.C @@ -13,148 +13,102 @@ #include "BVDeviatoricVolumetricUpdateBase.h" #include "BVElasticityTensorTools.h" -#include "RankTwoTensor.h" InputParameters BVDeviatoricVolumetricUpdateBase::validParams() { InputParameters params = BVTwoCreepUpdateBase::validParams(); - params.addClassDescription("Base material for computing multiple creep stress" - "updates with Two flow directions (or rules). This class inherits from BVTwoCreepUpdateBase."); - params.addRequiredParam("volumetric", "Whether to perform deviatoric and volumetric" - "calculations or only deviatoric calculations"); + params.addClassDescription("Base material for computing multiple creep stress" + "updates with Two flow directions (or rules). This class inherits " + "from BVTwoCreepUpdateBase."); + params.addRequiredParam("volumetric", + "Whether to perform deviatoric and volumetric" + "calculations or only deviatoric calculations"); return params; } -BVDeviatoricVolumetricUpdateBase::BVDeviatoricVolumetricUpdateBase(const InputParameters & parameters) +BVDeviatoricVolumetricUpdateBase::BVDeviatoricVolumetricUpdateBase( + const InputParameters & parameters) : BVTwoCreepUpdateBase(parameters), - _volumetric(parameters.get("volumetric")), - _vcreep_strain_incr(declareADProperty(_base_name + "vcreep_strain_increment")) + _volumetric(parameters.get("volumetric")) { } -void -BVDeviatoricVolumetricUpdateBase::inelasticUpdate(ADRankTwoTensor & stress, const RankFourTensor & Cijkl) -{ - if (_volumetric) - { - // Here we do an iterative update with a single variable being the scalar effective stress - // We are trying to find the zero of the function F which is defined as: - // $F\left(\sigma_{e}\right) = \sigma_{e}^{tr} - \sigme_{e} - 3 * \eta * \dot{gamma}$ - // $\dot{\gamma}$: scalar creep strain rate - // $\sigma_{e}$: scalar effective stress - // $\eta$: the viscosity - // flow rule: $\dot{\gamma} = \frac{\sigma_{e}}{3 \eta}$ - - // Trial stress - _stress_tr = stress; - // Trial effective stress - _eqv_stress_tr = std::sqrt(1.5) * _stress_tr.deviatoric().L2norm(); - _avg_stress_tr = -_stress_tr.trace() / 3.0; - // Shear and bulk modulus - _G = BVElasticityTensorTools::getIsotropicShearModulus(Cijkl); - _K = BVElasticityTensorTools::getIsotropicBulkModulus(Cijkl); - - // Initialize creep strain increments - _creep_strain_incr[_qp].zero(); - _vcreep_strain_incr[_qp].zero(); - - // Pre return map calculations (model specific) - preReturnMap(); - - // Viscoelastic update - std::vector creep_strain_incr = BVTwoCreepUpdateBase::returnMap(); - std::vector vcreep_strain_incr = returnMap(); - - // Concatenate the two vectors - std::vector total_creep_strain_inc; - total_creep_strain_inc.reserve(creep_strain_incr.size() + vcreep_strain_incr.size()); // Reserve memory - total_creep_strain_inc.insert(total_creep_strain_inc.end(), creep_strain_incr.begin(), creep_strain_incr.end()); // Add first vector - total_creep_strain_inc.insert(total_creep_strain_inc.end(), vcreep_strain_incr.begin(), vcreep_strain_incr.end()); // Add second vector - - _creep_strain_incr[_qp] = BVTwoCreepUpdateBase::reformPlasticStrainTensor(creep_strain_incr); - _vcreep_strain_incr[_qp] = reformPlasticStrainTensor(vcreep_strain_incr); - stress -= ((2.0 * _G * _creep_strain_incr[_qp]) + (_K * _vcreep_strain_incr[_qp])); - postReturnMap(total_creep_strain_inc); - } - else - { - BVTwoCreepUpdateBase::inelasticUpdate(stress, Cijkl); - } -} - std::vector BVDeviatoricVolumetricUpdateBase::returnMap() -{ +{ + // Deviatoric update + std::vector creep_strain_incr = BVTwoCreepUpdateBase::returnMap(); + + // Volumetric update if (_volumetric) - { - std::vector creep_strain_incr(_num_cm, 0.0); // initialize deviatoric creep strain increment - std::vector vcreep_strain_incr (1.0, 0.0); // initialize volumetric creep strain increment + { + // Initialize volumetric strain incr + ADReal vol_strain_incr = 0.0; - // Initial volumetric residual - std::vector vres_ini = vresidual(creep_strain_incr,vcreep_strain_incr); // initialize volumetric residual - std::vector vres = vres_ini; - std::vector> vjac = vjacobian(creep_strain_incr,vcreep_strain_incr); // initialize volumetric Jacobian + // Initial residual + ADReal res_ini = residualVol(vol_strain_incr); - // Newton loop - for (unsigned int iter = 0; iter < _max_its; ++iter) - { - vcreep_strain_incr[0] -= vres[0] / vjac[0][0]; // Newton-Raphson step + ADReal res = res_ini; + ADReal jac = jacobianVol(vol_strain_incr); - vres = vresidual(creep_strain_incr, vcreep_strain_incr); - vjac = vjacobian(creep_strain_incr, vcreep_strain_incr); + // Newton loop + for (unsigned int iter = 0; iter < _max_its; ++iter) + { + vol_strain_incr -= res / jac; - // Convergence check - if ((norm(vres) <= _abs_tol) || (norm(vres) / norm(vres_ini) <= _rel_tol)) + res = residualVol(vol_strain_incr); + jac = jacobianVol(vol_strain_incr); - return vcreep_strain_incr; // Ensure vcreep_strain_incr is updated correctly + // Convergence check + if ((std::abs(res) <= _abs_tol) || (std::abs(res / res_ini) <= _rel_tol)) + { + creep_strain_incr.push_back(vol_strain_incr); + return creep_strain_incr; } - // If maximum iterations are exceeded without convergence, throw an exception - throw MooseException("BVDeviatoricVolumetricUpdateBase: maximum number of iterations exceeded in the deviatoric-volumetric 'returnMap'!"); } + throw MooseException("BVDeviatoricVolumetricUpdateBase: maximum number of iterations exceeded in volumetric 'returnMap'!"); + } else - { - return BVTwoCreepUpdateBase::returnMap(); - } + { + return creep_strain_incr; + } } -std::vector -BVDeviatoricVolumetricUpdateBase::vresidual(const std::vector & creep_strain_incr, const std::vector & vcreep_strain_incr) +ADReal +BVDeviatoricVolumetricUpdateBase::residualVol(const ADReal & vol_strain_incr) { - std::vector res(vcreep_strain_incr.size()); - for (unsigned int i = 0; i < vcreep_strain_incr.size(); ++i) - res[i] = vcreepRate(creep_strain_incr, vcreep_strain_incr) * _dt - vcreep_strain_incr[i]; - return res; + return creepRateVol(vol_strain_incr) * _dt - vol_strain_incr; } -std::vector> -BVDeviatoricVolumetricUpdateBase::vjacobian(const std::vector & creep_strain_incr, const std::vector & vcreep_strain_incr) +ADReal +BVDeviatoricVolumetricUpdateBase::jacobianVol(const ADReal & vol_strain_incr) { - std::vector> jac(vcreep_strain_incr.size(), std::vector(vcreep_strain_incr.size())); + return creepRateVolDerivative(vol_strain_incr) * _dt - 1.0; +} - for (unsigned int i = 0; i < vcreep_strain_incr.size(); ++i) - for (unsigned int j = 0; j < vcreep_strain_incr.size(); ++j) - jac[i][j] = vcreepRateDerivative(creep_strain_incr,vcreep_strain_incr) * _dt - ((i == j) ? 1.0 : 0.0); +ADReal +BVDeviatoricVolumetricUpdateBase::creepRateVol(const ADReal & vol_strain_incr) +{ + return 0.0; +} - return jac; +ADReal +BVDeviatoricVolumetricUpdateBase::creepRateVolDerivative(const ADReal & vol_strain_incr) +{ + return 0.0; } ADRankTwoTensor -BVDeviatoricVolumetricUpdateBase::reformPlasticStrainTensor(const std::vector & creep_strain_incr) +BVDeviatoricVolumetricUpdateBase::reformPlasticStrainTensor( + const std::vector & creep_strain_incr) { + ADRankTwoTensor res = BVTwoCreepUpdateBase::reformPlasticStrainTensor(creep_strain_incr); + + // Volumetric part if (_volumetric) - { - ADRankTwoTensor res; - res.zero(); - ADRankTwoTensor flow_dir2 = RankTwoTensor::Identity(); - - for (unsigned int i = 0; i < creep_strain_incr.size(); ++i) - res += (1.0 / std::sqrt(3)) * creep_strain_incr[i] * _dt * flow_dir2; - - return res; - } - else - { - return BVTwoCreepUpdateBase::reformPlasticStrainTensor(creep_strain_incr); - } + res.addIa(-creep_strain_incr[2] / 3.0); + + return res; } + diff --git a/src/materials/BVRTL2020ModelUpdate.C b/src/materials/BVRTL2020ModelUpdate.C index 99ebf9e..a841637 100644 --- a/src/materials/BVRTL2020ModelUpdate.C +++ b/src/materials/BVRTL2020ModelUpdate.C @@ -245,72 +245,72 @@ BVRTL2020ModelUpdate::postReturnMap(const std::vector & eqv_strain_incr) _v_eqv_creep_strain[_qp] = volumetricCreepStrain(eqv_strain_incr); } -ADReal -BVRTL2020ModelUpdate::vcreepRate(const std::vector & creep_strain_incr, - const std::vector & vcreep_strain_incr) -{ - ADReal p = _avg_stress_tr - (_K * vcreep_strain_incr[0]); - if (p == 0.0) - return 0.0; // No contribution since p is zero - - // Calculate numerator and denomenator for proportionality constant k - ADReal gamma_vp = 1.0e+06 * (lemaitreCreepStrain(creep_strain_incr) + munsondawsonCreepStrain(creep_strain_incr)); - ADReal numer = std::pow((p / _Nz) > 0.0 ? (p / _Nz) : 0.0, _nz) - gamma_vp; - ADReal denom = std::pow((p / _Mz) > 0.0 ? (p / _mz) : 0.0, _nz) + gamma_vp; - - // Safeguard against division by zero - if (denom != 0.0) - { - ADReal k = _z * (numer) / denom; // proportionality constant - ADReal res = 0.0; // Initialize res to zero before aggregation - for (unsigned int i = 0; i < creep_strain_incr.size(); ++i) - { - res += k * creep_strain_incr[i]; - } - return res; - } - else // Handle the case where denom is zero - { - return 0.0; // No contribution since k is not defined - } -} - -ADReal BVRTL2020ModelUpdate::vcreepRateDerivative(const std::vector & creep_strain_incr, - const std::vector & vcreep_strain_incr) -{ - ADReal p = _avg_stress_tr - (_K * vcreep_strain_incr[0]); - if (p == 0.0) - return 0.0; // No contribution since p is zero - - ADReal gamma_vp = 1.0e+06 * (lemaitreCreepStrain(creep_strain_incr) + munsondawsonCreepStrain(creep_strain_incr)); - ADReal numer = std::pow((p / _Nz) > 0.0 ? (p / _Nz) : 0.0, _nz) - gamma_vp; - ADReal denom = std::pow((p / _Mz) > 0.0 ? (p / _mz) : 0.0, _nz) + gamma_vp; - - // Derivative contributions - ADReal dp_dvcreep_strain_incr = -_K; // derivative of p with respect to vcreep_strain_incr - - // Computing the derivatives of numerator and denomenator - ADReal dnumer_dvcreep_strain_incr = _nz * std::pow((p / _Nz) > 0.0 ? (p / _Nz) : 0.0, _nz - 1) * (dp_dvcreep_strain_incr / _Nz); - ADReal ddenom_dvcreep_strain_incr = _nz * std::pow((p / _Mz) > 0.0 ? (p / _Mz) : 0.0, _nz - 1) * (dp_dvcreep_strain_incr / _Mz); - - // Safeguard situation for denominator - if (denom != 0.0) - { - // Using the quotient rule to differentiate k - ADReal k = _z * (numer) / denom; - ADReal dk_dvcreep_strain_incr = _z * (ddenom_dvcreep_strain_incr * numer - dnumer_dvcreep_strain_incr * denom) / (denom * denom); +// ADReal +// BVRTL2020ModelUpdate::vcreepRate(const std::vector & creep_strain_incr, +// const std::vector & vcreep_strain_incr) +// { +// ADReal p = _avg_stress_tr - (_K * vcreep_strain_incr[0]); +// if (p == 0.0) +// return 0.0; // No contribution since p is zero + +// // Calculate numerator and denomenator for proportionality constant k +// ADReal gamma_vp = 1.0e+06 * (lemaitreCreepStrain(creep_strain_incr) + munsondawsonCreepStrain(creep_strain_incr)); +// ADReal numer = std::pow((p / _Nz) > 0.0 ? (p / _Nz) : 0.0, _nz) - gamma_vp; +// ADReal denom = std::pow((p / _Mz) > 0.0 ? (p / _mz) : 0.0, _nz) + gamma_vp; + +// // Safeguard against division by zero +// if (denom != 0.0) +// { +// ADReal k = _z * (numer) / denom; // proportionality constant +// ADReal res = 0.0; // Initialize res to zero before aggregation +// for (unsigned int i = 0; i < creep_strain_incr.size(); ++i) +// { +// res += k * creep_strain_incr[i]; +// } +// return res; +// } +// else // Handle the case where denom is zero +// { +// return 0.0; // No contribution since k is not defined +// } +// } + +// ADReal BVRTL2020ModelUpdate::vcreepRateDerivative(const std::vector & creep_strain_incr, +// const std::vector & vcreep_strain_incr) +// { +// ADReal p = _avg_stress_tr - (_K * vcreep_strain_incr[0]); +// if (p == 0.0) +// return 0.0; // No contribution since p is zero + +// ADReal gamma_vp = 1.0e+06 * (lemaitreCreepStrain(creep_strain_incr) + munsondawsonCreepStrain(creep_strain_incr)); +// ADReal numer = std::pow((p / _Nz) > 0.0 ? (p / _Nz) : 0.0, _nz) - gamma_vp; +// ADReal denom = std::pow((p / _Mz) > 0.0 ? (p / _mz) : 0.0, _nz) + gamma_vp; + +// // Derivative contributions +// ADReal dp_dvcreep_strain_incr = -_K; // derivative of p with respect to vcreep_strain_incr + +// // Computing the derivatives of numerator and denomenator +// ADReal dnumer_dvcreep_strain_incr = _nz * std::pow((p / _Nz) > 0.0 ? (p / _Nz) : 0.0, _nz - 1) * (dp_dvcreep_strain_incr / _Nz); +// ADReal ddenom_dvcreep_strain_incr = _nz * std::pow((p / _Mz) > 0.0 ? (p / _Mz) : 0.0, _nz - 1) * (dp_dvcreep_strain_incr / _Mz); + +// // Safeguard situation for denominator +// if (denom != 0.0) +// { +// // Using the quotient rule to differentiate k +// ADReal k = _z * (numer) / denom; +// ADReal dk_dvcreep_strain_incr = _z * (ddenom_dvcreep_strain_incr * numer - dnumer_dvcreep_strain_incr * denom) / (denom * denom); - // Initialize res to zero before aggregation - ADReal res = 0; - for (unsigned int i = 0; i < creep_strain_incr.size(); ++i) - { - res += dk_dvcreep_strain_incr * creep_strain_incr[i]; // Use the derivative of k - } - return res; - } - else - { - // If denom is zero, then k is set to a default value (0.0 in this case) - return 0.0; // No contribution since k is not defined - } -} \ No newline at end of file +// // Initialize res to zero before aggregation +// ADReal res = 0; +// for (unsigned int i = 0; i < creep_strain_incr.size(); ++i) +// { +// res += dk_dvcreep_strain_incr * creep_strain_incr[i]; // Use the derivative of k +// } +// return res; +// } +// else +// { +// // If denom is zero, then k is set to a default value (0.0 in this case) +// return 0.0; // No contribution since k is not defined +// } +// } \ No newline at end of file diff --git a/src/materials/BVTwoCreepUpdateBase.C b/src/materials/BVTwoCreepUpdateBase.C index e5691ce..a512a8f 100644 --- a/src/materials/BVTwoCreepUpdateBase.C +++ b/src/materials/BVTwoCreepUpdateBase.C @@ -30,7 +30,6 @@ BVTwoCreepUpdateBase::validParams() BVTwoCreepUpdateBase::BVTwoCreepUpdateBase(const InputParameters & parameters) : BVInelasticUpdateBase(parameters), _base_name(isParamValid("base_name") ? getParam("base_name") + "_" : ""), - _num_cm(2), _creep_strain_incr(declareADProperty(_base_name + "creep_strain_increment")) { } @@ -50,7 +49,7 @@ BVTwoCreepUpdateBase::inelasticUpdate(ADRankTwoTensor & stress, const RankFourTe _stress_tr = stress; // Trial effective stress _eqv_stress_tr = std::sqrt(1.5) * _stress_tr.deviatoric().L2norm(); - _avg_stress_tr = _stress_tr.trace(); + _avg_stress_tr = -_stress_tr.trace() / 3.0; // Shear and bulk modulus _G = BVElasticityTensorTools::getIsotropicShearModulus(Cijkl); _K = BVElasticityTensorTools::getIsotropicBulkModulus(Cijkl); @@ -66,7 +65,7 @@ BVTwoCreepUpdateBase::inelasticUpdate(ADRankTwoTensor & stress, const RankFourTe // Update quantities _creep_strain_incr[_qp] = reformPlasticStrainTensor(creep_strain_incr); - stress -= 2.0 * _G * _creep_strain_incr[_qp]; + stress -= Cijkl * _creep_strain_incr[_qp]; postReturnMap(creep_strain_incr); } @@ -74,7 +73,7 @@ std::vector BVTwoCreepUpdateBase::returnMap() { // Initialize scalar creep strain incr - std::vector creep_strain_incr(_num_cm, 0.0); + std::vector creep_strain_incr(2, 0.0); // Initial residual std::vector res_ini = residual(creep_strain_incr); @@ -103,8 +102,6 @@ BVTwoCreepUpdateBase::nrStep(const std::vector & res, const std::vector> & jac, std::vector & creep_strain_incr) { - std::vector dx(_num_cm, 0.0); - // Check determinant ADReal det = jac[0][0] * jac[1][1] - jac[0][1] * jac[1][0]; @@ -130,8 +127,8 @@ BVTwoCreepUpdateBase::norm(const std::vector & vec) std::vector BVTwoCreepUpdateBase::residual(const std::vector & creep_strain_incr) { - std::vector res(_num_cm); - for (unsigned int i = 0; i < _num_cm; ++i) + std::vector res(2); + for (unsigned int i = 0; i < 2; ++i) res[i] = creepRate(creep_strain_incr, i) * _dt - creep_strain_incr[i]; return res; @@ -140,10 +137,10 @@ BVTwoCreepUpdateBase::residual(const std::vector & creep_strain_incr) std::vector> BVTwoCreepUpdateBase::jacobian(const std::vector & creep_strain_incr) { - std::vector> jac(_num_cm, std::vector(_num_cm)); + std::vector> jac(2, std::vector(2)); - for (unsigned int i = 0; i < _num_cm; ++i) - for (unsigned int j = 0; j < _num_cm; ++j) + for (unsigned int i = 0; i < 2; ++i) + for (unsigned int j = 0; j < 2; ++j) jac[i][j] = creepRateDerivative(creep_strain_incr, i, j) * _dt - ((i == j) ? 1.0 : 0.0); return jac; @@ -152,13 +149,12 @@ BVTwoCreepUpdateBase::jacobian(const std::vector & creep_strain_incr) ADRankTwoTensor BVTwoCreepUpdateBase::reformPlasticStrainTensor(const std::vector & creep_strain_incr) { - ADRankTwoTensor res; - res.zero(); + ADRankTwoTensor res = ADRankTwoTensor(); ADRankTwoTensor flow_dir = (_eqv_stress_tr != 0.0) ? _stress_tr.deviatoric() / _eqv_stress_tr : ADRankTwoTensor(); - for (unsigned int i = 0; i < _num_cm; ++i) + for (unsigned int i = 0; i < 2; ++i) res += 1.5 * creep_strain_incr[i] * flow_dir; return res; From 43d28d5398799f372cada42907ec3b2dc6bdfe20 Mon Sep 17 00:00:00 2001 From: Antoine Jacquey Date: Tue, 11 Feb 2025 12:41:21 -0500 Subject: [PATCH 10/39] Changed naming and regold test --- include/materials/BVRTL2020ModelUpdate.h | 10 +++----- src/materials/BVRTL2020ModelUpdate.C | 24 +++++++++++++----- test/tests/interfaces/constant_friction_2D.i | 4 +-- .../gold/blanco-martin-lemaitre_out.e | Bin 106788 -> 107112 bytes 4 files changed, 24 insertions(+), 14 deletions(-) diff --git a/include/materials/BVRTL2020ModelUpdate.h b/include/materials/BVRTL2020ModelUpdate.h index 0c108ff..8ff3c97 100644 --- a/include/materials/BVRTL2020ModelUpdate.h +++ b/include/materials/BVRTL2020ModelUpdate.h @@ -42,10 +42,8 @@ class BVRTL2020ModelUpdate : public BVDeviatoricVolumetricUpdateBase virtual void preReturnMap() override; virtual void postReturnMap(const std::vector & eqv_strain_incr) override; - // virtual ADReal vcreepRate(const std::vector & creep_strain_incr, - // const std::vector & vcreep_strain_incr) override; - // virtual ADReal vcreepRateDerivative(const std::vector & creep_strain_incr, - // const std::vector & vcreep_strain_incr) override; + virtual ADReal creepRateVol(const ADReal & vol_strain_incr) override; + virtual ADReal creepRateVolDerivative(const ADReal & vol_strain_incr) override; // Lemaitre creep strain rate parameters const Real _alpha; @@ -74,6 +72,6 @@ class BVRTL2020ModelUpdate : public BVDeviatoricVolumetricUpdateBase const MaterialProperty & _eqv_creep_strain_R_old; // Internal variable for volumetric creep strain - ADMaterialProperty & _v_eqv_creep_strain; - const MaterialProperty & _v_eqv_creep_strain_old; + ADMaterialProperty & _vol_creep_strain; + const MaterialProperty & _vol_creep_strain_old; }; diff --git a/src/materials/BVRTL2020ModelUpdate.C b/src/materials/BVRTL2020ModelUpdate.C index a841637..49412c8 100644 --- a/src/materials/BVRTL2020ModelUpdate.C +++ b/src/materials/BVRTL2020ModelUpdate.C @@ -67,8 +67,8 @@ BVRTL2020ModelUpdate::BVRTL2020ModelUpdate(const InputParameters & parameters) _eqv_creep_strain_R(declareADProperty(_base_name + "eqv_creep_strain_R")), _eqv_creep_strain_R_old(getMaterialPropertyOld(_base_name + "eqv_creep_strain_R")), // Internal variable for volumetric creep strain - _v_eqv_creep_strain(declareADProperty(_base_name + "_v_eqv_creep_strain")), - _v_eqv_creep_strain_old(getMaterialPropertyOld(_base_name + "_v_eqv_creep_strain")) + _vol_creep_strain(declareADProperty(_base_name + "_vol_creep_strain")), + _vol_creep_strain_old(getMaterialPropertyOld(_base_name + "_vol_creep_strain")) { } @@ -77,7 +77,7 @@ BVRTL2020ModelUpdate::initQpStatefulProperties() { _eqv_creep_strain_L[_qp] = 0.0; _eqv_creep_strain_R[_qp] = 0.0; - _v_eqv_creep_strain[_qp] = 0.0; + _vol_creep_strain[_qp] = 0.0; } ADReal @@ -226,7 +226,7 @@ BVRTL2020ModelUpdate::munsondawsonCreepStrain(const std::vector & eqv_st ADReal BVRTL2020ModelUpdate::volumetricCreepStrain(const std::vector & eqv_strain_incr) { - return _v_eqv_creep_strain_old[_qp] + eqv_strain_incr[2]; + return _vol_creep_strain_old[_qp] + eqv_strain_incr[2]; } void @@ -234,7 +234,7 @@ BVRTL2020ModelUpdate::preReturnMap() { _eqv_creep_strain_L[_qp] = _eqv_creep_strain_L_old[_qp]; _eqv_creep_strain_R[_qp] = _eqv_creep_strain_R_old[_qp]; - _v_eqv_creep_strain[_qp] = _v_eqv_creep_strain_old[_qp]; + _vol_creep_strain[_qp] = _vol_creep_strain_old[_qp]; } void @@ -242,7 +242,19 @@ BVRTL2020ModelUpdate::postReturnMap(const std::vector & eqv_strain_incr) { _eqv_creep_strain_L[_qp] = lemaitreCreepStrain(eqv_strain_incr); _eqv_creep_strain_R[_qp] = munsondawsonCreepStrain(eqv_strain_incr); - _v_eqv_creep_strain[_qp] = volumetricCreepStrain(eqv_strain_incr); + _vol_creep_strain[_qp] = volumetricCreepStrain(eqv_strain_incr); +} + +ADReal +BVRTL2020ModelUpdate::creepRateVol(const ADReal & vol_strain_incr) +{ + return 0.0; +} + +ADReal +BVRTL2020ModelUpdate::creepRateVolDerivative(const ADReal & vol_strain_incr) +{ + return 0.0; } // ADReal diff --git a/test/tests/interfaces/constant_friction_2D.i b/test/tests/interfaces/constant_friction_2D.i index da1a606..ecf9389 100644 --- a/test/tests/interfaces/constant_friction_2D.i +++ b/test/tests/interfaces/constant_friction_2D.i @@ -123,8 +123,8 @@ [Periodic] [left_right] auto_direction = x - primary = 'left' - secondary = 'right' + # primary = 'left' + # secondary = 'right' variable = 'disp_x disp_y' [] [] diff --git a/test/tests/viscoelasticity/gold/blanco-martin-lemaitre_out.e b/test/tests/viscoelasticity/gold/blanco-martin-lemaitre_out.e index 922e286d76106a759c1f42b2933351b4bd765939..ad494982f1c66b323d94ca626ca009cb21d9b7f4 100644 GIT binary patch delta 10439 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 z z<_If_!uGzHD^#Ms&Io3O6k+49-++_@H91wl!h2SqvH1av>Yn_L+N}WkGBiPF9DdvL zeeONR5Nh`c&C*rDtz7E_SRcO3@BWXKU9-k+HManL*GzKI(cc>x;yALhYc^P4xCwP& zJ1nrBu#&6s2U|U~lB=OTl6;L+BZ=aNJ6S#;ItSGgKX5^%)pusQpwe{2%)&vW{NfE~ zF;X^cVN1p++(L$TR=&WfXWjOK=}yqM#X{`Fa5<_9U!sv8Ludr>H7bPQRzjaEVvDc2 z!^ot7esZ^IZk{8g<-LIcAu>)7?(JcR%LWIfPzSEIB$~1u+}n4(aM%ODT5%_V1Fl#<{=((=g9^~2ByDM(@Oq6}{&ZmZ zPo_zsqC`o?w%G`x4pJST(bfaqDh-Ck#bzEeKK`pCi@(Dctp5%AyeE?bdcMtsSkD#2T~}+W$v8n|CEr$M)zxc|)&(as_7hgR zdqP^NU+7)kJ+$lo45m@gN_S7eX1B|TB^3i(2rKzEZ&yUa>nh(`H&8VdDSK^rm5tg{ zmdO;1;vQb*9#?`KGLF1=;NDuYo=yXQs1(!jUa zi|kSIy113HGe!(y<)Wu|3dLhC++mSav>j;EDFgHgTceWb(KaAV0KiYT%(k6Fh zdi~<0zjC^=SzB_`Aq56l-;$k4qPXg@Z7ztKKTKPR^FLu*xmNTBQrfDSt&fyl!n{RM z`)A^N1&s2L@9A6y8%BL|l+R3~9emT)tnhe1$0vQo<2yrGSG%H)Eek*Y#|$oEgZLY- zGBPP(h{qY2`ge|PF&Ns>0ianJi~N!NHvlu z9y#1Fi5T-|=rLr)7%5%4QCbTrJL^Du0=ZW9p6)DC&KG7e!YD5jg6K&XF=|WJ7=L;q z=xyK6;$(_Hb$Ji&N?{0FTznL%AspkC1kb-;NwK2_V5s|v1_>9Ec}b%9M2)a5r0=EJ zLG;vzxAIrHakoZ2HN-O}S*~Pfk|-XRVEY3xQDj(X@%%$2n(3$sQsS+?KL_cr%3rV> zwJTm!hGLYSGRdqA1B}|oV7P0>fZot7i-ZsS`1xNyC(jT*Ogr=A?i_yp?RHsW!(_Te z0)~~{x`$8wA#H;K)t3DCQ3^W$R(4L8Ue!U`jOp8(AuE5-zpA^+L@8`WRGct1Vj4w3 zaZ8OCf{1(5|D@fpm9an>7CH}HK|=nVJG+r^qP3v{imMsM#$YV$Uao(AZpNrnu}9Pz hAAnvpVIH3Jc;tj<)^-^~*yGO?IXdTXCkLfp{U7znJ1zhK From 27b31ff0c1e0c52eb735e68f3c996073c56f4294 Mon Sep 17 00:00:00 2001 From: iyevugah Date: Tue, 11 Feb 2025 13:39:12 -0500 Subject: [PATCH 11/39] commented updates of creepRateVol and the derivative --- src/materials/BVRTL2020ModelUpdate.C | 135 +++++++++++++-------------- 1 file changed, 66 insertions(+), 69 deletions(-) diff --git a/src/materials/BVRTL2020ModelUpdate.C b/src/materials/BVRTL2020ModelUpdate.C index 49412c8..b08ccb2 100644 --- a/src/materials/BVRTL2020ModelUpdate.C +++ b/src/materials/BVRTL2020ModelUpdate.C @@ -249,80 +249,77 @@ ADReal BVRTL2020ModelUpdate::creepRateVol(const ADReal & vol_strain_incr) { return 0.0; + + // // initialize the deviatoric creep strain + // std::vector creep_strain_incr = BVTwoCreepUpdateBase::returnMap(); + + // ADReal p = _avg_stress_tr - (_K * vol_strain_incr); + // if (p == 0.0) + // return 0.0; // No contribution since p is zero +// +// // Calculate numerator and denomenator for proportionality constant k +// ADReal gamma_vp = 1.0e+06 * (lemaitreCreepStrain(creep_strain_incr) + munsondawsonCreepStrain(creep_strain_incr)); +// ADReal numer = std::pow((p / _Nz) > 0.0 ? (p / _Nz) : 0.0, _nz) - gamma_vp; +// ADReal denom = std::pow((p / _Mz) > 0.0 ? (p / _mz) : 0.0, _nz) + gamma_vp; +// +// // Safeguard against division by zero +// if (denom != 0.0) +// { +// ADReal k = _z * (numer) / denom; // proportionality constant +// ADReal res = 0.0; // Initialize res to zero before aggregation + // for (unsigned int i = 0; i < creep_strain_incr.size(); ++i) + // { + // res += k * creep_strain_incr[i]; + // } + // return res; + // } + // else // Handle the case where denom is zero + // { + // return 0.0; // No contribution since k is not defined + // } } ADReal BVRTL2020ModelUpdate::creepRateVolDerivative(const ADReal & vol_strain_incr) { return 0.0; -} -// ADReal -// BVRTL2020ModelUpdate::vcreepRate(const std::vector & creep_strain_incr, -// const std::vector & vcreep_strain_incr) -// { -// ADReal p = _avg_stress_tr - (_K * vcreep_strain_incr[0]); -// if (p == 0.0) -// return 0.0; // No contribution since p is zero - -// // Calculate numerator and denomenator for proportionality constant k -// ADReal gamma_vp = 1.0e+06 * (lemaitreCreepStrain(creep_strain_incr) + munsondawsonCreepStrain(creep_strain_incr)); -// ADReal numer = std::pow((p / _Nz) > 0.0 ? (p / _Nz) : 0.0, _nz) - gamma_vp; -// ADReal denom = std::pow((p / _Mz) > 0.0 ? (p / _mz) : 0.0, _nz) + gamma_vp; - -// // Safeguard against division by zero -// if (denom != 0.0) -// { -// ADReal k = _z * (numer) / denom; // proportionality constant -// ADReal res = 0.0; // Initialize res to zero before aggregation -// for (unsigned int i = 0; i < creep_strain_incr.size(); ++i) -// { -// res += k * creep_strain_incr[i]; -// } -// return res; -// } -// else // Handle the case where denom is zero -// { -// return 0.0; // No contribution since k is not defined -// } +// // initialize the deviatoric creep strain +// std::vector creep_strain_incr = BVTwoCreepUpdateBase::returnMap(); + +// ADReal p = _avg_stress_tr - (_K * vol_strain_incr); +// if (p == 0.0) +// return 0.0; // No contribution since p is zero + +// ADReal gamma_vp = 1.0e+06 * (lemaitreCreepStrain(creep_strain_incr) + munsondawsonCreepStrain(creep_strain_incr)); +// ADReal numer = std::pow((p / _Nz) > 0.0 ? (p / _Nz) : 0.0, _nz) - gamma_vp; +// ADReal denom = std::pow((p / _Mz) > 0.0 ? (p / _mz) : 0.0, _nz) + gamma_vp; + + // Derivative contributions +// ADReal dp_dvol_strain_incr = -_K; // derivative of p with respect to vol_strain_incr + + // Computing the derivatives of numerator and denomenator + //ADReal dnumer_dvol_strain_incr = _nz * std::pow((p / _Nz) > 0.0 ? (p / _Nz) : 0.0, _nz - 1) * (dp_dvol_strain_incr / _Nz); + //ADReal ddenom_dvol_strain_incr = _nz * std::pow((p / _Mz) > 0.0 ? (p / _Mz) : 0.0, _nz - 1) * (dp_dvol_strain_incr / _Mz); + + // Safeguard situation for denominator + //if (denom != 0.0) + //{ + // // Using the quotient rule to differentiate k + // ADReal k = _z * (numer) / denom; + // ADReal dk_dvol_strain_incr = _z * (ddenom_dvol_strain_incr * numer - dnumer_dvol_strain_incr * denom) / (denom * denom); + + // Initialize res to zero before aggregation + // ADReal res = 0; +// for (unsigned int i = 0; i < creep_strain_incr.size(); ++i) + // { + // res += dk_dvol_strain_incr * creep_strain_incr[i]; // Use the derivative of k + // } + // return res; + //} + //else + //{ + // // If denom is zero, then k is set to a default value (0.0 in this case) + // return 0.0; // No contribution since k is not defined // } - -// ADReal BVRTL2020ModelUpdate::vcreepRateDerivative(const std::vector & creep_strain_incr, -// const std::vector & vcreep_strain_incr) -// { -// ADReal p = _avg_stress_tr - (_K * vcreep_strain_incr[0]); -// if (p == 0.0) -// return 0.0; // No contribution since p is zero - -// ADReal gamma_vp = 1.0e+06 * (lemaitreCreepStrain(creep_strain_incr) + munsondawsonCreepStrain(creep_strain_incr)); -// ADReal numer = std::pow((p / _Nz) > 0.0 ? (p / _Nz) : 0.0, _nz) - gamma_vp; -// ADReal denom = std::pow((p / _Mz) > 0.0 ? (p / _mz) : 0.0, _nz) + gamma_vp; - -// // Derivative contributions -// ADReal dp_dvcreep_strain_incr = -_K; // derivative of p with respect to vcreep_strain_incr - -// // Computing the derivatives of numerator and denomenator -// ADReal dnumer_dvcreep_strain_incr = _nz * std::pow((p / _Nz) > 0.0 ? (p / _Nz) : 0.0, _nz - 1) * (dp_dvcreep_strain_incr / _Nz); -// ADReal ddenom_dvcreep_strain_incr = _nz * std::pow((p / _Mz) > 0.0 ? (p / _Mz) : 0.0, _nz - 1) * (dp_dvcreep_strain_incr / _Mz); - -// // Safeguard situation for denominator -// if (denom != 0.0) -// { -// // Using the quotient rule to differentiate k -// ADReal k = _z * (numer) / denom; -// ADReal dk_dvcreep_strain_incr = _z * (ddenom_dvcreep_strain_incr * numer - dnumer_dvcreep_strain_incr * denom) / (denom * denom); - -// // Initialize res to zero before aggregation -// ADReal res = 0; -// for (unsigned int i = 0; i < creep_strain_incr.size(); ++i) -// { -// res += dk_dvcreep_strain_incr * creep_strain_incr[i]; // Use the derivative of k -// } -// return res; -// } -// else -// { -// // If denom is zero, then k is set to a default value (0.0 in this case) -// return 0.0; // No contribution since k is not defined -// } -// } \ No newline at end of file +} From 317967e2c5d60e81315bd4410c6fb613a2c93633 Mon Sep 17 00:00:00 2001 From: Antoine Jacquey Date: Tue, 11 Feb 2025 13:42:25 -0500 Subject: [PATCH 12/39] Rename variables and added function --- .../BVDeviatoricVolumetricUpdateBase.h | 2 + include/materials/BVRTL2020ModelUpdate.h | 30 +++--- .../BVDeviatoricVolumetricUpdateBase.C | 8 ++ src/materials/BVRTL2020ModelUpdate.C | 98 ++++++++++--------- 4 files changed, 80 insertions(+), 58 deletions(-) diff --git a/include/materials/BVDeviatoricVolumetricUpdateBase.h b/include/materials/BVDeviatoricVolumetricUpdateBase.h index 72a3a02..b231501 100644 --- a/include/materials/BVDeviatoricVolumetricUpdateBase.h +++ b/include/materials/BVDeviatoricVolumetricUpdateBase.h @@ -23,10 +23,12 @@ class BVDeviatoricVolumetricUpdateBase : public BVTwoCreepUpdateBase protected: virtual std::vector returnMap() override; + virtual void preReturnMapVol(const std::vector & creep_strain_incr); virtual ADReal residualVol(const ADReal & vol_strain_incr); virtual ADReal jacobianVol(const ADReal & vol_strain_incr); virtual ADReal creepRateVol(const ADReal & vol_strain_incr); virtual ADReal creepRateVolDerivative(const ADReal & vol_strain_incr); virtual ADRankTwoTensor reformPlasticStrainTensor(const std::vector & creep_strain_incr) override; + bool _volumetric; }; \ No newline at end of file diff --git a/include/materials/BVRTL2020ModelUpdate.h b/include/materials/BVRTL2020ModelUpdate.h index 8ff3c97..4903f4e 100644 --- a/include/materials/BVRTL2020ModelUpdate.h +++ b/include/materials/BVRTL2020ModelUpdate.h @@ -23,25 +23,25 @@ class BVRTL2020ModelUpdate : public BVDeviatoricVolumetricUpdateBase protected: virtual void initQpStatefulProperties() override; - virtual ADReal creepRate(const std::vector & eqv_strain_incr, + virtual ADReal creepRate(const std::vector & creep_strain_incr, const unsigned int i) override; - virtual ADReal creepRateR(const std::vector & eqv_strain_incr); - virtual ADReal creepRateLemaitre(const std::vector & eqv_strain_incr); - virtual ADReal creepRateMunsonDawson(const std::vector & eqv_strain_incr); - virtual ADReal creepRateDerivative(const std::vector & eqv_strain_incr, + virtual ADReal creepRateR(const std::vector & creep_strain_incr); + virtual ADReal creepRateLemaitre(const std::vector & creep_strain_incr); + virtual ADReal creepRateMunsonDawson(const std::vector & creep_strain_incr); + virtual ADReal creepRateDerivative(const std::vector & creep_strain_incr, const unsigned int i, const unsigned int j) override; - virtual ADReal creepRateRDerivative(const std::vector & eqv_strain_incr); - virtual ADReal creepRateLemaitreDerivative(const std::vector & eqv_strain_incr, + virtual ADReal creepRateRDerivative(const std::vector & creep_strain_incr); + virtual ADReal creepRateLemaitreDerivative(const std::vector & creep_strain_incr, const unsigned int /*j*/); - virtual ADReal creepRateMunsonDawsonDerivative(const std::vector & eqv_strain_incr, + virtual ADReal creepRateMunsonDawsonDerivative(const std::vector & creep_strain_incr, const unsigned int j); - virtual ADReal lemaitreCreepStrain(const std::vector & eqv_strain_incr); - virtual ADReal munsondawsonCreepStrain(const std::vector & eqv_strain_incr); - virtual ADReal volumetricCreepStrain(const std::vector & v_eqv_strain_incr); + virtual ADReal lemaitreCreepStrain(const std::vector & creep_strain_incr); + virtual ADReal munsondawsonCreepStrain(const std::vector & creep_strain_incr); + virtual ADReal volumetricCreepStrain(const std::vector & v_creep_strain_incr); virtual void preReturnMap() override; - virtual void postReturnMap(const std::vector & eqv_strain_incr) override; - + virtual void postReturnMap(const std::vector & creep_strain_incr) override; + virtual void preReturnMapVol(const std::vector & creep_strain_incr) override; virtual ADReal creepRateVol(const ADReal & vol_strain_incr) override; virtual ADReal creepRateVolDerivative(const ADReal & vol_strain_incr) override; @@ -74,4 +74,8 @@ class BVRTL2020ModelUpdate : public BVDeviatoricVolumetricUpdateBase // Internal variable for volumetric creep strain ADMaterialProperty & _vol_creep_strain; const MaterialProperty & _vol_creep_strain_old; + + // Scalar equivalent creep strain + ADReal _gamma_vp; + ADReal _gamma_incr_vp; }; diff --git a/src/materials/BVDeviatoricVolumetricUpdateBase.C b/src/materials/BVDeviatoricVolumetricUpdateBase.C index 129d984..cad99f0 100644 --- a/src/materials/BVDeviatoricVolumetricUpdateBase.C +++ b/src/materials/BVDeviatoricVolumetricUpdateBase.C @@ -43,6 +43,8 @@ BVDeviatoricVolumetricUpdateBase::returnMap() // Volumetric update if (_volumetric) { + preReturnMapVol(creep_strain_incr); + // Initialize volumetric strain incr ADReal vol_strain_incr = 0.0; @@ -75,6 +77,12 @@ BVDeviatoricVolumetricUpdateBase::returnMap() } } +void +BVDeviatoricVolumetricUpdateBase::preReturnMapVol(const std::vector & creep_strain_incr) +{ + +} + ADReal BVDeviatoricVolumetricUpdateBase::residualVol(const ADReal & vol_strain_incr) { diff --git a/src/materials/BVRTL2020ModelUpdate.C b/src/materials/BVRTL2020ModelUpdate.C index 49412c8..cbf52d1 100644 --- a/src/materials/BVRTL2020ModelUpdate.C +++ b/src/materials/BVRTL2020ModelUpdate.C @@ -81,20 +81,20 @@ BVRTL2020ModelUpdate::initQpStatefulProperties() } ADReal -BVRTL2020ModelUpdate::creepRate(const std::vector & eqv_strain_incr, const unsigned int i) +BVRTL2020ModelUpdate::creepRate(const std::vector & creep_strain_incr, const unsigned int i) { if (i == 0) // Lemaitre - return creepRateLemaitre(eqv_strain_incr); + return creepRateLemaitre(creep_strain_incr); else if (i == 1) // Munson-Dawson - return creepRateMunsonDawson(eqv_strain_incr); + return creepRateMunsonDawson(creep_strain_incr); else throw MooseException("BVRTL2020ModelUpdate: error, unknow creep model called in `creepRate`!"); } ADReal -BVRTL2020ModelUpdate::creepRateR(const std::vector & eqv_strain_incr) +BVRTL2020ModelUpdate::creepRateR(const std::vector & creep_strain_incr) { - ADReal q = _eqv_stress_tr - 3.0 * _G * (eqv_strain_incr[0] + eqv_strain_incr[1]); + ADReal q = _eqv_stress_tr - 3.0 * _G * (creep_strain_incr[0] + creep_strain_incr[1]); if (q == 0.0) return 0.0; @@ -103,50 +103,50 @@ BVRTL2020ModelUpdate::creepRateR(const std::vector & eqv_strain_incr) } ADReal -BVRTL2020ModelUpdate::creepRateLemaitre(const std::vector & eqv_strain_incr) +BVRTL2020ModelUpdate::creepRateLemaitre(const std::vector & creep_strain_incr) { - ADReal gamma_l = 1.0e+06 * lemaitreCreepStrain(eqv_strain_incr); + ADReal gamma_l = 1.0e+06 * lemaitreCreepStrain(creep_strain_incr); if (gamma_l == 0.0) - return _alpha * creepRateR(eqv_strain_incr); + return _alpha * creepRateR(creep_strain_incr); else - return _alpha * creepRateR(eqv_strain_incr) * std::pow(gamma_l, 1.0 - 1.0 / _alpha); + return _alpha * creepRateR(creep_strain_incr) * std::pow(gamma_l, 1.0 - 1.0 / _alpha); } ADReal -BVRTL2020ModelUpdate::creepRateMunsonDawson(const std::vector & eqv_strain_incr) +BVRTL2020ModelUpdate::creepRateMunsonDawson(const std::vector & creep_strain_incr) { - ADReal q = _eqv_stress_tr - 3.0 * _G * (eqv_strain_incr[0] + eqv_strain_incr[1]); + ADReal q = _eqv_stress_tr - 3.0 * _G * (creep_strain_incr[0] + creep_strain_incr[1]); ADReal saturation_strain = (q != 0.0) ? std::pow(q / _A1, _n1) : 1.0e+06; - ADReal gamma_ms = 1.0e+06 * munsondawsonCreepStrain(eqv_strain_incr); + ADReal gamma_ms = 1.0e+06 * munsondawsonCreepStrain(creep_strain_incr); if (gamma_ms < saturation_strain) return _A * std::pow(1.0 - gamma_ms / saturation_strain, _n) * - creepRateR(eqv_strain_incr); + creepRateR(creep_strain_incr); else return -_B * std::pow(gamma_ms / saturation_strain - 1.0, _m) * - creepRateR(eqv_strain_incr); + creepRateR(creep_strain_incr); } ADReal -BVRTL2020ModelUpdate::creepRateDerivative(const std::vector & eqv_strain_incr, +BVRTL2020ModelUpdate::creepRateDerivative(const std::vector & creep_strain_incr, const unsigned int i, const unsigned int j) { if (i == 0) // Lemaitre - return creepRateLemaitreDerivative(eqv_strain_incr, j); + return creepRateLemaitreDerivative(creep_strain_incr, j); else if (i == 1) // Munson-Dawson - return creepRateMunsonDawsonDerivative(eqv_strain_incr, j); + return creepRateMunsonDawsonDerivative(creep_strain_incr, j); else throw MooseException( "BVRTL2020ModelUpdate: error, unknow creep model called in `creepRateDerivative`!"); } ADReal -BVRTL2020ModelUpdate::creepRateRDerivative(const std::vector & eqv_strain_incr) +BVRTL2020ModelUpdate::creepRateRDerivative(const std::vector & creep_strain_incr) { - ADReal q = _eqv_stress_tr - 3.0 * _G * (eqv_strain_incr[0] + eqv_strain_incr[1]); + ADReal q = _eqv_stress_tr - 3.0 * _G * (creep_strain_incr[0] + creep_strain_incr[1]); if (q == 0.0) return 1.0; @@ -155,24 +155,24 @@ BVRTL2020ModelUpdate::creepRateRDerivative(const std::vector & eqv_strai } ADReal -BVRTL2020ModelUpdate::creepRateLemaitreDerivative(const std::vector & eqv_strain_incr, +BVRTL2020ModelUpdate::creepRateLemaitreDerivative(const std::vector & creep_strain_incr, const unsigned int j) { - ADReal gamma_l = 1.0e+06 * lemaitreCreepStrain(eqv_strain_incr); + ADReal gamma_l = 1.0e+06 * lemaitreCreepStrain(creep_strain_incr); if (j == 0) // Lemaitre wrt Lemaitre if (gamma_l == 0.0) - return _alpha * creepRateRDerivative(eqv_strain_incr); + return _alpha * creepRateRDerivative(creep_strain_incr); else return std::pow(gamma_l, -1.0 / _alpha) * - (_alpha * gamma_l * creepRateRDerivative(eqv_strain_incr) + - 1.0e+06 * (_alpha - 1.0) * creepRateR(eqv_strain_incr)); + (_alpha * gamma_l * creepRateRDerivative(creep_strain_incr) + + 1.0e+06 * (_alpha - 1.0) * creepRateR(creep_strain_incr)); else if (j == 1) // Lemaitre wrt Munson-Dawson if (gamma_l == 0.0) - return _alpha * creepRateRDerivative(eqv_strain_incr); + return _alpha * creepRateRDerivative(creep_strain_incr); else - return _alpha * creepRateRDerivative(eqv_strain_incr) * std::pow(gamma_l, 1.0 - 1.0 / _alpha); + return _alpha * creepRateRDerivative(creep_strain_incr) * std::pow(gamma_l, 1.0 - 1.0 / _alpha); else throw MooseException( @@ -180,31 +180,31 @@ BVRTL2020ModelUpdate::creepRateLemaitreDerivative(const std::vector & eq } ADReal -BVRTL2020ModelUpdate::creepRateMunsonDawsonDerivative(const std::vector & eqv_strain_incr, +BVRTL2020ModelUpdate::creepRateMunsonDawsonDerivative(const std::vector & creep_strain_incr, const unsigned int j) { - ADReal q = _eqv_stress_tr - 3.0 * _G * (eqv_strain_incr[0] + eqv_strain_incr[1]); + ADReal q = _eqv_stress_tr - 3.0 * _G * (creep_strain_incr[0] + creep_strain_incr[1]); ADReal saturation_strain = (q != 0.0) ? std::pow(q / _A1, _n1) : 1.0e+06; - ADReal gamma_ms = 1.0e+06 * munsondawsonCreepStrain(eqv_strain_incr); + ADReal gamma_ms = 1.0e+06 * munsondawsonCreepStrain(creep_strain_incr); if (j == 0) // Munson-Dawson wrt Lemaitre if (gamma_ms < saturation_strain) return _A * std::pow(1.0 - gamma_ms / saturation_strain, _n) * - creepRateRDerivative(eqv_strain_incr); + creepRateRDerivative(creep_strain_incr); else return -_B * std::pow(gamma_ms / saturation_strain - 1.0, _m) * - creepRateRDerivative(eqv_strain_incr); + creepRateRDerivative(creep_strain_incr); else if (j == 1) // Munson-Dawson wrt Munson-Dawson if (gamma_ms < saturation_strain) return _A * std::pow(1.0 - gamma_ms / saturation_strain, _n - 1.0) * - ((1.0 - gamma_ms / saturation_strain) * creepRateRDerivative(eqv_strain_incr) - - 1.0e+06 * _n / saturation_strain * creepRateR(eqv_strain_incr)); + ((1.0 - gamma_ms / saturation_strain) * creepRateRDerivative(creep_strain_incr) - + 1.0e+06 * _n / saturation_strain * creepRateR(creep_strain_incr)); else return -_B * std::pow(gamma_ms / saturation_strain - 1.0, _m - 1.0) * - ((gamma_ms / saturation_strain - 1.0) * creepRateRDerivative(eqv_strain_incr) + - 1.0e+06 * _m / saturation_strain * creepRateR(eqv_strain_incr)); + ((gamma_ms / saturation_strain - 1.0) * creepRateRDerivative(creep_strain_incr) + + 1.0e+06 * _m / saturation_strain * creepRateR(creep_strain_incr)); else throw MooseException( @@ -212,21 +212,21 @@ BVRTL2020ModelUpdate::creepRateMunsonDawsonDerivative(const std::vector } ADReal -BVRTL2020ModelUpdate::lemaitreCreepStrain(const std::vector & eqv_strain_incr) +BVRTL2020ModelUpdate::lemaitreCreepStrain(const std::vector & creep_strain_incr) { - return _eqv_creep_strain_L_old[_qp] + eqv_strain_incr[0]; + return _eqv_creep_strain_L_old[_qp] + creep_strain_incr[0]; } ADReal -BVRTL2020ModelUpdate::munsondawsonCreepStrain(const std::vector & eqv_strain_incr) +BVRTL2020ModelUpdate::munsondawsonCreepStrain(const std::vector & creep_strain_incr) { - return _eqv_creep_strain_R_old[_qp] + eqv_strain_incr[1]; + return _eqv_creep_strain_R_old[_qp] + creep_strain_incr[1]; } ADReal -BVRTL2020ModelUpdate::volumetricCreepStrain(const std::vector & eqv_strain_incr) +BVRTL2020ModelUpdate::volumetricCreepStrain(const std::vector & creep_strain_incr) { - return _vol_creep_strain_old[_qp] + eqv_strain_incr[2]; + return _vol_creep_strain_old[_qp] + creep_strain_incr[2]; } void @@ -238,11 +238,19 @@ BVRTL2020ModelUpdate::preReturnMap() } void -BVRTL2020ModelUpdate::postReturnMap(const std::vector & eqv_strain_incr) +BVRTL2020ModelUpdate::postReturnMap(const std::vector & creep_strain_incr) { - _eqv_creep_strain_L[_qp] = lemaitreCreepStrain(eqv_strain_incr); - _eqv_creep_strain_R[_qp] = munsondawsonCreepStrain(eqv_strain_incr); - _vol_creep_strain[_qp] = volumetricCreepStrain(eqv_strain_incr); + _eqv_creep_strain_L[_qp] = lemaitreCreepStrain(creep_strain_incr); + _eqv_creep_strain_R[_qp] = munsondawsonCreepStrain(creep_strain_incr); + _vol_creep_strain[_qp] = volumetricCreepStrain(creep_strain_incr); +} + +void +BVRTL2020ModelUpdate::preReturnMapVol(const std::vector & creep_strain_incr) +{ + // Save some information from the deviatoric update + _gamma_vp = _eqv_creep_strain_L[_qp] + _eqv_creep_strain_R[_qp]; + _gamma_incr_vp = creep_strain_incr[0] + creep_strain_incr[1]; } ADReal From 26a5ec8a3e57c4be1b1a7546afa26299782454d2 Mon Sep 17 00:00:00 2001 From: Antoine Jacquey Date: Tue, 11 Feb 2025 15:28:27 -0500 Subject: [PATCH 13/39] Implemented volumetric correction. To verify with test. --- include/materials/BVRTL2020ModelUpdate.h | 6 +- .../BVDeviatoricVolumetricUpdateBase.C | 15 +- src/materials/BVRTL2020ModelUpdate.C | 191 ++++++++++-------- 3 files changed, 114 insertions(+), 98 deletions(-) diff --git a/include/materials/BVRTL2020ModelUpdate.h b/include/materials/BVRTL2020ModelUpdate.h index 4903f4e..22420ef 100644 --- a/include/materials/BVRTL2020ModelUpdate.h +++ b/include/materials/BVRTL2020ModelUpdate.h @@ -56,8 +56,8 @@ class BVRTL2020ModelUpdate : public BVDeviatoricVolumetricUpdateBase const Real _A; const Real _B; const Real _m; - const Real _n; - + const Real _n; + // Volumetric creep strain rate parameters const Real _z; const Real _Nz; @@ -77,5 +77,5 @@ class BVRTL2020ModelUpdate : public BVDeviatoricVolumetricUpdateBase // Scalar equivalent creep strain ADReal _gamma_vp; - ADReal _gamma_incr_vp; + ADReal _gamma_dot_vp; }; diff --git a/src/materials/BVDeviatoricVolumetricUpdateBase.C b/src/materials/BVDeviatoricVolumetricUpdateBase.C index cad99f0..169ee6b 100644 --- a/src/materials/BVDeviatoricVolumetricUpdateBase.C +++ b/src/materials/BVDeviatoricVolumetricUpdateBase.C @@ -21,16 +21,13 @@ BVDeviatoricVolumetricUpdateBase::validParams() params.addClassDescription("Base material for computing multiple creep stress" "updates with Two flow directions (or rules). This class inherits " "from BVTwoCreepUpdateBase."); - params.addRequiredParam("volumetric", - "Whether to perform deviatoric and volumetric" - "calculations or only deviatoric calculations"); + params.addParam("volumetric", false, "Whether to perform a volumetric correction."); return params; } BVDeviatoricVolumetricUpdateBase::BVDeviatoricVolumetricUpdateBase( const InputParameters & parameters) - : BVTwoCreepUpdateBase(parameters), - _volumetric(parameters.get("volumetric")) + : BVTwoCreepUpdateBase(parameters), _volumetric(parameters.get("volumetric")) { } @@ -65,11 +62,13 @@ BVDeviatoricVolumetricUpdateBase::returnMap() // Convergence check if ((std::abs(res) <= _abs_tol) || (std::abs(res / res_ini) <= _rel_tol)) { - creep_strain_incr.push_back(vol_strain_incr); + creep_strain_incr.resize(3); + creep_strain_incr[2] = vol_strain_incr; return creep_strain_incr; } } - throw MooseException("BVDeviatoricVolumetricUpdateBase: maximum number of iterations exceeded in volumetric 'returnMap'!"); + throw MooseException("BVDeviatoricVolumetricUpdateBase: maximum number of iterations exceeded " + "in volumetric 'returnMap'!"); } else { @@ -80,7 +79,6 @@ BVDeviatoricVolumetricUpdateBase::returnMap() void BVDeviatoricVolumetricUpdateBase::preReturnMapVol(const std::vector & creep_strain_incr) { - } ADReal @@ -119,4 +117,3 @@ BVDeviatoricVolumetricUpdateBase::reformPlasticStrainTensor( return res; } - diff --git a/src/materials/BVRTL2020ModelUpdate.C b/src/materials/BVRTL2020ModelUpdate.C index a91841a..ddfa98d 100644 --- a/src/materials/BVRTL2020ModelUpdate.C +++ b/src/materials/BVRTL2020ModelUpdate.C @@ -23,7 +23,8 @@ BVRTL2020ModelUpdate::validParams() "Material for computing a RTL2020 creep update. See Azabou et al. (2021), Rock salt " "behavior: From laboratory experiments to pertinent long-term predictions."); // Lemaitre creep strain rate parameters - params.addRequiredRangeCheckedParam("alpha", "0.0 < alpha & alpha < 1.0", "The alpha parameter."); + params.addRequiredRangeCheckedParam( + "alpha", "0.0 < alpha & alpha < 1.0", "The alpha parameter."); params.addRequiredRangeCheckedParam("A2", "A2 > 0.0", "The A2 parameter."); params.addRequiredRangeCheckedParam("n2", "n2 > 0.0", "The n2 parameter."); // Munson-Dawson creep strain rate parameters @@ -34,11 +35,11 @@ BVRTL2020ModelUpdate::validParams() params.addRequiredRangeCheckedParam("m", "m > 1.0", "The m parameter."); params.addRequiredRangeCheckedParam("n", "n > 1.0", "The n parameter."); // volume creep parameters - params.addRequiredParam("z","volumetric creep parameter z"); - params.addRequiredParam("Nz", "volumetric creep parameter Nz"); - params.addRequiredParam("nz","volumetric creep parameter nz"); - params.addRequiredParam("Mz", "volumetric creep parameter Mz"); - params.addRequiredParam("mz", "volumetric creep parameter mz"); + params.addParam("z", 0.0, "volumetric creep parameter z"); + params.addParam("Nz", 1.0, "volumetric creep parameter Nz"); + params.addParam("nz", 1.0, "volumetric creep parameter nz"); + params.addParam("Mz", 1.0, "volumetric creep parameter Mz"); + params.addParam("mz", 1.0, "volumetric creep parameter mz"); return params; } @@ -99,7 +100,8 @@ BVRTL2020ModelUpdate::creepRateR(const std::vector & creep_strain_incr) if (q == 0.0) return 0.0; else - return 1.0e-06 * std::pow((q / _A2 >= 0.0 ? q / _A2 : 0.0), _n2); //macaulay brackets to guide against negative values + return 1.0e-06 * std::pow((q / _A2 >= 0.0 ? q / _A2 : 0.0), + _n2); // macaulay brackets to guide against negative values } ADReal @@ -122,11 +124,9 @@ BVRTL2020ModelUpdate::creepRateMunsonDawson(const std::vector & creep_st ADReal gamma_ms = 1.0e+06 * munsondawsonCreepStrain(creep_strain_incr); if (gamma_ms < saturation_strain) - return _A * std::pow(1.0 - gamma_ms / saturation_strain, _n) * - creepRateR(creep_strain_incr); + return _A * std::pow(1.0 - gamma_ms / saturation_strain, _n) * creepRateR(creep_strain_incr); else - return -_B * std::pow(gamma_ms / saturation_strain - 1.0, _m) * - creepRateR(creep_strain_incr); + return -_B * std::pow(gamma_ms / saturation_strain - 1.0, _m) * creepRateR(creep_strain_incr); } ADReal @@ -172,7 +172,8 @@ BVRTL2020ModelUpdate::creepRateLemaitreDerivative(const std::vector & cr if (gamma_l == 0.0) return _alpha * creepRateRDerivative(creep_strain_incr); else - return _alpha * creepRateRDerivative(creep_strain_incr) * std::pow(gamma_l, 1.0 - 1.0 / _alpha); + return _alpha * creepRateRDerivative(creep_strain_incr) * + std::pow(gamma_l, 1.0 - 1.0 / _alpha); else throw MooseException( @@ -195,7 +196,7 @@ BVRTL2020ModelUpdate::creepRateMunsonDawsonDerivative(const std::vector else return -_B * std::pow(gamma_ms / saturation_strain - 1.0, _m) * creepRateRDerivative(creep_strain_incr); - + else if (j == 1) // Munson-Dawson wrt Munson-Dawson if (gamma_ms < saturation_strain) return _A * std::pow(1.0 - gamma_ms / saturation_strain, _n - 1.0) * @@ -205,7 +206,7 @@ BVRTL2020ModelUpdate::creepRateMunsonDawsonDerivative(const std::vector return -_B * std::pow(gamma_ms / saturation_strain - 1.0, _m - 1.0) * ((gamma_ms / saturation_strain - 1.0) * creepRateRDerivative(creep_strain_incr) + 1.0e+06 * _m / saturation_strain * creepRateR(creep_strain_incr)); - + else throw MooseException( "BVRTL2020ModelUpdate: error, unknow creep model called in `creepRateDerivative`!"); @@ -242,92 +243,110 @@ BVRTL2020ModelUpdate::postReturnMap(const std::vector & creep_strain_inc { _eqv_creep_strain_L[_qp] = lemaitreCreepStrain(creep_strain_incr); _eqv_creep_strain_R[_qp] = munsondawsonCreepStrain(creep_strain_incr); - _vol_creep_strain[_qp] = volumetricCreepStrain(creep_strain_incr); + // _vol_creep_strain[_qp] = volumetricCreepStrain(creep_strain_incr); } void BVRTL2020ModelUpdate::preReturnMapVol(const std::vector & creep_strain_incr) { // Save some information from the deviatoric update - _gamma_vp = _eqv_creep_strain_L[_qp] + _eqv_creep_strain_R[_qp]; - _gamma_incr_vp = creep_strain_incr[0] + creep_strain_incr[1]; + _gamma_vp = 1.0e+06 * (_eqv_creep_strain_L[_qp] + _eqv_creep_strain_R[_qp]); + _gamma_dot_vp = (creep_strain_incr[0] + creep_strain_incr[1]) / _dt; } ADReal BVRTL2020ModelUpdate::creepRateVol(const ADReal & vol_strain_incr) { - return 0.0; - - // // initialize the deviatoric creep strain - // std::vector creep_strain_incr = BVTwoCreepUpdateBase::returnMap(); - - // ADReal p = _avg_stress_tr - (_K * vol_strain_incr); - // if (p == 0.0) - // return 0.0; // No contribution since p is zero -// -// // Calculate numerator and denomenator for proportionality constant k -// ADReal gamma_vp = 1.0e+06 * (lemaitreCreepStrain(creep_strain_incr) + munsondawsonCreepStrain(creep_strain_incr)); -// ADReal numer = std::pow((p / _Nz) > 0.0 ? (p / _Nz) : 0.0, _nz) - gamma_vp; -// ADReal denom = std::pow((p / _Mz) > 0.0 ? (p / _mz) : 0.0, _nz) + gamma_vp; -// -// // Safeguard against division by zero -// if (denom != 0.0) -// { -// ADReal k = _z * (numer) / denom; // proportionality constant -// ADReal res = 0.0; // Initialize res to zero before aggregation - // for (unsigned int i = 0; i < creep_strain_incr.size(); ++i) - // { - // res += k * creep_strain_incr[i]; - // } - // return res; - // } - // else // Handle the case where denom is zero - // { - // return 0.0; // No contribution since k is not defined - // } + ADReal p = _avg_stress_tr - _K * vol_strain_incr; + if (p == 0.0) + return 0.0; // No contribution since p is zero + else + return _z * (std::pow(std::abs(p / _Nz), _nz) - _gamma_vp) / + (std::pow(std::abs(p / _Mz), _mz) + _gamma_vp) * _gamma_dot_vp; + + // // initialize the deviatoric creep strain + // std::vector creep_strain_incr = BVTwoCreepUpdateBase::returnMap(); + + // ADReal p = _avg_stress_tr - (_K * vol_strain_incr); + // if (p == 0.0) + // return 0.0; // No contribution since p is zero + // + // // Calculate numerator and denomenator for proportionality constant k + // ADReal gamma_vp = 1.0e+06 * (lemaitreCreepStrain(creep_strain_incr) + + // munsondawsonCreepStrain(creep_strain_incr)); ADReal numer = std::pow((p / _Nz) > 0.0 ? (p / + // _Nz) : 0.0, _nz) - gamma_vp; ADReal denom = std::pow((p / _Mz) > 0.0 ? (p / _mz) : 0.0, _nz) + + // gamma_vp; + // + // // Safeguard against division by zero + // if (denom != 0.0) + // { + // ADReal k = _z * (numer) / denom; // proportionality constant + // ADReal res = 0.0; // Initialize res to zero before aggregation + // for (unsigned int i = 0; i < creep_strain_incr.size(); ++i) + // { + // res += k * creep_strain_incr[i]; + // } + // return res; + // } + // else // Handle the case where denom is zero + // { + // return 0.0; // No contribution since k is not defined + // } } ADReal BVRTL2020ModelUpdate::creepRateVolDerivative(const ADReal & vol_strain_incr) { - return 0.0; - -// // initialize the deviatoric creep strain -// std::vector creep_strain_incr = BVTwoCreepUpdateBase::returnMap(); - -// ADReal p = _avg_stress_tr - (_K * vol_strain_incr); -// if (p == 0.0) -// return 0.0; // No contribution since p is zero - -// ADReal gamma_vp = 1.0e+06 * (lemaitreCreepStrain(creep_strain_incr) + munsondawsonCreepStrain(creep_strain_incr)); -// ADReal numer = std::pow((p / _Nz) > 0.0 ? (p / _Nz) : 0.0, _nz) - gamma_vp; -// ADReal denom = std::pow((p / _Mz) > 0.0 ? (p / _mz) : 0.0, _nz) + gamma_vp; - - // Derivative contributions -// ADReal dp_dvol_strain_incr = -_K; // derivative of p with respect to vol_strain_incr - - // Computing the derivatives of numerator and denomenator - //ADReal dnumer_dvol_strain_incr = _nz * std::pow((p / _Nz) > 0.0 ? (p / _Nz) : 0.0, _nz - 1) * (dp_dvol_strain_incr / _Nz); - //ADReal ddenom_dvol_strain_incr = _nz * std::pow((p / _Mz) > 0.0 ? (p / _Mz) : 0.0, _nz - 1) * (dp_dvol_strain_incr / _Mz); - - // Safeguard situation for denominator - //if (denom != 0.0) - //{ - // // Using the quotient rule to differentiate k - // ADReal k = _z * (numer) / denom; - // ADReal dk_dvol_strain_incr = _z * (ddenom_dvol_strain_incr * numer - dnumer_dvol_strain_incr * denom) / (denom * denom); - - // Initialize res to zero before aggregation - // ADReal res = 0; -// for (unsigned int i = 0; i < creep_strain_incr.size(); ++i) - // { - // res += dk_dvol_strain_incr * creep_strain_incr[i]; // Use the derivative of k - // } - // return res; - //} - //else - //{ - // // If denom is zero, then k is set to a default value (0.0 in this case) - // return 0.0; // No contribution since k is not defined -// } + ADReal p = _avg_stress_tr - _K * vol_strain_incr; + if (p == 0.0) + return 1.0; // No contribution since p is zero + else + return -_K * _z * p / std::abs(p) * + (_nz * std::pow(std::abs(p / _Nz), _nz - 1.0) * + (std::pow(std::abs(p / _Mz), _mz) + _gamma_vp) - + _mz * std::pow(std::abs(p / _Mz), _mz - 1.0) * + (std::pow(std::abs(p / _Nz), _nz) - _gamma_vp)) / + std::pow(std::pow(std::abs(p / _Mz), _mz) + _gamma_vp, 2.0) * _gamma_dot_vp; + + // // initialize the deviatoric creep strain + // std::vector creep_strain_incr = BVTwoCreepUpdateBase::returnMap(); + + // ADReal p = _avg_stress_tr - (_K * vol_strain_incr); + // if (p == 0.0) + // return 0.0; // No contribution since p is zero + + // ADReal gamma_vp = 1.0e+06 * (lemaitreCreepStrain(creep_strain_incr) + + // munsondawsonCreepStrain(creep_strain_incr)); ADReal numer = std::pow((p / _Nz) > 0.0 ? (p / + // _Nz) : 0.0, _nz) - gamma_vp; ADReal denom = std::pow((p / _Mz) > 0.0 ? (p / _mz) : 0.0, _nz) + + // gamma_vp; + + // Derivative contributions + // ADReal dp_dvol_strain_incr = -_K; // derivative of p with respect to vol_strain_incr + + // Computing the derivatives of numerator and denomenator + // ADReal dnumer_dvol_strain_incr = _nz * std::pow((p / _Nz) > 0.0 ? (p / _Nz) : 0.0, _nz - 1) * + // (dp_dvol_strain_incr / _Nz); ADReal ddenom_dvol_strain_incr = _nz * std::pow((p / _Mz) > 0.0 ? + // (p / _Mz) : 0.0, _nz - 1) * (dp_dvol_strain_incr / _Mz); + + // Safeguard situation for denominator + // if (denom != 0.0) + //{ + // // Using the quotient rule to differentiate k + // ADReal k = _z * (numer) / denom; + // ADReal dk_dvol_strain_incr = _z * (ddenom_dvol_strain_incr * numer - dnumer_dvol_strain_incr + // * denom) / (denom * denom); + + // Initialize res to zero before aggregation + // ADReal res = 0; + // for (unsigned int i = 0; i < creep_strain_incr.size(); ++i) + // { + // res += dk_dvol_strain_incr * creep_strain_incr[i]; // Use the derivative of k + // } + // return res; + //} + // else + //{ + // // If denom is zero, then k is set to a default value (0.0 in this case) + // return 0.0; // No contribution since k is not defined + // } } From 71b219a5bc4a47846e22650903203bf664cda86e Mon Sep 17 00:00:00 2001 From: iyevugah Date: Thu, 13 Feb 2025 14:44:36 -0500 Subject: [PATCH 14/39] cleaned creepRateVol and its derivative --- src/materials/BVRTL2020ModelUpdate.C | 71 ---------------------------- 1 file changed, 71 deletions(-) diff --git a/src/materials/BVRTL2020ModelUpdate.C b/src/materials/BVRTL2020ModelUpdate.C index ddfa98d..921c3b3 100644 --- a/src/materials/BVRTL2020ModelUpdate.C +++ b/src/materials/BVRTL2020ModelUpdate.C @@ -263,35 +263,6 @@ BVRTL2020ModelUpdate::creepRateVol(const ADReal & vol_strain_incr) else return _z * (std::pow(std::abs(p / _Nz), _nz) - _gamma_vp) / (std::pow(std::abs(p / _Mz), _mz) + _gamma_vp) * _gamma_dot_vp; - - // // initialize the deviatoric creep strain - // std::vector creep_strain_incr = BVTwoCreepUpdateBase::returnMap(); - - // ADReal p = _avg_stress_tr - (_K * vol_strain_incr); - // if (p == 0.0) - // return 0.0; // No contribution since p is zero - // - // // Calculate numerator and denomenator for proportionality constant k - // ADReal gamma_vp = 1.0e+06 * (lemaitreCreepStrain(creep_strain_incr) + - // munsondawsonCreepStrain(creep_strain_incr)); ADReal numer = std::pow((p / _Nz) > 0.0 ? (p / - // _Nz) : 0.0, _nz) - gamma_vp; ADReal denom = std::pow((p / _Mz) > 0.0 ? (p / _mz) : 0.0, _nz) + - // gamma_vp; - // - // // Safeguard against division by zero - // if (denom != 0.0) - // { - // ADReal k = _z * (numer) / denom; // proportionality constant - // ADReal res = 0.0; // Initialize res to zero before aggregation - // for (unsigned int i = 0; i < creep_strain_incr.size(); ++i) - // { - // res += k * creep_strain_incr[i]; - // } - // return res; - // } - // else // Handle the case where denom is zero - // { - // return 0.0; // No contribution since k is not defined - // } } ADReal @@ -307,46 +278,4 @@ BVRTL2020ModelUpdate::creepRateVolDerivative(const ADReal & vol_strain_incr) _mz * std::pow(std::abs(p / _Mz), _mz - 1.0) * (std::pow(std::abs(p / _Nz), _nz) - _gamma_vp)) / std::pow(std::pow(std::abs(p / _Mz), _mz) + _gamma_vp, 2.0) * _gamma_dot_vp; - - // // initialize the deviatoric creep strain - // std::vector creep_strain_incr = BVTwoCreepUpdateBase::returnMap(); - - // ADReal p = _avg_stress_tr - (_K * vol_strain_incr); - // if (p == 0.0) - // return 0.0; // No contribution since p is zero - - // ADReal gamma_vp = 1.0e+06 * (lemaitreCreepStrain(creep_strain_incr) + - // munsondawsonCreepStrain(creep_strain_incr)); ADReal numer = std::pow((p / _Nz) > 0.0 ? (p / - // _Nz) : 0.0, _nz) - gamma_vp; ADReal denom = std::pow((p / _Mz) > 0.0 ? (p / _mz) : 0.0, _nz) + - // gamma_vp; - - // Derivative contributions - // ADReal dp_dvol_strain_incr = -_K; // derivative of p with respect to vol_strain_incr - - // Computing the derivatives of numerator and denomenator - // ADReal dnumer_dvol_strain_incr = _nz * std::pow((p / _Nz) > 0.0 ? (p / _Nz) : 0.0, _nz - 1) * - // (dp_dvol_strain_incr / _Nz); ADReal ddenom_dvol_strain_incr = _nz * std::pow((p / _Mz) > 0.0 ? - // (p / _Mz) : 0.0, _nz - 1) * (dp_dvol_strain_incr / _Mz); - - // Safeguard situation for denominator - // if (denom != 0.0) - //{ - // // Using the quotient rule to differentiate k - // ADReal k = _z * (numer) / denom; - // ADReal dk_dvol_strain_incr = _z * (ddenom_dvol_strain_incr * numer - dnumer_dvol_strain_incr - // * denom) / (denom * denom); - - // Initialize res to zero before aggregation - // ADReal res = 0; - // for (unsigned int i = 0; i < creep_strain_incr.size(); ++i) - // { - // res += dk_dvol_strain_incr * creep_strain_incr[i]; // Use the derivative of k - // } - // return res; - //} - // else - //{ - // // If denom is zero, then k is set to a default value (0.0 in this case) - // return 0.0; // No contribution since k is not defined - // } } From 9164ea439a7ad3503c83cf276cd121edee815dd9 Mon Sep 17 00:00:00 2001 From: Antoine Jacquey Date: Fri, 14 Feb 2025 14:03:34 -0500 Subject: [PATCH 15/39] Added temperature coupling --- include/kernels/BVStressDivergence.h | 2 +- include/materials/BVRTL2020ModelUpdate.h | 6 +++ src/kernels/BVStressDivergence.C | 2 +- src/materials/BVRTL2020ModelUpdate.C | 32 ++++++++++++-- .../viscoelasticity/BVRTL2020ModelUpdate.i | 44 +++++++++++++------ 5 files changed, 68 insertions(+), 18 deletions(-) diff --git a/include/kernels/BVStressDivergence.h b/include/kernels/BVStressDivergence.h index b9363c0..638065f 100644 --- a/include/kernels/BVStressDivergence.h +++ b/include/kernels/BVStressDivergence.h @@ -25,7 +25,7 @@ class BVStressDivergence : public ADKernel virtual ADReal computeQpResidual() override; const bool _coupled_pf; - const VariableValue & _pf; + const ADVariableValue & _pf; const unsigned int _component; // const Real _rho; // const RealVectorValue _gravity; diff --git a/include/materials/BVRTL2020ModelUpdate.h b/include/materials/BVRTL2020ModelUpdate.h index 22420ef..0b1cf9a 100644 --- a/include/materials/BVRTL2020ModelUpdate.h +++ b/include/materials/BVRTL2020ModelUpdate.h @@ -45,6 +45,12 @@ class BVRTL2020ModelUpdate : public BVDeviatoricVolumetricUpdateBase virtual ADReal creepRateVol(const ADReal & vol_strain_incr) override; virtual ADReal creepRateVolDerivative(const ADReal & vol_strain_incr) override; + // Temperature coupling + const ADVariableValue * const _temp; + const Real _temp_ref; + const Real _Ar; + ADReal _exponential; + // Lemaitre creep strain rate parameters const Real _alpha; const Real _A2; diff --git a/src/kernels/BVStressDivergence.C b/src/kernels/BVStressDivergence.C index 8f7367f..6747f64 100644 --- a/src/kernels/BVStressDivergence.C +++ b/src/kernels/BVStressDivergence.C @@ -36,7 +36,7 @@ BVStressDivergence::validParams() BVStressDivergence::BVStressDivergence(const InputParameters & parameters) : ADKernel(parameters), _coupled_pf(isCoupled("fluid_pressure")), - _pf(coupledValue("fluid_pressure")), + _pf(adCoupledValue("fluid_pressure")), _component(getParam("component")), // _rho(getParam("density")), // _gravity(getParam("gravity")), diff --git a/src/materials/BVRTL2020ModelUpdate.C b/src/materials/BVRTL2020ModelUpdate.C index 921c3b3..3079284 100644 --- a/src/materials/BVRTL2020ModelUpdate.C +++ b/src/materials/BVRTL2020ModelUpdate.C @@ -22,6 +22,10 @@ BVRTL2020ModelUpdate::validParams() params.addClassDescription( "Material for computing a RTL2020 creep update. See Azabou et al. (2021), Rock salt " "behavior: From laboratory experiments to pertinent long-term predictions."); + // Temperature coupling + params.addCoupledVar("temperature", "The temperature variable in Kelvin."); + params.addRangeCheckedParam("Tr", 289.0, "Tr > 0.0", "The reference temperature in Kelvin."); + params.addRangeCheckedParam("Ar", 0.0, "Ar >= 0.0", "The activation temperature in Kelvin."); // Lemaitre creep strain rate parameters params.addRequiredRangeCheckedParam( "alpha", "0.0 < alpha & alpha < 1.0", "The alpha parameter."); @@ -45,6 +49,11 @@ BVRTL2020ModelUpdate::validParams() BVRTL2020ModelUpdate::BVRTL2020ModelUpdate(const InputParameters & parameters) : BVDeviatoricVolumetricUpdateBase(parameters), + // Temperature coupling + _temp(isParamValid("temperature") ? &adCoupledValue("temperature") : nullptr), + _temp_ref(getParam("Tr")), + _Ar(getParam("Ar")), + _exponential(1.0), // Lemaitre creep strain rate parameters _alpha(getParam("alpha")), _A2(getParam("A2")), @@ -71,6 +80,12 @@ BVRTL2020ModelUpdate::BVRTL2020ModelUpdate(const InputParameters & parameters) _vol_creep_strain(declareADProperty(_base_name + "_vol_creep_strain")), _vol_creep_strain_old(getMaterialPropertyOld(_base_name + "_vol_creep_strain")) { + // Check temperature coupling + if (_temp && !isParamSetByUser("Ar")) + paramWarning("Ar", "Coupled temperature is set but Ar is not. Temperature coupling is not set properly!"); + + if (isParamSetByUser("Ar") && !_temp) + paramWarning("temperature", "Ar is set but coupled temperature is not. Temperature coupling is not set properly!"); } void @@ -100,8 +115,14 @@ BVRTL2020ModelUpdate::creepRateR(const std::vector & creep_strain_incr) if (q == 0.0) return 0.0; else - return 1.0e-06 * std::pow((q / _A2 >= 0.0 ? q / _A2 : 0.0), - _n2); // macaulay brackets to guide against negative values + { + if (_temp) + _exponential = std::exp(_Ar * (1.0 / _temp_ref - 1.0 / (*_temp)[_qp])); + + return 1.0e-06 * _exponential * + std::pow((q / _A2 >= 0.0 ? q / _A2 : 0.0), + _n2); // macaulay brackets to guide against negative values + } } ADReal @@ -151,7 +172,12 @@ BVRTL2020ModelUpdate::creepRateRDerivative(const std::vector & creep_str if (q == 0.0) return 1.0; else - return -1.0e-06 * 3.0 * _G * _n2 / _A2 * std::pow(q / _A2, _n2 - 1.0); + { + if (_temp) + _exponential = std::exp(_Ar * (1.0 / _temp_ref - 1.0 / (*_temp)[_qp])); + + return -1.0e-06 * _exponential * 3.0 * _G * _n2 / _A2 * std::pow(q / _A2, _n2 - 1.0); + } } ADReal diff --git a/test/tests/viscoelasticity/BVRTL2020ModelUpdate.i b/test/tests/viscoelasticity/BVRTL2020ModelUpdate.i index 8c06cd7..5dab201 100644 --- a/test/tests/viscoelasticity/BVRTL2020ModelUpdate.i +++ b/test/tests/viscoelasticity/BVRTL2020ModelUpdate.i @@ -4,22 +4,26 @@ # Units: stress in MPa, time in days, strain in m / m E = 28567 nu = 0.30 -alpha = 0.2601 +alpha = 0.2601 +# alpha = 0.4483 # * 1.72345 to account for T A1 = 0.0181 n1 = 1.162 A2 = 0.3986 n2 = 9.6768 A = 0.01 +# A = 0.0172 # * 1.72345 to account for T n = 13.5 B = 0.0 m = 2.0 +Tr = 289 +Ar = 1725 P = 10.0 Q = 5.0 -Nz = 0.0241 -nz = 1.2644 -Mz = 0.024 -mz = 1.028 -z = 0.4523 +# Nz = 0.0241 +# nz = 1.2644 +# Mz = 0.024 +# mz = 1.028 +# z = 0.4523 [Mesh] type = GeneratedMesh @@ -72,6 +76,11 @@ z = 0.4523 [] [AuxVariables] + [temp] + order = FIRST + family = LAGRANGE + initial_condition = 313 + [] [eqv_stress] order = CONSTANT family = MONOMIAL @@ -99,6 +108,12 @@ z = 0.4523 [] [AuxKernels] + [temp_aux] + type = ConstantAux + variable = temp + value = 313 + execute_on = 'TIMESTEP_END' + [] [eqv_stress_aux] type = BVMisesStressAux variable = eqv_stress @@ -143,7 +158,7 @@ z = 0.4523 [] [salt3loading] type = ParsedFunction - expression = 'if(t<=15,14.4,if(t<=29,20,24.4))' + expression = 'if(t<=15,15,if(t<=28,20,25))' [] [] @@ -218,7 +233,10 @@ z = 0.4523 #[] [viscoelastic] type = BVRTL2020ModelUpdate - volumetric = true + volumetric = false + temperature = temp + Tr = ${Tr} + Ar = ${Ar} alpha = ${alpha} A1 = ${A1} n1 = ${n1} @@ -228,11 +246,11 @@ z = 0.4523 n = ${n} B = ${B} m = ${m} - Nz = ${Nz} - nz = ${nz} - Mz = ${Mz} - mz = ${mz} - z = ${z} + # Nz = ${Nz} + # nz = ${nz} + # Mz = ${Mz} + # mz = ${mz} + # z = ${z} [] [] From f0235a01b540552ff7be53b8c1b9cd134c6d4d3b Mon Sep 17 00:00:00 2001 From: iyevugah Date: Wed, 19 Feb 2025 23:27:46 -0500 Subject: [PATCH 16/39] added test for salt 1 to 5 --- .../viscoelasticity/BVRTL2020ModelUpdate.i | 36 +- .../BVRTL2020ModelUpdatesalt5.i | 325 ++++++++++++++++++ 2 files changed, 350 insertions(+), 11 deletions(-) create mode 100644 test/tests/viscoelasticity/BVRTL2020ModelUpdatesalt5.i diff --git a/test/tests/viscoelasticity/BVRTL2020ModelUpdate.i b/test/tests/viscoelasticity/BVRTL2020ModelUpdate.i index 5dab201..35a7957 100644 --- a/test/tests/viscoelasticity/BVRTL2020ModelUpdate.i +++ b/test/tests/viscoelasticity/BVRTL2020ModelUpdate.i @@ -1,5 +1,5 @@ -# Modified Lemaitre creep model -# See Blanco-Martin et al. (2023) +# RTL2020 creep model +# See Figures 3,4,5 and 6 of Azabou et al. (2021) # Parameters # Units: stress in MPa, time in days, strain in m / m E = 28567 @@ -17,8 +17,14 @@ B = 0.0 m = 2.0 Tr = 289 Ar = 1725 -P = 10.0 -Q = 5.0 +#Psalt1 = 8 +#Psalt2 = 8 +Psalt3 = 10.0 +#Psalt4 = 15 +#Qsalt1 = 12.0 +#Qsalt2 = 12.0 +Qsalt3 = 12.0 +#Qsalt4 = 19.4 # Nz = 0.0241 # nz = 1.2644 # Mz = 0.024 @@ -79,7 +85,7 @@ Q = 5.0 [temp] order = FIRST family = LAGRANGE - initial_condition = 313 + initial_condition = 313.15 #note: temperature for salt2 is 313.15K [] [eqv_stress] order = CONSTANT @@ -152,14 +158,22 @@ Q = 5.0 [] [Functions] - [loading2] + [salt1loading] type = ParsedFunction - expression = 'if(t<=20,5.5,if(t<=55,6,if(t<=76,7,if(t<=97,10,if(t<=118,15,if(t<=139,20,25))))))' + expression = 'if(t<=14,12,if(t<=28,16,20))' + [] + [salt2loading] + type = ParsedFunction + expression = 'if(t<=15,12,if(t<=29,16,if(t<=32,20,20.2)))' [] [salt3loading] type = ParsedFunction expression = 'if(t<=15,15,if(t<=28,20,25))' [] + [salt4loading] + type = ParsedFunction + expression = 'if(t<=12,19.4,if(t<=29,23.4,27))' + [] [] [BCs] @@ -185,17 +199,17 @@ Q = 5.0 [pressure_right] boundary = 'right' displacement_vars = 'disp_x disp_y disp_z' - value = ${P} + value = ${Psalt3} [] [pressure_front] boundary = 'front' displacement_vars = 'disp_x disp_y disp_z' - value = ${P} + value = ${Psalt3} [] [pressure_top] boundary = 'top' displacement_vars = 'disp_x disp_y disp_z' - function = salt3loading #loading2 + function = salt3loading [] [] [] @@ -206,7 +220,7 @@ Q = 5.0 displacements = 'disp_x disp_y disp_z' young_modulus = ${E} poisson_ratio = ${nu} - initial_stress = '-${P} -${Q} -${P}' + initial_stress = '-${Psalt3} -${Qsalt3} -${Psalt3}' inelastic_models = 'viscoelastic' [] #[viscoelastic] diff --git a/test/tests/viscoelasticity/BVRTL2020ModelUpdatesalt5.i b/test/tests/viscoelasticity/BVRTL2020ModelUpdatesalt5.i new file mode 100644 index 0000000..00f7f0e --- /dev/null +++ b/test/tests/viscoelasticity/BVRTL2020ModelUpdatesalt5.i @@ -0,0 +1,325 @@ +# Modified Lemaitre creep model +# See Fig. 7 and the first multistage creep test on Fig.8 of Azabou et al. (2021) +# Parameters +# Units: stress in MPa, time in days, strain in m / m +E = 22126 +nu = 0.2 +alpha = 0.5812 +A1 = 0.1854 +n1 = 2.1012 +A2 = 3.7009 +n2 = 6.7562 +A = 155.6582 +n = 11.989 +B = 0.01918 +m = 2.2195 +Tr = 289 +Ar = 1725 +P = 8.7 +Q = 12.7 +z = 0.4523 +Nz = 0.0241 +nz = 1.2644 +Mz = 0.024 +mz = 1.028 + +[Mesh] + type = GeneratedMesh + dim = 3 + # nx = 5 + # ny = 10 + # nz = 5 + nx = 1 + ny = 1 + nz = 1 + xmin = 0 + xmax = 65e-03 + ymin = 0 + ymax = 130e-03 + zmin = 0 + zmax = 65e-03 +[] + +[Variables] + [disp_x] + order = FIRST + family = LAGRANGE + [] + [disp_y] + order = FIRST + family = LAGRANGE + [] + [disp_z] + order = FIRST + family = LAGRANGE + [] +[] + +[Kernels] + [stress_x] + type = BVStressDivergence + component = x + variable = disp_x + [] + [stress_y] + type = BVStressDivergence + component = y + variable = disp_y + [] + [stress_z] + type = BVStressDivergence + component = z + variable = disp_z + [] +[] + +[AuxVariables] + [temp] + order = FIRST + family = LAGRANGE + initial_condition = 313 + [] + [eqv_stress] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain_rate] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_L] + order = CONSTANT + family = MONOMIAL + [] + [strain_yy] + order = CONSTANT + family = MONOMIAL + [] + [stress_yy] + order = CONSTANT + family = MONOMIAL + [] +[] + +[AuxKernels] + [temp_aux] + type = ConstantAux + variable = temp + value = 313 + execute_on = 'TIMESTEP_END' + [] + [eqv_stress_aux] + type = BVMisesStressAux + variable = eqv_stress + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_aux] + type = BVEqvStrainAux + variable = eqv_strain + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_rate_aux] + type = BVEqvStrainRateAux + variable = eqv_strain_rate + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_L_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_L + property = eqv_creep_strain_L + execute_on = 'TIMESTEP_END' + [] + [strain_zz_aux] + type = BVStrainComponentAux + variable = strain_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [stress_zz_aux] + type = BVStressComponentAux + variable = stress_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] +[] + +[Functions] + [Q_loading] + type = ParsedFunction + expression = 'if(t<=10,12.7,if(t<=40,15,if(t<=90,20,if(t<=140,22,24))))' + [] + [P_loading] + type = ParsedFunction + expression = 'if(t<=10,8.7,if(t<=40,7.5,if(t<=90,5,if(t<=140,4,3))))' + [] +[] + +[BCs] + [no_x] + type = DirichletBC + variable = disp_x + boundary = 'left' + value = 0.0 + [] + [no_y] + type = DirichletBC + variable = disp_y + boundary = 'bottom' + value = 0.0 + [] + [no_z] + type = DirichletBC + variable = disp_z + boundary = 'back' + value = 0.0 + [] + [BVPressure] + [pressure_right] + boundary = 'right' + displacement_vars = 'disp_x disp_y disp_z' + function = P_loading + [] + [pressure_front] + boundary = 'front' + displacement_vars = 'disp_x disp_y disp_z' + function = P_loading + [] + [pressure_top] + boundary = 'top' + displacement_vars = 'disp_x disp_y disp_z' + function = Q_loading + [] + [] +[] + +[Materials] + [elasticity] + type = BVMechanicalMaterial + displacements = 'disp_x disp_y disp_z' + young_modulus = ${E} + poisson_ratio = ${nu} + initial_stress = '-${P} -${Q} -${P}' + inelastic_models = 'viscoelastic' + [] + [viscoelastic] + type = BVRTL2020ModelUpdate + volumetric = false + temperature = temp + Tr = ${Tr} + Ar = ${Ar} + alpha = ${alpha} + A1 = ${A1} + n1 = ${n1} + A2 = ${A2} + n2 = ${n2} + A = ${A} + n = ${n} + B = ${B} + m = ${m} + Nz = ${Nz} + nz = ${nz} + Mz = ${Mz} + mz = ${mz} + z = ${z} + [] +[] + +[Postprocessors] + [eqv_strain_rate] + type = ElementAverageValue + variable = eqv_strain_rate + outputs = csv + [] + [eqv_strain] + type = ElementAverageValue + variable = eqv_strain + outputs = csv + [] + [eqv_strain_L] + type = ElementAverageValue + variable = eqv_creep_strain_L + outputs = csv + [] + [strain_zz] + type = ElementAverageValue + variable = strain_yy + outputs = csv + [] + [stress_zz] + type = ElementAverageValue + variable = stress_yy + outputs = csv + [] + [q] + type = ElementAverageValue + variable = eqv_stress + outputs = csv + [] +[] + +[Preconditioning] + active = 'hypre' + [hypre] + type = SMP + full = true + petsc_options = '-snes_ksp_ew' + petsc_options_iname = '-pc_type -pc_hypre_type + -snes_atol -snes_rtol -snes_stol -snes_max_it + -snes_linesearch_type' + petsc_options_value = 'hypre boomeramg + 1.0e-10 1.0e-12 0 20 + basic' + [] + [superlu] + type = SMP + full = true + petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_gmres_modifiedgramschmidt -ksp_diagonal_scale -ksp_diagonal_scale_fix' + petsc_options_iname = '-snes_type + -snes_atol -snes_rtol -snes_max_it + -pc_type -pc_factor_mat_solver_package + -snes_linesearch_type' + petsc_options_value = 'newtonls + 1e-10 1e-12 50 + lu superlu_dist + l2' + [] + [asm] + type = SMP + petsc_options = '-snes_ksp_ew' + petsc_options_iname = '-ksp_type + -pc_type + -sub_pc_type + -snes_type -snes_atol -snes_rtol -snes_max_it -snes_linesearch_type + -ksp_gmres_restart' + petsc_options_value = 'fgmres + asm + ilu + newtonls 1e-10 1e-10 120 basic + 201' + [] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + automatic_scaling = true + start_time = 0.0 + end_time = 200 + dt = 0.02 + timestep_tolerance = 1.0e-10 +[] + +[Outputs] + perf_graph = true + exodus = true + [csv] + type = CSV + execute_on = 'timestep_end' + [] +[] \ No newline at end of file From a574e8756748292919d5b4c238b9bc45a7cecc12 Mon Sep 17 00:00:00 2001 From: iyevugah Date: Wed, 19 Feb 2025 23:29:27 -0500 Subject: [PATCH 17/39] added a python file to compute Q and P for salt5 --- .../viscoelasticity/salt5data/salt5data.py | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 test/tests/viscoelasticity/salt5data/salt5data.py diff --git a/test/tests/viscoelasticity/salt5data/salt5data.py b/test/tests/viscoelasticity/salt5data/salt5data.py new file mode 100644 index 0000000..9319ae9 --- /dev/null +++ b/test/tests/viscoelasticity/salt5data/salt5data.py @@ -0,0 +1,28 @@ +# computes the Q and P stress values from the X = Q - P (MPa) and Y = (Q + 2P)/3(MPa) +# stress values shown on the graph in Fig. 7 and Fig. 8 of Azabou et al. (2021) +import csv + +# Example data for multiple rows: (time, X, Y) +data = [ + (10, 4.0, 10.0), + (40, 7.5, 10.0), + (90, 15, 10.0), + (140, 18, 10.0), + (170, 21, 10.0), + # Add more rows as needed +] + +# Open a CSV file for writing +with open('stress_values.csv', mode='w', newline='') as file: + writer = csv.writer(file) + + # Write the header row + writer.writerow(["Time (%)", "X = Q - P (MPa)", "Y = (Q + 2P)/3 (MPa)", "Q = X + P (MPa)", "P = (3Y - X)/3 (MPa)"]) + + # Calculate P and Q for each row and write to the CSV file + for time, X, Y in data: + P = (3 * Y - X) / 3 + Q = X + P + writer.writerow([time, X, Y, Q, P]) # Include time in the output + +print("Data has been written to 'stress_values.csv'") \ No newline at end of file From 4d31aff874de307ecf0f42243de2edfca947177c Mon Sep 17 00:00:00 2001 From: Antoine Jacquey Date: Sat, 1 Mar 2025 11:12:55 -0500 Subject: [PATCH 18/39] Implemented volumetric strain and strain rate AuxKernels --- include/auxkernels/BVVolStrainAux.h | 28 ++++++++++++++++++++ include/auxkernels/BVVolStrainRateAux.h | 26 ++++++++++++++++++ src/auxkernels/BVVolStrainAux.C | 35 +++++++++++++++++++++++++ src/auxkernels/BVVolStrainRateAux.C | 35 +++++++++++++++++++++++++ 4 files changed, 124 insertions(+) create mode 100644 include/auxkernels/BVVolStrainAux.h create mode 100644 include/auxkernels/BVVolStrainRateAux.h create mode 100644 src/auxkernels/BVVolStrainAux.C create mode 100644 src/auxkernels/BVVolStrainRateAux.C diff --git a/include/auxkernels/BVVolStrainAux.h b/include/auxkernels/BVVolStrainAux.h new file mode 100644 index 0000000..27482fe --- /dev/null +++ b/include/auxkernels/BVVolStrainAux.h @@ -0,0 +1,28 @@ +/******************************************************************************/ +/* This file is part of */ +/* BEAVER, a MOOSE-based application */ +/* Multiphase Flow Poromechanics for Induced Seismicity Problems */ +/* */ +/* Copyright (C) 2024 by Antoine B. Jacquey */ +/* Polytechnique Montréal */ +/* */ +/* Licensed under GNU Lesser General Public License v2.1 */ +/* please see LICENSE for details */ +/* or http://www.gnu.org/licenses/lgpl.html */ +/******************************************************************************/ + +#pragma once + +#include "BVStrainAuxBase.h" + +class BVVolStrainAux : public BVStrainAuxBase +{ +public: + static InputParameters validParams(); + BVVolStrainAux(const InputParameters & parameters); + +protected: + virtual Real computeValue(); + + const VariableValue & _u_old; +}; \ No newline at end of file diff --git a/include/auxkernels/BVVolStrainRateAux.h b/include/auxkernels/BVVolStrainRateAux.h new file mode 100644 index 0000000..55cb7a9 --- /dev/null +++ b/include/auxkernels/BVVolStrainRateAux.h @@ -0,0 +1,26 @@ +/******************************************************************************/ +/* This file is part of */ +/* BEAVER, a MOOSE-based application */ +/* Multiphase Flow Poromechanics for Induced Seismicity Problems */ +/* */ +/* Copyright (C) 2024 by Antoine B. Jacquey */ +/* Polytechnique Montréal */ +/* */ +/* Licensed under GNU Lesser General Public License v2.1 */ +/* please see LICENSE for details */ +/* or http://www.gnu.org/licenses/lgpl.html */ +/******************************************************************************/ + +#pragma once + +#include "BVStrainAuxBase.h" + +class BVVolStrainRateAux : public BVStrainAuxBase +{ +public: + static InputParameters validParams(); + BVVolStrainRateAux(const InputParameters & parameters); + +protected: + virtual Real computeValue(); +}; \ No newline at end of file diff --git a/src/auxkernels/BVVolStrainAux.C b/src/auxkernels/BVVolStrainAux.C new file mode 100644 index 0000000..ed44b5b --- /dev/null +++ b/src/auxkernels/BVVolStrainAux.C @@ -0,0 +1,35 @@ +/******************************************************************************/ +/* This file is part of */ +/* BEAVER, a MOOSE-based application */ +/* Multiphase Flow Poromechanics for Induced Seismicity Problems */ +/* */ +/* Copyright (C) 2024 by Antoine B. Jacquey */ +/* Polytechnique Montréal */ +/* */ +/* Licensed under GNU Lesser General Public License v2.1 */ +/* please see LICENSE for details */ +/* or http://www.gnu.org/licenses/lgpl.html */ +/******************************************************************************/ + +#include "BVVolStrainAux.h" + +registerMooseObject("BeaverApp", BVVolStrainAux); + +InputParameters +BVVolStrainAux::validParams() +{ + InputParameters params = BVStrainAuxBase::validParams(); + params.addClassDescription("Class for outputting the volumetric strain."); + return params; +} + +BVVolStrainAux::BVVolStrainAux(const InputParameters & parameters) + : BVStrainAuxBase(parameters), _u_old(uOld()) +{ +} + +Real +BVVolStrainAux::computeValue() +{ + return _u_old[_qp] + MetaPhysicL::raw_value(_strain_increment[_qp].trace()); +} \ No newline at end of file diff --git a/src/auxkernels/BVVolStrainRateAux.C b/src/auxkernels/BVVolStrainRateAux.C new file mode 100644 index 0000000..15b7dfe --- /dev/null +++ b/src/auxkernels/BVVolStrainRateAux.C @@ -0,0 +1,35 @@ +/******************************************************************************/ +/* This file is part of */ +/* BEAVER, a MOOSE-based application */ +/* Multiphase Flow Poromechanics for Induced Seismicity Problems */ +/* */ +/* Copyright (C) 2024 by Antoine B. Jacquey */ +/* Polytechnique Montréal */ +/* */ +/* Licensed under GNU Lesser General Public License v2.1 */ +/* please see LICENSE for details */ +/* or http://www.gnu.org/licenses/lgpl.html */ +/******************************************************************************/ + +#include "BVVolStrainRateAux.h" + +registerMooseObject("BeaverApp", BVVolStrainRateAux); + +InputParameters +BVVolStrainRateAux::validParams() +{ + InputParameters params = BVStrainAuxBase::validParams(); + params.addClassDescription("Class for outputting the volumetric strain rate."); + return params; +} + +BVVolStrainRateAux::BVVolStrainRateAux(const InputParameters & parameters) + : BVStrainAuxBase(parameters) +{ +} + +Real +BVVolStrainRateAux::computeValue() +{ + return MetaPhysicL::raw_value(_strain_increment[_qp].trace()) / _dt; +} \ No newline at end of file From e9b1c1af13ddc813007826d1086ad948082edc48 Mon Sep 17 00:00:00 2001 From: iyevugah Date: Mon, 3 Mar 2025 11:14:38 -0500 Subject: [PATCH 19/39] updated and moved the RTL tests to examples --- .../RTL2020}/BVRTL2020ModelUpdate.i | 0 .../RTL2020/BVRTL2020salt5creeptest.i | 57 ++- .../RTL2020/BVRTL2020salt5triaxialtest.i | 354 ++++++++++++++++++ ...RTL2020ModelUpdate_csv.csv:Zone.Identifier | 0 .../salt5data - Copy.py:Zone.Identifier | 0 .../RTL2020}/salt5data/salt5data.py | 0 .../salt5data/salt5triaxialtestdata.py | 71 ++++ test/tests/viscoelasticity/tests | 32 -- 8 files changed, 473 insertions(+), 41 deletions(-) rename {test/tests/viscoelasticity => examples/viscoelasticity/RTL2020}/BVRTL2020ModelUpdate.i (100%) rename test/tests/viscoelasticity/BVRTL2020ModelUpdatesalt5.i => examples/viscoelasticity/RTL2020/BVRTL2020salt5creeptest.i (85%) create mode 100644 examples/viscoelasticity/RTL2020/BVRTL2020salt5triaxialtest.i create mode 100644 examples/viscoelasticity/RTL2020/salt1to4results/BVRTL2020ModelUpdate_csv.csv:Zone.Identifier create mode 100644 examples/viscoelasticity/RTL2020/salt5data/salt5data - Copy.py:Zone.Identifier rename {test/tests/viscoelasticity => examples/viscoelasticity/RTL2020}/salt5data/salt5data.py (100%) create mode 100644 examples/viscoelasticity/RTL2020/salt5data/salt5triaxialtestdata.py delete mode 100644 test/tests/viscoelasticity/tests diff --git a/test/tests/viscoelasticity/BVRTL2020ModelUpdate.i b/examples/viscoelasticity/RTL2020/BVRTL2020ModelUpdate.i similarity index 100% rename from test/tests/viscoelasticity/BVRTL2020ModelUpdate.i rename to examples/viscoelasticity/RTL2020/BVRTL2020ModelUpdate.i diff --git a/test/tests/viscoelasticity/BVRTL2020ModelUpdatesalt5.i b/examples/viscoelasticity/RTL2020/BVRTL2020salt5creeptest.i similarity index 85% rename from test/tests/viscoelasticity/BVRTL2020ModelUpdatesalt5.i rename to examples/viscoelasticity/RTL2020/BVRTL2020salt5creeptest.i index 00f7f0e..766f0d3 100644 --- a/test/tests/viscoelasticity/BVRTL2020ModelUpdatesalt5.i +++ b/examples/viscoelasticity/RTL2020/BVRTL2020salt5creeptest.i @@ -16,6 +16,7 @@ m = 2.2195 Tr = 289 Ar = 1725 P = 8.7 +P_TCT = 5 Q = 12.7 z = 0.4523 Nz = 0.0241 @@ -95,6 +96,10 @@ mz = 1.028 order = CONSTANT family = MONOMIAL [] + [eqv_creep_strain_R] + order = CONSTANT + family = MONOMIAL + [] [strain_yy] order = CONSTANT family = MONOMIAL @@ -103,6 +108,10 @@ mz = 1.028 order = CONSTANT family = MONOMIAL [] + [stress_zz] + order = CONSTANT + family = MONOMIAL + [] [] [AuxKernels] @@ -133,6 +142,12 @@ mz = 1.028 property = eqv_creep_strain_L execute_on = 'TIMESTEP_END' [] + [eqv_creep_strain_R_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_R + property = eqv_creep_strain_R + execute_on = 'TIMESTEP_END' + [] [strain_zz_aux] type = BVStrainComponentAux variable = strain_yy @@ -140,13 +155,20 @@ mz = 1.028 index_j = y execute_on = 'TIMESTEP_END' [] - [stress_zz_aux] + [stress_yy_aux] type = BVStressComponentAux variable = stress_yy index_i = y index_j = y execute_on = 'TIMESTEP_END' [] + [stress_zz_aux] + type = BVStressComponentAux + variable = stress_yy + index_i = z + index_j = z + execute_on = 'TIMESTEP_END' + [] [] [Functions] @@ -158,6 +180,12 @@ mz = 1.028 type = ParsedFunction expression = 'if(t<=10,8.7,if(t<=40,7.5,if(t<=90,5,if(t<=140,4,3))))' [] + [strain_rate] + type = ParsedFunction + vars = 'e_dot L' + vals = '1.0e-06 130e-03' + expression = 'e_dot*L*t' + [] [] [BCs] @@ -183,18 +211,24 @@ mz = 1.028 [pressure_right] boundary = 'right' displacement_vars = 'disp_x disp_y disp_z' - function = P_loading + function = ${P_TCT} #P_loading, use P_TCT for the triaxial compress. test [] [pressure_front] boundary = 'front' displacement_vars = 'disp_x disp_y disp_z' - function = P_loading - [] - [pressure_top] - boundary = 'top' - displacement_vars = 'disp_x disp_y disp_z' - function = Q_loading + function = ${P_TCT} #P_loading [] + # [pressure_top] + # boundary = 'top' + # displacement_vars = 'disp_x disp_y disp_z' + # function = Q_loading + # [] + [] + [strain_rate] + type = FunctionDirichletBC + variable = disp_z + boundary = 'top' + function = strain_rate [] [] @@ -246,6 +280,11 @@ mz = 1.028 variable = eqv_creep_strain_L outputs = csv [] + [eqv_strain_R] + type = ElementAverageValue + variable = eqv_creep_strain_R + outputs = csv + [] [strain_zz] type = ElementAverageValue variable = strain_yy @@ -253,7 +292,7 @@ mz = 1.028 [] [stress_zz] type = ElementAverageValue - variable = stress_yy + variable = stress_zz outputs = csv [] [q] diff --git a/examples/viscoelasticity/RTL2020/BVRTL2020salt5triaxialtest.i b/examples/viscoelasticity/RTL2020/BVRTL2020salt5triaxialtest.i new file mode 100644 index 0000000..b6769a9 --- /dev/null +++ b/examples/viscoelasticity/RTL2020/BVRTL2020salt5triaxialtest.i @@ -0,0 +1,354 @@ +# Modified Lemaitre creep model +# See Fig. 7 of Azabou et al. (2021) +# Parameters +# Units: stress in MPa, time in days, strain in m / m +E = 22126 +nu = 0.2 +alpha = 0.5812 +A1 = 0.1854 +n1 = 2.1012 +A2 = 3.7009 +n2 = 6.7562 +A = 155.6582 +n = 11.989 +B = 0.01918 +m = 2.2195 +Tr = 289 +Ar = 1725 +P = 8.7 +P_TCT = 5 +Q = 12.7 +z = 0.4523 +Nz = 0.0241 +nz = 1.2644 +Mz = 0.024 +mz = 1.028 + +[Mesh] + type = GeneratedMesh + dim = 3 + # nx = 5 + # ny = 10 + # nz = 5 + nx = 1 + ny = 1 + nz = 1 + xmin = 0 + xmax = 65e-03 + ymin = 0 + ymax = 130e-03 + zmin = 0 + zmax = 65e-03 +[] + +[Variables] + [disp_x] + order = FIRST + family = LAGRANGE + [] + [disp_y] + order = FIRST + family = LAGRANGE + [] + [disp_z] + order = FIRST + family = LAGRANGE + [] +[] + +[Kernels] + [stress_x] + type = BVStressDivergence + component = x + variable = disp_x + [] + [stress_y] + type = BVStressDivergence + component = y + variable = disp_y + [] + [stress_z] + type = BVStressDivergence + component = z + variable = disp_z + [] +[] + +[AuxVariables] + [temp] + order = FIRST + family = LAGRANGE + initial_condition = 313 + [] + [eqv_stress] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain_rate] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_L] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_R] + order = CONSTANT + family = MONOMIAL + [] + [strain_yy] + order = CONSTANT + family = MONOMIAL + [] + [stress_yy] + order = CONSTANT + family = MONOMIAL + [] + [vol_eqv_strain] + order = CONSTANT + family = MONOMIAL + [] +[] + +[AuxKernels] + [temp_aux] + type = ConstantAux + variable = temp + value = 313 + execute_on = 'TIMESTEP_END' + [] + [eqv_stress_aux] + type = BVMisesStressAux + variable = eqv_stress + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_aux] + type = BVEqvStrainAux + variable = eqv_strain + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_rate_aux] + type = BVEqvStrainRateAux + variable = eqv_strain_rate + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_L_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_L + property = eqv_creep_strain_L + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_R_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_R + property = eqv_creep_strain_R + execute_on = 'TIMESTEP_END' + [] + [strain_zz_aux] + type = BVStrainComponentAux + variable = strain_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [stress_zz_aux] + type = BVStressComponentAux + variable = stress_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [vol_qv_strain_aux] + type = BVVolStrainAux + variable = vol_eqv_strain + execute_on = 'TIMESTEP_END' + [] +[] + +[Functions] + [strain_rate] + type = ParsedFunction + vars = 'e_dot L' + vals = '1.0e-06 130e-03' + expression = 'e_dot*L*t' + [] +[] + +[BCs] + [no_x] + type = DirichletBC + variable = disp_x + boundary = 'left' + value = 0.0 + [] + [no_y] + type = DirichletBC + variable = disp_y + boundary = 'bottom' + value = 0.0 + [] + [no_z] + type = DirichletBC + variable = disp_z + boundary = 'back' + value = 0.0 + [] + [BVPressure] + [pressure_right] + boundary = 'right' + displacement_vars = 'disp_x disp_y disp_z' + function = ${P_TCT} + [] + [pressure_front] + boundary = 'front' + displacement_vars = 'disp_x disp_y disp_z' + function = ${P_TCT} + [] + [] + [strain_rate] + type = FunctionDirichletBC + variable = disp_z + boundary = 'top' + function = strain_rate + [] +[] + +[Materials] + [elasticity] + type = BVMechanicalMaterial + displacements = 'disp_x disp_y disp_z' + young_modulus = ${E} + poisson_ratio = ${nu} + initial_stress = '-${P} -${Q} -${P}' + inelastic_models = 'viscoelastic' + [] + [viscoelastic] + type = BVRTL2020ModelUpdate + volumetric = false + temperature = temp + Tr = ${Tr} + Ar = ${Ar} + alpha = ${alpha} + A1 = ${A1} + n1 = ${n1} + A2 = ${A2} + n2 = ${n2} + A = ${A} + n = ${n} + B = ${B} + m = ${m} + Nz = ${Nz} + nz = ${nz} + Mz = ${Mz} + mz = ${mz} + z = ${z} + [] +[] + +[Postprocessors] + [eqv_strain_rate] + type = ElementAverageValue + variable = eqv_strain_rate + outputs = csv + [] + [eqv_strain] + type = ElementAverageValue + variable = eqv_strain + outputs = csv + [] + [eqv_strain_L] + type = ElementAverageValue + variable = eqv_creep_strain_L + outputs = csv + [] + [eqv_strain_R] + type = ElementAverageValue + variable = eqv_creep_strain_R + outputs = csv + [] + [strain_zz] + type = ElementAverageValue + variable = strain_yy + outputs = csv + [] + [stress_zz] + type = ElementAverageValue + variable = stress_yy + outputs = csv + [] + [q] + type = ElementAverageValue + variable = eqv_stress + outputs = csv + [] + [vol_eqv_strain] + type = ElementAverageValue + variable = vol_eqv_strain + outputs = csv + [] +[] + +[Preconditioning] + active = 'hypre' + [hypre] + type = SMP + full = true + petsc_options = '-snes_ksp_ew' + petsc_options_iname = '-pc_type -pc_hypre_type + -snes_atol -snes_rtol -snes_stol -snes_max_it + -snes_linesearch_type' + petsc_options_value = 'hypre boomeramg + 1.0e-10 1.0e-12 0 20 + basic' + [] + [superlu] + type = SMP + full = true + petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_gmres_modifiedgramschmidt -ksp_diagonal_scale -ksp_diagonal_scale_fix' + petsc_options_iname = '-snes_type + -snes_atol -snes_rtol -snes_max_it + -pc_type -pc_factor_mat_solver_package + -snes_linesearch_type' + petsc_options_value = 'newtonls + 1e-10 1e-12 50 + lu superlu_dist + l2' + [] + [asm] + type = SMP + petsc_options = '-snes_ksp_ew' + petsc_options_iname = '-ksp_type + -pc_type + -sub_pc_type + -snes_type -snes_atol -snes_rtol -snes_max_it -snes_linesearch_type + -ksp_gmres_restart' + petsc_options_value = 'fgmres + asm + ilu + newtonls 1e-10 1e-10 120 basic + 201' + [] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + automatic_scaling = true + start_time = 0.0 + end_time = 88.73456790123457 #200 + dt = 0.02 + timestep_tolerance = 1.0e-10 +[] + +[Outputs] + perf_graph = true + exodus = true + [csv] + type = CSV + execute_on = 'timestep_end' + [] +[] \ No newline at end of file diff --git a/examples/viscoelasticity/RTL2020/salt1to4results/BVRTL2020ModelUpdate_csv.csv:Zone.Identifier b/examples/viscoelasticity/RTL2020/salt1to4results/BVRTL2020ModelUpdate_csv.csv:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/examples/viscoelasticity/RTL2020/salt5data/salt5data - Copy.py:Zone.Identifier b/examples/viscoelasticity/RTL2020/salt5data/salt5data - Copy.py:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/test/tests/viscoelasticity/salt5data/salt5data.py b/examples/viscoelasticity/RTL2020/salt5data/salt5data.py similarity index 100% rename from test/tests/viscoelasticity/salt5data/salt5data.py rename to examples/viscoelasticity/RTL2020/salt5data/salt5data.py diff --git a/examples/viscoelasticity/RTL2020/salt5data/salt5triaxialtestdata.py b/examples/viscoelasticity/RTL2020/salt5data/salt5triaxialtestdata.py new file mode 100644 index 0000000..ce68047 --- /dev/null +++ b/examples/viscoelasticity/RTL2020/salt5data/salt5triaxialtestdata.py @@ -0,0 +1,71 @@ +def calculate_epsilon(γ, ζ): + """ + Solves for ε_ax and ε_r given γ and ζ. + + Parameters: + γ (float): The value of γ. + ζ (float): The value of ζ. + + Returns: + tuple: (ε_ax, ε_r) + """ + # Solving the system of equations: + # γ = (2/3)(ε_ax - ε_r) + # ζ = 2ε_r + ε_ax + + # From the first equation: ε_ax = (3/2)γ + ε_r + # Substitute ε_ax into the second equation: + # ζ = 2ε_r + (3/2)γ + ε_r + # ζ = 3ε_r + (3/2)γ + # ε_r = (ζ - (3/2)γ) / 3 + + ε_r = (ζ - (3/2) * γ) / 3 + ε_ax = (3/2) * γ + ε_r + + return ε_ax, ε_r + +def compute_t(ε_ax, ε_ax_dot): + """ + Computes t = |ε_ax / ε_ax_dot| + + Parameters: + ε_ax (float): The value of ε_ax. + ε_ax_dot (float): The value of ε_ax_dot. + + Returns: + float: The value of t. + """ + t = abs(ε_ax / ε_ax_dot) + return t + +def seconds_to_days(t_seconds): + """ + Converts time from seconds to days. + + Parameters: + t_seconds (float): Time in seconds. + + Returns: + float: Time in days. + """ + return t_seconds / 86400 # 86400 seconds in a day + +# Example usage: +γ = 8 # Example value for γ +ζ = -1 # Example value for ζ +ε_ax_dot = 1e-6 # Example value for ε_ax_dot + +# Calculate ε_ax and ε_r +ε_ax, ε_r = calculate_epsilon(γ, ζ) + +# Compute t in seconds +t_seconds = compute_t(ε_ax, ε_ax_dot) + +# Convert t to days +t_days = seconds_to_days(t_seconds) + +# Print the results +print(f"ε_ax: {ε_ax}") +print(f"ε_r: {ε_r}") +print(f"t (seconds): {t_seconds}") +print(f"t (days): {t_days}") \ No newline at end of file diff --git a/test/tests/viscoelasticity/tests b/test/tests/viscoelasticity/tests deleted file mode 100644 index 726fbd4..0000000 --- a/test/tests/viscoelasticity/tests +++ /dev/null @@ -1,32 +0,0 @@ -[Tests] - [linear_maxwell] - type = 'Exodiff' - input = 'linear_maxwell.i' - exodiff = 'linear_maxwell_out.e' - [] - [linear_kelvin] - type = 'Exodiff' - input = 'linear_kelvin.i' - exodiff = 'linear_kelvin_out.e' - [] - [burger] - type = 'Exodiff' - input = 'burger.i' - exodiff = 'burger_out.e' - [] - [lubby2] - type = 'Exodiff' - input = 'lubby2.i' - exodiff = 'lubby2_out.e' - [] - [blanco-martin-lemaitre] - type = 'Exodiff' - input = 'blanco-martin-lemaitre.i' - exodiff = 'blanco-martin-lemaitre_out.e' - [] - [blanco-martin-rtl] - type = 'Exodiff' - input = 'blanco-martin-rtl.i' - exodiff = 'blanco-martin-rtl_out.e' - [] -[] \ No newline at end of file From 580260ae4874d2d45b0d89f6ce41ad5cbb18b830 Mon Sep 17 00:00:00 2001 From: iyevugah Date: Wed, 12 Mar 2025 19:19:55 -0400 Subject: [PATCH 20/39] updated the RTL2020 salt5 test --- .../RTL2020/BVRTL2020salt5triaxialtest.i | 49 +++++++++++-------- .../salt5data/salt5triaxialtestdata.py | 4 +- 2 files changed, 31 insertions(+), 22 deletions(-) diff --git a/examples/viscoelasticity/RTL2020/BVRTL2020salt5triaxialtest.i b/examples/viscoelasticity/RTL2020/BVRTL2020salt5triaxialtest.i index b6769a9..12c4284 100644 --- a/examples/viscoelasticity/RTL2020/BVRTL2020salt5triaxialtest.i +++ b/examples/viscoelasticity/RTL2020/BVRTL2020salt5triaxialtest.i @@ -15,9 +15,7 @@ B = 0.01918 m = 2.2195 Tr = 289 Ar = 1725 -P = 8.7 -P_TCT = 5 -Q = 12.7 +P = 5 z = 0.4523 Nz = 0.0241 nz = 1.2644 @@ -78,7 +76,7 @@ mz = 1.028 [temp] order = FIRST family = LAGRANGE - initial_condition = 313 + initial_condition = 292.15 [] [eqv_stress] order = CONSTANT @@ -108,7 +106,11 @@ mz = 1.028 order = CONSTANT family = MONOMIAL [] - [vol_eqv_strain] + [vol_strain] + order = CONSTANT + family = MONOMIAL + [] + [vol_strain_neg] order = CONSTANT family = MONOMIAL [] @@ -118,7 +120,7 @@ mz = 1.028 [temp_aux] type = ConstantAux variable = temp - value = 313 + value = 292.15 execute_on = 'TIMESTEP_END' [] [eqv_stress_aux] @@ -162,19 +164,25 @@ mz = 1.028 index_j = y execute_on = 'TIMESTEP_END' [] - [vol_qv_strain_aux] + [vol_strain_aux] type = BVVolStrainAux - variable = vol_eqv_strain + variable = vol_strain execute_on = 'TIMESTEP_END' [] + [vol_strain_neg] + type = ParsedAux + coupled_variables = vol_strain + expression = '-vol_strain' + variable = vol_strain_neg + [] [] [Functions] [strain_rate] type = ParsedFunction - vars = 'e_dot L' - vals = '1.0e-06 130e-03' - expression = 'e_dot*L*t' + symbol_names = 'e_dot L' + symbol_values = '1.0e-06 130e-03' + expression = '-e_dot*L*t*86400' #converted to per days [] [] @@ -201,17 +209,17 @@ mz = 1.028 [pressure_right] boundary = 'right' displacement_vars = 'disp_x disp_y disp_z' - function = ${P_TCT} + function = ${P} [] [pressure_front] boundary = 'front' displacement_vars = 'disp_x disp_y disp_z' - function = ${P_TCT} + function = ${P} [] [] [strain_rate] type = FunctionDirichletBC - variable = disp_z + variable = disp_y boundary = 'top' function = strain_rate [] @@ -223,12 +231,12 @@ mz = 1.028 displacements = 'disp_x disp_y disp_z' young_modulus = ${E} poisson_ratio = ${nu} - initial_stress = '-${P} -${Q} -${P}' + initial_stress = '-${P} -${P} -${P}' inelastic_models = 'viscoelastic' [] [viscoelastic] type = BVRTL2020ModelUpdate - volumetric = false + volumetric = true temperature = temp Tr = ${Tr} Ar = ${Ar} @@ -285,9 +293,9 @@ mz = 1.028 variable = eqv_stress outputs = csv [] - [vol_eqv_strain] + [vol_strain] type = ElementAverageValue - variable = vol_eqv_strain + variable = vol_strain_neg #used parsedaux kernel to turn the vol strain into negative outputs = csv [] [] @@ -339,8 +347,9 @@ mz = 1.028 solve_type = 'NEWTON' automatic_scaling = true start_time = 0.0 - end_time = 88.73456790123457 #200 - dt = 0.02 + end_time = 0.8873456790123455 #200 + num_steps = 800 + #dt = 0.001 timestep_tolerance = 1.0e-10 [] diff --git a/examples/viscoelasticity/RTL2020/salt5data/salt5triaxialtestdata.py b/examples/viscoelasticity/RTL2020/salt5data/salt5triaxialtestdata.py index ce68047..f96cc06 100644 --- a/examples/viscoelasticity/RTL2020/salt5data/salt5triaxialtestdata.py +++ b/examples/viscoelasticity/RTL2020/salt5data/salt5triaxialtestdata.py @@ -51,8 +51,8 @@ def seconds_to_days(t_seconds): return t_seconds / 86400 # 86400 seconds in a day # Example usage: -γ = 8 # Example value for γ -ζ = -1 # Example value for ζ +γ = 0.08 # Example value for γ +ζ = -0.01 # Example value for ζ ε_ax_dot = 1e-6 # Example value for ε_ax_dot # Calculate ε_ax and ε_r From 71d4991f6921d05e8a27460f925a140dc618981d Mon Sep 17 00:00:00 2001 From: iyevugah Date: Wed, 2 Apr 2025 10:26:59 -0400 Subject: [PATCH 21/39] added 3 results of the first 3 triaxial test on Fig.8 of Azabou et. al (2021) --- ...altest.i => BVRTL2020salt5triaxialtest1.i} | 2 +- .../RTL2020/BVRTL2020salt5triaxialtest2.i | 363 + .../RTL2020/BVRTL2020salt5triaxialtest3.i | 374 + .../BVRTL2020salt5triaxialtest3_csv.xlsx | Bin 0 -> 141403 bytes .../BVRTL2020salt5triaxialtest_test1.xlsx | Bin 0 -> 163970 bytes .../BVRTL2020salt5triaxialtest_test2.xlsx | Bin 0 -> 134316 bytes .../viscoelasticity/parametric/parametric.i | 350 + .../viscoelasticity/parametric/regular.geo | 84 + .../parametric/regular.geo:Zone.Identifier | 2 + .../viscoelasticity/parametric/regular.msh | 25071 ++++++++++++++++ 10 files changed, 26245 insertions(+), 1 deletion(-) rename examples/viscoelasticity/RTL2020/{BVRTL2020salt5triaxialtest.i => BVRTL2020salt5triaxialtest1.i} (99%) create mode 100644 examples/viscoelasticity/RTL2020/BVRTL2020salt5triaxialtest2.i create mode 100644 examples/viscoelasticity/RTL2020/BVRTL2020salt5triaxialtest3.i create mode 100644 examples/viscoelasticity/RTL2020/salt5results/BVRTL2020salt5triaxialtest3_csv.xlsx create mode 100644 examples/viscoelasticity/RTL2020/salt5results/BVRTL2020salt5triaxialtest_test1.xlsx create mode 100644 examples/viscoelasticity/RTL2020/salt5results/BVRTL2020salt5triaxialtest_test2.xlsx create mode 100644 examples/viscoelasticity/parametric/parametric.i create mode 100644 examples/viscoelasticity/parametric/regular.geo create mode 100644 examples/viscoelasticity/parametric/regular.geo:Zone.Identifier create mode 100644 examples/viscoelasticity/parametric/regular.msh diff --git a/examples/viscoelasticity/RTL2020/BVRTL2020salt5triaxialtest.i b/examples/viscoelasticity/RTL2020/BVRTL2020salt5triaxialtest1.i similarity index 99% rename from examples/viscoelasticity/RTL2020/BVRTL2020salt5triaxialtest.i rename to examples/viscoelasticity/RTL2020/BVRTL2020salt5triaxialtest1.i index 12c4284..46ebbcf 100644 --- a/examples/viscoelasticity/RTL2020/BVRTL2020salt5triaxialtest.i +++ b/examples/viscoelasticity/RTL2020/BVRTL2020salt5triaxialtest1.i @@ -1,5 +1,5 @@ # Modified Lemaitre creep model -# See Fig. 7 of Azabou et al. (2021) +# See the first three figures of Fig.8 in Azabou et al. (2021) # Parameters # Units: stress in MPa, time in days, strain in m / m E = 22126 diff --git a/examples/viscoelasticity/RTL2020/BVRTL2020salt5triaxialtest2.i b/examples/viscoelasticity/RTL2020/BVRTL2020salt5triaxialtest2.i new file mode 100644 index 0000000..019922d --- /dev/null +++ b/examples/viscoelasticity/RTL2020/BVRTL2020salt5triaxialtest2.i @@ -0,0 +1,363 @@ +# Modified Lemaitre creep model +# See the first three figures of Fig.8 in Azabou et al. (2021) +# Parameters +# Units: stress in MPa, time in days, strain in m / m +E = 22126 +nu = 0.2 +alpha = 0.5812 +A1 = 0.1854 +n1 = 2.1012 +A2 = 3.7009 +n2 = 6.7562 +A = 155.6582 +n = 11.989 +B = 0.01918 +m = 2.2195 +Tr = 289 +Ar = 1725 +P = 5 +z = 0.4523 +Nz = 0.0241 +nz = 1.2644 +Mz = 0.024 +mz = 1.028 + +[Mesh] + type = GeneratedMesh + dim = 3 + # nx = 5 + # ny = 10 + # nz = 5 + nx = 1 + ny = 1 + nz = 1 + xmin = 0 + xmax = 65e-03 + ymin = 0 + ymax = 130e-03 + zmin = 0 + zmax = 65e-03 +[] + +[Variables] + [disp_x] + order = FIRST + family = LAGRANGE + [] + [disp_y] + order = FIRST + family = LAGRANGE + [] + [disp_z] + order = FIRST + family = LAGRANGE + [] +[] + +[Kernels] + [stress_x] + type = BVStressDivergence + component = x + variable = disp_x + [] + [stress_y] + type = BVStressDivergence + component = y + variable = disp_y + [] + [stress_z] + type = BVStressDivergence + component = z + variable = disp_z + [] +[] + +[AuxVariables] + [temp] + order = FIRST + family = LAGRANGE + initial_condition = 293.15 + [] + [eqv_stress] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain_rate] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_L] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_R] + order = CONSTANT + family = MONOMIAL + [] + [strain_yy] + order = CONSTANT + family = MONOMIAL + [] + [stress_yy] + order = CONSTANT + family = MONOMIAL + [] + [vol_strain] + order = CONSTANT + family = MONOMIAL + [] + [vol_strain_neg] + order = CONSTANT + family = MONOMIAL + [] +[] + +[AuxKernels] + [temp_aux] + type = ConstantAux + variable = temp + value = 293.15 + execute_on = 'TIMESTEP_END' + [] + [eqv_stress_aux] + type = BVMisesStressAux + variable = eqv_stress + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_aux] + type = BVEqvStrainAux + variable = eqv_strain + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_rate_aux] + type = BVEqvStrainRateAux + variable = eqv_strain_rate + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_L_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_L + property = eqv_creep_strain_L + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_R_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_R + property = eqv_creep_strain_R + execute_on = 'TIMESTEP_END' + [] + [strain_zz_aux] + type = BVStrainComponentAux + variable = strain_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [stress_zz_aux] + type = BVStressComponentAux + variable = stress_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [vol_strain_aux] + type = BVVolStrainAux + variable = vol_strain + execute_on = 'TIMESTEP_END' + [] + [vol_strain_neg] + type = ParsedAux + coupled_variables = vol_strain + expression = '-vol_strain' + variable = vol_strain_neg + [] +[] + +[Functions] + [strain_rate] + type = ParsedFunction + symbol_names = 'e_dot L' + symbol_values = '1.0e-05 130e-03' + expression = '-e_dot*L*t*86400' #converted to per days + [] +[] + +[BCs] + [no_x] + type = DirichletBC + variable = disp_x + boundary = 'left' + value = 0.0 + [] + [no_y] + type = DirichletBC + variable = disp_y + boundary = 'bottom' + value = 0.0 + [] + [no_z] + type = DirichletBC + variable = disp_z + boundary = 'back' + value = 0.0 + [] + [BVPressure] + [pressure_right] + boundary = 'right' + displacement_vars = 'disp_x disp_y disp_z' + function = ${P} + [] + [pressure_front] + boundary = 'front' + displacement_vars = 'disp_x disp_y disp_z' + function = ${P} + [] + [] + [strain_rate] + type = FunctionDirichletBC + variable = disp_y + boundary = 'top' + function = strain_rate + [] +[] + +[Materials] + [elasticity] + type = BVMechanicalMaterial + displacements = 'disp_x disp_y disp_z' + young_modulus = ${E} + poisson_ratio = ${nu} + initial_stress = '-${P} -${P} -${P}' + inelastic_models = 'viscoelastic' + [] + [viscoelastic] + type = BVRTL2020ModelUpdate + volumetric = true + temperature = temp + Tr = ${Tr} + Ar = ${Ar} + alpha = ${alpha} + A1 = ${A1} + n1 = ${n1} + A2 = ${A2} + n2 = ${n2} + A = ${A} + n = ${n} + B = ${B} + m = ${m} + Nz = ${Nz} + nz = ${nz} + Mz = ${Mz} + mz = ${mz} + z = ${z} + [] +[] + +[Postprocessors] + [eqv_strain_rate] + type = ElementAverageValue + variable = eqv_strain_rate + outputs = csv + [] + [eqv_strain] + type = ElementAverageValue + variable = eqv_strain + outputs = csv + [] + [eqv_strain_L] + type = ElementAverageValue + variable = eqv_creep_strain_L + outputs = csv + [] + [eqv_strain_R] + type = ElementAverageValue + variable = eqv_creep_strain_R + outputs = csv + [] + [strain_zz] + type = ElementAverageValue + variable = strain_yy + outputs = csv + [] + [stress_zz] + type = ElementAverageValue + variable = stress_yy + outputs = csv + [] + [q] + type = ElementAverageValue + variable = eqv_stress + outputs = csv + [] + [vol_strain] + type = ElementAverageValue + variable = vol_strain_neg #used parsedaux kernel to turn the vol strain into negative + outputs = csv + [] +[] + +[Preconditioning] + active = 'hypre' + [hypre] + type = SMP + full = true + petsc_options = '-snes_ksp_ew' + petsc_options_iname = '-pc_type -pc_hypre_type + -snes_atol -snes_rtol -snes_stol -snes_max_it + -snes_linesearch_type' + petsc_options_value = 'hypre boomeramg + 1.0e-10 1.0e-12 0 20 + basic' + [] + [superlu] + type = SMP + full = true + petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_gmres_modifiedgramschmidt -ksp_diagonal_scale -ksp_diagonal_scale_fix' + petsc_options_iname = '-snes_type + -snes_atol -snes_rtol -snes_max_it + -pc_type -pc_factor_mat_solver_package + -snes_linesearch_type' + petsc_options_value = 'newtonls + 1e-10 1e-12 50 + lu superlu_dist + l2' + [] + [asm] + type = SMP + petsc_options = '-snes_ksp_ew' + petsc_options_iname = '-ksp_type + -pc_type + -sub_pc_type + -snes_type -snes_atol -snes_rtol -snes_max_it -snes_linesearch_type + -ksp_gmres_restart' + petsc_options_value = 'fgmres + asm + ilu + newtonls 1e-10 1e-10 120 basic + 201' + [] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + automatic_scaling = true + start_time = 0.0 + end_time = 0.8873456790123455 #200 + num_steps = 800 + #dt = 0.001 + timestep_tolerance = 1.0e-10 +[] + +[Outputs] + perf_graph = true + exodus = true + [csv] + type = CSV + execute_on = 'timestep_end' + [] +[] \ No newline at end of file diff --git a/examples/viscoelasticity/RTL2020/BVRTL2020salt5triaxialtest3.i b/examples/viscoelasticity/RTL2020/BVRTL2020salt5triaxialtest3.i new file mode 100644 index 0000000..26f2dc1 --- /dev/null +++ b/examples/viscoelasticity/RTL2020/BVRTL2020salt5triaxialtest3.i @@ -0,0 +1,374 @@ +# Modified Lemaitre creep model +# See the first three figures of Fig.8 in Azabou et al. (2021) +# Parameters +# Units: stress in MPa, time in days, strain in m / m +E = 22126 +nu = 0.2 +alpha = 0.5812 +A1 = 0.1854 +n1 = 2.1012 +A2 = 3.7009 +n2 = 6.7562 +A = 155.6582 +n = 11.989 +B = 0.01918 +m = 2.2195 +Tr = 289 +Ar = 1725 +P = 5 +z = 0.4523 +Nz = 0.0241 +nz = 1.2644 +Mz = 0.024 +mz = 1.028 + +[Mesh] + type = GeneratedMesh + dim = 3 + # nx = 5 + # ny = 10 + # nz = 5 + nx = 1 + ny = 1 + nz = 1 + xmin = 0 + xmax = 65e-03 + ymin = 0 + ymax = 130e-03 + zmin = 0 + zmax = 65e-03 +[] + +[Variables] + [disp_x] + order = FIRST + family = LAGRANGE + [] + [disp_y] + order = FIRST + family = LAGRANGE + [] + [disp_z] + order = FIRST + family = LAGRANGE + [] +[] + +[Kernels] + [stress_x] + type = BVStressDivergence + component = x + variable = disp_x + [] + [stress_y] + type = BVStressDivergence + component = y + variable = disp_y + [] + [stress_z] + type = BVStressDivergence + component = z + variable = disp_z + [] +[] + +[AuxVariables] + [temp] + order = FIRST + family = LAGRANGE + initial_condition = 303.15 + [] + [eqv_stress] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain_rate] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_L] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_R] + order = CONSTANT + family = MONOMIAL + [] + [strain_yy] + order = CONSTANT + family = MONOMIAL + [] + [stress_yy] + order = CONSTANT + family = MONOMIAL + [] + [vol_strain] + order = CONSTANT + family = MONOMIAL + [] + [vol_strain_neg] + order = CONSTANT + family = MONOMIAL + [] +[] + +[AuxKernels] + [temp_aux] + type = ConstantAux + variable = temp + value = 303.15 + execute_on = 'TIMESTEP_END' + [] + [eqv_stress_aux] + type = BVMisesStressAux + variable = eqv_stress + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_aux] + type = BVEqvStrainAux + variable = eqv_strain + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_rate_aux] + type = BVEqvStrainRateAux + variable = eqv_strain_rate + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_L_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_L + property = eqv_creep_strain_L + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_R_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_R + property = eqv_creep_strain_R + execute_on = 'TIMESTEP_END' + [] + [strain_zz_aux] + type = BVStrainComponentAux + variable = strain_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [stress_zz_aux] + type = BVStressComponentAux + variable = stress_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [vol_strain_aux] + type = BVVolStrainAux + variable = vol_strain + execute_on = 'TIMESTEP_END' + [] + [vol_strain_neg] + type = ParsedAux + coupled_variables = vol_strain + expression = '-vol_strain' + variable = vol_strain_neg + [] +[] + +[Functions] + [P_confining] + type = ParsedFunction + symbol_names = 'p_dot' + symbol_values = '-1e6' # Pa/s + expression = '-p_dot*t' # no need to converted time to per days. final pressure is in Pa + [] + [Q_axial] + type = ParsedFunction + symbol_names = 'P_c' + symbol_values = 'P_confining' + expression = '51-(2*P_c)' + [] +[] + +[BCs] + [no_x] + type = DirichletBC + variable = disp_x + boundary = 'left' + value = 0.0 + [] + [no_y] + type = DirichletBC + variable = disp_y + boundary = 'bottom' + value = 0.0 + [] + [no_z] + type = DirichletBC + variable = disp_z + boundary = 'back' + value = 0.0 + [] + [BVPressure] + [pressure_right] + boundary = 'right' + displacement_vars = 'disp_x disp_y disp_z' + function = P_confining + [] + [pressure_front] + boundary = 'front' + displacement_vars = 'disp_x disp_y disp_z' + function = P_confining + [] + [pressure_top] + boundary = 'top' + displacement_vars = 'disp_x disp_y disp_z' + function = Q_axial + [] + [] + # [axial_stress] + # type = FunctionDirichletBC + # variable = disp_y + # boundary = 'top' + # function = Q_axial + # [] +[] + +[Materials] + [elasticity] + type = BVMechanicalMaterial + displacements = 'disp_x disp_y disp_z' + young_modulus = ${E} + poisson_ratio = ${nu} + initial_stress = '-${P} -${P} -${P}' + inelastic_models = 'viscoelastic' + [] + [viscoelastic] + type = BVRTL2020ModelUpdate + volumetric = true + temperature = temp + Tr = ${Tr} + Ar = ${Ar} + alpha = ${alpha} + A1 = ${A1} + n1 = ${n1} + A2 = ${A2} + n2 = ${n2} + A = ${A} + n = ${n} + B = ${B} + m = ${m} + Nz = ${Nz} + nz = ${nz} + Mz = ${Mz} + mz = ${mz} + z = ${z} + [] +[] + +[Postprocessors] + [eqv_strain_rate] + type = ElementAverageValue + variable = eqv_strain_rate + outputs = csv + [] + [eqv_strain] + type = ElementAverageValue + variable = eqv_strain + outputs = csv + [] + [eqv_strain_L] + type = ElementAverageValue + variable = eqv_creep_strain_L + outputs = csv + [] + [eqv_strain_R] + type = ElementAverageValue + variable = eqv_creep_strain_R + outputs = csv + [] + [strain_zz] + type = ElementAverageValue + variable = strain_yy + outputs = csv + [] + [stress_zz] + type = ElementAverageValue + variable = stress_yy + outputs = csv + [] + [q] + type = ElementAverageValue + variable = eqv_stress + outputs = csv + [] + [vol_strain] + type = ElementAverageValue + variable = vol_strain_neg #used parsedaux kernel to turn the vol strain into negative + outputs = csv + [] +[] + +[Preconditioning] + active = 'hypre' + [hypre] + type = SMP + full = true + petsc_options = '-snes_ksp_ew' + petsc_options_iname = '-pc_type -pc_hypre_type + -snes_atol -snes_rtol -snes_stol -snes_max_it + -snes_linesearch_type' + petsc_options_value = 'hypre boomeramg + 1.0e-10 1.0e-12 0 20 + basic' + [] + [superlu] + type = SMP + full = true + petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_gmres_modifiedgramschmidt -ksp_diagonal_scale -ksp_diagonal_scale_fix' + petsc_options_iname = '-snes_type + -snes_atol -snes_rtol -snes_max_it + -pc_type -pc_factor_mat_solver_package + -snes_linesearch_type' + petsc_options_value = 'newtonls + 1e-10 1e-12 50 + lu superlu_dist + l2' + [] + [asm] + type = SMP + petsc_options = '-snes_ksp_ew' + petsc_options_iname = '-ksp_type + -pc_type + -sub_pc_type + -snes_type -snes_atol -snes_rtol -snes_max_it -snes_linesearch_type + -ksp_gmres_restart' + petsc_options_value = 'fgmres + asm + ilu + newtonls 1e-10 1e-10 120 basic + 201' + [] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + automatic_scaling = true + start_time = 0.0 + end_time = 0.8873456790123455 #200 + num_steps = 800 + #dt = 0.001 + timestep_tolerance = 1.0e-10 +[] + +[Outputs] + perf_graph = true + exodus = true + [csv] + type = CSV + execute_on = 'timestep_end' + [] +[] \ No newline at end of file diff --git a/examples/viscoelasticity/RTL2020/salt5results/BVRTL2020salt5triaxialtest3_csv.xlsx b/examples/viscoelasticity/RTL2020/salt5results/BVRTL2020salt5triaxialtest3_csv.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..1b55f4b2008c7af0a73aa1ee11373ec66c696439 GIT binary patch literal 141403 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 z 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 GA>BV>lI+g)ZM2HD5BnW*>@KnIn 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 literal 0 HcmV?d00001 diff --git a/examples/viscoelasticity/RTL2020/salt5results/BVRTL2020salt5triaxialtest_test2.xlsx b/examples/viscoelasticity/RTL2020/salt5results/BVRTL2020salt5triaxialtest_test2.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..fc0590b52f754f71e803bd45685f1d7b8c4e3955 GIT binary patch literal 134316 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ⅈ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

pPxV30OoGv<~4oUv9Tgrxi2d0YDY+qg(5;S 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

Pmk=` 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 literal 0 HcmV?d00001 diff --git a/examples/viscoelasticity/munson-dawson/munson_dawson.py b/examples/viscoelasticity/munson-dawson/munson_dawson.py index 66800f7..7d37eb0 100644 --- a/examples/viscoelasticity/munson-dawson/munson_dawson.py +++ b/examples/viscoelasticity/munson-dawson/munson_dawson.py @@ -115,32 +115,32 @@ def plot_munson_dawson(ax): tn, gamma_R_n, gamma_R_bar_n = numericalSolution() # Plot analytical solutions - ax.plot(ta, gamma_R_a, color="red", linewidth=2, label="γ_R (Analytical)") + ax.plot(ta, gamma_R_a, color="red", linewidth=2, label="Analytical solution") # ax.plot(ta, gamma_R_bar_a, color="blue", linestyle="--", linewidth=2, label="γ̄_R (Analytical)") # Plot numerical solutions - ax.scatter(tn, gamma_R_n, c="k", marker="o", s=20, linewidths=0.0, label="γ_R (Numerical)") + ax.scatter(tn, gamma_R_n, c="k", marker="o", s=20, linewidths=0.0, label="Numerical solution") # ax.scatter(tn, gamma_R_bar_n, c="gray", marker="s", s=20, linewidths=0.0, label="γ̄_R (Numerical)") # Add vertical line at stress switch - ax.axvline(x=t_switch, color='k', linestyle=':', alpha=0.7, label=f'Stress switch (t = {t_switch} days)') + ax.axvline(x=t_switch, color='k', linestyle=':', alpha=0.7, label=r"Stress switch ($t = {}$ days)".format(t_switch)) # Legend ax.legend(loc="best") # Additional plot settings - ax.set_ylabel(r"Creep strain, $\gamma_R$ (×1e-6)") + ax.set_ylabel(r"Creep strain, $\gamma_{R}$ ($\mu m / m$)") ax.set_xlabel(r"Time, $t$ (days)") - ax.grid(True, alpha=0.3) + # ax.grid(True, alpha=0.3) if __name__ == '__main__': # Figure setup - fig, ax = plt.subplots(figsize=(10, 6)) + fig, ax = plt.subplots() plot_munson_dawson(ax) ax.set_xlim(0, 30.0) - ax.set_ylim(None, None) # Auto-scale y-axis + ax.set_ylim(0, None) # Auto-scale y-axis fig.savefig("../../../doc/content/media/munson_dawson_strain.png", format="PNG", dpi=300, bbox_inches="tight") plt.show() \ No newline at end of file diff --git a/test/tests/viscoelasticity/tests b/test/tests/viscoelasticity/tests new file mode 100644 index 0000000..726fbd4 --- /dev/null +++ b/test/tests/viscoelasticity/tests @@ -0,0 +1,32 @@ +[Tests] + [linear_maxwell] + type = 'Exodiff' + input = 'linear_maxwell.i' + exodiff = 'linear_maxwell_out.e' + [] + [linear_kelvin] + type = 'Exodiff' + input = 'linear_kelvin.i' + exodiff = 'linear_kelvin_out.e' + [] + [burger] + type = 'Exodiff' + input = 'burger.i' + exodiff = 'burger_out.e' + [] + [lubby2] + type = 'Exodiff' + input = 'lubby2.i' + exodiff = 'lubby2_out.e' + [] + [blanco-martin-lemaitre] + type = 'Exodiff' + input = 'blanco-martin-lemaitre.i' + exodiff = 'blanco-martin-lemaitre_out.e' + [] + [blanco-martin-rtl] + type = 'Exodiff' + input = 'blanco-martin-rtl.i' + exodiff = 'blanco-martin-rtl_out.e' + [] +[] \ No newline at end of file From 73e4cbd84d46c7c4cbb5ed2a52fa7370b15e97dc Mon Sep 17 00:00:00 2001 From: Antoine Jacquey Date: Thu, 5 Jun 2025 18:33:10 -0400 Subject: [PATCH 34/39] Fixed documentation --- doc/config.yml | 1 + doc/content/examples/viscoplasticity/index.md | 2 +- .../examples/viscoplasticity/lemaitre.md | 4 ++-- .../examples/viscoplasticity/munson_dawson.md | 1 + doc/content/media/munson_dawson_strain.png | Bin 126700 -> 121268 bytes doc/moosedocs.py | 4 ++-- .../munson-dawson/munson_dawson.py | 7 +++---- 7 files changed, 10 insertions(+), 9 deletions(-) create mode 100644 doc/content/examples/viscoplasticity/munson_dawson.md diff --git a/doc/config.yml b/doc/config.yml index 8395a06..e794d50 100644 --- a/doc/config.yml +++ b/doc/config.yml @@ -20,6 +20,7 @@ Extensions: Examples: Poroelasticity: examples/poroelasticity/index.md Viscoelasticity: examples/viscoelasticity/index.md + Viscoplasticity: examples/viscoplasticity/index.md Documentation: Beaver syntax: documentation/beaver.md MooseDocs.extensions.appsyntax: diff --git a/doc/content/examples/viscoplasticity/index.md b/doc/content/examples/viscoplasticity/index.md index a5e31bc..751bc4a 100644 --- a/doc/content/examples/viscoplasticity/index.md +++ b/doc/content/examples/viscoplasticity/index.md @@ -1,4 +1,4 @@ # Viscoplasticity !content outline max_level=3 pages=lemaitre.md - \ No newline at end of file + munson_dawson.md \ No newline at end of file diff --git a/doc/content/examples/viscoplasticity/lemaitre.md b/doc/content/examples/viscoplasticity/lemaitre.md index e552d38..068a372 100644 --- a/doc/content/examples/viscoplasticity/lemaitre.md +++ b/doc/content/examples/viscoplasticity/lemaitre.md @@ -4,7 +4,7 @@ This problem considers a squared medium subject to external stress leading to cr ## Setup -The squared medium is subject to a compressive horizontal uniaxial stress at a constant temperature, resulting in a uniaxial deformation. The setup is sketched in [!ref](fig_linear_kelvin_setup). +The squared medium is subject to a compressive horizontal uniaxial stress at a constant temperature, resulting in a uniaxial deformation. The setup is sketched in [!ref](fig_lemaitre_creep_model_setup). !media media/linear_kelvin.png style=display:block;margin:auto;width:80%; caption=Setup for the Lemaitre's viscoplastic medium. id=fig_lemaitre_creep_model_setup @@ -36,4 +36,4 @@ The following creep curve shows a comparison between the analytical and the nume !bibtex bibliography !content pagination use_title=True - \ No newline at end of file + next=viscoplasticity/munson_dawson.md \ No newline at end of file diff --git a/doc/content/examples/viscoplasticity/munson_dawson.md b/doc/content/examples/viscoplasticity/munson_dawson.md new file mode 100644 index 0000000..7ebdbfb --- /dev/null +++ b/doc/content/examples/viscoplasticity/munson_dawson.md @@ -0,0 +1 @@ +# Munson-Dawson viscoplastic model diff --git a/doc/content/media/munson_dawson_strain.png b/doc/content/media/munson_dawson_strain.png index 98e644fc1050dd22912d9fdde18967f8dc67d249..f8cf3a2ed03330309ec05f985a7d9f277ab37ceb 100644 GIT binary patch delta 57156 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 diff --git a/doc/moosedocs.py b/doc/moosedocs.py index 3cb7f50..d0f7b97 100755 --- a/doc/moosedocs.py +++ b/doc/moosedocs.py @@ -1,6 +1,6 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 #* This file is part of the MOOSE framework -#* https://www.mooseframework.org +#* https://mooseframework.inl.gov #* #* All rights reserved, see COPYRIGHT for full restrictions #* https://github.com/idaholab/moose/blob/master/COPYRIGHT diff --git a/examples/viscoelasticity/munson-dawson/munson_dawson.py b/examples/viscoelasticity/munson-dawson/munson_dawson.py index 7d37eb0..55944a6 100644 --- a/examples/viscoelasticity/munson-dawson/munson_dawson.py +++ b/examples/viscoelasticity/munson-dawson/munson_dawson.py @@ -115,11 +115,11 @@ def plot_munson_dawson(ax): tn, gamma_R_n, gamma_R_bar_n = numericalSolution() # Plot analytical solutions - ax.plot(ta, gamma_R_a, color="red", linewidth=2, label="Analytical solution") + ax.plot(ta, gamma_R_a, color="red", linewidth=2, label="Analytical") # ax.plot(ta, gamma_R_bar_a, color="blue", linestyle="--", linewidth=2, label="γ̄_R (Analytical)") # Plot numerical solutions - ax.scatter(tn, gamma_R_n, c="k", marker="o", s=20, linewidths=0.0, label="Numerical solution") + ax.scatter(tn, gamma_R_n, c="k", marker="o", s=20, linewidths=0.0, label="Numerical") # ax.scatter(tn, gamma_R_bar_n, c="gray", marker="s", s=20, linewidths=0.0, label="γ̄_R (Numerical)") # Add vertical line at stress switch @@ -142,5 +142,4 @@ def plot_munson_dawson(ax): ax.set_xlim(0, 30.0) ax.set_ylim(0, None) # Auto-scale y-axis - fig.savefig("../../../doc/content/media/munson_dawson_strain.png", format="PNG", dpi=300, bbox_inches="tight") - plt.show() \ No newline at end of file + fig.savefig("../../../doc/content/media/munson_dawson_strain.png", format="PNG", dpi=300, bbox_inches="tight") \ No newline at end of file From a9f89f7097d0583675e31c78e6b64413f27aec25 Mon Sep 17 00:00:00 2001 From: iyevugah Date: Sun, 8 Jun 2025 07:44:26 -0400 Subject: [PATCH 35/39] added documentation for munson-dawson.i --- .../examples/viscoplasticity/munson_dawson.md | 77 ++++++++++++++++++- 1 file changed, 76 insertions(+), 1 deletion(-) diff --git a/doc/content/examples/viscoplasticity/munson_dawson.md b/doc/content/examples/viscoplasticity/munson_dawson.md index 7ebdbfb..344181d 100644 --- a/doc/content/examples/viscoplasticity/munson_dawson.md +++ b/doc/content/examples/viscoplasticity/munson_dawson.md @@ -1 +1,76 @@ -# Munson-Dawson viscoplastic model +# Modified Munson-Dawson viscoplastic model + +This problem considers a squared medium subject to external stress leading to creep. +The material deforms following the modified Munson-Dawson's viscoplastic constitutive model described in [!cite](azabou2021rock). + +## Setup + +The squared medium is subject to a compressive horizontal uniaxial stress at a constant temperature, resulting in a uniaxial deformation. +The setup is sketched in [!ref](fig_munson_dawson_creep_model_setup). +The uniaxial stress is held constant at 10MPa for a duration of 15 days before dropping to 5MPa for another 15 days to simulate a multi-stage creep test. + +!media media/linear_kelvin.png style=display:block;margin:auto;width:80%; caption=Setup for the munson_dawson's viscoplastic medium. id=fig_munson_dawson_creep_model_setup + +## Solutions + +The scalar equivalent creep strain evolution is governed by the following constitutive model: + +\begin{equation} + \dot\gamma_{vp} = + \begin{cases} + A \left( 1 - \frac{\gamma_{vp}}{\bar\gamma_{vp}} \right)^n R(\sigma, T) & \text{if } \gamma_{vp} \leq \bar\gamma_{vp} \\ + -B \left( \frac{\gamma_{vp}}{\bar\gamma_{vp}} - 1 \right)^m R(\sigma, T) & \text{if } \gamma_{vp} \geq \bar\gamma_{vp} + \end{cases} +\end{equation} + +where, $A$, $B$, $m$, and $n$ are material parameters, with $A > 0$, $B > 0$, and $m > 1$, $n > 1$ [!cite](azabou2021rock). +The parameter $\bar\gamma_{vp}$ describes the saturation strain, similar to that expressed in the Munson-Dawson model, +and corresponds to the threshold of transient deformation. It is defined as: + +\begin{equation} + \bar\gamma_{vp}(\sigma, T)= \left\langle \frac{q}{A_1} \right\rangle^{n_1} + \label{eq:29} +\end{equation} +here $A_1$ and $n_1$ are material parameters and $q = \sqrt{\frac{3}{2}\tau_{ij}\tau_{ij}}$ +is the equivalent stress, representing the loading function. $\tau_{ij}$ is the deviatoric stress tensor. + +The function $R$ corresponds to the Lemaitre’s scalar equivalent creep strain evolution, +ensuring that $\dot\gamma_{vp}$ have similar order of magnitude as the Lemaitre's scalar equivalent creep model [!cite](azabou2021rock): + +\begin{equation} + R(\sigma, T) = \exp \left( A_R \left( \frac{1}{T_r} - \frac{1}{T} \right) \right) \left\langle \frac{q}{A_2} \right\rangle^{n_2} + \label{eq:30} +\end{equation} + +This model is equivalent to the Munson-Dawson model provided the following conditions are satisfied: +\begin{itemize} + \item Parameter $A = \exp{\Delta}$ + \item Parameter n = + $\begin{cases} + -0.0098\Delta^3 + 0.2040\Delta^2 + 0.5622\Delta + 2.0252, & \text{if } \Delta \leq 6 \\ + 1.9987\Delta - 1.4567, & \text{if } \Delta > 6 + \end{cases}$ + \item Parameter $B = 0$ (i.e., the transient strain threshold is not exceeded). Hence, the strain-rate is always transient. +\end{itemize} + +The analytical solution for this problem is given as [!cite](azabou2021rock): + +\begin{align*} + \gamma_{vp} \left( t \right)&= {\gamma_{vp}}_0 + (\bar\gamma_{vp} + {\gamma_{vp}}_0) \xi \\ + \xi \left( t \right) &= \left( 1 - \frac{1}{1 + V(t - t_0)} \right)^{\frac{1}{k-1}} \\ + V &= (k - 1) U \frac{A_1^{n_1}}{A_2^{n_2}} q^{n_2 - n_1} \\ + \text{when } \gamma_{vp} &\leq \bar\gamma_{vp}; \quad k = n; \quad U = A \left( 1 - \frac{{\gamma_{vp}}_0}{\bar\gamma_{vp}} \right)^{n-1} \\ + \text{when } \gamma_{vp} &\geq \bar\gamma_{vp}; \quad k = m; \quad U = B \left( \frac{{\gamma_{vp}}_0}{\bar\gamma_{vp}} - 1 \right)^{m-1} +\end{align*} + +The following creep curve shows a comparison between the analytical and the numerical solutions of the modified Munson-Dawson model. + +!media media/munson_dawson_strain.png style=display:block;margin:auto;width:60%; caption=Creep strain evolution in a munson_dawson's viscoplastic medium. id=fig_munson_dawson + +## Complete Source Files + +- [munson_dawson.i](https://github.com/ajacquey/beaver/blob/main/examples/viscoplasticity/munson_dawson/munson_dawson.i) + +!bibtex bibliography + +!content pagination use_title=True From f4da39ab084af1988b94b70ea3af1953a8c91a29 Mon Sep 17 00:00:00 2001 From: Antoine Jacquey Date: Tue, 24 Jun 2025 21:51:17 -0400 Subject: [PATCH 36/39] Fixed Munson-Dawson doc --- .../examples/viscoplasticity/munson_dawson.md | 47 +++++++++++-------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/doc/content/examples/viscoplasticity/munson_dawson.md b/doc/content/examples/viscoplasticity/munson_dawson.md index 344181d..3afe1fa 100644 --- a/doc/content/examples/viscoplasticity/munson_dawson.md +++ b/doc/content/examples/viscoplasticity/munson_dawson.md @@ -18,17 +18,17 @@ The scalar equivalent creep strain evolution is governed by the following consti \begin{equation} \dot\gamma_{vp} = \begin{cases} - A \left( 1 - \frac{\gamma_{vp}}{\bar\gamma_{vp}} \right)^n R(\sigma, T) & \text{if } \gamma_{vp} \leq \bar\gamma_{vp} \\ - -B \left( \frac{\gamma_{vp}}{\bar\gamma_{vp}} - 1 \right)^m R(\sigma, T) & \text{if } \gamma_{vp} \geq \bar\gamma_{vp} + A \left( 1 - \frac{\gamma_{vp}}{\bar{\gamma}_{vp}} \right)^n R(\sigma, T) & \text{if } \gamma_{vp} \leq \bar{\gamma}_{vp} \\ + -B \left( \frac{\gamma_{vp}}{\bar{\gamma}_{vp}} - 1 \right)^m R(\sigma, T) & \text{if } \gamma_{vp} \geq \bar{\gamma}_{vp} \end{cases} \end{equation} where, $A$, $B$, $m$, and $n$ are material parameters, with $A > 0$, $B > 0$, and $m > 1$, $n > 1$ [!cite](azabou2021rock). -The parameter $\bar\gamma_{vp}$ describes the saturation strain, similar to that expressed in the Munson-Dawson model, +The parameter $\bar{\gamma}_{vp}$ describes the saturation strain, similar to that expressed in the Munson-Dawson model, and corresponds to the threshold of transient deformation. It is defined as: \begin{equation} - \bar\gamma_{vp}(\sigma, T)= \left\langle \frac{q}{A_1} \right\rangle^{n_1} + \bar{\gamma}_{vp}(\sigma, T)= \left\langle \frac{q}{A_1} \right\rangle^{n_1} \label{eq:29} \end{equation} here $A_1$ and $n_1$ are material parameters and $q = \sqrt{\frac{3}{2}\tau_{ij}\tau_{ij}}$ @@ -39,33 +39,39 @@ ensuring that $\dot\gamma_{vp}$ have similar order of magnitude as the Lemaitre' \begin{equation} R(\sigma, T) = \exp \left( A_R \left( \frac{1}{T_r} - \frac{1}{T} \right) \right) \left\langle \frac{q}{A_2} \right\rangle^{n_2} - \label{eq:30} \end{equation} -This model is equivalent to the Munson-Dawson model provided the following conditions are satisfied: -\begin{itemize} - \item Parameter $A = \exp{\Delta}$ - \item Parameter n = - $\begin{cases} +This model is equivalent to the Munson-Dawson model provided the following conditions are satisfied: + +- Parameter $A = \exp{\Delta}$ +- Parameter $n = + \begin{cases} -0.0098\Delta^3 + 0.2040\Delta^2 + 0.5622\Delta + 2.0252, & \text{if } \Delta \leq 6 \\ 1.9987\Delta - 1.4567, & \text{if } \Delta > 6 \end{cases}$ - \item Parameter $B = 0$ (i.e., the transient strain threshold is not exceeded). Hence, the strain-rate is always transient. -\end{itemize} +- Parameter $B = 0$ (i.e., the transient strain threshold is not exceeded). Hence, the strain-rate is always transient. The analytical solution for this problem is given as [!cite](azabou2021rock): -\begin{align*} - \gamma_{vp} \left( t \right)&= {\gamma_{vp}}_0 + (\bar\gamma_{vp} + {\gamma_{vp}}_0) \xi \\ - \xi \left( t \right) &= \left( 1 - \frac{1}{1 + V(t - t_0)} \right)^{\frac{1}{k-1}} \\ - V &= (k - 1) U \frac{A_1^{n_1}}{A_2^{n_2}} q^{n_2 - n_1} \\ - \text{when } \gamma_{vp} &\leq \bar\gamma_{vp}; \quad k = n; \quad U = A \left( 1 - \frac{{\gamma_{vp}}_0}{\bar\gamma_{vp}} \right)^{n-1} \\ - \text{when } \gamma_{vp} &\geq \bar\gamma_{vp}; \quad k = m; \quad U = B \left( \frac{{\gamma_{vp}}_0}{\bar\gamma_{vp}} - 1 \right)^{m-1} -\end{align*} +\begin{equation*} + \gamma_{vp} \left( t \right) = {\gamma_{vp}}_0 + (\bar{\gamma}_{vp} + {\gamma_{vp}}_0) \, \xi\left(t\right), +\end{equation*} +\begin{equation*} + \xi \left( t \right) = \left(1 - \frac{1}{1 + V(t - t_0)} \right)^{\frac{1}{k-1}}, +\end{equation*} +\begin{equation*} + V = (k - 1) \, U \, \frac{A_{1}^{n_{1}}}{A_{2}^{n_{2}}} \, q^{n_{2} - n_{1}}, +\end{equation*} +\begin{equation*} + \begin{cases} + \text{when } \gamma_{vp} \leq \bar{\gamma}_{vp}; \quad k = n; \quad U = A \left( 1 - \frac{{\gamma_{vp}}_0}{\bar{\gamma}_{vp}} \right)^{n-1} \\ + \text{when } \gamma_{vp} \geq \bar{\gamma}_{vp}; \quad k = m; \quad U = B \left( \frac{{\gamma_{vp}}_0}{\bar{\gamma}_{vp}} - 1 \right)^{m-1} + \end{cases} +\end{equation*} The following creep curve shows a comparison between the analytical and the numerical solutions of the modified Munson-Dawson model. -!media media/munson_dawson_strain.png style=display:block;margin:auto;width:60%; caption=Creep strain evolution in a munson_dawson's viscoplastic medium. id=fig_munson_dawson +!media media/munson_dawson_strain.png style=display:block;margin:auto;width:60%; caption=Creep strain evolution in a Munson-Dawson's viscoplastic medium. id=fig_munson_dawson ## Complete Source Files @@ -74,3 +80,4 @@ The following creep curve shows a comparison between the analytical and the nume !bibtex bibliography !content pagination use_title=True + previous=viscoplasticity/lemaitre.md From 29ea287bb3d67af7567c59b119fa6cde0f79527f Mon Sep 17 00:00:00 2001 From: Antoine Jacquey Date: Tue, 24 Jun 2025 21:52:03 -0400 Subject: [PATCH 37/39] Fixed spacing --- doc/content/examples/viscoplasticity/munson_dawson.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/content/examples/viscoplasticity/munson_dawson.md b/doc/content/examples/viscoplasticity/munson_dawson.md index 3afe1fa..9820800 100644 --- a/doc/content/examples/viscoplasticity/munson_dawson.md +++ b/doc/content/examples/viscoplasticity/munson_dawson.md @@ -7,7 +7,7 @@ The material deforms following the modified Munson-Dawson's viscoplastic constit The squared medium is subject to a compressive horizontal uniaxial stress at a constant temperature, resulting in a uniaxial deformation. The setup is sketched in [!ref](fig_munson_dawson_creep_model_setup). -The uniaxial stress is held constant at 10MPa for a duration of 15 days before dropping to 5MPa for another 15 days to simulate a multi-stage creep test. +The uniaxial stress is held constant at 10 MPa for a duration of 15 days before dropping to 5 MPa for another 15 days to simulate a multi-stage creep test. !media media/linear_kelvin.png style=display:block;margin:auto;width:80%; caption=Setup for the munson_dawson's viscoplastic medium. id=fig_munson_dawson_creep_model_setup From a19ebd9338592a9648e72955e405ebe0162ff9fc Mon Sep 17 00:00:00 2001 From: Antoine Jacquey Date: Sat, 13 Sep 2025 10:53:03 -0400 Subject: [PATCH 38/39] Update moose --- moose | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/moose b/moose index 777fc2f..23f8c67 160000 --- a/moose +++ b/moose @@ -1 +1 @@ -Subproject commit 777fc2f5235de934d5f2ada3f5ec2a16990d7d7f +Subproject commit 23f8c673f0797ee707e40f973fe28f7b2c49673e From 63135f1367f195e1baf5d330a8822248635a2a51 Mon Sep 17 00:00:00 2001 From: Antoine Jacquey Date: Fri, 7 Nov 2025 09:48:57 -0500 Subject: [PATCH 39/39] Fix output parameter in two tests. --- test/tests/fluid_flow/fv_single_phase_1D_transient.i | 2 +- test/tests/fluid_flow/single_phase_1D_transient.i | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/tests/fluid_flow/fv_single_phase_1D_transient.i b/test/tests/fluid_flow/fv_single_phase_1D_transient.i index f8cd6b4..07537c7 100644 --- a/test/tests/fluid_flow/fv_single_phase_1D_transient.i +++ b/test/tests/fluid_flow/fv_single_phase_1D_transient.i @@ -127,6 +127,6 @@ [] [Outputs] - interval = 5 + time_step_interval = 5 exodus = true [] diff --git a/test/tests/fluid_flow/single_phase_1D_transient.i b/test/tests/fluid_flow/single_phase_1D_transient.i index 38e16d0..7dbc8f4 100644 --- a/test/tests/fluid_flow/single_phase_1D_transient.i +++ b/test/tests/fluid_flow/single_phase_1D_transient.i @@ -119,6 +119,6 @@ [] [Outputs] - interval = 5 + time_step_interval = 5 exodus = true []

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 QHozCUd_{}|ZM}g11*9W)o&W#< literal 0 HcmV?d00001 diff --git a/examples/viscoelasticity/parametric/parametric.i b/examples/viscoelasticity/parametric/parametric.i new file mode 100644 index 0000000..af7a784 --- /dev/null +++ b/examples/viscoelasticity/parametric/parametric.i @@ -0,0 +1,350 @@ +E = 22126 +nu = 0.2 +alpha = 0.5812 +A1 = 0.1854 +n1 = 2.1012 +A2 = 3.7009 +n2 = 6.7562 +A = 155.6582 +n = 11.989 +B = 0.01918 +m = 2.2195 +Tr = 289 +Ar = 1725 +P = 8.7 +P_TCT = 5 +Q = 12.7 +z = 0.4523 +Nz = 0.0241 +nz = 1.2644 +Mz = 0.024 +mz = 1.028 + +[Mesh] + [efm] + type = FileMeshGenerator + file = regular.msh + [] +[] + +[Variables] + [disp_x] + order = FIRST + family = LAGRANGE + [] + [disp_y] + order = FIRST + family = LAGRANGE + [] + [disp_z] + order = FIRST + family = LAGRANGE + [] +[] + +[Kernels] + [stress_x] + type = BVStressDivergence + component = x + variable = disp_x + [] + [stress_y] + type = BVStressDivergence + component = y + variable = disp_y + [] + [stress_z] + type = BVStressDivergence + component = z + variable = disp_z + [] +[] + +[AuxVariables] + [temp] + order = FIRST + family = LAGRANGE + initial_condition = 313 + [] + [eqv_stress] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain_rate] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_L] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_R] + order = CONSTANT + family = MONOMIAL + [] + [strain_yy] + order = CONSTANT + family = MONOMIAL + [] + [stress_yy] + order = CONSTANT + family = MONOMIAL + [] + [stress_zz] + order = CONSTANT + family = MONOMIAL + [] +[] + +[AuxKernels] + [temp_aux] + type = ConstantAux + variable = temp + value = 313 + execute_on = 'TIMESTEP_END' + [] + [eqv_stress_aux] + type = BVMisesStressAux + variable = eqv_stress + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_aux] + type = BVEqvStrainAux + variable = eqv_strain + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_rate_aux] + type = BVEqvStrainRateAux + variable = eqv_strain_rate + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_L_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_L + property = eqv_creep_strain_L + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_R_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_R + property = eqv_creep_strain_R + execute_on = 'TIMESTEP_END' + [] + [strain_zz_aux] + type = BVStrainComponentAux + variable = strain_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [stress_yy_aux] + type = BVStressComponentAux + variable = stress_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [stress_zz_aux] + type = BVStressComponentAux + variable = stress_yy + index_i = z + index_j = z + execute_on = 'TIMESTEP_END' + [] +[] + +[Functions] + [Q_loading] + type = ParsedFunction + expression = 'if(t<=10,12.7,if(t<=40,15,if(t<=90,20,if(t<=140,22,24))))' + [] + [P_loading] + type = ParsedFunction + expression = 'if(t<=10,8.7,if(t<=40,7.5,if(t<=90,5,if(t<=140,4,3))))' + [] + [strain_rate] + type = ParsedFunction + vars = 'e_dot L' + vals = '1.0e-06 130e-03' + expression = 'e_dot*L*t' + [] +[] + +[BCs] + [no_x] + type = DirichletBC + variable = disp_x + boundary = 'West' + value = 0.0 + [] + [no_y] + type = DirichletBC + variable = disp_y + boundary = 'Bottom' + value = 0.0 + [] + [no_z] + type = DirichletBC + variable = disp_z + boundary = 'North' + value = 0.0 + [] + [BVPressure] + [pressure_right] + boundary = 'East' + displacement_vars = 'disp_x disp_y disp_z' + function = ${P_TCT} #P_loading, use P_TCT for the triaxial compress. test + [] + [pressure_front] + boundary = 'South' + displacement_vars = 'disp_x disp_y disp_z' + function = ${P_TCT} #P_loading + [] + # [pressure_top] + # boundary = 'Top' + # displacement_vars = 'disp_x disp_y disp_z' + # function = Q_loading + # [] + [] + [strain_rate] + type = FunctionDirichletBC + variable = disp_z + boundary = 'Top' + function = strain_rate + [] +[] + +[Materials] + [elasticity] + type = BVMechanicalMaterial + displacements = 'disp_x disp_y disp_z' + young_modulus = ${E} + poisson_ratio = ${nu} + initial_stress = '-${P} -${Q} -${P}' + inelastic_models = 'viscoelastic' + [] + [viscoelastic] + type = BVRTL2020ModelUpdate + volumetric = false + temperature = temp + Tr = ${Tr} + Ar = ${Ar} + alpha = ${alpha} + A1 = ${A1} + n1 = ${n1} + A2 = ${A2} + n2 = ${n2} + A = ${A} + n = ${n} + B = ${B} + m = ${m} + Nz = ${Nz} + nz = ${nz} + Mz = ${Mz} + mz = ${mz} + z = ${z} + [] +[] + +[Postprocessors] + [eqv_strain_rate] + type = ElementAverageValue + variable = eqv_strain_rate + outputs = csv + [] + [eqv_strain] + type = ElementAverageValue + variable = eqv_strain + outputs = csv + [] + [eqv_strain_L] + type = ElementAverageValue + variable = eqv_creep_strain_L + outputs = csv + [] + [eqv_strain_R] + type = ElementAverageValue + variable = eqv_creep_strain_R + outputs = csv + [] + [strain_zz] + type = ElementAverageValue + variable = strain_yy + outputs = csv + [] + [stress_zz] + type = ElementAverageValue + variable = stress_zz + outputs = csv + [] + [q] + type = ElementAverageValue + variable = eqv_stress + outputs = csv + [] +[] + +[Preconditioning] + active = 'hypre' + [hypre] + type = SMP + full = true + petsc_options = '-snes_ksp_ew' + petsc_options_iname = '-pc_type -pc_hypre_type + -snes_atol -snes_rtol -snes_stol -snes_max_it + -snes_linesearch_type' + petsc_options_value = 'hypre boomeramg + 1.0e-10 1.0e-12 0 20 + basic' + [] + [superlu] + type = SMP + full = true + petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_gmres_modifiedgramschmidt -ksp_diagonal_scale -ksp_diagonal_scale_fix' + petsc_options_iname = '-snes_type + -snes_atol -snes_rtol -snes_max_it + -pc_type -pc_factor_mat_solver_package + -snes_linesearch_type' + petsc_options_value = 'newtonls + 1e-10 1e-12 50 + lu superlu_dist + l2' + [] + [asm] + type = SMP + petsc_options = '-snes_ksp_ew' + petsc_options_iname = '-ksp_type + -pc_type + -sub_pc_type + -snes_type -snes_atol -snes_rtol -snes_max_it -snes_linesearch_type + -ksp_gmres_restart' + petsc_options_value = 'fgmres + asm + ilu + newtonls 1e-10 1e-10 120 basic + 201' + [] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + automatic_scaling = true + start_time = 0.0 + end_time = 200 + dt = 0.02 + timestep_tolerance = 1.0e-10 +[] + +[Outputs] + perf_graph = true + exodus = true + [csv] + type = CSV + execute_on = 'timestep_end' + [] +[] \ No newline at end of file diff --git a/examples/viscoelasticity/parametric/regular.geo b/examples/viscoelasticity/parametric/regular.geo new file mode 100644 index 0000000..86878e3 --- /dev/null +++ b/examples/viscoelasticity/parametric/regular.geo @@ -0,0 +1,84 @@ +size_coarse = 65; +size_fine = 4.5; + +Lz = 660; +Ly = 450; + +h = 205.189718; +H = 115.96607696095386; +R = 54.42210251952307; + +Point(1) = {0.0, 0.0, 0.0, size_coarse}; +Point(2) = {Ly, 0.0, 0.0, size_coarse}; +Point(3) = {Ly, 0.0, Lz, size_coarse}; +Point(4) = {0.0, 0.0, Lz, size_coarse}; + +Point(5) = {0.0, 0.0, h, size_fine}; +Point(6) = {0.0, 0.0, h+R, size_coarse}; +Point(7) = {0.0, 0.0, h+R+H, size_coarse}; +Point(8) = {0.0, 0.0, h+R+H+R, size_fine}; + +Point(9) = {R, 0.0, h+R, size_fine}; +Point(10) = {R, 0.0, h+R+H, size_fine}; + +Point(11) = {0, R, h+R+H, size_fine}; +Point(12) = {0, R, h+R, size_fine}; +Point(13) = {0, Ly, 0, size_coarse}; +Point(14) = {0, Ly, Lz, size_coarse}; + +Point(15) = {Ly, Ly, 0, size_coarse}; +Point(16) = {Ly, Ly, Lz, size_coarse}; + +Line(1) = {1, 2}; +Line(2) = {2, 15}; +Line(3) = {15, 13}; +Line(4) = {13, 1}; +Line(5) = {1, 5}; +Line(6) = {8, 4}; +Line(7) = {4, 3}; +Line(8) = {3, 16}; +Line(9) = {16, 14}; +Line(10) = {14, 4}; +Line(11) = {13, 14}; +Line(12) = {15, 16}; +Line(13) = {2, 3}; +Line(14) = {9, 10}; +Line(15) = {12, 11}; +Circle(16) = {5, 6, 9}; +Circle(17) = {5, 6, 12}; +Circle(18) = {12, 6, 9}; +Circle(19) = {11, 7, 10}; +Circle(20) = {10, 7, 8}; +Circle(21) = {8, 7, 11}; + +Curve Loop(1) = {16, -18, -17}; +Surface(1) = {1}; +Curve Loop(2) = {19, 20, 21}; +Surface(2) = {2}; +Curve Loop(3) = {14, -19, -15, 18}; +Surface(3) = {3}; +Curve Loop(4) = {5, 16, 14, 20, 6, 7, -13, -1}; +Plane Surface(4) = {-4}; +Curve Loop(5) = {5, 17, 15, -21, 6, -10, -11, 4}; +Plane Surface(5) = {5}; +Curve Loop(6) = {4, 1, 2, 3}; +Plane Surface(6) = {-6}; +Curve Loop(7) = {2, 12, -8, -13}; +Plane Surface(7) = {7}; +Curve Loop(8) = {12, 9, -11, -3}; +Plane Surface(8) = {-8}; +Curve Loop(9) = {9, 10, 7, 8}; +Plane Surface(9) = {9}; + +Surface Loop(1) = {9, 8, 6, 7, 4, 5, 1, 3, 2}; +Volume(1) = {1}; + +Physical Surface("Top", 22) = {9}; +Physical Surface("South", 23) = {4}; +Physical Surface("North", 24) = {8}; +Physical Surface("East", 25) = {7}; +Physical Surface("West", 26) = {5}; +Physical Surface("Bottom", 27) = {6}; +Physical Surface("Cavern", 29) = {3, 1, 2}; +Physical Volume("Salt", 28) = {1}; +Physical Curve("Wall_profile", 30) = {20, 14, 16}; diff --git a/examples/viscoelasticity/parametric/regular.geo:Zone.Identifier b/examples/viscoelasticity/parametric/regular.geo:Zone.Identifier new file mode 100644 index 0000000..a45e1ac --- /dev/null +++ b/examples/viscoelasticity/parametric/regular.geo:Zone.Identifier @@ -0,0 +1,2 @@ +[ZoneTransfer] +ZoneId=3 diff --git a/examples/viscoelasticity/parametric/regular.msh b/examples/viscoelasticity/parametric/regular.msh new file mode 100644 index 0000000..a5dfccd --- /dev/null +++ b/examples/viscoelasticity/parametric/regular.msh @@ -0,0 +1,25071 @@ +$MeshFormat +2.2 0 8 +$EndMeshFormat +$PhysicalNames +9 +1 30 "Wall_profile" +2 22 "Top" +2 23 "South" +2 24 "North" +2 25 "East" +2 26 "West" +2 27 "Bottom" +2 29 "Cavern" +3 28 "Salt" +$EndPhysicalNames +$Nodes +3935 +1 0 0 0 +2 450 0 0 +3 450 0 660 +4 0 0 660 +5 0 0 205.189718 +6 0 0 430 +7 54.42210251952307 0 259.6118205195231 +8 54.42210251952307 0 375.5778974804769 +9 0 54.42210251952307 375.5778974804769 +10 0 54.42210251952307 259.6118205195231 +11 0 450 0 +12 0 450 660 +13 450 450 0 +14 450 450 660 +15 64.2857142857669 0 0 +16 128.5714285714412 0 0 +17 192.8571428571156 0 0 +18 257.1428571429786 0 0 +19 321.4285714286524 0 0 +20 385.7142857143262 0 0 +21 450 64.2857142857669 0 +22 450 128.5714285714412 0 +23 450 192.8571428571156 0 +24 450 257.1428571429786 0 +25 450 321.4285714286524 0 +26 450 385.7142857143262 0 +27 385.7142857143126 450 0 +28 321.428571428625 450 0 +29 257.1428571429374 450 0 +30 192.8571428570611 450 0 +31 128.571428571374 450 0 +32 64.28571428568711 450 0 +33 0 385.7142857143126 0 +34 0 321.428571428625 0 +35 0 257.1428571429374 0 +36 0 192.8571428570611 0 +37 0 128.571428571374 0 +38 0 64.28571428568711 0 +39 0 0 51.66300792702232 +40 0 0 91.21876753391615 +41 0 0 121.5046022465459 +42 0 0 144.6929324121182 +43 0 0 162.4470657814441 +44 0 0 176.0405042692458 +45 0 0 186.4483122165137 +46 0 0 194.4170432621059 +47 0 0 200.5182971645199 +48 0 0 434.7003858618198 +49 0 0 440.692234898463 +50 0 0 448.3303845721713 +51 0 0 458.0671699261134 +52 0 0 470.4792008610284 +53 0 0 486.3015231987195 +54 0 0 506.4711378385634 +55 0 0 532.1824907365144 +56 0 0 564.958213612494 +57 0 0 606.7392936998672 +58 64.2857142857669 0 660 +59 128.5714285714412 0 660 +60 192.8571428571156 0 660 +61 257.1428571429786 0 660 +62 321.4285714286524 0 660 +63 385.7142857143262 0 660 +64 450 64.2857142857669 660 +65 450 128.5714285714412 660 +66 450 192.8571428571156 660 +67 450 257.1428571429786 660 +68 450 321.4285714286524 660 +69 450 385.7142857143262 660 +70 385.7142857143126 450 660 +71 321.428571428625 450 660 +72 257.1428571429374 450 660 +73 192.8571428570611 450 660 +74 128.571428571374 450 660 +75 64.28571428568711 450 660 +76 0 385.7142857143126 660 +77 0 321.428571428625 660 +78 0 257.1428571429374 660 +79 0 192.8571428570611 660 +80 0 128.571428571374 660 +81 0 64.28571428568711 660 +82 0 450 59.99999999987585 +83 0 450 119.9999999997416 +84 0 450 179.9999999994481 +85 0 450 239.9999999991409 +86 0 450 299.9999999990264 +87 0 450 359.9999999989776 +88 0 450 419.9999999989286 +89 0 450 479.9999999988798 +90 0 450 539.9999999990632 +91 0 450 599.9999999995317 +92 450 450 59.99999999987585 +93 450 450 119.9999999997416 +94 450 450 179.9999999994481 +95 450 450 239.9999999991409 +96 450 450 299.9999999990264 +97 450 450 359.9999999989776 +98 450 450 419.9999999989286 +99 450 450 479.9999999988798 +100 450 450 539.9999999990632 +101 450 450 599.9999999995317 +102 450 0 59.99999999987585 +103 450 0 119.9999999997416 +104 450 0 179.9999999994481 +105 450 0 239.9999999991409 +106 450 0 299.9999999990264 +107 450 0 359.9999999989776 +108 450 0 419.9999999989286 +109 450 0 479.9999999988798 +110 450 0 539.9999999990632 +111 450 0 599.9999999995317 +112 54.42210251952307 0 264.0720542487879 +113 54.42210251952307 0 268.5322879780289 +114 54.42210251952307 0 272.9925217072955 +115 54.42210251952307 0 277.4527554365348 +116 54.42210251952307 0 281.9129891658253 +117 54.42210251952307 0 286.3732228950569 +118 54.42210251952307 0 290.8334566243551 +119 54.42210251952307 0 295.2936903535867 +120 54.42210251952307 0 299.7539240828772 +121 54.42210251952307 0 304.2141578121164 +122 54.42210251952307 0 308.6743915413719 +123 54.42210251952307 0 313.134625270624 +124 54.42210251952307 0 317.5948589998667 +125 54.42210251952307 0 322.0550927291537 +126 54.42210251952307 0 326.5153264584152 +127 54.42210251952307 0 330.9755601877057 +128 54.42210251952307 0 335.4357939169672 +129 54.42210251952307 0 339.8960276462757 +130 54.42210251952307 0 344.3562613755286 +131 54.42210251952307 0 348.8164951048371 +132 54.42210251952307 0 353.27672883409 +133 54.42210251952307 0 357.7369625633985 +134 54.42210251952307 0 362.19719629266 +135 54.42210251952307 0 366.6574300219505 +136 54.42210251952307 0 371.117663751212 +137 0 54.42210251952307 264.0720542487879 +138 0 54.42210251952307 268.5322879780289 +139 0 54.42210251952307 272.9925217072955 +140 0 54.42210251952307 277.4527554365348 +141 0 54.42210251952307 281.9129891658253 +142 0 54.42210251952307 286.3732228950569 +143 0 54.42210251952307 290.8334566243551 +144 0 54.42210251952307 295.2936903535867 +145 0 54.42210251952307 299.7539240828772 +146 0 54.42210251952307 304.2141578121164 +147 0 54.42210251952307 308.6743915413719 +148 0 54.42210251952307 313.134625270624 +149 0 54.42210251952307 317.5948589998667 +150 0 54.42210251952307 322.0550927291537 +151 0 54.42210251952307 326.5153264584152 +152 0 54.42210251952307 330.9755601877057 +153 0 54.42210251952307 335.4357939169672 +154 0 54.42210251952307 339.8960276462757 +155 0 54.42210251952307 344.3562613755286 +156 0 54.42210251952307 348.8164951048371 +157 0 54.42210251952307 353.27672883409 +158 0 54.42210251952307 357.7369625633985 +159 0 54.42210251952307 362.19719629266 +160 0 54.42210251952307 366.6574300219505 +161 0 54.42210251952307 371.117663751212 +162 4.494141614414324 0 205.3755970725032 +163 8.957583683792402 0 205.9319645473492 +164 13.35983637503041 0 206.8550198709063 +165 17.67082784254324 0 208.1384576411888 +166 21.86110963149743 0 209.7735106733302 +167 25.90205787859408 0 211.7490099010539 +168 29.76606880348345 0 214.0514606588748 +169 33.42674729353348 0 216.6651348730179 +170 36.85908720846016 0 219.5721785030838 +171 40.03964216831272 0 222.7527334760415 +172 42.94668576588902 0 226.185073379374 +173 45.56035995422069 0 229.8457518592629 +174 47.86281068581736 0 233.7097627653776 +175 49.83830989129522 0 237.7507109908485 +176 51.47336290247051 0 241.9409927472864 +177 52.75680065847132 0 246.2519841834073 +178 53.67985597550366 0 250.6542368556848 +179 54.23622344794718 0 255.1176789162997 +180 0 4.494141614414324 205.3755970725032 +181 0 8.957583683792402 205.9319645473492 +182 0 13.35983637503041 206.8550198709063 +183 0 17.67082784254324 208.1384576411888 +184 0 21.86110963149743 209.7735106733302 +185 0 25.90205787859408 211.7490099010539 +186 0 29.76606880348345 214.0514606588748 +187 0 33.42674729353348 216.6651348730179 +188 0 36.85908720846016 219.5721785030838 +189 0 40.03964216831272 222.7527334760415 +190 0 42.94668576588902 226.185073379374 +191 0 45.56035995422069 229.8457518592629 +192 0 47.86281068581736 233.7097627653776 +193 0 49.83830989129522 237.7507109908485 +194 0 51.47336290247051 241.9409927472864 +195 0 52.75680065847132 246.2519841834073 +196 0 53.67985597550366 250.6542368556848 +197 0 54.23622344794718 255.1176789162997 +198 4.494141616336591 54.2362234468606 259.6118205195231 +199 8.957583690209418 53.67985597110311 259.6118205195231 +200 13.35983638342521 52.75680064649094 259.6118205195231 +201 17.67082784909668 51.47336287608445 259.6118205195231 +202 21.8611096400027 49.83830984246216 259.6118205195231 +203 25.90205788229941 47.86281061646391 259.6118205195231 +204 29.7660688081927 45.56035985757156 259.6118205195231 +205 33.42674730258985 42.9466856394563 259.6118205195231 +206 36.85908721144179 40.03964201369448 259.6118205195231 +207 40.03964216989715 36.85908704176046 259.6118205195231 +208 42.94668576721303 33.42674713844799 259.6118205195231 +209 45.56035995631535 29.76606865705407 259.6118205195231 +210 47.8628106914412 25.90205774375353 259.6118205195231 +211 49.83830989673753 21.86110951626731 259.6118205195231 +212 51.4733629105137 17.6708277488077 259.6118205195231 +213 52.75680066518949 13.35983630958634 259.6118205195231 +214 53.67985597918565 8.957583641773407 259.6118205195231 +215 54.23622344891329 4.494141591564223 259.6118205195231 +216 4.494141616336591 54.2362234468606 375.5778974804769 +217 8.957583690209418 53.67985597110311 375.5778974804769 +218 13.35983638342521 52.75680064649094 375.5778974804769 +219 17.67082784909668 51.47336287608445 375.5778974804769 +220 21.8611096400027 49.83830984246216 375.5778974804769 +221 25.90205788229941 47.86281061646391 375.5778974804769 +222 29.7660688081927 45.56035985757156 375.5778974804769 +223 33.42674730258985 42.9466856394563 375.5778974804769 +224 36.85908721144179 40.03964201369448 375.5778974804769 +225 40.03964216989715 36.85908704176046 375.5778974804769 +226 42.94668576721303 33.42674713844799 375.5778974804769 +227 45.56035995631535 29.76606865705407 375.5778974804769 +228 47.8628106914412 25.90205774375353 375.5778974804769 +229 49.83830989673753 21.86110951626731 375.5778974804769 +230 51.4733629105137 17.6708277488077 375.5778974804769 +231 52.75680066518949 13.35983630958634 375.5778974804769 +232 53.67985597918565 8.957583641773407 375.5778974804769 +233 54.23622344891329 4.494141591564223 375.5778974804769 +234 54.23622344629545 0 380.0720391036338 +235 53.67985597253271 0 384.5354811621191 +236 52.75680065486949 0 388.937733830816 +237 51.47336288871628 0 393.2487252927783 +238 49.83830985509842 0 397.4390070916718 +239 47.86281063960152 0 401.4799553200218 +240 45.56035988000761 0 405.3439662543287 +241 42.9466856688505 0 409.0046447453011 +242 40.03964202949494 0 412.4369846747548 +243 36.85908706234732 0 415.6175396314225 +244 33.4267471575835 0 418.5245832327962 +245 29.76606866502166 0 421.1382574315868 +246 25.90205775415951 0 423.4407081662866 +247 21.86110953115403 0 425.4162073706845 +248 17.67082775961568 0 427.0512603872802 +249 13.35983632122617 0 428.3346981427188 +250 8.957583653507324 0 429.2577534577045 +251 4.494141596623838 0 429.814120928971 +252 0 4.494141614425736 429.8141209274959 +253 0 8.957583685590008 429.2577534523509 +254 0 13.35983637860008 428.3346981281898 +255 0 17.67082783443754 427.0512603615938 +256 0 21.86110962853535 425.4162073279691 +257 0 25.90205787680221 423.4407080999158 +258 0 29.76606879424861 421.1382573471586 +259 0 33.42674729182928 418.5245831283085 +260 0 36.85908720844056 415.6175394969342 +261 0 40.03964216024755 412.4369845327196 +262 0 42.94668575644106 409.0046446327647 +263 0 45.56035994279504 405.3439661582254 +264 0 47.86281068635041 401.4799552336374 +265 0 49.83830989071735 397.4390070104689 +266 0 51.47336291103556 393.2487252277645 +267 0 52.75680066366183 388.9377337960959 +268 0 53.67985597681248 384.5354811364721 +269 0 54.23622344782404 380.0720390851866 +270 38.270262183728 38.47893427502088 255.5468614677218 +271 38.38839962063675 3.899868082488329 221.2336099547903 +272 3.624495221205509 38.34878898732803 221.1670723704933 +273 27.88855624971205 46.56280101037226 255.6244360358544 +274 46.6316769874109 27.78644816716429 255.7175629213738 +275 27.83485053214378 3.622321915647931 212.9870940062435 +276 46.47254245691228 3.739181956297054 231.5389411065796 +277 4.433486921569071 46.59546939543677 231.8454439431552 +278 3.894257618670559 27.78644830704046 212.980143617174 +279 50.56918073600034 19.73215548622051 255.7175629262419 +280 19.73215559012267 3.894257616384055 209.0426398258446 +281 19.78901959758596 50.5484260229543 255.7366982487096 +282 50.60737607058266 3.871157381401447 239.9732648082566 +283 3.894257583578348 50.56918072970191 239.8796650152461 +284 3.569946828206628 19.95461375395773 209.1060375613348 +285 53.09722888349974 3.734467126302064 248.2758916726535 +286 11.49757543960308 53.05929596613355 255.8326521937721 +287 11.48027345642072 3.917791770313179 206.5588331233759 +288 53.09592538406103 11.32555423602632 255.8276731251251 +289 4.06733257123515 53.12192115324299 248.5085083385077 +290 3.894257615620243 11.13962110408634 206.4845314683579 +291 4.994666692371483 4.994666692371803 205.6500576507129 +292 4.944681894183657 53.97923249118188 254.7581803110047 +293 53.94821960951146 4.913841191771651 254.3955950305847 +294 35.10965747067889 3.862045566156675 218.2093834054834 +295 36.50995566061332 7.763559330374422 220.0073317988075 +296 39.54572339027362 7.872417659666665 223.0614984364386 +297 37.54002268372464 11.67074378209558 221.9779836287196 +298 34.09049971153772 11.51567542240555 218.783003592885 +299 35.30945120737791 15.36486807573601 221.1549781232146 +300 38.38086014476472 15.45456814674698 224.2588695735123 +301 36.05420116402222 19.08506077284898 223.5893237103573 +302 32.76403740805411 19.02236217449207 220.5422309046888 +303 33.40499842191357 22.65962552821877 223.1095919026519 +304 36.58224914397383 22.64657825257187 226.2856028573904 +305 33.81168948609456 26.14812375581496 225.9248716996613 +306 36.87222498575888 26.03812276193729 229.2108266167024 +307 33.96841369489189 29.46370487384816 228.9556268744383 +308 30.5071184126983 26.09098713255921 222.864829360413 +309 36.91207867841263 29.25885569488177 232.3504365907817 +310 33.88701390763275 32.58398259675284 232.1943149946966 +311 39.69113517993991 25.73911886971475 232.7068620437344 +312 39.59848201844063 28.86532846085924 235.9365533124265 +313 42.23903758308079 25.25198707843937 236.3746499669171 +314 30.82727034645054 32.68268835419327 228.8988504974785 +315 30.64449456583806 35.68537723993025 232.2396805466662 +316 27.47027964757201 35.67305608652407 229.040885823682 +317 27.19033015754743 38.55331799276863 232.4807892026433 +318 23.92040265417722 38.41435463333409 229.380761364873 +319 23.55222098491385 41.16419214970672 232.9178621396708 +320 30.23915808879397 38.43981532680553 235.7426110988596 +321 24.12399432074175 35.4010687299639 226.047516960017 +322 20.20191972294217 40.88783413276929 229.9161524501829 +323 19.74817048266031 43.50233019415193 233.5480089618817 +324 23.0136803897336 43.63887420465835 236.6382614631932 +325 19.14721509085124 45.82291048179827 237.3540067929402 +326 42.00924932466415 28.28581480961553 239.6894488138295 +327 44.50408793404802 24.5824346166072 240.1990590435189 +328 44.58636299198878 21.4648279651623 236.9604930039429 +329 46.67367411401269 20.68302797120186 240.7558999297745 +330 22.34060141255887 45.80641446246864 240.5216354690005 +331 18.50579344487226 47.76174624997552 241.2238775466358 +332 46.63071281714915 17.51999608086318 237.6939829862129 +333 48.44959241159177 16.81297296228384 241.3984688794317 +334 39.24621505525785 31.7833639155137 239.3308534642776 +335 41.4994882545377 31.11933100921233 243.1453407865613 +336 38.60712363958967 34.50254268017083 242.853843448113 +337 16.3545058175321 43.07191292040616 230.6444992852988 +338 16.73150187593393 40.31844467503534 227.1118958025762 +339 46.39683223161114 23.78850675952122 244.0167524635824 +340 21.5918253922686 47.60016850060102 244.4532494262553 +341 25.38924545112876 45.46984509326092 243.8116735182236 +342 17.23684928765324 49.43269195712278 244.7435578384828 +343 15.73827505873611 47.57774220945824 238.3884751877574 +344 11.62096808162504 42.69259004326164 227.9248973667566 +345 44.35876576912421 18.20575038548955 233.870495864667 +346 13.07266187333799 39.54908310263043 224.5869610632442 +347 40.74106321433866 33.77274706746135 246.9101447903911 +348 37.70014977531954 37.06830327459647 246.7120204471773 +349 46.24562346468793 14.20073674533112 234.6829892413106 +350 12.1578476073967 45.18829237919164 231.8274685196385 +351 43.49365423887208 30.21378575564822 247.0741000765274 +352 17.04491498083326 37.28996247422076 223.8250238675055 +353 13.39191941696826 36.29760102012486 221.337731410065 +354 17.20699868420137 33.98916548767895 220.7476845021285 +355 13.66351166370172 32.76559083839157 218.3627023632221 +356 17.3592324766951 30.44026962293015 217.9727490151193 +357 13.86575030547532 29.23193328393933 215.8511042594456 +358 17.41116251372153 26.69809847749295 215.5002778095662 +359 13.90920774371132 25.27649838489942 213.4664219191649 +360 17.30835760160819 22.75320884094044 213.3033171187341 +361 20.86185728651062 24.02406274716402 215.4598946009058 +362 20.76096812470068 20.00984028737296 213.4560653329327 +363 16.90604864526334 18.72550166364051 211.3903901249934 +364 20.38875941786238 15.88876333881613 211.7201622520429 +365 16.52010376893571 14.53388347028054 209.836147290712 +366 24.06603078026309 17.11399091100909 213.8985541712647 +367 23.68300538126454 12.9242615985004 212.3482620321429 +368 13.00308461077943 17.31861997271881 209.6843687971396 +369 12.52315052530944 13.05269432018574 208.2838250925661 +370 20.84604038338992 31.50436299715484 220.4367907796102 +371 35.43434817123493 37.69164101436179 242.7147080452079 +372 34.47759558074494 39.97527100663843 246.381614415237 +373 42.81684324042335 32.47812124272486 251.0295819937446 +374 32.1980315894636 40.51389829244467 242.7691351766559 +375 43.83607848044439 14.84529736117264 230.9800093235795 +376 24.32749376764804 47.35431851359999 248.3199292809818 +377 27.37212565745799 14.07669040304017 214.729989374451 +378 10.60613405343536 31.33362764524394 216.3974832959205 +379 28.18455796394562 44.86481928086053 247.1802507908768 +380 8.586030873984052 41.1442008967895 225.0401551121248 +381 41.84381012108417 18.7201618754816 230.2789663019073 +382 16.010944551765 10.36341242922867 208.6410977462732 +383 45.54204017651146 10.92963315012132 231.8948412755603 +384 47.8361810337551 10.76159237600083 235.9971395713483 +385 43.01565856062818 11.37267311675303 228.2736542135565 +386 27.37310205701573 18.30514471953248 216.2828440347427 +387 8.953387959248627 15.78914658431784 208.3058273331946 +388 9.560901697587186 19.92268626507574 209.8781199397561 +389 26.82584426698579 9.913903457171346 213.310051220167 +390 22.86856754211666 8.294383416455288 210.929204885624 +391 36.52024839522209 39.26604730962477 250.3266587829098 +392 33.36153139406274 41.96024394762 250.2250535817183 +393 31.21785862727953 15.48638230896674 217.8101159089071 +394 30.54409443898653 10.93191366983225 215.9160907388788 +395 45.30485642702583 28.98311046481942 251.2922932158759 +396 12.08001830579642 8.733152543840122 207.2709144610384 +397 15.73301297260739 6.292924606678629 207.8949311569183 +398 23.85128482368304 3.887595807612084 210.8494574334127 +399 44.83102291657242 7.483684304316519 229.6795787703228 +400 35.05596814712306 41.1640565325859 253.4178888363799 +401 31.5794998580281 43.90890764275093 253.5696138876168 +402 39.78193642990256 36.19828324390743 251.3144072643861 +403 41.69220957970633 34.68410491895115 255.0799589838502 +404 8.478951062799002 11.48323632469931 207.0950811402428 +405 31.60443175246565 3.751549073266547 215.4660277890703 +406 3.816971049609542 35.08634685887112 218.185449223561 +407 6.970445926951965 36.6443660896506 219.9839444710571 +408 3.861288036508328 31.57239042840708 215.4525648647815 +409 48.69360101567928 3.819867659562708 235.6095899182905 +410 15.64652285027431 51.98238808327745 255.7669675313248 +411 13.33502041653657 52.20027894451974 251.9259014950758 +412 7.79829721155243 53.23999536745029 251.4598455122231 +413 10.92723150993819 52.01859179067998 247.9316252177186 +414 4.046842396360249 48.74451687241169 235.7505467869732 +415 8.208515931618889 49.20492873102005 237.857269330839 +416 7.224702685023058 50.97529840338114 241.9741373824229 +417 11.79295448734267 49.55941739869832 240.4661783467846 +418 3.873051473424586 52.03063911420269 244.1335354627965 +419 4.691629913708024 15.39381653612449 207.623511604437 +420 48.76362557290508 23.85074601758843 255.7367749668248 +421 49.37452658095111 21.54930207855922 251.8950240676634 +422 50.95193281212094 17.46373075922966 251.8218337850203 +423 49.74807317770973 18.89718355532136 248.2192390988261 +424 51.08385982680342 14.32255196066441 247.4846191451314 +425 52.01760187575368 15.5135593265943 255.7049272830365 +426 3.808130638579717 23.99771496040925 210.9150746286122 +427 6.99411617342557 25.79719953299253 212.2055753839602 +428 4.115288898971183 41.42900194773284 224.5623207008633 +429 3.889429794997423 44.14795909939957 228.0270886721097 +430 8.275178420401167 44.96752097881443 230.0955754708064 +431 8.337010044865281 47.13182456765587 233.7110363792503 +432 52.02336206388446 3.813849704821637 244.0944240676534 +433 50.94551333491469 8.006970693967119 242.2276802188507 +434 23.78287472986113 48.80160432960299 255.7982228629674 +435 21.6491774429053 49.32536098920381 251.86023216772 +436 41.38822131389939 3.935241962291617 224.4935311275925 +437 30.10307325369956 22.57352550247174 220.2925355601404 +438 27.30788161361402 25.74954114268143 220.2036237152581 +439 27.56695726005446 29.26730648249274 222.9341313702917 +440 30.84141785811291 29.46452141908125 225.8122027008072 +441 16.01286334371597 45.49822674604497 234.4073603359279 +442 20.52656439786537 37.99940370211498 226.498821335676 +443 24.12276258710553 21.17139753031548 215.6615134167852 +444 48.34681093826617 13.48183739190391 238.5739695056175 +445 50.0880208028207 12.86495587843791 242.6575194443527 +446 20.82683120290198 27.82840195785598 217.7359517027056 +447 44.12308192698161 27.50866106872697 243.5434525216132 +448 45.94927412619012 26.59351378795065 247.6445955140428 +449 26.70921450890278 41.17447718596618 236.0949004102646 +450 36.71908170480343 32.26049345269865 235.6799412872138 +451 13.51828267967533 21.25645025651489 211.3709188018916 +452 19.83214284168132 11.70427123643204 210.301969700679 +453 42.17962087841374 22.05178380315359 233.2231173248275 +454 26.08716927302817 43.50429075820046 239.8988418609893 +455 33.58702266783054 35.4605688755337 235.607129186793 +456 36.2145721255965 35.08324881100952 239.1316920709452 +457 27.27825825924992 46.34700155848898 251.2681213683934 +458 39.5067652974281 22.44984337975775 229.6621081569017 +459 17.64857181146004 50.8952821909415 251.8682162963174 +460 52.24225272116072 13.08365312034978 251.7804544643437 +461 52.34304526057599 10.09283210643168 248.6525506731257 +462 29.61097445232822 40.95307121899987 239.4177275128895 +463 27.60985567759573 32.5733705478879 225.8710937452255 +464 20.75595707927132 34.85733756826595 223.33618811951 +465 39.06043943035568 19.01954910555045 226.8352425106071 +466 33.00973503045032 7.587072539238704 217.0141801371114 +467 53.22011231400741 9.049089781036772 252.7198786984794 +468 32.95407467556986 38.15388727155645 239.1160870368734 +469 47.47404886706624 25.50149763748593 252.0188273641076 +470 41.21972861498971 15.27699214622162 227.5289165593707 +471 24.28133659124476 32.20799252557022 223.0765341040456 +472 24.29198552912353 28.67587573343958 220.2499248256078 +473 15.5119755404934 50.90263193944995 248.2071758905352 +474 13.66477008850367 50.52823197841163 244.7142678946912 +475 28.90029071804857 43.10283682883653 243.2202404747425 +476 40.41997284114103 11.70882648768809 225.1024823565256 +477 7.361348091346634 7.517563907607092 206.2164833652495 +478 49.25507248634823 7.505492382440202 237.7172855596937 +479 44.20536594713776 3.389612364907302 228.0497959941416 +480 48.03044034762256 22.78897560527924 247.9711747676355 +481 7.222644650487224 52.28759917236398 246.3601934613665 +482 7.414458070317171 29.57318647555507 214.5316952329732 +483 44.35714216272465 31.23498066457896 255.3007690602277 +484 18.80222479598515 8.202691006021936 209.203909973395 +485 9.821262513512327 38.4454564240304 222.3659492633135 +486 29.41054897967963 7.140178607251567 214.3812699942875 +487 19.66234737563519 49.39515220383414 247.9809874846374 +488 52.25102049277208 7.157367118497677 246.1816978082282 +489 24.17404485244522 24.97827775181806 217.7374078230986 +490 42.158027493277 8.067082231586923 226.1545620426186 +491 48.31735295832619 19.95204434544736 244.4752894709866 +492 31.3323931089012 42.54796471197949 246.5842695761221 +493 47.24808972028247 7.393563626772724 233.6364768773981 +494 11.99597616985372 47.45038165427033 235.8142769647386 +495 27.17827547254385 22.22767705889735 218.0301303476533 +496 15.22697407338676 49.11789713252713 241.7978741714404 +497 30.40415724774926 44.06492101100442 249.8324953386347 +498 7.204551462185347 33.57399954526146 217.3904250498209 +499 25.83349771918165 6.574758988701575 212.1653434903589 +500 10.51047910625207 27.55726977929668 213.874615162029 +501 49.6608043110909 16.62319877227195 244.8050983840013 +502 10.37447177460292 23.58881187046186 211.6774535936587 +503 10.3508526389373 34.79981462511959 219.0705083262825 +504 51.45294105636726 10.52390897703088 245.3427126588808 +505 6.734131872429389 39.44517261858878 222.7269310977023 +506 29.91444087592323 19.52711372312695 218.5559646720262 +507 6.841509625862299 22.12507918981053 210.3630656161824 +508 49.55516897564411 10.59390382378545 239.766930189435 +509 53.721787684314 3.171243168279546 251.5076248521784 +510 7.879187711266489 53.75281450834898 256.3995664686837 +511 3.212254008807517 53.75281450740397 251.7326327846737 +512 7.869908175111373 3.182735511773841 205.8558907756995 +513 3.21225400562192 7.879187780961078 205.8590060186879 +514 53.75592976129428 7.869908115893902 256.429085156402 +515 7.214988775106884 43.20820419787626 227.3200217214507 +516 24.77478711958923 47.95323694787597 252.6503384901433 +517 15.56771001599604 2.673455089673955 207.5324168613894 +518 31.59867758281066 44.24313745558554 257.1965346670365 +519 6.793138874948502 18.2259047072679 208.7843190614273 +520 34.98429145239406 41.60717193141817 257.0218710820178 +521 2.568034151448265 54.29615620500243 256.9476387305962 +522 54.31094948061375 2.417210873156928 257.1132007496518 +523 2.688643847767332 2.713723580448381 205.3239568552172 +524 10.12801965349998 51.24034516173947 244.3273353057646 +525 53.23287938421076 6.362718296492593 250.2554531159296 +526 41.71455650918038 34.6820908165238 379.9153615416852 +527 3.894257593704817 41.42218264439506 410.6606964767618 +528 38.38359018305377 3.894257600835575 413.9614877899202 +529 3.771850818839984 31.55130831172835 419.7599450548499 +530 31.77939671935644 44.04043486995874 379.0815075135941 +531 46.63167692329736 3.894257609348187 403.3643457536681 +532 27.69834855511904 3.672307763368329 422.2799411793957 +533 3.793496780634718 48.8090951316201 399.3486117577815 +534 48.72552172411224 23.90448074202566 379.5984168266149 +535 3.901479593151639 20.19991593817887 425.9614969521324 +536 19.87298448790336 50.51893784931235 379.4076035744675 +537 50.56918070400202 3.894257608786117 395.3100530456421 +538 19.96940293314548 3.863646762625047 426.0562138433749 +539 3.392844042377057 52.02762347877329 391.1785464125113 +540 52.06332533555096 15.37427025753187 379.42591147453 +541 3.748683686580963 11.74000464155074 428.586244976695 +542 53.13293907488291 4.094311640563801 386.6183974736931 +543 11.44703941434342 53.08385322483417 379.1605024121168 +544 11.24102592722073 3.97091401529098 428.6781462617415 +545 4.360651563237713 53.79238714333464 382.5871089918467 +546 53.86935871657812 6.754735618937378 379.3502947061634 +547 4.855090376484851 4.89870024373866 429.5611918964686 +548 52.018515047066 3.969944297782471 391.072376407377 +549 50.94512778067352 7.785224135123101 393.0635911533691 +550 49.31603731136553 7.755014978190235 397.2470794963613 +551 49.51905367411999 11.62005627883296 394.9325573313205 +552 47.71877549395359 11.5699592294723 399.047446931446 +553 47.76122408548454 15.37556305087607 396.6544905963044 +554 45.79509367868977 15.28656751740751 400.6955305525092 +555 45.67510276413132 19.04519021614062 398.2236688244286 +556 43.55963225226775 18.87900282661178 402.1844179776306 +557 43.28282160420884 22.5854253820025 399.624958775731 +558 41.00616779953432 22.37762608129075 403.4974479067973 +559 40.60531155921135 25.96185960280199 400.8554717665759 +560 38.18887358807206 25.69519112663692 404.6146385112009 +561 37.64663946562804 29.18394012695964 401.8988666544365 +562 35.11204189241418 28.79530422384953 405.5735673587574 +563 34.4431270604122 32.20975866182359 402.7434581758291 +564 31.77168080250723 31.71138675680528 406.3466070990063 +565 30.98583077908614 35.02776526943902 403.411316131523 +566 32.33590539555829 28.18687302371631 409.0690105411065 +567 28.89277642512097 31.00417600702474 409.720448398926 +568 29.35046680715244 27.3769810621787 412.3313496825331 +569 25.79887238656309 30.09595438850002 412.8661926369015 +570 26.15801716993951 26.36716922596831 415.3559789750862 +571 33.54328416856107 35.4090544720498 399.7194009802188 +572 29.99129277766439 38.10304287104127 400.285097324601 +573 29.61010766439795 23.55580855679941 414.694781942096 +574 26.3268287294051 22.46105357082817 417.5798546275723 +575 22.81750525911768 25.2029256307964 418.0742412766691 +576 42.72792536867062 26.08930294951207 396.9188887401015 +577 22.87473197810456 21.20402343038385 420.1749968249308 +578 27.33104398132641 37.59652892532926 403.8847922289858 +579 26.23340143299898 40.5435531862805 400.6735980471447 +580 23.47482959330257 39.90368531312612 404.1854754388062 +581 22.28366205054687 42.71739850625502 400.8845668211922 +582 24.94484436177769 43.21993363745757 397.2932680457224 +583 20.92872962642086 45.24165970286712 397.4169850575627 +584 32.41732088627422 38.36902266764863 396.5230794737486 +585 29.69091947897491 19.58101076617721 416.7701122851382 +586 41.19699515625376 18.67844320477618 405.8382443421214 +587 19.25972908203475 23.85525931646724 420.5418239246411 +588 19.10300703212533 27.7589899415055 418.312881304078 +589 19.27243944644665 19.79054357839836 422.4679039349448 +590 19.47035124594545 41.92867104503128 404.294742874819 +591 23.51143716635787 45.59286580645132 393.7511787629753 +592 19.43984148728066 47.45221114419514 393.8027558646071 +593 47.48983992262458 19.06047093412916 394.1029830278688 +594 35.87470036623969 35.5421080784115 395.8640915449267 +595 34.63033431090922 38.37378953308436 392.6060349309055 +596 37.95031514882047 35.42941586856426 391.8964548297959 +597 22.81534223443795 17.06917931591654 421.9445721385979 +598 20.61029520699147 38.99502102458594 407.4584449886086 +599 16.78925146191364 46.94459959823088 397.3974035829507 +600 15.50716669305874 26.3342966727422 420.6089738894544 +601 15.38382935504801 30.08993271097782 418.2358274169972 +602 19.14105119190608 15.59264446111886 424.0779473837858 +603 16.51205023670315 40.86489472902193 407.5024619788695 +604 15.21666091279473 49.00034384374817 393.7213474419631 +605 36.48804935476389 38.15350303705653 388.7952233420539 +606 33.1536170006688 40.93731539273683 389.2431501621523 +607 50.99695243126819 11.40925577309775 390.7734549915551 +608 15.53243541001464 18.25347959122246 424.4380978043809 +609 32.85851579920629 20.5909824212341 413.7629027187536 +610 32.82859806758217 16.54670999574729 415.7058774929228 +611 21.92856675840021 47.65122779291023 390.0783696243778 +612 15.34173209151692 13.99768075870472 425.8815895164993 +613 17.59927644681983 37.84448164120033 410.5039038439697 +614 22.61218022947962 12.81540643767333 423.3923294623822 +615 13.7874720030199 39.46316594555571 410.4251268102953 +616 11.85568572690727 42.61155968635054 407.286933096321 +617 39.81013008894347 35.16176515403064 387.4340796737326 +618 26.20875954785454 14.24081848069249 421.0978409625177 +619 45.60706018674261 11.47249805651334 402.9666377237158 +620 41.00803511023545 32.26865456704432 391.0323541670106 +621 42.71232384245521 31.74970997003348 386.9523667622266 +622 25.93079776199488 45.62718236176107 389.9834241906879 +623 24.30926066231888 47.490382392508 386.3244629276456 +624 12.48982642944981 48.33152301423413 397.2535372987672 +625 35.88580295161793 17.48761639218753 412.566512784146 +626 35.67597087606204 13.58854038172438 414.3637443191125 +627 32.56735722825612 12.44089732455448 417.3673286751286 +628 18.8712731732464 31.37353217173521 415.843785903996 +629 43.76901277457112 28.87646586961004 390.1445883286468 +630 45.34620724564394 28.22959685224219 385.9979067242572 +631 11.80364664281649 16.61005022773127 426.0412049425255 +632 11.58645028497612 20.67225254575257 424.5695027524404 +633 11.60551805632098 12.34517015285323 427.2951476702056 +634 11.64271148871493 28.62417944629251 420.3759874270636 +635 11.42423178662068 32.09693839085657 418.0165439794476 +636 38.55032082928322 14.42750975091401 411.1796526196845 +637 46.23708492399613 25.31015647140049 389.1164793770373 +638 35.02940019140753 40.38121490613993 385.7790664125081 +639 20.06905887324274 49.37103117227551 386.600574087091 +640 28.12826370138128 45.35280899708837 386.2403896781133 +641 11.08270358569619 50.18048888919147 393.4903919666954 +642 13.53294752190939 50.72524289000197 389.9157602139888 +643 14.12526451949107 46.12848738718598 400.7652910786663 +644 35.80228289535132 21.46002523415556 410.4982224943728 +645 25.2697606356162 33.60763812174008 410.1283113700717 +646 15.03721233079997 9.852190965414081 426.9450253069861 +647 26.19742924190322 47.16972477234194 382.6826148332267 +648 14.41213164126869 36.3079972525959 413.4696517247147 +649 10.71287752580474 37.96926029371314 413.0656924344462 +650 35.16786147511428 9.608245365607109 415.9841888582678 +651 32.08409408825457 8.293842354220304 418.7471959249136 +652 25.89049316959831 10.21822125927351 422.3436494831657 +653 10.08873229422296 47.11334873503971 400.8823455936351 +654 44.11321784262121 31.05756108476147 382.7345135580121 +655 47.66826123606396 24.59523405308756 384.7744498371856 +656 48.40537560631243 21.57843373546556 387.9494799411573 +657 49.66794412808706 20.6422844561957 383.8698611299512 +658 50.01612396504272 18.21154887701094 386.9133319079349 +659 7.931417758920565 14.28272246064363 427.4899547898456 +660 9.481663233567543 51.73594197816602 389.5512869262246 +661 11.50574714748061 52.09835046061091 386.3084568557883 +662 22.30909116237285 8.148528875324219 424.5439180592663 +663 35.11212781576373 4.680089418555455 416.8937598813669 +664 23.85128471361291 3.887595787151171 424.3402606220575 +665 7.337144653400149 52.93107430753962 385.8848331856358 +666 46.29468411963606 27.92474571868933 381.804938628176 +667 50.58426734394209 19.68202451560204 379.5294858812739 +668 41.43618074858725 3.897745509493355 410.6437747339995 +669 39.63895598135743 7.755668814672694 412.0521077199132 +670 42.5611280013783 7.606758671961028 408.6301719620056 +671 3.803172994297602 35.08697271679324 417.0050077271732 +672 3.810080545553774 38.3725182274495 413.9810011801251 +673 3.585873785642121 46.63106150427439 403.4068546083232 +674 3.912539349997049 44.22089574643667 407.0575680293086 +675 7.871891762107964 45.18357035752931 404.8736912481381 +676 7.797579880724983 42.55613709030658 408.592109368696 +677 3.843624369954322 50.55438588233839 395.3578333349684 +678 35.23968648182861 41.31561869314676 379.1764237497163 +679 38.61025113346084 38.1679462137437 379.3490553771094 +680 39.64060201161502 36.50215324508564 383.1924049021364 +681 44.18349448324474 3.795807023222303 407.1243062608281 +682 3.844594945744773 23.93251334663213 424.3038570632487 +683 3.855999914974101 27.74877060625772 422.2351824115837 +684 7.782723332397193 26.00271005764048 422.7483705524647 +685 15.62335018977843 52.00043198262426 379.2699490935367 +686 24.11433458624015 48.65510134318669 379.1758445885616 +687 15.85093527396214 3.629392288380543 427.5138253647767 +688 53.13762031469589 11.10241771955076 379.4372848304722 +689 53.13834250807005 8.344387477432299 383.8515300422351 +690 48.76362138328527 3.887941830198968 399.4265532194923 +691 52.23017346555508 7.755603299827905 388.754575356907 +692 49.4394195142636 15.13717532439961 392.5595041163792 +693 43.56270880838492 15.15922629821556 404.4613443308934 +694 45.24240265768331 22.61651302164806 395.6623089268488 +695 18.88116614034632 11.36974717493174 425.3372750590224 +696 39.04993343879009 32.51589538642816 395.0608256046168 +697 36.87362663460783 32.47529781033809 398.9756737335072 +698 18.24079161112078 44.58547429167021 400.8993162051843 +699 26.29779476676994 18.39330654226251 419.531026009544 +700 7.848444750193202 49.24963073886946 397.3641552989653 +701 35.55232382088113 25.21536427250694 408.1659768682755 +702 17.78874997894647 49.35022522263164 390.0651638653938 +703 22.54912906736874 28.99388628918794 415.7357930777099 +704 32.69908797567145 24.4833995264597 411.5375698348315 +705 24.50083536065294 36.85847397323676 407.2469234465512 +706 28.23721488616405 34.40015213969715 406.8996865558756 +707 28.79861865527185 40.91141846437978 396.9942614441873 +708 15.60225563989875 22.3693928412647 422.6729622485171 +709 38.63390143820201 18.27962068886144 409.26828735326 +710 31.10190732194935 41.03653955556982 393.1971774001134 +711 22.1658668385748 32.58024796514307 413.1141070982558 +712 39.93685057841801 29.35134506232836 398.057037845596 +713 47.34069591656087 7.742885965002477 401.2814277771923 +714 27.43048987005993 43.42141377336332 393.5755166023606 +715 17.95317783347015 50.84239662538117 382.9602652383649 +716 15.39764165895934 43.63385702555792 404.2268834147282 +717 29.57407868096527 15.49570900454573 418.5548926670182 +718 11.62841699820343 24.58445030590349 422.7175831382954 +719 38.53071237946288 22.03850134888938 407.0652585079048 +720 21.49554733586105 35.90973428907056 410.365792942341 +721 52.26103584058556 12.92794826350324 383.5414098469327 +722 31.2990199374657 3.998693719983509 419.919154139861 +723 41.9843235679866 29.26160807080269 394.0938395384663 +724 29.29079119310524 11.42225281773292 420.000267233735 +725 45.07348293805147 7.632317823536979 405.1057504860576 +726 29.65946822809091 43.3602256113503 389.7895835875209 +727 7.728221260878552 18.54003801533348 426.157605162297 +728 18.31564472865536 34.70433260417514 413.2861419280503 +729 44.60595438938164 25.84028102114759 393.0236405831941 +730 7.62926558146285 29.60739675024062 420.5996878381118 +731 11.24059911159798 8.08286821993466 428.2094604023301 +732 53.87536748386272 3.766698014502605 382.2877415317026 +733 6.939012622125529 53.84732447824988 379.3303624049677 +734 43.26780283718565 11.38402264397428 406.5628375115531 +735 3.896235303035649 15.85119634765842 427.4944089913329 +736 31.61931169866852 43.02705417514706 386.0972595978719 +737 7.529315796779963 33.24626799794559 418.0014794896215 +738 41.1378274555893 14.92000924079828 407.9327691250088 +739 3.418528875303804 53.15864217043358 386.7240925967484 +740 7.847871099181407 10.33682080293542 428.4298255204653 +741 52.03500375361113 11.02464744637791 387.0922700508877 +742 6.999652360012682 51.11930055352931 392.8864855338794 +743 40.65362192837296 11.26822744144422 409.9592196929556 +744 7.545707930677216 36.43209969953984 415.2960249030177 +745 51.14564833079064 16.95863293375271 383.2128610355184 +746 11.71017850555199 45.02625424046156 403.8139274968745 +747 46.92639310434222 22.27321921218975 391.8131239583541 +748 28.75361508242709 7.421647035450599 421.1839718304831 +749 22.19883202397094 49.13546991869725 382.9726723442438 +750 44.38649895959544 31.32008227474454 378.8423115256841 +751 15.16588956275815 33.33897392550746 415.8305229105036 +752 15.94427138129776 50.81991667694081 386.7529376018278 +753 48.89769466568337 18.6873294264738 390.46293755209 +754 17.8288079616416 7.484656101909881 426.4490953467404 +755 7.373127325044731 39.91580317720715 411.8288408173422 +756 28.0742417612418 46.48989639496578 379.0838531793091 +757 13.73830942260995 52.1666626064399 382.7656237802167 +758 33.60463765111719 42.23046470737705 382.5837108937487 +759 30.03152737317135 44.82388607886337 382.6977179184527 +760 11.45352387188738 35.19344423186374 415.4778162355356 +761 37.98939431119715 10.81986274462798 413.0145337169402 +762 41.7273828404856 33.87056611484796 384.1438483902557 +763 9.27744431909025 53.1390576299717 382.7844794546312 +764 7.905159443742062 22.38607093671343 424.5486798392562 +765 54.25231385518676 3.036456182122731 378.6162552371999 +766 3.259974108048901 54.2343199059712 378.7046139366185 +767 7.813962415197779 6.271803453879687 429.0696885839281 +768 36.87793228414111 39.37879696401625 382.725883403698 +769 50.91577259731799 14.51123173515664 388.1784330640251 +770 25.70956814566619 6.610455517252395 423.0866885223804 +771 46.7004566673521 27.82602596371418 378.1361915943255 +772 3.212253998837765 7.879187795310535 429.3307119796141 +773 10.35897922212923 40.77617031813322 410.0997851216179 +774 6.398857907030982 47.53512424575671 401.2923257858384 +775 6.041633142591082 52.40922313714362 388.9396803621478 +776 37.38975383016767 7.138139502250437 414.4728652219644 +777 7.297318731854747 3.009128449212881 429.4245271609624 +778 2.713723578414935 2.688643782872309 429.8657611480984 +779 37.80579304240094 37.83685818229499 385.6207764488567 +780 14.06768938952708 6.64954520463403 427.7281506577798 +781 54.30456214172162 3.574880870934567 333.4310253060606 +782 54.28502343769043 3.860242610883539 315.3647421352453 +783 38.52837453405133 38.43604556154736 263.4440425293847 +784 3.659891556953691 54.29889903521819 302.3301524533497 +785 4.40442153342812 54.24358315599509 337.1864803101565 +786 4.308757301016194 54.25126591303118 320.4620819261986 +787 38.53685657413276 38.42754126964411 371.6396673003449 +788 54.25568694579184 4.252725794794856 297.8440782609268 +789 54.300069621082 3.642482915694811 346.6724980892536 +790 3.370448855106413 54.317633574748 288.8665479292258 +791 4.37962517981615 54.24559084321785 351.5907584044999 +792 54.28302666661116 3.888220487248893 284.1841294004717 +793 27.94431911117147 46.69989584633458 371.624300401859 +794 46.76185764347543 27.84050847913554 371.6570632498835 +795 27.85786068924624 46.75152233311797 263.5069114873688 +796 46.74140451775842 27.87483356636866 263.4969856359008 +797 54.26931085832995 4.07518608255244 360.0152636742554 +798 4.162494223823948 54.26268408844251 275.0008861392353 +799 15.60756025934931 52.13606530412761 371.6452625385301 +800 52.16080958701391 15.52466379258362 263.5053082801509 +801 52.16002057202668 15.52731453185748 371.6854992444989 +802 15.593627427431 52.14023423710282 263.4441493179364 +803 4.094056614929087 54.267890534636 328.7965880759438 +804 54.27468457770387 4.002980968757343 324.0117493465475 +805 3.736106110751591 54.29370823377865 310.9728080753132 +806 54.25520196146894 4.258908635518861 306.100227980649 +807 4.231107498615556 54.257377120357 359.9085040846549 +808 54.25532410049131 4.257352392758441 275.0631680905171 +809 53.98553026709666 6.879517746606327 263.4159403092389 +810 53.9850714515683 6.8831172454452 371.7722983391157 +811 6.818263277656865 53.99330077446678 263.1256700710197 +812 6.977292978510213 53.97298051189606 371.7220389190217 +813 53.25899748156342 11.19126578650963 371.6988804848028 +814 52.75583563296045 13.36364655749095 367.7996104748092 +815 51.47610882296596 17.66282715455386 367.7939865204879 +816 52.16106261940809 15.52381361198554 363.9104565376848 +817 50.70598246919066 19.76533795510742 363.907566600237 +818 51.47830361807834 17.65642940264036 360.0253606263675 +819 49.85059144821196 21.83308899145826 360.0225284521649 +820 50.70839814602218 19.75913966016675 356.1436035308158 +821 48.91127177263239 23.86320884183795 356.1400886417344 +822 49.85249043429377 21.82875260165197 352.2617687361335 +823 47.88976145400427 25.85219508134747 352.259361090785 +824 48.91325971164008 23.85913382809878 348.3836393059366 +825 46.7880643025694 27.79644368375407 348.3809300474419 +826 47.89251120617448 25.84710066935808 344.5075915294782 +827 45.60847658619841 29.69229034836603 344.5038568105145 +828 46.79126114691163 27.79106192514057 340.6327655673842 +829 44.35232954656817 31.53785196296816 340.6265290776406 +830 45.61180847364078 29.68717181560735 336.7593131614553 +831 43.02163469506682 33.3302293842947 336.751876805022 +832 44.35572509771006 31.53307618520358 332.8863991679675 +833 41.61906714523649 35.06591639478107 332.8820146719705 +834 43.02538507996142 33.32538794022528 329.0149613966572 +835 40.13837871602615 36.75154141929749 336.7411338768347 +836 40.14642696812199 36.74274954788667 329.0110309871471 +837 41.6231748974992 35.06104040238498 325.1431309100368 +838 38.60654303519224 38.35752960654962 325.1389854625555 +839 40.15123638089011 36.73749392284898 321.2708266240203 +840 37.00067097738966 39.9088409988117 321.2666726084532 +841 38.61132907449832 38.35271189559194 317.3975573601531 +842 35.32618068282173 41.39838403863263 325.1320875127893 +843 35.33262709376548 41.39288230237645 317.3937231877455 +844 37.00562160855607 39.90425055066 313.5241271992688 +845 40.156995733944 36.73119840502734 313.5279996784551 +846 38.61582670445418 38.3481834064802 309.6525771807424 +847 41.63446493500638 35.04763290467992 309.6566496577057 +848 40.1615320716998 36.72623836304649 305.7810129059668 +849 37.00914085453746 39.90098665264413 305.7764453335316 +850 38.62043309108194 38.34354431325752 301.9043181194441 +851 35.34007813490129 41.38652099493929 301.9008330975016 +852 41.63994483216334 35.04112208562782 301.9078900249503 +853 40.16580503405297 36.72156517105343 298.0309465824852 +854 43.04794791296018 33.2962373719396 298.0340048625234 +855 44.35942032375275 31.52787768287156 325.1468602806412 +856 41.64362233098089 35.03675158744185 294.1561636735113 +857 44.38210231300161 31.49594000698719 294.1603797464117 +858 44.34779557596309 31.54422720876308 348.3746935929331 +859 45.63848267037191 29.64614885936521 298.0380262963575 +860 43.0519138858221 33.29110922473502 290.2811009273569 +861 40.16894183373171 36.7181338660308 290.2775217028905 +862 45.64304290740035 29.63912746351838 290.2855742934808 +863 47.89505476962338 25.84238710452764 336.7609740889916 +864 41.64829080918452 35.0312020250387 286.3989984514875 +865 38.62435621007445 38.33959246005051 286.3957234929528 +866 49.85410441427211 21.82506622432874 344.5103099844123 +867 33.60673705866881 42.80598634437684 305.7723216705759 +868 31.82173439054141 44.14909356966816 301.8979696488185 +869 29.97823138749143 45.4210401193489 305.7683072505154 +870 28.08936452759148 46.61279698839756 301.8949758423366 +871 26.1483691978618 47.72869190474208 305.7641691687422 +872 24.16870975835646 48.76103681487714 301.8916608052644 +873 26.15354065018102 47.72585833806248 298.0217638851295 +874 22.14781237565835 49.71156454607031 298.0187557827979 +875 24.17339937872004 48.75871209458242 294.1481051927437 +876 22.14309872504331 49.71366433384754 305.7608781897756 +877 24.16272286083519 48.76400379989273 309.6321662467892 +878 46.78358609619476 27.80398019394726 356.1345263162018 +879 40.17282151135664 36.71388912199525 282.5162916529717 +880 37.01497367641127 39.89557577451491 282.5132751311039 +881 43.05811818691227 33.28308430490441 282.5209125844668 +882 20.08909916016695 50.57858576095677 294.1450945254402 +883 22.15228071856383 49.7095735408324 290.274111957208 +884 20.08133124044077 50.58167037828206 309.6291963880014 +885 22.13706737963323 49.71635033341705 313.4990299190957 +886 41.65298423128567 35.02562129746946 278.635588366157 +887 44.39615841413148 31.47612366084525 278.6407945454153 +888 17.98544466610803 51.36427769187304 313.4949045215038 +889 20.07462048750381 50.58433408604063 317.3644564770816 +890 28.09326194232546 46.61044814293645 294.1515962795953 +891 51.47780797495121 17.65787441170453 352.2595043921218 +892 17.99344660161973 51.36147507656042 298.0172145177327 +893 17.99605706721389 51.36056047863049 290.2721908888201 +894 20.09364587046551 50.57677963530106 286.3987531241648 +895 24.17895790921997 48.75595591381271 286.4025018839279 +896 22.15862238697409 49.70674699230447 282.523299469967 +897 17.99538650608276 51.36079542941458 282.5204345354364 +898 20.09626174629546 50.57574029581634 278.6440205746926 +899 24.18852489821762 48.75121030183544 278.6455062154042 +900 43.0370891424797 33.31027170089934 313.5311495409894 +901 44.37129009954339 31.51117036143917 309.66122237852 +902 45.62626613476525 29.66494701234192 313.5351968783569 +903 46.80810755600015 27.76267835911012 309.6665969035121 +904 47.90684848021295 25.82051725545789 313.5388775240272 +905 48.92829832812582 23.8282786906524 309.6716624662955 +906 49.86371748137864 21.80309431210932 313.5426737417152 +907 50.71812346983586 19.73416312752999 309.6766756843184 +908 51.4838693520516 17.64019385342353 313.5475737239022 +909 50.71531592594538 19.74137718542023 317.4127632878851 +910 49.86707418337286 21.79541591792793 305.8053061485189 +911 51.48672988484155 17.6318430236559 305.8106429586896 +912 50.72125785951533 19.72610564186541 301.9389188140158 +913 24.15675993943175 48.76695799282692 317.3711036410756 +914 22.12998175176921 49.71950472713743 321.2350414193713 +915 17.97835550878342 51.36675944465716 321.2295182649613 +916 20.06715534028897 50.58729602572362 325.0998539866378 +917 24.14771353664628 48.77143809236662 325.1044553987391 +918 22.12238410151647 49.72288571986195 328.9695079286663 +919 17.97077880615833 51.36941066184827 328.9643326790679 +920 20.05925091908023 50.59043086603294 332.8344519739867 +921 24.14044988834763 48.77503379633535 332.8398694409627 +922 22.11386079546946 49.72667697890216 336.7055201715321 +923 26.11807909626872 47.745273975196 336.7109483091678 +924 24.1321984781367 48.77911683556086 340.5778753519918 +925 20.04870129630203 50.59461254893782 340.5722398976893 +926 22.10459378718179 49.7307970592586 344.445262660309 +927 26.11227365876273 47.74844926293802 344.4511006628923 +928 24.12425299264175 48.78304685228768 348.3217041813011 +929 28.04913234842352 46.6370176699379 348.3279945569321 +930 26.10424969185051 47.75283646728226 352.2002565106031 +931 29.94051759372081 45.44590904433065 352.2059107974848 +932 22.09232675618088 49.73624775898975 352.1962103140714 +933 24.11358419763764 48.78832134629064 356.0744678984062 +934 20.02155329816023 50.60536183226445 356.0721200635512 +935 31.78765760767945 44.17363542275435 348.3314467405512 +936 33.5747049016697 42.83111524827805 352.2106977572143 +937 31.78107161537281 44.1783740038497 356.087126817656 +938 35.30680963545359 41.41490596405262 356.0915756336785 +939 17.94900721635409 51.37702193191765 344.444352996705 +940 35.31052272501746 41.41174021375467 348.3357263825728 +941 33.57575215377618 42.83029430150667 344.4608652715676 +942 33.56869151095914 42.83582837867781 359.9707170902408 +943 36.98005385380424 39.92794584767939 359.974990627308 +944 22.08189610875934 49.74087963524006 359.950236179235 +945 17.91720565639887 51.38812104087663 359.943719184374 +946 43.04070147893364 33.30560401564277 274.7700648358497 +947 45.6349054560232 29.65165504091302 274.8463448283386 +948 46.83587842638464 27.71580297726186 278.6552660305985 +949 47.93973574290693 25.75940565202799 274.8288337167784 +950 48.95980715171773 23.76347041810372 278.662778253644 +951 49.88542289170969 21.75338653085459 274.7959046175638 +952 50.7474257199898 19.65868829397314 278.6626913966055 +953 49.8956258766152 21.72997379258264 282.5322781164405 +954 51.51306259100191 17.55476075430817 282.5384331787263 +955 50.74318089565553 19.66964247860797 286.4156410656989 +956 51.50846278302397 17.56825274110414 274.9025614798588 +957 22.162384939053 49.70506952473477 274.7636967667531 +958 26.17825658905185 47.71230579843363 274.7652205763934 +959 40.17212181229758 36.71465472728029 274.7516770047612 +960 17.99680643426723 51.36029790424698 274.7623006532291 +961 52.1903858659069 15.42494297601207 286.4144646000472 +962 52.16324170241926 15.51648986531648 317.4170989277358 +963 51.48164722169119 17.64667793061387 321.2823396848189 +964 15.86587966331181 52.05803593255116 309.6261547223077 +965 15.84377625292305 52.06476732582978 332.8288635756988 +966 15.79331408019474 52.08009670699356 356.0673076851315 +967 52.16886412741082 15.49757588467393 301.9433224936022 +968 51.49303084987704 17.61343284368752 298.0641730875093 +969 28.05977265685329 46.63061656348958 332.8446130168023 +970 35.33812422471087 41.38818936513633 286.392788552042 +971 49.86054047853689 21.81035868191225 321.2800774028263 +972 50.71312479514616 19.74700524528747 325.1475743566042 +973 52.16142272605009 15.52260357800148 325.1515159095345 +974 51.4796608504314 17.65247182040071 329.0164665447206 +975 38.59519101754015 38.3689519398832 356.094870238888 +976 40.14076455260044 36.74893554619202 359.9786247114922 +977 28.11558976558726 46.596983322729 278.6473660656518 +978 30.00458992009625 45.40363230373025 274.7678812249308 +979 13.7138083114555 52.66589697557741 313.4905892515358 +980 52.75721382144587 13.35820468639854 313.5511177894574 +981 52.7812902934057 13.26275377169905 282.5435324767314 +982 52.75355639428 13.37264111538928 329.0200872163171 +983 52.15964024386072 15.52859208932043 332.885307840787 +984 13.69887560954828 52.6697830798609 328.960073477061 +985 13.6319289224684 52.68714982325623 359.9356357130191 +986 52.75671417866749 13.36017783249399 360.029689011371 +987 52.76502572580225 13.32731416306027 298.0655270510973 +988 20.01111723148179 50.60948952314548 363.8269013927731 +989 48.90727481563053 23.87139947204331 363.9016201619546 +990 49.8573780880714 21.81758677829831 329.017563020898 +991 24.10795070167372 48.79110529196022 363.8318843733686 +992 31.81670210759718 44.15272029719007 309.6437966967101 +993 52.76000792991911 13.34716471316476 305.8140127760735 +994 15.82945533443063 52.06912315817067 340.5664945086747 +995 13.67375944263392 52.67630914700135 344.4383852546925 +996 29.94681326459553 45.44176072668096 336.7164773783619 +997 31.79019334817671 44.17181057564905 332.8494762480441 +998 46.80445122332539 27.76884204155501 317.4079736468673 +999 33.57418315494498 42.83152423301894 336.7203137329811 +1000 29.95269900562684 45.43788138683185 328.9820435493062 +1001 33.61082334635183 42.80277790781587 298.0260626679757 +1002 36.97957557047393 39.92838881388889 344.4626995468478 +1003 41.62095998436903 35.06366969706723 356.0994836229989 +1004 49.8712906856535 21.78576617868948 298.0646984478908 +1005 20.01361232128671 50.60850288734811 270.9265614534986 +1006 38.59426835528396 38.36988002021647 348.3414521149961 +1007 35.30078428607636 41.42004190525866 363.8532786603646 +1008 31.77200852291346 44.18489240753443 363.8500264681381 +1009 43.02649903681701 33.32394969508063 359.983972312604 +1010 41.61776996044949 35.06745594086615 363.8640929059313 +1011 44.35338539893853 31.53636704344218 363.8666452596261 +1012 41.65040398621881 35.02868953344169 270.899214928212 +1013 48.92863478713902 23.82758780305403 271.0830775430122 +1014 11.46040155857051 53.20173341876929 356.0584881927953 +1015 11.52266173541205 53.18828357050781 332.8232879775344 +1016 38.62900642231556 38.3349071404925 270.8611644638536 +1017 37.01818884579356 39.89259251067352 274.7499682130098 +1018 35.32008518593449 41.40358468905573 270.9677724293999 +1019 15.8172213296582 52.07284082949656 270.9651663888578 +1020 13.70018219804946 52.66944323216004 274.7754089403045 +1021 11.52760629695409 53.18721214453625 270.8810217567773 +1022 53.26647958233121 11.15559929141286 286.4115354979485 +1023 53.24694905227574 11.24845141652097 317.4460067337359 +1024 11.60545710063741 53.17027936856026 309.5868055114899 +1025 13.72934848674922 52.66184798100876 305.7534022054818 +1026 11.56269398392761 53.17959524554058 340.5263303758803 +1027 9.608873138605929 53.56710557470564 344.4095948392534 +1028 22.05596902992022 49.75238157914333 367.701376959871 +1029 33.55136130255384 42.84940369936287 367.7281559004621 +1030 52.77727925562127 13.2787061500603 290.2849607202135 +1031 53.78291018765844 8.316478485016662 290.5146844614186 +1032 43.02300209492044 33.32846431184539 367.7475594908798 +1033 50.73149864674627 19.69975349339833 294.181762083621 +1034 48.95143502057277 23.7807117654649 286.4209318079714 +1035 11.58584808407988 53.1745556334804 348.32566417249 +1036 45.63153983396035 29.6568342043983 305.789008277924 +1037 35.30820747715144 41.41371424294017 332.8535983796255 +1038 48.9366525312861 23.81111676670479 294.1858614263903 +1039 40.13510758026985 36.75511368729044 344.4775618259124 +1040 33.60753229247273 42.80536199888844 282.5110629578144 +1041 31.81709434152645 44.15243764853629 286.3948761460885 +1042 33.60815105500184 42.80487618612695 290.2753286647015 +1043 53.23569804752327 11.30157936035515 332.8275835484897 +1044 52.74840352628119 13.39295217919055 336.7382967056454 +1045 51.47693560128366 17.66041742844076 336.7491603901826 +1046 52.15718487400079 15.5368371512603 340.6170498144361 +1047 53.25563008448029 11.20727919481249 340.6216358930337 +1048 52.75075680896683 13.38368031322927 344.4912305486463 +1049 53.23884668381731 11.28673763416489 325.2104693856902 +1050 28.03539236368248 46.64527862131229 270.9285853262522 +1051 9.71618504155993 53.54774496543853 305.437345904015 +1052 11.55014164551182 53.18232291480032 301.8904168323636 +1053 9.646318623172766 53.56037508891914 313.400804745452 +1054 11.60820094661897 53.16968039614676 317.3380571631835 +1055 53.77478435687046 8.368859541034197 313.4020135471116 +1056 53.62866670336813 9.259122542905255 344.5037654696299 +1057 53.23529664212345 11.3034700013137 348.4135173862635 +1058 53.98219096741244 6.905671654755484 340.0707162426091 +1059 9.159666722719146 53.64574305734045 328.9282263619599 +1060 11.4327291761266 53.20768690923167 325.0679078629888 +1061 7.125055989825796 53.95367290358764 332.8177705660183 +1062 9.224665823976721 53.63460434347806 274.7966737854615 +1063 11.51119360311286 53.19076672202738 278.6510344675848 +1064 7.115516278680817 53.95493184810177 270.8824353089173 +1065 9.17334736266481 53.64340538043209 359.9265913854832 +1066 11.4347934745928 53.20724331177936 363.8088644913336 +1067 7.003690574976862 53.96956143026789 355.9491978680758 +1068 53.78266415190725 8.318069449615761 282.3044592997919 +1069 53.2829704767823 11.07656534381591 278.6745277421982 +1070 7.037731969293332 53.96513292278512 363.798731062794 +1071 6.80728125383951 53.99468644761819 324.8831233969963 +1072 7.117953581141485 53.95461036336185 278.6366954382464 +1073 9.364940540343749 53.61028941650386 282.4938814728835 +1074 5.082952925780397 54.18421201973671 282.2512781387916 +1075 9.197627013629976 53.63924775724976 367.7458261132488 +1076 17.87711744397914 51.40208083861641 367.7040623049963 +1077 29.90844624462013 45.46702195963738 367.7232762950313 +1078 9.232820184392091 53.63320122916552 321.1811553701415 +1079 40.12819528014701 36.76266021663649 367.742089034497 +1080 53.27892130064174 11.0960257608525 294.1604668362834 +1081 9.268623406603316 53.62702548894582 352.1819093344836 +1082 52.18395383115664 15.44668913370088 294.169754566554 +1083 53.67136923727493 9.00829433586498 298.0869529973917 +1084 52.15566170728415 15.54194950837289 348.3592502486487 +1085 50.70798399190793 19.76020248180391 340.62532205181 +1086 53.26640868641017 11.15593780449695 301.9458929032108 +1087 53.99929492286033 6.770627037389519 301.9653851574841 +1088 53.66741762348695 9.031806478867917 305.8124722189148 +1089 36.97589838680268 39.93179411364235 336.726829710512 +1090 13.7025019304086 52.6688397773544 282.513278207884 +1091 11.57210028748661 53.17754918743277 286.3674024566056 +1092 50.7011391934025 19.7777583951444 371.6846697179988 +1093 49.88291208780777 21.75914346396756 290.2969254904447 +1094 53.67393115843186 8.993017104698378 367.8223903402522 +1095 54.26172925144666 4.174922908052031 368.3007469717554 +1096 54.00288910131602 6.74189968454309 364.0351086045514 +1097 52.16185790123354 15.5211411609134 356.147191227547 +1098 53.26181154421295 11.17786534514635 356.1523864747013 +1099 52.75738333343669 13.35753519382585 352.2738672988293 +1100 53.65902754512773 9.081520002549311 352.3149093275888 +1101 53.99282369938861 6.822040135635423 356.0801721721634 +1102 54.24651034771966 4.368221347439273 351.7923477199087 +1103 15.87097708083153 52.05648210497132 301.8886904940975 +1104 53.26189888203074 11.17744917795708 363.9387707336288 +1105 53.68689508071969 8.915298045341919 360.0413290581573 +1106 11.26324469091941 53.24382181697663 263.430851465575 +1107 33.60482045833233 42.80749098707757 313.519915458825 +1108 31.81619274120856 44.15308734505152 317.3900330336484 +1109 53.2636300456642 11.1691967931493 309.6795975653876 +1110 15.86929807848739 52.05699396950997 317.3569712558286 +1111 13.70630820156375 52.66784937824238 321.2218810983209 +1112 53.25975976702848 11.18763747195506 263.4896512956639 +1113 53.67554412712055 8.983384957966333 267.3637748952813 +1114 54.26215226313075 4.169421352933136 266.8863833192891 +1115 54.00146079616457 6.753330624645937 271.0463409964592 +1116 53.27273025792953 11.12571137102514 271.1499331190611 +1117 52.76567971287067 13.32472465322369 267.3443195413489 +1118 51.49252670904578 17.61490663511123 267.2771029922407 +1119 50.71245294898965 19.74873055520254 263.4538237982615 +1120 48.89526866995278 23.89598176134673 263.439081793661 +1121 53.60983844952032 9.367521767351969 336.3256942074844 +1122 40.14122072733072 36.74843726153802 352.2219063646643 +1123 15.83805382428104 52.06650836866878 325.0908323083895 +1124 44.37864544352951 31.50081064421956 301.911164067186 +1125 46.81422654467622 27.75235910097037 301.9219928925339 +1126 52.74918829407494 13.38986097619041 321.3037411524632 +1127 53.7665107128997 8.421850652031406 321.5793982024392 +1128 52.16619240845999 15.50656674602765 309.6799074045479 +1129 33.59795430298345 42.81288017991916 321.2600445694952 +1130 29.96879296764389 45.42726814049001 321.2535361785776 +1131 28.07972214775217 46.61860622917116 317.3786798215772 +1132 47.9374588590498 25.76364261478542 282.5373227000247 +1133 46.8298909271988 27.72591853108105 286.414694763947 +1134 45.65239599750925 29.62471910975834 282.5279037868429 +1135 29.97447007814722 45.42352238851293 313.5113149344357 +1136 48.89440082055705 23.89775744801567 371.6824067427791 +1137 47.87904474427553 25.87203735736982 367.7716200829328 +1138 15.87004452690583 52.05676641282577 294.1433789586525 +1139 13.7230326666833 52.66349415937594 290.2637224663814 +1140 11.54425415586496 53.18360121908139 294.1421022347384 +1141 9.557856130802922 53.57623193943702 290.3273718791427 +1142 7.315584649002708 53.92816948394183 293.9639920023985 +1143 9.318900310424397 53.61831160760147 297.8582509850444 +1144 15.8732654323317 52.05578437753313 286.3898987111255 +1145 15.86181837759673 52.05927352933014 278.6444037344666 +1146 31.78538705277373 44.1752692414075 340.5873897487623 +1147 41.62931904926965 35.0537449945023 317.4011128714797 +1148 53.64636453656857 9.156026138837586 328.9763100478991 +1149 13.66407840519926 52.67882120911635 352.1916753678888 +1150 15.83118427050872 52.06859751557245 348.3191349548197 +1151 3.674362415239162 54.29792172345971 315.4580427249125 +1152 48.91572561310375 23.85407785660611 340.6312265660877 +1153 54.28247427898791 3.895924639478538 319.7252711641496 +1154 54.27665217306735 3.976213214774088 310.9850045868187 +1155 9.326745519523076 53.61694751344518 336.6857307986859 +1156 13.69730971725451 52.67019032768995 336.6897127216225 +1157 20.08630312783482 50.57969621599375 301.8898606205035 +1158 3.615531616206975 54.30187081287059 306.6789631987671 +1159 17.9621387895467 51.37243242002992 336.699683893233 +1160 51.50613884390344 17.57506483737742 290.2948243986659 +1161 35.3352921800975 41.39060725807994 309.6473541699654 +1162 36.98293957283831 39.92527298838756 352.2160003805769 +1163 54.23595596287097 4.497368501579518 328.8462848688065 +1164 4.437493191268253 54.24088768468788 297.6935748164227 +1165 48.92415173029838 23.83679131335052 317.4111309534155 +1166 3.711977393719723 54.29536321339046 342.1289594103919 +1167 26.1252059278351 47.74137469610285 328.9749291291328 +1168 54.27751091294502 3.964473702853394 292.9651142559914 +1169 45.61451903032643 29.68300686044908 329.0193048723546 +1170 46.79716657462112 27.78111666640931 325.1501245666565 +1171 45.61840858914224 29.67702883442939 321.2797891910992 +1172 47.89781024414093 25.83727958709561 329.0199532333037 +1173 44.36722918554676 31.51688780705746 317.4033735951925 +1174 47.89981703853242 25.83355899446688 321.2822905192033 +1175 43.03032449941958 33.31900983102784 321.274627899344 +1176 46.79411717470654 27.78625272477946 332.8911791837618 +1177 48.91692105060011 23.85162630880407 332.8897905770747 +1178 37.01256088292442 39.89781421999572 290.2743407760964 +1179 38.62214925269822 38.34181568141736 294.1531902775987 +1180 26.1428094324215 47.73173742517207 313.5049020761033 +1181 28.08456936819503 46.61568626598261 309.6373712109129 +1182 19.78847376764142 50.69695798164666 263.4760030937168 +1183 23.90334487549324 48.89166949909473 263.5060497978046 +1184 43.04222586291358 33.30363396705252 305.7845923988923 +1185 45.60399276641859 29.69917652740427 352.2544345572678 +1186 48.92058356736979 23.84411344700131 325.1502923394876 +1187 17.99282502960869 51.36169282743089 305.7578267058786 +1188 50.71028781846645 19.7542894585903 332.8850839326472 +1189 3.67668596268599 54.29776443811723 346.6175078670742 +1190 49.84629061768569 21.84290626960385 367.7920691362772 +1191 54.28502345276273 3.860242398927878 288.6033397597061 +1192 54.27696979686675 3.971875163634154 279.8688948679739 +1193 13.71460484594047 52.66568955748311 297.99420601953 +1194 26.16578713049508 47.71914528244505 282.5268152076918 +1195 47.88636379771751 25.85848806249371 360.0172498814634 +1196 44.38939918676005 31.48565518587701 286.4031027607743 +1197 28.05324180312454 46.63454585370059 340.5839226622732 +1198 29.98283203510739 45.41800332247135 298.0241590031808 +1199 44.30902203797005 31.59866783084634 263.4807809804788 +1200 45.57920984174159 29.737196788668 267.2569921536361 +1201 41.5778137069637 35.11482094493009 263.4307977856176 +1202 38.6278658320144 38.33605644702355 278.6327665103308 +1203 37.01317410494188 39.89724533501954 298.0280175917923 +1204 31.62342209869774 44.2913582701307 263.5069114875192 +1205 35.20662222297087 41.50010836485242 263.4028964145552 +1206 26.13240709009665 47.73743334452477 321.2410092691644 +1207 38.58945046576394 38.37472547648819 363.8569001523954 +1208 28.06656171489474 46.62653060382557 325.1129556907143 +1209 29.93211426660086 45.45144418141879 359.9636331335597 +1210 51.47544670794063 17.6647566884869 344.4919096649188 +1211 26.15615976470304 47.72442298246055 290.2791645980197 +1212 38.60135899343224 38.3627465975215 332.8740383532343 +1213 35.3462785329274 41.3812256526821 278.6343625447614 +1214 47.91080019947371 25.81318397431031 305.798908611159 +1215 26.0957659966456 47.75747312927889 359.9564247956552 +1216 28.04197313443996 46.6413227232336 356.0815436927498 +1217 36.99366786519333 39.91533264956265 328.9999618177823 +1218 52.19189766541221 15.41982687090294 278.7129563743586 +1219 33.58202177872729 42.82537864279271 328.9893296023766 +1220 35.34161558509282 41.38520811209004 294.1516335362102 +1221 29.94343586994337 45.44398630124856 344.4572830861899 +1222 15.78190140670619 52.08355624028072 363.8167314072596 +1223 20.0383920068506 50.59869650915195 348.3225296155127 +1224 24.07783312637245 48.80597498856099 270.9354498920942 +1225 49.85571022967292 21.82139775863054 336.7556670955663 +1226 35.30210654176165 41.41891495874305 340.5883112574653 +1227 48.9328974602809 23.81883264954675 301.9305733513507 +1228 43.0182871581516 33.33454983383289 344.4913275416928 +1229 31.82366933103303 44.14769884098771 294.1520332019728 +1230 50.70605520037763 19.76515136956294 348.3820445674012 +1231 46.81859701127995 27.74498543053949 294.1717106460139 +1232 41.58623644346707 35.10484555034434 371.6460221957587 +1233 17.936146501179 51.38151312810596 352.1931467453236 +1234 47.91679543945654 25.80205335741238 298.0531698108097 +1235 38.58510267389012 38.37909710103713 340.5990204525979 +1236 47.92442905041922 25.78787201063349 290.2961915306373 +1237 31.80224697123367 44.16313315681009 325.1213016797506 +1238 11.29487631522169 53.23712061775434 371.6521772638857 +1239 41.61400677034129 35.07192157785867 340.6084863277189 +1240 31.717305659248 44.22417624290264 371.6329747092792 +1241 28.03106634604006 46.64787843138615 363.8388215410046 +1242 13.58800155973331 52.6984957684578 367.7075643391105 +1243 19.92232100397467 50.64450975634051 371.6178678746425 +1244 36.95598550291166 39.95022375599493 367.7345136410313 +1245 29.98244203404546 45.41826078044582 290.2773191562757 +1246 41.61331627411199 35.07274085833905 348.3574135306529 +1247 26.05649659195461 47.7789098661631 367.7097005503464 +1248 43.02013192438176 33.33216902414646 352.2364606344372 +1249 28.09458682396602 46.60964957855953 286.4035641480949 +1250 29.99001183235178 45.41326274273717 282.5210314955502 +1251 44.35204424377745 31.53825318630515 356.1176846019716 +1252 4.30298157586407 54.25172432470008 368.2430783266767 +1253 31.83647973461179 44.13846169445795 278.641025510837 +1254 45.60887001282068 29.69168602149607 359.9997703499397 +1255 46.78826967133727 27.79609799608032 363.879801408677 +1256 33.61706801955156 42.79787355014643 274.778953935597 +1257 31.75684969185048 44.19578871673967 270.9515131406551 +1258 45.59845177844769 29.70768314854021 367.7480448080427 +1259 44.32405852899117 31.57757239187402 371.646694294681 +1260 35.2343207005419 41.47659445297846 371.6546862691501 +1261 23.99788356153385 48.84533577745722 371.6435190581015 +1262 47.88868644551248 25.85418637607591 267.2778405844898 +1263 54.3183013430709 3.359669901764389 337.7270019436756 +1264 53.67403847011622 8.992376602098251 274.8873371813885 +1265 52.78282336829693 13.25665115768864 274.964167346244 +1266 52.17860327045746 15.46475358321906 271.1038066220121 +1267 50.73056678914298 19.70215307771673 271.0669172194429 +1268 49.86398256841468 21.80248804752147 267.2680745193496 +1269 46.79359562714509 27.78713103090544 271.041693934778 +1270 44.35934593865867 31.52798234172123 271.0090383281525 +1271 43.03290483828845 33.31567714791778 267.2232387076053 +1272 33.46536801733885 42.91659802581694 267.1686449798469 +1273 40.15419901108812 36.734255735259 267.1935686401979 +1274 36.9714244647606 39.93593639433011 267.1880492026647 +1275 6.939039617932295 53.97791188834786 286.7106663114268 +1276 29.76606880867956 45.56035985725347 267.1061870056303 +1277 4.026771323015181 54.27292469876321 266.667741400899 +1278 25.90210920752135 47.86278284060715 267.1024176422342 +1279 21.88952668534817 49.82583530796959 267.1348001392062 +1280 9.112233818686718 53.65382034374683 267.0315976847938 +1281 13.55174703505619 52.7078304898174 267.1439633289745 +1282 17.77787367361312 51.43648948257 267.1676143211175 +1283 7.4460313745922 53.91031310810639 316.9649956975122 +1284 7.455536593462855 53.90899940407923 348.0416830550964 +1285 7.478486018379197 53.90582055324254 340.7630426911589 +1286 53.9419199749163 7.213495135175875 317.5590189161022 +1287 7.303619507959713 53.92979125426344 309.0690262256253 +1288 53.93592059774128 7.258216855373451 348.2631541983097 +1289 3.429985957909378 54.31390649708437 292.996595814614 +1290 53.94905203664395 7.159959985430273 286.4054617801658 +1291 3.165937938647737 54.32993723182562 333.0248196161932 +1292 3.095180170286942 54.33401423012055 270.8120688810567 +1293 54.32753405624678 3.206912224060162 342.1261445109021 +1294 7.71951302286403 53.87183272671639 301.5499500019982 +1295 3.204064439839319 54.32770208384335 355.5068456987443 +1296 53.9167098158272 7.399570614661547 309.2165472651778 +1297 53.9212919960335 7.36610562807597 294.6928934324464 +1298 53.90424169421961 7.48985781017476 325.6601096458397 +1299 3.160885739121273 54.33023140011185 364.1644592133013 +1300 3.052868521571445 54.33640801925978 324.2852095937845 +1301 53.92095824353543 7.368548347156895 278.2681556705574 +1302 3.32057141205017 54.32070551956183 278.9927449948929 +1303 53.89970998957893 7.522400260871764 332.4680699647838 +1304 54.3385149322847 3.015134756417041 301.9840409474967 +1305 54.33657461268982 3.049901966468799 364.3180013990776 +1306 54.33684203564182 3.045133862277194 270.83173127768 +1307 54.33391422024431 3.096935283891556 355.722010960544 +1308 3.29756253962592 54.32210713827967 372.2883283783866 +1309 54.3221071398333 3.29756251403235 262.9013896078447 +1310 54.32210715109971 3.297562328436266 372.2883282848716 +1311 3.245804789551017 54.32522428774324 262.8485484227763 +1312 3.102007018441189 54.33362490302871 285.2570785035067 +1313 6.151343457954343 54.07334108696966 290.656257324727 +1314 54.10855647109174 5.833468887390698 344.0184570026175 +1315 6.179538526590757 54.07012619038225 313.1363166706614 +1316 6.428241981018858 54.0411227462841 304.7885082767447 +1317 6.267175257612845 54.06003844741367 344.3768427615425 +1318 54.07084102463152 6.173280613620602 336.0731144815957 +1319 41.49093448605407 0 417.010015458024 +1320 37.66049087758854 0 215.1461631355129 +1321 50.14125317768478 0 405.4595458493766 +1322 29.93516238393642 0 424.9432248299889 +1323 47.62824575466382 0 225.6725129484936 +1324 54.4811426905055 0 238.4162427613961 +1325 58.45995804927129 0 252.3948305816193 +1326 58.28477823585384 0 288.6033397597059 +1327 58.37201880838514 0 324.2852095937823 +1328 58.36095777460613 0 355.2154918890607 +1329 58.26192725352429 0 378.0431662956843 +1330 58.46548635116631 0 306.9346189285691 +1331 57.59225121683264 0 270.9375367612232 +1332 14.43601065273344 0 496.9022956738123 +1333 17.72860675736995 0 133.098767329332 +1334 25.42763355604298 0 206.5492984117431 +1335 58.68522910729062 0 342.2113481099134 +1336 394.8025645733144 0 453.1913660932101 +1337 396.7582963160313 0 207.5839280372746 +1338 8.157097631970551 0 463.3218109687589 +1339 8.846860259760719 0 169.8484493288906 +1340 23.09059732698516 0 549.2336214145651 +1341 16.62682182052134 0 203.7633106347442 +1342 159.3301498998949 0 47.69631324954319 +1343 21.18196609284995 0 429.8626243384547 +1344 222.774288637337 0 607.3142115017308 +1345 12.4238494294583 0 432.7260229692204 +1346 396.7981945444095 0 326.6435597152473 +1347 285.4783891962147 0 48.65862559787974 +1348 6.613325116663664 0 191.6342447498429 +1349 5.934379095768383 0 444.9486369482266 +1350 30.24229746075718 0 71.44088773046923 +1351 349.8561033199449 0 602.2172686543332 +1352 96.13719023601716 0 607.0925521262811 +1353 399.9519860823551 0 92.87551616366159 +1354 7.207691016159267 0 201.7883265895246 +1355 5.504025615897675 0 437.8414072393147 +1356 11.72953736849093 0 441.5890058477524 +1357 12.0736958871927 0 448.8044102122856 +1358 19.13379053650768 0 444.808899038093 +1359 19.50152598947113 0 453.5849603262322 +1360 27.86506380344319 0 448.8080539874036 +1361 27.82782613377263 0 459.7074944274798 +1362 37.70923236952488 0 454.4307147878715 +1363 39.83643100957367 0 467.201406114557 +1364 50.94825944460391 0 457.4113446920006 +1365 36.99807558996828 0 442.2547464702444 +1366 26.50429384357871 0 472.5135028177165 +1367 38.12115928708306 0 482.5843119924149 +1368 26.83964856675208 0 440.0768160932479 +1369 168.7408137638937 0 605.6570567742765 +1370 189.3433893046142 0 555.2614074642371 +1371 246.2995212667191 0 557.3858407412287 +1372 218.7887436545546 0 514.5572960247467 +1373 174.7542734106639 0 511.6514500464517 +1374 195.963746696548 0 479.6784083523406 +1375 156.3748226080282 0 479.254151599861 +1376 177.1652034499108 0 449.9546723701088 +1377 209.0343149928331 0 447.3908174192593 +1378 189.920196142652 0 421.4253195857825 +1379 159.2493447024282 0 425.3392024590589 +1380 169.4083236488841 0 397.8305860742445 +1381 202.7390704815901 0 394.9399252978877 +1382 183.3338242799391 0 371.4912651672303 +1383 156.9097094668167 0 373.4769934241091 +1384 166.7693462019207 0 349.8900188217317 +1385 192.6721735446389 0 345.5497744393911 +1386 175.2045062467068 0 325.2292805695967 +1387 201.6566128965404 0 320.1307309102393 +1388 183.6776872212085 0 299.8603356209632 +1389 211.156054844549 0 293.7842515204643 +1390 191.7794464993166 0 272.0851823941417 +1391 158.6055769388103 0 306.7303726748019 +1392 140.7882035344474 0 351.7570436177909 +1393 134.0196796108984 0 373.0020762815985 +1394 55.92632520926021 0 392.2302262614706 +1395 221.8777958773508 0 265.3110286699976 +1396 122.1997547834485 0 358.5491028248069 +1397 115.5606688470932 0 373.6708429066002 +1398 200.3575033396328 0 241.841847779251 +1399 166.7556386024233 0 250.7301283972892 +1400 234.1719668988864 0 235.2533497495143 +1401 227.7429691021451 0 314.7125493176366 +1402 104.2816710652755 0 360.7295735935124 +1403 111.3459801016679 0 346.8906042338245 +1404 100.2751308218938 0 375.0646445929979 +1405 108.0882475181829 0 386.9641662003341 +1406 178.1759003195567 0 219.4315795241082 +1407 148.4082412466221 0 224.7461808573687 +1408 137.1851776419574 0 509.3728791727332 +1409 92.53759014177584 0 387.1842253968341 +1410 101.1214430149592 0 399.0808230491637 +1411 97.50142240270328 0 348.9791512962352 +1412 102.4042623243228 0 336.6366972558196 +1413 157.6300027856975 0 197.4307178493609 +1414 130.6394044818118 0 206.1707707156649 +1415 122.6331328862194 0 228.7927210260217 +1416 104.0278923519462 0 213.6702035219573 +1417 111.6217372484308 0 190.3956546020806 +1418 189.0815876216638 0 188.4264306815398 +1419 89.65032381291986 0 196.4578181296958 +1420 95.01604215173194 0 174.9099166462774 +1421 72.39979961541074 0 184.2282991687206 +1422 256.7359979377679 0 260.9657559523967 +1423 87.07612957379844 0 400.1028291209458 +1424 94.78180592899673 0 411.8434320537182 +1425 101.6224267305205 0 233.4968562617337 +1426 114.5256630303462 0 246.6200100460672 +1427 89.83210035688354 0 338.5779946150935 +1428 93.08433471816979 0 327.4250622025345 +1429 78.11664852753636 0 159.9133976068181 +1430 95.49190610517215 0 250.2669216279557 +1431 106.5276549169702 0 261.6388479365954 +1432 117.7692165392356 0 166.7614998259861 +1433 105.9553681295512 0 323.0953107962417 +1434 97.18066351912111 0 315.2523327817503 +1435 92.69845564110082 0 264.6765225478237 +1436 85.59582421315565 0 348.9582979113737 +1437 87.52806443041912 0 375.1592113380276 +1438 78.54875978791918 0 411.9408851304873 +1439 87.92773015701663 0 424.6341092141087 +1440 73.123948852065 0 425.2067668529635 +1441 86.10675313345145 0 317.7553335988279 +1442 89.2498862498484 0 307.4814437094531 +1443 99.73209011274714 0 303.9305177465606 +1444 80.21043781188628 0 438.7462725478499 +1445 270.9861297156025 0 226.7652018796757 +1446 86.71165104389456 0 238.6356767681501 +1447 97.76249234312564 0 438.2623964372571 +1448 88.46343922382921 0 454.5414065101662 +1449 267.640040592385 0 511.4425339622993 +1450 299.5052429467405 0 255.1090156101677 +1451 79.32421863661878 0 341.6185090523676 +1452 78.2915958364834 0 310.7784787821604 +1453 81.67910773257842 0 300.7834814067111 +1454 75.88500704071049 0 319.899874119814 +1455 58.28477823586346 0 315.3647421352455 +1456 74.98143716009258 0 350.7825255413168 +1457 73.0255250173424 0 203.9083487464594 +1458 57.01802412875819 0 187.3060222009331 +1459 123.8651494878259 0 261.9704567556382 +1460 110.0025918750879 0 411.6645359012495 +1461 73.10871899106738 0 399.0112585676687 +1462 73.00789928374596 0 303.4508080390794 +1463 73.96633600663603 0 294.4691885034343 +1464 83.7923264444261 0 291.3069672876362 +1465 76.7524247528889 0 285.7475996498922 +1466 58.3465468578948 0 297.523807218235 +1467 100.6007549675067 0 274.2611019492418 +1468 109.0176432553334 0 454.0770475455009 +1469 99.2554865911688 0 472.686484841529 +1470 81.02537998078091 0 357.6960575422555 +1471 72.46731583245185 0 359.0327383092629 +1472 58.29127958764483 0 368.6197151667287 +1473 54.62840772066691 0 206.5130833471683 +1474 315.8128511374492 0 214.2960406219895 +1475 282.6444022030083 0 184.9618892991211 +1476 326.655495076199 0 171.9179586851897 +1477 70.97752380186022 0 343.3011277352331 +1478 58.46579946261003 0 333.4836968183192 +1479 73.3040692945812 0 335.4226937966972 +1480 165.1481117749599 0 165.7584987113363 +1481 198.4906526496318 0 154.9944014654937 +1482 278.0707928049363 0 294.0198596103462 +1483 323.9627893860925 0 288.0683668844227 +1484 306.0544094050727 0 324.6374705849443 +1485 64.4102026540731 0 436.9489119991586 +1486 59.73621341590815 0 424.9402140136359 +1487 77.96588781725632 0 472.9301986477017 +1488 88.33683562905659 0 492.5120827731897 +1489 77.09500174041602 0 365.2757129917955 +1490 69.414648837933 0 365.5686845946466 +1491 73.39460326828512 0 372.0922291115792 +1492 83.2586161294423 0 213.4489663303273 +1493 68.50268961373683 0 218.5058962802341 +1494 68.03862375696364 0 287.7905947916865 +1495 57.59536400463957 0 279.5958799493287 +1496 69.36712156451951 0 280.1024393883826 +1497 78.49791797055769 0 277.3236632831561 +1498 71.3111613427112 0 272.6372533975612 +1499 58.43307562323321 0 261.8131087725268 +1500 173.5322577903027 0 132.3029651411351 +1501 213.6381401288518 0 111.984540194992 +1502 65.41590090385887 0 415.3492441017949 +1503 79.90971843276112 0 390.9016823995448 +1504 69.92351750097791 0 390.1203888184607 +1505 63.639081995907 0 400.6900421097346 +1506 82.95290515079193 0 326.2822728148736 +1507 82.00273566869464 0 249.8543777881439 +1508 75.22016352323527 0 241.7327440817981 +1509 70.89163191477911 0 251.3263463978118 +1510 65.97082335073176 0 243.6141631813505 +1511 66.96252516984121 0 235.4287224975441 +1512 76.22932625946498 0 259.0405797015204 +1513 67.59818833197171 0 260.3343637923394 +1514 54.66191587189935 0 416.2950726213929 +1515 49.79208824599037 0 424.3740246613997 +1516 52.87410907248173 0 433.9944343909302 +1517 295.6962543383063 0 137.1898173817584 +1518 70.01966692313081 0 311.1259394296563 +1519 67.60574479568997 0 318.8636387153506 +1520 93.3748591801271 0 366.5895340183438 +1521 66.63133910235307 0 371.3520627574087 +1522 69.03761747547323 0 378.172996063041 +1523 116.4481484292869 0 437.4419833918586 +1524 66.37974793772837 0 337.3665548250673 +1525 68.20929982922347 0 330.1796526157493 +1526 66.75132049853471 0 493.7147373287221 +1527 76.90529244073589 0 514.4612053595205 +1528 54.17258946951837 0 512.9465203397331 +1529 64.1235808014406 0 537.5042762383086 +1530 91.41286733536069 0 537.959526030421 +1531 296.0304506795578 0 550.3690125954871 +1532 316.2812049405561 0 505.0859018156916 +1533 287.0253308101377 0 466.4527254598669 +1534 143.768392727116 0 390.2910134834773 +1535 59.49297200116573 0 407.9082428784697 +1536 220.4171907918829 0 55.38481349714399 +1537 65.89276317329048 0 360.1414499897747 +1538 67.15474347727547 0 349.968271963544 +1539 132.2982193277908 0 459.3982066560561 +1540 221.4308747055414 0 182.4467093730375 +1541 138.176038424768 0 417.2457225974906 +1542 336.8125054581677 0 460.366539913558 +1543 305.7323218118005 0 423.6577666610755 +1544 259.9188936775882 0 428.1816667761008 +1545 277.5934615527006 0 390.7351001017455 +1546 319.9418413028317 0 382.9039151216946 +1547 361.3804436535785 0 494.8851662080142 +1548 56.31699245807988 0 171.6777229219445 +1549 60.89776333687789 0 143.7570805895062 +1550 85.8597594811409 0 134.287860864865 +1551 38.78077604896345 0 177.3168855407417 +1552 38.42508921569595 0 160.4353729042322 +1553 61.81117064624409 0 116.5821121357993 +1554 93.90209587426051 0 104.8647125095373 +1555 39.38469659966631 0 196.1780752999923 +1556 115.7703169202094 0 131.4913957671997 +1557 145.4900706014909 0 563.6079852314508 +1558 42.21329378259735 0 431.4178364587019 +1559 64.80589612206562 0 274.7830369697688 +1560 65.22305088821253 0 268.2060200442951 +1561 66.32579653157585 0 304.7421388980187 +1562 67.42851532568548 0 298.5403399500598 +1563 151.1218551581716 0 329.725849218536 +1564 136.9438818201941 0 312.021518176471 +1565 142.6060030750316 0 290.9327146968749 +1566 123.3164805288957 0 296.9832835635589 +1567 131.3586703796784 0 330.9687804510691 +1568 165.5312732435012 0 281.6466624666429 +1569 144.3884517375834 0 268.3081658502995 +1570 105.3898026789943 0 50.4992923971389 +1571 33.28379887839293 0 433.7949104945532 +1572 401.9449202113577 0 266.8425119485348 +1573 401.2838487352895 0 388.7498808791656 +1574 17.90750518492781 0 436.3889549483739 +1575 6.750674380295983 0 182.7760563889338 +1576 13.87016970763474 0 187.3120475594556 +1577 13.2875357459578 0 194.9132667155948 +1578 20.19577419513432 0 192.1176635247346 +1579 21.36360323183788 0 185.4660204509956 +1580 12.20736753838622 0 153.7328267903288 +1581 21.96569529604702 0 105.085576604227 +1582 77.24314249449739 0 232.061255512355 +1583 28.58807753212016 0 584.4865233268159 +1584 18.66151699569051 0 519.75247258635 +1585 12.64483774114287 0 477.2639720044286 +1586 349.5019455421708 0 123.9834171897536 +1587 77.58856390912463 0 378.3085287838474 +1588 30.08724795843948 0 189.4664686590313 +1589 32.51729476845919 0 199.9787714632592 +1590 40.00172835439979 0 205.1355622567595 +1591 401.5662584441829 0 148.0375228840553 +1592 63.84841091529113 0 344.4272819945485 +1593 67.34788653387234 0 80.71347694469922 +1594 239.210577550478 0 469.971128587303 +1595 353.9013618259276 0 243.9269049731653 +1596 64.18841158581843 0 283.2292546923153 +1597 63.29201665073988 0 311.4132011152137 +1598 239.9141224073652 0 395.087646238258 +1599 249.5859321645774 0 359.1805422357148 +1600 57.96547205467639 0 382.8636126819052 +1601 62.85439723396167 0 380.8129426318028 +1602 62.95520610726665 0 387.138427080045 +1603 133.4622287283889 0 90.64546774873588 +1604 57.27425964263047 0 247.6516294403799 +1605 124.283894508112 0 387.3207591578556 +1606 61.73408790154043 0 350.4287027114936 +1607 63.40794364467246 0 255.0802037603451 +1608 57.31212840954105 0 387.7711041764172 +1609 54.43929645974305 0 396.8200853031841 +1610 214.4173042779801 0 367.7724330038229 +1611 12.32174848210356 0 201.2642269805808 +1612 16.65361706054645 0 431.5575318218696 +1613 52.70445691726357 0 233.8809025994469 +1614 58.6618519257229 0 234.3099864332212 +1615 56.06235823803439 0 228.9364598412456 +1616 55.95355291928144 0 242.9360810277759 +1617 79.60091174390934 0 268.4163165425654 +1618 88.6697152227367 0 274.4597939921135 +1619 94.05039145303301 0 285.4770111830466 +1620 108.6266394935378 0 285.9940420571082 +1621 52.3824923294069 0 401.185123019664 +1622 47.62577815491805 0 409.5154527276972 +1623 54.59606626718722 0 445.0798759820598 +1624 67.59606658540181 0 453.0034632809597 +1625 50.35052391496552 0 229.5829621343348 +1626 44.8457569589701 0 221.6092713256647 +1627 50.5150172702439 0 220.8683453444047 +1628 46.82465455755719 0 215.8449011133569 +1629 126.7784221915335 0 279.3959197591037 +1630 44.77506141629419 0 413.3749064559577 +1631 37.93158222364286 0 420.5081850219641 +1632 119.0079791552833 0 313.8758640503017 +1633 57.56248627414176 0 400.9743305320673 +1634 24.35572047011236 0 199.4580917038228 +1635 283.532785737456 0 607.6483931741029 +1636 33.98924368200327 0 212.075804842289 +1637 354.4969745114912 0 411.3913216256916 +1638 27.34310837173385 0 428.5373668843519 +1639 348.7671527361609 0 322.5852845115476 +1640 41.44428009410642 0 217.9805468965114 +1641 21.15647887002573 0 204.7794970204247 +1642 136.9859612190023 0 246.3869118013547 +1643 62.86306428411397 0 365.5344671084904 +1644 34.03888073245546 0 423.3750248404914 +1645 58.64041879178596 0 257.2735779865484 +1646 30.0332014079355 0 209.2096054209037 +1647 351.3325684585751 0 57.79273879301545 +1648 53.18040801432073 0 213.9909594201884 +1649 4.253273092092382 0 197.4676702133126 +1650 59.54028585079133 0 360.0344364976882 +1651 63.01564539392843 0 227.8600251964111 +1652 349.1227163086885 0 543.9210909697387 +1653 399.8361828657128 0 569.2410460750715 +1654 57.68519816693049 0 221.5602277032013 +1655 39.36415680399286 0 138.2214740550398 +1656 112.9904558254953 0 490.9655425085958 +1657 58.42375210079712 0 346.7969058383602 +1658 58.37699285945542 0 337.8027707561773 +1659 58.28477823587121 0 301.984040947496 +1660 59.13546706691655 0 275.235386543078 +1661 77.71925884479805 0 567.3385251496593 +1662 58.28477823588726 0 328.7454433230608 +1663 62.92170251778426 0 326.8760143082704 +1664 58.26492942787522 0 373.3688854919552 +1665 58.39968024522639 0 319.8249758645096 +1666 57.77729725536316 0 311.1043157982049 +1667 58.38315106177285 0 293.0635734889692 +1668 62.6609320379152 0 290.8334566243019 +1669 59.018336045091 0 283.6194028427474 +1670 59.2621091228706 0 267.0387323555885 +1671 115.8441588435131 0 332.6961634761648 +1672 91.45143875619831 0 297.0700971726066 +1673 68.04108673598363 0 406.979934557631 +1674 88.49899097513817 0 225.812169818729 +1675 46.36621573649118 0 440.3423999488469 +1676 28.79562790474165 0 170.9142171108316 +1677 263.7256991475228 0 100.2812402658888 +1678 42.89624020510417 0 423.0724769358208 +1679 74.33003332028551 0 384.3319039063122 +1680 245.9387732464336 0 153.9290517611958 +1681 220.8614091030336 0 419.1062279962248 +1682 62.78032504535711 0 249.0142950552902 +1683 7.503406548731396 0 433.2504310431156 +1684 80.10933374154322 0 371.1040017689447 +1685 61.68364818617977 0 210.7191662856985 +1686 219.4139162289118 0 340.5012377408825 +1687 59.51516897058193 0 395.9244276083653 +1688 62.88320946606867 0 259.6238253689766 +1689 17.22408129965427 0 177.4408719319981 +1690 62.17153981386463 0 317.5301955084569 +1691 238.6389712560477 0 288.5567298985802 +1692 269.3842530338426 0 330.015590381131 +1693 211.5272037395757 0 212.1741135759217 +1694 74.80946423563971 0 327.3859277692802 +1695 52.74794018300557 0 409.7101356644802 +1696 33.37367779218097 0 33.34055465476669 +1697 6.164292590415233 0 453.3237317039868 +1698 56.82621112991819 0 474.6451856173282 +1699 85.53317842941944 0 282.8168442246479 +1700 67.82015432759299 0 384.1153316999323 +1701 60.1287084244897 0 391.3949845055772 +1702 117.434028620677 0 473.0344150029868 +1703 138.2315753652267 0 181.4196944745942 +1704 32.37794032214218 0 622.9629905067789 +1705 47.63262222839188 0 208.9970982034659 +1706 17.99067993064251 0 199.3826760966503 +1707 113.588881057262 0 272.848766672324 +1708 63.47820075257325 0 332.1857423012485 +1709 136.7078362723387 0 435.2580839034609 +1710 57.85549795111273 0 364.4745163695601 +1711 89.84899422357586 0 357.3099139477074 +1712 174.2210073143609 0 92.97367378879645 +1713 43.90792015336193 0 96.21722106714964 +1714 62.81590784598669 0 375.4779528318503 +1715 114.593472326014 0 397.2433826137647 +1716 62.85841441644789 0 322.0084383527775 +1717 61.83864306640612 0 339.5403372170036 +1718 104.709360650434 0 424.1349016114355 +1719 25.09122376353865 0 433.782661485736 +1720 63.10092318469856 0 355.0446147030576 +1721 62.50307543663428 0 299.7539240828501 +1722 292.1464504697885 0 356.2563629979198 +1723 42.43604879374985 0 212.9580338254085 +1724 409.3094480436693 0 510.9214333145237 +1725 60.45120495435674 0 239.7872988119204 +1726 104.4227193508813 0 512.6141167154354 +1727 71.99252771325396 0 265.7269066956564 +1728 62.6546268692494 0 295.541231864627 +1729 57.47260056319797 0 350.9068648755683 +1730 362.2269778726737 0 285.7875263268867 +1731 26.47788709338535 0 148.8035199347541 +1732 68.71493880591596 0 324.2022576468737 +1733 110.5012700688576 0 566.2778533574744 +1734 152.5465724436432 0 450.4871844988544 +1735 309.146971336558 0 93.58116784565919 +1736 80.4733958651682 0 333.9233449502582 +1737 49.13297104381212 0 199.0491909412262 +1738 98.50639672397082 0 153.4728141422293 +1739 141.9542829809845 0 149.0050611255903 +1740 361.403315909523 0 362.5104557167507 +1741 123.5102118571309 0 537.1446191656335 +1742 33.37149944793607 0 503.5053344724361 +1743 60.4860331824715 0 244.6006935033434 +1744 84.94043535947125 0 364.6843266194736 +1745 38.24528742838105 0 425.3789509523476 +1746 62.67992668647135 0 263.4032100667453 +1747 49.06235761608761 0 561.2203647398065 +1748 49.34659087040294 0 413.4811400925018 +1749 46.98426755643516 0 418.3603186043242 +1750 83.83681965774601 0 383.2722354554925 +1751 52.2849119397933 0 225.4523827921826 +1752 358.0286399459039 0 201.4994152555361 +1753 124.9926929705751 0 344.7097240697325 +1754 34.1542880735074 0 428.3615725706298 +1755 68.12645848751762 0 355.3250788155336 +1756 62.61534907582913 0 46.47821191189658 +1757 106.4820395486283 0 310.8853424548658 +1758 245.9453895521733 0 205.6447643480797 +1759 59.49040868551445 0 599.7794926655718 +1760 70.31405553551485 0 227.2390521942865 +1761 18.7504846209439 0 462.6056404901227 +1762 40.41369027627638 0 530.6937649651998 +1763 54.9406524598155 0 405.3102917729564 +1764 100.8789313283909 0 294.1488710117594 +1765 110.220660189464 0 299.2555464407349 +1766 10.15544437956012 0 436.4670800813489 +1767 128.8590013756787 0 404.7357694053147 +1768 3.500314752250581 0 433.1212690146442 +1769 405.3255845921919 0 616.5733304302671 +1770 405.6127373569445 0 43.11900589304811 +1771 66.94980679928995 0 293.4349623468219 +1772 3.490518653148766 0 201.7964662308452 +1773 23.53662412896416 0 485.9285186502394 +1774 34.11293979123317 0 206.8543353839984 +1775 20.19085111980133 0 163.5062259554338 +1776 49.26706876471374 0 494.1876470637854 +1777 232.2562988309832 0 441.162460194722 +1778 61.77330404959476 0 370.8706166712867 +1779 29.51342176280139 0 204.1912105215382 +1780 77.56349894966591 0 223.4134680271864 +1781 61.70671138175019 0 304.2141578121248 +1782 45.50333249942989 0 448.3641344469361 +1783 62.43821633232842 0 286.8152097421514 +1784 146.3960470570511 0 119.5502744385056 +1785 85.76507060149741 0 258.0130150245365 +1786 37.64009029979493 0 210.4339798887937 +1787 27.25026728872734 0 180.1208927387196 +1788 86.79686211387914 0 331.64683381924 +1789 329.1067657420907 0 349.990887088393 +1790 132.751269117151 0 485.9894893542121 +1791 45.6124535089634 0 186.9147202178105 +1792 243.6244574528866 0 332.3858734438494 +1793 39.91534740479308 0 117.033213717949 +1794 152.7807472007002 0 533.8999003061899 +1795 8.736714690595333 0 197.4135470497711 +1796 364.877569836968 0 167.2629761674675 +1797 62.56305851243734 0 279.2479105419274 +1798 61.20375488337959 0 271.2401425347907 +1799 61.85208542425217 0 335.9411299162451 +1800 251.4922887299717 0 311.9381205303087 +1801 12.5195023270555 0 456.9654325313684 +1802 131.18826477787 0 595.9856908012365 +1803 72.95050364900366 0 315.1669827617454 +1804 122.155133980168 0 421.5228670499787 +1805 64.87840033171508 0 394.0465881149752 +1806 149.8552245995627 0 408.4220194129433 +1807 61.16704605960317 0 198.7953922813993 +1808 0 41.29589005541233 416.8350047101372 +1809 0 37.78497319241019 215.0022578432305 +1810 0 30.00630155503693 425.8256928528515 +1811 0 50.19265540947278 405.4410470480077 +1812 0 47.87431492530752 225.6368617869056 +1813 0 54.59009459388045 238.4341085513445 +1814 0 57.66271171616631 252.4254980008427 +1815 0 58.5878911879219 288.4690052210462 +1816 0 58.22399800342311 324.2852095937843 +1817 0 58.43598252405275 355.8677728465494 +1818 0 58.32388131363428 377.9692834476703 +1819 0 58.13227122127234 306.4442746767453 +1820 0 58.86026891425223 270.5745740254598 +1821 0 15.1165064992235 495.6876445256828 +1822 0 17.20164798483746 133.9813812094835 +1823 0 25.679964167233 207.0770396079541 +1824 0 58.37299187416915 342.1261445109029 +1825 0 404.870164103844 444.8440499859983 +1826 0 400.3706953679107 213.5609712570498 +1827 0 10.44585889895847 463.263149389104 +1828 0 10.39284456763047 169.243785025345 +1829 0 26.97593431020847 543.7903509262783 +1830 0 16.68983357658999 203.679949221624 +1831 0 156.4681987064431 46.03214535808932 +1832 0 21.39363880776689 430.5497890027627 +1833 0 224.9999999999993 604.3269383281665 +1834 0 12.07617374431421 433.1763008499485 +1835 0 401.521587336363 329.9368428221151 +1836 0 291.9989661245107 52.47819951735381 +1837 0 6.092482197919001 190.4326777393099 +1838 0 5.811565060502787 444.3027436598504 +1839 0 27.85144618049516 73.56736863702949 +1840 0 355.5854854980855 602.4199849035886 +1841 0 103.9226398523229 611.9144038801802 +1842 0 400.9880387139812 89.9512226411474 +1843 0 7.207691016159266 201.7883265895246 +1844 0 4.56051734548369 437.7589125251874 +1845 0 10.83242692850447 439.4041958285866 +1846 0 12.63188316778276 446.9499851192659 +1847 0 18.87631588196056 441.1194405517679 +1848 0 20.3831146422243 449.9677268678678 +1849 0 27.50570287075699 443.9058606027811 +1850 0 29.06128090937813 453.5465773225081 +1851 0 37.07559539400621 446.6394811810593 +1852 0 39.67424647664464 457.7409840310756 +1853 0 48.97435816004134 449.5923658109219 +1854 0 52.22194308635429 462.3075063289766 +1855 0 63.20046642281552 453.1068622246947 +1856 0 66.83626203266591 468.7528432817608 +1857 0 80.08110667508053 457.4056996846292 +1858 0 84.26790950825783 475.8939916408198 +1859 0 99.43599653561407 462.2494475679582 +1860 0 93.84567865665915 444.9617380517876 +1861 0 114.1922391354063 448.1821723350367 +1862 0 56.40858760584899 392.6533040705981 +1863 0 105.6587815585917 428.4636032763748 +1864 0 128.1735874907483 432.8031583553071 +1865 0 123.1330817631938 412.5491010255691 +1866 0 143.7796133238481 417.4334487889754 +1867 0 135.5064509376497 394.3914705245286 +1868 0 160.0848517282275 401.8196219381423 +1869 0 153.9004906942832 379.6129372739444 +1870 0 178.0269167354165 385.1117298882337 +1871 0 170.7142972288374 361.9113942391956 +1872 0 145.1053295621032 357.353767720038 +1873 0 163.0314233285967 339.6083251341875 +1874 0 187.3399134200287 343.1213073866832 +1875 0 179.500110036283 320.0019669310913 +1876 0 184.4629917014942 411.1561789279759 +1877 0 140.9092059379575 336.0723386166397 +1878 0 206.5540743603192 322.8373363955387 +1879 0 195.1152334853731 294.7910095349787 +1880 0 137.1566201009418 457.2714385422708 +1881 0 125.625686240164 348.3581855928438 +1882 0 121.4189178432063 331.6856447778761 +1883 0 229.0743749365881 299.8901029226748 +1884 0 216.3709798102605 268.4832260957679 +1885 0 183.1106507762194 262.7765883765273 +1886 0 204.1582440266517 236.6400507721916 +1887 0 171.6315755325391 230.5898135596375 +1888 0 239.5671566728023 333.7600663047972 +1889 0 109.6451895256346 343.4185102980749 +1890 0 103.1868659497362 328.9715752532944 +1891 0 115.1000402874317 317.1603713466298 +1892 0 105.553811045332 483.7326589389733 +1893 0 100.2308076558299 314.4400805273067 +1894 0 109.4745240582847 303.5075357309933 +1895 0 95.72425191066938 301.288890714196 +1896 0 104.1185797602481 290.6342783488407 +1897 0 191.3574189404357 204.6365794502193 +1898 0 158.2957252284743 201.1785916700816 +1899 0 228.5793282687034 208.387074306396 +1900 0 252.383315391928 274.1591768604104 +1901 0 103.2864905279163 408.0036059213365 +1902 0 95.71609223195934 340.3448187526375 +1903 0 99.11574026496825 352.8461268648276 +1904 0 90.71774749308474 287.2554120268042 +1905 0 99.3956580471982 276.9656571326378 +1906 0 67.57901488977315 489.3182487680629 +1907 0 113.5149303714754 279.4111539645563 +1908 0 107.0721785935384 265.7672770958155 +1909 0 124.9102083016576 305.083533702299 +1910 0 88.56927876670581 310.4703092386654 +1911 0 91.74106853501604 264.803728094292 +1912 0 100.3593615309159 252.5375562058582 +1913 0 87.19351898811281 349.6643499781114 +1914 0 89.42902534028113 360.8968297042032 +1915 0 84.14963839422576 339.1607790723461 +1916 0 57.47557567977415 438.6300743580201 +1917 0 213.2377679527814 172.748706293059 +1918 0 254.6977486251575 176.8634362789404 +1919 0 101.4555777770206 365.1182771206343 +1920 0 91.9654755934462 372.5574350519883 +1921 0 84.78296667417641 250.7499067146347 +1922 0 93.70805918217971 239.7904399229859 +1923 0 81.49562345242148 369.2366354839706 +1924 0 83.17467364084155 379.3515745860113 +1925 0 81.24049726374852 237.2848275176525 +1926 0 88.10075419733494 227.1020160223874 +1927 0 76.2903831710798 226.0716449488708 +1928 0 82.31026605378159 214.6253151935065 +1929 0 68.58184200322127 216.0574395067505 +1930 0 75.67842588212214 201.507017557908 +1931 0 59.94427257366124 199.998282679989 +1932 0 69.26041647037658 185.4072813181317 +1933 0 88.41826124200813 186.876411830149 +1934 0 79.93955566258238 166.6685312558168 +1935 0 52.14389284035055 187.5691378950469 +1936 0 105.629718508458 168.7458736518327 +1937 0 93.15729174980987 144.8441917214319 +1938 0 124.4356970376766 146.4229033664626 +1939 0 77.351813396981 345.6265439612149 +1940 0 75.12089671103907 337.13771082978 +1941 0 58.43215420927415 333.0688759434923 +1942 0 107.2070854166127 241.5533373211763 +1943 0 99.22721250847873 213.8861305429438 +1944 0 123.7016939006786 266.7199634670384 +1945 0 205.3961709410304 391.0208328916356 +1946 0 212.709997101963 421.5802674691341 +1947 0 236.9084623675234 397.095447383179 +1948 0 245.8841581864459 430.8400382031009 +1949 0 218.9996056744842 456.0790401641277 +1950 0 255.7290680528244 467.080554904316 +1951 0 271.4237029627267 404.6298854424099 +1952 0 78.78483021695953 261.5889916176308 +1953 0 103.837092967376 376.8231568090264 +1954 0 227.1936951099943 492.2091954849853 +1955 0 266.9810224474714 505.5609756031129 +1956 0 29.82675257448301 465.9001644613718 +1957 0 297.6360502273245 476.630656607435 +1958 0 74.21846670438541 375.3481593601083 +1959 0 74.19826468622087 385.0299180146703 +1960 0 57.65961310874533 368.8604616553761 +1961 0 72.50775337210118 366.9964678371371 +1962 0 73.68314633016044 253.1084800523373 +1963 0 84.37552833446114 389.4178859245447 +1964 0 75.88629518675512 394.9873066541938 +1965 0 107.685908998003 116.0819840137438 +1966 0 68.65960092615813 261.1767897753566 +1967 0 72.90024165535746 269.388151317801 +1968 0 67.2781069423439 241.1030960496109 +1969 0 80.39664492595526 330.4674479318266 +1970 0 71.35286623419316 328.4004346990764 +1971 0 64.73674288840893 143.8118188989613 +1972 0 186.3917317709567 477.648609960869 +1973 0 199.2252209609067 525.9918837671379 +1974 0 237.2573027570602 136.0045990257083 +1975 0 284.212439750957 140.6925148744779 +1976 0 300.9326675640986 183.8832450155258 +1977 0 189.6751713735879 135.4332178657001 +1978 0 161.6246722020568 508.1741845415403 +1979 0 160.4079602726101 554.8495532362537 +1980 0 127.3083903270506 532.9916222819328 +1981 0 309.6342622942634 520.2133274336029 +1982 0 68.4942122354468 343.2628584843837 +1983 0 70.50404677426822 351.142569333749 +1984 0 42.02991007969609 197.2252643768109 +1985 0 37.19870768364516 185.7362657516558 +1986 0 42.24300880603634 172.7028525468235 +1987 0 58.38317366243561 261.7843748331571 +1988 0 220.3005187215418 95.40083329372091 +1989 0 79.20665922836487 361.1483329003966 +1990 0 50.43758829614254 210.9047862180117 +1991 0 60.79534538537135 225.3655917741306 +1992 0 332.8665770231594 147.4244345036253 +1993 0 67.1875045948487 391.535849610325 +1994 0 67.91382403756791 400.5792986418936 +1995 0 76.30705008498785 404.9825785407937 +1996 0 67.58885893981906 410.2493482872206 +1997 0 76.92545960687855 415.5656949413878 +1998 0 67.30454462535792 420.7831093795815 +1999 0 57.85586642827289 415.0976533494164 +2000 0 67.38955055453968 335.4760153846933 +2001 0 63.61047376782416 349.3099162610001 +2002 0 77.15011387806985 322.371968757774 +2003 0 69.80019937976573 320.220977108172 +2004 0 58.28477823586346 315.3647421352455 +2005 0 74.47404392317574 314.773188408564 +2006 0 105.4388298774626 45.82642064653142 +2007 0 33.94313586896581 436.4384424437745 +2008 0 67.83901280050951 313.5878306272465 +2009 0 71.85068530814621 307.8032996025819 +2010 0 58.28477823585715 297.5238072182323 +2011 0 83.11765789177829 298.8016796817334 +2012 0 79.30821881071799 288.2558753667474 +2013 0 73.66942418120982 295.2271259877996 +2014 0 69.46508573085886 287.7111070877536 +2015 0 58.24067829919439 279.682872301178 +2016 0 114.5760282320927 368.7702916114955 +2017 0 116.8923729408567 397.1734594721431 +2018 0 76.66793424290987 427.1817076168601 +2019 0 63.98928795723857 329.4671667088499 +2020 0 67.37133407634836 371.8706691853068 +2021 0 68.04096876123185 378.9412664083487 +2022 0 65.30146000120948 365.0102661884408 +2023 0 30.92763301796886 196.5811643519268 +2024 0 25.48577894792113 186.6110024107729 +2025 0 59.89945039345097 405.6275966833763 +2026 0 65.59309096815828 355.4980055895778 +2027 0 74.62440985317201 278.7620618441857 +2028 0 66.7543735105621 280.6063274402285 +2029 0 161.4202932200388 606.4951407780442 +2030 0 81.31753581468199 271.7052206160674 +2031 0 273.3220403122424 553.8611332248217 +2032 0 89.83819672511937 418.0831675297448 +2033 0 130.7725194533733 286.4317765523671 +2034 0 142.9276026208162 268.9061544726488 +2035 0 151.4667057113383 287.5772911071051 +2036 0 134.9829726118882 249.5382771332762 +2037 0 66.23749382170826 294.8928710855662 +2038 0 342.8047699097158 488.6805133598801 +2039 0 329.7299901978901 440.1251542663892 +2040 0 357.4552485760201 535.1050368840105 +2041 0 110.6960484423269 194.5533636332936 +2042 0 119.4531049793359 215.3322998543687 +2043 0 91.14380745634605 320.967914908037 +2044 0 35.67712604869496 205.1906352044293 +2045 0 260.1527888254824 369.4817693008769 +2046 0 298.8889056186955 377.3433035254214 +2047 0 287.1832700061864 339.2631069163586 +2048 0 328.655371377232 345.3905269955108 +2049 0 310.4844067963813 306.766289301173 +2050 0 66.01917125293845 253.7315783713943 +2051 0 402.8095685276139 271.0541182463384 +2052 0 359.2967650310909 246.0514988858176 +2053 0 398.0463581786818 388.7511786149489 +2054 0 147.4099917013644 120.9282386390882 +2055 0 58.04844877286753 425.8663544221392 +2056 0 50.64400144841122 420.7618232859905 +2057 0 47.44251628329518 429.4297518840422 +2058 0 43.85381080815684 439.0458198407952 +2059 0 341.370932653334 391.0235702596474 +2060 0 7.967136429927869 181.3043979102143 +2061 0 13.22431355673049 153.5699990967812 +2062 0 30.29188895623477 146.6426476996913 +2063 0 41.28417877807222 129.3874735854789 +2064 0 73.0486624058594 120.4240378071303 +2065 0 26.1643582314522 163.996574774623 +2066 0 73.78528245619634 441.8988833174242 +2067 0 30.49417430836048 581.8236605225542 +2068 0 57.01144530969418 560.5929587722487 +2069 0 54.9959341842271 530.7348898229051 +2070 0 91.86680082311653 542.5891725890624 +2071 0 20.76593913865831 195.4587428302509 +2072 0 17.14032918176051 515.8748073759382 +2073 0 32.84170443035831 502.0523396934773 +2074 0 12.15556173148832 478.3425978758692 +2075 0 28.02041805273458 481.8908815665179 +2076 0 64.59122745686926 268.378006801755 +2077 0 65.524324528587 307.9920378718313 +2078 0 391.7432005427942 150.6667150372223 +2079 0 57.93851167873397 382.7769257637597 +2080 0 57.23476612594293 247.7474393201702 +2081 0 15.12522240557949 187.9126233432367 +2082 0 12.25191893550988 195.5603607419922 +2083 0 19.12748688403869 177.4488747017589 +2084 0 133.9422863869668 373.0695050603442 +2085 0 12.35229130717419 202.138908301075 +2086 0 16.72461640419095 431.7817830710467 +2087 0 52.35012410105704 234.0194043840127 +2088 0 57.63488400753572 234.3308165152782 +2089 0 60.50900882417267 239.4631032945949 +2090 0 64.27988184790587 233.8510038919251 +2091 0 56.20300570872075 242.8469147560257 +2092 0 188.1744726657784 440.0701599023205 +2093 0 19.65815844906671 110.7968299258193 +2094 0 6.883636148505508 452.1669570911138 +2095 0 47.75005583276477 409.6625826697645 +2096 0 52.39497031781904 401.2398773701842 +2097 0 44.67829420087767 221.8177598231017 +2098 0 50.26278133658713 219.5229294797515 +2099 0 226.1397741680487 365.2513113066614 +2100 0 37.93094747978552 420.3969232958577 +2101 0 43.68719985679454 421.9519539303963 +2102 0 39.36361770797089 426.1398668812348 +2103 0 44.50864326979666 413.2973361168708 +2104 0 61.0093387059375 397.4783294265981 +2105 0 54.68281330112178 397.1623453850778 +2106 0 57.12956767275953 387.60808057099 +2107 0 50.48638764978262 229.7225272305116 +2108 0 34.18061893593188 211.7468271799476 +2109 0 25.89367370047253 435.8810062310994 +2110 0 67.95070250193257 300.9785480504045 +2111 0 41.39235312229864 218.2265400990298 +2112 0 21.2393806792317 205.2041123550892 +2113 0 25.17630606648979 201.6549706247969 +2114 0 63.38212013623385 318.3989939685125 +2115 0 30.18687936521779 209.0246502017169 +2116 0 34.03975311827898 423.2283510598365 +2117 0 25.93694380822456 428.7183348892113 +2118 0 354.0123060383078 56.54506343836734 +2119 0 63.64032978407459 285.5790465665124 +2120 0 43.17107446655658 212.9397387085644 +2121 0 57.91134985300376 216.5433657655674 +2122 0 349.6846972924892 194.7864388359075 +2123 0 4.253273092092393 197.4676702133126 +2124 0 62.21062286408974 386.3669677699766 +2125 0 268.104944260821 214.6667386031104 +2126 0 58.20487141104775 257.2044492316842 +2127 0 292.2706960018784 607.8961568373677 +2128 0 84.99954183116716 399.642588815121 +2129 0 94.41123375288709 395.1650942331092 +2130 0 7.401131750877387 433.8013322311295 +2131 0 268.1879464866344 305.1269319740824 +2132 0 46.72619779727197 487.5497433758949 +2133 0 402.7272677631335 568.1810617339274 +2134 0 58.5186136623072 351.1890033534601 +2135 0 57.91434478532069 360.009418452312 +2136 0 58.41225680945332 337.6431105968144 +2137 0 62.83689108497095 339.7166973782199 +2138 0 58.28477823586045 301.984040947496 +2139 0 395.5248462089471 501.84473261009 +2140 0 58.28477823587232 346.5863782401836 +2141 0 156.3131057654633 151.9848465711106 +2142 0 58.42199816849758 275.2002777603455 +2143 0 62.73048047242948 272.9925217072747 +2144 0 59.40997402766793 364.4842026845032 +2145 0 58.33632244790352 328.6740670480845 +2146 0 58.30704682977672 319.8598630195424 +2147 0 58.18661419891482 310.904508405997 +2148 0 58.25753855759156 293.0411843991927 +2149 0 29.78056009085279 176.2350139048038 +2150 0 70.04689013767475 360.0420904796702 +2151 0 58.52628807837338 283.9883542192346 +2152 0 58.31312913542901 373.2581120078671 +2153 0 53.11031580746302 409.8148452289527 +2154 0 290.4351551159203 276.9228495390803 +2155 0 83.21345050646262 279.9249962140906 +2156 0 155.689674290899 476.7967549746998 +2157 0 61.85390006491301 244.7307902013077 +2158 0 58.65109464506241 266.2545908104937 +2159 0 130.4137883105142 84.8941489945868 +2160 0 358.3713588617672 303.0438858034613 +2161 0 314.333593629178 100.001497200049 +2162 0 265.4621329234581 97.96598066274153 +2163 0 226.1351302791151 556.9481433154554 +2164 0 131.3497126367467 490.9240901095241 +2165 0 31.21880975910982 620.6973420183654 +2166 0 79.60415783682161 308.6126787249531 +2167 0 282.3721018626566 439.4878300141764 +2168 0 76.92752557160721 514.9740972142439 +2169 0 309.9040246151565 233.8428582938961 +2170 0 155.8644505633188 318.7152150784219 +2171 0 136.6018976582777 174.0389634801717 +2172 0 62.5113323349089 258.7468591043558 +2173 0 87.44653345063068 87.79850885806422 +2174 0 317.653546536498 563.8991278566782 +2175 0 59.59951140126475 168.3402317438885 +2176 0 133.3808621256034 319.0736497022728 +2177 0 175.4233864416059 88.11735095052754 +2178 0 66.5592774133866 431.0263465393026 +2179 0 196.4257447120008 365.5206191558594 +2180 0 117.5376758908081 468.4719614987526 +2181 0 15.78190917186434 436.0965650309826 +2182 0 61.14863989190059 391.4640065937485 +2183 0 164.0102461455945 426.0240002644152 +2184 0 121.9552258518434 570.405436181362 +2185 0 116.5581523890078 293.0136556598113 +2186 0 240.4416316096292 242.0289243047505 +2187 0 160.3722466361979 449.4985318719748 +2188 0 62.8565529014214 375.1966090191617 +2189 0 20.06022611101454 435.044274202527 +2190 0 156.8704865941852 251.1218264769656 +2191 0 33.62046444933043 33.2646989247708 +2192 0 208.2726498361842 46.01552155198003 +2193 0 62.47494094758562 299.3210158650334 +2194 0 53.90719774954437 224.6632113520234 +2195 0 142.9025154818618 304.5180323155295 +2196 0 20.72453403857313 459.7066013067015 +2197 0 29.99129983091474 430.9504631760778 +2198 0 52.35862095752977 96.6754342616988 +2199 0 53.41217280353193 507.6854253782711 +2200 0 368.0916219532579 358.9119521322494 +2201 0 116.5342335346421 251.6303669635008 +2202 0 112.7538491846279 356.9337803679995 +2203 0 93.99228557736595 383.756227262478 +2204 0 62.82874028589964 381.0865451467328 +2205 0 77.73130571775198 353.278157800838 +2206 0 62.2135743073457 344.315689113827 +2207 0 143.0220264467266 225.680296740352 +2208 0 75.56875563198562 302.3020697583298 +2209 0 168.2097876131266 300.3139586215646 +2210 0 49.95211691198578 414.4023910094155 +2211 0 103.4385699400639 510.1260545516658 +2212 0 62.17616751811344 335.4357939169833 +2213 0 63.75883068384896 57.38973945273915 +2214 0 62.95807389889522 359.5286775583528 +2215 0 305.2347333627662 411.146386345254 +2216 0 367.1796597287749 422.378652307417 +2217 0 72.10732158486212 234.8722354724621 +2218 0 39.07839538735639 210.2630032563578 +2219 0 43.70976020293279 206.46554312635 +2220 0 45.98841828449251 216.6823508656918 +2221 0 87.62517923653049 495.5446861762586 +2222 0 326.3048058149782 272.5901853996912 +2223 0 29.63982705433474 204.0277596152726 +2224 0 41.70973816054972 471.8470819773848 +2225 0 84.62826040734561 409.4319083421041 +2226 0 89.2058990815765 331.3526393518297 +2227 0 46.61009958188021 154.0170566402314 +2228 0 62.42264218462513 312.6720958571073 +2229 0 62.76475407081328 277.4224622998369 +2230 0 67.73771125872221 274.4625019558543 +2231 0 193.6641471635795 572.3644329858464 +2232 0 62.19711374523315 290.8334566243374 +2233 0 120.3886383082286 235.3476642545282 +2234 0 14.21380537920883 454.4108839548106 +2235 0 175.9365653771878 177.3645561566052 +2236 0 104.6808090986951 228.835314653065 +2237 0 20.58593748970778 471.4284310766977 +2238 0 117.440277439633 382.4870154134099 +2239 0 162.6899441958419 271.047910833016 +2240 0 67.52615397242256 247.759711270383 +2241 0 65.21088434299647 324.0194614132199 +2242 0 358.5662306498044 109.3028529220519 +2243 0 89.88530253447783 274.2931707960242 +2244 0 86.80527061592166 573.592724322699 +2245 0 34.56383537068297 429.3115154724364 +2246 0 61.93624240704786 353.276728834101 +2247 0 407.9723712928335 617.8509568195401 +2248 0 54.51394046071563 404.6076391070749 +2249 0 3.485947186946214 433.3967098032086 +2250 0 16.46823196368908 199.4745463653596 +2251 0 20.22566910968492 200.6804635545256 +2252 0 408.1429260933203 41.29925721587813 +2253 0 210.9373957786431 346.7071392227475 +2254 0 3.490518653148758 201.7964662308452 +2255 0 106.1897091751838 389.2222169701882 +2256 0 62.28967568851602 601.4368482526745 +2257 0 67.24033074841498 384.9232648584858 +2258 0 61.86065922915171 304.2141578121164 +2259 0 133.735032115433 201.0649244626937 +2260 0 55.03478777865821 229.6203102511913 +2261 0 82.5500097798824 316.8771187749376 +2262 0 62.55928580508686 263.2681242650237 +2263 0 272.253814198691 248.3241095202495 +2264 0 39.89210347499036 432.4197070519959 +2265 0 61.99850461823968 250.1511542216437 +2266 0 61.98528474860355 281.4558125653981 +2267 0 83.6270882248689 356.1969123444516 +2268 0 61.27931826666021 254.4519077859841 +2269 0 62.1231420154527 369.486358392145 +2270 0 74.43636546128565 244.1463761795134 +2271 0 46.0175703084801 417.4497018105621 +2272 0 54.66441398831924 475.8802639904322 +2273 0 91.2660428257435 202.2896477515602 +2274 0 147.1873008180211 436.1660601571026 +2275 0 56.63501913282707 401.1350637688597 +2276 0 248.6354249497264 58.37210700515925 +2277 0 37.07321498201726 520.027562639374 +2278 0 87.95917472789529 432.1178199584383 +2279 0 61.43983311036007 322.2010418549117 +2280 0 126.2126583642806 362.2916607457856 +2281 0 61.22530227251019 308.4454149247595 +2282 0 61.49037306159514 295.1224670384724 +2283 0 237.6959122445242 524.5525430878907 +2284 0 84.08929502436601 324.407417944881 +2285 0 68.41095479848808 227.2435831188278 +2286 0 174.0272492230706 283.3628291113545 +2287 0 92.07942366360426 405.876727331889 +2288 0 50.28490826729767 200.9575251834372 +2289 0 368.0218860298344 459.574620505955 +2290 0 61.44006517238435 325.7293893237701 +2291 224.9999999999993 394.3269383281665 0 +2292 225.3261063098306 56.67300616260519 0 +2293 61.80287208770427 225.6211069450401 0 +2294 393.0557455668133 225.8202153118744 0 +2295 392.069639991279 103.0140037238022 0 +2296 98.91483008121982 56.51592713752818 0 +2297 353.5714285714689 394.3269383281664 0 +2298 55.14765339677331 355.6948408349029 0 +2299 161.2396939894005 394.6302829372054 0 +2300 192.9447109030531 338.7044340911541 0 +2301 257.1428571428885 338.6538766563614 0 +2302 225.9934450335051 283.5543807419695 0 +2303 162.7591485503367 282.0082539397746 0 +2304 193.3635275021926 227.2412540981109 0 +2305 258.3716791151367 227.957403921516 0 +2306 225.2892011030346 170.9920781802365 0 +2307 160.846883339135 171.5165061949307 0 +2308 289.5387181317062 170.8960591392816 0 +2309 324.8892849594904 227.413180722893 0 +2310 354.5844094307512 167.3032290968727 0 +2311 358.3714331749662 284.2608897142896 0 +2312 323.3180260631763 110.4162854351312 0 +2313 192.9461791712984 114.8911695324715 0 +2314 129.022744003476 115.1053030506501 0 +2315 98.14332497742448 170.0184272207165 0 +2316 59.63880224238633 106.5936390251672 0 +2317 293.8786496142235 284.6964028205539 0 +2318 160.9993806725253 58.62499271602256 0 +2319 257.1428571430872 111.522797811113 0 +2320 290.6309481016376 55.93519834938883 0 +2321 58.85644823683592 295.843763088633 0 +2322 290.9025252710922 393.9995004434999 0 +2323 130.7554153036345 225.4878123204369 0 +2324 119.735058788665 334.2214151997482 0 +2325 324.4321458286876 340.305220074898 0 +2326 392.7259811974866 345.8937124865167 0 +2327 97.0279057952452 397.4093981276094 0 +2328 352.7253686990212 52.69579110221528 0 +2329 407.9419589977687 163.5132039122212 0 +2330 106.7817885934353 272.6364702987266 0 +2331 44.33030757656663 164.5982638522186 0 +2332 410.2264005296769 289.2857142858155 0 +2333 47.06040905801744 47.06040905799606 0 +2334 402.939590942018 402.9395909420218 0 +2335 47.06040905797953 402.9395909420203 0 +2336 403.1907408950559 46.8092591049695 0 +2337 450 56.64396271755783 270.9493909294897 +2338 450 397.9590685552697 390.352954170972 +2339 450 393.6804347795359 212.6062363353491 +2340 450 48.35468784444564 448.0987754126577 +2341 450 225.3264112981556 55.22099073584603 +2342 450 224.9636395238769 601.2300624303383 +2343 450 51.9615242268062 149.9999999995948 +2344 450 401.7031569907541 510.2215625156941 +2345 450 99.48761907170393 599.3030399632197 +2346 450 350.0230772523622 57.1408484311724 +2347 450 355.1151210996566 595.6526438337229 +2348 450 95.37113116394711 59.74038841888896 +2349 450 288.4990801440317 55.43669667682111 +2350 450 257.1405154411958 110.2368376542483 +2351 450 194.4808341262881 110.1161796380338 +2352 450 225.7379457023408 164.0171432448072 +2353 450 164.8778770653543 164.6579464359593 +2354 450 195.3283909195692 217.306274976589 +2355 450 256.2798521141029 217.153046432524 +2356 450 225.9889506323408 269.7784809475398 +2357 450 289.1482321577633 268.9924245928428 +2358 450 257.0098332527141 322.1610163828495 +2359 450 195.8754534126133 322.3553629653387 +2360 450 226.6248049706106 374.9205813047759 +2361 450 165.7252283646284 374.9456000914241 +2362 450 196.2229780502717 427.6306527042998 +2363 450 257.3774722446556 427.5403490140537 +2364 450 226.1804405550533 482.714853187833 +2365 450 164.1752517125402 482.7538587843009 +2366 450 287.7427913307205 480.8043974769755 +2367 450 320.1319474147809 321.6488749792347 +2368 450 138.8494686390721 321.3326384219667 +2369 450 138.7415676911627 220.4745032085539 +2370 450 103.1474864797688 368.0360457821905 +2371 450 314.6902724901731 425.8624297853423 +2372 450 319.1994630729918 216.6464544094956 +2373 450 257.367330958751 535.0356857409811 +2374 450 316.7746341527991 536.7176461843247 +2375 450 288.7375151214605 595.0710831052791 +2376 450 192.71694265686 543.8047960134032 +2377 450 130.8041115427537 539.8370827257596 +2378 450 134.9448741215047 112.5952583838733 +2379 450 161.5668140372918 600.6958301887867 +2380 450 71.8805167007765 541.897768989622 +2381 450 319.256435298083 110.5015634911548 +2382 450 378.9999667624875 112.7362087443682 +2383 450 350.2249735467877 163.6663155389185 +2384 450 355.0997876214404 268.2802351282951 +2385 450 389.8059431306806 326.0061800201925 +2386 450 287.6590902524459 164.0327903094707 +2387 450 161.8447036450207 55.95250225029834 +2388 450 137.3028087000195 425.3082120396684 +2389 450 165.8316189570237 270.2372300140856 +2390 450 50.25867463757272 333.6909062333068 +2391 450 401.7637605501969 450.0957527803744 +2392 450 287.7488637695022 375.0686363574951 +2393 450 51.14420960387986 206.5482236172043 +2394 450 350.1285221025653 480.718737691546 +2395 450 98.17037500855258 479.6448182799306 +2396 450 49.33095637317346 389.9999999989532 +2397 450 46.34727896841621 91.8822256811173 +2398 450 402.4792446012507 568.663128110675 +2399 450 102.8175595276815 171.9930198492261 +2400 450 114.0007463619385 271.200199959525 +2401 450 345.021963209352 374.1737724063717 +2402 450 404.5810750177623 157.8017521235651 +2403 450 43.68111591075495 497.9282725360306 +2404 450 407.7172331063314 269.3785302964008 +2405 450 48.61818435544169 593.1623311746213 +2406 450 401.4167958392446 66.05811295061427 +2407 450 87.26126288119201 422.2175703026801 +2408 450 408.6617302830467 616.8631543887859 +2409 450 42.0595527301784 42.49614340314216 +2410 450 86.54464607318469 118.6277708075461 +2411 450 363.6536936973932 419.9999999989274 +2412 450 365.2401357894051 538.3947436671924 +2413 450 91.93146545873169 230.021791820185 +2414 450 92.58006776718199 313.0418362652958 +2415 393.3560372824528 450 270.9493909295069 +2416 52.04093144473359 450 390.352954170975 +2417 56.31956522047163 450 212.6062363353564 +2418 401.6453121555699 450 448.0987754126652 +2419 224.6735887018896 450 55.22099073585605 +2420 225.0363604761672 450 601.2300624303389 +2421 48.29684300925244 450 510.2215625156935 +2422 398.0384757731938 450 149.9999999995948 +2423 99.97692274766067 450 57.14084843118369 +2424 350.5123809283451 450 599.3030399632144 +2425 94.88487890036129 450 595.6526438337355 +2426 354.6288688361029 450 59.74038841889232 +2427 161.5009198560024 450 55.436696676831 +2428 192.8594845588438 450 110.2368376542677 +2429 255.5191658737595 450 110.1161796380527 +2430 224.262054297703 450 164.0171432448319 +2431 285.1221229346903 450 164.6579464359868 +2432 254.6716090804757 450 217.3062749766175 +2433 193.7201478859393 450 217.153046432552 +2434 224.011049367702 450 269.7784809475697 +2435 160.8517678422718 450 268.9924245928696 +2436 192.9901667473256 450 322.1610163828804 +2437 254.1245465874296 450 322.3553629653705 +2438 223.3751950294298 450 374.9205813048092 +2439 284.2747716354147 450 374.9456000914577 +2440 253.7770219497697 450 427.6306527043355 +2441 192.6225277553821 450 427.5403490140889 +2442 223.8195594449854 450 482.7148531878635 +2443 285.8247482875007 450 482.7538587843279 +2444 162.2572086693123 450 480.804397477006 +2445 129.8680525852474 450 321.6488749792634 +2446 311.1505313609639 450 321.3326384219994 +2447 311.2584323088744 450 220.4745032085918 +2448 346.8525135202578 450 368.0360457822105 +2449 135.3097275098556 450 425.862429785365 +2450 130.8005369270435 450 216.6464544095213 +2451 192.6326690412855 450 535.0356857410187 +2452 133.2253658472265 450 536.7176461843455 +2453 161.2624848785714 450 595.0710831053012 +2454 257.2830573431798 450 543.8047960134057 +2455 319.1958884572869 450 539.8370827257738 +2456 315.0551258785407 450 112.5952583838861 +2457 288.4331859627569 450 600.6958301887887 +2458 378.1194832992524 450 541.8977689896204 +2459 130.7435647019487 450 110.5015634911739 +2460 71.0000332375277 450 112.736208744381 +2461 99.77502645324027 450 163.666315538941 +2462 94.90021237857722 450 268.2802351283131 +2463 60.19405686933019 450 326.0061800202047 +2464 162.340909747592 450 164.032790309495 +2465 288.155296355032 450 55.95250225030648 +2466 312.6971913000157 450 425.3082120396967 +2467 284.1683810430191 450 270.2372300141175 +2468 399.7413253624411 450 333.6909062333165 +2469 48.23623944981161 450 450.0957527803748 +2470 162.2511362305345 450 375.0686363575289 +2471 398.8557903961328 450 206.548223617223 +2472 99.87147789745451 450 480.7187376915561 +2473 351.8296249914735 450 479.6448182799427 +2474 400.6690436268553 450 389.9999999989532 +2475 403.6527210316013 450 91.88222568111628 +2476 47.52075539875558 450 568.663128110676 +2477 347.1824404723495 450 171.9930198492446 +2478 335.9992536380913 450 271.2001999595576 +2479 104.9780367906712 450 374.1737724063977 +2480 45.41892498224792 450 157.8017521235736 +2481 406.3188840892592 450 497.9282725360343 +2482 42.28276689367581 450 269.3785302964083 +2483 401.3818156445938 450 593.1623311745761 +2484 48.58320416076474 450 66.05811295063016 +2485 362.7387371188345 450 422.2175703026937 +2486 41.3382697169608 450 616.8631543887886 +2487 407.9404472698462 450 42.49614340314626 +2488 363.4553539268583 450 118.6277708075235 +2489 86.3463063026292 450 419.9999999989276 +2490 84.75986421061008 450 538.3947436672014 +2491 358.0685345412992 450 230.0217918202292 +2492 357.4199322328413 450 313.0418362653182 +2493 224.9999999999993 394.3269383281665 660 +2494 225.3261063098306 56.67300616260522 660 +2495 61.80287208770427 225.6211069450401 660 +2496 393.0557455668133 225.8202153118745 660 +2497 392.069639991279 103.0140037238022 660 +2498 98.91483008121983 56.51592713752819 660 +2499 353.5714285714689 394.3269383281664 660 +2500 55.14765339677331 355.6948408349029 660 +2501 161.2396939894005 394.6302829372054 660 +2502 192.9447109030531 338.7044340911541 660 +2503 257.1428571428885 338.6538766563614 660 +2504 225.9934450335052 283.5543807419695 660 +2505 162.7591485503368 282.0082539397747 660 +2506 193.3635275021926 227.241254098111 660 +2507 258.3716791151367 227.9574039215161 660 +2508 225.2892011030346 170.9920781802365 660 +2509 160.846883339135 171.5165061949307 660 +2510 289.5387181317062 170.8960591392817 660 +2511 324.8892849594904 227.4131807228931 660 +2512 354.5844094307512 167.3032290968727 660 +2513 358.3714331749663 284.2608897142898 660 +2514 323.3180260631764 110.4162854351312 660 +2515 192.9461791712984 114.8911695324715 660 +2516 129.022744003476 115.1053030506502 660 +2517 98.14332497742448 170.0184272207165 660 +2518 59.63880224238633 106.5936390251672 660 +2519 293.8786496142236 284.696402820554 660 +2520 160.9993806725253 58.62499271602258 660 +2521 257.1428571430873 111.522797811113 660 +2522 290.6309481016377 55.93519834938886 660 +2523 58.85644823683593 295.843763088633 660 +2524 290.9025252710923 393.9995004434998 660 +2525 130.7554153036345 225.487812320437 660 +2526 119.735058788665 334.2214151997482 660 +2527 324.4321458286877 340.305220074898 660 +2528 392.7259811974869 345.8937124865171 660 +2529 97.0279057952452 397.4093981276095 660 +2530 352.7253686990212 52.69579110221525 660 +2531 407.9419589977687 163.5132039122213 660 +2532 106.7817885934353 272.6364702987266 660 +2533 44.33030757656664 164.5982638522186 660 +2534 410.2264005296769 289.2857142858155 660 +2535 47.06040905801744 47.06040905799606 660 +2536 402.939590942018 402.9395909420218 660 +2537 47.06040905797953 402.9395909420203 660 +2538 403.190740895056 46.80925910496936 660 +2539 112.4623349509071 121.8118306563889 371.6568693618731 +2540 114.2928325311511 104.4479335883648 270.9724689562686 +2541 64.2627839836255 93.16666278847579 411.9070288545117 +2542 100.4967259826597 65.40152655272701 332.3769990479985 +2543 75.01671056042582 87.01519302372049 199.870141515266 +2544 58.43798109984674 96.95723499447965 290.8745123286227 +2545 50.34984070467213 92.08295221218535 347.6336816783933 +2546 91.39186282215039 49.11405361841673 279.3606145482025 +2547 46.00335827929954 45.19569673136931 451.4696046930237 +2548 91.18223774526521 48.83831778718313 380.2773843630432 +2549 77.77428651738781 42.22339159173325 220.9412975124244 +2550 47.46344786342576 88.75885769270342 242.4334437948531 +2551 37.08490653146914 83.3757321145535 383.7386974451719 +2552 36.21765165302497 69.14644397600895 421.4491978071054 +2553 31.84726497812832 80.26257914482839 320.3217650300019 +2554 83.21628554408198 36.39500860127443 316.5550458421248 +2555 40.19467196629937 40.6127909012009 184.1410722105811 +2556 79.91537593630662 31.14110819956753 353.1850884724525 +2557 31.88301392051626 80.24788845152706 281.6097797669843 +2558 70.62698372407934 35.25388400309453 418.9915567474906 +2559 76.59119900809229 26.27298564853903 264.4016678727622 +2560 65.91140975792639 60.36304333440222 339.7417518895174 +2561 267.5682218864944 172.262136980435 313.9200698593316 +2562 63.3819639757574 62.93435675543368 304.901874402439 +2563 60.11783038385813 64.85054004537876 270.1618923446412 +2564 26.78214192070508 76.79073117043603 357.0394012803666 +2565 27.89950760405107 68.22823508086032 222.41717560647 +2566 56.33860093261879 26.58151649781519 207.969783596933 +2567 76.02771867212169 25.96683445876171 293.196036502294 +2568 26.76858295030457 26.61512540080647 447.1565178584904 +2569 75.85123569517664 25.95058261482573 379.4364141015697 +2570 58.51777974414216 63.38724617091609 370.7138322592725 +2571 26.16537794326956 75.75000134699474 251.9263070634788 +2572 67.81623937635904 22.49959135062944 230.6086481962891 +2573 162.4298384216535 277.5151133644885 383.2953835451432 +2574 73.04755933496565 21.74354496836229 330.0487667952348 +2575 168.7139921384728 248.2947037028435 198.1401175672746 +2576 113.621186055116 113.745822648855 512.718641328266 +2577 66.17837273679579 46.33046037317805 249.2308186523839 +2578 21.74437386253596 69.68748508081488 397.5436489126022 +2579 46.06401304123379 61.38705221696401 397.9396307744382 +2580 49.51307825925593 22.69600319218977 430.5974492936529 +2581 64.05545971274763 43.14774828468516 393.2105450628288 +2582 65.49115894852784 42.49497164676826 279.6589644852368 +2583 20.20144145782034 47.25477453305886 205.3542696277797 +2584 46.86330834283702 62.87110855417825 243.6423268437593 +2585 18.40293709623978 70.5311517478731 310.7125287651643 +2586 39.64056595257219 65.7870774305763 304.7420852227887 +2587 21.7333304349011 23.67434715803922 190.3680129132321 +2588 220.0062871219445 128.0109409457146 441.8940992865641 +2589 18.34024099275181 70.54302506691954 333.8937644457202 +2590 39.25913548072634 65.25619141044999 337.7460796629976 +2591 47.40431537200269 50.18320381560111 217.1013708677093 +2592 17.89196958628482 70.07332415207478 372.7773348583249 +2593 69.91317067520032 17.70031761868924 362.832492023967 +2594 22.85408289673659 49.36107236795153 430.3575610501078 +2595 60.95878772187444 18.89283456569352 412.3532985385311 +2596 206.8586493476772 119.8591244847238 194.1053830355724 +2597 69.85608423736599 17.67500353803603 308.6042489810114 +2598 63.9604109214545 37.98369283887783 337.8138749233818 +2599 62.23151905344006 44.23921021709138 358.9542502481453 +2600 57.92500934946926 48.78398027411414 320.2347385199529 +2601 189.6815299522229 91.86679148114433 329.1702439712284 +2602 18.29730914287857 70.51389411224577 271.9956348977536 +2603 43.82660120838717 42.83846980100444 421.9548329978461 +2604 63.28142267170659 41.11450018057478 300.8707160962424 +2605 35.28916507703573 64.39728508639305 378.9314461414656 +2606 17.25807492705054 65.9369615311806 236.9699664617948 +2607 146.5236476311587 76.43022908790769 426.9921608079477 +2608 109.9865441314168 210.9941766682563 304.6705585579986 +2609 40.6944740971791 61.78227331773039 357.1455096880651 +2610 18.12171689368979 69.56597204038219 293.0541580693434 +2611 48.22225505298734 56.47260643671112 289.2147217926375 +2612 38.17396023436419 63.26729942396462 273.7295251140621 +2613 14.54555006544126 67.43813856140717 353.2948026086543 +2614 285.3693369606137 271.2131920511393 494.7243441796483 +2615 129.0426121255123 243.2476601597495 504.873070840674 +2616 39.81780841646759 18.25938757511191 201.539930457825 +2617 65.06386893821363 162.253086127202 282.8261978375024 +2618 67.54990364808381 16.38467351568985 246.1219236597047 +2619 67.5915576940439 14.39058619802811 345.7345895725911 +2620 66.91088911236268 14.00387632787508 273.8275032667276 +2621 15.49337458710728 59.48585639328755 409.358611486557 +2622 46.43211182020181 54.82229060494052 260.6266924791483 +2623 66.34212374203543 15.98900477352522 392.6150814080595 +2624 34.73346846404618 15.29431551259657 433.8351377336209 +2625 32.2038400824753 55.4435060220144 407.1994935253332 +2626 89.10918607284327 201.6477543858523 408.0728766114303 +2627 63.00327229917217 30.68965965686256 314.6451102974283 +2628 63.04046824204853 30.78554403769648 368.9012866039276 +2629 300.0889019697285 302.5382184812921 246.6490491481926 +2630 50.58928597546259 50.30173700945561 335.6582733626061 +2631 41.74783526526601 57.9549317126587 322.3394153331442 +2632 107.5891473921509 167.2127071735171 132.0557685441508 +2633 55.56552401817152 36.97063537358264 229.6268234099657 +2634 49.43783090050901 49.14702201340097 351.1091888475329 +2635 64.42473760044533 24.95916446657147 283.6552461141076 +2636 27.9506208716795 62.89838221315823 349.4430609830236 +2637 62.85886184300019 27.52607932537638 349.5103176397223 +2638 49.40184617632272 49.16125957134638 366.631969965661 +2639 50.38136835375256 49.68734658770484 383.6069214477832 +2640 35.33840931637865 37.23194371739802 208.2922198868832 +2641 57.43869721336481 146.050388745008 369.847531057376 +2642 30.42253319209795 64.19825630985629 288.4433807576733 +2643 25.49536667398669 64.26048573363197 322.3466641431597 +2644 66.43348993955534 13.50154705111785 291.2276773460532 +2645 66.87321294913568 14.02183818934753 377.18087850244 +2646 12.27980611046286 16.53066390323701 196.0100938755862 +2647 48.27011481505197 12.75275747766602 214.9642797709338 +2648 58.2168076225481 93.19177156024212 484.4815108069241 +2649 49.97705823057177 49.62352779600025 304.6776121514691 +2650 27.89931109840034 63.57362911023291 262.38179526524 +2651 112.1579042537582 324.2159644182912 292.3729918033429 +2652 290.5773820267844 216.4893428628272 136.1487262164611 +2653 31.98597533003649 58.45575608790877 235.9526910839009 +2654 27.89871301333347 62.85907066383198 364.9455187963657 +2655 62.4368160984283 30.28099470472755 251.4001226074741 +2656 58.63147382242177 38.30219110969492 264.5282123520458 +2657 12.65098733932895 33.06394842498811 432.6971665010326 +2658 27.68526556789602 29.96227258101816 431.8585346725072 +2659 49.43288927190743 44.45050996437359 403.5191387833331 +2660 98.88324874799571 51.4706881050077 460.6259764996386 +2661 50.29273938298967 25.15246887090701 221.1496740764719 +2662 49.34542848482272 48.97329377758003 275.8668324665908 +2663 142.6722483969993 69.65972924768906 212.4467598173189 +2664 48.38777749577108 12.23236489701975 419.5670300741571 +2665 74.45315291862579 73.39996184044378 126.4279831011703 +2666 327.7419845111953 122.6806003014081 218.3679687612088 +2667 63.10107105403773 24.5375683413652 266.1855344253566 +2668 11.18138697534694 63.11239207935041 389.6102490871277 +2669 46.99513779805119 25.72091200130701 417.2625330851888 +2670 287.0284334548398 282.8451275376907 369.8394959292652 +2671 58.89671749309759 26.97935726215475 398.9385995518684 +2672 14.0813281539461 67.15693321612189 258.048394662424 +2673 145.6293586569293 55.0780754969003 365.3030629054825 +2674 64.80603566198135 11.49306013497869 326.583219126869 +2675 57.66272853126388 37.10033511843706 380.9572316482208 +2676 12.65876845268893 12.7495665221097 440.0655988814007 +2677 62.39548152119134 24.25258318961607 296.9169321107019 +2678 333.1589904883084 118.8985577376082 400.3208091276144 +2679 317.0962388825446 128.8166938264345 530.2006547124477 +2680 11.55647271671154 40.107639300373 208.7067886215075 +2681 20.42642097434285 31.1997179645898 202.6333861773425 +2682 64.18055001457525 10.83238943595341 262.2741285891098 +2683 183.6943036103521 182.2357903106436 356.5642620459357 +2684 28.84053692040779 51.3479978085474 222.694553511144 +2685 149.179537768517 60.60009223337002 295.6995493690602 +2686 57.02358129282968 12.04862814848121 228.2158913153224 +2687 13.40139924441736 55.07604362806141 222.5469363852425 +2688 27.31292167882643 61.32661942605173 308.4915119640496 +2689 41.09880356274346 47.50492260969942 230.5626038797023 +2690 80.08700140229078 208.9979880286991 216.1424503836365 +2691 57.08262253992139 33.8174785561577 291.4441605761961 +2692 270.320903964176 81.15138403007161 311.1956349754565 +2693 11.36142675829939 64.52723390008185 318.4992815236317 +2694 63.08970554278628 18.80016498136209 335.591841000118 +2695 60.90519527739409 26.64610186163128 326.293546703437 +2696 113.0565194406074 41.99015177364453 420.3193986476721 +2697 57.80637508983875 10.83006218897009 403.9142421904411 +2698 62.5445783253878 145.4672228475053 448.2848773901343 +2699 30.36316389377185 59.25419294443667 392.2950510662486 +2700 213.9267445129688 260.6591399243314 292.7133268454855 +2701 11.66906988349846 48.00227752284117 419.6144758899583 +2702 24.60584060232115 46.55996567848599 417.4952990703352 +2703 10.98602850845206 64.11201941559486 285.3331619402362 +2704 39.09807153127573 54.33717830368344 345.5998111714056 +2705 103.16539525379 27.27265873004012 299.3749992152067 +2706 26.98093310582184 60.65933125513133 333.9845288511652 +2707 206.6455900120259 170.6618450858294 547.164679341915 +2708 241.8910295175028 329.8958412722241 141.1910574017884 +2709 55.41695738939121 35.95931542963505 279.8018590945395 +2710 110.3234388428848 32.68015374161452 338.7566132205637 +2711 63.91674857395997 146.8448498208169 220.4692398493687 +2712 45.90354155401246 46.89805142882349 498.6705470631433 +2713 108.4847709164434 289.3150905554721 112.9757422412096 +2714 35.4711670136761 43.86155383003159 411.4183287592435 +2715 184.6447843918614 158.7425396744567 270.8643388627613 +2716 9.122382116099487 62.87823164202358 306.6986079657811 +2717 191.4415712192409 337.5861515203977 478.396324127505 +2718 43.04936210859362 132.0783124552266 329.8169332198112 +2719 55.08268200793017 35.86368543784955 347.2206076004257 +2720 82.91674598207837 286.1586498136718 419.1501848876248 +2721 90.12949158037391 114.3616949154355 326.0503199520732 +2722 10.77272067948391 64.50035377904476 342.2838880320942 +2723 53.46640940756012 40.83684035762898 252.2161436347924 +2724 53.94405745215971 38.31374872317278 312.3822205038852 +2725 11.07275382429408 64.25723125280129 365.0184311051119 +2726 137.1961475229897 150.8698018955176 437.0231064551956 +2727 38.75582645104419 53.7772318130835 306.920416219303 +2728 208.3919976631495 70.29945398959927 393.6709985680976 +2729 44.94102734110812 48.15916724528869 245.0002501611877 +2730 54.66931903856396 38.85953607883208 327.8772663530009 +2731 21.56663519960155 62.41826260600182 381.5492048972873 +2732 35.87614583867097 54.42783269084028 331.688178065315 +2733 24.44673123094691 62.35519458330157 248.212782949019 +2734 166.2715922921135 92.42071963780924 112.5051371044512 +2735 61.7227141120736 23.35777820625088 383.4409082153534 +2736 36.79070143564328 10.04937400912184 207.6132424277764 +2737 27.2049124460967 13.3445333246984 200.4596757293641 +2738 27.08870140034488 104.976305319245 358.0878721535715 +2739 10.98855401030156 63.42273913528383 247.4010475802555 +2740 61.34345696087851 9.037906822213412 246.5897677372481 +2741 285.3795264240845 107.9700636261686 117.7073614825781 +2742 10.07112662474501 63.84164744783511 378.1462944221613 +2743 214.4991891173448 76.5291235668094 257.6223110384458 +2744 53.78445941824406 38.25686675081412 368.9295263218067 +2745 56.35513099596471 33.4780814759174 358.8444625823508 +2746 38.55029723960377 53.65227622320283 368.8978693088984 +2747 19.99613608594633 19.12800257320909 434.614094095085 +2748 49.89638854502336 41.97393839469122 289.1135546695168 +2749 46.23104623350667 45.91661819606757 314.6883672562861 +2750 62.61456679099329 8.91461884988423 337.7436063925026 +2751 29.01494581704137 102.832323444122 300.9545726497684 +2752 93.0300658352138 27.05103553144562 241.7996752404463 +2753 199.8888152597117 216.4709899765429 439.0486744370844 +2754 37.89182215251537 50.49640948543099 393.9724481297719 +2755 38.40994923643169 52.60453879715995 382.7463087293219 +2756 33.00138444085092 34.02117736624758 421.7687631564619 +2757 20.0442616785921 38.12404953116537 425.258994257241 +2758 72.25408192782648 73.86829140701816 562.6009209492128 +2759 36.27518723503512 56.55422348472067 251.7283118833384 +2760 21.81756030342914 62.27348371940423 279.7948643197259 +2761 83.6501927870367 42.46882958077428 177.3070913219665 +2762 101.2136705556638 67.48696576760318 243.700854125013 +2763 66.01843812098986 11.46086091253798 317.0898642276357 +2764 29.42142215478162 95.87501883387657 409.8285942471715 +2765 56.82086124680667 30.60733491543991 303.0981754951059 +2766 38.77032455941536 53.78424114375047 281.3603965969859 +2767 22.55001542524064 57.95372110971166 401.6890613777288 +2768 52.27204990719611 35.97075144521071 241.3704381062389 +2769 62.67026340795819 15.87012115827348 354.9811972787742 +2770 59.78498406543687 23.29998006067321 361.2028978307115 +2771 194.5264095096524 342.5285372374074 232.3821978778336 +2772 186.2253901995181 79.59787830546973 498.1499850073213 +2773 59.09248222816039 21.88767943116258 239.8210563874202 +2774 46.82081886526293 32.50037918560056 407.980405645945 +2775 35.86359532997858 113.2410997202729 266.7497244986417 +2776 9.431595314352819 27.94042657647896 203.1453996369436 +2777 54.45518711227467 186.4952179387845 331.7634674494674 +2778 30.32976261939008 22.80501927914894 206.1506309596328 +2779 38.74587614036514 25.78443827386358 213.4089730906399 +2780 344.6002767828873 343.9363026636692 439.2896005355213 +2781 217.6388087504571 351.936442940982 339.3359612693682 +2782 35.92887714608514 54.42285854773876 295.3147782377067 +2783 22.1037865683906 38.35747322887195 211.7686416463926 +2784 254.6113291587677 206.0293620283269 224.7675901277282 +2785 348.671076629436 211.4609461394582 265.0673448326148 +2786 43.44239195168925 34.17275144046617 224.0046442671909 +2787 28.59970715330396 57.63403510763691 273.6235075240421 +2788 60.97578593132627 20.94474511763327 256.5408283302386 +2789 64.35845352317043 10.75500066380051 301.7809760545823 +2790 122.6629377358884 33.67037015725062 271.1277072697231 +2791 84.62308579161903 85.59414188976376 358.2611379904068 +2792 56.44546185286069 78.14102562615328 324.7817174533326 +2793 44.35500300880884 47.85117447878938 326.291529949163 +2794 138.4360359797499 144.5337507048795 212.3695377889759 +2795 38.15026975296583 22.68375266606305 423.3812175135401 +2796 350.2347360610878 129.263645546685 309.1833108916046 +2797 99.20871929270915 24.87420935046219 368.8863069421947 +2798 43.67947056265884 47.08357751829474 295.3277286302057 +2799 21.17295257390165 60.70918328791938 357.2419778631075 +2800 23.68780593673073 59.64542882578687 299.1929093622543 +2801 50.05822330189712 40.35052082511135 391.3558827468328 +2802 96.61401311211026 335.5577173839108 502.519350031035 +2803 40.2448451233621 51.35161015595229 269.8717789646062 +2804 68.8721394738326 211.6107695145783 476.7490425563037 +2805 88.51235046363082 185.5250083148319 560.2961564462413 +2806 347.4929051812192 219.3230151577573 427.7213871642355 +2807 60.255209520617 20.68118584621827 370.4992644113391 +2808 57.55252391378978 28.06446034505755 335.5851903233998 +2809 91.31283165881526 301.0857497737323 204.1685369886503 +2810 345.8190067490518 306.8466108300487 150.1941743969034 +2811 51.29537925084518 39.67980406361397 300.7421031021604 +2812 49.52952253190874 41.72945242624419 358.8093669361335 +2813 41.98988174430869 49.25841981389986 358.8021885412836 +2814 192.934694435913 217.2898184553105 102.7258816872209 +2815 30.89105764624589 56.41222510101309 318.5432332505068 +2816 72.60490762715385 256.7152521545957 350.9278244521055 +2817 52.0614993327787 37.01755636818064 337.933383659881 +2818 30.90922420501051 56.55884415825263 357.2518835197495 +2819 344.1663120591124 345.0838269713195 547.3938314007231 +2820 34.41614034210907 40.44203905019856 221.5796933719691 +2821 21.05388725684812 60.24935750186427 341.7508443480797 +2822 92.46464725890037 18.98271105680718 333.2950068592335 +2823 16.22994996491417 15.8958773228644 455.7284189082189 +2824 34.03633822065425 28.2163819214815 475.5606893453836 +2825 60.35211112893366 20.68468967577969 318.5925573544388 +2826 48.23078169261287 44.27966878373362 264.5026769636124 +2827 15.94469678978185 61.33017065181252 334.0066200618908 +2828 57.58556382981901 27.977684864278 273.7297694887346 +2829 100.3826732547867 105.6783332942141 451.4508287198129 +2830 9.478769055575706 63.39823678463515 296.8897852332918 +2831 61.03248454072378 132.9237296304443 159.1714452665351 +2832 62.64871546696292 10.43931872286827 362.7623896777765 +2833 54.79834618983034 32.52645667725823 320.0997593217109 +2834 351.2015321571852 348.0219226362665 323.2005171353347 +2835 236.8768556583052 132.8342045787409 367.7481012110964 +2836 18.54364201342081 60.85236046693643 312.3133236907364 +2837 20.35467286752524 55.93786745213315 231.7968717515504 +2838 84.03286072003769 16.85238801047549 277.4866288639464 +2839 148.6129135516862 140.8658021758226 321.962060271529 +2840 207.3133942599771 278.4432117769562 559.9066823433427 +2841 88.42341710045665 25.97145904956049 402.3086054467167 +2842 39.98537945604413 98.74354859382819 448.7851398403788 +2843 211.7707968152032 50.77723414580952 307.8015287545143 +2844 37.00309442597248 51.82605814162391 260.7993146561327 +2845 19.93026756788011 89.69255059825147 342.1003461290289 +2846 15.3971558905082 80.9423409594428 322.2897724153679 +2847 18.53822171463477 61.60368793677493 266.0743141941717 +2848 18.41552880558683 60.38673063752973 289.0754421000986 +2849 120.2573897152394 359.1984094688301 377.2155932263896 +2850 34.09544555661753 74.3953372912821 188.883220082967 +2851 9.897438575966989 63.8012740653743 275.1993400635853 +2852 60.4672303610721 20.71080378666245 308.5027739470993 +2853 38.20294840142819 135.2292129564188 407.4972299552682 +2854 30.49805134293253 55.76468471256522 341.7622512907652 +2855 43.17641479143168 46.63457972077963 341.7726024823983 +2856 91.22195483284131 48.3059139896863 521.8498333544685 +2857 63.70585832474957 62.29664120987867 419.5607932594036 +2858 252.2222074491474 66.46670923311478 447.745167613351 +2859 18.24670384295097 60.36485916669307 368.9401320967341 +2860 16.91400130636715 22.2014545512206 202.608102506077 +2861 145.1836069421109 72.95134928092499 564.3143461692891 +2862 53.05989831866691 22.38154724018926 232.0973988292766 +2863 10.14424460628998 58.63001948973491 398.1361533024062 +2864 73.4613453581016 263.8573700633601 266.4789049111384 +2865 139.1104740910278 52.68601918088721 496.8957395146988 +2866 27.90244134382694 57.07535584943049 376.873516649782 +2867 50.25417293616351 38.92435508759237 272.1117345363623 +2868 38.93961880252051 49.60971574435349 318.5772840507314 +2869 253.1333624344605 208.177292902392 382.1006084494369 +2870 24.08240744681455 99.93825715563193 244.6484381120334 +2871 40.5329063658894 111.4009606242742 207.7203648269951 +2872 46.30451218471407 42.3870665406622 334.0636977483266 +2873 54.11761059320796 19.32375896151156 402.3338833503435 +2874 47.01862159013714 193.244138183842 380.9677481243658 +2875 351.4125786953288 222.8605483506259 559.2848686603362 +2876 28.23538393473754 70.86669962109728 449.7447134321131 +2877 61.39101374097194 7.494071450383991 273.8315152879902 +2878 61.94752673885171 12.58862272848414 281.5283221460783 +2879 108.1570941042282 84.11421330700018 403.618733654857 +2880 34.74597520973889 51.48562745450052 242.9835962679015 +2881 59.48323086265587 20.25666059932552 277.560179310341 +2882 56.09770756144558 27.75973314380371 374.7319958545268 +2883 172.6227835132373 122.8625395140742 392.2471220274925 +2884 35.46638283737965 45.64401835154212 401.6763457824806 +2885 7.244740344220363 46.58646260854112 219.5948380802555 +2886 269.0214544282022 73.18622222404875 203.6899767276007 +2887 42.90963869287683 46.25325658036989 285.204354086451 +2888 42.93994747774222 46.50375167567658 372.8659603028307 +2889 63.52916559782788 109.2034541655299 378.1437921002792 +2890 8.957385685457325 62.5917195572943 327.0959649429655 +2891 40.11403346636005 42.17692255454602 142.0850581764513 +2892 234.2343240689584 88.49732651192494 574.9690778592857 +2893 312.3086109741323 65.21360191385888 363.0458332193611 +2894 39.36853380327002 11.9188857954472 425.1867535878616 +2895 27.82674766922715 47.59654497496346 406.1078877266823 +2896 42.26084512381035 45.45144993151483 386.2419092598457 +2897 40.52015421706698 38.68032018350287 404.4424353863928 +2898 266.6974686404927 186.6178250576984 486.1984203373398 +2899 18.21215857766682 58.06578464421933 391.2008793205409 +2900 7.41660894322475 50.0321609475935 411.0788287875232 +2901 16.86612634875481 49.40846230114068 411.6064680228703 +2902 30.34049500532454 82.51710945871261 301.0094794458071 +2903 104.3634305174845 177.0851622903729 358.4951442399055 +2904 27.72503706818898 26.69235645026842 163.4563163246306 +2905 48.58138111698521 23.18979723456955 408.2644836103128 +2906 55.00342068521852 30.74352973306004 388.6456008718014 +2907 58.65273574740296 7.398908440830726 393.0186047510588 +2908 60.6408542627129 12.31460954288129 386.0387951550984 +2909 35.65776214980622 138.8617480203689 293.8768452850492 +2910 62.08509470276935 150.2821301281359 511.2890033155439 +2911 85.49348687796449 47.51744591567551 337.1961018641192 +2912 46.7321062363314 35.20132010603339 398.9236545005187 +2913 38.32904817825706 34.25520788484945 411.9820385702717 +2914 61.63166367139628 8.412419520564784 345.8237649561615 +2915 184.6481083881827 58.12806104206548 169.1386264222632 +2916 56.62512853309494 27.68233843137343 260.7598406418351 +2917 366.1048041096492 86.3273613211523 147.2166447550421 +2918 57.31941513121902 7.476887519416055 237.2979022733372 +2919 59.8143099266395 17.81855799599661 343.2928910317138 +2920 51.00141534339671 14.68437494522902 409.1145886895976 +2921 30.15975967632764 55.04504269513323 303.0840603554335 +2922 49.7904491617189 16.08653555516685 223.8768316674356 +2923 27.79853699570243 55.13573075582955 385.1358556931659 +2924 49.69315218780975 7.137257963891491 411.053012851688 +2925 61.34136323516798 7.646192931124854 374.4267700525259 +2926 82.01874312412934 15.17105364324526 352.6514473747704 +2927 23.15455015321572 10.34200818243241 433.6327149790249 +2928 143.732887597619 360.5499109964828 158.3913104256746 +2929 47.882252207696 40.36455931444161 345.6773244273429 +2930 47.98774745416289 40.41717841306031 322.4638830408775 +2931 7.660627668848664 61.45716516383398 260.5505850800995 +2932 42.52141075200259 46.99091906193489 254.679885661847 +2933 47.97944780303558 40.63651924564909 377.4462896501823 +2934 20.73590305235254 59.96571951498646 256.6333634917692 +2935 96.01384568010288 83.05794264761664 297.9306468237424 +2936 88.51324307238909 18.36220840153463 312.8738201757854 +2937 29.85868668233819 55.17260748365344 264.4939389131436 +2938 84.99022457996588 15.89816494699439 369.7494462649914 +2939 21.93253434815766 47.10629410003999 456.8417941342273 +2940 25.36946117204063 42.06319247391335 219.6622736723101 +2941 257.5451668259072 351.2947425883729 419.5258359642829 +2942 141.6697179037487 90.40174993225314 332.7921713415078 +2943 115.8486099279539 38.80277052871787 204.6508726316742 +2944 45.52893412429292 20.02649143625068 450.1204051105926 +2945 123.3586504745821 162.7805540984164 273.2581208052842 +2946 59.6119281127742 17.74253306651708 327.8218744423376 +2947 41.83534364241505 42.18662780094621 396.2652636076822 +2948 48.28451744523398 32.12620271651453 233.5558957061759 +2949 366.1301835489248 193.5545108140658 178.8548878463118 +2950 15.62075875381459 59.95237680767526 300.6704957856754 +2951 10.73330654572677 23.75960991135508 433.5540958401615 +2952 44.09095923206712 39.16516173344673 237.3810100700149 +2953 18.02624747405833 59.18100155053147 320.0241278983789 +2954 119.2453256901238 30.36457929403972 392.0932379612779 +2955 159.025924747547 41.97127956639075 404.1917402876923 +2956 192.9441289043307 53.1663232992009 446.7382361068117 +2957 178.4458143468754 40.97080937814592 340.1109486238102 +2958 48.75854730856999 211.6768198983476 286.4313454974334 +2959 18.12893511162146 88.23529989772653 394.3137173250612 +2960 265.6438074057027 128.3002655988846 255.9327591234586 +2961 17.10765555750232 87.64307103319695 368.0200277605188 +2962 85.22025573648159 139.2312233471427 407.3754154141042 +2963 31.75859306175914 48.4866290051045 235.1084137181185 +2964 29.30351572391502 34.84385266798517 216.1815145593058 +2965 25.19647104515411 56.53482653742266 287.6028263529361 +2966 20.95764586030143 96.06089621549845 270.5746975998808 +2967 364.6005711794943 247.1221198929849 344.9803044616913 +2968 119.0833537887867 86.05240893611344 161.7251985961428 +2969 55.68613524583859 27.15796544914127 343.3052559529696 +2970 20.43521761754675 58.49325842933594 349.5267789445271 +2971 72.44263360419879 69.79934041305059 394.0891946381636 +2972 44.15501827749814 43.84579548578464 306.9768300788352 +2973 42.06554693471893 45.41281953051396 349.5422910708909 +2974 54.67677234878835 29.46606024361301 310.8673123880547 +2975 29.79150260156673 54.43523858602202 326.3057451607619 +2976 22.75271171438928 57.36570092568295 327.7648432962322 +2977 61.09739052910831 7.160442314697683 288.9150617095236 +2978 57.76626342129179 22.50983734690913 353.4669671224441 +2979 356.462930153094 81.33974463539828 472.3829264075656 +2980 140.8069273580973 31.90951986913722 323.4570802256042 +2981 25.26703157367962 29.6487284627795 210.4439789090576 +2982 162.4088703547657 360.9568125044452 564.7642647335507 +2983 252.6065714813744 357.6018764231397 544.7665274012447 +2984 24.88256912674737 22.24013666245588 428.3799833053974 +2985 16.78462272859219 43.70825286503805 217.5224645112793 +2986 22.4528459943101 56.31174603061743 240.9730644068237 +2987 7.73792707201195 55.16198943567166 232.2707923610299 +2988 27.43727914000935 55.62481299541932 368.9554271856823 +2989 29.67403456653045 54.17414414209896 310.8364909450313 +2990 66.31285223014149 31.05529842110763 472.5933267876993 +2991 357.4006998928755 160.753332128549 92.50616483220942 +2992 47.67882114744889 40.09612998091452 281.3179208426829 +2993 29.69486695041009 54.31256030920373 349.5281360687185 +2994 146.1764428456925 261.0180266363894 266.1535650988019 +2995 76.28560971827565 114.2743336295633 257.7427711048641 +2996 164.4348959690373 48.77453106851556 250.8466291846668 +2997 7.934092579799477 61.70935031740196 350.8400724471483 +2998 13.83016001959306 58.16893249573145 240.251960457256 +2999 43.61607013713567 6.704623227453345 417.8132969634718 +3000 24.73715786389784 101.7237570212494 323.3299256025994 +3001 29.09435408737586 50.71376737892096 397.7784314739012 +3002 366.7704458093879 361.1999447830257 236.1237916128706 +3003 32.55428834351551 112.0895555482128 385.8161033091034 +3004 42.7898967287303 177.2324232345796 422.7112329649755 +3005 53.08598387127022 31.51849618927561 330.2224470450992 +3006 64.66872032796103 218.0557798927228 149.675419360361 +3007 13.52674442682508 6.762207464650385 434.8929235962773 +3008 56.51932760760276 14.34003533878987 394.9347083371655 +3009 56.56384721447665 22.50414564550888 390.3839448269716 +3010 7.150392352649716 35.62141859267616 425.1917307276102 +3011 58.28855375368111 22.61383163876458 289.1014492696327 +3012 42.06005660658684 45.32611067493202 277.4250188453746 +3013 55.52971301774033 27.10658127398866 366.5774127319187 +3014 55.65195733072746 27.01805107357916 281.3368929713022 +3015 60.11712108185282 12.6046635692968 268.5206741171936 +3016 34.02397522686769 51.67232580463224 362.6389119826594 +3017 60.73514532636928 10.66302205594663 254.228105524815 +3018 7.654717361160587 61.10552392616118 335.7141365635712 +3019 36.18122275796792 50.28889968761582 353.4120704956583 +3020 166.515183907225 105.2485245919957 249.3367496623179 +3021 15.94684009763636 84.8386580176947 285.7675972193294 +3022 23.19033822664574 29.09521671346525 424.9041789949517 +3023 289.5086590313047 245.6817860617692 301.7813546740491 +3024 31.08910622824085 18.25692304676073 425.7303932952838 +3025 16.78272947377116 9.822516108051129 199.7768140386744 +3026 53.12001773852993 31.59990854471006 268.3867215676705 +3027 118.7289377361419 174.8476379016754 493.6536627467364 +3028 82.2779082025352 59.85987164870087 359.1787716782566 +3029 17.60339446175726 73.81412084127412 421.307577987685 +3030 85.03976149777053 271.8589900799333 575.0827546879588 +3031 308.6184685821264 362.1992069989172 87.47563285771609 +3032 69.13723673775721 200.1114952161604 77.89854882362323 +3033 141.6173092146618 42.0096952635062 453.1133118191378 +3034 56.64542457335796 24.25191066529582 247.8703186923178 +3035 13.42010176650793 75.32987867035442 384.3616883294319 +3036 76.37941932833243 13.42364474375602 320.041927626315 +3037 77.22995189117186 12.38071863569676 298.896876345069 +3038 38.16537453578438 48.60522510901635 300.6963505001784 +3039 13.49583968797368 77.60890743391587 344.3971146294966 +3040 82.3579714372855 366.4419440293114 82.04760380433261 +3041 67.12679104160408 130.9818633181754 91.97369702608847 +3042 74.50590116109976 376.4856576981111 440.7754564391061 +3043 323.4523934240472 185.1573626116007 364.0365827319555 +3044 42.0408496286805 17.33618660257077 418.0969755981106 +3045 283.9506217808994 372.1857097450084 201.2868484521184 +3046 34.15576692582276 51.7393719696037 287.6074488962797 +3047 29.47983086129454 54.29635472803063 256.5962731365494 +3048 50.34516937460491 35.81251939533563 353.4528924113114 +3049 187.7580483899322 300.6245369304577 80.56669107428127 +3050 59.94620497873479 15.08455843207918 295.3826853331008 +3051 134.5247349494916 244.4555573239016 436.5165706594221 +3052 113.390950106645 56.08057064269796 359.3807777509505 +3053 72.95595519810001 26.01718926822608 445.0367255166288 +3054 43.50690637437459 73.1614061308843 258.8384493808348 +3055 181.2349816290576 183.0555273712843 166.6992061939335 +3056 20.55804496753635 47.94522584279738 224.4351142852042 +3057 18.02309339953925 59.16341830012963 273.6205171980626 +3058 101.781954900953 55.35777545355068 305.4499803667539 +3059 330.0124186660332 70.74773656682316 270.001881401402 +3060 251.3433415812932 110.9440513800513 505.1262841861787 +3061 34.38833028561076 148.6063423698255 259.000514041152 +3062 38.44436551760407 16.4368359733074 213.1819943478834 +3063 279.8858981162621 370.0820859336708 288.858313641404 +3064 7.038887769521352 13.95991772022632 434.812147703832 +3065 78.98951025961384 12.595170860714 382.9595028140174 +3066 47.67518593723496 231.2479741463193 415.7012994465748 +3067 177.0156861460183 144.2947793201648 489.1947247697836 +3068 240.5776685000588 279.4442310735013 201.1638346582957 +3069 353.711575116059 249.4389803533957 82.16676560719074 +3070 35.97489396956891 49.99503541188854 337.9223354327873 +3071 367.539903171957 277.471682146218 483.6697932612382 +3072 12.92093301915995 60.2332629894043 358.7545491016564 +3073 39.42128325249696 26.98009830488805 414.7957688415403 +3074 36.50808667024353 31.33851540650484 219.6012159166524 +3075 163.9745160499313 239.0990286291513 329.824578835027 +3076 30.91686611388936 9.467883416399923 429.0764864950072 +3077 54.90873800120372 5.734759124043693 399.6705001689846 +3078 60.17559452038822 275.2326659756843 478.2179094133522 +3079 229.0531828685056 282.0078197944774 417.3311449219286 +3080 52.29486307661656 26.17108579703986 239.127501531344 +3081 268.8511323447702 223.3941384598383 560.0915347477767 +3082 33.41564139661116 42.74676011161862 229.8656624876864 +3083 60.95924757085964 7.463112455566161 353.2719187649607 +3084 11.12559346991907 73.21269021316979 302.3945929598073 +3085 46.14868327781399 26.71291888962725 227.959154896977 +3086 7.156002953179502 11.29700157476182 199.5185910488749 +3087 60.54645630376181 10.64474901831323 308.1845837714874 +3088 26.66514482690995 54.7918648621841 249.2795406441509 +3089 50.18775893363067 28.23625220095138 397.969955258431 +3090 48.81875468238636 6.826383230977074 223.7226830255038 +3091 61.49249696182167 319.5381956935819 366.7384404521648 +3092 55.20509813132024 26.8616632899594 296.8490779453317 +3093 245.606559888632 55.65182562476176 354.4851438972092 +3094 221.7805037237239 143.5421680433052 78.15749368909724 +3095 142.3078532263132 216.11172958658 384.0550480692249 +3096 6.226831365622409 53.96558386785467 402.6021600764298 +3097 13.84036235662916 53.50269159861455 402.6963362792959 +3098 73.27768998446854 74.10456095690095 246.2478776718006 +3099 25.11645631601509 48.5950644073819 230.9237434520677 +3100 58.73925818926799 17.48743478260582 377.0090108172453 +3101 6.482854489390466 60.23931723781599 252.0674861940698 +3102 39.43508084979863 37.94800027528245 231.0926827567284 +3103 269.2104168157199 277.0447656696025 80.76797130127318 +3104 371.2644769898826 274.7548084534383 219.9888193781615 +3105 69.66052115649251 73.9550768258494 454.5598783885714 +3106 79.89421039045402 375.3504520634318 236.9904432739366 +3107 45.3351175254995 41.5139785893015 365.0695598577544 +3108 155.51279285337 222.3297866696795 575.0346418189507 +3109 26.83075167985156 6.972349077731399 204.9565551008668 +3110 27.46900021704231 134.3901567926918 354.9680680628067 +3111 144.9089261279239 143.5948100758346 568.7582482026369 +3112 272.4395648199237 151.3264688432379 177.1361743504897 +3113 26.81918431264926 64.73700234533332 479.1247770412985 +3114 58.82066775159912 14.87029052492335 303.1567720223087 +3115 6.244916769514631 60.32186714375086 280.128157552403 +3116 6.949976555744836 61.17566098321129 268.2974066429404 +3117 277.8878877498416 155.2645322767966 417.6876987663375 +3118 6.112135539845594 58.70470081404778 388.198318911533 +3119 29.4901520658972 53.76034877614633 279.8581618566399 +3120 57.48907673371136 14.79164624441032 243.285223480936 +3121 59.81115454205508 12.57032289502546 369.0344544196498 +3122 67.85787258187523 38.18620305145605 324.836796667547 +3123 77.38511158476992 56.0013857484511 320.0762698518985 +3124 53.4797219840052 28.86695797298672 349.5997731702296 +3125 385.3301092081003 69.10459944985477 362.1635907036652 +3126 38.14130864673531 44.13473587159235 238.9928777951538 +3127 128.8724221759485 29.56232065616204 362.9176028365112 +3128 51.01529694366292 36.42422177985687 260.7932242355352 +3129 53.69448104144205 31.89419395876347 252.1373920209964 +3130 58.29265003797667 19.91012030621851 269.9264890859283 +3131 17.56028281515241 58.49177822627734 249.4810022795439 +3132 140.0983024578995 203.7512676382868 230.0802259818852 +3133 44.06520948347799 83.1022815827325 527.2394873147094 +3134 51.94196236183929 104.7631545134395 317.0575487660771 +3135 109.06019682129 21.21005868596345 319.4138575604292 +3136 93.47402063981315 25.6323691862981 428.3009467782944 +3137 38.87949756349249 74.12179336993103 366.9345238497318 +3138 35.65538211742754 49.47613126569981 312.3044084645315 +3139 6.105902695964121 59.92195533026912 288.4531520705268 +3140 38.63231642828951 128.5099203296164 477.0413337828284 +3141 43.42795684984526 20.49005357536679 219.8041555440537 +3142 18.2583720862683 42.03739741087247 187.2420649542011 +3143 48.4218825388905 48.54048991631555 77.57063324784764 +3144 24.67034667078972 55.57914623154328 362.6134796689743 +3145 37.45729354563865 47.77581601368412 331.6422146377115 +3146 15.23492677482541 59.00430011806667 378.3255666932282 +3147 53.51749240612745 28.78107940643703 287.6346220137268 +3148 26.22078545942788 38.7990305086278 416.1862600106495 +3149 369.6831686124036 160.5698315740705 478.1281820568089 +3150 60.16074293971326 5.981412265022987 295.794048333922 +3151 231.7575733969973 125.8203898433715 304.6273779809149 +3152 44.12062712546262 5.857013119164233 218.9478925830538 +3153 70.55629302309298 130.2125969863131 299.0276201848213 +3154 16.2043651726009 88.07128693335508 307.4390260859396 +3155 51.31883248005263 61.5539840611785 344.3650830648111 +3156 73.26689198698386 45.91045238604508 374.4218533735537 +3157 23.74193146938614 11.788571372706 446.2790218320972 +3158 39.60315611488464 46.50492189421602 366.5159823042794 +3159 72.23189054690765 10.2792546541168 354.9134433332414 +3160 73.93910279913327 11.73231613725121 336.1811582882762 +3161 186.1902803279253 343.3483957105875 404.9447167655349 +3162 134.7960747243169 40.8970893184615 164.6040525358896 +3163 101.0038729417983 40.04138547391226 138.0657081472722 +3164 118.4491321575741 62.65980146453868 79.18375046726932 +3165 297.4525462123923 126.5214365122046 347.5590278082778 +3166 375.6949013056119 67.66675874473806 215.3535331425572 +3167 15.22477948258827 58.79668504186402 326.2754255700763 +3168 7.223236785865859 18.52007196405713 201.3505014992776 +3169 108.8040910474086 109.631370218894 223.8466867438586 +3170 60.53252455595143 6.153308146272822 331.1375662366303 +3171 100.3323764931886 18.1135254702599 266.4324390216674 +3172 78.33024799504986 152.9404330920651 334.8931674500737 +3173 15.28048216268741 58.74685235470217 279.8513162252643 +3174 77.46763561506748 62.14654268749764 488.272438016209 +3175 371.5314325000567 79.96216352228421 573.3521587466 +3176 60.34020040033074 6.401234214272898 321.8182917561199 +3177 29.68463681502611 76.06540002958154 342.2210173813384 +3178 213.4372244584288 269.1340848266496 486.837688657829 +3179 126.5560562289814 33.24066429190643 236.9096598731224 +3180 12.14275846823853 79.55429863000259 357.0097905377298 +3181 35.84762832455603 49.70229350591476 275.9848767036926 +3182 33.36610506335256 50.68117024454229 269.7397021780594 +3183 83.29015816153131 44.66263752695781 297.728043398913 +3184 49.92163484480361 35.44700611448501 306.9976405634149 +3185 170.3832741704266 306.2650068285123 322.3120648404313 +3186 166.5161991291493 371.9325678304548 292.2365892616755 +3187 29.26993566369801 53.49895062480439 334.0536437157687 +3188 120.3062303574311 65.91180050638643 279.6861549323212 +3189 81.73851783496829 354.230800755442 581.7018026121833 +3190 50.2417822680973 74.72528878505584 283.4198240701869 +3191 17.4338063421787 43.05176765351362 416.6172707246172 +3192 55.43286605807389 23.07831061370342 185.0064092962426 +3193 43.46176905560206 187.588322911889 235.2631732282389 +3194 5.725099392946886 59.60724525460929 322.89646329786 +3195 269.7177433845321 91.44966739139653 396.1151963323887 +3196 46.64413073158715 39.26878422059085 312.3165413358699 +3197 211.3774377786094 376.8100281968068 84.23872428960743 +3198 59.98757751592874 6.274907506036081 282.0639581669359 +3199 61.36466892866916 90.30274933689189 266.1182402936184 +3200 40.76220436434665 42.14321387096776 541.6489979228569 +3201 31.4654562247513 50.49102396665679 390.3495689689165 +3202 79.32120859714738 24.04772072972507 195.6830690865625 +3203 59.17330678121794 14.91386351585795 287.6470276765922 +3204 122.8981168359893 215.7005727069961 171.4860282884481 +3205 47.79824446928806 120.6491634027689 237.7348033044645 +3206 23.90272245723874 93.22951199322345 220.1282917027312 +3207 213.4330972251165 200.4851721987411 305.8159354932151 +3208 290.8294516578513 59.58132739442851 499.6084582774199 +3209 29.31497332642589 53.48804353305512 292.9379848057081 +3210 68.3480141973249 360.6780134037604 163.7572935407436 +3211 145.5097760943623 97.30737011098392 473.3534738343375 +3212 50.44823870933187 181.2013490164402 184.8700144981589 +3213 219.0581030884295 259.4485470194679 357.3534676485727 +3214 268.6586563451277 56.486694212544 258.9873949368775 +3215 171.4790712737026 33.63838848546094 304.5268340673615 +3216 381.4936918716879 284.734898701977 408.9192557608023 +3217 6.220885709759989 50.26538636903049 226.5060566753272 +3218 69.14161793932368 376.9207493415121 320.9702187603379 +3219 71.54028028718277 24.97751128733716 341.5556544481989 +3220 147.809280675068 151.7738693252828 70.93590932807072 +3221 15.72943532717584 13.58318675904636 433.0321288488494 +3222 305.9657530905293 249.2390131278059 198.4848389374934 +3223 5.868580476124541 59.66257603232589 373.3560834524435 +3224 49.74497872986133 35.29620236587336 291.4970132842301 +3225 35.56097641495852 49.80624620304634 374.3247397974541 +3226 6.546825031766947 60.60724716805225 315.4148350271166 +3227 58.71065617684032 14.97103795753996 349.6461172323341 +3228 337.6029251365592 70.94241301978224 70.79954493605162 +3229 12.96543441475961 59.20701717093714 345.7571633263523 +3230 314.9893553483147 381.2030365639107 380.6132511640095 +3231 76.29490610233204 11.86547547026217 265.6622342961681 +3232 141.1498105863892 308.7209974191835 435.7161082031832 +3233 162.5420599081238 104.138286784585 294.7031022517351 +3234 22.26626371438712 56.09843881381545 314.7152512406497 +3235 84.9450063655438 50.83933535949497 405.1774718515718 +3236 94.34450324761698 68.92327573424298 432.0884793819663 +3237 15.59869299628094 82.71294142529283 261.8603676897738 +3238 72.90347965202591 10.3628971187893 282.6006935779016 +3239 75.84000196167776 44.57069341684793 264.6907710522353 +3240 24.6048160610557 55.40922622557304 354.8550441352786 +3241 63.71074607715241 76.35222878796287 354.1713680672425 +3242 57.03999742624474 85.68011087111893 373.5548317247718 +3243 36.61911815230346 5.559043284419757 212.5991296598785 +3244 33.61265151688814 173.6737084876004 292.7153100699776 +3245 56.39027378080753 21.96919823480072 337.9728225376038 +3246 289.9918292598801 297.3390656536954 581.3202884402892 +3247 231.3791962267624 67.59193951829387 85.40358539622433 +3248 49.56080131330088 35.24074163780374 361.2129611293433 +3249 53.31262214927988 29.43366666630445 380.6823960956248 +3250 26.10907693232951 70.98093157446343 301.7074172825273 +3251 44.55195331715762 75.73467077210695 349.2947430771712 +3252 16.07345827966686 27.77603416495516 428.1949074491312 +3253 317.3494611810497 62.30835595998475 426.2119835584343 +3254 203.7107969495119 43.8105213631157 226.1678147799813 +3255 13.56063430902301 13.55253925323897 181.7015132047542 +3256 54.44289783714055 26.56427423008544 358.7997679249773 +3257 59.75765645291156 74.5414242760925 222.0174501289061 +3258 22.4606132032863 56.56540401894609 306.9736512848013 +3259 98.05193197165576 160.2125184637726 183.5296417359413 +3260 377.4477684449379 324.5436050869334 80.23503679375133 +3261 5.530698337432142 40.41194655066948 419.4976083284325 +3262 377.4148672450518 376.4371120143512 161.1812932357272 +3263 69.42308815877597 8.982538384037616 369.4127014444388 +3264 66.22290687229369 16.1832987498684 429.3294297312859 +3265 383.4928651399367 151.5661747709531 250.8976883216233 +3266 198.1148004893437 214.1986627164478 247.7967407000562 +3267 22.46090826692539 124.5833315227822 314.8408881792827 +3268 96.16533279032031 29.75582097457231 483.9040696067423 +3269 12.25271088347884 24.04907431260684 446.4429058943737 +3270 14.73748256805565 31.16470368030893 208.1879888227434 +3271 380.859731531208 380.280933980843 493.1084368937135 +3272 34.71906190944102 78.79293887087188 151.0593143399441 +3273 5.443543124959079 59.70789767372948 380.4994893733804 +3274 41.43172770506955 44.90066178487469 262.269298835139 +3275 48.94115795003029 250.216057552154 199.7320254379993 +3276 55.36353575363913 24.21322784944196 316.1943235398312 +3277 59.94671026329779 5.477992846800294 264.2367922026965 +3278 143.3612856458981 376.8377324389246 447.7734638513023 +3279 100.8048057325531 18.89686557920905 350.6510904581349 +3280 90.02454571054921 13.75037615499962 290.9954293544343 +3281 131.3681570532254 27.11344129222954 297.2285538376622 +3282 32.21971313317567 168.0784797702254 350.3445526057996 +3283 5.496632936603994 59.40445153083486 295.0895476730381 +3284 42.86874290293509 42.61743510701889 268.2550436020229 +3285 260.6068032631397 306.7273306865811 311.6148363874546 +3286 89.02876453547614 199.1618426883683 262.6799506011964 +3287 30.78829738015002 27.14244995434168 420.9150223681776 +3288 57.58000059905023 298.2983614800333 311.7614488706369 +3289 283.6133335693521 243.4633731832094 432.1926501927597 +3290 21.35742579959713 15.89699514389158 204.3240193105425 +3291 22.10600324809991 56.40796973866737 268.3239590684267 +3292 139.6902866303816 159.5818018052905 388.3851732084327 +3293 12.26425201758303 76.59027518218961 248.8401053583781 +3294 54.29663238334688 26.46102116693216 322.4972058774781 +3295 116.1228288165151 267.2939659055562 314.8109443031586 +3296 37.42472548726509 47.65940348419079 292.9322324541126 +3297 269.5375492321162 152.8148893545819 581.0125399468113 +3298 59.48067146473713 5.505811244725331 365.8719119935286 +3299 74.62040881148458 61.06581069772371 286.3693505456766 +3300 53.75202789738253 13.71099441027263 201.4033275843032 +3301 77.47221323279405 32.33489612084622 278.8876860372184 +3302 52.05081017844324 30.81711660376761 276.0014495922177 +3303 52.0350743541521 32.88504660715441 373.8195738030283 +3304 291.3159175750712 374.9056757026264 482.5449944594752 +3305 12.92711744143986 58.91727520036887 314.7743925317036 +3306 203.2964863946304 272.4576490327323 143.2482257065821 +3307 46.70019404991249 38.96219643047046 248.324389241801 +3308 71.2020522956558 29.96283337254749 304.5847793896984 +3309 12.59877386135989 59.00127711088636 266.0392967586756 +3310 143.1205671953643 94.18147110249248 381.6999463219815 +3311 383.2431335858732 167.8165155266394 396.3136313995197 +3312 59.70586971817323 132.8714717551664 569.3939655795032 +3313 5.032398232693675 40.14452887187959 216.0112107866222 +3314 58.77880405810784 14.89826275418602 262.2724421146696 +3315 295.2674568830782 111.2438204562983 459.6317184408695 +3316 24.51332959757258 55.13273357477151 339.3558378510906 +3317 24.10519428201163 23.90804699710482 499.0678846042265 +3318 44.7034562028954 40.8725019312754 300.687708212769 +3319 184.2532835204967 169.2880151960703 417.5720826867696 +3320 50.79339609083191 32.99981324041721 300.6944040069695 +3321 55.37569998795474 24.19948526878729 303.1543301389017 +3322 21.32294344794735 117.653540123129 339.6809526125058 +3323 12.81298367252598 58.6011229134789 384.7820998060624 +3324 22.27451613685002 119.3267944841941 285.2525672029527 +3325 15.14446789935544 58.14493626201856 339.3139305589543 +3326 79.84947977231532 77.61358765675777 330.3842266121428 +3327 74.92522730419188 14.39526999065088 406.0073010900953 +3328 57.7263732287106 17.17606798472372 358.8039479465095 +3329 56.76873301078885 45.26263480857177 342.6331830267708 +3330 159.765669672162 128.6249408721089 159.8041674586968 +3331 42.91851166812354 42.67006041628044 358.7557634725807 +3332 7.085119885864262 58.00741635966635 242.2594213927854 +3333 36.69893644644986 6.109759582453356 423.2081087110749 +3334 71.67362121506973 21.80127410529419 352.7726973545537 +3335 59.25548349763947 5.360514766050962 303.6217167660178 +3336 44.76598249008219 39.34679481517413 386.2224863943954 +3337 41.74290172278742 225.0278031718925 350.6594110363142 +3338 12.05508166346282 44.66650515727635 430.8833672182781 +3339 4.907052012447884 59.299143654348 304.25144891535 +3340 8.827593198103095 71.16530156197615 311.6113218115221 +3341 6.182730126729009 60.4422671147252 357.8646730898375 +3342 21.94861595275097 56.24948174228321 374.3035845103127 +3343 47.47229754254487 36.77213601424392 331.6617428494724 +3344 53.94519604497105 12.6425935295534 235.575704857239 +3345 159.9036655404109 191.0033716171554 306.0845966769302 +3346 182.3313938990893 207.4594192521936 500.3015882569818 +3347 31.72270939721438 163.4596823193318 388.915275444114 +3348 196.7191536044147 40.10642401615102 273.6022452477529 +3349 12.89298948207396 58.74700204752943 291.5676568508788 +3350 58.56042283829327 12.6569594076629 335.3111691874503 +3351 257.7244523824428 206.0844354998957 72.52782777370049 +3352 355.4628832336453 287.2194734515713 287.6298598727653 +3353 36.15307181196157 49.0615275867372 250.2896673242251 +3354 58.20937055942058 321.7063132759594 255.6548016354965 +3355 126.6860770324301 225.4686956438075 105.5032847886007 +3356 5.805149032537166 28.5381129911032 428.2565477151538 +3357 26.18007168271698 93.19177156024212 484.4815108069241 +3358 35.01055668492332 15.18623719800075 186.2967743299303 +3359 22.85279280354883 48.83733397764167 400.5321651148342 +3360 34.85687713856063 67.27587437949249 315.5787957322793 +3361 195.8832215417403 140.124511881316 334.7388531461073 +3362 63.46219418597988 14.7262190137084 214.5694829321115 +3363 66.90175896085637 119.8212853583913 347.8237570229008 +3364 237.5162926662222 86.19969353511213 151.3775260933238 +3365 25.35310426898855 42.7936935644526 409.6478570075153 +3366 52.61934385612634 5.560565898336299 231.1339366833817 +3367 208.820910071276 382.024020200251 175.5642988747528 +3368 12.65597291409343 16.96023008780741 203.6156290871497 +3369 42.59308003563777 42.31236724746253 320.0452969298424 +3370 45.1560349236225 44.71736509379029 589.3088650111861 +3371 11.11416361263608 73.89351275123263 279.889311722726 +3372 19.78479241797477 56.57401366115232 334.0555870971984 +3373 60.34112570553248 241.667775485287 528.688753592405 +3374 48.15217220540934 35.1730502469341 319.7036911226407 +3375 309.2069939169823 59.21853607014815 156.3090943901174 +3376 51.71916189071103 30.71423354425549 337.9827888941858 +3377 8.804385446740319 70.20888048770388 332.9220945551264 +3378 80.30987440427816 14.0251723090365 237.7500387128372 +3379 85.90899380037467 15.52419543246047 252.9998309664007 +3380 55.76880592869315 21.72123260008964 330.2406883471144 +3381 44.63334101822245 40.80247984006149 292.9347870151097 +3382 127.6792095026188 55.45283811562432 334.1524664382032 +3383 388.472024189505 77.84404255956346 297.7365401828717 +3384 71.6139401752982 29.46750074196146 503.5446218238232 +3385 32.72374811391562 41.03686414031169 405.5357295666654 +3386 19.6347735088682 69.94067088027151 362.2890431290155 +3387 82.16329121432852 17.77736440062952 219.4326898472131 +3388 7.147440665756948 6.03927962318893 435.4776292231437 +3389 21.78552836212873 53.21838220048623 392.9792986442586 +3390 55.8884070223012 62.63419792599126 327.4341071274629 +3391 46.97840527005264 59.74835836005394 376.4090639793051 +3392 70.99629951278587 29.22217239434677 392.1911804418216 +3393 6.464624713287103 59.93637463091593 342.1790544722141 +3394 31.69403223983162 26.63270281662626 214.5670542567119 +3395 153.5957540724047 304.2765507115445 525.3538492219087 +3396 71.29498438039258 47.90691824282946 347.0437863731441 +3397 48.89804262139319 34.76958640491438 343.2734855443243 +3398 31.76245340604088 5.902041612667752 208.821543172669 +3399 46.76342151624046 82.18239160592641 309.5355865080998 +3400 34.20022365911119 63.47952399121655 327.4647465722666 +3401 16.39533923509811 99.38434119725461 380.9565874281862 +3402 381.8451821729898 183.9115238162756 331.3746983816546 +3403 16.56824325777034 65.80454707050228 207.1987562305714 +3404 26.96833579961798 117.0477109528078 429.9509855124953 +3405 11.23415654238024 70.67731732211405 405.5126518142133 +3406 328.4092478155173 216.974218196882 494.2407919145713 +3407 27.00955446275246 54.51163656031834 163.9508858330256 +3408 5.423080996869483 32.59612745105609 209.7706960286478 +3409 115.5723592760005 86.67648477793895 350.7109888237544 +3410 55.69916065532082 21.70143417989185 345.7359433975517 +3411 44.15775945687268 40.43877235516844 339.388822020243 +3412 296.3906409523666 180.5786718966381 260.9685613930345 +3413 23.75433663955704 125.4286539597064 247.6747217927623 +3414 61.11897160872883 50.60647483151639 290.4972885935544 +3415 59.86124110169831 278.325550103899 147.2731244676739 +3416 58.56319092868986 14.86146995454363 316.1849944147183 +3417 58.9542626209022 4.878571079140361 339.9722483533436 +3418 161.861036062694 35.29463860564874 214.0734993546127 +3419 107.3499923455169 146.1132019580737 306.9528941986004 +3420 68.62412647656589 33.7686507673119 358.3772770099067 +3421 49.27485059255021 33.94205507759374 386.3738841503974 +3422 381.315146871106 153.6711494911977 560.8945543751071 +3423 302.0188587786378 71.51487702439232 567.911753412209 +3424 73.06904645004963 85.78606063385637 307.7680526603475 +3425 121.4922850065853 77.15340368963059 313.6283444880017 +3426 14.2150552274462 32.83857622390724 459.5130320591979 +3427 100.3625763767124 16.9755444149022 390.5832856602227 +3428 66.27792529099224 49.76067915961569 197.2221348016117 +3429 57.41769789996405 63.55210604452841 169.5006897707734 +3430 47.36534511861546 57.26434488997656 414.1516187113414 +3431 37.83229699343731 47.18532513954323 324.4273690361678 +3432 56.80997351741695 19.48983608095137 365.1371977503705 +3433 5.078035581468271 23.85068421247513 205.2135135490276 +3434 15.12259645743575 57.88306606286047 308.3716175117201 +3435 17.31476706852697 57.12614324946726 361.1688319514492 +3436 60.03376646915018 6.290468535629479 313.2266917375645 +3437 65.65926758057874 28.40887971108313 155.9362485439675 +3438 131.5898474445973 60.5673574278859 399.5458622172468 +3439 58.54219906265025 12.21383175959251 276.1044546631045 +3440 45.856284517607 233.0202321232035 245.1555936949015 +3441 40.96654399742293 44.02244911454353 378.4039523806607 +3442 29.25738300458941 13.91514916348685 207.5612682233374 +3443 48.70529451398578 60.16870358455675 311.8237738080024 +3444 92.81881438077023 76.44965141447551 269.9220940416993 +3445 189.279568275707 38.80960603546602 378.4187303705461 +3446 180.1468848256586 73.2066817902212 362.1953095779066 +3447 19.8460369588499 56.64640196527219 295.3690214416059 +3448 8.935413912811123 72.87808622909216 323.3366558360533 +3449 382.9745857607855 363.7515070801892 383.864957002024 +3450 98.7379749400076 177.9320991122662 449.4260698312167 +3451 11.54561637819347 84.45029774123654 333.8742145818828 +3452 35.27769669107925 49.02800976899816 345.6775341179156 +3453 22.2607282259482 56.02808204676274 281.2998700335758 +3454 82.81167490355108 215.6647194444503 365.9705275196593 +3455 71.49117044429568 23.74958682485213 318.2988071021286 +3456 139.3444493721381 23.4532932580714 406.6510241065026 +3457 16.13916685280305 85.38569278619114 410.1068327575459 +3458 20.83876611940001 93.61129969689814 429.6638248503666 +3459 24.26699397345875 54.60997342205263 347.0917504825475 +3460 58.65327259860427 50.35593318174927 259.5001970049806 +3461 19.56082818363088 57.14852900049336 420.5282814777162 +3462 16.53045274844779 64.53749081169214 435.9488816237356 +3463 58.88486009879774 5.49777917812014 256.802959955677 +3464 133.3716116902316 114.6482808968311 416.7064902268684 +3465 175.1561552008023 112.3604361730812 439.3308284591761 +3466 36.98521780102989 91.52756101944829 334.4468085014892 +3467 31.09239097512756 50.86073000621273 382.1851761426005 +3468 112.2238949800603 294.817142365674 364.0001362551107 +3469 55.71576358708794 21.5855565295084 283.7661254131931 +3470 116.1978345315517 27.5252934051172 462.2362714112305 +3471 233.5979651784882 220.3726164161555 165.7071038803243 +3472 56.53953294563107 53.16720696943882 233.9417501178642 +3473 36.91918511079575 47.02765937649983 285.1614730769589 +3474 53.46992856256325 11.28238991054555 399.108531237344 +3475 44.64275183171975 19.12724900496473 411.1611056066623 +3476 61.20990154192839 265.0085477696496 74.78628045872257 +3477 250.4151009782952 47.08429970041573 402.2560968439119 +3478 235.6628937452068 56.14959166936951 519.8727565506157 +3479 45.666344058299 38.47808770941772 351.000653257098 +3480 43.10658653955403 277.5151133644885 383.2953835451432 +3481 333.4452558411274 141.901324556218 156.4178998834987 +3482 391.4549055039592 132.6805139101039 187.6221923079451 +3483 114.7766552930191 252.8336111308231 220.4325864184777 +3484 150.9726928106578 301.644167877295 221.212006255032 +3485 35.38167467203176 146.061406220366 191.1763347795783 +3486 47.09171206753268 10.74327035099728 434.5762661967751 +3487 48.85576373824862 34.64771441972648 283.7500540931979 +3488 89.97575246214616 152.502052564728 251.6846751821102 +3489 44.65443955769668 252.2467435963508 311.4346655960607 +3490 60.2805707705544 6.547390263577102 382.1147430941538 +3491 68.60513316937326 8.846540602721143 384.1879818773378 +3492 24.10912078718508 54.93260821967319 262.2689414118326 +3493 63.1391719871689 49.70669006222752 332.15484195942 +3494 5.75747231190425 59.38050684149352 365.7345425010497 +3495 32.48075677947291 16.13052678259701 459.9420757250321 +3496 387.4594480221048 250.6012423792748 143.7957952784572 +3497 30.41335829347836 78.14921029175419 266.4776932411102 +3498 19.57801486297589 32.76278703106885 421.7023155028226 +3499 5.703017511723385 19.77982984220486 431.7108259263963 +3500 42.86324668854644 11.32428608920463 219.9653734274404 +3501 248.0775860123491 37.10550235200032 298.1756075205634 +3502 22.20668089247121 55.28551558658 382.5444906677155 +3503 173.5464465295904 45.46975576687539 532.4337731073243 +3504 54.81345588811839 24.05631966168899 253.9168454421487 +3505 58.44471682280212 12.02135809222113 322.4033097341236 +3506 32.94087487357572 49.92721520550094 318.6070617500614 +3507 38.46785815846495 79.17468511535355 403.3221500452478 +3508 10.44444708576497 58.66685389388888 303.0200851995307 +3509 34.84221047509707 16.32618461379032 421.401972712675 +3510 12.47733301490444 56.18607177682053 392.6929742723194 +3511 55.59413605277224 21.6928991284698 374.3438860357416 +3512 11.4074505294394 59.57775727291107 369.7075942222657 +3513 21.94954676431749 55.32422987004528 322.4606138141145 +3514 145.8554536713596 198.0535412767934 456.2714859690183 +3515 110.1612333883565 82.59658304647928 481.5217436900357 +3516 30.26185657306821 36.35734398318137 412.3162571554808 +3517 32.88259484165743 49.81674323592298 303.1238793050927 +3518 48.33137433100635 170.3082202070086 123.0359407667905 +3519 375.1575602190889 288.8435416423224 586.7322482931896 +3520 38.62659469925612 45.248249496163 314.7519005168151 +3521 41.44572244410186 34.45880519501893 433.6557571000595 +3522 60.40735253909159 44.39855735022226 435.5391671488484 +3523 16.24184750230335 67.81481432703053 325.4566377044931 +3524 56.80980531833795 20.66845885975949 296.0865305142331 +3525 14.46302371571004 38.41057775207203 446.0909056008572 +3526 50.67732603111205 13.96773197177824 403.2309009687809 +3527 32.41622270097013 148.3261507950011 436.6053992070388 +3528 38.35240254203427 169.1078183091082 471.428590150031 +3529 230.5123659668193 48.53289523745327 184.8968369390172 +3530 26.27856686810541 53.06098099420191 320.0064384025297 +3531 29.73528267372577 41.66174386877776 442.5838087688217 +3532 40.23390979882747 56.31756811834865 435.430428695501 +3533 40.38029429146507 43.59382413920372 334.0829791861233 +3534 159.5874843029385 27.95333993867736 360.7421250638462 +3535 53.68015114089819 26.17317671242857 266.0829272664805 +3536 71.02345271436978 41.31817202397827 312.0161061857821 +3537 214.7618301823757 141.5552497797567 138.2012151403468 +3538 42.50362872973125 42.23378361115775 327.7846116082846 +3539 72.52300216767925 9.151306774691284 312.3936938855904 +3540 18.51736404697601 22.18250443550234 428.0351437425075 +3541 31.01792596228142 159.3311232667268 320.3631468427191 +3542 287.463796598449 41.52701422518775 325.5841939666037 +3543 44.51064274979564 55.73075656755604 299.4622324579732 +3544 81.39299810725491 128.0180520480419 481.4435605638573 +3545 108.2205711374978 105.8958101078194 602.0508599570801 +3546 82.79597985693438 9.864219016774978 330.4541843673026 +3547 94.04080830746733 29.65974085195008 284.42797940847 +3548 51.59573904502238 30.7443871042538 258.1771890014529 +3549 18.40829211183087 17.72440461904609 474.3734772072268 +3550 34.36138358976073 45.79158239608026 392.2585999359472 +3551 224.8275509781396 158.4794197314421 231.1841354118969 +3552 77.45482868486052 27.78731696845249 249.105014809497 +3553 27.28595490519044 31.28325955301361 418.4928030908778 +3554 387.6981047495544 94.46789273268537 419.5372912333354 +3555 59.16607295589993 7.125782364790918 358.8646810741577 +3556 48.64176984016049 34.60046157512461 266.0636502714589 +3557 34.89002833427948 105.9968768309541 173.3977403363443 +3558 57.57488732810829 17.02936722746913 252.363581248638 +3559 48.31951661700248 326.6636254341457 417.8750051869146 +3560 12.19582651647654 77.71362202483346 232.1425665004344 +3561 58.99170820556573 5.642313155872894 250.9594660838061 +3562 154.4118314025343 29.8768791970454 274.9114712349759 +3563 45.68855634265027 38.45174909096546 275.9953221000863 +3564 102.7609174818901 41.34763538942894 259.1223860187018 +3565 35.49410619953424 36.12524879838719 406.8906210600088 +3566 32.63107759195674 49.48843077892034 326.3438950788768 +3567 58.07584591944595 12.17722430670912 374.349480284282 +3568 42.7141686445901 30.82788983907637 230.9970600252921 +3569 19.6122588748345 5.485843077028861 431.8737870096853 +3570 186.3021477938053 72.96238793750476 292.409449053547 +3571 339.1603629399346 52.1970473617946 319.009963675065 +3572 12.54731126186028 58.17635963146805 353.4084943542835 +3573 52.06922605623383 6.467262014166658 405.2517295312926 +3574 210.6865834825189 389.5194905805486 443.95504045412 +3575 237.2727788428827 391.2250263399781 243.4829380396702 +3576 123.4967648734692 113.5750596020615 311.1224724325478 +3577 68.11849167675915 7.480997493206973 332.3999389538705 +3578 14.33910248790952 37.41586863804392 421.3797674429498 +3579 72.14016131153222 102.7662568508691 228.67871333134 +3580 32.72581499164499 49.57108715536418 295.3837095383693 +3581 148.4382914401852 292.4598545398887 593.2268444319145 +3582 285.6850785469692 281.2616864122836 144.9971861461403 +3583 34.65295849287313 59.69136171710001 206.5239842032286 +3584 113.0565194406074 19.89602657872146 420.3193986476721 +3585 65.54358699172668 33.93094166216428 238.5425420163753 +3586 298.7993602842925 365.0090115516102 596.8040213598867 +3587 83.88282114425796 32.0554918319691 334.8765466264873 +3588 37.62248363641503 22.36924151823807 218.5278561825478 +3589 36.99643694809314 19.90071291217773 417.570596013992 +3590 272.5495730230896 389.7541361577925 137.2571368487554 +3591 10.91047270069214 8.425966969287867 191.3196595461727 +3592 105.747433419508 246.5189506666107 396.6675169065635 +3593 22.72060273284541 11.5189652308641 189.3587117326611 +3594 57.3202508824052 300.6359490715995 531.5179641392003 +3595 38.62072463018418 45.23524502525974 307.0045453631232 +3596 148.1265824914893 354.2363797370094 91.30207175796629 +3597 294.6224735809802 305.0857642256102 441.9849980106388 +3598 377.363598853464 389.1077921150861 95.95104378000813 +3599 17.09475433147414 57.42026744888008 260.8018726396327 +3600 46.98398597833381 36.46810098607101 370.3954577366272 +3601 8.321832519690448 8.648837015714371 447.1023431813459 +3602 216.5164207860183 210.8095051282991 599.5800066241436 +3603 71.64475826859523 10.46517971360134 254.3231176094752 +3604 136.0997073678409 82.14310776172152 248.9251131202191 +3605 49.56007221196261 17.42182823942924 230.3954052319455 +3606 32.79607519070126 31.83867709114612 195.0484815889384 +3607 19.09430166542712 42.68502154521658 483.4903520382927 +3608 17.42204510378007 48.97768543006917 404.4703260201887 +3609 235.3726307600368 304.408851020695 256.352279013757 +3610 98.65046692804754 38.70363112597899 354.137161916901 +3611 28.55564369062572 52.09507580287306 285.1671041019032 +3612 55.72369521715814 21.74345327111399 260.8092236642002 +3613 28.78394510576972 70.48149755695084 387.4544723177463 +3614 50.76844011545892 22.2456400630732 398.0186533822597 +3615 27.24349833648017 49.78867385804416 239.4605683919486 +3616 126.4381973561655 273.2770802993819 167.6257584007394 +3617 23.86032124701751 19.40944388592109 208.4172393951405 +3618 166.9724206224632 108.6425210968617 355.2533325343244 +3619 22.32231651574816 14.64157198503579 429.2820225542342 +3620 51.99581412445846 20.26349802420788 237.9496071776113 +3621 5.344942641642185 5.121624894252273 199.891626066175 +3622 33.00745979741222 31.54444219534541 413.6148179140112 +3623 59.53503591997419 58.74578254449359 356.5372469003082 +3624 81.81534966154081 90.00614160180126 516.4514696351979 +3625 34.6114849965052 47.29795846484447 384.4117081004371 +3626 16.33643403023263 25.34718198178917 207.9377322719225 +3627 64.23011324623759 387.8987216248526 527.2826410151405 +3628 28.46853657062935 52.13954296608684 272.1263831597418 +3629 54.22038534330137 23.70202486392232 308.4414264097501 +3630 144.1414546098138 48.34562108129732 117.6667188241671 +3631 17.03885176149134 107.291840564757 398.9174177889057 +3632 53.18678633983643 25.92886184263796 327.7873798614461 +3633 32.66707621783013 19.18204236096221 212.7784196268482 +3634 49.33336382478513 29.35205999577713 392.1907028129419 +3635 86.94468343327064 93.79647547099196 386.1325002475948 +3636 98.25006999972396 66.13963213546606 210.7774655568357 +3637 194.3304755211045 223.7602702991625 387.1779034488933 +3638 21.66261741370987 35.86500544319647 417.5785864859073 +3639 39.55383638320824 27.59639446845346 223.69523232542 +3640 35.16914918578447 116.5730510288678 512.5486611173897 +3641 46.7236359330031 36.18625808292184 326.3792246765782 +3642 38.27069897100517 89.27491672246911 109.5390116115644 +3643 38.49544784847424 45.16248296410664 361.2069853321141 +3644 381.9852819389297 377.2540209861497 597.6299110550395 +3645 24.29049012348671 82.06073585959366 331.8715420403454 +3646 9.343715939820381 70.56896929810004 268.2815243632793 +3647 14.39840392356225 53.38119475042067 236.0387370397005 +3648 26.39588734235898 53.24979774375799 299.2508351703749 +3649 59.11727728873785 118.1327633582465 431.5959958069782 +3650 19.53901297657282 55.77102557256312 300.6528676728925 +3651 169.4288200007749 391.0151878356503 352.7158713821576 +3652 10.50137811336048 74.90498858205291 366.5950201032286 +3653 54.67459183423421 375.5160171932059 384.9435261276876 +3654 87.84212741435736 236.2421258340908 440.7232429375536 +3655 12.8402928667227 60.20386208383458 255.6006518389829 +3656 21.84348027879943 54.97275167987488 275.9998331784601 +3657 253.044160543492 393.6402566125593 372.0774428388851 +3658 113.7562964284156 109.3247678063542 111.9869696963003 +3659 58.18455184542661 12.38056042997518 343.184602299101 +3660 56.81401189243412 16.78631373268911 281.3392460970059 +3661 48.18009608526528 34.22240810244593 314.7667960101965 +3662 52.01358190585864 68.11726308563414 297.2536949707218 +3663 50.98597804784283 30.30754749983396 366.5193004277112 +3664 56.03899718145205 19.21131454955271 323.917935656307 +3665 67.31879173720205 34.24458539253983 271.4153491092704 +3666 67.69137601769688 7.162292227912865 295.94056068818 +3667 57.89251032250992 12.27065170538444 327.771322581143 +3668 33.85728446863173 90.5390404192641 364.8002160333033 +3669 5.339620706209589 59.88634745439018 309.8978676149013 +3670 44.70563867013745 40.71102747558572 256.3754737458688 +3671 34.66185191467986 48.2409098536914 368.97668802778 +3672 15.06672586577904 5.006457684575286 202.755317027744 +3673 47.82933976470132 98.92948348036538 396.6076995380603 +3674 14.95613157504815 57.32125135168962 285.1415910301339 +3675 50.94180983560686 30.14538270494038 281.3000760309247 +3676 65.10653887420519 14.23050456024183 236.2906058372555 +3677 45.51474514597202 13.66378724088568 411.076252024069 +3678 16.44952439847317 33.92635448305181 213.2041611226509 +3679 21.4926803624508 24.28064685189773 209.8888735447332 +3680 24.67170375382387 137.8870565142537 383.4984752122079 +3681 27.42104037130058 43.37721385215386 228.7434985402692 +3682 233.622368128109 97.03877790256702 339.83191215274 +3683 60.16245676179615 48.58007623741941 374.5529411077102 +3684 252.9641825783882 324.7005043748177 485.3328429900896 +3685 287.1278566998453 146.4377693356096 62.58667091823448 +3686 59.24523611634586 8.251242768152293 413.3503686476456 +3687 68.24560827876668 23.77791858930491 274.6041590509157 +3688 8.45205852395374 70.52221387371193 395.8189158209556 +3689 27.58360251934851 22.67046425290131 423.251093051763 +3690 66.3156230656426 167.6988942698328 396.8764717930796 +3691 100.4048665635656 12.22627943154834 310.0305269933449 +3692 394.4233423730769 107.6805340126885 93.08865150372711 +3693 49.48518387657285 31.67355040952681 247.6048270549146 +3694 30.34582491981512 50.92686503394282 376.7192426431434 +3695 43.69076974416392 39.93545510711725 287.6332248950629 +3696 21.74202912298419 55.07266702301971 368.959495547056 +3697 21.6785178159209 55.27882283137517 252.5734175639123 +3698 99.42185852371782 71.79808381190371 373.4867674326832 +3699 43.16095942964667 25.74404165828049 407.9712852230946 +3700 40.38401159157264 30.46801842806946 406.6547640944378 +3701 41.666119180857 33.12767914244817 401.8596375539134 +3702 187.2619783314565 109.6062527353109 547.9526038748389 +3703 198.6327901458297 140.3064167236018 602.2202455288245 +3704 36.59226956875153 46.93357828741129 264.5516576601657 +3705 18.96387230418994 69.41515475427832 344.7096706638675 +3706 320.8247624609344 55.86591357702627 216.655782620273 +3707 57.45302467393021 5.237062210362856 244.9564001813465 +3708 307.5743482446998 190.4896841726934 203.8738249607808 +3709 229.3568932198286 173.8137500719643 343.3732815208809 +3710 73.55734488893762 223.2694509152487 322.6363931523164 +3711 85.70181075039802 181.2360385743349 309.5194493031721 +3712 32.01334200949353 148.7559379522571 226.5531605159291 +3713 123.3161856578597 134.1240905299049 474.1112224950148 +3714 391.5065933326982 387.6847283807735 290.4820109320282 +3715 396.7077336866374 127.3775340170024 348.5262360383511 +3716 336.9970800777876 320.2119723817295 381.0045096261323 +3717 389.9365688360572 305.1358855478938 349.4233093491103 +3718 194.8037531758907 268.6511851004399 241.9082819039705 +3719 27.13365233722278 13.65194836716544 426.590567384107 +3720 24.37671337327719 66.33460788415982 506.9849081920321 +3721 166.685903116146 390.5683156400195 506.9636515354769 +3722 86.64603578793307 46.08989902399875 247.2613876339044 +3723 55.08300423343118 82.48337210981741 434.2513781571176 +3724 86.0588214782255 29.71490142787851 303.5491324571576 +3725 135.9774465194881 268.6460003451502 57.88086134800765 +3726 8.996493650656991 45.12376183190931 413.5669569141915 +3727 186.7129463047764 321.1154493695258 175.9060331450555 +3728 10.2764356645142 39.84195722090536 217.1873897942028 +3729 12.47447753318896 57.75681604071433 320.0038356132578 +3730 35.56503704418549 11.03588822671167 213.370315773694 +3731 101.4442686096198 44.50560946454097 323.6164717946299 +3732 29.22262952929148 45.55466270932322 400.5064052829972 +3733 8.754921115886123 71.3222237277768 291.3861489107454 +3734 36.22187564688686 34.77116013703736 227.0223214741664 +3735 173.0937904925725 37.60358079555512 479.2546671339391 +3736 56.44831574859221 134.019600322295 272.9445838075218 +3737 176.1701940945741 54.34730224507899 68.03570903867217 +3738 43.64390429137615 40.0562954080472 372.9077149820556 +3739 19.65111954346236 90.84676963622287 455.4792176343696 +3740 317.1491369262562 197.7795270251204 309.9424448356668 +3741 37.96781240080346 43.2876514834871 389.1881631796789 +3742 13.94726653307749 94.23993081583627 355.0029263948484 +3743 37.30622468095633 40.04513367300992 399.5200706048648 +3744 35.58839005778563 54.18466700859916 420.3949748964086 +3745 21.89719721451118 50.77809371048146 237.8010021697179 +3746 8.467751391286242 9.333789496959806 457.2577004034967 +3747 4.995707402759091 55.82948784526842 394.7194724304986 +3748 186.0527609459321 84.1520331793399 213.7445980029442 +3749 98.63313835575394 19.64493481352727 449.55518768383 +3750 43.24331627727837 55.91227844190509 337.3208291521312 +3751 204.9267802603605 35.34111011352127 414.0748088456814 +3752 25.88334328081713 6.825631352659103 428.7729428589915 +3753 12.53945921036142 57.6946822399993 296.7601720328939 +3754 229.161573369377 29.32914162454155 329.4100946098003 +3755 39.3635708539292 238.36505590294 458.2388146629754 +3756 9.934783063328167 58.04874008963596 378.3314821302159 +3757 158.5234869216634 63.12220406983804 326.8434157312665 +3758 40.72903652093197 94.48228802125236 270.9935160901379 +3759 7.714317759629944 66.93283800905374 371.4556110934784 +3760 300.0598021342446 121.5528032527597 295.2057174958024 +3761 200.7995454180476 114.4191845326594 275.4345007510402 +3762 26.18983755093275 52.84781075385899 306.9974918667236 +3763 20.55441317539172 64.12643814096397 305.3323568828172 +3764 21.53975982169391 32.63814682586674 215.0366667125583 +3765 23.94932286395569 35.85980956001939 218.8862553064685 +3766 144.0073672328848 384.6428818840796 220.6955806930046 +3767 79.64704192515822 96.59353101220677 160.4390942917738 +3768 56.9992676150126 16.3416550228816 382.5533822254209 +3769 69.04155509415257 35.11719009220802 288.8467280865742 +3770 67.37122564310816 97.07990992966019 332.6334658632277 +3771 216.8545581338701 174.7273713902353 468.9367573618482 +3772 18.52281412754486 19.54569971015676 144.6554189989359 +3773 28.68507840096783 68.432721013894 274.1554608881837 +3774 22.36733288350205 73.49897408279011 282.3598682686551 +3775 58.26613540687613 9.732094550994743 300.7146501988036 +3776 45.22230452501344 38.06342141138594 307.0180557143446 +3777 50.83871252411593 30.15021979421044 307.0299531313527 +3778 232.5446951709168 325.5745450559974 599.5538325753633 +3779 130.7108131376717 42.3791088168179 537.779152409941 +3780 107.9789915719563 46.32711010200187 580.4550721571369 +3781 17.68368307444004 53.15426102222222 397.7381611490275 +3782 69.63372507196323 18.26437435904178 298.9345220239385 +3783 38.52840122842818 73.8659925198225 292.7785663785367 +3784 58.14660756632004 9.79705856735448 292.906412832702 +3785 42.93746202544787 10.8545324962096 414.6121703490459 +3786 74.97901794599554 28.04702018757128 367.2931543706479 +3787 12.50970594801005 58.03523544988778 273.5653159321942 +3788 118.9510966054073 16.24853726830281 350.6919758953008 +3789 31.31126642694816 36.79353486365427 225.0107858287268 +3790 23.98913474339867 53.92635438209037 331.6029559241716 +3791 30.47111417410881 50.67448229395706 353.4403055341797 +3792 30.39672153446822 50.56462084834455 358.7210946450827 +3793 32.28540589688925 33.31328871986987 109.0388944122139 +3794 51.13269156041732 26.73761695662698 245.2467137047944 +3795 28.36976910968941 51.93405385665553 365.0713304125222 +3796 16.36704223919434 49.44536924411375 229.2151875659791 +3797 330.1022444037947 128.448100513155 595.8779889553814 +3798 323.7197873077942 319.8609148801215 494.6386453637323 +3799 54.45134311026682 78.18981595671934 391.6909859083623 +3800 41.93400494835866 41.69138090520811 353.4534302114425 +3801 56.93601407290701 29.73682142054215 412.8904876482086 +3802 8.845920350390356 26.0880810647398 192.6150742039508 +3803 13.6717777617966 27.55186183879083 179.344078352265 +3804 45.82811680365509 34.74191244453888 244.3580232469046 +3805 44.75041148118312 33.23534963961649 238.9627711508118 +3806 41.87795930282121 41.59034360463623 312.289553585804 +3807 54.20031875407354 23.60407935374459 277.4333956213003 +3808 54.0419288408732 23.60035900451915 272.1975281673511 +3809 10.16879846280096 58.4166138489231 331.5675085223772 +3810 49.40549938017799 32.1711282121049 349.6171753804742 +3811 56.41626969367355 16.80575149223682 337.9879549256872 +3812 75.77179695791864 8.548846220525903 345.5399444547899 +3813 83.81760584192338 123.1461317546768 199.8481919822073 +3814 122.2961235042855 74.18552894592879 450.8275273839023 +3815 57.73409026135467 7.472643110612339 387.1690788492224 +3816 26.11191459957312 52.70793841883376 314.7384047820451 +3817 57.35079260374406 14.51076044485833 310.9125853432857 +3818 65.76161075458096 38.11331619646102 348.6744925971703 +3819 10.82728705703954 87.6174769588895 383.9263562725412 +3820 205.6276072188824 105.2188287676456 370.8317975545465 +3821 32.43400615237246 49.20538318962772 331.6139482857987 +3822 55.79073787885237 45.37074754331356 282.1792228249819 +3823 69.52622444294218 6.805611721210251 361.639937245079 +3824 79.67925871604703 10.01502427970118 362.5769486661252 +3825 224.7120234425113 86.5043853296566 295.9272928775998 +3826 24.02531989652537 53.91742297857205 292.9106390768697 +3827 20.47390397667362 114.4246886755675 227.5328817606277 +3828 27.15847236106334 198.0919455168319 351.802359792482 +3829 314.5743982230026 165.7904915819288 461.2064442226119 +3830 177.8518614210451 172.3166050154944 223.7085499047289 +3831 41.8987710813315 41.67027333033469 345.7033573925177 +3832 253.1107961847518 217.0199093351566 332.3601036649306 +3833 232.6453951932499 37.82327397275352 254.3422301721718 +3834 19.4022358022438 55.62446354403853 354.8316444104735 +3835 256.3856493270602 252.234970273961 256.7949264645129 +3836 43.19733294517954 37.48179167236484 391.3334120669798 +3837 266.4717765385976 164.566490428248 119.2389244244534 +3838 110.6543107081914 19.30100657285017 283.0809769791184 +3839 51.73283064955466 26.06882384171584 388.3372798591278 +3840 54.7812327777988 21.34829613267893 358.7833692862416 +3841 395.0228859323747 240.7509809644579 292.2581372730027 +3842 77.12039433018242 8.01557848147195 374.1014666524119 +3843 58.04085655984391 9.799276509660483 262.2031186503721 +3844 17.0691188671449 55.25527953010419 244.6621728341517 +3845 83.11748667488735 23.55888870753688 322.8755405657216 +3846 171.7564962656466 77.01720518527034 399.0737648011475 +3847 43.15692547301479 277.1786871167212 235.6177520175706 +3848 69.05600844461397 104.8199537371655 457.8184058091991 +3849 41.23704226618363 64.52868709216207 284.7888415084404 +3850 55.67300890650894 19.06053578642147 303.1778398848003 +3851 22.43034663227373 73.79347957072235 319.6845154307057 +3852 85.6277619346512 108.2019651852064 285.500004515044 +3853 50.68333196434259 30.11914550538422 361.2484478939005 +3854 50.59769638220754 30.03460664443944 322.5174818033273 +3855 126.5262339406688 55.85386827578851 253.9554824571925 +3856 8.037347132190309 69.87016259306401 348.3321853853598 +3857 87.24279156547779 11.69181512835023 341.9195624568052 +3858 251.4241036214847 199.9750474870207 435.6659559597614 +3859 53.92301983183477 23.5417338864367 292.9403413048308 +3860 277.1560200475234 340.6874756547999 358.0397084352207 +3861 394.7043371301559 219.0008890168783 226.0899361137951 +3862 17.08761946717888 56.23177657368369 345.6849380301346 +3863 17.10700008166632 56.1456169669114 314.7288854737566 +3864 56.57095031673024 16.70327909779976 273.733726243716 +3865 386.8803921114073 219.6319786069012 475.0707287027014 +3866 121.5160223521715 229.7306153863191 345.2054822706122 +3867 44.54954899246361 19.34096546041024 225.2863408822266 +3868 28.26630603703362 50.38876942632472 245.206138574103 +3869 181.3972313196159 272.1772667812009 442.5032514618052 +3870 51.79672332104033 27.92172293735846 316.1712580377214 +3871 14.56506653927663 57.04132084326839 372.9328198278056 +3872 34.60078933315764 24.9645651904452 416.7655205538807 +3873 216.4876175741078 250.6259099499916 54.20774248430168 +3874 30.32690952414914 50.42171359255421 345.693461295405 +3875 46.5821416950796 36.03369028653314 300.6713202075851 +3876 74.44032742443018 17.23845731011654 371.6409943523802 +3877 331.2150930446041 398.6194347264589 300.0533728540916 +3878 7.317584647574651 67.59005622183356 355.5920161891046 +3879 48.26930301309307 10.83692466278077 227.2617963432058 +3880 28.22501632296774 51.60194261652664 339.3434715431767 +3881 51.84705049815411 27.92308802479908 300.6871186930183 +3882 118.2493691022758 39.12528671846962 310.3272466334577 +3883 110.906823084825 43.12369717691045 286.7313800967042 +3884 228.5837901848591 398.8286839174334 302.8089896810326 +3885 19.96501105954733 42.91148878701978 411.5285984737841 +3886 19.36913714965537 55.4190913712066 339.3308918431813 +3887 40.05249836529109 43.17551880635187 300.6645424399027 +3888 85.01068050362331 46.73979424224541 438.3894384943271 +3889 107.6675355499 113.7402261511111 54.90515562521728 +3890 41.95558193764143 41.63799762488809 273.5060102924452 +3891 59.40313020307578 15.20591135396374 443.7715450118229 +3892 40.91118908741227 110.4397688417852 343.0489095078557 +3893 52.82229670502635 25.75479362416198 337.9970028378359 +3894 47.8927248744587 34.05372751303304 337.994051500909 +3895 92.58624654557562 109.027089611967 419.2651845901206 +3896 29.53642189143683 71.47508462753065 239.3737082847155 +3897 54.00361795841836 20.31722592912129 244.6991671224126 +3898 117.0407992206762 16.29369817370852 303.7752511143804 +3899 210.0392878628075 59.75445398357361 344.8940690868002 +3900 72.18567061004798 7.67648032001273 324.9834424101409 +3901 112.4986123223223 279.6197234279867 469.7802205322587 +3902 55.6402742122748 19.06740217127284 316.1783013410131 +3903 86.53521460057533 40.20792572410411 365.7467459869942 +3904 80.39036868556147 14.15187709192132 421.4183798380259 +3905 45.02962088079692 37.93793457834698 358.7395013870872 +3906 45.21252313663292 120.4014343347505 365.485352726514 +3907 41.92917185326881 41.61384307762034 281.2764440234693 +3908 14.11435075917414 100.5648270678454 284.2119406025875 +3909 310.3998376678892 198.285858101791 603.547941351849 +3910 50.82705495569085 329.14438410061 472.7504939164775 +3911 45.2123739773597 63.20647468512593 227.1396341485382 +3912 45.48087558949003 117.1580804682952 290.9737693041542 +3913 46.86059229050515 24.50086307500508 233.8819328407924 +3914 394.5041329537934 112.961668955643 513.1597169962348 +3915 63.32668256928108 24.95590349631478 341.2197183240012 +3916 67.04153664581773 29.70530774781475 333.3996607207954 +3917 11.56476356366556 43.47640344963988 221.0783090871618 +3918 234.9467527652814 166.6149361553838 278.1570810448498 +3919 273.4018096449448 166.2842247786679 364.9213288366113 +3920 40.40989805585549 43.30357257002186 246.4734455523759 +3921 39.88127921467959 43.06733623604492 339.3585000175993 +3922 56.94188990355742 14.43015863430401 365.1618374471718 +3923 57.22504030109737 11.69521563119464 250.2731574749614 +3924 9.824325102115809 23.77490511124375 206.7285961561424 +3925 40.03390622209582 43.15271488618483 292.91176926374 +3926 26.75585257187769 68.12857287866001 410.8144557880717 +3927 50.48455850938917 29.98651804498001 343.2660823777434 +3928 53.09858357049318 47.6448871658279 295.9718277064227 +3929 9.163128098956944 57.4598422742642 247.8464465858792 +3930 53.00457841601181 19.04200782667645 394.1263975107232 +3931 49.74713995383844 193.1685841917135 604.1922758859589 +3932 109.120437661326 15.78489682559167 335.9576568596439 +3933 29.23098447808657 223.0860409616841 384.0268724745229 +3934 57.56783185572944 12.044026621006 358.8115207311714 +3935 42.94974355679563 319.8623608373908 206.0675134601585 +$EndNodes +$Elements +21115 +1 1 2 30 14 7 112 +2 1 2 30 14 112 113 +3 1 2 30 14 113 114 +4 1 2 30 14 114 115 +5 1 2 30 14 115 116 +6 1 2 30 14 116 117 +7 1 2 30 14 117 118 +8 1 2 30 14 118 119 +9 1 2 30 14 119 120 +10 1 2 30 14 120 121 +11 1 2 30 14 121 122 +12 1 2 30 14 122 123 +13 1 2 30 14 123 124 +14 1 2 30 14 124 125 +15 1 2 30 14 125 126 +16 1 2 30 14 126 127 +17 1 2 30 14 127 128 +18 1 2 30 14 128 129 +19 1 2 30 14 129 130 +20 1 2 30 14 130 131 +21 1 2 30 14 131 132 +22 1 2 30 14 132 133 +23 1 2 30 14 133 134 +24 1 2 30 14 134 135 +25 1 2 30 14 135 136 +26 1 2 30 14 136 8 +27 1 2 30 16 5 162 +28 1 2 30 16 162 163 +29 1 2 30 16 163 164 +30 1 2 30 16 164 165 +31 1 2 30 16 165 166 +32 1 2 30 16 166 167 +33 1 2 30 16 167 168 +34 1 2 30 16 168 169 +35 1 2 30 16 169 170 +36 1 2 30 16 170 171 +37 1 2 30 16 171 172 +38 1 2 30 16 172 173 +39 1 2 30 16 173 174 +40 1 2 30 16 174 175 +41 1 2 30 16 175 176 +42 1 2 30 16 176 177 +43 1 2 30 16 177 178 +44 1 2 30 16 178 179 +45 1 2 30 16 179 7 +46 1 2 30 20 8 234 +47 1 2 30 20 234 235 +48 1 2 30 20 235 236 +49 1 2 30 20 236 237 +50 1 2 30 20 237 238 +51 1 2 30 20 238 239 +52 1 2 30 20 239 240 +53 1 2 30 20 240 241 +54 1 2 30 20 241 242 +55 1 2 30 20 242 243 +56 1 2 30 20 243 244 +57 1 2 30 20 244 245 +58 1 2 30 20 245 246 +59 1 2 30 20 246 247 +60 1 2 30 20 247 248 +61 1 2 30 20 248 249 +62 1 2 30 20 249 250 +63 1 2 30 20 250 251 +64 1 2 30 20 251 6 +65 2 2 29 1 162 523 5 +66 2 2 29 1 5 523 180 +67 2 2 29 1 7 522 179 +68 2 2 29 1 215 522 7 +69 2 2 29 1 197 521 10 +70 2 2 29 1 10 521 198 +71 2 2 29 1 163 512 162 +72 2 2 29 1 162 512 291 +73 2 2 29 1 291 523 162 +74 2 2 29 1 164 287 163 +75 2 2 29 1 287 512 163 +76 2 2 29 1 165 517 164 +77 2 2 29 1 164 517 287 +78 2 2 29 1 166 280 165 +79 2 2 29 1 280 517 165 +80 2 2 29 1 167 398 166 +81 2 2 29 1 166 398 280 +82 2 2 29 1 168 275 167 +83 2 2 29 1 275 398 167 +84 2 2 29 1 169 405 168 +85 2 2 29 1 168 405 275 +86 2 2 29 1 170 294 169 +87 2 2 29 1 294 405 169 +88 2 2 29 1 171 271 170 +89 2 2 29 1 271 294 170 +90 2 2 29 1 172 436 171 +91 2 2 29 1 171 436 271 +92 2 2 29 1 173 479 172 +93 2 2 29 1 172 479 436 +94 2 2 29 1 174 276 173 +95 2 2 29 1 276 479 173 +96 2 2 29 1 175 409 174 +97 2 2 29 1 174 409 276 +98 2 2 29 1 176 282 175 +99 2 2 29 1 282 409 175 +100 2 2 29 1 177 432 176 +101 2 2 29 1 176 432 282 +102 2 2 29 1 178 285 177 +103 2 2 29 1 285 432 177 +104 2 2 29 1 179 509 178 +105 2 2 29 1 178 509 285 +106 2 2 29 1 293 509 179 +107 2 2 29 1 179 522 293 +108 2 2 29 1 180 513 181 +109 2 2 29 1 291 513 180 +110 2 2 29 1 180 523 291 +111 2 2 29 1 181 290 182 +112 2 2 29 1 181 513 290 +113 2 2 29 1 182 419 183 +114 2 2 29 1 290 419 182 +115 2 2 29 1 183 284 184 +116 2 2 29 1 183 419 284 +117 2 2 29 1 184 426 185 +118 2 2 29 1 284 426 184 +119 2 2 29 1 185 278 186 +120 2 2 29 1 185 426 278 +121 2 2 29 1 186 408 187 +122 2 2 29 1 278 408 186 +123 2 2 29 1 187 406 188 +124 2 2 29 1 187 408 406 +125 2 2 29 1 188 272 189 +126 2 2 29 1 188 406 272 +127 2 2 29 1 189 428 190 +128 2 2 29 1 272 428 189 +129 2 2 29 1 190 429 191 +130 2 2 29 1 428 429 190 +131 2 2 29 1 191 277 192 +132 2 2 29 1 191 429 277 +133 2 2 29 1 192 414 193 +134 2 2 29 1 277 414 192 +135 2 2 29 1 193 283 194 +136 2 2 29 1 193 414 283 +137 2 2 29 1 194 418 195 +138 2 2 29 1 283 418 194 +139 2 2 29 1 195 289 196 +140 2 2 29 1 195 418 289 +141 2 2 29 1 196 511 197 +142 2 2 29 1 289 511 196 +143 2 2 29 1 197 511 292 +144 2 2 29 1 292 521 197 +145 2 2 29 1 198 510 199 +146 2 2 29 1 292 510 198 +147 2 2 29 1 198 521 292 +148 2 2 29 1 199 286 200 +149 2 2 29 1 199 510 286 +150 2 2 29 1 200 410 201 +151 2 2 29 1 286 410 200 +152 2 2 29 1 201 281 202 +153 2 2 29 1 201 410 281 +154 2 2 29 1 202 434 203 +155 2 2 29 1 281 434 202 +156 2 2 29 1 203 273 204 +157 2 2 29 1 203 434 273 +158 2 2 29 1 204 518 205 +159 2 2 29 1 273 518 204 +160 2 2 29 1 205 520 206 +161 2 2 29 1 518 520 205 +162 2 2 29 1 206 270 207 +163 2 2 29 1 206 520 270 +164 2 2 29 1 207 403 208 +165 2 2 29 1 270 403 207 +166 2 2 29 1 208 483 209 +167 2 2 29 1 403 483 208 +168 2 2 29 1 209 274 210 +169 2 2 29 1 209 483 274 +170 2 2 29 1 210 420 211 +171 2 2 29 1 274 420 210 +172 2 2 29 1 211 279 212 +173 2 2 29 1 211 420 279 +174 2 2 29 1 212 425 213 +175 2 2 29 1 279 425 212 +176 2 2 29 1 213 288 214 +177 2 2 29 1 213 425 288 +178 2 2 29 1 214 514 215 +179 2 2 29 1 288 514 214 +180 2 2 29 1 215 514 293 +181 2 2 29 1 293 522 215 +182 2 2 29 1 270 400 391 +183 2 2 29 1 391 402 270 +184 2 2 29 1 270 520 400 +185 2 2 29 1 402 403 270 +186 2 2 29 1 271 295 294 +187 2 2 29 1 271 296 295 +188 2 2 29 1 271 436 296 +189 2 2 29 1 406 407 272 +190 2 2 29 1 407 505 272 +191 2 2 29 1 272 505 428 +192 2 2 29 1 273 457 401 +193 2 2 29 1 401 518 273 +194 2 2 29 1 434 516 273 +195 2 2 29 1 273 516 457 +196 2 2 29 1 395 469 274 +197 2 2 29 1 274 483 395 +198 2 2 29 1 274 469 420 +199 2 2 29 1 275 499 398 +200 2 2 29 1 405 486 275 +201 2 2 29 1 486 499 275 +202 2 2 29 1 399 479 276 +203 2 2 29 1 276 493 399 +204 2 2 29 1 409 493 276 +205 2 2 29 1 277 431 414 +206 2 2 29 1 429 430 277 +207 2 2 29 1 430 431 277 +208 2 2 29 1 278 482 408 +209 2 2 29 1 426 427 278 +210 2 2 29 1 427 482 278 +211 2 2 29 1 420 421 279 +212 2 2 29 1 421 422 279 +213 2 2 29 1 422 425 279 +214 2 2 29 1 280 398 390 +215 2 2 29 1 390 484 280 +216 2 2 29 1 280 484 397 +217 2 2 29 1 397 517 280 +218 2 2 29 1 410 459 281 +219 2 2 29 1 281 435 434 +220 2 2 29 1 281 459 435 +221 2 2 29 1 282 478 409 +222 2 2 29 1 432 433 282 +223 2 2 29 1 433 478 282 +224 2 2 29 1 414 415 283 +225 2 2 29 1 415 416 283 +226 2 2 29 1 416 418 283 +227 2 2 29 1 419 519 284 +228 2 2 29 1 284 507 426 +229 2 2 29 1 284 519 507 +230 2 2 29 1 285 488 432 +231 2 2 29 1 285 525 488 +232 2 2 29 1 509 525 285 +233 2 2 29 1 286 411 410 +234 2 2 29 1 286 412 411 +235 2 2 29 1 286 510 412 +236 2 2 29 1 287 397 396 +237 2 2 29 1 396 477 287 +238 2 2 29 1 287 517 397 +239 2 2 29 1 477 512 287 +240 2 2 29 1 425 460 288 +241 2 2 29 1 460 467 288 +242 2 2 29 1 467 514 288 +243 2 2 29 1 289 481 412 +244 2 2 29 1 412 511 289 +245 2 2 29 1 418 481 289 +246 2 2 29 1 404 419 290 +247 2 2 29 1 290 477 404 +248 2 2 29 1 290 513 477 +249 2 2 29 1 291 512 477 +250 2 2 29 1 477 513 291 +251 2 2 29 1 412 510 292 +252 2 2 29 1 292 511 412 +253 2 2 29 1 293 514 467 +254 2 2 29 1 467 525 293 +255 2 2 29 1 293 525 509 +256 2 2 29 1 295 466 294 +257 2 2 29 1 294 466 405 +258 2 2 29 1 296 297 295 +259 2 2 29 1 297 298 295 +260 2 2 29 1 298 466 295 +261 2 2 29 1 296 476 297 +262 2 2 29 1 436 490 296 +263 2 2 29 1 296 490 476 +264 2 2 29 1 297 299 298 +265 2 2 29 1 297 300 299 +266 2 2 29 1 297 476 300 +267 2 2 29 1 299 393 298 +268 2 2 29 1 393 394 298 +269 2 2 29 1 394 466 298 +270 2 2 29 1 300 301 299 +271 2 2 29 1 301 302 299 +272 2 2 29 1 302 393 299 +273 2 2 29 1 300 465 301 +274 2 2 29 1 300 470 465 +275 2 2 29 1 300 476 470 +276 2 2 29 1 301 303 302 +277 2 2 29 1 301 304 303 +278 2 2 29 1 301 465 304 +279 2 2 29 1 303 437 302 +280 2 2 29 1 302 506 393 +281 2 2 29 1 437 506 302 +282 2 2 29 1 304 305 303 +283 2 2 29 1 305 308 303 +284 2 2 29 1 308 437 303 +285 2 2 29 1 304 306 305 +286 2 2 29 1 304 458 306 +287 2 2 29 1 304 465 458 +288 2 2 29 1 306 307 305 +289 2 2 29 1 307 440 305 +290 2 2 29 1 305 440 308 +291 2 2 29 1 306 309 307 +292 2 2 29 1 306 311 309 +293 2 2 29 1 306 458 311 +294 2 2 29 1 309 310 307 +295 2 2 29 1 310 314 307 +296 2 2 29 1 314 440 307 +297 2 2 29 1 308 438 437 +298 2 2 29 1 308 439 438 +299 2 2 29 1 308 440 439 +300 2 2 29 1 309 450 310 +301 2 2 29 1 311 312 309 +302 2 2 29 1 312 450 309 +303 2 2 29 1 310 315 314 +304 2 2 29 1 310 455 315 +305 2 2 29 1 450 455 310 +306 2 2 29 1 311 313 312 +307 2 2 29 1 311 453 313 +308 2 2 29 1 311 458 453 +309 2 2 29 1 313 326 312 +310 2 2 29 1 326 334 312 +311 2 2 29 1 334 450 312 +312 2 2 29 1 313 327 326 +313 2 2 29 1 313 328 327 +314 2 2 29 1 313 453 328 +315 2 2 29 1 315 316 314 +316 2 2 29 1 316 463 314 +317 2 2 29 1 314 463 440 +318 2 2 29 1 315 317 316 +319 2 2 29 1 315 320 317 +320 2 2 29 1 315 455 320 +321 2 2 29 1 317 318 316 +322 2 2 29 1 318 321 316 +323 2 2 29 1 321 463 316 +324 2 2 29 1 317 319 318 +325 2 2 29 1 317 449 319 +326 2 2 29 1 320 449 317 +327 2 2 29 1 319 322 318 +328 2 2 29 1 318 442 321 +329 2 2 29 1 322 442 318 +330 2 2 29 1 319 323 322 +331 2 2 29 1 319 324 323 +332 2 2 29 1 319 449 324 +333 2 2 29 1 320 462 449 +334 2 2 29 1 455 468 320 +335 2 2 29 1 320 468 462 +336 2 2 29 1 442 464 321 +337 2 2 29 1 321 471 463 +338 2 2 29 1 464 471 321 +339 2 2 29 1 323 337 322 +340 2 2 29 1 337 338 322 +341 2 2 29 1 338 442 322 +342 2 2 29 1 324 325 323 +343 2 2 29 1 325 441 323 +344 2 2 29 1 323 441 337 +345 2 2 29 1 324 330 325 +346 2 2 29 1 324 454 330 +347 2 2 29 1 449 454 324 +348 2 2 29 1 330 331 325 +349 2 2 29 1 331 343 325 +350 2 2 29 1 343 441 325 +351 2 2 29 1 327 447 326 +352 2 2 29 1 326 335 334 +353 2 2 29 1 326 447 335 +354 2 2 29 1 328 329 327 +355 2 2 29 1 329 339 327 +356 2 2 29 1 339 447 327 +357 2 2 29 1 328 332 329 +358 2 2 29 1 328 345 332 +359 2 2 29 1 328 453 345 +360 2 2 29 1 332 333 329 +361 2 2 29 1 333 491 329 +362 2 2 29 1 329 491 339 +363 2 2 29 1 330 340 331 +364 2 2 29 1 330 341 340 +365 2 2 29 1 330 454 341 +366 2 2 29 1 340 342 331 +367 2 2 29 1 342 496 331 +368 2 2 29 1 331 496 343 +369 2 2 29 1 332 444 333 +370 2 2 29 1 345 349 332 +371 2 2 29 1 349 444 332 +372 2 2 29 1 444 445 333 +373 2 2 29 1 445 501 333 +374 2 2 29 1 333 501 491 +375 2 2 29 1 335 336 334 +376 2 2 29 1 336 456 334 +377 2 2 29 1 334 456 450 +378 2 2 29 1 335 347 336 +379 2 2 29 1 335 351 347 +380 2 2 29 1 335 447 351 +381 2 2 29 1 347 348 336 +382 2 2 29 1 348 371 336 +383 2 2 29 1 371 456 336 +384 2 2 29 1 337 344 338 +385 2 2 29 1 337 350 344 +386 2 2 29 1 337 441 350 +387 2 2 29 1 344 346 338 +388 2 2 29 1 346 352 338 +389 2 2 29 1 352 442 338 +390 2 2 29 1 339 448 447 +391 2 2 29 1 339 480 448 +392 2 2 29 1 339 491 480 +393 2 2 29 1 341 376 340 +394 2 2 29 1 340 487 342 +395 2 2 29 1 376 487 340 +396 2 2 29 1 341 379 376 +397 2 2 29 1 341 475 379 +398 2 2 29 1 454 475 341 +399 2 2 29 1 473 474 342 +400 2 2 29 1 342 487 473 +401 2 2 29 1 474 496 342 +402 2 2 29 1 417 494 343 +403 2 2 29 1 343 496 417 +404 2 2 29 1 343 494 441 +405 2 2 29 1 344 380 346 +406 2 2 29 1 350 430 344 +407 2 2 29 1 344 515 380 +408 2 2 29 1 430 515 344 +409 2 2 29 1 345 375 349 +410 2 2 29 1 345 381 375 +411 2 2 29 1 345 453 381 +412 2 2 29 1 346 353 352 +413 2 2 29 1 346 485 353 +414 2 2 29 1 380 485 346 +415 2 2 29 1 347 402 348 +416 2 2 29 1 351 373 347 +417 2 2 29 1 373 402 347 +418 2 2 29 1 348 372 371 +419 2 2 29 1 348 391 372 +420 2 2 29 1 348 402 391 +421 2 2 29 1 375 383 349 +422 2 2 29 1 383 384 349 +423 2 2 29 1 384 444 349 +424 2 2 29 1 350 431 430 +425 2 2 29 1 350 494 431 +426 2 2 29 1 441 494 350 +427 2 2 29 1 351 395 373 +428 2 2 29 1 351 448 395 +429 2 2 29 1 447 448 351 +430 2 2 29 1 353 354 352 +431 2 2 29 1 354 464 352 +432 2 2 29 1 352 464 442 +433 2 2 29 1 353 355 354 +434 2 2 29 1 353 503 355 +435 2 2 29 1 485 503 353 +436 2 2 29 1 355 356 354 +437 2 2 29 1 356 370 354 +438 2 2 29 1 370 464 354 +439 2 2 29 1 355 357 356 +440 2 2 29 1 355 378 357 +441 2 2 29 1 355 503 378 +442 2 2 29 1 357 358 356 +443 2 2 29 1 358 446 356 +444 2 2 29 1 356 446 370 +445 2 2 29 1 357 359 358 +446 2 2 29 1 357 500 359 +447 2 2 29 1 378 500 357 +448 2 2 29 1 359 360 358 +449 2 2 29 1 360 361 358 +450 2 2 29 1 361 446 358 +451 2 2 29 1 359 451 360 +452 2 2 29 1 359 502 451 +453 2 2 29 1 500 502 359 +454 2 2 29 1 360 362 361 +455 2 2 29 1 360 363 362 +456 2 2 29 1 360 451 363 +457 2 2 29 1 362 443 361 +458 2 2 29 1 443 489 361 +459 2 2 29 1 361 489 446 +460 2 2 29 1 363 364 362 +461 2 2 29 1 364 366 362 +462 2 2 29 1 366 443 362 +463 2 2 29 1 363 365 364 +464 2 2 29 1 363 368 365 +465 2 2 29 1 363 451 368 +466 2 2 29 1 365 452 364 +467 2 2 29 1 364 367 366 +468 2 2 29 1 364 452 367 +469 2 2 29 1 368 369 365 +470 2 2 29 1 369 382 365 +471 2 2 29 1 382 452 365 +472 2 2 29 1 367 377 366 +473 2 2 29 1 377 386 366 +474 2 2 29 1 386 443 366 +475 2 2 29 1 367 389 377 +476 2 2 29 1 367 390 389 +477 2 2 29 1 367 452 390 +478 2 2 29 1 368 387 369 +479 2 2 29 1 368 388 387 +480 2 2 29 1 368 451 388 +481 2 2 29 1 369 396 382 +482 2 2 29 1 387 404 369 +483 2 2 29 1 369 404 396 +484 2 2 29 1 446 472 370 +485 2 2 29 1 370 471 464 +486 2 2 29 1 370 472 471 +487 2 2 29 1 372 374 371 +488 2 2 29 1 374 468 371 +489 2 2 29 1 371 468 456 +490 2 2 29 1 372 492 374 +491 2 2 29 1 391 392 372 +492 2 2 29 1 392 492 372 +493 2 2 29 1 395 483 373 +494 2 2 29 1 373 403 402 +495 2 2 29 1 373 483 403 +496 2 2 29 1 462 468 374 +497 2 2 29 1 374 475 462 +498 2 2 29 1 374 492 475 +499 2 2 29 1 381 470 375 +500 2 2 29 1 375 385 383 +501 2 2 29 1 375 470 385 +502 2 2 29 1 379 457 376 +503 2 2 29 1 435 487 376 +504 2 2 29 1 376 516 435 +505 2 2 29 1 457 516 376 +506 2 2 29 1 377 393 386 +507 2 2 29 1 389 394 377 +508 2 2 29 1 377 394 393 +509 2 2 29 1 378 498 482 +510 2 2 29 1 482 500 378 +511 2 2 29 1 378 503 498 +512 2 2 29 1 379 497 457 +513 2 2 29 1 475 492 379 +514 2 2 29 1 492 497 379 +515 2 2 29 1 428 505 380 +516 2 2 29 1 380 515 428 +517 2 2 29 1 380 505 485 +518 2 2 29 1 453 458 381 +519 2 2 29 1 458 465 381 +520 2 2 29 1 465 470 381 +521 2 2 29 1 396 397 382 +522 2 2 29 1 397 484 382 +523 2 2 29 1 382 484 452 +524 2 2 29 1 383 493 384 +525 2 2 29 1 385 399 383 +526 2 2 29 1 399 493 383 +527 2 2 29 1 384 508 444 +528 2 2 29 1 384 493 478 +529 2 2 29 1 478 508 384 +530 2 2 29 1 385 490 399 +531 2 2 29 1 470 476 385 +532 2 2 29 1 476 490 385 +533 2 2 29 1 393 506 386 +534 2 2 29 1 386 495 443 +535 2 2 29 1 386 506 495 +536 2 2 29 1 388 519 387 +537 2 2 29 1 387 419 404 +538 2 2 29 1 387 519 419 +539 2 2 29 1 451 502 388 +540 2 2 29 1 502 507 388 +541 2 2 29 1 507 519 388 +542 2 2 29 1 390 499 389 +543 2 2 29 1 389 486 394 +544 2 2 29 1 389 499 486 +545 2 2 29 1 398 499 390 +546 2 2 29 1 452 484 390 +547 2 2 29 1 391 400 392 +548 2 2 29 1 400 401 392 +549 2 2 29 1 401 497 392 +550 2 2 29 1 392 497 492 +551 2 2 29 1 394 486 466 +552 2 2 29 1 448 469 395 +553 2 2 29 1 404 477 396 +554 2 2 29 1 399 490 479 +555 2 2 29 1 400 520 401 +556 2 2 29 1 457 497 401 +557 2 2 29 1 401 520 518 +558 2 2 29 1 466 486 405 +559 2 2 29 1 406 498 407 +560 2 2 29 1 408 498 406 +561 2 2 29 1 407 503 485 +562 2 2 29 1 485 505 407 +563 2 2 29 1 498 503 407 +564 2 2 29 1 482 498 408 +565 2 2 29 1 478 493 409 +566 2 2 29 1 411 459 410 +567 2 2 29 1 412 413 411 +568 2 2 29 1 413 473 411 +569 2 2 29 1 411 473 459 +570 2 2 29 1 412 481 413 +571 2 2 29 1 413 474 473 +572 2 2 29 1 413 524 474 +573 2 2 29 1 481 524 413 +574 2 2 29 1 414 431 415 +575 2 2 29 1 415 417 416 +576 2 2 29 1 415 494 417 +577 2 2 29 1 431 494 415 +578 2 2 29 1 417 524 416 +579 2 2 29 1 416 481 418 +580 2 2 29 1 416 524 481 +581 2 2 29 1 417 496 474 +582 2 2 29 1 474 524 417 +583 2 2 29 1 420 469 421 +584 2 2 29 1 421 423 422 +585 2 2 29 1 421 480 423 +586 2 2 29 1 469 480 421 +587 2 2 29 1 423 424 422 +588 2 2 29 1 424 460 422 +589 2 2 29 1 422 460 425 +590 2 2 29 1 423 501 424 +591 2 2 29 1 480 491 423 +592 2 2 29 1 491 501 423 +593 2 2 29 1 424 501 445 +594 2 2 29 1 445 504 424 +595 2 2 29 1 424 461 460 +596 2 2 29 1 424 504 461 +597 2 2 29 1 426 507 427 +598 2 2 29 1 427 500 482 +599 2 2 29 1 427 502 500 +600 2 2 29 1 427 507 502 +601 2 2 29 1 428 515 429 +602 2 2 29 1 429 515 430 +603 2 2 29 1 432 488 433 +604 2 2 29 1 433 504 445 +605 2 2 29 1 445 508 433 +606 2 2 29 1 433 508 478 +607 2 2 29 1 488 504 433 +608 2 2 29 1 435 516 434 +609 2 2 29 1 459 487 435 +610 2 2 29 1 479 490 436 +611 2 2 29 1 438 495 437 +612 2 2 29 1 495 506 437 +613 2 2 29 1 439 472 438 +614 2 2 29 1 472 489 438 +615 2 2 29 1 489 495 438 +616 2 2 29 1 440 463 439 +617 2 2 29 1 463 471 439 +618 2 2 29 1 471 472 439 +619 2 2 29 1 443 495 489 +620 2 2 29 1 444 508 445 +621 2 2 29 1 446 489 472 +622 2 2 29 1 448 480 469 +623 2 2 29 1 449 462 454 +624 2 2 29 1 450 456 455 +625 2 2 29 1 462 475 454 +626 2 2 29 1 456 468 455 +627 2 2 29 1 473 487 459 +628 2 2 29 1 461 467 460 +629 2 2 29 1 461 525 467 +630 2 2 29 1 461 504 488 +631 2 2 29 1 488 525 461 +632 2 2 29 2 6 778 251 +633 2 2 29 2 252 778 6 +634 2 2 29 2 8 765 233 +635 2 2 29 2 234 765 8 +636 2 2 29 2 216 766 9 +637 2 2 29 2 9 766 269 +638 2 2 29 2 217 733 216 +639 2 2 29 2 733 766 216 +640 2 2 29 2 218 543 217 +641 2 2 29 2 543 733 217 +642 2 2 29 2 219 685 218 +643 2 2 29 2 218 685 543 +644 2 2 29 2 220 536 219 +645 2 2 29 2 536 685 219 +646 2 2 29 2 221 686 220 +647 2 2 29 2 220 686 536 +648 2 2 29 2 222 756 221 +649 2 2 29 2 221 756 686 +650 2 2 29 2 223 530 222 +651 2 2 29 2 530 756 222 +652 2 2 29 2 224 678 223 +653 2 2 29 2 223 678 530 +654 2 2 29 2 225 679 224 +655 2 2 29 2 224 679 678 +656 2 2 29 2 226 526 225 +657 2 2 29 2 526 679 225 +658 2 2 29 2 227 750 226 +659 2 2 29 2 226 750 526 +660 2 2 29 2 228 771 227 +661 2 2 29 2 227 771 750 +662 2 2 29 2 229 534 228 +663 2 2 29 2 534 771 228 +664 2 2 29 2 230 667 229 +665 2 2 29 2 229 667 534 +666 2 2 29 2 231 540 230 +667 2 2 29 2 540 667 230 +668 2 2 29 2 232 688 231 +669 2 2 29 2 231 688 540 +670 2 2 29 2 233 546 232 +671 2 2 29 2 546 688 232 +672 2 2 29 2 233 765 546 +673 2 2 29 2 235 732 234 +674 2 2 29 2 732 765 234 +675 2 2 29 2 236 542 235 +676 2 2 29 2 542 732 235 +677 2 2 29 2 237 548 236 +678 2 2 29 2 236 548 542 +679 2 2 29 2 238 537 237 +680 2 2 29 2 537 548 237 +681 2 2 29 2 239 690 238 +682 2 2 29 2 238 690 537 +683 2 2 29 2 240 531 239 +684 2 2 29 2 531 690 239 +685 2 2 29 2 241 681 240 +686 2 2 29 2 240 681 531 +687 2 2 29 2 242 668 241 +688 2 2 29 2 668 681 241 +689 2 2 29 2 243 528 242 +690 2 2 29 2 528 668 242 +691 2 2 29 2 244 663 243 +692 2 2 29 2 243 663 528 +693 2 2 29 2 245 722 244 +694 2 2 29 2 244 722 663 +695 2 2 29 2 246 532 245 +696 2 2 29 2 532 722 245 +697 2 2 29 2 247 664 246 +698 2 2 29 2 246 664 532 +699 2 2 29 2 248 538 247 +700 2 2 29 2 538 664 247 +701 2 2 29 2 249 687 248 +702 2 2 29 2 248 687 538 +703 2 2 29 2 250 544 249 +704 2 2 29 2 544 687 249 +705 2 2 29 2 251 777 250 +706 2 2 29 2 250 777 544 +707 2 2 29 2 251 778 777 +708 2 2 29 2 253 772 252 +709 2 2 29 2 252 772 547 +710 2 2 29 2 547 778 252 +711 2 2 29 2 254 541 253 +712 2 2 29 2 541 772 253 +713 2 2 29 2 255 735 254 +714 2 2 29 2 254 735 541 +715 2 2 29 2 256 535 255 +716 2 2 29 2 535 735 255 +717 2 2 29 2 257 682 256 +718 2 2 29 2 256 682 535 +719 2 2 29 2 258 683 257 +720 2 2 29 2 257 683 682 +721 2 2 29 2 259 529 258 +722 2 2 29 2 529 683 258 +723 2 2 29 2 260 671 259 +724 2 2 29 2 259 671 529 +725 2 2 29 2 261 672 260 +726 2 2 29 2 260 672 671 +727 2 2 29 2 262 527 261 +728 2 2 29 2 527 672 261 +729 2 2 29 2 263 674 262 +730 2 2 29 2 262 674 527 +731 2 2 29 2 264 673 263 +732 2 2 29 2 673 674 263 +733 2 2 29 2 265 533 264 +734 2 2 29 2 533 673 264 +735 2 2 29 2 266 677 265 +736 2 2 29 2 265 677 533 +737 2 2 29 2 267 539 266 +738 2 2 29 2 539 677 266 +739 2 2 29 2 268 739 267 +740 2 2 29 2 267 739 539 +741 2 2 29 2 269 545 268 +742 2 2 29 2 545 739 268 +743 2 2 29 2 269 766 545 +744 2 2 29 2 526 750 654 +745 2 2 29 2 654 762 526 +746 2 2 29 2 526 680 679 +747 2 2 29 2 526 762 680 +748 2 2 29 2 527 755 672 +749 2 2 29 2 674 676 527 +750 2 2 29 2 676 755 527 +751 2 2 29 2 663 776 528 +752 2 2 29 2 528 669 668 +753 2 2 29 2 528 776 669 +754 2 2 29 2 671 737 529 +755 2 2 29 2 529 730 683 +756 2 2 29 2 529 737 730 +757 2 2 29 2 678 758 530 +758 2 2 29 2 530 759 756 +759 2 2 29 2 758 759 530 +760 2 2 29 2 681 725 531 +761 2 2 29 2 531 713 690 +762 2 2 29 2 531 725 713 +763 2 2 29 2 664 770 532 +764 2 2 29 2 532 748 722 +765 2 2 29 2 532 770 748 +766 2 2 29 2 533 774 673 +767 2 2 29 2 677 700 533 +768 2 2 29 2 700 774 533 +769 2 2 29 2 534 657 655 +770 2 2 29 2 655 666 534 +771 2 2 29 2 534 667 657 +772 2 2 29 2 666 771 534 +773 2 2 29 2 682 764 535 +774 2 2 29 2 727 735 535 +775 2 2 29 2 535 764 727 +776 2 2 29 2 536 715 685 +777 2 2 29 2 686 749 536 +778 2 2 29 2 536 749 715 +779 2 2 29 2 537 549 548 +780 2 2 29 2 537 550 549 +781 2 2 29 2 537 690 550 +782 2 2 29 2 662 664 538 +783 2 2 29 2 538 754 662 +784 2 2 29 2 687 754 538 +785 2 2 29 2 539 742 677 +786 2 2 29 2 739 775 539 +787 2 2 29 2 539 775 742 +788 2 2 29 2 540 745 667 +789 2 2 29 2 688 721 540 +790 2 2 29 2 721 745 540 +791 2 2 29 2 541 735 659 +792 2 2 29 2 659 740 541 +793 2 2 29 2 740 772 541 +794 2 2 29 2 548 691 542 +795 2 2 29 2 542 691 689 +796 2 2 29 2 689 732 542 +797 2 2 29 2 685 757 543 +798 2 2 29 2 543 763 733 +799 2 2 29 2 757 763 543 +800 2 2 29 2 544 780 687 +801 2 2 29 2 544 767 731 +802 2 2 29 2 731 780 544 +803 2 2 29 2 544 777 767 +804 2 2 29 2 665 739 545 +805 2 2 29 2 545 763 665 +806 2 2 29 2 733 763 545 +807 2 2 29 2 545 766 733 +808 2 2 29 2 546 689 688 +809 2 2 29 2 546 732 689 +810 2 2 29 2 546 765 732 +811 2 2 29 2 547 772 767 +812 2 2 29 2 767 777 547 +813 2 2 29 2 777 778 547 +814 2 2 29 2 549 691 548 +815 2 2 29 2 550 551 549 +816 2 2 29 2 551 607 549 +817 2 2 29 2 607 691 549 +818 2 2 29 2 550 552 551 +819 2 2 29 2 550 713 552 +820 2 2 29 2 690 713 550 +821 2 2 29 2 552 553 551 +822 2 2 29 2 553 692 551 +823 2 2 29 2 551 692 607 +824 2 2 29 2 552 554 553 +825 2 2 29 2 552 619 554 +826 2 2 29 2 552 713 619 +827 2 2 29 2 554 555 553 +828 2 2 29 2 555 593 553 +829 2 2 29 2 593 692 553 +830 2 2 29 2 554 556 555 +831 2 2 29 2 554 693 556 +832 2 2 29 2 619 693 554 +833 2 2 29 2 556 557 555 +834 2 2 29 2 557 694 555 +835 2 2 29 2 555 694 593 +836 2 2 29 2 556 558 557 +837 2 2 29 2 556 586 558 +838 2 2 29 2 556 693 586 +839 2 2 29 2 558 559 557 +840 2 2 29 2 559 576 557 +841 2 2 29 2 576 694 557 +842 2 2 29 2 558 560 559 +843 2 2 29 2 558 719 560 +844 2 2 29 2 586 719 558 +845 2 2 29 2 560 561 559 +846 2 2 29 2 561 712 559 +847 2 2 29 2 559 712 576 +848 2 2 29 2 560 562 561 +849 2 2 29 2 560 701 562 +850 2 2 29 2 560 719 701 +851 2 2 29 2 562 563 561 +852 2 2 29 2 563 697 561 +853 2 2 29 2 697 712 561 +854 2 2 29 2 562 564 563 +855 2 2 29 2 562 566 564 +856 2 2 29 2 562 701 566 +857 2 2 29 2 564 565 563 +858 2 2 29 2 565 571 563 +859 2 2 29 2 571 697 563 +860 2 2 29 2 564 706 565 +861 2 2 29 2 566 567 564 +862 2 2 29 2 567 706 564 +863 2 2 29 2 565 572 571 +864 2 2 29 2 565 578 572 +865 2 2 29 2 565 706 578 +866 2 2 29 2 566 568 567 +867 2 2 29 2 566 704 568 +868 2 2 29 2 701 704 566 +869 2 2 29 2 568 569 567 +870 2 2 29 2 569 645 567 +871 2 2 29 2 645 706 567 +872 2 2 29 2 568 570 569 +873 2 2 29 2 568 573 570 +874 2 2 29 2 568 704 573 +875 2 2 29 2 570 703 569 +876 2 2 29 2 569 711 645 +877 2 2 29 2 703 711 569 +878 2 2 29 2 573 574 570 +879 2 2 29 2 574 575 570 +880 2 2 29 2 575 703 570 +881 2 2 29 2 572 584 571 +882 2 2 29 2 584 594 571 +883 2 2 29 2 594 697 571 +884 2 2 29 2 578 579 572 +885 2 2 29 2 579 707 572 +886 2 2 29 2 572 707 584 +887 2 2 29 2 573 585 574 +888 2 2 29 2 573 609 585 +889 2 2 29 2 573 704 609 +890 2 2 29 2 574 577 575 +891 2 2 29 2 574 699 577 +892 2 2 29 2 585 699 574 +893 2 2 29 2 577 587 575 +894 2 2 29 2 587 588 575 +895 2 2 29 2 588 703 575 +896 2 2 29 2 576 729 694 +897 2 2 29 2 712 723 576 +898 2 2 29 2 723 729 576 +899 2 2 29 2 577 589 587 +900 2 2 29 2 577 597 589 +901 2 2 29 2 577 699 597 +902 2 2 29 2 578 580 579 +903 2 2 29 2 578 705 580 +904 2 2 29 2 578 706 705 +905 2 2 29 2 580 581 579 +906 2 2 29 2 581 582 579 +907 2 2 29 2 582 707 579 +908 2 2 29 2 580 590 581 +909 2 2 29 2 580 598 590 +910 2 2 29 2 580 705 598 +911 2 2 29 2 581 583 582 +912 2 2 29 2 581 698 583 +913 2 2 29 2 590 698 581 +914 2 2 29 2 583 591 582 +915 2 2 29 2 591 714 582 +916 2 2 29 2 582 714 707 +917 2 2 29 2 583 592 591 +918 2 2 29 2 583 599 592 +919 2 2 29 2 583 698 599 +920 2 2 29 2 584 595 594 +921 2 2 29 2 584 710 595 +922 2 2 29 2 707 710 584 +923 2 2 29 2 609 610 585 +924 2 2 29 2 610 717 585 +925 2 2 29 2 585 717 699 +926 2 2 29 2 693 738 586 +927 2 2 29 2 709 719 586 +928 2 2 29 2 586 738 709 +929 2 2 29 2 587 600 588 +930 2 2 29 2 589 708 587 +931 2 2 29 2 587 708 600 +932 2 2 29 2 600 601 588 +933 2 2 29 2 601 628 588 +934 2 2 29 2 628 703 588 +935 2 2 29 2 597 602 589 +936 2 2 29 2 602 608 589 +937 2 2 29 2 608 708 589 +938 2 2 29 2 598 603 590 +939 2 2 29 2 603 716 590 +940 2 2 29 2 590 716 698 +941 2 2 29 2 592 611 591 +942 2 2 29 2 611 622 591 +943 2 2 29 2 622 714 591 +944 2 2 29 2 599 604 592 +945 2 2 29 2 604 702 592 +946 2 2 29 2 592 702 611 +947 2 2 29 2 593 753 692 +948 2 2 29 2 694 747 593 +949 2 2 29 2 747 753 593 +950 2 2 29 2 595 596 594 +951 2 2 29 2 596 696 594 +952 2 2 29 2 696 697 594 +953 2 2 29 2 595 605 596 +954 2 2 29 2 595 606 605 +955 2 2 29 2 595 710 606 +956 2 2 29 2 605 617 596 +957 2 2 29 2 617 620 596 +958 2 2 29 2 620 696 596 +959 2 2 29 2 597 614 602 +960 2 2 29 2 597 618 614 +961 2 2 29 2 597 699 618 +962 2 2 29 2 598 613 603 +963 2 2 29 2 598 720 613 +964 2 2 29 2 705 720 598 +965 2 2 29 2 599 624 604 +966 2 2 29 2 599 643 624 +967 2 2 29 2 599 698 643 +968 2 2 29 2 600 634 601 +969 2 2 29 2 600 718 634 +970 2 2 29 2 708 718 600 +971 2 2 29 2 601 751 628 +972 2 2 29 2 634 635 601 +973 2 2 29 2 635 751 601 +974 2 2 29 2 602 612 608 +975 2 2 29 2 602 695 612 +976 2 2 29 2 614 695 602 +977 2 2 29 2 613 615 603 +978 2 2 29 2 615 616 603 +979 2 2 29 2 616 716 603 +980 2 2 29 2 624 641 604 +981 2 2 29 2 641 642 604 +982 2 2 29 2 642 702 604 +983 2 2 29 2 606 638 605 +984 2 2 29 2 605 779 617 +985 2 2 29 2 638 779 605 +986 2 2 29 2 606 736 638 +987 2 2 29 2 710 726 606 +988 2 2 29 2 726 736 606 +989 2 2 29 2 607 741 691 +990 2 2 29 2 692 769 607 +991 2 2 29 2 607 769 741 +992 2 2 29 2 612 631 608 +993 2 2 29 2 631 632 608 +994 2 2 29 2 632 708 608 +995 2 2 29 2 609 625 610 +996 2 2 29 2 609 644 625 +997 2 2 29 2 609 704 644 +998 2 2 29 2 625 626 610 +999 2 2 29 2 626 627 610 +1000 2 2 29 2 627 717 610 +1001 2 2 29 2 611 623 622 +1002 2 2 29 2 611 639 623 +1003 2 2 29 2 611 702 639 +1004 2 2 29 2 612 633 631 +1005 2 2 29 2 612 646 633 +1006 2 2 29 2 612 695 646 +1007 2 2 29 2 613 648 615 +1008 2 2 29 2 613 728 648 +1009 2 2 29 2 720 728 613 +1010 2 2 29 2 618 652 614 +1011 2 2 29 2 652 662 614 +1012 2 2 29 2 662 695 614 +1013 2 2 29 2 615 773 616 +1014 2 2 29 2 648 649 615 +1015 2 2 29 2 649 773 615 +1016 2 2 29 2 616 676 675 +1017 2 2 29 2 675 746 616 +1018 2 2 29 2 616 773 676 +1019 2 2 29 2 616 746 716 +1020 2 2 29 2 617 621 620 +1021 2 2 29 2 617 762 621 +1022 2 2 29 2 680 762 617 +1023 2 2 29 2 617 779 680 +1024 2 2 29 2 618 724 652 +1025 2 2 29 2 699 717 618 +1026 2 2 29 2 717 724 618 +1027 2 2 29 2 619 734 693 +1028 2 2 29 2 713 725 619 +1029 2 2 29 2 725 734 619 +1030 2 2 29 2 621 629 620 +1031 2 2 29 2 629 723 620 +1032 2 2 29 2 620 723 696 +1033 2 2 29 2 621 630 629 +1034 2 2 29 2 621 654 630 +1035 2 2 29 2 621 762 654 +1036 2 2 29 2 623 640 622 +1037 2 2 29 2 640 726 622 +1038 2 2 29 2 622 726 714 +1039 2 2 29 2 639 749 623 +1040 2 2 29 2 623 647 640 +1041 2 2 29 2 623 749 647 +1042 2 2 29 2 624 700 641 +1043 2 2 29 2 643 653 624 +1044 2 2 29 2 653 700 624 +1045 2 2 29 2 625 636 626 +1046 2 2 29 2 625 709 636 +1047 2 2 29 2 644 709 625 +1048 2 2 29 2 626 650 627 +1049 2 2 29 2 636 761 626 +1050 2 2 29 2 626 761 650 +1051 2 2 29 2 650 651 627 +1052 2 2 29 2 651 724 627 +1053 2 2 29 2 627 724 717 +1054 2 2 29 2 628 711 703 +1055 2 2 29 2 628 728 711 +1056 2 2 29 2 628 751 728 +1057 2 2 29 2 630 637 629 +1058 2 2 29 2 637 729 629 +1059 2 2 29 2 629 729 723 +1060 2 2 29 2 630 655 637 +1061 2 2 29 2 654 666 630 +1062 2 2 29 2 630 666 655 +1063 2 2 29 2 631 727 632 +1064 2 2 29 2 633 659 631 +1065 2 2 29 2 659 727 631 +1066 2 2 29 2 632 718 708 +1067 2 2 29 2 632 764 718 +1068 2 2 29 2 727 764 632 +1069 2 2 29 2 646 731 633 +1070 2 2 29 2 633 740 659 +1071 2 2 29 2 731 740 633 +1072 2 2 29 2 634 730 635 +1073 2 2 29 2 634 718 684 +1074 2 2 29 2 684 730 634 +1075 2 2 29 2 730 737 635 +1076 2 2 29 2 737 760 635 +1077 2 2 29 2 635 760 751 +1078 2 2 29 2 709 738 636 +1079 2 2 29 2 738 743 636 +1080 2 2 29 2 743 761 636 +1081 2 2 29 2 655 656 637 +1082 2 2 29 2 656 747 637 +1083 2 2 29 2 637 747 729 +1084 2 2 29 2 736 758 638 +1085 2 2 29 2 758 768 638 +1086 2 2 29 2 768 779 638 +1087 2 2 29 2 702 752 639 +1088 2 2 29 2 715 749 639 +1089 2 2 29 2 639 752 715 +1090 2 2 29 2 647 759 640 +1091 2 2 29 2 640 736 726 +1092 2 2 29 2 640 759 736 +1093 2 2 29 2 641 660 642 +1094 2 2 29 2 641 742 660 +1095 2 2 29 2 700 742 641 +1096 2 2 29 2 660 661 642 +1097 2 2 29 2 661 752 642 +1098 2 2 29 2 642 752 702 +1099 2 2 29 2 643 746 653 +1100 2 2 29 2 698 716 643 +1101 2 2 29 2 716 746 643 +1102 2 2 29 2 644 704 701 +1103 2 2 29 2 701 719 644 +1104 2 2 29 2 644 719 709 +1105 2 2 29 2 705 706 645 +1106 2 2 29 2 645 720 705 +1107 2 2 29 2 711 720 645 +1108 2 2 29 2 695 754 646 +1109 2 2 29 2 646 780 731 +1110 2 2 29 2 754 780 646 +1111 2 2 29 2 647 749 686 +1112 2 2 29 2 686 756 647 +1113 2 2 29 2 756 759 647 +1114 2 2 29 2 648 760 649 +1115 2 2 29 2 728 751 648 +1116 2 2 29 2 751 760 648 +1117 2 2 29 2 744 755 649 +1118 2 2 29 2 649 760 744 +1119 2 2 29 2 755 773 649 +1120 2 2 29 2 650 663 651 +1121 2 2 29 2 650 776 663 +1122 2 2 29 2 761 776 650 +1123 2 2 29 2 663 722 651 +1124 2 2 29 2 722 748 651 +1125 2 2 29 2 651 748 724 +1126 2 2 29 2 652 770 662 +1127 2 2 29 2 724 748 652 +1128 2 2 29 2 748 770 652 +1129 2 2 29 2 653 746 675 +1130 2 2 29 2 675 774 653 +1131 2 2 29 2 653 774 700 +1132 2 2 29 2 654 750 666 +1133 2 2 29 2 655 657 656 +1134 2 2 29 2 657 658 656 +1135 2 2 29 2 658 753 656 +1136 2 2 29 2 656 753 747 +1137 2 2 29 2 657 745 658 +1138 2 2 29 2 667 745 657 +1139 2 2 29 2 745 769 658 +1140 2 2 29 2 658 769 753 +1141 2 2 29 2 659 735 727 +1142 2 2 29 2 660 665 661 +1143 2 2 29 2 660 775 665 +1144 2 2 29 2 742 775 660 +1145 2 2 29 2 665 763 661 +1146 2 2 29 2 661 757 752 +1147 2 2 29 2 661 763 757 +1148 2 2 29 2 662 770 664 +1149 2 2 29 2 662 754 695 +1150 2 2 29 2 665 775 739 +1151 2 2 29 2 750 771 666 +1152 2 2 29 2 669 670 668 +1153 2 2 29 2 670 681 668 +1154 2 2 29 2 669 743 670 +1155 2 2 29 2 669 761 743 +1156 2 2 29 2 669 776 761 +1157 2 2 29 2 670 725 681 +1158 2 2 29 2 670 734 725 +1159 2 2 29 2 670 743 734 +1160 2 2 29 2 672 744 671 +1161 2 2 29 2 671 744 737 +1162 2 2 29 2 672 755 744 +1163 2 2 29 2 673 675 674 +1164 2 2 29 2 673 774 675 +1165 2 2 29 2 675 676 674 +1166 2 2 29 2 676 773 755 +1167 2 2 29 2 677 742 700 +1168 2 2 29 2 679 768 678 +1169 2 2 29 2 678 768 758 +1170 2 2 29 2 680 768 679 +1171 2 2 29 2 680 779 768 +1172 2 2 29 2 683 684 682 +1173 2 2 29 2 684 764 682 +1174 2 2 29 2 683 730 684 +1175 2 2 29 2 718 764 684 +1176 2 2 29 2 715 757 685 +1177 2 2 29 2 687 780 754 +1178 2 2 29 2 689 721 688 +1179 2 2 29 2 691 741 689 +1180 2 2 29 2 689 741 721 +1181 2 2 29 2 753 769 692 +1182 2 2 29 2 734 738 693 +1183 2 2 29 2 729 747 694 +1184 2 2 29 2 696 712 697 +1185 2 2 29 2 696 723 712 +1186 2 2 29 2 707 714 710 +1187 2 2 29 2 714 726 710 +1188 2 2 29 2 711 728 720 +1189 2 2 29 2 752 757 715 +1190 2 2 29 2 741 769 721 +1191 2 2 29 2 721 769 745 +1192 2 2 29 2 731 767 740 +1193 2 2 29 2 734 743 738 +1194 2 2 29 2 736 759 758 +1195 2 2 29 2 744 760 737 +1196 2 2 29 2 767 772 740 +1197 2 2 29 3 112 1309 7 +1198 2 2 29 3 7 1309 215 +1199 2 2 29 3 8 1310 136 +1200 2 2 29 3 233 1310 8 +1201 2 2 29 3 161 1308 9 +1202 2 2 29 3 9 1308 216 +1203 2 2 29 3 10 1311 137 +1204 2 2 29 3 198 1311 10 +1205 2 2 29 3 113 1114 112 +1206 2 2 29 3 1114 1309 112 +1207 2 2 29 3 114 1306 113 +1208 2 2 29 3 113 1306 1114 +1209 2 2 29 3 115 808 114 +1210 2 2 29 3 808 1306 114 +1211 2 2 29 3 116 1192 115 +1212 2 2 29 3 115 1192 808 +1213 2 2 29 3 117 792 116 +1214 2 2 29 3 792 1192 116 +1215 2 2 29 3 118 1191 117 +1216 2 2 29 3 117 1191 792 +1217 2 2 29 3 119 1168 118 +1218 2 2 29 3 1168 1191 118 +1219 2 2 29 3 120 788 119 +1220 2 2 29 3 788 1168 119 +1221 2 2 29 3 121 1304 120 +1222 2 2 29 3 120 1304 788 +1223 2 2 29 3 122 806 121 +1224 2 2 29 3 806 1304 121 +1225 2 2 29 3 123 1154 122 +1226 2 2 29 3 122 1154 806 +1227 2 2 29 3 124 782 123 +1228 2 2 29 3 782 1154 123 +1229 2 2 29 3 125 1153 124 +1230 2 2 29 3 124 1153 782 +1231 2 2 29 3 126 804 125 +1232 2 2 29 3 804 1153 125 +1233 2 2 29 3 127 1163 126 +1234 2 2 29 3 126 1163 804 +1235 2 2 29 3 128 781 127 +1236 2 2 29 3 781 1163 127 +1237 2 2 29 3 129 1263 128 +1238 2 2 29 3 128 1263 781 +1239 2 2 29 3 130 1293 129 +1240 2 2 29 3 129 1293 1263 +1241 2 2 29 3 131 789 130 +1242 2 2 29 3 789 1293 130 +1243 2 2 29 3 132 1102 131 +1244 2 2 29 3 131 1102 789 +1245 2 2 29 3 133 1307 132 +1246 2 2 29 3 132 1307 1102 +1247 2 2 29 3 134 797 133 +1248 2 2 29 3 797 1307 133 +1249 2 2 29 3 135 1305 134 +1250 2 2 29 3 134 1305 797 +1251 2 2 29 3 136 1095 135 +1252 2 2 29 3 1095 1305 135 +1253 2 2 29 3 136 1310 1095 +1254 2 2 29 3 137 1277 138 +1255 2 2 29 3 137 1311 1277 +1256 2 2 29 3 138 1292 139 +1257 2 2 29 3 1277 1292 138 +1258 2 2 29 3 139 798 140 +1259 2 2 29 3 139 1292 798 +1260 2 2 29 3 140 1302 141 +1261 2 2 29 3 798 1302 140 +1262 2 2 29 3 141 1312 142 +1263 2 2 29 3 141 1302 1074 +1264 2 2 29 3 1074 1312 141 +1265 2 2 29 3 142 790 143 +1266 2 2 29 3 142 1312 790 +1267 2 2 29 3 143 1289 144 +1268 2 2 29 3 790 1289 143 +1269 2 2 29 3 144 1164 145 +1270 2 2 29 3 144 1289 1164 +1271 2 2 29 3 145 784 146 +1272 2 2 29 3 145 1164 784 +1273 2 2 29 3 146 1158 147 +1274 2 2 29 3 784 1158 146 +1275 2 2 29 3 147 805 148 +1276 2 2 29 3 147 1158 805 +1277 2 2 29 3 148 1151 149 +1278 2 2 29 3 805 1151 148 +1279 2 2 29 3 149 786 150 +1280 2 2 29 3 149 1151 786 +1281 2 2 29 3 150 1300 151 +1282 2 2 29 3 786 1300 150 +1283 2 2 29 3 151 803 152 +1284 2 2 29 3 151 1300 803 +1285 2 2 29 3 152 1291 153 +1286 2 2 29 3 803 1291 152 +1287 2 2 29 3 153 785 154 +1288 2 2 29 3 153 1291 785 +1289 2 2 29 3 154 1166 155 +1290 2 2 29 3 785 1166 154 +1291 2 2 29 3 155 1189 156 +1292 2 2 29 3 1166 1189 155 +1293 2 2 29 3 156 791 157 +1294 2 2 29 3 156 1189 791 +1295 2 2 29 3 157 1295 158 +1296 2 2 29 3 791 1295 157 +1297 2 2 29 3 158 807 159 +1298 2 2 29 3 158 1295 807 +1299 2 2 29 3 159 1299 160 +1300 2 2 29 3 807 1299 159 +1301 2 2 29 3 160 1252 161 +1302 2 2 29 3 160 1299 1252 +1303 2 2 29 3 1252 1308 161 +1304 2 2 29 3 199 811 198 +1305 2 2 29 3 811 1311 198 +1306 2 2 29 3 200 1106 199 +1307 2 2 29 3 199 1106 811 +1308 2 2 29 3 201 802 200 +1309 2 2 29 3 802 1106 200 +1310 2 2 29 3 202 1182 201 +1311 2 2 29 3 201 1182 802 +1312 2 2 29 3 203 1183 202 +1313 2 2 29 3 202 1183 1182 +1314 2 2 29 3 204 795 203 +1315 2 2 29 3 795 1183 203 +1316 2 2 29 3 205 1204 204 +1317 2 2 29 3 204 1204 795 +1318 2 2 29 3 206 1205 205 +1319 2 2 29 3 205 1205 1204 +1320 2 2 29 3 207 783 206 +1321 2 2 29 3 783 1205 206 +1322 2 2 29 3 208 1201 207 +1323 2 2 29 3 207 1201 783 +1324 2 2 29 3 209 1199 208 +1325 2 2 29 3 1199 1201 208 +1326 2 2 29 3 210 796 209 +1327 2 2 29 3 796 1199 209 +1328 2 2 29 3 211 1120 210 +1329 2 2 29 3 210 1120 796 +1330 2 2 29 3 212 1119 211 +1331 2 2 29 3 1119 1120 211 +1332 2 2 29 3 213 800 212 +1333 2 2 29 3 800 1119 212 +1334 2 2 29 3 214 1112 213 +1335 2 2 29 3 213 1112 800 +1336 2 2 29 3 215 809 214 +1337 2 2 29 3 809 1112 214 +1338 2 2 29 3 215 1309 809 +1339 2 2 29 3 216 812 217 +1340 2 2 29 3 216 1308 812 +1341 2 2 29 3 217 1238 218 +1342 2 2 29 3 812 1238 217 +1343 2 2 29 3 218 799 219 +1344 2 2 29 3 218 1238 799 +1345 2 2 29 3 219 1243 220 +1346 2 2 29 3 799 1243 219 +1347 2 2 29 3 220 1261 221 +1348 2 2 29 3 1243 1261 220 +1349 2 2 29 3 221 793 222 +1350 2 2 29 3 221 1261 793 +1351 2 2 29 3 222 1240 223 +1352 2 2 29 3 793 1240 222 +1353 2 2 29 3 223 1260 224 +1354 2 2 29 3 1240 1260 223 +1355 2 2 29 3 224 787 225 +1356 2 2 29 3 224 1260 787 +1357 2 2 29 3 225 1232 226 +1358 2 2 29 3 787 1232 225 +1359 2 2 29 3 226 1259 227 +1360 2 2 29 3 1232 1259 226 +1361 2 2 29 3 227 794 228 +1362 2 2 29 3 227 1259 794 +1363 2 2 29 3 228 1136 229 +1364 2 2 29 3 794 1136 228 +1365 2 2 29 3 229 1092 230 +1366 2 2 29 3 229 1136 1092 +1367 2 2 29 3 230 801 231 +1368 2 2 29 3 230 1092 801 +1369 2 2 29 3 231 813 232 +1370 2 2 29 3 801 813 231 +1371 2 2 29 3 232 810 233 +1372 2 2 29 3 232 813 810 +1373 2 2 29 3 810 1310 233 +1374 2 2 29 3 781 1303 1163 +1375 2 2 29 3 1263 1318 781 +1376 2 2 29 3 781 1318 1303 +1377 2 2 29 3 1055 1154 782 +1378 2 2 29 3 782 1286 1055 +1379 2 2 29 3 1153 1286 782 +1380 2 2 29 3 1201 1273 783 +1381 2 2 29 3 783 1274 1205 +1382 2 2 29 3 1273 1274 783 +1383 2 2 29 3 784 1316 1158 +1384 2 2 29 3 1164 1294 784 +1385 2 2 29 3 1294 1316 784 +1386 2 2 29 3 1061 1155 785 +1387 2 2 29 3 785 1291 1061 +1388 2 2 29 3 1155 1285 785 +1389 2 2 29 3 785 1285 1166 +1390 2 2 29 3 786 1078 1071 +1391 2 2 29 3 1071 1300 786 +1392 2 2 29 3 786 1283 1078 +1393 2 2 29 3 1151 1283 786 +1394 2 2 29 3 1079 1232 787 +1395 2 2 29 3 787 1244 1079 +1396 2 2 29 3 787 1260 1244 +1397 2 2 29 3 788 1087 1083 +1398 2 2 29 3 1083 1297 788 +1399 2 2 29 3 788 1304 1087 +1400 2 2 29 3 788 1297 1168 +1401 2 2 29 3 1102 1288 789 +1402 2 2 29 3 1288 1314 789 +1403 2 2 29 3 789 1314 1293 +1404 2 2 29 3 790 1312 1275 +1405 2 2 29 3 1275 1313 790 +1406 2 2 29 3 790 1313 1289 +1407 2 2 29 3 791 1081 1067 +1408 2 2 29 3 1067 1295 791 +1409 2 2 29 3 791 1284 1081 +1410 2 2 29 3 1189 1284 791 +1411 2 2 29 3 1068 1192 792 +1412 2 2 29 3 792 1290 1068 +1413 2 2 29 3 1191 1290 792 +1414 2 2 29 3 1077 1240 793 +1415 2 2 29 3 793 1247 1077 +1416 2 2 29 3 793 1261 1247 +1417 2 2 29 3 794 1137 1136 +1418 2 2 29 3 794 1258 1137 +1419 2 2 29 3 794 1259 1258 +1420 2 2 29 3 795 1278 1183 +1421 2 2 29 3 1204 1276 795 +1422 2 2 29 3 1276 1278 795 +1423 2 2 29 3 1120 1262 796 +1424 2 2 29 3 796 1200 1199 +1425 2 2 29 3 796 1262 1200 +1426 2 2 29 3 1096 1105 797 +1427 2 2 29 3 797 1305 1096 +1428 2 2 29 3 797 1105 1101 +1429 2 2 29 3 1101 1307 797 +1430 2 2 29 3 798 1064 1062 +1431 2 2 29 3 1062 1072 798 +1432 2 2 29 3 798 1292 1064 +1433 2 2 29 3 1072 1302 798 +1434 2 2 29 3 799 1242 1076 +1435 2 2 29 3 1076 1243 799 +1436 2 2 29 3 1238 1242 799 +1437 2 2 29 3 1112 1117 800 +1438 2 2 29 3 1117 1118 800 +1439 2 2 29 3 1118 1119 800 +1440 2 2 29 3 801 814 813 +1441 2 2 29 3 801 815 814 +1442 2 2 29 3 801 1092 815 +1443 2 2 29 3 802 1281 1106 +1444 2 2 29 3 1182 1282 802 +1445 2 2 29 3 802 1282 1281 +1446 2 2 29 3 1059 1061 803 +1447 2 2 29 3 803 1071 1059 +1448 2 2 29 3 1061 1291 803 +1449 2 2 29 3 803 1300 1071 +1450 2 2 29 3 1127 1153 804 +1451 2 2 29 3 804 1298 1127 +1452 2 2 29 3 1163 1298 804 +1453 2 2 29 3 805 1315 1151 +1454 2 2 29 3 1158 1287 805 +1455 2 2 29 3 1287 1315 805 +1456 2 2 29 3 806 1088 1087 +1457 2 2 29 3 1087 1304 806 +1458 2 2 29 3 806 1296 1088 +1459 2 2 29 3 1154 1296 806 +1460 2 2 29 3 807 1067 1065 +1461 2 2 29 3 1065 1070 807 +1462 2 2 29 3 807 1295 1067 +1463 2 2 29 3 1070 1299 807 +1464 2 2 29 3 808 1264 1115 +1465 2 2 29 3 1115 1306 808 +1466 2 2 29 3 1192 1301 808 +1467 2 2 29 3 808 1301 1264 +1468 2 2 29 3 809 1113 1112 +1469 2 2 29 3 809 1114 1113 +1470 2 2 29 3 809 1309 1114 +1471 2 2 29 3 813 1094 810 +1472 2 2 29 3 1094 1095 810 +1473 2 2 29 3 1095 1310 810 +1474 2 2 29 3 1106 1280 811 +1475 2 2 29 3 811 1280 1277 +1476 2 2 29 3 1277 1311 811 +1477 2 2 29 3 1075 1238 812 +1478 2 2 29 3 812 1252 1075 +1479 2 2 29 3 812 1308 1252 +1480 2 2 29 3 814 1094 813 +1481 2 2 29 3 815 816 814 +1482 2 2 29 3 816 1104 814 +1483 2 2 29 3 814 1104 1094 +1484 2 2 29 3 815 817 816 +1485 2 2 29 3 815 1190 817 +1486 2 2 29 3 1092 1190 815 +1487 2 2 29 3 817 818 816 +1488 2 2 29 3 818 986 816 +1489 2 2 29 3 986 1104 816 +1490 2 2 29 3 817 819 818 +1491 2 2 29 3 817 989 819 +1492 2 2 29 3 817 1190 989 +1493 2 2 29 3 819 820 818 +1494 2 2 29 3 820 1097 818 +1495 2 2 29 3 818 1097 986 +1496 2 2 29 3 819 821 820 +1497 2 2 29 3 819 1195 821 +1498 2 2 29 3 989 1195 819 +1499 2 2 29 3 821 822 820 +1500 2 2 29 3 822 891 820 +1501 2 2 29 3 891 1097 820 +1502 2 2 29 3 821 823 822 +1503 2 2 29 3 821 878 823 +1504 2 2 29 3 821 1195 878 +1505 2 2 29 3 823 824 822 +1506 2 2 29 3 824 1230 822 +1507 2 2 29 3 822 1230 891 +1508 2 2 29 3 823 825 824 +1509 2 2 29 3 823 1185 825 +1510 2 2 29 3 878 1185 823 +1511 2 2 29 3 825 826 824 +1512 2 2 29 3 826 866 824 +1513 2 2 29 3 866 1230 824 +1514 2 2 29 3 825 827 826 +1515 2 2 29 3 825 858 827 +1516 2 2 29 3 825 1185 858 +1517 2 2 29 3 827 828 826 +1518 2 2 29 3 828 1152 826 +1519 2 2 29 3 826 1152 866 +1520 2 2 29 3 827 829 828 +1521 2 2 29 3 827 1228 829 +1522 2 2 29 3 858 1228 827 +1523 2 2 29 3 829 830 828 +1524 2 2 29 3 830 863 828 +1525 2 2 29 3 863 1152 828 +1526 2 2 29 3 829 831 830 +1527 2 2 29 3 829 1239 831 +1528 2 2 29 3 1228 1239 829 +1529 2 2 29 3 831 832 830 +1530 2 2 29 3 832 1176 830 +1531 2 2 29 3 830 1176 863 +1532 2 2 29 3 831 833 832 +1533 2 2 29 3 831 835 833 +1534 2 2 29 3 831 1239 835 +1535 2 2 29 3 833 834 832 +1536 2 2 29 3 834 1169 832 +1537 2 2 29 3 1169 1176 832 +1538 2 2 29 3 833 836 834 +1539 2 2 29 3 835 1212 833 +1540 2 2 29 3 833 1212 836 +1541 2 2 29 3 836 837 834 +1542 2 2 29 3 837 855 834 +1543 2 2 29 3 855 1169 834 +1544 2 2 29 3 1089 1212 835 +1545 2 2 29 3 835 1235 1089 +1546 2 2 29 3 835 1239 1235 +1547 2 2 29 3 836 838 837 +1548 2 2 29 3 836 1217 838 +1549 2 2 29 3 1212 1217 836 +1550 2 2 29 3 838 839 837 +1551 2 2 29 3 839 1175 837 +1552 2 2 29 3 837 1175 855 +1553 2 2 29 3 838 840 839 +1554 2 2 29 3 838 842 840 +1555 2 2 29 3 838 1217 842 +1556 2 2 29 3 840 841 839 +1557 2 2 29 3 841 1147 839 +1558 2 2 29 3 1147 1175 839 +1559 2 2 29 3 840 843 841 +1560 2 2 29 3 842 1129 840 +1561 2 2 29 3 840 1129 843 +1562 2 2 29 3 843 844 841 +1563 2 2 29 3 844 845 841 +1564 2 2 29 3 845 1147 841 +1565 2 2 29 3 842 1237 1129 +1566 2 2 29 3 1217 1219 842 +1567 2 2 29 3 1219 1237 842 +1568 2 2 29 3 843 1107 844 +1569 2 2 29 3 843 1108 1107 +1570 2 2 29 3 843 1129 1108 +1571 2 2 29 3 844 846 845 +1572 2 2 29 3 844 1161 846 +1573 2 2 29 3 1107 1161 844 +1574 2 2 29 3 846 847 845 +1575 2 2 29 3 847 900 845 +1576 2 2 29 3 900 1147 845 +1577 2 2 29 3 846 848 847 +1578 2 2 29 3 846 849 848 +1579 2 2 29 3 846 1161 849 +1580 2 2 29 3 848 1184 847 +1581 2 2 29 3 847 901 900 +1582 2 2 29 3 847 1184 901 +1583 2 2 29 3 849 850 848 +1584 2 2 29 3 850 852 848 +1585 2 2 29 3 852 1184 848 +1586 2 2 29 3 849 851 850 +1587 2 2 29 3 849 867 851 +1588 2 2 29 3 849 1161 867 +1589 2 2 29 3 851 1203 850 +1590 2 2 29 3 850 853 852 +1591 2 2 29 3 850 1203 853 +1592 2 2 29 3 867 868 851 +1593 2 2 29 3 868 1001 851 +1594 2 2 29 3 1001 1203 851 +1595 2 2 29 3 853 854 852 +1596 2 2 29 3 854 1124 852 +1597 2 2 29 3 1124 1184 852 +1598 2 2 29 3 853 856 854 +1599 2 2 29 3 853 1179 856 +1600 2 2 29 3 853 1203 1179 +1601 2 2 29 3 856 857 854 +1602 2 2 29 3 857 859 854 +1603 2 2 29 3 859 1124 854 +1604 2 2 29 3 855 1170 1169 +1605 2 2 29 3 855 1171 1170 +1606 2 2 29 3 855 1175 1171 +1607 2 2 29 3 856 860 857 +1608 2 2 29 3 856 861 860 +1609 2 2 29 3 856 1179 861 +1610 2 2 29 3 857 1231 859 +1611 2 2 29 3 860 862 857 +1612 2 2 29 3 862 1231 857 +1613 2 2 29 3 1185 1248 858 +1614 2 2 29 3 858 1246 1228 +1615 2 2 29 3 858 1248 1246 +1616 2 2 29 3 859 1125 1124 +1617 2 2 29 3 859 1234 1125 +1618 2 2 29 3 1231 1234 859 +1619 2 2 29 3 861 864 860 +1620 2 2 29 3 860 1196 862 +1621 2 2 29 3 864 1196 860 +1622 2 2 29 3 861 865 864 +1623 2 2 29 3 861 1178 865 +1624 2 2 29 3 861 1179 1178 +1625 2 2 29 3 862 1196 1133 +1626 2 2 29 3 1133 1236 862 +1627 2 2 29 3 862 1236 1231 +1628 2 2 29 3 863 1225 1152 +1629 2 2 29 3 1176 1177 863 +1630 2 2 29 3 1177 1225 863 +1631 2 2 29 3 865 879 864 +1632 2 2 29 3 879 881 864 +1633 2 2 29 3 881 1196 864 +1634 2 2 29 3 865 880 879 +1635 2 2 29 3 865 970 880 +1636 2 2 29 3 865 1178 970 +1637 2 2 29 3 866 1152 1085 +1638 2 2 29 3 1085 1210 866 +1639 2 2 29 3 1210 1230 866 +1640 2 2 29 3 867 869 868 +1641 2 2 29 3 867 992 869 +1642 2 2 29 3 867 1161 992 +1643 2 2 29 3 869 870 868 +1644 2 2 29 3 870 1198 868 +1645 2 2 29 3 868 1198 1001 +1646 2 2 29 3 869 871 870 +1647 2 2 29 3 869 1181 871 +1648 2 2 29 3 992 1181 869 +1649 2 2 29 3 871 872 870 +1650 2 2 29 3 872 873 870 +1651 2 2 29 3 873 1198 870 +1652 2 2 29 3 871 876 872 +1653 2 2 29 3 871 877 876 +1654 2 2 29 3 871 1181 877 +1655 2 2 29 3 872 874 873 +1656 2 2 29 3 872 1157 874 +1657 2 2 29 3 876 1157 872 +1658 2 2 29 3 874 875 873 +1659 2 2 29 3 875 890 873 +1660 2 2 29 3 890 1198 873 +1661 2 2 29 3 874 882 875 +1662 2 2 29 3 874 892 882 +1663 2 2 29 3 874 1157 892 +1664 2 2 29 3 882 883 875 +1665 2 2 29 3 883 1211 875 +1666 2 2 29 3 875 1211 890 +1667 2 2 29 3 877 884 876 +1668 2 2 29 3 884 1187 876 +1669 2 2 29 3 876 1187 1157 +1670 2 2 29 3 877 885 884 +1671 2 2 29 3 877 1180 885 +1672 2 2 29 3 877 1181 1180 +1673 2 2 29 3 878 1251 1185 +1674 2 2 29 3 1195 1254 878 +1675 2 2 29 3 878 1254 1251 +1676 2 2 29 3 880 1202 879 +1677 2 2 29 3 879 886 881 +1678 2 2 29 3 879 1202 886 +1679 2 2 29 3 970 1040 880 +1680 2 2 29 3 1040 1213 880 +1681 2 2 29 3 880 1213 1202 +1682 2 2 29 3 886 887 881 +1683 2 2 29 3 887 1134 881 +1684 2 2 29 3 1134 1196 881 +1685 2 2 29 3 882 893 883 +1686 2 2 29 3 892 1138 882 +1687 2 2 29 3 882 1138 893 +1688 2 2 29 3 893 894 883 +1689 2 2 29 3 894 895 883 +1690 2 2 29 3 895 1211 883 +1691 2 2 29 3 885 888 884 +1692 2 2 29 3 888 964 884 +1693 2 2 29 3 964 1187 884 +1694 2 2 29 3 885 889 888 +1695 2 2 29 3 885 913 889 +1696 2 2 29 3 885 1180 913 +1697 2 2 29 3 886 946 887 +1698 2 2 29 3 886 959 946 +1699 2 2 29 3 886 1202 959 +1700 2 2 29 3 946 947 887 +1701 2 2 29 3 947 948 887 +1702 2 2 29 3 948 1134 887 +1703 2 2 29 3 889 1110 888 +1704 2 2 29 3 888 979 964 +1705 2 2 29 3 888 1110 979 +1706 2 2 29 3 913 914 889 +1707 2 2 29 3 914 915 889 +1708 2 2 29 3 915 1110 889 +1709 2 2 29 3 890 1229 1198 +1710 2 2 29 3 1211 1245 890 +1711 2 2 29 3 890 1245 1229 +1712 2 2 29 3 1084 1099 891 +1713 2 2 29 3 891 1230 1084 +1714 2 2 29 3 891 1099 1097 +1715 2 2 29 3 892 1157 1103 +1716 2 2 29 3 1103 1193 892 +1717 2 2 29 3 892 1193 1138 +1718 2 2 29 3 893 1144 894 +1719 2 2 29 3 1138 1139 893 +1720 2 2 29 3 1139 1144 893 +1721 2 2 29 3 894 896 895 +1722 2 2 29 3 894 897 896 +1723 2 2 29 3 894 1144 897 +1724 2 2 29 3 896 1194 895 +1725 2 2 29 3 1194 1249 895 +1726 2 2 29 3 895 1249 1211 +1727 2 2 29 3 897 898 896 +1728 2 2 29 3 898 899 896 +1729 2 2 29 3 899 1194 896 +1730 2 2 29 3 897 1145 898 +1731 2 2 29 3 897 1144 1090 +1732 2 2 29 3 1090 1145 897 +1733 2 2 29 3 898 957 899 +1734 2 2 29 3 898 960 957 +1735 2 2 29 3 898 1145 960 +1736 2 2 29 3 957 958 899 +1737 2 2 29 3 958 977 899 +1738 2 2 29 3 977 1194 899 +1739 2 2 29 3 901 902 900 +1740 2 2 29 3 902 1173 900 +1741 2 2 29 3 900 1173 1147 +1742 2 2 29 3 901 903 902 +1743 2 2 29 3 901 1036 903 +1744 2 2 29 3 901 1184 1036 +1745 2 2 29 3 903 904 902 +1746 2 2 29 3 904 998 902 +1747 2 2 29 3 998 1173 902 +1748 2 2 29 3 903 905 904 +1749 2 2 29 3 903 1214 905 +1750 2 2 29 3 1036 1214 903 +1751 2 2 29 3 905 906 904 +1752 2 2 29 3 906 1165 904 +1753 2 2 29 3 904 1165 998 +1754 2 2 29 3 905 907 906 +1755 2 2 29 3 905 910 907 +1756 2 2 29 3 905 1214 910 +1757 2 2 29 3 907 908 906 +1758 2 2 29 3 908 909 906 +1759 2 2 29 3 909 1165 906 +1760 2 2 29 3 907 1128 908 +1761 2 2 29 3 910 911 907 +1762 2 2 29 3 911 1128 907 +1763 2 2 29 3 908 962 909 +1764 2 2 29 3 908 980 962 +1765 2 2 29 3 908 1128 980 +1766 2 2 29 3 962 963 909 +1767 2 2 29 3 963 971 909 +1768 2 2 29 3 971 1165 909 +1769 2 2 29 3 910 912 911 +1770 2 2 29 3 910 1227 912 +1771 2 2 29 3 1214 1227 910 +1772 2 2 29 3 912 967 911 +1773 2 2 29 3 967 993 911 +1774 2 2 29 3 993 1128 911 +1775 2 2 29 3 912 968 967 +1776 2 2 29 3 912 1004 968 +1777 2 2 29 3 912 1227 1004 +1778 2 2 29 3 913 1206 914 +1779 2 2 29 3 913 1180 1131 +1780 2 2 29 3 1131 1206 913 +1781 2 2 29 3 914 916 915 +1782 2 2 29 3 914 917 916 +1783 2 2 29 3 914 1206 917 +1784 2 2 29 3 916 1123 915 +1785 2 2 29 3 915 1111 1110 +1786 2 2 29 3 915 1123 1111 +1787 2 2 29 3 917 918 916 +1788 2 2 29 3 918 919 916 +1789 2 2 29 3 919 1123 916 +1790 2 2 29 3 917 1167 918 +1791 2 2 29 3 917 1208 1167 +1792 2 2 29 3 1206 1208 917 +1793 2 2 29 3 918 920 919 +1794 2 2 29 3 918 921 920 +1795 2 2 29 3 918 1167 921 +1796 2 2 29 3 920 965 919 +1797 2 2 29 3 965 984 919 +1798 2 2 29 3 984 1123 919 +1799 2 2 29 3 921 922 920 +1800 2 2 29 3 922 1159 920 +1801 2 2 29 3 920 1159 965 +1802 2 2 29 3 921 923 922 +1803 2 2 29 3 921 969 923 +1804 2 2 29 3 921 1167 969 +1805 2 2 29 3 923 924 922 +1806 2 2 29 3 924 925 922 +1807 2 2 29 3 925 1159 922 +1808 2 2 29 3 923 1197 924 +1809 2 2 29 3 969 996 923 +1810 2 2 29 3 996 1197 923 +1811 2 2 29 3 924 926 925 +1812 2 2 29 3 924 927 926 +1813 2 2 29 3 924 1197 927 +1814 2 2 29 3 926 939 925 +1815 2 2 29 3 939 994 925 +1816 2 2 29 3 994 1159 925 +1817 2 2 29 3 927 928 926 +1818 2 2 29 3 928 1223 926 +1819 2 2 29 3 926 1223 939 +1820 2 2 29 3 927 929 928 +1821 2 2 29 3 927 1221 929 +1822 2 2 29 3 1197 1221 927 +1823 2 2 29 3 929 930 928 +1824 2 2 29 3 930 932 928 +1825 2 2 29 3 932 1223 928 +1826 2 2 29 3 929 931 930 +1827 2 2 29 3 929 935 931 +1828 2 2 29 3 929 1221 935 +1829 2 2 29 3 931 1216 930 +1830 2 2 29 3 930 933 932 +1831 2 2 29 3 930 1216 933 +1832 2 2 29 3 935 936 931 +1833 2 2 29 3 936 937 931 +1834 2 2 29 3 937 1216 931 +1835 2 2 29 3 933 934 932 +1836 2 2 29 3 934 1233 932 +1837 2 2 29 3 932 1233 1223 +1838 2 2 29 3 933 944 934 +1839 2 2 29 3 933 1215 944 +1840 2 2 29 3 933 1216 1215 +1841 2 2 29 3 944 945 934 +1842 2 2 29 3 945 966 934 +1843 2 2 29 3 966 1233 934 +1844 2 2 29 3 935 940 936 +1845 2 2 29 3 935 941 940 +1846 2 2 29 3 935 1221 941 +1847 2 2 29 3 936 938 937 +1848 2 2 29 3 936 1162 938 +1849 2 2 29 3 940 1162 936 +1850 2 2 29 3 938 942 937 +1851 2 2 29 3 942 1209 937 +1852 2 2 29 3 1209 1216 937 +1853 2 2 29 3 938 943 942 +1854 2 2 29 3 938 975 943 +1855 2 2 29 3 938 1162 975 +1856 2 2 29 3 939 995 994 +1857 2 2 29 3 939 1150 995 +1858 2 2 29 3 939 1223 1150 +1859 2 2 29 3 941 1002 940 +1860 2 2 29 3 1002 1006 940 +1861 2 2 29 3 1006 1162 940 +1862 2 2 29 3 941 1226 1002 +1863 2 2 29 3 941 1221 1146 +1864 2 2 29 3 1146 1226 941 +1865 2 2 29 3 943 1007 942 +1866 2 2 29 3 1007 1008 942 +1867 2 2 29 3 1008 1209 942 +1868 2 2 29 3 975 976 943 +1869 2 2 29 3 976 1207 943 +1870 2 2 29 3 943 1207 1007 +1871 2 2 29 3 944 988 945 +1872 2 2 29 3 944 991 988 +1873 2 2 29 3 944 1215 991 +1874 2 2 29 3 945 985 966 +1875 2 2 29 3 945 1222 985 +1876 2 2 29 3 988 1222 945 +1877 2 2 29 3 946 1270 947 +1878 2 2 29 3 959 1012 946 +1879 2 2 29 3 1012 1270 946 +1880 2 2 29 3 947 949 948 +1881 2 2 29 3 947 1269 949 +1882 2 2 29 3 947 1270 1269 +1883 2 2 29 3 949 950 948 +1884 2 2 29 3 950 1132 948 +1885 2 2 29 3 1132 1134 948 +1886 2 2 29 3 949 951 950 +1887 2 2 29 3 949 1013 951 +1888 2 2 29 3 949 1269 1013 +1889 2 2 29 3 951 952 950 +1890 2 2 29 3 952 953 950 +1891 2 2 29 3 953 1132 950 +1892 2 2 29 3 951 956 952 +1893 2 2 29 3 951 1267 956 +1894 2 2 29 3 1013 1267 951 +1895 2 2 29 3 952 954 953 +1896 2 2 29 3 952 1218 954 +1897 2 2 29 3 956 1218 952 +1898 2 2 29 3 954 955 953 +1899 2 2 29 3 955 1034 953 +1900 2 2 29 3 1034 1132 953 +1901 2 2 29 3 954 961 955 +1902 2 2 29 3 954 981 961 +1903 2 2 29 3 954 1218 981 +1904 2 2 29 3 961 1160 955 +1905 2 2 29 3 955 1093 1034 +1906 2 2 29 3 955 1160 1093 +1907 2 2 29 3 956 1265 1218 +1908 2 2 29 3 956 1266 1265 +1909 2 2 29 3 956 1267 1266 +1910 2 2 29 3 957 1224 958 +1911 2 2 29 3 960 1005 957 +1912 2 2 29 3 1005 1224 957 +1913 2 2 29 3 958 978 977 +1914 2 2 29 3 958 1050 978 +1915 2 2 29 3 958 1224 1050 +1916 2 2 29 3 959 1016 1012 +1917 2 2 29 3 959 1017 1016 +1918 2 2 29 3 959 1202 1017 +1919 2 2 29 3 960 1019 1005 +1920 2 2 29 3 960 1020 1019 +1921 2 2 29 3 960 1145 1020 +1922 2 2 29 3 981 1022 961 +1923 2 2 29 3 1022 1030 961 +1924 2 2 29 3 1030 1160 961 +1925 2 2 29 3 962 1126 963 +1926 2 2 29 3 980 1023 962 +1927 2 2 29 3 1023 1126 962 +1928 2 2 29 3 963 972 971 +1929 2 2 29 3 963 973 972 +1930 2 2 29 3 963 1126 973 +1931 2 2 29 3 979 1024 964 +1932 2 2 29 3 1024 1025 964 +1933 2 2 29 3 1025 1187 964 +1934 2 2 29 3 965 1015 984 +1935 2 2 29 3 965 1156 1015 +1936 2 2 29 3 965 1159 1156 +1937 2 2 29 3 985 1014 966 +1938 2 2 29 3 1014 1149 966 +1939 2 2 29 3 1149 1233 966 +1940 2 2 29 3 968 987 967 +1941 2 2 29 3 987 1086 967 +1942 2 2 29 3 967 1086 993 +1943 2 2 29 3 968 1082 987 +1944 2 2 29 3 1004 1033 968 +1945 2 2 29 3 1033 1082 968 +1946 2 2 29 3 969 997 996 +1947 2 2 29 3 969 1000 997 +1948 2 2 29 3 969 1167 1000 +1949 2 2 29 3 970 1041 1040 +1950 2 2 29 3 970 1042 1041 +1951 2 2 29 3 970 1178 1042 +1952 2 2 29 3 972 1186 971 +1953 2 2 29 3 971 1174 1165 +1954 2 2 29 3 971 1186 1174 +1955 2 2 29 3 973 974 972 +1956 2 2 29 3 974 990 972 +1957 2 2 29 3 990 1186 972 +1958 2 2 29 3 973 982 974 +1959 2 2 29 3 973 1049 982 +1960 2 2 29 3 973 1126 1049 +1961 2 2 29 3 982 983 974 +1962 2 2 29 3 983 1188 974 +1963 2 2 29 3 974 1188 990 +1964 2 2 29 3 975 1003 976 +1965 2 2 29 3 975 1122 1003 +1966 2 2 29 3 975 1162 1122 +1967 2 2 29 3 1003 1009 976 +1968 2 2 29 3 1009 1010 976 +1969 2 2 29 3 1010 1207 976 +1970 2 2 29 3 978 1253 977 +1971 2 2 29 3 977 1250 1194 +1972 2 2 29 3 977 1253 1250 +1973 2 2 29 3 1050 1257 978 +1974 2 2 29 3 978 1256 1253 +1975 2 2 29 3 978 1257 1256 +1976 2 2 29 3 979 1053 1024 +1977 2 2 29 3 979 1054 1053 +1978 2 2 29 3 979 1110 1054 +1979 2 2 29 3 980 1055 1023 +1980 2 2 29 3 980 1109 1055 +1981 2 2 29 3 980 1128 1109 +1982 2 2 29 3 981 1068 1022 +1983 2 2 29 3 981 1069 1068 +1984 2 2 29 3 981 1218 1069 +1985 2 2 29 3 982 1043 983 +1986 2 2 29 3 982 1148 1043 +1987 2 2 29 3 1049 1148 982 +1988 2 2 29 3 1043 1044 983 +1989 2 2 29 3 1044 1045 983 +1990 2 2 29 3 1045 1188 983 +1991 2 2 29 3 1015 1059 984 +1992 2 2 29 3 1059 1060 984 +1993 2 2 29 3 1060 1123 984 +1994 2 2 29 3 985 1065 1014 +1995 2 2 29 3 985 1066 1065 +1996 2 2 29 3 985 1222 1066 +1997 2 2 29 3 1097 1098 986 +1998 2 2 29 3 1098 1105 986 +1999 2 2 29 3 986 1105 1104 +2000 2 2 29 3 987 1082 1080 +2001 2 2 29 3 1080 1083 987 +2002 2 2 29 3 1083 1086 987 +2003 2 2 29 3 991 1028 988 +2004 2 2 29 3 1028 1076 988 +2005 2 2 29 3 1076 1222 988 +2006 2 2 29 3 989 1190 1137 +2007 2 2 29 3 1137 1255 989 +2008 2 2 29 3 989 1255 1195 +2009 2 2 29 3 990 1177 1172 +2010 2 2 29 3 1172 1186 990 +2011 2 2 29 3 990 1188 1177 +2012 2 2 29 3 991 1247 1028 +2013 2 2 29 3 1215 1241 991 +2014 2 2 29 3 1241 1247 991 +2015 2 2 29 3 1107 1135 992 +2016 2 2 29 3 992 1161 1107 +2017 2 2 29 3 1135 1181 992 +2018 2 2 29 3 1086 1088 993 +2019 2 2 29 3 1088 1109 993 +2020 2 2 29 3 1109 1128 993 +2021 2 2 29 3 995 1026 994 +2022 2 2 29 3 1026 1156 994 +2023 2 2 29 3 1156 1159 994 +2024 2 2 29 3 995 1027 1026 +2025 2 2 29 3 995 1035 1027 +2026 2 2 29 3 995 1150 1035 +2027 2 2 29 3 997 999 996 +2028 2 2 29 3 999 1146 996 +2029 2 2 29 3 1146 1197 996 +2030 2 2 29 3 997 1037 999 +2031 2 2 29 3 1000 1219 997 +2032 2 2 29 3 997 1219 1037 +2033 2 2 29 3 1165 1174 998 +2034 2 2 29 3 1171 1173 998 +2035 2 2 29 3 998 1174 1171 +2036 2 2 29 3 1037 1089 999 +2037 2 2 29 3 1089 1226 999 +2038 2 2 29 3 999 1226 1146 +2039 2 2 29 3 1167 1208 1000 +2040 2 2 29 3 1208 1237 1000 +2041 2 2 29 3 1000 1237 1219 +2042 2 2 29 3 1198 1229 1001 +2043 2 2 29 3 1001 1220 1203 +2044 2 2 29 3 1001 1229 1220 +2045 2 2 29 3 1002 1039 1006 +2046 2 2 29 3 1002 1235 1039 +2047 2 2 29 3 1226 1235 1002 +2048 2 2 29 3 1003 1251 1009 +2049 2 2 29 3 1122 1248 1003 +2050 2 2 29 3 1248 1251 1003 +2051 2 2 29 3 1004 1038 1033 +2052 2 2 29 3 1004 1234 1038 +2053 2 2 29 3 1227 1234 1004 +2054 2 2 29 3 1019 1282 1005 +2055 2 2 29 3 1005 1279 1224 +2056 2 2 29 3 1005 1282 1279 +2057 2 2 29 3 1039 1246 1006 +2058 2 2 29 3 1122 1162 1006 +2059 2 2 29 3 1006 1246 1122 +2060 2 2 29 3 1007 1029 1008 +2061 2 2 29 3 1007 1244 1029 +2062 2 2 29 3 1207 1244 1007 +2063 2 2 29 3 1029 1077 1008 +2064 2 2 29 3 1077 1241 1008 +2065 2 2 29 3 1008 1241 1209 +2066 2 2 29 3 1009 1011 1010 +2067 2 2 29 3 1009 1254 1011 +2068 2 2 29 3 1251 1254 1009 +2069 2 2 29 3 1011 1032 1010 +2070 2 2 29 3 1032 1079 1010 +2071 2 2 29 3 1079 1207 1010 +2072 2 2 29 3 1011 1258 1032 +2073 2 2 29 3 1254 1255 1011 +2074 2 2 29 3 1255 1258 1011 +2075 2 2 29 3 1016 1273 1012 +2076 2 2 29 3 1012 1271 1270 +2077 2 2 29 3 1012 1273 1271 +2078 2 2 29 3 1262 1268 1013 +2079 2 2 29 3 1013 1269 1262 +2080 2 2 29 3 1013 1268 1267 +2081 2 2 29 3 1065 1067 1014 +2082 2 2 29 3 1067 1081 1014 +2083 2 2 29 3 1081 1149 1014 +2084 2 2 29 3 1015 1061 1059 +2085 2 2 29 3 1015 1155 1061 +2086 2 2 29 3 1015 1156 1155 +2087 2 2 29 3 1017 1018 1016 +2088 2 2 29 3 1018 1274 1016 +2089 2 2 29 3 1016 1274 1273 +2090 2 2 29 3 1017 1256 1018 +2091 2 2 29 3 1202 1213 1017 +2092 2 2 29 3 1213 1256 1017 +2093 2 2 29 3 1256 1257 1018 +2094 2 2 29 3 1257 1272 1018 +2095 2 2 29 3 1272 1274 1018 +2096 2 2 29 3 1020 1021 1019 +2097 2 2 29 3 1021 1281 1019 +2098 2 2 29 3 1281 1282 1019 +2099 2 2 29 3 1020 1062 1021 +2100 2 2 29 3 1020 1063 1062 +2101 2 2 29 3 1020 1145 1063 +2102 2 2 29 3 1062 1064 1021 +2103 2 2 29 3 1064 1280 1021 +2104 2 2 29 3 1280 1281 1021 +2105 2 2 29 3 1022 1031 1030 +2106 2 2 29 3 1022 1290 1031 +2107 2 2 29 3 1068 1290 1022 +2108 2 2 29 3 1055 1286 1023 +2109 2 2 29 3 1023 1127 1126 +2110 2 2 29 3 1023 1286 1127 +2111 2 2 29 3 1024 1051 1025 +2112 2 2 29 3 1024 1287 1051 +2113 2 2 29 3 1053 1287 1024 +2114 2 2 29 3 1051 1052 1025 +2115 2 2 29 3 1052 1103 1025 +2116 2 2 29 3 1103 1187 1025 +2117 2 2 29 3 1027 1285 1026 +2118 2 2 29 3 1155 1156 1026 +2119 2 2 29 3 1026 1285 1155 +2120 2 2 29 3 1035 1284 1027 +2121 2 2 29 3 1284 1317 1027 +2122 2 2 29 3 1027 1317 1285 +2123 2 2 29 3 1028 1243 1076 +2124 2 2 29 3 1028 1261 1243 +2125 2 2 29 3 1247 1261 1028 +2126 2 2 29 3 1029 1240 1077 +2127 2 2 29 3 1029 1260 1240 +2128 2 2 29 3 1244 1260 1029 +2129 2 2 29 3 1031 1080 1030 +2130 2 2 29 3 1080 1082 1030 +2131 2 2 29 3 1082 1160 1030 +2132 2 2 29 3 1031 1297 1080 +2133 2 2 29 3 1031 1191 1168 +2134 2 2 29 3 1168 1297 1031 +2135 2 2 29 3 1031 1290 1191 +2136 2 2 29 3 1032 1232 1079 +2137 2 2 29 3 1032 1259 1232 +2138 2 2 29 3 1258 1259 1032 +2139 2 2 29 3 1038 1093 1033 +2140 2 2 29 3 1033 1160 1082 +2141 2 2 29 3 1093 1160 1033 +2142 2 2 29 3 1093 1236 1034 +2143 2 2 29 3 1034 1133 1132 +2144 2 2 29 3 1034 1236 1133 +2145 2 2 29 3 1035 1149 1081 +2146 2 2 29 3 1081 1284 1035 +2147 2 2 29 3 1035 1150 1149 +2148 2 2 29 3 1124 1125 1036 +2149 2 2 29 3 1036 1184 1124 +2150 2 2 29 3 1125 1214 1036 +2151 2 2 29 3 1037 1212 1089 +2152 2 2 29 3 1037 1217 1212 +2153 2 2 29 3 1037 1219 1217 +2154 2 2 29 3 1038 1236 1093 +2155 2 2 29 3 1038 1234 1231 +2156 2 2 29 3 1231 1236 1038 +2157 2 2 29 3 1039 1239 1228 +2158 2 2 29 3 1228 1246 1039 +2159 2 2 29 3 1235 1239 1039 +2160 2 2 29 3 1041 1250 1040 +2161 2 2 29 3 1040 1253 1213 +2162 2 2 29 3 1250 1253 1040 +2163 2 2 29 3 1042 1245 1041 +2164 2 2 29 3 1245 1249 1041 +2165 2 2 29 3 1249 1250 1041 +2166 2 2 29 3 1178 1220 1042 +2167 2 2 29 3 1220 1229 1042 +2168 2 2 29 3 1229 1245 1042 +2169 2 2 29 3 1043 1121 1044 +2170 2 2 29 3 1043 1303 1121 +2171 2 2 29 3 1148 1303 1043 +2172 2 2 29 3 1044 1046 1045 +2173 2 2 29 3 1044 1047 1046 +2174 2 2 29 3 1044 1121 1047 +2175 2 2 29 3 1046 1085 1045 +2176 2 2 29 3 1085 1225 1045 +2177 2 2 29 3 1045 1225 1188 +2178 2 2 29 3 1047 1048 1046 +2179 2 2 29 3 1048 1210 1046 +2180 2 2 29 3 1046 1210 1085 +2181 2 2 29 3 1047 1056 1048 +2182 2 2 29 3 1047 1058 1056 +2183 2 2 29 3 1047 1121 1058 +2184 2 2 29 3 1056 1057 1048 +2185 2 2 29 3 1057 1084 1048 +2186 2 2 29 3 1084 1210 1048 +2187 2 2 29 3 1126 1127 1049 +2188 2 2 29 3 1127 1298 1049 +2189 2 2 29 3 1049 1298 1148 +2190 2 2 29 3 1224 1278 1050 +2191 2 2 29 3 1050 1276 1257 +2192 2 2 29 3 1050 1278 1276 +2193 2 2 29 3 1051 1294 1052 +2194 2 2 29 3 1287 1316 1051 +2195 2 2 29 3 1051 1316 1294 +2196 2 2 29 3 1052 1193 1103 +2197 2 2 29 3 1143 1193 1052 +2198 2 2 29 3 1052 1294 1143 +2199 2 2 29 3 1054 1283 1053 +2200 2 2 29 3 1283 1315 1053 +2201 2 2 29 3 1053 1315 1287 +2202 2 2 29 3 1054 1111 1078 +2203 2 2 29 3 1078 1283 1054 +2204 2 2 29 3 1110 1111 1054 +2205 2 2 29 3 1109 1296 1055 +2206 2 2 29 3 1055 1296 1154 +2207 2 2 29 3 1056 1288 1057 +2208 2 2 29 3 1058 1314 1056 +2209 2 2 29 3 1056 1314 1288 +2210 2 2 29 3 1057 1099 1084 +2211 2 2 29 3 1057 1100 1099 +2212 2 2 29 3 1057 1288 1100 +2213 2 2 29 3 1121 1318 1058 +2214 2 2 29 3 1263 1293 1058 +2215 2 2 29 3 1058 1318 1263 +2216 2 2 29 3 1293 1314 1058 +2217 2 2 29 3 1059 1071 1060 +2218 2 2 29 3 1071 1078 1060 +2219 2 2 29 3 1078 1111 1060 +2220 2 2 29 3 1111 1123 1060 +2221 2 2 29 3 1063 1072 1062 +2222 2 2 29 3 1063 1073 1072 +2223 2 2 29 3 1063 1090 1073 +2224 2 2 29 3 1063 1145 1090 +2225 2 2 29 3 1277 1280 1064 +2226 2 2 29 3 1064 1292 1277 +2227 2 2 29 3 1066 1070 1065 +2228 2 2 29 3 1066 1075 1070 +2229 2 2 29 3 1066 1242 1075 +2230 2 2 29 3 1222 1242 1066 +2231 2 2 29 3 1069 1301 1068 +2232 2 2 29 3 1068 1301 1192 +2233 2 2 29 3 1218 1265 1069 +2234 2 2 29 3 1069 1265 1264 +2235 2 2 29 3 1264 1301 1069 +2236 2 2 29 3 1075 1252 1070 +2237 2 2 29 3 1252 1299 1070 +2238 2 2 29 3 1073 1074 1072 +2239 2 2 29 3 1074 1302 1072 +2240 2 2 29 3 1073 1275 1074 +2241 2 2 29 3 1090 1091 1073 +2242 2 2 29 3 1091 1275 1073 +2243 2 2 29 3 1275 1312 1074 +2244 2 2 29 3 1075 1242 1238 +2245 2 2 29 3 1076 1242 1222 +2246 2 2 29 3 1077 1247 1241 +2247 2 2 29 3 1079 1244 1207 +2248 2 2 29 3 1080 1297 1083 +2249 2 2 29 3 1083 1087 1086 +2250 2 2 29 3 1084 1230 1210 +2251 2 2 29 3 1152 1225 1085 +2252 2 2 29 3 1087 1088 1086 +2253 2 2 29 3 1088 1296 1109 +2254 2 2 29 3 1089 1235 1226 +2255 2 2 29 3 1090 1144 1091 +2256 2 2 29 3 1139 1141 1091 +2257 2 2 29 3 1091 1144 1139 +2258 2 2 29 3 1141 1275 1091 +2259 2 2 29 3 1136 1190 1092 +2260 2 2 29 3 1094 1096 1095 +2261 2 2 29 3 1094 1104 1096 +2262 2 2 29 3 1096 1305 1095 +2263 2 2 29 3 1104 1105 1096 +2264 2 2 29 3 1097 1099 1098 +2265 2 2 29 3 1099 1100 1098 +2266 2 2 29 3 1100 1101 1098 +2267 2 2 29 3 1101 1105 1098 +2268 2 2 29 3 1100 1102 1101 +2269 2 2 29 3 1100 1288 1102 +2270 2 2 29 3 1102 1307 1101 +2271 2 2 29 3 1157 1187 1103 +2272 2 2 29 3 1106 1281 1280 +2273 2 2 29 3 1108 1135 1107 +2274 2 2 29 3 1129 1130 1108 +2275 2 2 29 3 1130 1131 1108 +2276 2 2 29 3 1131 1135 1108 +2277 2 2 29 3 1113 1117 1112 +2278 2 2 29 3 1114 1115 1113 +2279 2 2 29 3 1115 1116 1113 +2280 2 2 29 3 1116 1117 1113 +2281 2 2 29 3 1114 1306 1115 +2282 2 2 29 3 1115 1264 1116 +2283 2 2 29 3 1116 1266 1117 +2284 2 2 29 3 1264 1265 1116 +2285 2 2 29 3 1265 1266 1116 +2286 2 2 29 3 1117 1266 1118 +2287 2 2 29 3 1118 1268 1119 +2288 2 2 29 3 1266 1267 1118 +2289 2 2 29 3 1267 1268 1118 +2290 2 2 29 3 1119 1268 1120 +2291 2 2 29 3 1120 1268 1262 +2292 2 2 29 3 1303 1318 1121 +2293 2 2 29 3 1246 1248 1122 +2294 2 2 29 3 1125 1227 1214 +2295 2 2 29 3 1125 1234 1227 +2296 2 2 29 3 1127 1286 1153 +2297 2 2 29 3 1129 1237 1130 +2298 2 2 29 3 1130 1206 1131 +2299 2 2 29 3 1130 1208 1206 +2300 2 2 29 3 1130 1237 1208 +2301 2 2 29 3 1131 1180 1135 +2302 2 2 29 3 1133 1134 1132 +2303 2 2 29 3 1133 1196 1134 +2304 2 2 29 3 1180 1181 1135 +2305 2 2 29 3 1137 1190 1136 +2306 2 2 29 3 1137 1258 1255 +2307 2 2 29 3 1138 1140 1139 +2308 2 2 29 3 1138 1193 1140 +2309 2 2 29 3 1140 1141 1139 +2310 2 2 29 3 1140 1142 1141 +2311 2 2 29 3 1140 1143 1142 +2312 2 2 29 3 1140 1193 1143 +2313 2 2 29 3 1142 1313 1141 +2314 2 2 29 3 1141 1313 1275 +2315 2 2 29 3 1143 1164 1142 +2316 2 2 29 3 1164 1289 1142 +2317 2 2 29 3 1289 1313 1142 +2318 2 2 29 3 1143 1294 1164 +2319 2 2 29 3 1146 1221 1197 +2320 2 2 29 3 1173 1175 1147 +2321 2 2 29 3 1148 1298 1163 +2322 2 2 29 3 1163 1303 1148 +2323 2 2 29 3 1150 1233 1149 +2324 2 2 29 3 1223 1233 1150 +2325 2 2 29 3 1151 1315 1283 +2326 2 2 29 3 1158 1316 1287 +2327 2 2 29 3 1166 1317 1189 +2328 2 2 29 3 1285 1317 1166 +2329 2 2 29 3 1170 1172 1169 +2330 2 2 29 3 1172 1176 1169 +2331 2 2 29 3 1171 1174 1170 +2332 2 2 29 3 1170 1186 1172 +2333 2 2 29 3 1174 1186 1170 +2334 2 2 29 3 1171 1175 1173 +2335 2 2 29 3 1172 1177 1176 +2336 2 2 29 3 1188 1225 1177 +2337 2 2 29 3 1179 1220 1178 +2338 2 2 29 3 1203 1220 1179 +2339 2 2 29 3 1183 1279 1182 +2340 2 2 29 3 1279 1282 1182 +2341 2 2 29 3 1278 1279 1183 +2342 2 2 29 3 1185 1251 1248 +2343 2 2 29 3 1189 1317 1284 +2344 2 2 29 3 1194 1250 1249 +2345 2 2 29 3 1195 1255 1254 +2346 2 2 29 3 1200 1271 1199 +2347 2 2 29 3 1199 1271 1201 +2348 2 2 29 3 1262 1269 1200 +2349 2 2 29 3 1269 1270 1200 +2350 2 2 29 3 1270 1271 1200 +2351 2 2 29 3 1271 1273 1201 +2352 2 2 29 3 1205 1272 1204 +2353 2 2 29 3 1272 1276 1204 +2354 2 2 29 3 1205 1274 1272 +2355 2 2 29 3 1215 1216 1209 +2356 2 2 29 3 1209 1241 1215 +2357 2 2 29 3 1211 1249 1245 +2358 2 2 29 3 1253 1256 1213 +2359 2 2 29 3 1224 1279 1278 +2360 2 2 29 3 1257 1276 1272 +2361 2 2 23 4 1 15 1696 +2362 2 2 23 4 39 1 1696 +2363 2 2 23 4 20 2 1770 +2364 2 2 23 4 2 102 1770 +2365 2 2 23 4 3 63 1769 +2366 2 2 23 4 111 3 1769 +2367 2 2 23 4 4 57 1704 +2368 2 2 23 4 58 4 1704 +2369 2 2 23 4 5 47 1772 +2370 2 2 23 4 162 5 1772 +2371 2 2 23 4 48 6 1768 +2372 2 2 23 4 6 251 1768 +2373 2 2 23 4 112 7 1499 +2374 2 2 23 4 7 179 1645 +2375 2 2 23 4 1499 7 1645 +2376 2 2 23 4 8 136 1664 +2377 2 2 23 4 234 8 1329 +2378 2 2 23 4 1329 8 1664 +2379 2 2 23 4 15 16 1570 +2380 2 2 23 4 15 1570 1756 +2381 2 2 23 4 1696 15 1756 +2382 2 2 23 4 16 17 1342 +2383 2 2 23 4 16 1342 1570 +2384 2 2 23 4 17 18 1536 +2385 2 2 23 4 1342 17 1536 +2386 2 2 23 4 18 19 1347 +2387 2 2 23 4 18 1347 1536 +2388 2 2 23 4 19 20 1647 +2389 2 2 23 4 1347 19 1647 +2390 2 2 23 4 1647 20 1770 +2391 2 2 23 4 40 39 1350 +2392 2 2 23 4 1350 39 1696 +2393 2 2 23 4 41 40 1581 +2394 2 2 23 4 40 1350 1581 +2395 2 2 23 4 42 41 1333 +2396 2 2 23 4 1333 41 1581 +2397 2 2 23 4 43 42 1580 +2398 2 2 23 4 42 1333 1580 +2399 2 2 23 4 44 43 1339 +2400 2 2 23 4 1339 43 1580 +2401 2 2 23 4 45 44 1575 +2402 2 2 23 4 44 1339 1575 +2403 2 2 23 4 46 45 1348 +2404 2 2 23 4 1348 45 1575 +2405 2 2 23 4 47 46 1649 +2406 2 2 23 4 46 1348 1649 +2407 2 2 23 4 47 1649 1772 +2408 2 2 23 4 49 48 1355 +2409 2 2 23 4 1355 48 1768 +2410 2 2 23 4 50 49 1349 +2411 2 2 23 4 1349 49 1355 +2412 2 2 23 4 51 50 1697 +2413 2 2 23 4 50 1349 1697 +2414 2 2 23 4 52 51 1338 +2415 2 2 23 4 1338 51 1697 +2416 2 2 23 4 53 52 1585 +2417 2 2 23 4 52 1338 1585 +2418 2 2 23 4 54 53 1332 +2419 2 2 23 4 1332 53 1585 +2420 2 2 23 4 55 54 1584 +2421 2 2 23 4 54 1332 1584 +2422 2 2 23 4 56 55 1340 +2423 2 2 23 4 1340 55 1584 +2424 2 2 23 4 57 56 1583 +2425 2 2 23 4 56 1340 1583 +2426 2 2 23 4 57 1583 1704 +2427 2 2 23 4 59 58 1352 +2428 2 2 23 4 1352 58 1759 +2429 2 2 23 4 58 1704 1759 +2430 2 2 23 4 60 59 1369 +2431 2 2 23 4 59 1352 1802 +2432 2 2 23 4 1369 59 1802 +2433 2 2 23 4 61 60 1344 +2434 2 2 23 4 1344 60 1369 +2435 2 2 23 4 62 61 1635 +2436 2 2 23 4 61 1344 1635 +2437 2 2 23 4 63 62 1351 +2438 2 2 23 4 1351 62 1635 +2439 2 2 23 4 63 1351 1769 +2440 2 2 23 4 102 103 1353 +2441 2 2 23 4 102 1353 1770 +2442 2 2 23 4 103 104 1591 +2443 2 2 23 4 1353 103 1591 +2444 2 2 23 4 104 105 1337 +2445 2 2 23 4 104 1337 1591 +2446 2 2 23 4 105 106 1572 +2447 2 2 23 4 1337 105 1572 +2448 2 2 23 4 106 107 1346 +2449 2 2 23 4 106 1346 1572 +2450 2 2 23 4 107 108 1573 +2451 2 2 23 4 1346 107 1573 +2452 2 2 23 4 108 109 1336 +2453 2 2 23 4 108 1336 1573 +2454 2 2 23 4 109 110 1724 +2455 2 2 23 4 1336 109 1724 +2456 2 2 23 4 110 111 1653 +2457 2 2 23 4 110 1653 1724 +2458 2 2 23 4 1653 111 1769 +2459 2 2 23 4 113 112 1670 +2460 2 2 23 4 112 1499 1670 +2461 2 2 23 4 114 113 1331 +2462 2 2 23 4 1331 113 1670 +2463 2 2 23 4 115 114 1660 +2464 2 2 23 4 114 1331 1660 +2465 2 2 23 4 116 115 1495 +2466 2 2 23 4 1495 115 1660 +2467 2 2 23 4 117 116 1669 +2468 2 2 23 4 116 1495 1669 +2469 2 2 23 4 118 117 1326 +2470 2 2 23 4 1326 117 1669 +2471 2 2 23 4 119 118 1667 +2472 2 2 23 4 118 1326 1667 +2473 2 2 23 4 120 119 1466 +2474 2 2 23 4 1466 119 1667 +2475 2 2 23 4 121 120 1659 +2476 2 2 23 4 120 1466 1659 +2477 2 2 23 4 122 121 1330 +2478 2 2 23 4 1330 121 1659 +2479 2 2 23 4 123 122 1666 +2480 2 2 23 4 122 1330 1666 +2481 2 2 23 4 124 123 1455 +2482 2 2 23 4 1455 123 1666 +2483 2 2 23 4 125 124 1665 +2484 2 2 23 4 124 1455 1665 +2485 2 2 23 4 126 125 1327 +2486 2 2 23 4 1327 125 1665 +2487 2 2 23 4 127 126 1662 +2488 2 2 23 4 126 1327 1662 +2489 2 2 23 4 128 127 1478 +2490 2 2 23 4 1478 127 1662 +2491 2 2 23 4 129 128 1658 +2492 2 2 23 4 128 1478 1658 +2493 2 2 23 4 130 129 1335 +2494 2 2 23 4 1335 129 1658 +2495 2 2 23 4 131 130 1657 +2496 2 2 23 4 130 1335 1657 +2497 2 2 23 4 132 131 1729 +2498 2 2 23 4 131 1657 1729 +2499 2 2 23 4 133 132 1328 +2500 2 2 23 4 1328 132 1729 +2501 2 2 23 4 134 133 1650 +2502 2 2 23 4 133 1328 1650 +2503 2 2 23 4 135 134 1710 +2504 2 2 23 4 134 1650 1710 +2505 2 2 23 4 136 135 1472 +2506 2 2 23 4 1472 135 1710 +2507 2 2 23 4 136 1472 1664 +2508 2 2 23 4 163 162 1354 +2509 2 2 23 4 1354 162 1772 +2510 2 2 23 4 164 163 1611 +2511 2 2 23 4 163 1354 1611 +2512 2 2 23 4 165 164 1341 +2513 2 2 23 4 1341 164 1611 +2514 2 2 23 4 166 165 1641 +2515 2 2 23 4 165 1341 1641 +2516 2 2 23 4 167 166 1334 +2517 2 2 23 4 1334 166 1641 +2518 2 2 23 4 168 167 1646 +2519 2 2 23 4 167 1334 1646 +2520 2 2 23 4 169 168 1636 +2521 2 2 23 4 1636 168 1646 +2522 2 2 23 4 170 169 1320 +2523 2 2 23 4 1320 169 1636 +2524 2 2 23 4 171 170 1640 +2525 2 2 23 4 170 1320 1640 +2526 2 2 23 4 172 171 1626 +2527 2 2 23 4 1626 171 1640 +2528 2 2 23 4 173 172 1323 +2529 2 2 23 4 1323 172 1626 +2530 2 2 23 4 174 173 1625 +2531 2 2 23 4 173 1323 1625 +2532 2 2 23 4 175 174 1613 +2533 2 2 23 4 1613 174 1625 +2534 2 2 23 4 176 175 1324 +2535 2 2 23 4 1324 175 1613 +2536 2 2 23 4 177 176 1616 +2537 2 2 23 4 176 1324 1616 +2538 2 2 23 4 178 177 1604 +2539 2 2 23 4 1604 177 1616 +2540 2 2 23 4 179 178 1325 +2541 2 2 23 4 1325 178 1604 +2542 2 2 23 4 179 1325 1645 +2543 2 2 23 4 235 234 1600 +2544 2 2 23 4 234 1329 1600 +2545 2 2 23 4 236 235 1608 +2546 2 2 23 4 235 1600 1608 +2547 2 2 23 4 237 236 1394 +2548 2 2 23 4 1394 236 1608 +2549 2 2 23 4 238 237 1609 +2550 2 2 23 4 237 1394 1609 +2551 2 2 23 4 239 238 1621 +2552 2 2 23 4 238 1609 1621 +2553 2 2 23 4 240 239 1321 +2554 2 2 23 4 1321 239 1621 +2555 2 2 23 4 241 240 1622 +2556 2 2 23 4 240 1321 1622 +2557 2 2 23 4 242 241 1630 +2558 2 2 23 4 241 1622 1630 +2559 2 2 23 4 243 242 1319 +2560 2 2 23 4 1319 242 1630 +2561 2 2 23 4 244 243 1631 +2562 2 2 23 4 243 1319 1631 +2563 2 2 23 4 245 244 1644 +2564 2 2 23 4 244 1631 1644 +2565 2 2 23 4 246 245 1322 +2566 2 2 23 4 1322 245 1644 +2567 2 2 23 4 247 246 1638 +2568 2 2 23 4 246 1322 1638 +2569 2 2 23 4 248 247 1343 +2570 2 2 23 4 1343 247 1638 +2571 2 2 23 4 249 248 1612 +2572 2 2 23 4 248 1343 1612 +2573 2 2 23 4 250 249 1345 +2574 2 2 23 4 1345 249 1612 +2575 2 2 23 4 251 250 1683 +2576 2 2 23 4 250 1345 1683 +2577 2 2 23 4 251 1683 1768 +2578 2 2 23 4 1319 1630 1749 +2579 2 2 23 4 1631 1319 1678 +2580 2 2 23 4 1678 1319 1749 +2581 2 2 23 4 1320 1636 1786 +2582 2 2 23 4 1640 1320 1723 +2583 2 2 23 4 1723 1320 1786 +2584 2 2 23 4 1321 1621 1763 +2585 2 2 23 4 1622 1321 1695 +2586 2 2 23 4 1695 1321 1763 +2587 2 2 23 4 1638 1322 1754 +2588 2 2 23 4 1322 1644 1754 +2589 2 2 23 4 1625 1323 1751 +2590 2 2 23 4 1323 1626 1627 +2591 2 2 23 4 1323 1627 1751 +2592 2 2 23 4 1324 1613 1614 +2593 2 2 23 4 1324 1614 1725 +2594 2 2 23 4 1616 1324 1725 +2595 2 2 23 4 1325 1604 1682 +2596 2 2 23 4 1325 1607 1645 +2597 2 2 23 4 1607 1325 1682 +2598 2 2 23 4 1667 1326 1668 +2599 2 2 23 4 1668 1326 1783 +2600 2 2 23 4 1326 1669 1783 +2601 2 2 23 4 1662 1327 1663 +2602 2 2 23 4 1663 1327 1716 +2603 2 2 23 4 1327 1665 1716 +2604 2 2 23 4 1328 1606 1720 +2605 2 2 23 4 1606 1328 1729 +2606 2 2 23 4 1650 1328 1720 +2607 2 2 23 4 1600 1329 1601 +2608 2 2 23 4 1601 1329 1714 +2609 2 2 23 4 1329 1664 1714 +2610 2 2 23 4 1330 1597 1666 +2611 2 2 23 4 1597 1330 1781 +2612 2 2 23 4 1330 1659 1781 +2613 2 2 23 4 1660 1331 1798 +2614 2 2 23 4 1331 1670 1798 +2615 2 2 23 4 1584 1332 1742 +2616 2 2 23 4 1332 1585 1773 +2617 2 2 23 4 1742 1332 1773 +2618 2 2 23 4 1580 1333 1731 +2619 2 2 23 4 1333 1581 1793 +2620 2 2 23 4 1333 1655 1731 +2621 2 2 23 4 1655 1333 1793 +2622 2 2 23 4 1634 1334 1641 +2623 2 2 23 4 1334 1634 1779 +2624 2 2 23 4 1646 1334 1779 +2625 2 2 23 4 1335 1592 1657 +2626 2 2 23 4 1592 1335 1717 +2627 2 2 23 4 1335 1658 1717 +2628 2 2 23 4 1542 1336 1547 +2629 2 2 23 4 1336 1542 1637 +2630 2 2 23 4 1547 1336 1724 +2631 2 2 23 4 1573 1336 1637 +2632 2 2 23 4 1337 1572 1595 +2633 2 2 23 4 1591 1337 1796 +2634 2 2 23 4 1337 1595 1752 +2635 2 2 23 4 1337 1752 1796 +2636 2 2 23 4 1585 1338 1761 +2637 2 2 23 4 1338 1697 1801 +2638 2 2 23 4 1761 1338 1801 +2639 2 2 23 4 1575 1339 1689 +2640 2 2 23 4 1339 1580 1775 +2641 2 2 23 4 1689 1339 1775 +2642 2 2 23 4 1583 1340 1747 +2643 2 2 23 4 1340 1584 1762 +2644 2 2 23 4 1747 1340 1762 +2645 2 2 23 4 1341 1611 1706 +2646 2 2 23 4 1641 1341 1706 +2647 2 2 23 4 1342 1536 1712 +2648 2 2 23 4 1570 1342 1603 +2649 2 2 23 4 1603 1342 1712 +2650 2 2 23 4 1343 1574 1612 +2651 2 2 23 4 1574 1343 1719 +2652 2 2 23 4 1343 1638 1719 +2653 2 2 23 4 1344 1369 1370 +2654 2 2 23 4 1344 1370 1371 +2655 2 2 23 4 1344 1371 1635 +2656 2 2 23 4 1574 1345 1612 +2657 2 2 23 4 1345 1574 1766 +2658 2 2 23 4 1683 1345 1766 +2659 2 2 23 4 1572 1346 1730 +2660 2 2 23 4 1346 1573 1740 +2661 2 2 23 4 1346 1639 1730 +2662 2 2 23 4 1639 1346 1740 +2663 2 2 23 4 1536 1347 1677 +2664 2 2 23 4 1347 1647 1735 +2665 2 2 23 4 1677 1347 1735 +2666 2 2 23 4 1348 1575 1576 +2667 2 2 23 4 1348 1576 1577 +2668 2 2 23 4 1348 1577 1795 +2669 2 2 23 4 1649 1348 1795 +2670 2 2 23 4 1349 1355 1356 +2671 2 2 23 4 1349 1356 1357 +2672 2 2 23 4 1349 1357 1697 +2673 2 2 23 4 1581 1350 1713 +2674 2 2 23 4 1350 1593 1713 +2675 2 2 23 4 1593 1350 1756 +2676 2 2 23 4 1350 1696 1756 +2677 2 2 23 4 1531 1351 1635 +2678 2 2 23 4 1351 1531 1652 +2679 2 2 23 4 1351 1652 1653 +2680 2 2 23 4 1351 1653 1769 +2681 2 2 23 4 1352 1661 1733 +2682 2 2 23 4 1661 1352 1759 +2683 2 2 23 4 1352 1733 1802 +2684 2 2 23 4 1586 1353 1591 +2685 2 2 23 4 1353 1586 1647 +2686 2 2 23 4 1353 1647 1770 +2687 2 2 23 4 1611 1354 1795 +2688 2 2 23 4 1649 1354 1772 +2689 2 2 23 4 1354 1649 1795 +2690 2 2 23 4 1356 1355 1766 +2691 2 2 23 4 1355 1683 1766 +2692 2 2 23 4 1683 1355 1768 +2693 2 2 23 4 1357 1356 1358 +2694 2 2 23 4 1358 1356 1574 +2695 2 2 23 4 1574 1356 1766 +2696 2 2 23 4 1357 1358 1359 +2697 2 2 23 4 1357 1359 1801 +2698 2 2 23 4 1697 1357 1801 +2699 2 2 23 4 1359 1358 1360 +2700 2 2 23 4 1360 1358 1368 +2701 2 2 23 4 1368 1358 1574 +2702 2 2 23 4 1359 1360 1361 +2703 2 2 23 4 1359 1361 1761 +2704 2 2 23 4 1359 1761 1801 +2705 2 2 23 4 1361 1360 1362 +2706 2 2 23 4 1362 1360 1365 +2707 2 2 23 4 1365 1360 1368 +2708 2 2 23 4 1361 1362 1363 +2709 2 2 23 4 1361 1363 1366 +2710 2 2 23 4 1361 1366 1761 +2711 2 2 23 4 1363 1362 1364 +2712 2 2 23 4 1364 1362 1782 +2713 2 2 23 4 1362 1365 1782 +2714 2 2 23 4 1363 1364 1698 +2715 2 2 23 4 1366 1363 1367 +2716 2 2 23 4 1367 1363 1698 +2717 2 2 23 4 1364 1623 1624 +2718 2 2 23 4 1623 1364 1782 +2719 2 2 23 4 1364 1624 1698 +2720 2 2 23 4 1365 1368 1571 +2721 2 2 23 4 1558 1365 1571 +2722 2 2 23 4 1365 1558 1675 +2723 2 2 23 4 1365 1675 1782 +2724 2 2 23 4 1366 1367 1773 +2725 2 2 23 4 1366 1585 1761 +2726 2 2 23 4 1585 1366 1773 +2727 2 2 23 4 1367 1698 1776 +2728 2 2 23 4 1367 1742 1773 +2729 2 2 23 4 1742 1367 1776 +2730 2 2 23 4 1571 1368 1719 +2731 2 2 23 4 1368 1574 1719 +2732 2 2 23 4 1370 1369 1557 +2733 2 2 23 4 1557 1369 1802 +2734 2 2 23 4 1371 1370 1372 +2735 2 2 23 4 1372 1370 1373 +2736 2 2 23 4 1373 1370 1794 +2737 2 2 23 4 1370 1557 1794 +2738 2 2 23 4 1371 1372 1449 +2739 2 2 23 4 1371 1449 1531 +2740 2 2 23 4 1371 1531 1635 +2741 2 2 23 4 1372 1373 1374 +2742 2 2 23 4 1372 1374 1594 +2743 2 2 23 4 1449 1372 1594 +2744 2 2 23 4 1374 1373 1375 +2745 2 2 23 4 1375 1373 1408 +2746 2 2 23 4 1408 1373 1794 +2747 2 2 23 4 1374 1375 1376 +2748 2 2 23 4 1374 1376 1377 +2749 2 2 23 4 1374 1377 1594 +2750 2 2 23 4 1376 1375 1734 +2751 2 2 23 4 1375 1408 1790 +2752 2 2 23 4 1375 1539 1734 +2753 2 2 23 4 1539 1375 1790 +2754 2 2 23 4 1377 1376 1378 +2755 2 2 23 4 1378 1376 1379 +2756 2 2 23 4 1379 1376 1734 +2757 2 2 23 4 1377 1378 1681 +2758 2 2 23 4 1594 1377 1777 +2759 2 2 23 4 1377 1681 1777 +2760 2 2 23 4 1378 1379 1380 +2761 2 2 23 4 1378 1380 1381 +2762 2 2 23 4 1378 1381 1681 +2763 2 2 23 4 1380 1379 1806 +2764 2 2 23 4 1541 1379 1709 +2765 2 2 23 4 1379 1541 1806 +2766 2 2 23 4 1709 1379 1734 +2767 2 2 23 4 1381 1380 1382 +2768 2 2 23 4 1382 1380 1383 +2769 2 2 23 4 1383 1380 1534 +2770 2 2 23 4 1534 1380 1806 +2771 2 2 23 4 1381 1382 1610 +2772 2 2 23 4 1598 1381 1610 +2773 2 2 23 4 1381 1598 1681 +2774 2 2 23 4 1382 1383 1384 +2775 2 2 23 4 1382 1384 1385 +2776 2 2 23 4 1382 1385 1610 +2777 2 2 23 4 1384 1383 1392 +2778 2 2 23 4 1392 1383 1393 +2779 2 2 23 4 1393 1383 1534 +2780 2 2 23 4 1385 1384 1386 +2781 2 2 23 4 1386 1384 1563 +2782 2 2 23 4 1384 1392 1563 +2783 2 2 23 4 1385 1386 1387 +2784 2 2 23 4 1385 1387 1686 +2785 2 2 23 4 1610 1385 1686 +2786 2 2 23 4 1387 1386 1388 +2787 2 2 23 4 1388 1386 1391 +2788 2 2 23 4 1391 1386 1563 +2789 2 2 23 4 1387 1388 1389 +2790 2 2 23 4 1387 1389 1401 +2791 2 2 23 4 1387 1401 1686 +2792 2 2 23 4 1389 1388 1390 +2793 2 2 23 4 1390 1388 1568 +2794 2 2 23 4 1388 1391 1568 +2795 2 2 23 4 1389 1390 1395 +2796 2 2 23 4 1389 1395 1691 +2797 2 2 23 4 1401 1389 1691 +2798 2 2 23 4 1395 1390 1398 +2799 2 2 23 4 1398 1390 1399 +2800 2 2 23 4 1399 1390 1568 +2801 2 2 23 4 1391 1563 1564 +2802 2 2 23 4 1391 1564 1565 +2803 2 2 23 4 1391 1565 1568 +2804 2 2 23 4 1392 1393 1396 +2805 2 2 23 4 1392 1396 1753 +2806 2 2 23 4 1563 1392 1567 +2807 2 2 23 4 1567 1392 1753 +2808 2 2 23 4 1396 1393 1397 +2809 2 2 23 4 1397 1393 1605 +2810 2 2 23 4 1393 1534 1605 +2811 2 2 23 4 1394 1608 1701 +2812 2 2 23 4 1609 1394 1687 +2813 2 2 23 4 1687 1394 1701 +2814 2 2 23 4 1395 1398 1400 +2815 2 2 23 4 1395 1400 1422 +2816 2 2 23 4 1395 1422 1691 +2817 2 2 23 4 1396 1397 1402 +2818 2 2 23 4 1396 1402 1403 +2819 2 2 23 4 1396 1403 1753 +2820 2 2 23 4 1402 1397 1404 +2821 2 2 23 4 1404 1397 1405 +2822 2 2 23 4 1405 1397 1605 +2823 2 2 23 4 1398 1399 1406 +2824 2 2 23 4 1400 1398 1693 +2825 2 2 23 4 1398 1406 1693 +2826 2 2 23 4 1406 1399 1407 +2827 2 2 23 4 1407 1399 1642 +2828 2 2 23 4 1399 1568 1569 +2829 2 2 23 4 1399 1569 1642 +2830 2 2 23 4 1422 1400 1445 +2831 2 2 23 4 1445 1400 1758 +2832 2 2 23 4 1400 1693 1758 +2833 2 2 23 4 1686 1401 1792 +2834 2 2 23 4 1401 1691 1800 +2835 2 2 23 4 1792 1401 1800 +2836 2 2 23 4 1403 1402 1411 +2837 2 2 23 4 1402 1404 1520 +2838 2 2 23 4 1411 1402 1711 +2839 2 2 23 4 1402 1520 1711 +2840 2 2 23 4 1403 1411 1412 +2841 2 2 23 4 1403 1412 1671 +2842 2 2 23 4 1403 1671 1753 +2843 2 2 23 4 1404 1405 1409 +2844 2 2 23 4 1404 1409 1437 +2845 2 2 23 4 1404 1437 1520 +2846 2 2 23 4 1409 1405 1410 +2847 2 2 23 4 1410 1405 1715 +2848 2 2 23 4 1405 1605 1715 +2849 2 2 23 4 1406 1407 1413 +2850 2 2 23 4 1406 1413 1418 +2851 2 2 23 4 1406 1418 1693 +2852 2 2 23 4 1413 1407 1414 +2853 2 2 23 4 1414 1407 1415 +2854 2 2 23 4 1415 1407 1642 +2855 2 2 23 4 1656 1408 1726 +2856 2 2 23 4 1408 1656 1790 +2857 2 2 23 4 1726 1408 1741 +2858 2 2 23 4 1741 1408 1794 +2859 2 2 23 4 1409 1410 1423 +2860 2 2 23 4 1409 1423 1503 +2861 2 2 23 4 1437 1409 1750 +2862 2 2 23 4 1409 1503 1750 +2863 2 2 23 4 1423 1410 1424 +2864 2 2 23 4 1424 1410 1460 +2865 2 2 23 4 1460 1410 1715 +2866 2 2 23 4 1412 1411 1427 +2867 2 2 23 4 1427 1411 1436 +2868 2 2 23 4 1436 1411 1711 +2869 2 2 23 4 1412 1427 1428 +2870 2 2 23 4 1412 1428 1433 +2871 2 2 23 4 1412 1433 1671 +2872 2 2 23 4 1413 1414 1703 +2873 2 2 23 4 1418 1413 1480 +2874 2 2 23 4 1480 1413 1703 +2875 2 2 23 4 1414 1415 1416 +2876 2 2 23 4 1414 1416 1417 +2877 2 2 23 4 1414 1417 1703 +2878 2 2 23 4 1416 1415 1425 +2879 2 2 23 4 1425 1415 1426 +2880 2 2 23 4 1426 1415 1642 +2881 2 2 23 4 1417 1416 1419 +2882 2 2 23 4 1419 1416 1492 +2883 2 2 23 4 1416 1425 1674 +2884 2 2 23 4 1492 1416 1674 +2885 2 2 23 4 1417 1419 1420 +2886 2 2 23 4 1417 1420 1432 +2887 2 2 23 4 1417 1432 1703 +2888 2 2 23 4 1418 1480 1481 +2889 2 2 23 4 1418 1481 1540 +2890 2 2 23 4 1418 1540 1693 +2891 2 2 23 4 1420 1419 1421 +2892 2 2 23 4 1421 1419 1457 +2893 2 2 23 4 1457 1419 1492 +2894 2 2 23 4 1420 1421 1429 +2895 2 2 23 4 1420 1429 1738 +2896 2 2 23 4 1432 1420 1738 +2897 2 2 23 4 1429 1421 1548 +2898 2 2 23 4 1421 1457 1807 +2899 2 2 23 4 1421 1458 1548 +2900 2 2 23 4 1458 1421 1807 +2901 2 2 23 4 1422 1445 1450 +2902 2 2 23 4 1422 1450 1482 +2903 2 2 23 4 1422 1482 1691 +2904 2 2 23 4 1423 1424 1438 +2905 2 2 23 4 1423 1438 1461 +2906 2 2 23 4 1423 1461 1503 +2907 2 2 23 4 1438 1424 1439 +2908 2 2 23 4 1439 1424 1718 +2909 2 2 23 4 1424 1460 1718 +2910 2 2 23 4 1425 1426 1430 +2911 2 2 23 4 1425 1430 1446 +2912 2 2 23 4 1425 1446 1674 +2913 2 2 23 4 1430 1426 1431 +2914 2 2 23 4 1431 1426 1459 +2915 2 2 23 4 1459 1426 1642 +2916 2 2 23 4 1428 1427 1788 +2917 2 2 23 4 1427 1436 1451 +2918 2 2 23 4 1427 1451 1736 +2919 2 2 23 4 1427 1736 1788 +2920 2 2 23 4 1433 1428 1434 +2921 2 2 23 4 1434 1428 1441 +2922 2 2 23 4 1441 1428 1506 +2923 2 2 23 4 1506 1428 1788 +2924 2 2 23 4 1429 1548 1549 +2925 2 2 23 4 1429 1549 1550 +2926 2 2 23 4 1429 1550 1738 +2927 2 2 23 4 1430 1431 1435 +2928 2 2 23 4 1430 1435 1785 +2929 2 2 23 4 1446 1430 1507 +2930 2 2 23 4 1507 1430 1785 +2931 2 2 23 4 1435 1431 1467 +2932 2 2 23 4 1431 1459 1707 +2933 2 2 23 4 1467 1431 1707 +2934 2 2 23 4 1556 1432 1738 +2935 2 2 23 4 1432 1556 1739 +2936 2 2 23 4 1703 1432 1739 +2937 2 2 23 4 1433 1434 1757 +2938 2 2 23 4 1433 1632 1671 +2939 2 2 23 4 1632 1433 1757 +2940 2 2 23 4 1434 1441 1442 +2941 2 2 23 4 1434 1442 1443 +2942 2 2 23 4 1434 1443 1757 +2943 2 2 23 4 1435 1467 1618 +2944 2 2 23 4 1617 1435 1618 +2945 2 2 23 4 1435 1617 1785 +2946 2 2 23 4 1451 1436 1456 +2947 2 2 23 4 1456 1436 1470 +2948 2 2 23 4 1470 1436 1711 +2949 2 2 23 4 1520 1437 1744 +2950 2 2 23 4 1437 1587 1684 +2951 2 2 23 4 1587 1437 1750 +2952 2 2 23 4 1437 1684 1744 +2953 2 2 23 4 1438 1439 1440 +2954 2 2 23 4 1438 1440 1502 +2955 2 2 23 4 1461 1438 1673 +2956 2 2 23 4 1438 1502 1673 +2957 2 2 23 4 1440 1439 1444 +2958 2 2 23 4 1444 1439 1447 +2959 2 2 23 4 1447 1439 1718 +2960 2 2 23 4 1440 1444 1485 +2961 2 2 23 4 1440 1485 1486 +2962 2 2 23 4 1440 1486 1502 +2963 2 2 23 4 1442 1441 1452 +2964 2 2 23 4 1452 1441 1454 +2965 2 2 23 4 1454 1441 1506 +2966 2 2 23 4 1443 1442 1672 +2967 2 2 23 4 1442 1452 1453 +2968 2 2 23 4 1442 1453 1672 +2969 2 2 23 4 1443 1672 1764 +2970 2 2 23 4 1757 1443 1765 +2971 2 2 23 4 1443 1764 1765 +2972 2 2 23 4 1444 1447 1448 +2973 2 2 23 4 1444 1448 1624 +2974 2 2 23 4 1485 1444 1624 +2975 2 2 23 4 1450 1445 1474 +2976 2 2 23 4 1474 1445 1475 +2977 2 2 23 4 1475 1445 1758 +2978 2 2 23 4 1446 1507 1508 +2979 2 2 23 4 1446 1508 1582 +2980 2 2 23 4 1446 1582 1674 +2981 2 2 23 4 1448 1447 1468 +2982 2 2 23 4 1468 1447 1523 +2983 2 2 23 4 1523 1447 1718 +2984 2 2 23 4 1448 1468 1469 +2985 2 2 23 4 1448 1469 1487 +2986 2 2 23 4 1448 1487 1624 +2987 2 2 23 4 1531 1449 1532 +2988 2 2 23 4 1532 1449 1533 +2989 2 2 23 4 1533 1449 1594 +2990 2 2 23 4 1450 1474 1595 +2991 2 2 23 4 1482 1450 1483 +2992 2 2 23 4 1483 1450 1595 +2993 2 2 23 4 1451 1456 1477 +2994 2 2 23 4 1451 1477 1479 +2995 2 2 23 4 1451 1479 1736 +2996 2 2 23 4 1453 1452 1462 +2997 2 2 23 4 1452 1454 1803 +2998 2 2 23 4 1462 1452 1518 +2999 2 2 23 4 1518 1452 1803 +3000 2 2 23 4 1453 1462 1463 +3001 2 2 23 4 1453 1463 1464 +3002 2 2 23 4 1453 1464 1672 +3003 2 2 23 4 1454 1506 1694 +3004 2 2 23 4 1519 1454 1732 +3005 2 2 23 4 1454 1519 1803 +3006 2 2 23 4 1454 1694 1732 +3007 2 2 23 4 1597 1455 1666 +3008 2 2 23 4 1455 1597 1690 +3009 2 2 23 4 1665 1455 1690 +3010 2 2 23 4 1456 1470 1471 +3011 2 2 23 4 1456 1471 1755 +3012 2 2 23 4 1477 1456 1538 +3013 2 2 23 4 1538 1456 1755 +3014 2 2 23 4 1457 1492 1493 +3015 2 2 23 4 1457 1493 1685 +3016 2 2 23 4 1457 1685 1807 +3017 2 2 23 4 1548 1458 1791 +3018 2 2 23 4 1458 1737 1791 +3019 2 2 23 4 1737 1458 1807 +3020 2 2 23 4 1459 1569 1629 +3021 2 2 23 4 1569 1459 1642 +3022 2 2 23 4 1459 1629 1707 +3023 2 2 23 4 1460 1715 1767 +3024 2 2 23 4 1718 1460 1804 +3025 2 2 23 4 1460 1767 1804 +3026 2 2 23 4 1503 1461 1504 +3027 2 2 23 4 1504 1461 1805 +3028 2 2 23 4 1505 1461 1673 +3029 2 2 23 4 1461 1505 1805 +3030 2 2 23 4 1463 1462 1562 +3031 2 2 23 4 1462 1518 1561 +3032 2 2 23 4 1462 1561 1562 +3033 2 2 23 4 1464 1463 1465 +3034 2 2 23 4 1465 1463 1494 +3035 2 2 23 4 1494 1463 1771 +3036 2 2 23 4 1463 1562 1771 +3037 2 2 23 4 1464 1465 1699 +3038 2 2 23 4 1464 1619 1672 +3039 2 2 23 4 1619 1464 1699 +3040 2 2 23 4 1465 1494 1496 +3041 2 2 23 4 1465 1496 1497 +3042 2 2 23 4 1465 1497 1699 +3043 2 2 23 4 1659 1466 1721 +3044 2 2 23 4 1466 1667 1728 +3045 2 2 23 4 1721 1466 1728 +3046 2 2 23 4 1618 1467 1619 +3047 2 2 23 4 1619 1467 1620 +3048 2 2 23 4 1620 1467 1707 +3049 2 2 23 4 1469 1468 1702 +3050 2 2 23 4 1468 1523 1539 +3051 2 2 23 4 1468 1539 1702 +3052 2 2 23 4 1487 1469 1488 +3053 2 2 23 4 1488 1469 1656 +3054 2 2 23 4 1656 1469 1702 +3055 2 2 23 4 1471 1470 1489 +3056 2 2 23 4 1489 1470 1744 +3057 2 2 23 4 1470 1711 1744 +3058 2 2 23 4 1471 1489 1490 +3059 2 2 23 4 1471 1490 1537 +3060 2 2 23 4 1471 1537 1755 +3061 2 2 23 4 1643 1472 1710 +3062 2 2 23 4 1472 1643 1778 +3063 2 2 23 4 1664 1472 1778 +3064 2 2 23 4 1648 1473 1685 +3065 2 2 23 4 1473 1648 1705 +3066 2 2 23 4 1685 1473 1807 +3067 2 2 23 4 1473 1705 1737 +3068 2 2 23 4 1473 1737 1807 +3069 2 2 23 4 1474 1475 1476 +3070 2 2 23 4 1474 1476 1752 +3071 2 2 23 4 1595 1474 1752 +3072 2 2 23 4 1476 1475 1517 +3073 2 2 23 4 1517 1475 1680 +3074 2 2 23 4 1680 1475 1758 +3075 2 2 23 4 1476 1517 1586 +3076 2 2 23 4 1476 1586 1796 +3077 2 2 23 4 1752 1476 1796 +3078 2 2 23 4 1479 1477 1524 +3079 2 2 23 4 1524 1477 1592 +3080 2 2 23 4 1477 1538 1592 +3081 2 2 23 4 1658 1478 1799 +3082 2 2 23 4 1478 1662 1708 +3083 2 2 23 4 1478 1708 1799 +3084 2 2 23 4 1479 1524 1525 +3085 2 2 23 4 1479 1525 1694 +3086 2 2 23 4 1479 1694 1736 +3087 2 2 23 4 1481 1480 1500 +3088 2 2 23 4 1500 1480 1739 +3089 2 2 23 4 1480 1703 1739 +3090 2 2 23 4 1481 1500 1501 +3091 2 2 23 4 1481 1501 1680 +3092 2 2 23 4 1540 1481 1680 +3093 2 2 23 4 1482 1483 1484 +3094 2 2 23 4 1482 1484 1692 +3095 2 2 23 4 1691 1482 1800 +3096 2 2 23 4 1482 1692 1800 +3097 2 2 23 4 1484 1483 1639 +3098 2 2 23 4 1483 1595 1730 +3099 2 2 23 4 1639 1483 1730 +3100 2 2 23 4 1484 1639 1789 +3101 2 2 23 4 1692 1484 1722 +3102 2 2 23 4 1722 1484 1789 +3103 2 2 23 4 1486 1485 1516 +3104 2 2 23 4 1516 1485 1623 +3105 2 2 23 4 1623 1485 1624 +3106 2 2 23 4 1502 1486 1514 +3107 2 2 23 4 1514 1486 1515 +3108 2 2 23 4 1515 1486 1516 +3109 2 2 23 4 1487 1488 1526 +3110 2 2 23 4 1487 1526 1698 +3111 2 2 23 4 1624 1487 1698 +3112 2 2 23 4 1526 1488 1527 +3113 2 2 23 4 1527 1488 1726 +3114 2 2 23 4 1488 1656 1726 +3115 2 2 23 4 1490 1489 1491 +3116 2 2 23 4 1491 1489 1684 +3117 2 2 23 4 1684 1489 1744 +3118 2 2 23 4 1490 1491 1521 +3119 2 2 23 4 1490 1521 1643 +3120 2 2 23 4 1537 1490 1643 +3121 2 2 23 4 1521 1491 1522 +3122 2 2 23 4 1522 1491 1587 +3123 2 2 23 4 1587 1491 1684 +3124 2 2 23 4 1493 1492 1780 +3125 2 2 23 4 1492 1674 1780 +3126 2 2 23 4 1493 1651 1654 +3127 2 2 23 4 1651 1493 1760 +3128 2 2 23 4 1493 1654 1685 +3129 2 2 23 4 1760 1493 1780 +3130 2 2 23 4 1496 1494 1596 +3131 2 2 23 4 1596 1494 1783 +3132 2 2 23 4 1668 1494 1771 +3133 2 2 23 4 1494 1668 1783 +3134 2 2 23 4 1495 1660 1797 +3135 2 2 23 4 1669 1495 1797 +3136 2 2 23 4 1497 1496 1498 +3137 2 2 23 4 1498 1496 1559 +3138 2 2 23 4 1559 1496 1797 +3139 2 2 23 4 1496 1596 1797 +3140 2 2 23 4 1497 1498 1617 +3141 2 2 23 4 1497 1617 1618 +3142 2 2 23 4 1497 1618 1699 +3143 2 2 23 4 1498 1559 1560 +3144 2 2 23 4 1498 1560 1727 +3145 2 2 23 4 1617 1498 1727 +3146 2 2 23 4 1499 1645 1688 +3147 2 2 23 4 1670 1499 1746 +3148 2 2 23 4 1499 1688 1746 +3149 2 2 23 4 1501 1500 1712 +3150 2 2 23 4 1712 1500 1784 +3151 2 2 23 4 1500 1739 1784 +3152 2 2 23 4 1501 1536 1677 +3153 2 2 23 4 1536 1501 1712 +3154 2 2 23 4 1501 1677 1680 +3155 2 2 23 4 1502 1514 1535 +3156 2 2 23 4 1502 1535 1673 +3157 2 2 23 4 1503 1504 1679 +3158 2 2 23 4 1503 1679 1750 +3159 2 2 23 4 1504 1602 1700 +3160 2 2 23 4 1602 1504 1805 +3161 2 2 23 4 1679 1504 1700 +3162 2 2 23 4 1505 1535 1633 +3163 2 2 23 4 1535 1505 1673 +3164 2 2 23 4 1505 1633 1687 +3165 2 2 23 4 1505 1687 1805 +3166 2 2 23 4 1694 1506 1736 +3167 2 2 23 4 1736 1506 1788 +3168 2 2 23 4 1508 1507 1509 +3169 2 2 23 4 1509 1507 1512 +3170 2 2 23 4 1512 1507 1785 +3171 2 2 23 4 1508 1509 1510 +3172 2 2 23 4 1508 1510 1511 +3173 2 2 23 4 1508 1511 1582 +3174 2 2 23 4 1510 1509 1682 +3175 2 2 23 4 1509 1512 1513 +3176 2 2 23 4 1509 1513 1607 +3177 2 2 23 4 1509 1607 1682 +3178 2 2 23 4 1511 1510 1725 +3179 2 2 23 4 1510 1682 1743 +3180 2 2 23 4 1725 1510 1743 +3181 2 2 23 4 1582 1511 1760 +3182 2 2 23 4 1511 1614 1651 +3183 2 2 23 4 1614 1511 1725 +3184 2 2 23 4 1511 1651 1760 +3185 2 2 23 4 1513 1512 1727 +3186 2 2 23 4 1512 1617 1727 +3187 2 2 23 4 1617 1512 1785 +3188 2 2 23 4 1560 1513 1727 +3189 2 2 23 4 1513 1560 1746 +3190 2 2 23 4 1607 1513 1688 +3191 2 2 23 4 1688 1513 1746 +3192 2 2 23 4 1514 1515 1749 +3193 2 2 23 4 1535 1514 1695 +3194 2 2 23 4 1695 1514 1748 +3195 2 2 23 4 1748 1514 1749 +3196 2 2 23 4 1515 1516 1558 +3197 2 2 23 4 1515 1558 1678 +3198 2 2 23 4 1515 1678 1749 +3199 2 2 23 4 1558 1516 1675 +3200 2 2 23 4 1516 1623 1675 +3201 2 2 23 4 1586 1517 1735 +3202 2 2 23 4 1677 1517 1680 +3203 2 2 23 4 1517 1677 1735 +3204 2 2 23 4 1518 1519 1597 +3205 2 2 23 4 1519 1518 1803 +3206 2 2 23 4 1561 1518 1597 +3207 2 2 23 4 1597 1519 1690 +3208 2 2 23 4 1690 1519 1716 +3209 2 2 23 4 1716 1519 1732 +3210 2 2 23 4 1711 1520 1744 +3211 2 2 23 4 1521 1522 1714 +3212 2 2 23 4 1643 1521 1778 +3213 2 2 23 4 1521 1714 1778 +3214 2 2 23 4 1522 1587 1679 +3215 2 2 23 4 1601 1522 1700 +3216 2 2 23 4 1522 1601 1714 +3217 2 2 23 4 1522 1679 1700 +3218 2 2 23 4 1539 1523 1709 +3219 2 2 23 4 1709 1523 1804 +3220 2 2 23 4 1523 1718 1804 +3221 2 2 23 4 1525 1524 1708 +3222 2 2 23 4 1524 1592 1717 +3223 2 2 23 4 1708 1524 1799 +3224 2 2 23 4 1524 1717 1799 +3225 2 2 23 4 1663 1525 1708 +3226 2 2 23 4 1525 1663 1732 +3227 2 2 23 4 1694 1525 1732 +3228 2 2 23 4 1526 1527 1528 +3229 2 2 23 4 1526 1528 1776 +3230 2 2 23 4 1698 1526 1776 +3231 2 2 23 4 1528 1527 1529 +3232 2 2 23 4 1529 1527 1530 +3233 2 2 23 4 1530 1527 1726 +3234 2 2 23 4 1528 1529 1762 +3235 2 2 23 4 1742 1528 1762 +3236 2 2 23 4 1528 1742 1776 +3237 2 2 23 4 1529 1530 1661 +3238 2 2 23 4 1529 1661 1747 +3239 2 2 23 4 1529 1747 1762 +3240 2 2 23 4 1661 1530 1733 +3241 2 2 23 4 1530 1726 1741 +3242 2 2 23 4 1733 1530 1741 +3243 2 2 23 4 1531 1532 1652 +3244 2 2 23 4 1532 1533 1542 +3245 2 2 23 4 1532 1542 1547 +3246 2 2 23 4 1532 1547 1652 +3247 2 2 23 4 1542 1533 1543 +3248 2 2 23 4 1543 1533 1544 +3249 2 2 23 4 1544 1533 1594 +3250 2 2 23 4 1605 1534 1767 +3251 2 2 23 4 1767 1534 1806 +3252 2 2 23 4 1633 1535 1763 +3253 2 2 23 4 1535 1695 1763 +3254 2 2 23 4 1537 1643 1650 +3255 2 2 23 4 1537 1650 1720 +3256 2 2 23 4 1537 1720 1755 +3257 2 2 23 4 1592 1538 1606 +3258 2 2 23 4 1606 1538 1720 +3259 2 2 23 4 1720 1538 1755 +3260 2 2 23 4 1702 1539 1790 +3261 2 2 23 4 1539 1709 1734 +3262 2 2 23 4 1540 1680 1758 +3263 2 2 23 4 1693 1540 1758 +3264 2 2 23 4 1541 1709 1804 +3265 2 2 23 4 1767 1541 1804 +3266 2 2 23 4 1541 1767 1806 +3267 2 2 23 4 1542 1543 1637 +3268 2 2 23 4 1543 1544 1545 +3269 2 2 23 4 1543 1545 1546 +3270 2 2 23 4 1543 1546 1637 +3271 2 2 23 4 1545 1544 1598 +3272 2 2 23 4 1544 1594 1777 +3273 2 2 23 4 1598 1544 1681 +3274 2 2 23 4 1681 1544 1777 +3275 2 2 23 4 1546 1545 1722 +3276 2 2 23 4 1545 1598 1599 +3277 2 2 23 4 1545 1599 1722 +3278 2 2 23 4 1637 1546 1740 +3279 2 2 23 4 1546 1722 1789 +3280 2 2 23 4 1740 1546 1789 +3281 2 2 23 4 1652 1547 1724 +3282 2 2 23 4 1549 1548 1552 +3283 2 2 23 4 1548 1551 1552 +3284 2 2 23 4 1551 1548 1791 +3285 2 2 23 4 1550 1549 1553 +3286 2 2 23 4 1549 1552 1655 +3287 2 2 23 4 1553 1549 1655 +3288 2 2 23 4 1550 1553 1554 +3289 2 2 23 4 1550 1554 1556 +3290 2 2 23 4 1550 1556 1738 +3291 2 2 23 4 1552 1551 1676 +3292 2 2 23 4 1551 1588 1787 +3293 2 2 23 4 1588 1551 1791 +3294 2 2 23 4 1676 1551 1787 +3295 2 2 23 4 1655 1552 1731 +3296 2 2 23 4 1552 1676 1775 +3297 2 2 23 4 1731 1552 1775 +3298 2 2 23 4 1554 1553 1593 +3299 2 2 23 4 1593 1553 1713 +3300 2 2 23 4 1553 1655 1793 +3301 2 2 23 4 1713 1553 1793 +3302 2 2 23 4 1556 1554 1603 +3303 2 2 23 4 1570 1554 1593 +3304 2 2 23 4 1554 1570 1603 +3305 2 2 23 4 1588 1555 1589 +3306 2 2 23 4 1555 1588 1791 +3307 2 2 23 4 1589 1555 1590 +3308 2 2 23 4 1590 1555 1737 +3309 2 2 23 4 1737 1555 1791 +3310 2 2 23 4 1556 1603 1784 +3311 2 2 23 4 1739 1556 1784 +3312 2 2 23 4 1557 1733 1741 +3313 2 2 23 4 1733 1557 1802 +3314 2 2 23 4 1557 1741 1794 +3315 2 2 23 4 1558 1571 1754 +3316 2 2 23 4 1678 1558 1745 +3317 2 2 23 4 1745 1558 1754 +3318 2 2 23 4 1560 1559 1798 +3319 2 2 23 4 1660 1559 1797 +3320 2 2 23 4 1559 1660 1798 +3321 2 2 23 4 1560 1670 1746 +3322 2 2 23 4 1670 1560 1798 +3323 2 2 23 4 1562 1561 1721 +3324 2 2 23 4 1561 1597 1781 +3325 2 2 23 4 1721 1561 1781 +3326 2 2 23 4 1562 1721 1728 +3327 2 2 23 4 1562 1728 1771 +3328 2 2 23 4 1564 1563 1567 +3329 2 2 23 4 1565 1564 1566 +3330 2 2 23 4 1566 1564 1632 +3331 2 2 23 4 1564 1567 1632 +3332 2 2 23 4 1565 1566 1629 +3333 2 2 23 4 1568 1565 1569 +3334 2 2 23 4 1569 1565 1629 +3335 2 2 23 4 1566 1620 1629 +3336 2 2 23 4 1620 1566 1765 +3337 2 2 23 4 1566 1632 1765 +3338 2 2 23 4 1632 1567 1671 +3339 2 2 23 4 1671 1567 1753 +3340 2 2 23 4 1570 1593 1756 +3341 2 2 23 4 1638 1571 1719 +3342 2 2 23 4 1571 1638 1754 +3343 2 2 23 4 1595 1572 1730 +3344 2 2 23 4 1573 1637 1740 +3345 2 2 23 4 1576 1575 1689 +3346 2 2 23 4 1577 1576 1578 +3347 2 2 23 4 1578 1576 1579 +3348 2 2 23 4 1579 1576 1689 +3349 2 2 23 4 1577 1578 1706 +3350 2 2 23 4 1611 1577 1706 +3351 2 2 23 4 1577 1611 1795 +3352 2 2 23 4 1578 1579 1588 +3353 2 2 23 4 1578 1588 1634 +3354 2 2 23 4 1578 1634 1706 +3355 2 2 23 4 1588 1579 1787 +3356 2 2 23 4 1579 1689 1787 +3357 2 2 23 4 1580 1731 1775 +3358 2 2 23 4 1581 1713 1793 +3359 2 2 23 4 1674 1582 1780 +3360 2 2 23 4 1582 1760 1780 +3361 2 2 23 4 1704 1583 1759 +3362 2 2 23 4 1583 1747 1759 +3363 2 2 23 4 1584 1742 1762 +3364 2 2 23 4 1586 1591 1796 +3365 2 2 23 4 1647 1586 1735 +3366 2 2 23 4 1679 1587 1750 +3367 2 2 23 4 1588 1589 1634 +3368 2 2 23 4 1589 1590 1774 +3369 2 2 23 4 1634 1589 1779 +3370 2 2 23 4 1589 1774 1779 +3371 2 2 23 4 1590 1705 1723 +3372 2 2 23 4 1705 1590 1737 +3373 2 2 23 4 1590 1723 1786 +3374 2 2 23 4 1774 1590 1786 +3375 2 2 23 4 1592 1606 1657 +3376 2 2 23 4 1669 1596 1783 +3377 2 2 23 4 1596 1669 1797 +3378 2 2 23 4 1599 1598 1610 +3379 2 2 23 4 1599 1610 1686 +3380 2 2 23 4 1599 1686 1792 +3381 2 2 23 4 1599 1692 1722 +3382 2 2 23 4 1692 1599 1792 +3383 2 2 23 4 1600 1601 1602 +3384 2 2 23 4 1600 1602 1608 +3385 2 2 23 4 1602 1601 1700 +3386 2 2 23 4 1608 1602 1701 +3387 2 2 23 4 1701 1602 1805 +3388 2 2 23 4 1603 1712 1784 +3389 2 2 23 4 1604 1616 1743 +3390 2 2 23 4 1682 1604 1743 +3391 2 2 23 4 1715 1605 1767 +3392 2 2 23 4 1657 1606 1729 +3393 2 2 23 4 1645 1607 1688 +3394 2 2 23 4 1621 1609 1633 +3395 2 2 23 4 1633 1609 1687 +3396 2 2 23 4 1614 1613 1615 +3397 2 2 23 4 1615 1613 1625 +3398 2 2 23 4 1614 1615 1651 +3399 2 2 23 4 1615 1625 1751 +3400 2 2 23 4 1651 1615 1654 +3401 2 2 23 4 1654 1615 1751 +3402 2 2 23 4 1616 1725 1743 +3403 2 2 23 4 1618 1619 1699 +3404 2 2 23 4 1619 1620 1764 +3405 2 2 23 4 1672 1619 1764 +3406 2 2 23 4 1629 1620 1707 +3407 2 2 23 4 1764 1620 1765 +3408 2 2 23 4 1621 1633 1763 +3409 2 2 23 4 1630 1622 1748 +3410 2 2 23 4 1622 1695 1748 +3411 2 2 23 4 1675 1623 1782 +3412 2 2 23 4 1627 1626 1628 +3413 2 2 23 4 1628 1626 1640 +3414 2 2 23 4 1627 1628 1648 +3415 2 2 23 4 1627 1648 1654 +3416 2 2 23 4 1627 1654 1751 +3417 2 2 23 4 1628 1640 1723 +3418 2 2 23 4 1648 1628 1705 +3419 2 2 23 4 1705 1628 1723 +3420 2 2 23 4 1630 1748 1749 +3421 2 2 23 4 1644 1631 1745 +3422 2 2 23 4 1631 1678 1745 +3423 2 2 23 4 1632 1757 1765 +3424 2 2 23 4 1634 1641 1706 +3425 2 2 23 4 1636 1646 1774 +3426 2 2 23 4 1636 1774 1786 +3427 2 2 23 4 1639 1740 1789 +3428 2 2 23 4 1650 1643 1710 +3429 2 2 23 4 1644 1745 1754 +3430 2 2 23 4 1774 1646 1779 +3431 2 2 23 4 1654 1648 1685 +3432 2 2 23 4 1653 1652 1724 +3433 2 2 23 4 1656 1702 1790 +3434 2 2 23 4 1717 1658 1799 +3435 2 2 23 4 1659 1721 1781 +3436 2 2 23 4 1747 1661 1759 +3437 2 2 23 4 1662 1663 1708 +3438 2 2 23 4 1663 1716 1732 +3439 2 2 23 4 1714 1664 1778 +3440 2 2 23 4 1665 1690 1716 +3441 2 2 23 4 1667 1668 1728 +3442 2 2 23 4 1728 1668 1771 +3443 2 2 23 4 1676 1689 1775 +3444 2 2 23 4 1689 1676 1787 +3445 2 2 23 4 1687 1701 1805 +3446 2 2 23 4 1692 1792 1800 +3447 2 2 26 5 38 1 2191 +3448 2 2 26 5 1 39 2191 +3449 2 2 26 5 57 4 2165 +3450 2 2 26 5 4 81 2165 +3451 2 2 26 5 47 5 2254 +3452 2 2 26 5 5 180 2254 +3453 2 2 26 5 6 48 2249 +3454 2 2 26 5 252 6 2249 +3455 2 2 26 5 161 9 2152 +3456 2 2 26 5 9 269 1818 +3457 2 2 26 5 9 1818 2152 +3458 2 2 26 5 10 137 1987 +3459 2 2 26 5 197 10 2126 +3460 2 2 26 5 10 1987 2126 +3461 2 2 26 5 11 33 2252 +3462 2 2 26 5 82 11 2252 +3463 2 2 26 5 76 12 2247 +3464 2 2 26 5 12 91 2247 +3465 2 2 26 5 33 34 2118 +3466 2 2 26 5 33 2118 2252 +3467 2 2 26 5 34 35 1836 +3468 2 2 26 5 34 1836 2118 +3469 2 2 26 5 35 36 2192 +3470 2 2 26 5 1836 35 2276 +3471 2 2 26 5 35 2192 2276 +3472 2 2 26 5 36 37 1831 +3473 2 2 26 5 36 1831 2192 +3474 2 2 26 5 37 38 2006 +3475 2 2 26 5 1831 37 2006 +3476 2 2 26 5 2006 38 2213 +3477 2 2 26 5 38 2191 2213 +3478 2 2 26 5 39 40 1839 +3479 2 2 26 5 39 1839 2191 +3480 2 2 26 5 40 41 2093 +3481 2 2 26 5 1839 40 2093 +3482 2 2 26 5 41 42 1822 +3483 2 2 26 5 41 1822 2093 +3484 2 2 26 5 42 43 2061 +3485 2 2 26 5 1822 42 2061 +3486 2 2 26 5 43 44 1828 +3487 2 2 26 5 43 1828 2061 +3488 2 2 26 5 44 45 2060 +3489 2 2 26 5 1828 44 2060 +3490 2 2 26 5 45 46 1837 +3491 2 2 26 5 45 1837 2060 +3492 2 2 26 5 46 47 2123 +3493 2 2 26 5 1837 46 2123 +3494 2 2 26 5 2123 47 2254 +3495 2 2 26 5 48 49 1844 +3496 2 2 26 5 48 1844 2249 +3497 2 2 26 5 49 50 1838 +3498 2 2 26 5 49 1838 1844 +3499 2 2 26 5 50 51 2094 +3500 2 2 26 5 1838 50 2094 +3501 2 2 26 5 51 52 1827 +3502 2 2 26 5 51 1827 2094 +3503 2 2 26 5 52 53 2074 +3504 2 2 26 5 1827 52 2074 +3505 2 2 26 5 53 54 1821 +3506 2 2 26 5 53 1821 2074 +3507 2 2 26 5 54 55 2072 +3508 2 2 26 5 1821 54 2072 +3509 2 2 26 5 55 56 1829 +3510 2 2 26 5 55 1829 2072 +3511 2 2 26 5 56 57 2067 +3512 2 2 26 5 1829 56 2067 +3513 2 2 26 5 2067 57 2165 +3514 2 2 26 5 77 76 1840 +3515 2 2 26 5 1840 76 2247 +3516 2 2 26 5 78 77 2127 +3517 2 2 26 5 77 1840 2127 +3518 2 2 26 5 79 78 1833 +3519 2 2 26 5 1833 78 2127 +3520 2 2 26 5 80 79 2029 +3521 2 2 26 5 79 1833 2029 +3522 2 2 26 5 81 80 1841 +3523 2 2 26 5 1841 80 2029 +3524 2 2 26 5 81 1841 2256 +3525 2 2 26 5 2165 81 2256 +3526 2 2 26 5 83 82 1842 +3527 2 2 26 5 1842 82 2252 +3528 2 2 26 5 84 83 2078 +3529 2 2 26 5 83 1842 2078 +3530 2 2 26 5 85 84 1826 +3531 2 2 26 5 1826 84 2078 +3532 2 2 26 5 86 85 2051 +3533 2 2 26 5 85 1826 2051 +3534 2 2 26 5 87 86 1835 +3535 2 2 26 5 1835 86 2051 +3536 2 2 26 5 88 87 2053 +3537 2 2 26 5 87 1835 2053 +3538 2 2 26 5 89 88 1825 +3539 2 2 26 5 1825 88 2053 +3540 2 2 26 5 90 89 2139 +3541 2 2 26 5 89 1825 2139 +3542 2 2 26 5 91 90 2133 +3543 2 2 26 5 2133 90 2139 +3544 2 2 26 5 91 2133 2247 +3545 2 2 26 5 137 138 2158 +3546 2 2 26 5 1987 137 2158 +3547 2 2 26 5 138 139 1820 +3548 2 2 26 5 138 1820 2158 +3549 2 2 26 5 139 140 2142 +3550 2 2 26 5 1820 139 2142 +3551 2 2 26 5 140 141 2015 +3552 2 2 26 5 140 2015 2142 +3553 2 2 26 5 141 142 2151 +3554 2 2 26 5 2015 141 2151 +3555 2 2 26 5 142 143 1815 +3556 2 2 26 5 142 1815 2151 +3557 2 2 26 5 143 144 2148 +3558 2 2 26 5 1815 143 2148 +3559 2 2 26 5 144 145 2010 +3560 2 2 26 5 144 2010 2148 +3561 2 2 26 5 145 146 2138 +3562 2 2 26 5 2010 145 2138 +3563 2 2 26 5 146 147 1819 +3564 2 2 26 5 146 1819 2138 +3565 2 2 26 5 147 148 2147 +3566 2 2 26 5 1819 147 2147 +3567 2 2 26 5 148 149 2004 +3568 2 2 26 5 148 2004 2147 +3569 2 2 26 5 149 150 2146 +3570 2 2 26 5 2004 149 2146 +3571 2 2 26 5 150 151 1816 +3572 2 2 26 5 150 1816 2146 +3573 2 2 26 5 151 152 2145 +3574 2 2 26 5 1816 151 2145 +3575 2 2 26 5 152 153 1941 +3576 2 2 26 5 152 1941 2145 +3577 2 2 26 5 153 154 2136 +3578 2 2 26 5 1941 153 2136 +3579 2 2 26 5 154 155 1824 +3580 2 2 26 5 154 1824 2136 +3581 2 2 26 5 155 156 2140 +3582 2 2 26 5 1824 155 2140 +3583 2 2 26 5 156 157 2134 +3584 2 2 26 5 156 2134 2140 +3585 2 2 26 5 157 158 1817 +3586 2 2 26 5 157 1817 2134 +3587 2 2 26 5 158 159 2135 +3588 2 2 26 5 1817 158 2135 +3589 2 2 26 5 159 160 2144 +3590 2 2 26 5 2135 159 2144 +3591 2 2 26 5 160 161 1960 +3592 2 2 26 5 160 1960 2144 +3593 2 2 26 5 1960 161 2152 +3594 2 2 26 5 180 181 1843 +3595 2 2 26 5 180 1843 2254 +3596 2 2 26 5 181 182 2085 +3597 2 2 26 5 1843 181 2085 +3598 2 2 26 5 182 183 1830 +3599 2 2 26 5 182 1830 2085 +3600 2 2 26 5 183 184 2112 +3601 2 2 26 5 1830 183 2112 +3602 2 2 26 5 184 185 1823 +3603 2 2 26 5 184 1823 2112 +3604 2 2 26 5 185 186 2115 +3605 2 2 26 5 1823 185 2115 +3606 2 2 26 5 186 187 2108 +3607 2 2 26 5 186 2108 2115 +3608 2 2 26 5 187 188 1809 +3609 2 2 26 5 187 1809 2108 +3610 2 2 26 5 188 189 2111 +3611 2 2 26 5 1809 188 2111 +3612 2 2 26 5 189 190 2097 +3613 2 2 26 5 189 2097 2111 +3614 2 2 26 5 190 191 1812 +3615 2 2 26 5 190 1812 2097 +3616 2 2 26 5 191 192 2107 +3617 2 2 26 5 1812 191 2107 +3618 2 2 26 5 192 193 2087 +3619 2 2 26 5 192 2087 2107 +3620 2 2 26 5 193 194 1813 +3621 2 2 26 5 193 1813 2087 +3622 2 2 26 5 194 195 2091 +3623 2 2 26 5 1813 194 2091 +3624 2 2 26 5 195 196 2080 +3625 2 2 26 5 195 2080 2091 +3626 2 2 26 5 196 197 1814 +3627 2 2 26 5 196 1814 2080 +3628 2 2 26 5 1814 197 2126 +3629 2 2 26 5 253 252 2130 +3630 2 2 26 5 2130 252 2249 +3631 2 2 26 5 254 253 1834 +3632 2 2 26 5 1834 253 2130 +3633 2 2 26 5 255 254 2086 +3634 2 2 26 5 254 1834 2086 +3635 2 2 26 5 256 255 1832 +3636 2 2 26 5 1832 255 2086 +3637 2 2 26 5 257 256 2117 +3638 2 2 26 5 256 1832 2117 +3639 2 2 26 5 258 257 1810 +3640 2 2 26 5 1810 257 2117 +3641 2 2 26 5 259 258 2116 +3642 2 2 26 5 258 1810 2116 +3643 2 2 26 5 260 259 2100 +3644 2 2 26 5 2100 259 2116 +3645 2 2 26 5 261 260 1808 +3646 2 2 26 5 1808 260 2100 +3647 2 2 26 5 262 261 2103 +3648 2 2 26 5 261 1808 2103 +3649 2 2 26 5 263 262 2095 +3650 2 2 26 5 2095 262 2103 +3651 2 2 26 5 264 263 1811 +3652 2 2 26 5 1811 263 2095 +3653 2 2 26 5 265 264 2096 +3654 2 2 26 5 264 1811 2096 +3655 2 2 26 5 266 265 2105 +3656 2 2 26 5 265 2096 2105 +3657 2 2 26 5 267 266 1862 +3658 2 2 26 5 1862 266 2105 +3659 2 2 26 5 268 267 2106 +3660 2 2 26 5 267 1862 2106 +3661 2 2 26 5 269 268 2079 +3662 2 2 26 5 2079 268 2106 +3663 2 2 26 5 1818 269 2079 +3664 2 2 26 5 1808 2100 2101 +3665 2 2 26 5 1808 2101 2271 +3666 2 2 26 5 2103 1808 2271 +3667 2 2 26 5 2108 1809 2218 +3668 2 2 26 5 1809 2111 2120 +3669 2 2 26 5 1809 2120 2218 +3670 2 2 26 5 2116 1810 2245 +3671 2 2 26 5 1810 2117 2197 +3672 2 2 26 5 1810 2197 2245 +3673 2 2 26 5 1811 2095 2153 +3674 2 2 26 5 2096 1811 2248 +3675 2 2 26 5 1811 2153 2248 +3676 2 2 26 5 2097 1812 2098 +3677 2 2 26 5 2098 1812 2194 +3678 2 2 26 5 1812 2107 2194 +3679 2 2 26 5 2087 1813 2088 +3680 2 2 26 5 2088 1813 2089 +3681 2 2 26 5 2089 1813 2091 +3682 2 2 26 5 2080 1814 2265 +3683 2 2 26 5 1814 2126 2268 +3684 2 2 26 5 2265 1814 2268 +3685 2 2 26 5 1815 2119 2151 +3686 2 2 26 5 2119 1815 2232 +3687 2 2 26 5 1815 2148 2232 +3688 2 2 26 5 1816 2145 2290 +3689 2 2 26 5 2146 1816 2279 +3690 2 2 26 5 2279 1816 2290 +3691 2 2 26 5 2134 1817 2246 +3692 2 2 26 5 1817 2135 2214 +3693 2 2 26 5 1817 2214 2246 +3694 2 2 26 5 1818 2079 2204 +3695 2 2 26 5 2152 1818 2188 +3696 2 2 26 5 2188 1818 2204 +3697 2 2 26 5 2138 1819 2258 +3698 2 2 26 5 1819 2147 2281 +3699 2 2 26 5 2258 1819 2281 +3700 2 2 26 5 2076 1820 2143 +3701 2 2 26 5 1820 2076 2158 +3702 2 2 26 5 1820 2142 2143 +3703 2 2 26 5 1821 2072 2073 +3704 2 2 26 5 1821 2073 2075 +3705 2 2 26 5 2074 1821 2075 +3706 2 2 26 5 1822 2061 2062 +3707 2 2 26 5 1822 2062 2063 +3708 2 2 26 5 1822 2063 2093 +3709 2 2 26 5 2112 1823 2113 +3710 2 2 26 5 2113 1823 2223 +3711 2 2 26 5 1823 2115 2223 +3712 2 2 26 5 2136 1824 2137 +3713 2 2 26 5 2137 1824 2206 +3714 2 2 26 5 1824 2140 2206 +3715 2 2 26 5 1825 2053 2216 +3716 2 2 26 5 2139 1825 2289 +3717 2 2 26 5 1825 2216 2289 +3718 2 2 26 5 2051 1826 2052 +3719 2 2 26 5 2052 1826 2122 +3720 2 2 26 5 1826 2078 2122 +3721 2 2 26 5 1827 2074 2237 +3722 2 2 26 5 2094 1827 2234 +3723 2 2 26 5 1827 2196 2234 +3724 2 2 26 5 2196 1827 2237 +3725 2 2 26 5 1828 2060 2083 +3726 2 2 26 5 2061 1828 2065 +3727 2 2 26 5 2065 1828 2083 +3728 2 2 26 5 1829 2067 2068 +3729 2 2 26 5 1829 2068 2069 +3730 2 2 26 5 1829 2069 2277 +3731 2 2 26 5 2072 1829 2277 +3732 2 2 26 5 2085 1830 2250 +3733 2 2 26 5 1830 2112 2251 +3734 2 2 26 5 2250 1830 2251 +3735 2 2 26 5 1831 2006 2159 +3736 2 2 26 5 1831 2159 2177 +3737 2 2 26 5 1831 2177 2192 +3738 2 2 26 5 1832 2086 2189 +3739 2 2 26 5 1832 2109 2117 +3740 2 2 26 5 2109 1832 2189 +3741 2 2 26 5 2029 1833 2231 +3742 2 2 26 5 2031 1833 2127 +3743 2 2 26 5 1833 2031 2163 +3744 2 2 26 5 1833 2163 2231 +3745 2 2 26 5 1845 1834 2130 +3746 2 2 26 5 1834 1845 2181 +3747 2 2 26 5 2086 1834 2181 +3748 2 2 26 5 1835 2051 2160 +3749 2 2 26 5 2053 1835 2200 +3750 2 2 26 5 1835 2160 2200 +3751 2 2 26 5 2118 1836 2161 +3752 2 2 26 5 2161 1836 2162 +3753 2 2 26 5 2162 1836 2276 +3754 2 2 26 5 2060 1837 2081 +3755 2 2 26 5 2081 1837 2082 +3756 2 2 26 5 2082 1837 2123 +3757 2 2 26 5 1844 1838 1845 +3758 2 2 26 5 1845 1838 1846 +3759 2 2 26 5 1846 1838 2094 +3760 2 2 26 5 1839 2093 2198 +3761 2 2 26 5 2191 1839 2213 +3762 2 2 26 5 1839 2198 2213 +3763 2 2 26 5 2040 1840 2133 +3764 2 2 26 5 1840 2040 2174 +3765 2 2 26 5 2127 1840 2174 +3766 2 2 26 5 2133 1840 2247 +3767 2 2 26 5 1841 2029 2184 +3768 2 2 26 5 1841 2184 2244 +3769 2 2 26 5 1841 2244 2256 +3770 2 2 26 5 2078 1842 2242 +3771 2 2 26 5 1842 2118 2242 +3772 2 2 26 5 2118 1842 2252 +3773 2 2 26 5 2082 1843 2085 +3774 2 2 26 5 1843 2082 2123 +3775 2 2 26 5 1843 2123 2254 +3776 2 2 26 5 1844 1845 2130 +3777 2 2 26 5 1844 2130 2249 +3778 2 2 26 5 1845 1846 1847 +3779 2 2 26 5 1845 1847 2181 +3780 2 2 26 5 1847 1846 1848 +3781 2 2 26 5 1848 1846 2234 +3782 2 2 26 5 1846 2094 2234 +3783 2 2 26 5 1847 1848 1849 +3784 2 2 26 5 1847 1849 2109 +3785 2 2 26 5 1847 2109 2189 +3786 2 2 26 5 2181 1847 2189 +3787 2 2 26 5 1849 1848 1850 +3788 2 2 26 5 1850 1848 2196 +3789 2 2 26 5 2196 1848 2234 +3790 2 2 26 5 1849 1850 1851 +3791 2 2 26 5 1849 1851 2007 +3792 2 2 26 5 1849 2007 2109 +3793 2 2 26 5 1851 1850 1852 +3794 2 2 26 5 1852 1850 1956 +3795 2 2 26 5 1956 1850 2196 +3796 2 2 26 5 1851 1852 1853 +3797 2 2 26 5 1851 1853 2058 +3798 2 2 26 5 2007 1851 2058 +3799 2 2 26 5 1853 1852 1854 +3800 2 2 26 5 1854 1852 2224 +3801 2 2 26 5 1852 1956 2224 +3802 2 2 26 5 1853 1854 1855 +3803 2 2 26 5 1853 1855 1916 +3804 2 2 26 5 1853 1916 2058 +3805 2 2 26 5 1855 1854 1856 +3806 2 2 26 5 1856 1854 2272 +3807 2 2 26 5 1854 2224 2272 +3808 2 2 26 5 1855 1856 1857 +3809 2 2 26 5 1855 1857 2066 +3810 2 2 26 5 1916 1855 2066 +3811 2 2 26 5 1857 1856 1858 +3812 2 2 26 5 1858 1856 1906 +3813 2 2 26 5 1906 1856 2272 +3814 2 2 26 5 1857 1858 1859 +3815 2 2 26 5 1857 1859 1860 +3816 2 2 26 5 1857 1860 2066 +3817 2 2 26 5 1859 1858 1892 +3818 2 2 26 5 1892 1858 2221 +3819 2 2 26 5 1858 1906 2221 +3820 2 2 26 5 1860 1859 1861 +3821 2 2 26 5 1861 1859 2180 +3822 2 2 26 5 1859 1892 2180 +3823 2 2 26 5 1860 1861 1863 +3824 2 2 26 5 1860 1863 2278 +3825 2 2 26 5 2066 1860 2278 +3826 2 2 26 5 1863 1861 1864 +3827 2 2 26 5 1864 1861 1880 +3828 2 2 26 5 1880 1861 2180 +3829 2 2 26 5 2104 1862 2105 +3830 2 2 26 5 1862 2104 2182 +3831 2 2 26 5 2106 1862 2182 +3832 2 2 26 5 1863 1864 1865 +3833 2 2 26 5 1863 1865 1901 +3834 2 2 26 5 1863 1901 2032 +3835 2 2 26 5 1863 2032 2278 +3836 2 2 26 5 1865 1864 1866 +3837 2 2 26 5 1866 1864 2274 +3838 2 2 26 5 1864 1880 2274 +3839 2 2 26 5 1865 1866 1867 +3840 2 2 26 5 1865 1867 2017 +3841 2 2 26 5 1901 1865 2017 +3842 2 2 26 5 1867 1866 1868 +3843 2 2 26 5 1868 1866 2183 +3844 2 2 26 5 2183 1866 2274 +3845 2 2 26 5 1867 1868 1869 +3846 2 2 26 5 1867 1869 2084 +3847 2 2 26 5 2017 1867 2238 +3848 2 2 26 5 1867 2084 2238 +3849 2 2 26 5 1869 1868 1870 +3850 2 2 26 5 1870 1868 1876 +3851 2 2 26 5 1876 1868 2183 +3852 2 2 26 5 1869 1870 1871 +3853 2 2 26 5 1869 1871 1872 +3854 2 2 26 5 1869 1872 2084 +3855 2 2 26 5 1871 1870 2179 +3856 2 2 26 5 1870 1876 1945 +3857 2 2 26 5 1870 1945 2179 +3858 2 2 26 5 1872 1871 1873 +3859 2 2 26 5 1873 1871 1874 +3860 2 2 26 5 1874 1871 2179 +3861 2 2 26 5 1872 1873 1877 +3862 2 2 26 5 1872 1877 1881 +3863 2 2 26 5 1872 1881 2280 +3864 2 2 26 5 2084 1872 2280 +3865 2 2 26 5 1873 1874 1875 +3866 2 2 26 5 1873 1875 2170 +3867 2 2 26 5 1877 1873 2170 +3868 2 2 26 5 1875 1874 1878 +3869 2 2 26 5 1878 1874 2253 +3870 2 2 26 5 1874 2179 2253 +3871 2 2 26 5 1875 1878 1879 +3872 2 2 26 5 1875 1879 2209 +3873 2 2 26 5 2170 1875 2209 +3874 2 2 26 5 1945 1876 1946 +3875 2 2 26 5 1946 1876 2092 +3876 2 2 26 5 2092 1876 2183 +3877 2 2 26 5 1881 1877 1882 +3878 2 2 26 5 1882 1877 2176 +3879 2 2 26 5 1877 2170 2176 +3880 2 2 26 5 1879 1878 1883 +3881 2 2 26 5 1883 1878 1888 +3882 2 2 26 5 1888 1878 2253 +3883 2 2 26 5 1879 1883 1884 +3884 2 2 26 5 1879 1884 1885 +3885 2 2 26 5 1879 1885 2286 +3886 2 2 26 5 2209 1879 2286 +3887 2 2 26 5 2156 1880 2164 +3888 2 2 26 5 1880 2156 2187 +3889 2 2 26 5 2164 1880 2180 +3890 2 2 26 5 1880 2187 2274 +3891 2 2 26 5 1881 1882 1889 +3892 2 2 26 5 1881 1889 2202 +3893 2 2 26 5 1881 2202 2280 +3894 2 2 26 5 1889 1882 1890 +3895 2 2 26 5 1890 1882 1891 +3896 2 2 26 5 1891 1882 2176 +3897 2 2 26 5 1884 1883 1900 +3898 2 2 26 5 1883 1888 2131 +3899 2 2 26 5 1900 1883 2131 +3900 2 2 26 5 1885 1884 1886 +3901 2 2 26 5 1886 1884 2186 +3902 2 2 26 5 1884 1900 2186 +3903 2 2 26 5 1885 1886 1887 +3904 2 2 26 5 1885 1887 2190 +3905 2 2 26 5 1885 2190 2239 +3906 2 2 26 5 1885 2239 2286 +3907 2 2 26 5 1887 1886 1897 +3908 2 2 26 5 1897 1886 1899 +3909 2 2 26 5 1899 1886 2186 +3910 2 2 26 5 1887 1897 1898 +3911 2 2 26 5 1887 1898 2207 +3912 2 2 26 5 2190 1887 2207 +3913 2 2 26 5 1888 2045 2047 +3914 2 2 26 5 2045 1888 2099 +3915 2 2 26 5 1888 2047 2131 +3916 2 2 26 5 2099 1888 2253 +3917 2 2 26 5 1889 1890 1902 +3918 2 2 26 5 1889 1902 1903 +3919 2 2 26 5 1889 1903 2202 +3920 2 2 26 5 1890 1891 1893 +3921 2 2 26 5 1890 1893 2043 +3922 2 2 26 5 1902 1890 2226 +3923 2 2 26 5 1890 2043 2226 +3924 2 2 26 5 1893 1891 1894 +3925 2 2 26 5 1894 1891 1909 +3926 2 2 26 5 1909 1891 2176 +3927 2 2 26 5 1892 2164 2180 +3928 2 2 26 5 2164 1892 2211 +3929 2 2 26 5 2211 1892 2221 +3930 2 2 26 5 1893 1894 1895 +3931 2 2 26 5 1893 1895 1910 +3932 2 2 26 5 1893 1910 2043 +3933 2 2 26 5 1895 1894 1896 +3934 2 2 26 5 1896 1894 2185 +3935 2 2 26 5 1894 1909 2185 +3936 2 2 26 5 1895 1896 1904 +3937 2 2 26 5 1895 1904 2011 +3938 2 2 26 5 1910 1895 2011 +3939 2 2 26 5 1904 1896 1905 +3940 2 2 26 5 1905 1896 1907 +3941 2 2 26 5 1907 1896 2185 +3942 2 2 26 5 1898 1897 2235 +3943 2 2 26 5 1897 1899 1917 +3944 2 2 26 5 1897 1917 2235 +3945 2 2 26 5 2171 1898 2235 +3946 2 2 26 5 1898 2171 2259 +3947 2 2 26 5 2207 1898 2259 +3948 2 2 26 5 1917 1899 1918 +3949 2 2 26 5 1918 1899 2125 +3950 2 2 26 5 2125 1899 2186 +3951 2 2 26 5 1900 2131 2154 +3952 2 2 26 5 1900 2154 2263 +3953 2 2 26 5 2186 1900 2263 +3954 2 2 26 5 1901 2017 2255 +3955 2 2 26 5 2032 1901 2287 +3956 2 2 26 5 2129 1901 2255 +3957 2 2 26 5 1901 2129 2287 +3958 2 2 26 5 1903 1902 1913 +3959 2 2 26 5 1913 1902 1915 +3960 2 2 26 5 1915 1902 2226 +3961 2 2 26 5 1903 1913 1914 +3962 2 2 26 5 1903 1914 1919 +3963 2 2 26 5 1903 1919 2202 +3964 2 2 26 5 1904 1905 2243 +3965 2 2 26 5 2011 1904 2012 +3966 2 2 26 5 2012 1904 2155 +3967 2 2 26 5 2155 1904 2243 +3968 2 2 26 5 1905 1907 1908 +3969 2 2 26 5 1905 1908 1911 +3970 2 2 26 5 1905 1911 2243 +3971 2 2 26 5 1906 2132 2199 +3972 2 2 26 5 2132 1906 2272 +3973 2 2 26 5 2168 1906 2199 +3974 2 2 26 5 1906 2168 2221 +3975 2 2 26 5 1908 1907 1944 +3976 2 2 26 5 1944 1907 2033 +3977 2 2 26 5 2033 1907 2185 +3978 2 2 26 5 1911 1908 1912 +3979 2 2 26 5 1912 1908 2201 +3980 2 2 26 5 1908 1944 2201 +3981 2 2 26 5 1909 2033 2185 +3982 2 2 26 5 2033 1909 2195 +3983 2 2 26 5 1909 2176 2195 +3984 2 2 26 5 1910 2011 2166 +3985 2 2 26 5 2043 1910 2261 +3986 2 2 26 5 1910 2166 2261 +3987 2 2 26 5 1911 1912 1921 +3988 2 2 26 5 1911 1921 1952 +3989 2 2 26 5 1911 1952 2030 +3990 2 2 26 5 1911 2030 2243 +3991 2 2 26 5 1921 1912 1922 +3992 2 2 26 5 1922 1912 1942 +3993 2 2 26 5 1942 1912 2201 +3994 2 2 26 5 1914 1913 2267 +3995 2 2 26 5 1913 1915 1939 +3996 2 2 26 5 1913 1939 2205 +3997 2 2 26 5 1913 2205 2267 +3998 2 2 26 5 1919 1914 1920 +3999 2 2 26 5 1920 1914 1923 +4000 2 2 26 5 1923 1914 1989 +4001 2 2 26 5 1989 1914 2267 +4002 2 2 26 5 1939 1915 1940 +4003 2 2 26 5 1940 1915 1969 +4004 2 2 26 5 1969 1915 2226 +4005 2 2 26 5 1916 2055 2057 +4006 2 2 26 5 2055 1916 2178 +4007 2 2 26 5 1916 2057 2058 +4008 2 2 26 5 1916 2066 2178 +4009 2 2 26 5 1917 1918 1974 +4010 2 2 26 5 1917 1974 1977 +4011 2 2 26 5 1917 1977 2235 +4012 2 2 26 5 1974 1918 1975 +4013 2 2 26 5 1975 1918 1976 +4014 2 2 26 5 1976 1918 2125 +4015 2 2 26 5 1919 1920 1953 +4016 2 2 26 5 1919 1953 2016 +4017 2 2 26 5 1919 2016 2202 +4018 2 2 26 5 1920 1923 1924 +4019 2 2 26 5 1920 1924 2203 +4020 2 2 26 5 1953 1920 2203 +4021 2 2 26 5 1921 1922 1925 +4022 2 2 26 5 1921 1925 2270 +4023 2 2 26 5 1952 1921 1962 +4024 2 2 26 5 1962 1921 2270 +4025 2 2 26 5 1925 1922 1926 +4026 2 2 26 5 1926 1922 2236 +4027 2 2 26 5 1922 1942 2236 +4028 2 2 26 5 1924 1923 1958 +4029 2 2 26 5 1958 1923 1961 +4030 2 2 26 5 1961 1923 1989 +4031 2 2 26 5 1924 1958 1959 +4032 2 2 26 5 1924 1959 1963 +4033 2 2 26 5 1924 1963 2203 +4034 2 2 26 5 1925 1926 1927 +4035 2 2 26 5 1925 1927 2217 +4036 2 2 26 5 1925 2217 2270 +4037 2 2 26 5 1927 1926 1928 +4038 2 2 26 5 1928 1926 1943 +4039 2 2 26 5 1943 1926 2236 +4040 2 2 26 5 1927 1928 1929 +4041 2 2 26 5 1927 1929 2285 +4042 2 2 26 5 2217 1927 2285 +4043 2 2 26 5 1929 1928 1930 +4044 2 2 26 5 1930 1928 2273 +4045 2 2 26 5 1928 1943 2273 +4046 2 2 26 5 1929 1930 1931 +4047 2 2 26 5 1929 1931 2121 +4048 2 2 26 5 1991 1929 2121 +4049 2 2 26 5 1929 1991 2285 +4050 2 2 26 5 1931 1930 1932 +4051 2 2 26 5 1932 1930 1933 +4052 2 2 26 5 1933 1930 2273 +4053 2 2 26 5 1931 1932 1935 +4054 2 2 26 5 1931 1935 2288 +4055 2 2 26 5 1931 1990 2121 +4056 2 2 26 5 1990 1931 2288 +4057 2 2 26 5 1932 1933 1934 +4058 2 2 26 5 1932 1934 2175 +4059 2 2 26 5 1935 1932 2175 +4060 2 2 26 5 1934 1933 1936 +4061 2 2 26 5 1936 1933 2041 +4062 2 2 26 5 2041 1933 2273 +4063 2 2 26 5 1934 1936 1937 +4064 2 2 26 5 1934 1937 1971 +4065 2 2 26 5 1934 1971 2175 +4066 2 2 26 5 1984 1935 1985 +4067 2 2 26 5 1935 1984 2288 +4068 2 2 26 5 1985 1935 1986 +4069 2 2 26 5 1986 1935 2175 +4070 2 2 26 5 1937 1936 1938 +4071 2 2 26 5 1938 1936 2171 +4072 2 2 26 5 1936 2041 2171 +4073 2 2 26 5 1937 1938 1965 +4074 2 2 26 5 1937 1965 2064 +4075 2 2 26 5 1971 1937 2064 +4076 2 2 26 5 1965 1938 2054 +4077 2 2 26 5 2054 1938 2141 +4078 2 2 26 5 2141 1938 2171 +4079 2 2 26 5 1939 1940 1982 +4080 2 2 26 5 1939 1982 1983 +4081 2 2 26 5 1939 1983 2205 +4082 2 2 26 5 1940 1969 1970 +4083 2 2 26 5 1940 1970 2000 +4084 2 2 26 5 1982 1940 2000 +4085 2 2 26 5 1941 2019 2145 +4086 2 2 26 5 2019 1941 2212 +4087 2 2 26 5 1941 2136 2212 +4088 2 2 26 5 1942 2201 2233 +4089 2 2 26 5 1942 2233 2236 +4090 2 2 26 5 2041 1943 2042 +4091 2 2 26 5 1943 2041 2273 +4092 2 2 26 5 2042 1943 2236 +4093 2 2 26 5 1944 2033 2034 +4094 2 2 26 5 1944 2034 2036 +4095 2 2 26 5 1944 2036 2201 +4096 2 2 26 5 1945 1946 1947 +4097 2 2 26 5 1945 1947 2099 +4098 2 2 26 5 1945 2099 2179 +4099 2 2 26 5 1947 1946 1948 +4100 2 2 26 5 1948 1946 1949 +4101 2 2 26 5 1949 1946 2092 +4102 2 2 26 5 1947 1948 1951 +4103 2 2 26 5 1947 1951 2045 +4104 2 2 26 5 1947 2045 2099 +4105 2 2 26 5 1948 1949 1950 +4106 2 2 26 5 1948 1950 2167 +4107 2 2 26 5 1951 1948 2167 +4108 2 2 26 5 1950 1949 1954 +4109 2 2 26 5 1954 1949 1972 +4110 2 2 26 5 1972 1949 2092 +4111 2 2 26 5 1950 1954 1955 +4112 2 2 26 5 1950 1955 1957 +4113 2 2 26 5 1950 1957 2167 +4114 2 2 26 5 2045 1951 2046 +4115 2 2 26 5 2046 1951 2215 +4116 2 2 26 5 1951 2167 2215 +4117 2 2 26 5 1952 1962 1966 +4118 2 2 26 5 1952 1966 1967 +4119 2 2 26 5 1952 1967 2030 +4120 2 2 26 5 2016 1953 2238 +4121 2 2 26 5 1953 2203 2255 +4122 2 2 26 5 2238 1953 2255 +4123 2 2 26 5 1955 1954 2283 +4124 2 2 26 5 1954 1972 1973 +4125 2 2 26 5 1954 1973 2283 +4126 2 2 26 5 1957 1955 1981 +4127 2 2 26 5 1981 1955 2031 +4128 2 2 26 5 2031 1955 2283 +4129 2 2 26 5 1956 2075 2224 +4130 2 2 26 5 2075 1956 2237 +4131 2 2 26 5 1956 2196 2237 +4132 2 2 26 5 1957 1981 2038 +4133 2 2 26 5 1957 2038 2039 +4134 2 2 26 5 1957 2039 2167 +4135 2 2 26 5 1959 1958 2021 +4136 2 2 26 5 1958 1961 2020 +4137 2 2 26 5 1958 2020 2021 +4138 2 2 26 5 1963 1959 1964 +4139 2 2 26 5 1964 1959 1993 +4140 2 2 26 5 1993 1959 2257 +4141 2 2 26 5 1959 2021 2257 +4142 2 2 26 5 2144 1960 2269 +4143 2 2 26 5 1960 2152 2269 +4144 2 2 26 5 1961 1989 2150 +4145 2 2 26 5 2020 1961 2022 +4146 2 2 26 5 2022 1961 2150 +4147 2 2 26 5 1966 1962 2050 +4148 2 2 26 5 2050 1962 2240 +4149 2 2 26 5 2240 1962 2270 +4150 2 2 26 5 1963 1964 2128 +4151 2 2 26 5 1963 2128 2129 +4152 2 2 26 5 1963 2129 2203 +4153 2 2 26 5 1964 1993 1994 +4154 2 2 26 5 1964 1994 1995 +4155 2 2 26 5 1964 1995 2128 +4156 2 2 26 5 1965 2054 2159 +4157 2 2 26 5 2064 1965 2173 +4158 2 2 26 5 1965 2159 2173 +4159 2 2 26 5 1967 1966 2076 +4160 2 2 26 5 1966 2050 2172 +4161 2 2 26 5 2076 1966 2262 +4162 2 2 26 5 1966 2172 2262 +4163 2 2 26 5 1967 2027 2030 +4164 2 2 26 5 2027 1967 2230 +4165 2 2 26 5 1967 2076 2230 +4166 2 2 26 5 2089 1968 2090 +4167 2 2 26 5 1968 2089 2157 +4168 2 2 26 5 2090 1968 2217 +4169 2 2 26 5 1968 2157 2240 +4170 2 2 26 5 2217 1968 2270 +4171 2 2 26 5 1968 2240 2270 +4172 2 2 26 5 1970 1969 2002 +4173 2 2 26 5 2002 1969 2284 +4174 2 2 26 5 1969 2226 2284 +4175 2 2 26 5 2000 1970 2019 +4176 2 2 26 5 1970 2002 2003 +4177 2 2 26 5 1970 2003 2241 +4178 2 2 26 5 2019 1970 2241 +4179 2 2 26 5 2063 1971 2064 +4180 2 2 26 5 1971 2063 2227 +4181 2 2 26 5 2175 1971 2227 +4182 2 2 26 5 1973 1972 1978 +4183 2 2 26 5 1978 1972 2156 +4184 2 2 26 5 1972 2092 2187 +4185 2 2 26 5 2156 1972 2187 +4186 2 2 26 5 1973 1978 1979 +4187 2 2 26 5 1973 1979 2231 +4188 2 2 26 5 2163 1973 2231 +4189 2 2 26 5 1973 2163 2283 +4190 2 2 26 5 1974 1975 2162 +4191 2 2 26 5 1977 1974 1988 +4192 2 2 26 5 1988 1974 2162 +4193 2 2 26 5 1975 1976 1992 +4194 2 2 26 5 1975 1992 2161 +4195 2 2 26 5 1975 2161 2162 +4196 2 2 26 5 1992 1976 2122 +4197 2 2 26 5 2122 1976 2169 +4198 2 2 26 5 1976 2125 2169 +4199 2 2 26 5 1977 1988 2177 +4200 2 2 26 5 1977 2054 2141 +4201 2 2 26 5 2054 1977 2177 +4202 2 2 26 5 1977 2141 2235 +4203 2 2 26 5 1979 1978 1980 +4204 2 2 26 5 1980 1978 2164 +4205 2 2 26 5 1978 2156 2164 +4206 2 2 26 5 1979 1980 2184 +4207 2 2 26 5 2029 1979 2184 +4208 2 2 26 5 1979 2029 2231 +4209 2 2 26 5 1980 2070 2184 +4210 2 2 26 5 2070 1980 2211 +4211 2 2 26 5 1980 2164 2211 +4212 2 2 26 5 1981 2031 2174 +4213 2 2 26 5 2038 1981 2040 +4214 2 2 26 5 2040 1981 2174 +4215 2 2 26 5 1983 1982 2001 +4216 2 2 26 5 1982 2000 2137 +4217 2 2 26 5 2001 1982 2206 +4218 2 2 26 5 1982 2137 2206 +4219 2 2 26 5 1983 2001 2026 +4220 2 2 26 5 1983 2026 2150 +4221 2 2 26 5 1983 2150 2205 +4222 2 2 26 5 1984 1985 2023 +4223 2 2 26 5 1984 2023 2044 +4224 2 2 26 5 1984 2044 2219 +4225 2 2 26 5 1984 2219 2288 +4226 2 2 26 5 1985 1986 2149 +4227 2 2 26 5 2023 1985 2024 +4228 2 2 26 5 2024 1985 2149 +4229 2 2 26 5 1986 2065 2149 +4230 2 2 26 5 2065 1986 2227 +4231 2 2 26 5 1986 2175 2227 +4232 2 2 26 5 2126 1987 2172 +4233 2 2 26 5 1987 2158 2262 +4234 2 2 26 5 2172 1987 2262 +4235 2 2 26 5 1988 2162 2276 +4236 2 2 26 5 2177 1988 2192 +4237 2 2 26 5 2192 1988 2276 +4238 2 2 26 5 2150 1989 2205 +4239 2 2 26 5 2205 1989 2267 +4240 2 2 26 5 1990 2098 2121 +4241 2 2 26 5 2098 1990 2220 +4242 2 2 26 5 2120 1990 2219 +4243 2 2 26 5 1990 2120 2220 +4244 2 2 26 5 2219 1990 2288 +4245 2 2 26 5 1991 2088 2090 +4246 2 2 26 5 2088 1991 2260 +4247 2 2 26 5 1991 2090 2285 +4248 2 2 26 5 1991 2121 2194 +4249 2 2 26 5 1991 2194 2260 +4250 2 2 26 5 2078 1992 2122 +4251 2 2 26 5 1992 2078 2242 +4252 2 2 26 5 2161 1992 2242 +4253 2 2 26 5 1994 1993 2104 +4254 2 2 26 5 2104 1993 2182 +4255 2 2 26 5 1993 2124 2182 +4256 2 2 26 5 2124 1993 2257 +4257 2 2 26 5 1995 1994 1996 +4258 2 2 26 5 1996 1994 2025 +4259 2 2 26 5 2025 1994 2104 +4260 2 2 26 5 1995 1996 1997 +4261 2 2 26 5 1995 1997 2225 +4262 2 2 26 5 2128 1995 2225 +4263 2 2 26 5 1997 1996 1998 +4264 2 2 26 5 1998 1996 1999 +4265 2 2 26 5 1999 1996 2025 +4266 2 2 26 5 1997 1998 2018 +4267 2 2 26 5 1997 2018 2032 +4268 2 2 26 5 1997 2032 2225 +4269 2 2 26 5 1998 1999 2055 +4270 2 2 26 5 2018 1998 2178 +4271 2 2 26 5 1998 2055 2178 +4272 2 2 26 5 1999 2025 2153 +4273 2 2 26 5 2055 1999 2056 +4274 2 2 26 5 2056 1999 2210 +4275 2 2 26 5 1999 2153 2210 +4276 2 2 26 5 2000 2019 2212 +4277 2 2 26 5 2137 2000 2212 +4278 2 2 26 5 2026 2001 2246 +4279 2 2 26 5 2134 2001 2140 +4280 2 2 26 5 2001 2134 2246 +4281 2 2 26 5 2140 2001 2206 +4282 2 2 26 5 2003 2002 2005 +4283 2 2 26 5 2005 2002 2261 +4284 2 2 26 5 2261 2002 2284 +4285 2 2 26 5 2003 2005 2008 +4286 2 2 26 5 2003 2008 2114 +4287 2 2 26 5 2003 2114 2241 +4288 2 2 26 5 2114 2004 2146 +4289 2 2 26 5 2004 2114 2228 +4290 2 2 26 5 2147 2004 2228 +4291 2 2 26 5 2008 2005 2009 +4292 2 2 26 5 2009 2005 2166 +4293 2 2 26 5 2166 2005 2261 +4294 2 2 26 5 2159 2006 2173 +4295 2 2 26 5 2173 2006 2213 +4296 2 2 26 5 2007 2058 2264 +4297 2 2 26 5 2109 2007 2197 +4298 2 2 26 5 2197 2007 2245 +4299 2 2 26 5 2245 2007 2264 +4300 2 2 26 5 2008 2009 2077 +4301 2 2 26 5 2008 2077 2228 +4302 2 2 26 5 2114 2008 2228 +4303 2 2 26 5 2077 2009 2110 +4304 2 2 26 5 2110 2009 2208 +4305 2 2 26 5 2009 2166 2208 +4306 2 2 26 5 2010 2138 2193 +4307 2 2 26 5 2148 2010 2282 +4308 2 2 26 5 2010 2193 2282 +4309 2 2 26 5 2011 2012 2013 +4310 2 2 26 5 2011 2013 2208 +4311 2 2 26 5 2166 2011 2208 +4312 2 2 26 5 2013 2012 2014 +4313 2 2 26 5 2014 2012 2027 +4314 2 2 26 5 2027 2012 2155 +4315 2 2 26 5 2013 2014 2037 +4316 2 2 26 5 2013 2037 2110 +4317 2 2 26 5 2013 2110 2208 +4318 2 2 26 5 2014 2027 2028 +4319 2 2 26 5 2014 2028 2119 +4320 2 2 26 5 2037 2014 2232 +4321 2 2 26 5 2014 2119 2232 +4322 2 2 26 5 2142 2015 2229 +4323 2 2 26 5 2015 2151 2266 +4324 2 2 26 5 2229 2015 2266 +4325 2 2 26 5 2084 2016 2238 +4326 2 2 26 5 2016 2084 2280 +4327 2 2 26 5 2202 2016 2280 +4328 2 2 26 5 2017 2238 2255 +4329 2 2 26 5 2032 2018 2278 +4330 2 2 26 5 2066 2018 2178 +4331 2 2 26 5 2018 2066 2278 +4332 2 2 26 5 2145 2019 2290 +4333 2 2 26 5 2019 2241 2290 +4334 2 2 26 5 2021 2020 2188 +4335 2 2 26 5 2020 2022 2269 +4336 2 2 26 5 2188 2020 2269 +4337 2 2 26 5 2021 2188 2204 +4338 2 2 26 5 2021 2204 2257 +4339 2 2 26 5 2144 2022 2214 +4340 2 2 26 5 2022 2144 2269 +4341 2 2 26 5 2022 2150 2214 +4342 2 2 26 5 2023 2024 2071 +4343 2 2 26 5 2044 2023 2223 +4344 2 2 26 5 2023 2071 2113 +4345 2 2 26 5 2023 2113 2223 +4346 2 2 26 5 2071 2024 2081 +4347 2 2 26 5 2081 2024 2083 +4348 2 2 26 5 2083 2024 2149 +4349 2 2 26 5 2025 2104 2275 +4350 2 2 26 5 2153 2025 2248 +4351 2 2 26 5 2248 2025 2275 +4352 2 2 26 5 2150 2026 2214 +4353 2 2 26 5 2214 2026 2246 +4354 2 2 26 5 2028 2027 2230 +4355 2 2 26 5 2030 2027 2155 +4356 2 2 26 5 2119 2028 2266 +4357 2 2 26 5 2229 2028 2230 +4358 2 2 26 5 2028 2229 2266 +4359 2 2 26 5 2030 2155 2243 +4360 2 2 26 5 2031 2127 2174 +4361 2 2 26 5 2163 2031 2283 +4362 2 2 26 5 2225 2032 2287 +4363 2 2 26 5 2034 2033 2035 +4364 2 2 26 5 2035 2033 2195 +4365 2 2 26 5 2034 2035 2239 +4366 2 2 26 5 2036 2034 2190 +4367 2 2 26 5 2190 2034 2239 +4368 2 2 26 5 2035 2195 2209 +4369 2 2 26 5 2035 2209 2286 +4370 2 2 26 5 2239 2035 2286 +4371 2 2 26 5 2036 2190 2207 +4372 2 2 26 5 2201 2036 2233 +4373 2 2 26 5 2036 2207 2233 +4374 2 2 26 5 2110 2037 2193 +4375 2 2 26 5 2193 2037 2282 +4376 2 2 26 5 2037 2232 2282 +4377 2 2 26 5 2039 2038 2289 +4378 2 2 26 5 2038 2040 2139 +4379 2 2 26 5 2038 2139 2289 +4380 2 2 26 5 2039 2059 2215 +4381 2 2 26 5 2059 2039 2216 +4382 2 2 26 5 2167 2039 2215 +4383 2 2 26 5 2216 2039 2289 +4384 2 2 26 5 2040 2133 2139 +4385 2 2 26 5 2041 2042 2259 +4386 2 2 26 5 2171 2041 2259 +4387 2 2 26 5 2207 2042 2233 +4388 2 2 26 5 2042 2207 2259 +4389 2 2 26 5 2233 2042 2236 +4390 2 2 26 5 2226 2043 2284 +4391 2 2 26 5 2043 2261 2284 +4392 2 2 26 5 2108 2044 2115 +4393 2 2 26 5 2044 2108 2218 +4394 2 2 26 5 2115 2044 2223 +4395 2 2 26 5 2044 2218 2219 +4396 2 2 26 5 2045 2046 2047 +4397 2 2 26 5 2047 2046 2048 +4398 2 2 26 5 2048 2046 2059 +4399 2 2 26 5 2059 2046 2215 +4400 2 2 26 5 2047 2048 2049 +4401 2 2 26 5 2047 2049 2131 +4402 2 2 26 5 2049 2048 2160 +4403 2 2 26 5 2048 2059 2200 +4404 2 2 26 5 2160 2048 2200 +4405 2 2 26 5 2131 2049 2154 +4406 2 2 26 5 2154 2049 2222 +4407 2 2 26 5 2049 2160 2222 +4408 2 2 26 5 2172 2050 2268 +4409 2 2 26 5 2050 2240 2265 +4410 2 2 26 5 2050 2265 2268 +4411 2 2 26 5 2051 2052 2160 +4412 2 2 26 5 2052 2122 2169 +4413 2 2 26 5 2160 2052 2222 +4414 2 2 26 5 2052 2169 2222 +4415 2 2 26 5 2059 2053 2200 +4416 2 2 26 5 2053 2059 2216 +4417 2 2 26 5 2159 2054 2177 +4418 2 2 26 5 2055 2056 2057 +4419 2 2 26 5 2057 2056 2101 +4420 2 2 26 5 2101 2056 2271 +4421 2 2 26 5 2056 2210 2271 +4422 2 2 26 5 2058 2057 2264 +4423 2 2 26 5 2057 2101 2102 +4424 2 2 26 5 2057 2102 2264 +4425 2 2 26 5 2060 2081 2083 +4426 2 2 26 5 2062 2061 2065 +4427 2 2 26 5 2063 2062 2227 +4428 2 2 26 5 2062 2065 2227 +4429 2 2 26 5 2063 2064 2198 +4430 2 2 26 5 2093 2063 2198 +4431 2 2 26 5 2064 2173 2198 +4432 2 2 26 5 2065 2083 2149 +4433 2 2 26 5 2068 2067 2256 +4434 2 2 26 5 2067 2165 2256 +4435 2 2 26 5 2069 2068 2070 +4436 2 2 26 5 2070 2068 2244 +4437 2 2 26 5 2244 2068 2256 +4438 2 2 26 5 2069 2070 2168 +4439 2 2 26 5 2069 2168 2199 +4440 2 2 26 5 2069 2199 2277 +4441 2 2 26 5 2168 2070 2211 +4442 2 2 26 5 2184 2070 2244 +4443 2 2 26 5 2071 2081 2082 +4444 2 2 26 5 2071 2082 2250 +4445 2 2 26 5 2113 2071 2251 +4446 2 2 26 5 2071 2250 2251 +4447 2 2 26 5 2073 2072 2277 +4448 2 2 26 5 2075 2073 2132 +4449 2 2 26 5 2132 2073 2199 +4450 2 2 26 5 2199 2073 2277 +4451 2 2 26 5 2074 2075 2237 +4452 2 2 26 5 2075 2132 2224 +4453 2 2 26 5 2076 2143 2230 +4454 2 2 26 5 2158 2076 2262 +4455 2 2 26 5 2077 2110 2258 +4456 2 2 26 5 2228 2077 2281 +4457 2 2 26 5 2077 2258 2281 +4458 2 2 26 5 2079 2106 2124 +4459 2 2 26 5 2079 2124 2204 +4460 2 2 26 5 2091 2080 2157 +4461 2 2 26 5 2157 2080 2265 +4462 2 2 26 5 2082 2085 2250 +4463 2 2 26 5 2086 2181 2189 +4464 2 2 26 5 2087 2088 2260 +4465 2 2 26 5 2107 2087 2260 +4466 2 2 26 5 2088 2089 2090 +4467 2 2 26 5 2089 2091 2157 +4468 2 2 26 5 2090 2217 2285 +4469 2 2 26 5 2092 2183 2187 +4470 2 2 26 5 2095 2103 2210 +4471 2 2 26 5 2153 2095 2210 +4472 2 2 26 5 2105 2096 2275 +4473 2 2 26 5 2096 2248 2275 +4474 2 2 26 5 2097 2098 2220 +4475 2 2 26 5 2111 2097 2220 +4476 2 2 26 5 2121 2098 2194 +4477 2 2 26 5 2179 2099 2253 +4478 2 2 26 5 2101 2100 2102 +4479 2 2 26 5 2102 2100 2116 +4480 2 2 26 5 2102 2116 2245 +4481 2 2 26 5 2102 2245 2264 +4482 2 2 26 5 2210 2103 2271 +4483 2 2 26 5 2104 2105 2275 +4484 2 2 26 5 2124 2106 2182 +4485 2 2 26 5 2194 2107 2260 +4486 2 2 26 5 2117 2109 2197 +4487 2 2 26 5 2110 2193 2258 +4488 2 2 26 5 2120 2111 2220 +4489 2 2 26 5 2112 2113 2251 +4490 2 2 26 5 2114 2146 2279 +4491 2 2 26 5 2241 2114 2279 +4492 2 2 26 5 2118 2161 2242 +4493 2 2 26 5 2151 2119 2266 +4494 2 2 26 5 2218 2120 2219 +4495 2 2 26 5 2204 2124 2257 +4496 2 2 26 5 2169 2125 2263 +4497 2 2 26 5 2125 2186 2263 +4498 2 2 26 5 2126 2172 2268 +4499 2 2 26 5 2129 2128 2287 +4500 2 2 26 5 2128 2225 2287 +4501 2 2 26 5 2203 2129 2255 +4502 2 2 26 5 2224 2132 2272 +4503 2 2 26 5 2135 2144 2214 +4504 2 2 26 5 2136 2137 2212 +4505 2 2 26 5 2193 2138 2258 +4506 2 2 26 5 2141 2171 2235 +4507 2 2 26 5 2143 2142 2229 +4508 2 2 26 5 2143 2229 2230 +4509 2 2 26 5 2147 2228 2281 +4510 2 2 26 5 2232 2148 2282 +4511 2 2 26 5 2152 2188 2269 +4512 2 2 26 5 2169 2154 2222 +4513 2 2 26 5 2154 2169 2263 +4514 2 2 26 5 2240 2157 2265 +4515 2 2 26 5 2168 2211 2221 +4516 2 2 26 5 2176 2170 2195 +4517 2 2 26 5 2195 2170 2209 +4518 2 2 26 5 2198 2173 2213 +4519 2 2 26 5 2187 2183 2274 +4520 2 2 26 5 2241 2279 2290 +4521 2 2 27 6 1 2333 15 +4522 2 2 27 6 38 2333 1 +4523 2 2 27 6 20 2336 2 +4524 2 2 27 6 2 2336 21 +4525 2 2 27 6 32 2335 11 +4526 2 2 27 6 11 2335 33 +4527 2 2 27 6 26 2334 13 +4528 2 2 27 6 13 2334 27 +4529 2 2 27 6 15 2296 16 +4530 2 2 27 6 15 2333 2296 +4531 2 2 27 6 16 2318 17 +4532 2 2 27 6 2296 2318 16 +4533 2 2 27 6 17 2292 18 +4534 2 2 27 6 17 2318 2292 +4535 2 2 27 6 18 2320 19 +4536 2 2 27 6 2292 2320 18 +4537 2 2 27 6 19 2328 20 +4538 2 2 27 6 2320 2328 19 +4539 2 2 27 6 2328 2336 20 +4540 2 2 27 6 21 2295 22 +4541 2 2 27 6 21 2336 2295 +4542 2 2 27 6 22 2329 23 +4543 2 2 27 6 2295 2329 22 +4544 2 2 27 6 23 2294 24 +4545 2 2 27 6 23 2329 2294 +4546 2 2 27 6 24 2332 25 +4547 2 2 27 6 2294 2332 24 +4548 2 2 27 6 25 2326 26 +4549 2 2 27 6 25 2332 2326 +4550 2 2 27 6 2326 2334 26 +4551 2 2 27 6 27 2297 28 +4552 2 2 27 6 27 2334 2297 +4553 2 2 27 6 28 2322 29 +4554 2 2 27 6 2297 2322 28 +4555 2 2 27 6 29 2291 30 +4556 2 2 27 6 29 2322 2291 +4557 2 2 27 6 30 2299 31 +4558 2 2 27 6 2291 2299 30 +4559 2 2 27 6 31 2327 32 +4560 2 2 27 6 2299 2327 31 +4561 2 2 27 6 2327 2335 32 +4562 2 2 27 6 33 2298 34 +4563 2 2 27 6 33 2335 2298 +4564 2 2 27 6 34 2321 35 +4565 2 2 27 6 2298 2321 34 +4566 2 2 27 6 35 2293 36 +4567 2 2 27 6 35 2321 2293 +4568 2 2 27 6 36 2331 37 +4569 2 2 27 6 2293 2331 36 +4570 2 2 27 6 37 2316 38 +4571 2 2 27 6 37 2331 2316 +4572 2 2 27 6 2316 2333 38 +4573 2 2 27 6 2291 2300 2299 +4574 2 2 27 6 2291 2301 2300 +4575 2 2 27 6 2291 2322 2301 +4576 2 2 27 6 2292 2318 2313 +4577 2 2 27 6 2313 2319 2292 +4578 2 2 27 6 2319 2320 2292 +4579 2 2 27 6 2293 2323 2315 +4580 2 2 27 6 2315 2331 2293 +4581 2 2 27 6 2321 2330 2293 +4582 2 2 27 6 2293 2330 2323 +4583 2 2 27 6 2294 2310 2309 +4584 2 2 27 6 2309 2311 2294 +4585 2 2 27 6 2294 2329 2310 +4586 2 2 27 6 2311 2332 2294 +4587 2 2 27 6 2295 2312 2310 +4588 2 2 27 6 2310 2329 2295 +4589 2 2 27 6 2295 2328 2312 +4590 2 2 27 6 2295 2336 2328 +4591 2 2 27 6 2296 2316 2314 +4592 2 2 27 6 2314 2318 2296 +4593 2 2 27 6 2296 2333 2316 +4594 2 2 27 6 2297 2325 2322 +4595 2 2 27 6 2297 2326 2325 +4596 2 2 27 6 2297 2334 2326 +4597 2 2 27 6 2298 2324 2321 +4598 2 2 27 6 2298 2327 2324 +4599 2 2 27 6 2298 2335 2327 +4600 2 2 27 6 2300 2324 2299 +4601 2 2 27 6 2324 2327 2299 +4602 2 2 27 6 2301 2302 2300 +4603 2 2 27 6 2302 2303 2300 +4604 2 2 27 6 2303 2324 2300 +4605 2 2 27 6 2301 2317 2302 +4606 2 2 27 6 2301 2325 2317 +4607 2 2 27 6 2322 2325 2301 +4608 2 2 27 6 2302 2304 2303 +4609 2 2 27 6 2302 2305 2304 +4610 2 2 27 6 2302 2317 2305 +4611 2 2 27 6 2304 2323 2303 +4612 2 2 27 6 2323 2330 2303 +4613 2 2 27 6 2303 2330 2324 +4614 2 2 27 6 2305 2306 2304 +4615 2 2 27 6 2306 2307 2304 +4616 2 2 27 6 2307 2323 2304 +4617 2 2 27 6 2305 2308 2306 +4618 2 2 27 6 2305 2309 2308 +4619 2 2 27 6 2305 2317 2309 +4620 2 2 27 6 2306 2313 2307 +4621 2 2 27 6 2308 2319 2306 +4622 2 2 27 6 2306 2319 2313 +4623 2 2 27 6 2313 2314 2307 +4624 2 2 27 6 2314 2315 2307 +4625 2 2 27 6 2315 2323 2307 +4626 2 2 27 6 2309 2310 2308 +4627 2 2 27 6 2310 2312 2308 +4628 2 2 27 6 2312 2319 2308 +4629 2 2 27 6 2309 2317 2311 +4630 2 2 27 6 2317 2325 2311 +4631 2 2 27 6 2325 2326 2311 +4632 2 2 27 6 2326 2332 2311 +4633 2 2 27 6 2312 2320 2319 +4634 2 2 27 6 2312 2328 2320 +4635 2 2 27 6 2313 2318 2314 +4636 2 2 27 6 2314 2316 2315 +4637 2 2 27 6 2316 2331 2315 +4638 2 2 27 6 2324 2330 2321 +4639 2 2 25 7 2 21 2409 +4640 2 2 25 7 102 2 2409 +4641 2 2 25 7 64 3 2405 +4642 2 2 25 7 3 111 2405 +4643 2 2 25 7 26 13 2406 +4644 2 2 25 7 13 92 2406 +4645 2 2 25 7 14 69 2408 +4646 2 2 25 7 101 14 2408 +4647 2 2 25 7 21 22 2348 +4648 2 2 25 7 21 2348 2409 +4649 2 2 25 7 22 23 2387 +4650 2 2 25 7 2348 22 2387 +4651 2 2 25 7 23 24 2341 +4652 2 2 25 7 23 2341 2387 +4653 2 2 25 7 24 25 2349 +4654 2 2 25 7 2341 24 2349 +4655 2 2 25 7 25 26 2346 +4656 2 2 25 7 25 2346 2349 +4657 2 2 25 7 2346 26 2406 +4658 2 2 25 7 65 64 2345 +4659 2 2 25 7 2345 64 2405 +4660 2 2 25 7 66 65 2379 +4661 2 2 25 7 65 2345 2379 +4662 2 2 25 7 67 66 2342 +4663 2 2 25 7 2342 66 2379 +4664 2 2 25 7 68 67 2375 +4665 2 2 25 7 67 2342 2375 +4666 2 2 25 7 69 68 2347 +4667 2 2 25 7 2347 68 2375 +4668 2 2 25 7 69 2347 2408 +4669 2 2 25 7 92 93 2406 +4670 2 2 25 7 93 94 2402 +4671 2 2 25 7 2382 93 2402 +4672 2 2 25 7 93 2382 2406 +4673 2 2 25 7 94 95 2339 +4674 2 2 25 7 94 2339 2402 +4675 2 2 25 7 95 96 2404 +4676 2 2 25 7 2339 95 2404 +4677 2 2 25 7 96 97 2385 +4678 2 2 25 7 96 2385 2404 +4679 2 2 25 7 97 98 2338 +4680 2 2 25 7 97 2338 2385 +4681 2 2 25 7 98 99 2391 +4682 2 2 25 7 2338 98 2391 +4683 2 2 25 7 99 100 2344 +4684 2 2 25 7 99 2344 2391 +4685 2 2 25 7 100 101 2398 +4686 2 2 25 7 2344 100 2398 +4687 2 2 25 7 2398 101 2408 +4688 2 2 25 7 103 102 2397 +4689 2 2 25 7 2397 102 2409 +4690 2 2 25 7 104 103 2343 +4691 2 2 25 7 2343 103 2397 +4692 2 2 25 7 105 104 2393 +4693 2 2 25 7 104 2343 2393 +4694 2 2 25 7 106 105 2337 +4695 2 2 25 7 2337 105 2393 +4696 2 2 25 7 107 106 2390 +4697 2 2 25 7 106 2337 2390 +4698 2 2 25 7 108 107 2396 +4699 2 2 25 7 107 2390 2396 +4700 2 2 25 7 109 108 2340 +4701 2 2 25 7 2340 108 2396 +4702 2 2 25 7 110 109 2403 +4703 2 2 25 7 109 2340 2403 +4704 2 2 25 7 111 110 2405 +4705 2 2 25 7 2380 110 2403 +4706 2 2 25 7 110 2380 2405 +4707 2 2 25 7 2390 2337 2414 +4708 2 2 25 7 2337 2393 2413 +4709 2 2 25 7 2400 2337 2413 +4710 2 2 25 7 2337 2400 2414 +4711 2 2 25 7 2385 2338 2401 +4712 2 2 25 7 2338 2391 2411 +4713 2 2 25 7 2401 2338 2411 +4714 2 2 25 7 2339 2372 2383 +4715 2 2 25 7 2372 2339 2384 +4716 2 2 25 7 2339 2383 2402 +4717 2 2 25 7 2384 2339 2404 +4718 2 2 25 7 2340 2395 2403 +4719 2 2 25 7 2395 2340 2407 +4720 2 2 25 7 2340 2396 2407 +4721 2 2 25 7 2341 2349 2350 +4722 2 2 25 7 2341 2350 2351 +4723 2 2 25 7 2341 2351 2387 +4724 2 2 25 7 2342 2373 2375 +4725 2 2 25 7 2373 2342 2376 +4726 2 2 25 7 2376 2342 2379 +4727 2 2 25 7 2393 2343 2399 +4728 2 2 25 7 2343 2397 2410 +4729 2 2 25 7 2399 2343 2410 +4730 2 2 25 7 2391 2344 2394 +4731 2 2 25 7 2394 2344 2412 +4732 2 2 25 7 2344 2398 2412 +4733 2 2 25 7 2345 2377 2379 +4734 2 2 25 7 2377 2345 2380 +4735 2 2 25 7 2380 2345 2405 +4736 2 2 25 7 2349 2346 2381 +4737 2 2 25 7 2381 2346 2382 +4738 2 2 25 7 2382 2346 2406 +4739 2 2 25 7 2374 2347 2375 +4740 2 2 25 7 2347 2374 2412 +4741 2 2 25 7 2347 2398 2408 +4742 2 2 25 7 2398 2347 2412 +4743 2 2 25 7 2378 2348 2387 +4744 2 2 25 7 2348 2378 2410 +4745 2 2 25 7 2348 2397 2409 +4746 2 2 25 7 2397 2348 2410 +4747 2 2 25 7 2350 2349 2381 +4748 2 2 25 7 2351 2350 2352 +4749 2 2 25 7 2352 2350 2386 +4750 2 2 25 7 2350 2381 2386 +4751 2 2 25 7 2351 2352 2353 +4752 2 2 25 7 2351 2353 2378 +4753 2 2 25 7 2351 2378 2387 +4754 2 2 25 7 2353 2352 2354 +4755 2 2 25 7 2354 2352 2355 +4756 2 2 25 7 2355 2352 2386 +4757 2 2 25 7 2353 2354 2369 +4758 2 2 25 7 2353 2369 2399 +4759 2 2 25 7 2378 2353 2399 +4760 2 2 25 7 2354 2355 2356 +4761 2 2 25 7 2354 2356 2389 +4762 2 2 25 7 2369 2354 2389 +4763 2 2 25 7 2356 2355 2357 +4764 2 2 25 7 2357 2355 2372 +4765 2 2 25 7 2372 2355 2386 +4766 2 2 25 7 2356 2357 2358 +4767 2 2 25 7 2356 2358 2359 +4768 2 2 25 7 2356 2359 2389 +4769 2 2 25 7 2358 2357 2367 +4770 2 2 25 7 2367 2357 2384 +4771 2 2 25 7 2357 2372 2384 +4772 2 2 25 7 2359 2358 2360 +4773 2 2 25 7 2360 2358 2392 +4774 2 2 25 7 2358 2367 2392 +4775 2 2 25 7 2359 2360 2361 +4776 2 2 25 7 2359 2361 2368 +4777 2 2 25 7 2359 2368 2389 +4778 2 2 25 7 2361 2360 2362 +4779 2 2 25 7 2362 2360 2363 +4780 2 2 25 7 2363 2360 2392 +4781 2 2 25 7 2361 2362 2388 +4782 2 2 25 7 2368 2361 2370 +4783 2 2 25 7 2370 2361 2388 +4784 2 2 25 7 2362 2363 2364 +4785 2 2 25 7 2362 2364 2365 +4786 2 2 25 7 2362 2365 2388 +4787 2 2 25 7 2364 2363 2366 +4788 2 2 25 7 2366 2363 2371 +4789 2 2 25 7 2371 2363 2392 +4790 2 2 25 7 2365 2364 2376 +4791 2 2 25 7 2364 2366 2373 +4792 2 2 25 7 2364 2373 2376 +4793 2 2 25 7 2365 2376 2377 +4794 2 2 25 7 2365 2377 2395 +4795 2 2 25 7 2388 2365 2395 +4796 2 2 25 7 2366 2371 2394 +4797 2 2 25 7 2373 2366 2374 +4798 2 2 25 7 2374 2366 2394 +4799 2 2 25 7 2367 2384 2385 +4800 2 2 25 7 2367 2385 2401 +4801 2 2 25 7 2392 2367 2401 +4802 2 2 25 7 2368 2370 2414 +4803 2 2 25 7 2389 2368 2400 +4804 2 2 25 7 2400 2368 2414 +4805 2 2 25 7 2369 2389 2400 +4806 2 2 25 7 2399 2369 2413 +4807 2 2 25 7 2369 2400 2413 +4808 2 2 25 7 2370 2388 2407 +4809 2 2 25 7 2390 2370 2396 +4810 2 2 25 7 2370 2390 2414 +4811 2 2 25 7 2396 2370 2407 +4812 2 2 25 7 2371 2392 2401 +4813 2 2 25 7 2394 2371 2411 +4814 2 2 25 7 2371 2401 2411 +4815 2 2 25 7 2383 2372 2386 +4816 2 2 25 7 2373 2374 2375 +4817 2 2 25 7 2374 2394 2412 +4818 2 2 25 7 2377 2376 2379 +4819 2 2 25 7 2377 2380 2395 +4820 2 2 25 7 2378 2399 2410 +4821 2 2 25 7 2395 2380 2403 +4822 2 2 25 7 2381 2382 2383 +4823 2 2 25 7 2381 2383 2386 +4824 2 2 25 7 2383 2382 2402 +4825 2 2 25 7 2385 2384 2404 +4826 2 2 25 7 2388 2395 2407 +4827 2 2 25 7 2391 2394 2411 +4828 2 2 25 7 2393 2399 2413 +4829 2 2 24 8 32 11 2484 +4830 2 2 24 8 11 82 2484 +4831 2 2 24 8 12 75 2486 +4832 2 2 24 8 91 12 2486 +4833 2 2 24 8 13 27 2487 +4834 2 2 24 8 92 13 2487 +4835 2 2 24 8 70 14 2483 +4836 2 2 24 8 14 101 2483 +4837 2 2 24 8 27 28 2426 +4838 2 2 24 8 27 2426 2487 +4839 2 2 24 8 28 29 2465 +4840 2 2 24 8 2426 28 2465 +4841 2 2 24 8 29 30 2419 +4842 2 2 24 8 29 2419 2465 +4843 2 2 24 8 30 31 2427 +4844 2 2 24 8 2419 30 2427 +4845 2 2 24 8 31 32 2423 +4846 2 2 24 8 31 2423 2427 +4847 2 2 24 8 2423 32 2484 +4848 2 2 24 8 71 70 2424 +4849 2 2 24 8 2424 70 2483 +4850 2 2 24 8 72 71 2457 +4851 2 2 24 8 71 2424 2457 +4852 2 2 24 8 73 72 2420 +4853 2 2 24 8 2420 72 2457 +4854 2 2 24 8 74 73 2453 +4855 2 2 24 8 73 2420 2453 +4856 2 2 24 8 75 74 2425 +4857 2 2 24 8 2425 74 2453 +4858 2 2 24 8 75 2425 2486 +4859 2 2 24 8 82 83 2484 +4860 2 2 24 8 83 84 2480 +4861 2 2 24 8 2460 83 2480 +4862 2 2 24 8 83 2460 2484 +4863 2 2 24 8 84 85 2417 +4864 2 2 24 8 84 2417 2480 +4865 2 2 24 8 85 86 2482 +4866 2 2 24 8 2417 85 2482 +4867 2 2 24 8 86 87 2463 +4868 2 2 24 8 86 2463 2482 +4869 2 2 24 8 87 88 2416 +4870 2 2 24 8 87 2416 2463 +4871 2 2 24 8 88 89 2469 +4872 2 2 24 8 2416 88 2469 +4873 2 2 24 8 89 90 2421 +4874 2 2 24 8 89 2421 2469 +4875 2 2 24 8 90 91 2476 +4876 2 2 24 8 2421 90 2476 +4877 2 2 24 8 2476 91 2486 +4878 2 2 24 8 93 92 2475 +4879 2 2 24 8 2475 92 2487 +4880 2 2 24 8 94 93 2422 +4881 2 2 24 8 2422 93 2475 +4882 2 2 24 8 95 94 2471 +4883 2 2 24 8 94 2422 2471 +4884 2 2 24 8 96 95 2415 +4885 2 2 24 8 2415 95 2471 +4886 2 2 24 8 97 96 2468 +4887 2 2 24 8 96 2415 2468 +4888 2 2 24 8 98 97 2474 +4889 2 2 24 8 97 2468 2474 +4890 2 2 24 8 99 98 2418 +4891 2 2 24 8 2418 98 2474 +4892 2 2 24 8 100 99 2481 +4893 2 2 24 8 99 2418 2481 +4894 2 2 24 8 101 100 2483 +4895 2 2 24 8 2458 100 2481 +4896 2 2 24 8 100 2458 2483 +4897 2 2 24 8 2468 2415 2492 +4898 2 2 24 8 2415 2471 2491 +4899 2 2 24 8 2478 2415 2491 +4900 2 2 24 8 2415 2478 2492 +4901 2 2 24 8 2463 2416 2479 +4902 2 2 24 8 2416 2469 2489 +4903 2 2 24 8 2479 2416 2489 +4904 2 2 24 8 2417 2450 2461 +4905 2 2 24 8 2450 2417 2462 +4906 2 2 24 8 2417 2461 2480 +4907 2 2 24 8 2462 2417 2482 +4908 2 2 24 8 2418 2473 2481 +4909 2 2 24 8 2473 2418 2485 +4910 2 2 24 8 2418 2474 2485 +4911 2 2 24 8 2419 2427 2428 +4912 2 2 24 8 2419 2428 2429 +4913 2 2 24 8 2419 2429 2465 +4914 2 2 24 8 2420 2451 2453 +4915 2 2 24 8 2451 2420 2454 +4916 2 2 24 8 2454 2420 2457 +4917 2 2 24 8 2469 2421 2472 +4918 2 2 24 8 2472 2421 2490 +4919 2 2 24 8 2421 2476 2490 +4920 2 2 24 8 2471 2422 2477 +4921 2 2 24 8 2422 2475 2488 +4922 2 2 24 8 2477 2422 2488 +4923 2 2 24 8 2427 2423 2459 +4924 2 2 24 8 2459 2423 2460 +4925 2 2 24 8 2460 2423 2484 +4926 2 2 24 8 2424 2455 2457 +4927 2 2 24 8 2455 2424 2458 +4928 2 2 24 8 2458 2424 2483 +4929 2 2 24 8 2452 2425 2453 +4930 2 2 24 8 2425 2452 2490 +4931 2 2 24 8 2425 2476 2486 +4932 2 2 24 8 2476 2425 2490 +4933 2 2 24 8 2456 2426 2465 +4934 2 2 24 8 2426 2456 2488 +4935 2 2 24 8 2426 2475 2487 +4936 2 2 24 8 2475 2426 2488 +4937 2 2 24 8 2428 2427 2459 +4938 2 2 24 8 2429 2428 2430 +4939 2 2 24 8 2430 2428 2464 +4940 2 2 24 8 2428 2459 2464 +4941 2 2 24 8 2429 2430 2431 +4942 2 2 24 8 2429 2431 2456 +4943 2 2 24 8 2429 2456 2465 +4944 2 2 24 8 2431 2430 2432 +4945 2 2 24 8 2432 2430 2433 +4946 2 2 24 8 2433 2430 2464 +4947 2 2 24 8 2431 2432 2447 +4948 2 2 24 8 2431 2447 2477 +4949 2 2 24 8 2456 2431 2477 +4950 2 2 24 8 2432 2433 2434 +4951 2 2 24 8 2432 2434 2467 +4952 2 2 24 8 2447 2432 2467 +4953 2 2 24 8 2434 2433 2435 +4954 2 2 24 8 2435 2433 2450 +4955 2 2 24 8 2450 2433 2464 +4956 2 2 24 8 2434 2435 2436 +4957 2 2 24 8 2434 2436 2437 +4958 2 2 24 8 2434 2437 2467 +4959 2 2 24 8 2436 2435 2445 +4960 2 2 24 8 2445 2435 2462 +4961 2 2 24 8 2435 2450 2462 +4962 2 2 24 8 2437 2436 2438 +4963 2 2 24 8 2438 2436 2470 +4964 2 2 24 8 2436 2445 2470 +4965 2 2 24 8 2437 2438 2439 +4966 2 2 24 8 2437 2439 2446 +4967 2 2 24 8 2437 2446 2467 +4968 2 2 24 8 2439 2438 2440 +4969 2 2 24 8 2440 2438 2441 +4970 2 2 24 8 2441 2438 2470 +4971 2 2 24 8 2439 2440 2466 +4972 2 2 24 8 2446 2439 2448 +4973 2 2 24 8 2448 2439 2466 +4974 2 2 24 8 2440 2441 2442 +4975 2 2 24 8 2440 2442 2443 +4976 2 2 24 8 2440 2443 2466 +4977 2 2 24 8 2442 2441 2444 +4978 2 2 24 8 2444 2441 2449 +4979 2 2 24 8 2449 2441 2470 +4980 2 2 24 8 2443 2442 2454 +4981 2 2 24 8 2442 2444 2451 +4982 2 2 24 8 2442 2451 2454 +4983 2 2 24 8 2443 2454 2455 +4984 2 2 24 8 2443 2455 2473 +4985 2 2 24 8 2466 2443 2473 +4986 2 2 24 8 2444 2449 2472 +4987 2 2 24 8 2451 2444 2452 +4988 2 2 24 8 2452 2444 2472 +4989 2 2 24 8 2445 2462 2463 +4990 2 2 24 8 2445 2463 2479 +4991 2 2 24 8 2470 2445 2479 +4992 2 2 24 8 2446 2448 2492 +4993 2 2 24 8 2467 2446 2478 +4994 2 2 24 8 2478 2446 2492 +4995 2 2 24 8 2447 2467 2478 +4996 2 2 24 8 2477 2447 2491 +4997 2 2 24 8 2447 2478 2491 +4998 2 2 24 8 2448 2466 2485 +4999 2 2 24 8 2468 2448 2474 +5000 2 2 24 8 2448 2468 2492 +5001 2 2 24 8 2474 2448 2485 +5002 2 2 24 8 2449 2470 2479 +5003 2 2 24 8 2472 2449 2489 +5004 2 2 24 8 2449 2479 2489 +5005 2 2 24 8 2461 2450 2464 +5006 2 2 24 8 2451 2452 2453 +5007 2 2 24 8 2452 2472 2490 +5008 2 2 24 8 2455 2454 2457 +5009 2 2 24 8 2455 2458 2473 +5010 2 2 24 8 2456 2477 2488 +5011 2 2 24 8 2473 2458 2481 +5012 2 2 24 8 2459 2460 2461 +5013 2 2 24 8 2459 2461 2464 +5014 2 2 24 8 2461 2460 2480 +5015 2 2 24 8 2463 2462 2482 +5016 2 2 24 8 2466 2473 2485 +5017 2 2 24 8 2469 2472 2489 +5018 2 2 24 8 2471 2477 2491 +5019 2 2 22 9 63 3 2538 +5020 2 2 22 9 3 64 2538 +5021 2 2 22 9 4 58 2535 +5022 2 2 22 9 81 4 2535 +5023 2 2 22 9 75 12 2537 +5024 2 2 22 9 12 76 2537 +5025 2 2 22 9 69 14 2536 +5026 2 2 22 9 14 70 2536 +5027 2 2 22 9 58 59 2498 +5028 2 2 22 9 58 2498 2535 +5029 2 2 22 9 59 60 2520 +5030 2 2 22 9 2498 59 2520 +5031 2 2 22 9 60 61 2494 +5032 2 2 22 9 60 2494 2520 +5033 2 2 22 9 61 62 2522 +5034 2 2 22 9 2494 61 2522 +5035 2 2 22 9 62 63 2530 +5036 2 2 22 9 2522 62 2530 +5037 2 2 22 9 2530 63 2538 +5038 2 2 22 9 64 65 2497 +5039 2 2 22 9 64 2497 2538 +5040 2 2 22 9 65 66 2531 +5041 2 2 22 9 2497 65 2531 +5042 2 2 22 9 66 67 2496 +5043 2 2 22 9 66 2496 2531 +5044 2 2 22 9 67 68 2534 +5045 2 2 22 9 2496 67 2534 +5046 2 2 22 9 68 69 2528 +5047 2 2 22 9 68 2528 2534 +5048 2 2 22 9 2528 69 2536 +5049 2 2 22 9 70 71 2499 +5050 2 2 22 9 70 2499 2536 +5051 2 2 22 9 71 72 2524 +5052 2 2 22 9 2499 71 2524 +5053 2 2 22 9 72 73 2493 +5054 2 2 22 9 72 2493 2524 +5055 2 2 22 9 73 74 2501 +5056 2 2 22 9 2493 73 2501 +5057 2 2 22 9 74 75 2529 +5058 2 2 22 9 2501 74 2529 +5059 2 2 22 9 2529 75 2537 +5060 2 2 22 9 76 77 2500 +5061 2 2 22 9 76 2500 2537 +5062 2 2 22 9 77 78 2523 +5063 2 2 22 9 2500 77 2523 +5064 2 2 22 9 78 79 2495 +5065 2 2 22 9 78 2495 2523 +5066 2 2 22 9 79 80 2533 +5067 2 2 22 9 2495 79 2533 +5068 2 2 22 9 80 81 2518 +5069 2 2 22 9 80 2518 2533 +5070 2 2 22 9 2518 81 2535 +5071 2 2 22 9 2493 2501 2502 +5072 2 2 22 9 2493 2502 2503 +5073 2 2 22 9 2493 2503 2524 +5074 2 2 22 9 2494 2515 2520 +5075 2 2 22 9 2515 2494 2521 +5076 2 2 22 9 2521 2494 2522 +5077 2 2 22 9 2495 2517 2525 +5078 2 2 22 9 2517 2495 2533 +5079 2 2 22 9 2523 2495 2532 +5080 2 2 22 9 2495 2525 2532 +5081 2 2 22 9 2496 2511 2512 +5082 2 2 22 9 2511 2496 2513 +5083 2 2 22 9 2496 2512 2531 +5084 2 2 22 9 2513 2496 2534 +5085 2 2 22 9 2497 2512 2514 +5086 2 2 22 9 2512 2497 2531 +5087 2 2 22 9 2497 2514 2530 +5088 2 2 22 9 2497 2530 2538 +5089 2 2 22 9 2498 2516 2518 +5090 2 2 22 9 2516 2498 2520 +5091 2 2 22 9 2498 2518 2535 +5092 2 2 22 9 2499 2524 2527 +5093 2 2 22 9 2499 2527 2528 +5094 2 2 22 9 2499 2528 2536 +5095 2 2 22 9 2500 2523 2526 +5096 2 2 22 9 2500 2526 2529 +5097 2 2 22 9 2500 2529 2537 +5098 2 2 22 9 2502 2501 2526 +5099 2 2 22 9 2526 2501 2529 +5100 2 2 22 9 2503 2502 2504 +5101 2 2 22 9 2504 2502 2505 +5102 2 2 22 9 2505 2502 2526 +5103 2 2 22 9 2503 2504 2519 +5104 2 2 22 9 2503 2519 2527 +5105 2 2 22 9 2524 2503 2527 +5106 2 2 22 9 2504 2505 2506 +5107 2 2 22 9 2504 2506 2507 +5108 2 2 22 9 2504 2507 2519 +5109 2 2 22 9 2506 2505 2525 +5110 2 2 22 9 2525 2505 2532 +5111 2 2 22 9 2505 2526 2532 +5112 2 2 22 9 2507 2506 2508 +5113 2 2 22 9 2508 2506 2509 +5114 2 2 22 9 2509 2506 2525 +5115 2 2 22 9 2507 2508 2510 +5116 2 2 22 9 2507 2510 2511 +5117 2 2 22 9 2507 2511 2519 +5118 2 2 22 9 2508 2509 2515 +5119 2 2 22 9 2510 2508 2521 +5120 2 2 22 9 2508 2515 2521 +5121 2 2 22 9 2515 2509 2516 +5122 2 2 22 9 2516 2509 2517 +5123 2 2 22 9 2517 2509 2525 +5124 2 2 22 9 2511 2510 2512 +5125 2 2 22 9 2512 2510 2514 +5126 2 2 22 9 2514 2510 2521 +5127 2 2 22 9 2511 2513 2519 +5128 2 2 22 9 2519 2513 2527 +5129 2 2 22 9 2527 2513 2528 +5130 2 2 22 9 2528 2513 2534 +5131 2 2 22 9 2514 2521 2522 +5132 2 2 22 9 2514 2522 2530 +5133 2 2 22 9 2515 2516 2520 +5134 2 2 22 9 2516 2517 2518 +5135 2 2 22 9 2518 2517 2533 +5136 2 2 22 9 2526 2523 2532 +5137 4 2 28 1 1501 1500 2915 3630 +5138 4 2 28 1 771 227 750 3303 +5139 4 2 28 1 2654 2592 2859 3342 +5140 4 2 28 1 675 746 653 3097 +5141 4 2 28 1 1282 802 1281 3309 +5142 4 2 28 1 220 221 1261 3342 +5143 4 2 28 1 2323 3220 2814 3355 +5144 4 2 28 1 2547 3113 2712 3174 +5145 4 2 28 1 2663 2794 2968 3169 +5146 4 2 28 1 2835 2869 3319 3858 +5147 4 2 28 1 1973 2804 2910 3528 +5148 4 2 28 1 2090 2987 2998 3332 +5149 4 2 28 1 2754 2896 2801 2947 +5150 4 2 28 1 2622 2662 2612 2803 +5151 4 2 28 1 2547 3105 3113 3174 +5152 4 2 28 1 2731 2592 2866 3342 +5153 4 2 28 1 2459 3040 2928 3210 +5154 4 2 28 1 2485 2418 3271 3449 +5155 4 2 28 1 2875 2614 3246 3798 +5156 4 2 28 1 1253 977 1250 3181 +5157 4 2 28 1 1893 1894 2751 3154 +5158 4 2 28 1 2180 1861 2842 3739 +5159 4 2 28 1 907 908 1128 3817 +5160 4 2 28 1 1596 3198 2977 3238 +5161 4 2 28 1 2520 2892 2861 3703 +5162 4 2 28 1 1369 2861 2520 2892 +5163 4 2 28 1 2792 3360 2631 3400 +5164 4 2 28 1 1505 2697 2623 2907 +5165 4 2 28 1 2605 3137 2592 3613 +5166 4 2 28 1 1420 1417 1432 2761 +5167 4 2 28 1 1257 1018 1272 3182 +5168 4 2 28 1 2804 1973 2910 3373 +5169 4 2 28 1 203 795 204 3047 +5170 4 2 28 1 1100 1288 1057 3227 +5171 4 2 28 1 667 534 657 3249 +5172 4 2 28 1 283 416 415 3332 +5173 4 2 28 1 2161 2713 3040 3415 +5174 4 2 28 1 2835 3319 3117 3858 +5175 4 2 28 1 559 557 3089 3699 +5176 4 2 28 1 2161 3040 3210 3415 +5177 4 2 28 1 2570 3391 2639 3799 +5178 4 2 28 1 2592 2551 2961 3035 +5179 4 2 28 1 2629 3045 2810 3582 +5180 4 2 28 1 650 761 626 3785 +5181 4 2 28 1 1417 2761 1420 3202 +5182 4 2 28 1 2861 2892 1369 3503 +5183 4 2 28 1 557 576 559 3089 +5184 4 2 28 1 1115 1306 1114 3277 +5185 4 2 28 1 2650 2759 2622 2844 +5186 4 2 28 1 2307 3094 2814 3220 +5187 4 2 28 1 488 504 461 3707 +5188 4 2 28 1 2485 3271 2780 3449 +5189 4 2 28 1 1760 3362 2686 3676 +5190 4 2 28 1 2569 3065 2938 3427 +5191 4 2 28 1 2741 3228 1735 3247 +5192 4 2 28 1 1128 911 907 3629 +5193 4 2 28 1 1102 1729 789 3083 +5194 4 2 28 1 2654 2866 2592 3342 +5195 4 2 28 1 2418 2391 3271 3449 +5196 4 2 28 1 2875 3071 2614 3798 +5197 4 2 28 1 2629 3002 2810 3045 +5198 4 2 28 1 205 520 518 2844 +5199 4 2 28 1 2721 3419 2539 3576 +5200 4 2 28 1 1735 2741 1677 3375 +5201 4 2 28 1 1787 1676 3255 3358 +5202 4 2 28 1 2612 2650 2844 2937 +5203 4 2 28 1 965 984 1015 3809 +5204 4 2 28 1 2547 3105 2876 3113 +5205 4 2 28 1 3081 3178 2898 3346 +5206 4 2 28 1 2592 2551 3035 3613 +5207 4 2 28 1 2839 2903 2683 3345 +5208 4 2 28 1 2629 3068 3045 3582 +5209 4 2 28 1 2161 2713 3415 3476 +5210 4 2 28 1 2994 3484 3185 3718 +5211 4 2 28 1 2781 2573 3185 3213 +5212 4 2 28 1 1787 3358 3255 3593 +5213 4 2 28 1 2323 3355 2814 3725 +5214 4 2 28 1 2588 3117 2835 3319 +5215 4 2 28 1 1038 1236 1231 3859 +5216 4 2 28 1 1236 862 1231 3147 +5217 4 2 28 1 2325 3031 3103 3260 +5218 4 2 28 1 722 748 532 3333 +5219 4 2 28 1 1560 2620 1727 2682 +5220 4 2 28 1 1902 1890 1889 2845 +5221 4 2 28 1 530 678 223 3441 +5222 4 2 28 1 940 1002 941 3831 +5223 4 2 28 1 2320 3247 3228 3685 +5224 4 2 28 1 592 583 591 3389 +5225 4 2 28 1 2869 3043 2670 3289 +5226 4 2 28 1 2567 3238 2635 3687 +5227 4 2 28 1 2721 3172 2539 3419 +5228 4 2 28 1 1459 2790 1426 3171 +5229 4 2 28 1 1410 1424 1460 3427 +5230 4 2 28 1 2124 2257 3118 3273 +5231 4 2 28 1 2360 2806 2967 3311 +5232 4 2 28 1 2806 2670 3043 3289 +5233 4 2 28 1 2459 2928 2461 3210 +5234 4 2 28 1 1652 1547 1532 3208 +5235 4 2 28 1 1938 1965 2054 3642 +5236 4 2 28 1 2835 3319 2869 3709 +5237 4 2 28 1 1387 1389 1388 3215 +5238 4 2 28 1 2683 2903 2839 3292 +5239 4 2 28 1 2670 3043 2869 3832 +5240 4 2 28 1 1776 2990 2824 3384 +5241 4 2 28 1 2301 3103 3031 3197 +5242 4 2 28 1 1481 1501 2915 3529 +5243 4 2 28 1 1144 894 897 3674 +5244 4 2 28 1 1465 1464 1699 3238 +5245 4 2 28 1 2579 2639 3391 3799 +5246 4 2 28 1 526 654 750 3421 +5247 4 2 28 1 622 611 591 3389 +5248 4 2 28 1 2608 3419 2903 3711 +5249 4 2 28 1 2849 2720 3232 3559 +5250 4 2 28 1 936 938 1162 3800 +5251 4 2 28 1 2317 3103 3069 3260 +5252 4 2 28 1 1894 1891 1893 3000 +5253 4 2 28 1 2394 2780 3071 3271 +5254 4 2 28 1 1018 1257 1256 3181 +5255 4 2 28 1 2994 3483 2864 3484 +5256 4 2 28 1 1547 1724 2979 3175 +5257 4 2 28 1 2903 3345 2839 3419 +5258 4 2 28 1 944 1215 933 3792 +5259 4 2 28 1 2394 2780 2371 3071 +5260 4 2 28 1 1504 2623 1503 3491 +5261 4 2 28 1 2806 2670 2967 3043 +5262 4 2 28 1 2670 3023 3043 3832 +5263 4 2 28 1 823 878 821 3256 +5264 4 2 28 1 484 3109 280 3672 +5265 4 2 28 1 2525 2805 3030 3108 +5266 4 2 28 1 942 937 1209 3792 +5267 4 2 28 1 2360 2967 2806 3216 +5268 4 2 28 1 2573 2781 3161 3213 +5269 4 2 28 1 1735 3228 2741 3375 +5270 4 2 28 1 2090 1968 2089 3332 +5271 4 2 28 1 2309 3069 3351 3685 +5272 4 2 28 1 2547 2712 2990 3174 +5273 4 2 28 1 199 1106 200 3599 +5274 4 2 28 1 1119 1268 1118 3535 +5275 4 2 28 1 2632 3220 3055 3330 +5276 4 2 28 1 2323 2307 2814 3220 +5277 4 2 28 1 425 212 213 3314 +5278 4 2 28 1 2325 3103 2317 3260 +5279 4 2 28 1 2372 2810 3104 3262 +5280 4 2 28 1 295 271 294 3243 +5281 4 2 28 1 2120 2680 2885 3313 +5282 4 2 28 1 2371 3071 2780 3216 +5283 4 2 28 1 1024 1287 1053 3305 +5284 4 2 28 1 2167 3066 2720 3755 +5285 4 2 28 1 865 970 1178 3695 +5286 4 2 28 1 3027 3111 3067 3346 +5287 4 2 28 1 2553 2792 2590 3400 +5288 4 2 28 1 2539 3172 2903 3419 +5289 4 2 28 1 581 590 580 3365 +5290 4 2 28 1 579 580 578 3365 +5291 4 2 28 1 2903 2683 3345 3866 +5292 4 2 28 1 1656 1726 2865 3268 +5293 4 2 28 1 1738 1420 1432 2761 +5294 4 2 28 1 2991 3351 3069 3685 +5295 4 2 28 1 1605 1397 1405 3427 +5296 4 2 28 1 1275 1091 1073 3674 +5297 4 2 28 1 2850 2871 2273 3206 +5298 4 2 28 1 935 936 940 3452 +5299 4 2 28 1 2743 2886 2596 2960 +5300 4 2 28 1 2231 1973 2163 3373 +5301 4 2 28 1 2708 3045 2771 3068 +5302 4 2 28 1 1064 798 1062 3787 +5303 4 2 28 1 2829 2962 2698 3450 +5304 4 2 28 1 2301 3049 3103 3197 +5305 4 2 28 1 1951 2167 3066 3480 +5306 4 2 28 1 2559 2682 2667 2788 +5307 4 2 28 1 1698 2824 2944 3495 +5308 4 2 28 1 1505 2623 1805 2907 +5309 4 2 28 1 1912 2201 1908 2870 +5310 4 2 28 1 3123 3183 2562 3299 +5311 4 2 28 1 292 521 198 2931 +5312 4 2 28 1 2713 3476 3040 3725 +5313 4 2 28 1 798 2851 2142 3115 +5314 4 2 28 1 2575 2814 3055 3204 +5315 4 2 28 1 2592 2605 2731 2866 +5316 4 2 28 1 2261 2005 3340 3448 +5317 4 2 28 1 2540 3020 2945 3233 +5318 4 2 28 1 2758 3312 2576 3624 +5319 4 2 28 1 1523 3470 1709 3584 +5320 4 2 28 1 2525 3030 2805 3931 +5321 4 2 28 1 2604 2600 2649 2724 +5322 4 2 28 1 3228 3247 2741 3685 +5323 4 2 28 1 946 887 947 3563 +5324 4 2 28 1 3108 3111 3027 3346 +5325 4 2 28 1 3045 3262 2810 3590 +5326 4 2 28 1 2564 3177 2845 3668 +5327 4 2 28 1 2719 2812 2634 3048 +5328 4 2 28 1 2548 3235 2954 3438 +5329 4 2 28 1 659 3064 631 3499 +5330 4 2 28 1 2612 2650 2622 2844 +5331 4 2 28 1 368 363 365 3368 +5332 4 2 28 1 2374 3071 2819 3271 +5333 4 2 28 1 2651 2994 2864 3484 +5334 4 2 28 1 2670 3285 2834 3352 +5335 4 2 28 1 651 650 627 3333 +5336 4 2 28 1 1066 1242 3435 3512 +5337 4 2 28 1 659 633 631 3221 +5338 4 2 28 1 3079 3213 2781 3860 +5339 4 2 28 1 1677 2741 1735 3247 +5340 4 2 28 1 2517 2805 3108 3111 +5341 4 2 28 1 3071 2875 3519 3798 +5342 4 2 28 1 3002 3104 2810 3262 +5343 4 2 28 1 789 1288 1102 3083 +5344 4 2 28 1 2285 2606 2090 2987 +5345 4 2 28 1 1524 2750 1477 3577 +5346 4 2 28 1 2562 2935 3123 3299 +5347 4 2 28 1 1378 2955 1379 2956 +5348 4 2 28 1 2540 3233 2945 3576 +5349 4 2 28 1 2257 2668 3118 3273 +5350 4 2 28 1 2569 2548 2841 3427 +5351 4 2 28 1 2261 2166 3154 3340 +5352 4 2 28 1 2720 3066 2167 3480 +5353 4 2 28 1 1018 1256 1017 3890 +5354 4 2 28 1 1498 1727 1560 2620 +5355 4 2 28 1 3246 3519 2875 3798 +5356 4 2 28 1 3055 3330 3220 3537 +5357 4 2 28 1 1353 1591 2397 2917 +5358 4 2 28 1 468 456 455 3126 +5359 4 2 28 1 3033 3456 1709 3584 +5360 4 2 28 1 623 639 611 3389 +5361 4 2 28 1 2257 2742 2668 3273 +5362 4 2 28 1 2805 2910 1973 3373 +5363 4 2 28 1 2447 3045 3002 3877 +5364 4 2 28 1 2447 3063 3045 3877 +5365 4 2 28 1 374 492 372 3126 +5366 4 2 28 1 2647 1723 3152 3243 +5367 4 2 28 1 1379 2956 2955 3033 +5368 4 2 28 1 2651 3185 2994 3484 +5369 4 2 28 1 2603 2659 2558 3801 +5370 4 2 28 1 1230 824 822 3410 +5371 4 2 28 1 789 1729 1657 3083 +5372 4 2 28 1 2690 3259 3132 3488 +5373 4 2 28 1 2161 3040 2242 3210 +5374 4 2 28 1 2309 2991 3069 3685 +5375 4 2 28 1 1897 1899 3193 3212 +5376 4 2 28 1 2397 1591 2343 2917 +5377 4 2 28 1 1082 1030 1160 3203 +5378 4 2 28 1 3185 3484 2771 3718 +5379 4 2 28 1 757 715 685 3502 +5380 4 2 28 1 2576 2772 2861 2865 +5381 4 2 28 1 1377 1594 1777 2956 +5382 4 2 28 1 1584 2072 2277 3317 +5383 4 2 28 1 1973 2805 1979 2910 +5384 4 2 28 1 2564 2961 2592 3137 +5385 4 2 28 1 1423 3065 1503 3327 +5386 4 2 28 1 2835 3117 2869 3858 +5387 4 2 28 1 2777 2874 2641 2903 +5388 4 2 28 1 2903 2962 2626 3690 +5389 4 2 28 1 406 498 408 3313 +5390 4 2 28 1 1002 941 3831 3921 +5391 4 2 28 1 1652 2979 1547 3208 +5392 4 2 28 1 1204 795 1276 3704 +5393 4 2 28 1 1656 3268 1790 3470 +5394 4 2 28 1 2306 2814 2307 3094 +5395 4 2 28 1 2539 2903 2839 3419 +5396 4 2 28 1 1894 1893 2751 3000 +5397 4 2 28 1 1528 1776 3317 3384 +5398 4 2 28 1 2034 3324 1944 3413 +5399 4 2 28 1 493 383 384 3879 +5400 4 2 28 1 2903 3095 2683 3866 +5401 4 2 28 1 2126 198 521 2931 +5402 4 2 28 1 1501 2915 3247 3630 +5403 4 2 28 1 2285 2687 2606 2987 +5404 4 2 28 1 1722 1545 2893 3093 +5405 4 2 28 1 2623 3327 3065 3392 +5406 4 2 28 1 707 710 714 3550 +5407 4 2 28 1 1518 1561 1597 3087 +5408 4 2 28 1 2576 2772 2865 3211 +5409 4 2 28 1 2161 3210 1992 3415 +5410 4 2 28 1 2796 2893 2678 3165 +5411 4 2 28 1 3079 3161 2781 3213 +5412 4 2 28 1 2641 2539 2889 3363 +5413 4 2 28 1 608 612 602 3540 +5414 4 2 28 1 1878 2777 1875 3244 +5415 4 2 28 1 374 462 475 3126 +5416 4 2 28 1 644 709 719 3475 +5417 4 2 28 1 2353 2949 2991 3482 +5418 4 2 28 1 2621 2701 1999 2900 +5419 4 2 28 1 2825 2946 2674 3455 +5420 4 2 28 1 1893 1895 1894 3154 +5421 4 2 28 1 839 838 837 3538 +5422 4 2 28 1 2754 2801 2659 2947 +5423 4 2 28 1 891 1084 1230 3410 +5424 4 2 28 1 2372 2810 2386 3104 +5425 4 2 28 1 730 684 634 3356 +5426 4 2 28 1 2561 3832 3835 3918 +5427 4 2 28 1 2898 3081 2679 3406 +5428 4 2 28 1 207 783 1201 3274 +5429 4 2 28 1 840 842 838 3538 +5430 4 2 28 1 620 696 723 3836 +5431 4 2 28 1 2608 3345 2903 3419 +5432 4 2 28 1 831 833 835 3411 +5433 4 2 28 1 1452 2936 3037 3539 +5434 4 2 28 1 2626 3292 3095 3514 +5435 4 2 28 1 2810 2708 3045 3590 +5436 4 2 28 1 1958 2742 2021 3759 +5437 4 2 28 1 2588 2858 2772 2956 +5438 4 2 28 1 2557 2544 2902 3783 +5439 4 2 28 1 1347 1735 3228 3247 +5440 4 2 28 1 2541 2962 2889 3673 +5441 4 2 28 1 2666 2960 2886 3214 +5442 4 2 28 1 1138 893 1139 3447 +5443 4 2 28 1 2360 2806 2363 3216 +5444 4 2 28 1 1501 3364 2915 3529 +5445 4 2 28 1 1938 3557 3272 3642 +5446 4 2 28 1 2982 2983 2420 3778 +5447 4 2 28 1 2878 3198 2877 3238 +5448 4 2 28 1 2789 3087 1561 3539 +5449 4 2 28 1 2540 2794 2945 3020 +5450 4 2 28 1 2670 3023 2967 3043 +5451 4 2 28 1 1878 2777 2958 3337 +5452 4 2 28 1 2592 2654 2605 2866 +5453 4 2 28 1 2540 2945 3169 3488 +5454 4 2 28 1 2161 3040 2713 3476 +5455 4 2 28 1 219 685 536 3342 +5456 4 2 28 1 1201 1273 1271 3556 +5457 4 2 28 1 475 492 374 2880 +5458 4 2 28 1 2678 2893 2796 3125 +5459 4 2 28 1 2632 2814 3055 3220 +5460 4 2 28 1 1782 1675 1365 3486 +5461 4 2 28 1 2839 2683 3292 3618 +5462 4 2 28 1 2968 3169 2794 3813 +5463 4 2 28 1 2620 2682 1560 2877 +5464 4 2 28 1 2580 2669 2603 3801 +5465 4 2 28 1 2090 2606 1968 3332 +5466 4 2 28 1 1951 2167 1948 3066 +5467 4 2 28 1 2835 2683 3319 3709 +5468 4 2 28 1 2608 2864 2994 3286 +5469 4 2 28 1 2561 3835 3412 3918 +5470 4 2 28 1 2589 3177 2706 3400 +5471 4 2 28 1 365 382 369 3368 +5472 4 2 28 1 401 273 518 3353 +5473 4 2 28 1 2641 3172 2539 3363 +5474 4 2 28 1 2889 2962 2853 3673 +5475 4 2 28 1 2626 2962 3292 3450 +5476 4 2 28 1 2708 3031 3103 3197 +5477 4 2 28 1 633 740 731 3221 +5478 4 2 28 1 462 468 320 3126 +5479 4 2 28 1 2708 3068 2771 3727 +5480 4 2 28 1 2771 3068 3045 3609 +5481 4 2 28 1 1938 2831 3557 3642 +5482 4 2 28 1 1545 2893 3093 3477 +5483 4 2 28 1 2814 3204 2575 3306 +5484 4 2 28 1 595 710 584 3550 +5485 4 2 28 1 2712 2824 2547 2990 +5486 4 2 28 1 836 1212 833 3538 +5487 4 2 28 1 947 1269 1270 3302 +5488 4 2 28 1 2810 3045 2708 3582 +5489 4 2 28 1 1039 1228 1239 3411 +5490 4 2 28 1 2810 3002 2629 3104 +5491 4 2 28 1 2886 3112 2666 3375 +5492 4 2 28 1 1331 1306 2877 3277 +5493 4 2 28 1 1022 1290 1068 3198 +5494 4 2 28 1 2468 3449 2492 3877 +5495 4 2 28 1 2579 2659 2581 2857 +5496 4 2 28 1 2968 2794 3259 3813 +5497 4 2 28 1 1878 2958 2777 3244 +5498 4 2 28 1 2781 2573 3161 3185 +5499 4 2 28 1 984 965 919 3372 +5500 4 2 28 1 1236 3147 1231 3859 +5501 4 2 28 1 2791 2971 2570 3028 +5502 4 2 28 1 2657 2951 2747 3269 +5503 4 2 28 1 2608 3132 2994 3345 +5504 4 2 28 1 2324 3040 3476 3725 +5505 4 2 28 1 768 758 638 3625 +5506 4 2 28 1 1425 1416 2752 3179 +5507 4 2 28 1 693 554 556 3526 +5508 4 2 28 1 2323 2307 2304 2814 +5509 4 2 28 1 2231 1979 1973 2805 +5510 4 2 28 1 2615 2804 3027 3373 +5511 4 2 28 1 2589 2706 2643 3400 +5512 4 2 28 1 803 1941 1291 3809 +5513 4 2 28 1 2734 3247 2915 3630 +5514 4 2 28 1 2161 2242 1992 3210 +5515 4 2 28 1 2231 2805 1973 3373 +5516 4 2 28 1 2809 2864 3483 3484 +5517 4 2 28 1 1637 1740 1546 2893 +5518 4 2 28 1 2362 2806 2360 3311 +5519 4 2 28 1 2372 2383 2810 3262 +5520 4 2 28 1 1878 2777 3337 3828 +5521 4 2 28 1 2540 2945 2794 3169 +5522 4 2 28 1 2547 2824 2712 3113 +5523 4 2 28 1 907 908 3817 3902 +5524 4 2 28 1 2670 3023 3285 3352 +5525 4 2 28 1 1875 3244 2777 3541 +5526 4 2 28 1 2341 2294 2991 3069 +5527 4 2 28 1 557 556 555 3614 +5528 4 2 28 1 2261 3154 2846 3340 +5529 4 2 28 1 2322 3031 2465 3197 +5530 4 2 28 1 2493 2982 2420 3778 +5531 4 2 28 1 955 1034 1093 3469 +5532 4 2 28 1 2658 2747 2657 3252 +5533 4 2 28 1 2539 2942 3409 3576 +5534 4 2 28 1 942 3643 937 3792 +5535 4 2 28 1 1217 842 1219 3431 +5536 4 2 28 1 2548 2569 2841 3392 +5537 4 2 28 1 2805 3027 2804 3373 +5538 4 2 28 1 2670 3597 3216 3716 +5539 4 2 28 1 3207 3835 3832 3918 +5540 4 2 28 1 2092 3004 1946 3755 +5541 4 2 28 1 1368 2927 2624 3076 +5542 4 2 28 1 2357 3002 3104 3352 +5543 4 2 28 1 2994 3266 3075 3345 +5544 4 2 28 1 2573 3161 3079 3213 +5545 4 2 28 1 2639 2971 2581 3683 +5546 4 2 28 1 1529 1661 2856 3200 +5547 4 2 28 1 2553 3360 2792 3400 +5548 4 2 28 1 2840 3178 3081 3346 +5549 4 2 28 1 2886 3254 2743 3748 +5550 4 2 28 1 2574 3219 3160 3857 +5551 4 2 28 1 1648 1654 2647 3090 +5552 4 2 28 1 961 955 1160 3469 +5553 4 2 28 1 1117 800 1118 3314 +5554 4 2 28 1 3031 2810 3103 3260 +5555 4 2 28 1 1163 804 1298 3176 +5556 4 2 28 1 2372 3104 3002 3262 +5557 4 2 28 1 3132 3259 2794 3488 +5558 4 2 28 1 1946 1876 1945 3933 +5559 4 2 28 1 1379 1376 2956 3033 +5560 4 2 28 1 2539 2903 2641 2962 +5561 4 2 28 1 1529 1661 1530 2856 +5562 4 2 28 1 204 518 273 3047 +5563 4 2 28 1 1592 1477 2750 2914 +5564 4 2 28 1 3058 3183 3123 3299 +5565 4 2 28 1 2353 2949 2351 2991 +5566 4 2 28 1 2323 3032 3220 3355 +5567 4 2 28 1 1378 1379 1376 2956 +5568 4 2 28 1 2806 2967 2670 3216 +5569 4 2 28 1 2777 2903 2641 3172 +5570 4 2 28 1 2504 2840 3246 3602 +5571 4 2 28 1 706 578 705 3516 +5572 4 2 28 1 2592 2961 2551 3137 +5573 4 2 28 1 2589 3400 2643 3645 +5574 4 2 28 1 1066 1242 1222 3435 +5575 4 2 28 1 2805 3312 3545 3931 +5576 4 2 28 1 1836 3040 2161 3476 +5577 4 2 28 1 2760 2787 2642 3119 +5578 4 2 28 1 2839 3361 2683 3618 +5579 4 2 28 1 1317 1284 1027 3229 +5580 4 2 28 1 1024 1051 1287 3434 +5581 4 2 28 1 2714 2756 2702 3148 +5582 4 2 28 1 2341 2991 2351 3069 +5583 4 2 28 1 3002 3352 2384 3714 +5584 4 2 28 1 2771 3045 2708 3367 +5585 4 2 28 1 2025 2900 2153 3096 +5586 4 2 28 1 675 653 774 3096 +5587 4 2 28 1 2819 2983 2455 3304 +5588 4 2 28 1 2668 2182 3118 3747 +5589 4 2 28 1 2397 1353 2917 3692 +5590 4 2 28 1 2307 2306 2304 2814 +5591 4 2 28 1 2849 3232 3042 3559 +5592 4 2 28 1 2869 3117 3043 3289 +5593 4 2 28 1 1893 2751 3000 3154 +5594 4 2 28 1 1370 1369 2892 3503 +5595 4 2 28 1 2728 2956 2588 3465 +5596 4 2 28 1 1210 1046 1085 3811 +5597 4 2 28 1 2142 2143 2229 3115 +5598 4 2 28 1 2954 3127 2955 3456 +5599 4 2 28 1 483 373 403 3307 +5600 4 2 28 1 1425 2752 1416 3387 +5601 4 2 28 1 625 709 644 3589 +5602 4 2 28 1 2588 3195 2728 3820 +5603 4 2 28 1 657 658 745 3768 +5604 4 2 28 1 2548 2841 2954 3235 +5605 4 2 28 1 2363 2360 2362 2806 +5606 4 2 28 1 2563 2622 2584 3460 +5607 4 2 28 1 860 1196 864 3487 +5608 4 2 28 1 1498 1559 1496 2877 +5609 4 2 28 1 1547 2979 1652 3175 +5610 4 2 28 1 2016 2738 3003 3401 +5611 4 2 28 1 3142 3403 2583 3583 +5612 4 2 28 1 1908 1912 2870 2966 +5613 4 2 28 1 2540 2794 3020 3169 +5614 4 2 28 1 1637 3125 2893 3253 +5615 4 2 28 1 764 632 718 2951 +5616 4 2 28 1 915 889 1110 3863 +5617 4 2 28 1 3075 3266 3207 3345 +5618 4 2 28 1 2128 3405 1995 3688 +5619 4 2 28 1 2647 2736 1723 3243 +5620 4 2 28 1 1133 1196 862 3487 +5621 4 2 28 1 3106 3186 2462 3218 +5622 4 2 28 1 3027 3108 2805 3111 +5623 4 2 28 1 2683 2883 2835 3319 +5624 4 2 28 1 2586 2688 2800 2921 +5625 4 2 28 1 2575 3306 3204 3616 +5626 4 2 28 1 2651 2864 2809 3484 +5627 4 2 28 1 2692 3093 3195 3682 +5628 4 2 28 1 3069 3103 2810 3260 +5629 4 2 28 1 2542 3326 2721 3425 +5630 4 2 28 1 2553 2590 3177 3400 +5631 4 2 28 1 1188 1045 983 3811 +5632 4 2 28 1 2323 2814 2304 3725 +5633 4 2 28 1 2539 3419 2839 3576 +5634 4 2 28 1 2983 3586 2420 3778 +5635 4 2 28 1 3299 3424 3190 3662 +5636 4 2 28 1 338 442 352 3056 +5637 4 2 28 1 2386 2372 2383 2810 +5638 4 2 28 1 1551 3192 1552 3358 +5639 4 2 28 1 1181 869 871 3517 +5640 4 2 28 1 2990 2547 3105 3522 +5641 4 2 28 1 2570 3028 2971 3156 +5642 4 2 28 1 1018 3181 1256 3890 +5643 4 2 28 1 2662 2867 2656 3822 +5644 4 2 28 1 1798 1670 1331 3277 +5645 4 2 28 1 869 992 867 3517 +5646 4 2 28 1 2846 3000 2043 3451 +5647 4 2 28 1 3127 3456 1534 3534 +5648 4 2 28 1 2632 2968 3259 3767 +5649 4 2 28 1 679 768 680 3441 +5650 4 2 28 1 982 983 1043 3350 +5651 4 2 28 1 1545 3253 2893 3477 +5652 4 2 28 1 2666 3059 2960 3214 +5653 4 2 28 1 2979 1637 3253 3554 +5654 4 2 28 1 2663 3330 2794 3748 +5655 4 2 28 1 325 323 441 3796 +5656 4 2 28 1 3185 3186 2781 3609 +5657 4 2 28 1 1331 1670 1306 3277 +5658 4 2 28 1 2142 2851 798 3116 +5659 4 2 28 1 1698 2824 1776 2990 +5660 4 2 28 1 1163 1327 804 3176 +5661 4 2 28 1 2569 2797 2548 3427 +5662 4 2 28 1 2802 3278 3042 3627 +5663 4 2 28 1 2006 3143 3041 3642 +5664 4 2 28 1 2995 3098 2762 3444 +5665 4 2 28 1 1276 795 1278 3182 +5666 4 2 28 1 2840 3081 2707 3346 +5667 4 2 28 1 1228 1246 858 3479 +5668 4 2 28 1 2155 2030 3021 3371 +5669 4 2 28 1 2791 2570 2971 3242 +5670 4 2 28 1 2785 3023 2629 3222 +5671 4 2 28 1 1322 722 532 3333 +5672 4 2 28 1 2713 3210 3040 3415 +5673 4 2 28 1 2564 3251 3177 3668 +5674 4 2 28 1 691 741 607 3815 +5675 4 2 28 1 1379 1709 3033 3456 +5676 4 2 28 1 884 964 888 3863 +5677 4 2 28 1 2592 3137 2654 3386 +5678 4 2 28 1 1866 2853 1868 3527 +5679 4 2 28 1 2391 2411 3271 3449 +5680 4 2 28 1 1108 1129 843 3520 +5681 4 2 28 1 2718 3153 2909 3541 +5682 4 2 28 1 562 566 701 3700 +5683 4 2 28 1 1385 3754 2957 3899 +5684 4 2 28 1 2716 2836 2693 3305 +5685 4 2 28 1 1167 917 918 3790 +5686 4 2 28 1 2951 3064 1847 3499 +5687 4 2 28 1 659 631 3064 3221 +5688 4 2 28 1 1582 1780 1760 3378 +5689 4 2 28 1 1242 799 1076 3871 +5690 4 2 28 1 2614 2898 3081 3178 +5691 4 2 28 1 2747 2951 2657 3252 +5692 4 2 28 1 2602 3237 3021 3774 +5693 4 2 28 1 2045 3480 3337 3489 +5694 4 2 28 1 2320 2319 3247 3685 +5695 4 2 28 1 2875 2679 3081 3406 +5696 4 2 28 1 476 300 470 3867 +5697 4 2 28 1 3002 3045 2477 3262 +5698 4 2 28 1 2570 2971 2639 3683 +5699 4 2 28 1 2539 2839 3292 3618 +5700 4 2 28 1 1233 932 1223 3834 +5701 4 2 28 1 1778 2925 1521 3298 +5702 4 2 28 1 3045 3063 3002 3877 +5703 4 2 28 1 2717 2983 3574 3721 +5704 4 2 28 1 3045 3068 2708 3582 +5705 4 2 28 1 880 1213 1040 3473 +5706 4 2 28 1 2588 2956 2772 3465 +5707 4 2 28 1 443 495 386 3633 +5708 4 2 28 1 2455 2983 2819 3586 +5709 4 2 28 1 1442 3037 2936 3280 +5710 4 2 28 1 958 977 978 3628 +5711 4 2 28 1 1453 1452 1442 3037 +5712 4 2 28 1 2617 2909 3153 3541 +5713 4 2 28 1 1347 3228 2320 3247 +5714 4 2 28 1 2756 2757 2702 3148 +5715 4 2 28 1 2814 3103 3306 3471 +5716 4 2 28 1 2428 2928 3197 3367 +5717 4 2 28 1 2720 3901 3232 3910 +5718 4 2 28 1 1092 801 815 3511 +5719 4 2 28 1 2605 3137 2551 3391 +5720 4 2 28 1 1724 2979 3175 3914 +5721 4 2 28 1 2448 2492 3449 3877 +5722 4 2 28 1 2979 2679 3208 3423 +5723 4 2 28 1 2468 2492 3714 3877 +5724 4 2 28 1 1518 1561 3087 3539 +5725 4 2 28 1 1368 2624 1571 3076 +5726 4 2 28 1 2629 2810 3222 3582 +5727 4 2 28 1 1896 1894 1895 3908 +5728 4 2 28 1 2016 3003 2738 3680 +5729 4 2 28 1 2629 3222 3023 3835 +5730 4 2 28 1 2781 3609 3186 3884 +5731 4 2 28 1 2467 3063 2447 3877 +5732 4 2 28 1 1790 3268 2865 3470 +5733 4 2 28 1 1416 2752 2943 3387 +5734 4 2 28 1 1895 2751 1894 3154 +5735 4 2 28 1 3081 3246 2840 3602 +5736 4 2 28 1 3023 3222 2785 3835 +5737 4 2 28 1 2442 3574 2983 3721 +5738 4 2 28 1 2563 3199 3190 3299 +5739 4 2 28 1 3031 2810 3262 3590 +5740 4 2 28 1 2771 3186 3609 3884 +5741 4 2 28 1 2317 3069 2311 3260 +5742 4 2 28 1 1677 3364 1680 3375 +5743 4 2 28 1 1253 1250 1040 3473 +5744 4 2 28 1 1385 2957 3445 3899 +5745 4 2 28 1 2814 3055 3220 3537 +5746 4 2 28 1 2477 3002 2447 3045 +5747 4 2 28 1 1318 1263 781 3417 +5748 4 2 28 1 1099 1097 1098 3934 +5749 4 2 28 1 2758 2576 2861 3624 +5750 4 2 28 1 1317 1189 1284 3393 +5751 4 2 28 1 3306 3355 3204 3616 +5752 4 2 28 1 1290 1022 2977 3198 +5753 4 2 28 1 2718 3172 3153 3541 +5754 4 2 28 1 993 911 1128 3850 +5755 4 2 28 1 1190 1136 1092 3511 +5756 4 2 28 1 2902 3084 2610 3250 +5757 4 2 28 1 2648 2876 3105 3113 +5758 4 2 28 1 2183 1866 1868 3527 +5759 4 2 28 1 3153 3172 2617 3541 +5760 4 2 28 1 2651 3186 3106 3218 +5761 4 2 28 1 2588 2728 2858 2956 +5762 4 2 28 1 2595 2623 2697 2873 +5763 4 2 28 1 2726 3292 2962 3450 +5764 4 2 28 1 2573 2849 3185 3468 +5765 4 2 28 1 2285 1991 2687 2987 +5766 4 2 28 1 308 303 437 3588 +5767 4 2 28 1 2902 3021 2610 3084 +5768 4 2 28 1 2666 3214 2886 3706 +5769 4 2 28 1 2810 3045 3002 3262 +5770 4 2 28 1 2706 2976 2827 3523 +5771 4 2 28 1 2727 2868 2631 3138 +5772 4 2 28 1 2493 2420 3586 3778 +5773 4 2 28 1 639 752 702 3389 +5774 4 2 28 1 559 558 557 3699 +5775 4 2 28 1 2605 2654 2592 3137 +5776 4 2 28 1 1064 3116 798 3787 +5777 4 2 28 1 1064 1292 798 3116 +5778 4 2 28 1 2261 3340 2846 3448 +5779 4 2 28 1 2351 2991 2949 3496 +5780 4 2 28 1 2949 3069 2652 3496 +5781 4 2 28 1 945 944 934 3834 +5782 4 2 28 1 1929 2285 2687 3560 +5783 4 2 28 1 1149 1233 1150 3834 +5784 4 2 28 1 2608 2994 3132 3286 +5785 4 2 28 1 2623 3065 1503 3491 +5786 4 2 28 1 2670 3213 3079 3860 +5787 4 2 28 1 1379 1734 1376 3033 +5788 4 2 28 1 2663 2968 2794 3330 +5789 4 2 28 1 2945 3233 2839 3576 +5790 4 2 28 1 2608 2945 3132 3345 +5791 4 2 28 1 1637 1740 2893 3125 +5792 4 2 28 1 3204 3306 2814 3355 +5793 4 2 28 1 2839 2903 2539 3292 +5794 4 2 28 1 2666 2796 3412 3760 +5795 4 2 28 1 1498 2620 1560 2877 +5796 4 2 28 1 2394 3071 2374 3271 +5797 4 2 28 1 1152 866 1085 3893 +5798 4 2 28 1 1296 1154 806 3436 +5799 4 2 28 1 1076 1222 1242 2859 +5800 4 2 28 1 1082 3050 1160 3524 +5801 4 2 28 1 1896 2185 1894 3908 +5802 4 2 28 1 2590 3390 2631 3400 +5803 4 2 28 1 576 712 559 3701 +5804 4 2 28 1 2707 3081 2898 3346 +5805 4 2 28 1 1760 2686 1651 3676 +5806 4 2 28 1 2567 2644 2635 3238 +5807 4 2 28 1 2687 2985 2684 3056 +5808 4 2 28 1 526 762 654 3421 +5809 4 2 28 1 2411 2780 2394 3271 +5810 4 2 28 1 2507 3246 3081 3602 +5811 4 2 28 1 2743 2960 3551 3761 +5812 4 2 28 1 2576 3067 3027 3111 +5813 4 2 28 1 2442 3304 2983 3574 +5814 4 2 28 1 1025 1187 1103 3650 +5815 4 2 28 1 1998 2621 1996 3405 +5816 4 2 28 1 3193 3212 1899 3275 +5817 4 2 28 1 1286 1055 1023 3416 +5818 4 2 28 1 2713 3616 3306 3727 +5819 4 2 28 1 2639 2801 2754 2896 +5820 4 2 28 1 2473 2780 2485 3271 +5821 4 2 28 1 1157 876 872 3762 +5822 4 2 28 1 821 820 822 3840 +5823 4 2 28 1 1035 1149 1150 3862 +5824 4 2 28 1 2819 3519 3246 3798 +5825 4 2 28 1 891 820 1097 3840 +5826 4 2 28 1 893 1144 1139 3674 +5827 4 2 28 1 3042 3278 2472 3627 +5828 4 2 28 1 2670 3352 2834 3716 +5829 4 2 28 1 1777 2956 2858 3751 +5830 4 2 28 1 1169 1170 855 3854 +5831 4 2 28 1 2092 1946 1949 3755 +5832 4 2 28 1 2557 2544 2751 2902 +5833 4 2 28 1 2539 2839 2942 3576 +5834 4 2 28 1 884 885 877 3816 +5835 4 2 28 1 1418 1480 1413 3418 +5836 4 2 28 1 810 1310 1095 3298 +5837 4 2 28 1 2383 2381 2810 3262 +5838 4 2 28 1 1387 2843 1389 3215 +5839 4 2 28 1 607 741 769 3008 +5840 4 2 28 1 1225 1188 1177 3893 +5841 4 2 28 1 1651 1760 1493 2686 +5842 4 2 28 1 2726 2962 2829 3450 +5843 4 2 28 1 801 814 815 3922 +5844 4 2 28 1 1392 3127 2980 3788 +5845 4 2 28 1 887 886 881 3563 +5846 4 2 28 1 710 707 584 2884 +5847 4 2 28 1 2576 2910 2805 3027 +5848 4 2 28 1 2539 2641 2903 3172 +5849 4 2 28 1 1902 2845 1889 3742 +5850 4 2 28 1 2542 2721 3326 3409 +5851 4 2 28 1 1258 1011 1032 3600 +5852 4 2 28 1 2726 2829 2962 3895 +5853 4 2 28 1 1358 2927 1574 3007 +5854 4 2 28 1 2771 3609 3185 3718 +5855 4 2 28 1 2564 3137 2592 3386 +5856 4 2 28 1 1176 863 1177 3893 +5857 4 2 28 1 870 1198 873 3580 +5858 4 2 28 1 693 556 586 3475 +5859 4 2 28 1 1206 1208 1130 3566 +5860 4 2 28 1 2967 3043 3023 3740 +5861 4 2 28 1 1567 1632 3135 3898 +5862 4 2 28 1 2614 2840 3246 3684 +5863 4 2 28 1 1176 832 830 3894 +5864 4 2 28 1 2668 2742 2731 3323 +5865 4 2 28 1 1707 1459 3171 3838 +5866 4 2 28 1 453 345 381 3913 +5867 4 2 28 1 2814 3094 2306 3351 +5868 4 2 28 1 2670 2834 3285 3860 +5869 4 2 28 1 1369 2494 1344 2892 +5870 4 2 28 1 642 752 661 3510 +5871 4 2 28 1 926 925 939 3886 +5872 4 2 28 1 2883 3292 2683 3618 +5873 4 2 28 1 2301 3031 2322 3197 +5874 4 2 28 1 823 1185 878 3810 +5875 4 2 28 1 906 905 904 3870 +5876 4 2 28 1 987 968 967 3850 +5877 4 2 28 1 673 675 774 3096 +5878 4 2 28 1 2850 3257 2565 3583 +5879 4 2 28 1 3278 3627 2802 3721 +5880 4 2 28 1 2727 2631 2815 3138 +5881 4 2 28 1 1019 1281 1021 3787 +5882 4 2 28 1 2624 2747 2658 2984 +5883 4 2 28 1 1115 2877 1306 3277 +5884 4 2 28 1 2564 2592 2961 3386 +5885 4 2 28 1 903 902 904 3870 +5886 4 2 28 1 2343 2410 2397 2917 +5887 4 2 28 1 2835 2883 2683 3361 +5888 4 2 28 1 426 278 427 3408 +5889 4 2 28 1 2626 3066 3004 3654 +5890 4 2 28 1 819 989 817 3840 +5891 4 2 28 1 2515 2892 2520 3703 +5892 4 2 28 1 2641 2874 2777 3282 +5893 4 2 28 1 2142 2851 2143 3115 +5894 4 2 28 1 1487 1448 3053 3749 +5895 4 2 28 1 465 304 458 3867 +5896 4 2 28 1 2727 2815 2989 3138 +5897 4 2 28 1 2652 3069 2991 3351 +5898 4 2 28 1 2558 2659 2603 3430 +5899 4 2 28 1 808 1301 1192 3198 +5900 4 2 28 1 1595 3059 1730 3383 +5901 4 2 28 1 2575 3055 2814 3306 +5902 4 2 28 1 3031 3590 3262 3598 +5903 4 2 28 1 2781 3079 2941 3161 +5904 4 2 28 1 1226 941 1002 3921 +5905 4 2 28 1 2468 3714 3449 3877 +5906 4 2 28 1 1709 3470 3033 3584 +5907 4 2 28 1 935 929 931 3874 +5908 4 2 28 1 2428 3197 2928 3596 +5909 4 2 28 1 2367 2384 3352 3714 +5910 4 2 28 1 2717 3574 2983 3684 +5911 4 2 28 1 2566 2661 2633 2786 +5912 4 2 28 1 2547 2824 3113 3607 +5913 4 2 28 1 202 434 281 3697 +5914 4 2 28 1 1836 2321 3040 3476 +5915 4 2 28 1 1369 2520 2494 2892 +5916 4 2 28 1 2949 2991 2652 3069 +5917 4 2 28 1 2708 2771 3367 3727 +5918 4 2 28 1 2858 2956 1594 3478 +5919 4 2 28 1 2092 3528 3004 3755 +5920 4 2 28 1 1231 859 1234 3881 +5921 4 2 28 1 2753 2898 3178 3771 +5922 4 2 28 1 2780 3271 2411 3449 +5923 4 2 28 1 2007 1849 2109 2951 +5924 4 2 28 1 1555 1589 2736 2737 +5925 4 2 28 1 2713 3306 3049 3727 +5926 4 2 28 1 2478 2447 3002 3877 +5927 4 2 28 1 1278 1279 1224 3628 +5928 4 2 28 1 3117 3319 2588 3858 +5929 4 2 28 1 2459 2928 3040 3596 +5930 4 2 28 1 2614 2898 3178 3858 +5931 4 2 28 1 2629 2834 3063 3285 +5932 4 2 28 1 1423 2841 3065 3327 +5933 4 2 28 1 1417 2943 2761 3202 +5934 4 2 28 1 927 924 926 3880 +5935 4 2 28 1 297 295 298 3500 +5936 4 2 28 1 697 696 594 3701 +5937 4 2 28 1 2423 3040 2327 3596 +5938 4 2 28 1 2893 2796 3125 3571 +5939 4 2 28 1 2914 3083 1538 3159 +5940 4 2 28 1 2944 2990 1364 3891 +5941 4 2 28 1 1353 3228 2917 3692 +5942 4 2 28 1 271 1640 294 3243 +5943 4 2 28 1 2596 2960 2886 3112 +5944 4 2 28 1 1282 1182 802 3599 +5945 4 2 28 1 3247 3364 1677 3375 +5946 4 2 28 1 2763 2825 2674 3455 +5947 4 2 28 1 2717 2840 2983 3395 +5948 4 2 28 1 2383 2381 2386 2810 +5949 4 2 28 1 1836 2118 2161 3040 +5950 4 2 28 1 2357 2384 3002 3352 +5951 4 2 28 1 907 906 908 3902 +5952 4 2 28 1 2459 2428 2928 3596 +5953 4 2 28 1 2834 3002 2629 3063 +5954 4 2 28 1 938 937 942 3643 +5955 4 2 28 1 2413 3265 3166 3383 +5956 4 2 28 1 279 212 425 3612 +5957 4 2 28 1 2485 2473 2466 2780 +5958 4 2 28 1 2629 2834 3285 3352 +5959 4 2 28 1 2668 2742 2257 3035 +5960 4 2 28 1 2467 3045 2447 3063 +5961 4 2 28 1 2703 2851 2760 3173 +5962 4 2 28 1 2686 2922 2647 3090 +5963 4 2 28 1 1472 1310 1664 2925 +5964 4 2 28 1 2617 3193 3061 3244 +5965 4 2 28 1 621 620 629 3836 +5966 4 2 28 1 2425 2982 2529 3189 +5967 4 2 28 1 2544 3299 2935 3424 +5968 4 2 28 1 608 632 631 3540 +5969 4 2 28 1 1221 1146 1197 3874 +5970 4 2 28 1 433 508 445 3120 +5971 4 2 28 1 2741 3247 1677 3375 +5972 4 2 28 1 2886 3529 3254 3748 +5973 4 2 28 1 2990 3522 3105 3888 +5974 4 2 28 1 1128 3629 907 3817 +5975 4 2 28 1 2696 3456 3033 3584 +5976 4 2 28 1 2374 2819 3071 3519 +5977 4 2 28 1 2632 3055 2814 3355 +5978 4 2 28 1 2954 3235 2696 3438 +5979 4 2 28 1 2631 3390 2792 3400 +5980 4 2 28 1 2489 3042 2849 3278 +5981 4 2 28 1 1946 3004 3066 3755 +5982 4 2 28 1 1428 2936 1441 3546 +5983 4 2 28 1 1574 3007 2927 3569 +5984 4 2 28 1 2805 3027 2615 3108 +5985 4 2 28 1 1809 406 408 3313 +5986 4 2 28 1 1885 3193 2958 3244 +5987 4 2 28 1 556 554 555 2873 +5988 4 2 28 1 2772 3211 2576 3702 +5989 4 2 28 1 2544 3190 3199 3299 +5990 4 2 28 1 2692 3093 2893 3195 +5991 4 2 28 1 2596 2886 2743 3748 +5992 4 2 28 1 2996 2685 3570 3604 +5993 4 2 28 1 3259 3767 2968 3813 +5994 4 2 28 1 1137 794 1136 3663 +5995 4 2 28 1 2805 2910 2804 3027 +5996 4 2 28 1 2034 2909 2033 3324 +5997 4 2 28 1 1968 2090 2217 2606 +5998 4 2 28 1 345 328 332 3620 +5999 4 2 28 1 1147 845 841 3806 +6000 4 2 28 1 384 383 349 3605 +6001 4 2 28 1 2291 2322 2465 3197 +6002 4 2 28 1 2507 2504 3246 3602 +6003 4 2 28 1 971 963 909 3902 +6004 4 2 28 1 615 616 773 3726 +6005 4 2 28 1 2477 3262 3045 3590 +6006 4 2 28 1 2626 2962 2903 3292 +6007 4 2 28 1 2477 2491 2447 3002 +6008 4 2 28 1 1379 3033 2955 3456 +6009 4 2 28 1 583 3359 591 3389 +6010 4 2 28 1 1553 2891 2665 3793 +6011 4 2 28 1 2961 3035 2551 3819 +6012 4 2 28 1 2941 3079 2781 3860 +6013 4 2 28 1 2651 2849 3186 3218 +6014 4 2 28 1 2849 3161 2573 3185 +6015 4 2 28 1 2411 2371 2394 2780 +6016 4 2 28 1 378 498 503 3728 +6017 4 2 28 1 1932 1935 3142 3403 +6018 4 2 28 1 2456 3262 3590 3598 +6019 4 2 28 1 1937 3272 1938 3557 +6020 4 2 28 1 2614 3289 2898 3858 +6021 4 2 28 1 2641 2903 2874 3690 +6022 4 2 28 1 2631 3360 2792 3443 +6023 4 2 28 1 2353 2991 2378 3482 +6024 4 2 28 1 1467 2838 1619 3280 +6025 4 2 28 1 2034 2239 2035 3061 +6026 4 2 28 1 2692 2893 3571 3760 +6027 4 2 28 1 2561 3832 3023 3835 +6028 4 2 28 1 2517 3108 2509 3111 +6029 4 2 28 1 859 857 854 3875 +6030 4 2 28 1 2413 2400 3265 3383 +6031 4 2 28 1 854 856 853 3875 +6032 4 2 28 1 1908 2966 2870 3413 +6033 4 2 28 1 1594 2858 1777 2956 +6034 4 2 28 1 3184 3196 2972 3776 +6035 4 2 28 1 1637 2893 1546 3253 +6036 4 2 28 1 1988 1974 3006 3476 +6037 4 2 28 1 2606 2739 1968 3332 +6038 4 2 28 1 2614 3178 3289 3858 +6039 4 2 28 1 2583 2687 2885 2985 +6040 4 2 28 1 1251 1254 878 3853 +6041 4 2 28 1 2539 2641 2889 2962 +6042 4 2 28 1 3087 3436 1597 3539 +6043 4 2 28 1 2804 2910 2805 3373 +6044 4 2 28 1 1120 210 796 3535 +6045 4 2 28 1 2304 2814 2306 3873 +6046 4 2 28 1 3222 3412 2785 3835 +6047 4 2 28 1 2008 3226 2228 3669 +6048 4 2 28 1 2753 2898 3771 3858 +6049 4 2 28 1 2850 3206 2565 3257 +6050 4 2 28 1 2643 3645 3400 3851 +6051 4 2 28 1 313 312 326 3805 +6052 4 2 28 1 2643 2589 3645 3851 +6053 4 2 28 1 1482 1483 3214 3542 +6054 4 2 28 1 353 354 355 3678 +6055 4 2 28 1 2718 1877 3267 3322 +6056 4 2 28 1 2285 2606 2687 3560 +6057 4 2 28 1 2690 3132 3286 3488 +6058 4 2 28 1 2381 3260 2810 3262 +6059 4 2 28 1 2548 2954 3052 3438 +6060 4 2 28 1 2810 3031 2708 3590 +6061 4 2 28 1 2892 3702 2861 3703 +6062 4 2 28 1 2743 2960 2596 3551 +6063 4 2 28 1 2548 2954 2797 3052 +6064 4 2 28 1 1656 2865 1790 3268 +6065 4 2 28 1 2400 2368 3265 3383 +6066 4 2 28 1 2806 3043 3117 3289 +6067 4 2 28 1 2043 3000 2846 3154 +6068 4 2 28 1 1841 2758 2244 3312 +6069 4 2 28 1 488 433 504 3707 +6070 4 2 28 1 2419 2291 2465 3197 +6071 4 2 28 1 2562 2604 2600 2649 +6072 4 2 28 1 1797 1496 2877 3198 +6073 4 2 28 1 2628 2735 2675 2882 +6074 4 2 28 1 2351 3069 2991 3496 +6075 4 2 28 1 1222 1076 988 3696 +6076 4 2 28 1 2167 1948 3066 3755 +6077 4 2 28 1 454 475 462 3615 +6078 4 2 28 1 2366 2394 2371 3071 +6079 4 2 28 1 2615 3108 3027 3346 +6080 4 2 28 1 2656 2662 2826 2867 +6081 4 2 28 1 1397 2954 2797 3427 +6082 4 2 28 1 2708 3031 2810 3582 +6083 4 2 28 1 2814 3351 2306 3873 +6084 4 2 28 1 881 879 864 3695 +6085 4 2 28 1 2541 3649 2962 3673 +6086 4 2 28 1 2613 2799 2636 3386 +6087 4 2 28 1 2472 3627 3278 3721 +6088 4 2 28 1 2609 2746 2638 3391 +6089 4 2 28 1 2753 3178 2898 3858 +6090 4 2 28 1 2611 3414 3190 3662 +6091 4 2 28 1 3125 3253 1637 3554 +6092 4 2 28 1 1885 3061 3193 3244 +6093 4 2 28 1 1722 3093 2893 3542 +6094 4 2 28 1 1365 2944 2624 3157 +6095 4 2 28 1 439 308 438 3394 +6096 4 2 28 1 1868 3347 2183 3527 +6097 4 2 28 1 2578 2668 2731 2899 +6098 4 2 28 1 2561 3023 3412 3835 +6099 4 2 28 1 2771 3186 3185 3609 +6100 4 2 28 1 2707 3108 2840 3346 +6101 4 2 28 1 1387 2957 2843 3215 +6102 4 2 28 1 2142 2143 2851 3116 +6103 4 2 28 1 2619 2637 2919 3227 +6104 4 2 28 1 2468 2448 2492 3449 +6105 4 2 28 1 2576 3211 3067 3702 +6106 4 2 28 1 2114 2008 2693 3226 +6107 4 2 28 1 2708 3103 3049 3197 +6108 4 2 28 1 850 849 848 3887 +6109 4 2 28 1 646 754 695 3221 +6110 4 2 28 1 2596 2743 3551 3761 +6111 4 2 28 1 1156 1015 1155 3809 +6112 4 2 28 1 2796 3383 3265 3715 +6113 4 2 28 1 1842 2078 2242 3040 +6114 4 2 28 1 2670 2967 3023 3352 +6115 4 2 28 1 1367 1776 1698 2824 +6116 4 2 28 1 1808 672 527 3261 +6117 4 2 28 1 3449 3714 2834 3877 +6118 4 2 28 1 823 3124 878 3256 +6119 4 2 28 1 2814 3351 3103 3471 +6120 4 2 28 1 1760 3378 2572 3676 +6121 4 2 28 1 2596 3112 3055 3551 +6122 4 2 28 1 2588 2835 2883 3319 +6123 4 2 28 1 358 446 361 3679 +6124 4 2 28 1 1916 3338 3462 3525 +6125 4 2 28 1 1452 2936 1442 3037 +6126 4 2 28 1 2666 3059 3214 3706 +6127 4 2 28 1 2659 2754 2639 2801 +6128 4 2 28 1 3450 3528 2698 3544 +6129 4 2 28 1 450 334 312 3805 +6130 4 2 28 1 865 880 970 3907 +6131 4 2 28 1 3031 3103 2810 3582 +6132 4 2 28 1 2713 3049 3596 3727 +6133 4 2 28 1 3301 3547 2559 3564 +6134 4 2 28 1 1711 2938 2926 3824 +6135 4 2 28 1 2962 3649 2853 3673 +6136 4 2 28 1 615 603 616 3885 +6137 4 2 28 1 2609 3137 2570 3251 +6138 4 2 28 1 2583 2885 2680 2985 +6139 4 2 28 1 2572 2633 2566 2661 +6140 4 2 28 1 1042 1178 970 3925 +6141 4 2 28 1 2547 2990 3105 3174 +6142 4 2 28 1 3132 3266 2994 3345 +6143 4 2 28 1 2611 2662 2563 3822 +6144 4 2 28 1 1790 2865 3033 3470 +6145 4 2 28 1 3040 3596 2713 3725 +6146 4 2 28 1 1082 1160 3050 3203 +6147 4 2 28 1 2602 3497 3237 3774 +6148 4 2 28 1 1610 3093 3445 3477 +6149 4 2 28 1 2485 2780 2466 3230 +6150 4 2 28 1 2608 3132 2945 3286 +6151 4 2 28 1 1627 3090 1648 3152 +6152 4 2 28 1 2559 2682 2788 3603 +6153 4 2 28 1 2670 2967 3352 3716 +6154 4 2 28 1 2078 2242 3040 3210 +6155 4 2 28 1 2539 2942 2839 3618 +6156 4 2 28 1 390 452 367 3442 +6157 4 2 28 1 2883 2683 3361 3618 +6158 4 2 28 1 793 1077 1247 3795 +6159 4 2 28 1 1798 1331 2877 3277 +6160 4 2 28 1 2539 3409 2721 3576 +6161 4 2 28 1 3023 3740 3043 3832 +6162 4 2 28 1 2681 2776 2680 3142 +6163 4 2 28 1 2697 2873 2623 3008 +6164 4 2 28 1 1270 1012 946 3563 +6165 4 2 28 1 1946 3004 1876 3933 +6166 4 2 28 1 2607 3033 2956 3211 +6167 4 2 28 1 2455 3271 2819 3304 +6168 4 2 28 1 1894 2185 1909 3267 +6169 4 2 28 1 1066 3435 3072 3512 +6170 4 2 28 1 220 536 686 3502 +6171 4 2 28 1 2692 3165 2893 3760 +6172 4 2 28 1 228 1136 794 2882 +6173 4 2 28 1 3053 3522 2990 3888 +6174 4 2 28 1 1958 1924 3035 3652 +6175 4 2 28 1 2780 3230 2485 3449 +6176 4 2 28 1 2666 3375 3112 3481 +6177 4 2 28 1 1688 1513 1607 3463 +6178 4 2 28 1 1528 1762 3200 3317 +6179 4 2 28 1 2954 1534 3127 3456 +6180 4 2 28 1 2655 2667 2656 2916 +6181 4 2 28 1 1409 1503 1423 3065 +6182 4 2 28 1 2713 3596 2928 3727 +6183 4 2 28 1 1546 2893 1545 3253 +6184 4 2 28 1 2779 3062 2647 3141 +6185 4 2 28 1 2679 3081 2898 3297 +6186 4 2 28 1 3067 3111 2707 3346 +6187 4 2 28 1 2695 2946 2825 3455 +6188 4 2 28 1 2983 3574 3304 3684 +6189 4 2 28 1 1377 2956 1777 3751 +6190 4 2 28 1 2641 2962 2903 3690 +6191 4 2 28 1 2915 3330 2663 3748 +6192 4 2 28 1 899 958 957 3628 +6193 4 2 28 1 3041 3143 2665 3642 +6194 4 2 28 1 2945 3020 2715 3233 +6195 4 2 28 1 1179 1203 853 3925 +6196 4 2 28 1 336 371 348 3920 +6197 4 2 28 1 1879 2958 1878 3244 +6198 4 2 28 1 1203 1220 1001 3925 +6199 4 2 28 1 1073 1063 1072 3115 +6200 4 2 28 1 1560 2877 2682 3277 +6201 4 2 28 1 2809 3210 2928 3616 +6202 4 2 28 1 3239 3301 2559 3564 +6203 4 2 28 1 2325 2317 2311 3260 +6204 4 2 28 1 2690 2711 3259 3488 +6205 4 2 28 1 2504 3246 2840 3778 +6206 4 2 28 1 2343 2917 1591 3166 +6207 4 2 28 1 616 716 746 3608 +6208 4 2 28 1 2023 1984 2776 3802 +6209 4 2 28 1 3265 3383 2368 3715 +6210 4 2 28 1 2615 3178 2840 3346 +6211 4 2 28 1 2849 3185 2651 3186 +6212 4 2 28 1 1885 2239 3061 3244 +6213 4 2 28 1 2805 2910 2576 3312 +6214 4 2 28 1 3233 3570 2685 3604 +6215 4 2 28 1 2831 3212 2141 3485 +6216 4 2 28 1 3186 3218 2849 3651 +6217 4 2 28 1 2794 3020 2663 3748 +6218 4 2 28 1 1916 3462 1853 3525 +6219 4 2 28 1 1720 1537 3083 3555 +6220 4 2 28 1 2030 2243 2155 3021 +6221 4 2 28 1 2304 3725 2814 3873 +6222 4 2 28 1 2700 3075 2994 3266 +6223 4 2 28 1 2277 3200 1584 3317 +6224 4 2 28 1 2856 1726 3268 3779 +6225 4 2 28 1 318 442 322 3681 +6226 4 2 28 1 2398 3271 2412 3644 +6227 4 2 28 1 1058 1121 1047 3350 +6228 4 2 28 1 438 489 472 3394 +6229 4 2 28 1 534 3249 667 3511 +6230 4 2 28 1 326 447 327 3805 +6231 4 2 28 1 2628 2807 2735 2882 +6232 4 2 28 1 1119 1118 800 3612 +6233 4 2 28 1 1656 1726 1408 2865 +6234 4 2 28 1 2614 3071 2875 3406 +6235 4 2 28 1 2473 2466 2780 3304 +6236 4 2 28 1 2809 3106 2651 3484 +6237 4 2 28 1 1429 1420 1738 2761 +6238 4 2 28 1 2185 3324 1894 3908 +6239 4 2 28 1 718 684 764 3356 +6240 4 2 28 1 3166 3265 3059 3383 +6241 4 2 28 1 952 1218 956 3864 +6242 4 2 28 1 601 634 600 3498 +6243 4 2 28 1 214 288 213 3843 +6244 4 2 28 1 1275 1073 3139 3674 +6245 4 2 28 1 2683 3207 3075 3637 +6246 4 2 28 1 2588 2883 2835 3820 +6247 4 2 28 1 2915 2968 2663 3330 +6248 4 2 28 1 1752 1796 1476 3706 +6249 4 2 28 1 2617 2958 3193 3244 +6250 4 2 28 1 475 379 492 3868 +6251 4 2 28 1 2231 3373 2163 3931 +6252 4 2 28 1 2542 2935 3326 3425 +6253 4 2 28 1 2576 3312 2758 3545 +6254 4 2 28 1 2669 2795 2756 3073 +6255 4 2 28 1 452 484 382 3290 +6256 4 2 28 1 2734 3220 3094 3737 +6257 4 2 28 1 2588 2728 2883 3820 +6258 4 2 28 1 2201 1908 2870 3413 +6259 4 2 28 1 349 332 444 3344 +6260 4 2 28 1 233 546 765 3490 +6261 4 2 28 1 2628 2569 2675 2735 +6262 4 2 28 1 3003 3242 2551 3668 +6263 4 2 28 1 2791 2889 2539 3363 +6264 4 2 28 1 1183 1279 1278 3492 +6265 4 2 28 1 1517 1677 1680 3375 +6266 4 2 28 1 2239 2035 3061 3244 +6267 4 2 28 1 2959 3405 2128 3688 +6268 4 2 28 1 1596 2977 1494 3238 +6269 4 2 28 1 2656 2667 2655 3665 +6270 4 2 28 1 1360 1362 1365 3157 +6271 4 2 28 1 2018 3029 2278 3462 +6272 4 2 28 1 2941 3230 2466 3304 +6273 4 2 28 1 2652 3222 3496 3582 +6274 4 2 28 1 1462 2789 1561 3539 +6275 4 2 28 1 1534 1393 3127 3534 +6276 4 2 28 1 1724 2403 2979 3914 +6277 4 2 28 1 1561 3087 2789 3335 +6278 4 2 28 1 2780 3271 2473 3304 +6279 4 2 28 1 2428 2464 2928 3367 +6280 4 2 28 1 2581 2639 2579 2971 +6281 4 2 28 1 607 741 3008 3815 +6282 4 2 28 1 1752 3166 1796 3706 +6283 4 2 28 1 3061 3193 2617 3488 +6284 4 2 28 1 1413 1480 3162 3418 +6285 4 2 28 1 3002 3045 2629 3063 +6286 4 2 28 1 470 375 385 3879 +6287 4 2 28 1 1486 2664 1515 3486 +6288 4 2 28 1 1464 1465 3037 3238 +6289 4 2 28 1 2273 1930 2850 3403 +6290 4 2 28 1 2030 3237 3021 3371 +6291 4 2 28 1 2673 2955 2954 3127 +6292 4 2 28 1 2876 3113 2648 3357 +6293 4 2 28 1 321 318 316 3789 +6294 4 2 28 1 2616 2647 2779 3062 +6295 4 2 28 1 2386 2810 2381 3496 +6296 4 2 28 1 2553 3177 2590 3466 +6297 4 2 28 1 274 420 469 3548 +6298 4 2 28 1 2016 2738 3110 3680 +6299 4 2 28 1 1591 2917 1796 3166 +6300 4 2 28 1 1836 2321 2118 3040 +6301 4 2 28 1 1999 1996 1998 2621 +6302 4 2 28 1 2708 3367 3197 3727 +6303 4 2 28 1 1481 1680 1501 3529 +6304 4 2 28 1 2751 2557 3021 3908 +6305 4 2 28 1 2683 3095 2903 3292 +6306 4 2 28 1 2663 3020 2794 3169 +6307 4 2 28 1 2876 3357 2842 3739 +6308 4 2 28 1 2539 2889 2791 3635 +6309 4 2 28 1 2034 2035 2033 2909 +6310 4 2 28 1 2588 2835 3195 3820 +6311 4 2 28 1 2991 3069 2949 3496 +6312 4 2 28 1 2772 2858 2588 3060 +6313 4 2 28 1 2609 3251 2570 3623 +6314 4 2 28 1 1048 1210 1084 2919 +6315 4 2 28 1 2679 2875 3081 3909 +6316 4 2 28 1 3045 3068 2629 3609 +6317 4 2 28 1 936 3019 938 3800 +6318 4 2 28 1 2324 3040 2321 3476 +6319 4 2 28 1 3177 3466 2845 3668 +6320 4 2 28 1 2548 2954 2841 3427 +6321 4 2 28 1 2706 2821 2636 3177 +6322 4 2 28 1 229 534 667 3511 +6323 4 2 28 1 2698 2962 2829 3895 +6324 4 2 28 1 2898 3346 3178 3771 +6325 4 2 28 1 3112 3471 3055 3551 +6326 4 2 28 1 2576 3027 2805 3111 +6327 4 2 28 1 2875 3519 3246 3909 +6328 4 2 28 1 1253 3181 1250 3473 +6329 4 2 28 1 2864 2994 3286 3483 +6330 4 2 28 1 2068 3133 2758 3200 +6331 4 2 28 1 2549 2943 2752 3387 +6332 4 2 28 1 3197 3367 2928 3727 +6333 4 2 28 1 2849 3091 2651 3468 +6334 4 2 28 1 2485 2474 2418 3449 +6335 4 2 28 1 1546 1740 1789 2893 +6336 4 2 28 1 2342 2496 2875 3422 +6337 4 2 28 1 2021 2257 2742 3035 +6338 4 2 28 1 2762 3098 2995 3579 +6339 4 2 28 1 2615 3027 2805 3373 +6340 4 2 28 1 660 661 665 3118 +6341 4 2 28 1 1790 3033 1539 3470 +6342 4 2 28 1 2092 1949 3528 3755 +6343 4 2 28 1 2167 2720 3078 3755 +6344 4 2 28 1 2273 2850 1933 3557 +6345 4 2 28 1 1938 3272 1937 3642 +6346 4 2 28 1 2636 2821 2706 2854 +6347 4 2 28 1 2700 3207 3075 3266 +6348 4 2 28 1 1610 3477 3445 3751 +6349 4 2 28 1 2511 3246 3519 3909 +6350 4 2 28 1 2545 3241 2791 3242 +6351 4 2 28 1 2163 3373 3030 3931 +6352 4 2 28 1 957 1224 1005 3656 +6353 4 2 28 1 1890 2845 1902 3451 +6354 4 2 28 1 1027 1026 1285 3393 +6355 4 2 28 1 3043 3117 2678 3829 +6356 4 2 28 1 486 389 394 3398 +6357 4 2 28 1 1434 1441 1428 2936 +6358 4 2 28 1 2644 2878 2635 3238 +6359 4 2 28 1 2652 3103 3351 3471 +6360 4 2 28 1 2553 2751 2902 3154 +6361 4 2 28 1 1680 3364 1501 3529 +6362 4 2 28 1 3236 3723 3105 3848 +6363 4 2 28 1 2686 2862 2661 2922 +6364 4 2 28 1 2244 2758 1841 3370 +6365 4 2 28 1 1595 3166 3059 3383 +6366 4 2 28 1 2145 1941 803 3809 +6367 4 2 28 1 2796 3265 2666 3412 +6368 4 2 28 1 2050 2739 2672 3101 +6369 4 2 28 1 535 764 682 3356 +6370 4 2 28 1 1990 2583 2687 2885 +6371 4 2 28 1 1426 2752 3171 3179 +6372 4 2 28 1 2758 2856 1661 3200 +6373 4 2 28 1 443 489 495 3394 +6374 4 2 28 1 2841 3065 2569 3427 +6375 4 2 28 1 2741 3364 3247 3375 +6376 4 2 28 1 803 1291 1061 3809 +6377 4 2 28 1 1764 2705 3280 3691 +6378 4 2 28 1 2678 3311 3043 3829 +6379 4 2 28 1 2189 2951 1847 3499 +6380 4 2 28 1 2707 3060 2898 3297 +6381 4 2 28 1 2631 2749 2600 2793 +6382 4 2 28 1 306 307 309 3734 +6383 4 2 28 1 750 227 226 3303 +6384 4 2 28 1 2447 2491 2478 3002 +6385 4 2 28 1 2717 2983 2982 3395 +6386 4 2 28 1 3023 2785 3412 3835 +6387 4 2 28 1 2627 2724 2833 3122 +6388 4 2 28 1 2632 3259 2831 3767 +6389 4 2 28 1 484 280 397 3672 +6390 4 2 28 1 2648 2876 2842 3105 +6391 4 2 28 1 1750 1409 1437 3065 +6392 4 2 28 1 1999 2621 1998 3461 +6393 4 2 28 1 1482 3214 3501 3542 +6394 4 2 28 1 1501 1500 1481 2915 +6395 4 2 28 1 1900 2864 2154 3489 +6396 4 2 28 1 2794 3169 2945 3488 +6397 4 2 28 1 2090 2998 2606 3332 +6398 4 2 28 1 2598 3219 3587 3818 +6399 4 2 28 1 1389 3348 2843 3501 +6400 4 2 28 1 1273 1201 783 3284 +6401 4 2 28 1 2632 2814 3220 3355 +6402 4 2 28 1 2692 3195 3165 3682 +6403 4 2 28 1 1856 1854 1855 2939 +6404 4 2 28 1 2518 2758 3312 3545 +6405 4 2 28 1 2341 2387 2351 2991 +6406 4 2 28 1 2142 1820 2143 3116 +6407 4 2 28 1 702 642 604 2899 +6408 4 2 28 1 1595 1730 1572 3383 +6409 4 2 28 1 299 300 297 3500 +6410 4 2 28 1 2397 2917 2410 3692 +6411 4 2 28 1 2557 3758 2966 3908 +6412 4 2 28 1 1496 2877 3198 3238 +6413 4 2 28 1 1515 1678 2894 2999 +6414 4 2 28 1 2028 2851 2703 3115 +6415 4 2 28 1 2506 3581 2840 3602 +6416 4 2 28 1 1520 1711 2938 3279 +6417 4 2 28 1 2160 2052 3106 3354 +6418 4 2 28 1 2708 3197 3596 3727 +6419 4 2 28 1 2428 2464 2459 2928 +6420 4 2 28 1 878 3256 3048 3853 +6421 4 2 28 1 2696 2954 2841 3235 +6422 4 2 28 1 2273 1928 1930 3403 +6423 4 2 28 1 808 1192 1660 3198 +6424 4 2 28 1 2576 2758 2861 3545 +6425 4 2 28 1 2791 3241 2570 3242 +6426 4 2 28 1 1347 1677 1735 3247 +6427 4 2 28 1 1405 1715 1605 3427 +6428 4 2 28 1 2037 3139 2830 3283 +6429 4 2 28 1 2342 2379 2531 3422 +6430 4 2 28 1 2553 2751 3000 3399 +6431 4 2 28 1 1894 2751 1895 3908 +6432 4 2 28 1 373 483 395 3693 +6433 4 2 28 1 2809 2864 2651 3354 +6434 4 2 28 1 1163 1298 3170 3176 +6435 4 2 28 1 1428 2822 2936 3546 +6436 4 2 28 1 1311 1277 811 3116 +6437 4 2 28 1 2301 2322 2291 3197 +6438 4 2 28 1 2955 3456 3127 3534 +6439 4 2 28 1 2810 3103 3069 3582 +6440 4 2 28 1 2441 3574 3278 3651 +6441 4 2 28 1 2780 2466 3230 3304 +6442 4 2 28 1 1878 3337 2958 3489 +6443 4 2 28 1 2955 3033 2696 3456 +6444 4 2 28 1 2588 2883 2728 3465 +6445 4 2 28 1 667 657 2735 3249 +6446 4 2 28 1 2273 2850 3206 3403 +6447 4 2 28 1 2785 2629 3023 3352 +6448 4 2 28 1 2838 2559 3301 3547 +6449 4 2 28 1 2715 2945 2794 3020 +6450 4 2 28 1 1318 781 3170 3417 +6451 4 2 28 1 2620 2635 2878 3238 +6452 4 2 28 1 2685 3233 3188 3425 +6453 4 2 28 1 463 471 321 3765 +6454 4 2 28 1 2943 2968 2761 3636 +6455 4 2 28 1 2445 2462 3186 3218 +6456 4 2 28 1 2928 3596 3197 3727 +6457 4 2 28 1 1605 1393 1397 3127 +6458 4 2 28 1 1501 3247 2915 3364 +6459 4 2 28 1 2529 2425 2453 2982 +6460 4 2 28 1 2865 3268 1726 3779 +6461 4 2 28 1 3004 3066 2804 3654 +6462 4 2 28 1 530 678 3441 3625 +6463 4 2 28 1 2983 3246 2840 3684 +6464 4 2 28 1 2612 2766 2662 3849 +6465 4 2 28 1 3063 3285 2781 3609 +6466 4 2 28 1 2709 2828 2635 3014 +6467 4 2 28 1 417 415 416 3647 +6468 4 2 28 1 472 489 446 3764 +6469 4 2 28 1 2781 3063 3609 3884 +6470 4 2 28 1 1072 3115 1063 3787 +6471 4 2 28 1 2719 2599 2812 3048 +6472 4 2 28 1 1680 3375 3364 3529 +6473 4 2 28 1 2637 2978 2919 3227 +6474 4 2 28 1 1764 1672 1443 3280 +6475 4 2 28 1 1964 2128 1995 3688 +6476 4 2 28 1 631 3064 3221 3499 +6477 4 2 28 1 3094 3220 2313 3737 +6478 4 2 28 1 1424 3427 2841 3584 +6479 4 2 28 1 2562 3123 2935 3424 +6480 4 2 28 1 2386 3104 2810 3496 +6481 4 2 28 1 2668 2863 2182 3747 +6482 4 2 28 1 1592 2750 1717 3417 +6483 4 2 28 1 369 396 404 3368 +6484 4 2 28 1 1339 1775 1828 3255 +6485 4 2 28 1 2804 3004 2626 3450 +6486 4 2 28 1 649 3261 3578 3726 +6487 4 2 28 1 1244 787 1079 3738 +6488 4 2 28 1 2110 2193 2830 3339 +6489 4 2 28 1 2861 3624 2576 3779 +6490 4 2 28 1 1452 3036 2936 3539 +6491 4 2 28 1 1429 1421 1420 3202 +6492 4 2 28 1 3071 3216 2806 3597 +6493 4 2 28 1 1385 1387 2957 3754 +6494 4 2 28 1 2418 2474 2338 3449 +6495 4 2 28 1 2342 2531 2496 3422 +6496 4 2 28 1 1385 1610 1686 3754 +6497 4 2 28 1 2629 3104 2785 3222 +6498 4 2 28 1 354 352 464 3765 +6499 4 2 28 1 2751 3758 2557 3908 +6500 4 2 28 1 1353 1586 2917 3228 +6501 4 2 28 1 546 232 688 3567 +6502 4 2 28 1 2456 3590 3031 3598 +6503 4 2 28 1 463 440 439 3789 +6504 4 2 28 1 2819 3071 3519 3798 +6505 4 2 28 1 2939 1853 3462 3525 +6506 4 2 28 1 1974 3415 3006 3476 +6507 4 2 28 1 2588 2858 2728 3195 +6508 4 2 28 1 3272 3557 2831 3642 +6509 4 2 28 1 3266 3471 2784 3830 +6510 4 2 28 1 2771 3609 3575 3884 +6511 4 2 28 1 2412 2398 2344 3271 +6512 4 2 28 1 2678 3043 2796 3165 +6513 4 2 28 1 2644 2567 3037 3238 +6514 4 2 28 1 1142 1141 1313 3349 +6515 4 2 28 1 1885 1884 2958 3193 +6516 4 2 28 1 2016 3003 2238 3401 +6517 4 2 28 1 1894 2185 3267 3324 +6518 4 2 28 1 2440 2941 2466 3304 +6519 4 2 28 1 199 3309 1106 3599 +6520 4 2 28 1 1553 3143 2665 3163 +6521 4 2 28 1 2544 3299 3199 3444 +6522 4 2 28 1 2721 3326 2935 3425 +6523 4 2 28 1 3165 3571 2893 3760 +6524 4 2 28 1 1267 1118 1268 3808 +6525 4 2 28 1 2299 2427 2423 3596 +6526 4 2 28 1 391 270 402 3670 +6527 4 2 28 1 2609 2654 2636 2818 +6528 4 2 28 1 2570 2791 3028 3241 +6529 4 2 28 1 2679 3081 3297 3909 +6530 4 2 28 1 3055 3471 3266 3830 +6531 4 2 28 1 2758 3133 2244 3312 +6532 4 2 28 1 3306 3471 3103 3582 +6533 4 2 28 1 2551 2592 3137 3613 +6534 4 2 28 1 2839 2945 2715 3233 +6535 4 2 28 1 1282 802 3309 3599 +6536 4 2 28 1 667 2735 657 3768 +6537 4 2 28 1 432 1616 282 3707 +6538 4 2 28 1 2608 2958 2864 3286 +6539 4 2 28 1 2977 3198 2878 3238 +6540 4 2 28 1 1053 3305 1287 3669 +6541 4 2 28 1 1100 3083 1288 3227 +6542 4 2 28 1 3213 3285 2781 3860 +6543 4 2 28 1 2518 2758 1841 3312 +6544 4 2 28 1 782 1286 1153 3436 +6545 4 2 28 1 2614 3081 2875 3246 +6546 4 2 28 1 2805 3111 2517 3545 +6547 4 2 28 1 425 212 3314 3612 +6548 4 2 28 1 1632 1567 1564 3898 +6549 4 2 28 1 1018 1257 3181 3182 +6550 4 2 28 1 2563 2584 2622 3054 +6551 4 2 28 1 1426 3171 2790 3179 +6552 4 2 28 1 1641 280 3109 3672 +6553 4 2 28 1 1735 1677 1517 3375 +6554 4 2 28 1 2590 2792 3390 3400 +6555 4 2 28 1 2629 3222 3068 3582 +6556 4 2 28 1 1386 2957 1387 3215 +6557 4 2 28 1 2556 3587 2822 3857 +6558 4 2 28 1 1069 1068 1301 3439 +6559 4 2 28 1 3059 3166 2666 3265 +6560 4 2 28 1 2717 2983 2840 3684 +6561 4 2 28 1 2517 2805 2525 3108 +6562 4 2 28 1 2576 2865 2861 3779 +6563 4 2 28 1 2751 2553 2902 3399 +6564 4 2 28 1 878 3124 3048 3256 +6565 4 2 28 1 2810 3496 3222 3582 +6566 4 2 28 1 210 211 420 2916 +6567 4 2 28 1 2956 3478 2772 3735 +6568 4 2 28 1 1605 1397 2954 3127 +6569 4 2 28 1 1592 1477 1524 2750 +6570 4 2 28 1 2849 3042 2489 3653 +6571 4 2 28 1 2670 3216 2967 3716 +6572 4 2 28 1 1547 1652 1724 3175 +6573 4 2 28 1 2501 2529 2453 2982 +6574 4 2 28 1 2741 3112 2886 3375 +6575 4 2 28 1 2858 3253 1544 3477 +6576 4 2 28 1 3071 2806 3289 3597 +6577 4 2 28 1 1908 2966 2775 3324 +6578 4 2 28 1 2540 3188 3233 3425 +6579 4 2 28 1 2353 2351 2378 2991 +6580 4 2 28 1 2708 3596 3049 3727 +6581 4 2 28 1 3278 3574 3161 3651 +6582 4 2 28 1 2629 3063 3045 3609 +6583 4 2 28 1 3153 3488 3419 3852 +6584 4 2 28 1 2050 2240 1962 2739 +6585 4 2 28 1 1703 2943 1414 3418 +6586 4 2 28 1 2626 3004 2804 3654 +6587 4 2 28 1 613 728 720 3638 +6588 4 2 28 1 2721 3409 2542 3425 +6589 4 2 28 1 1637 2979 1336 3554 +6590 4 2 28 1 2864 2958 2608 3710 +6591 4 2 28 1 639 715 752 3502 +6592 4 2 28 1 532 748 770 3076 +6593 4 2 28 1 2418 2338 2391 3449 +6594 4 2 28 1 1428 2822 1433 3691 +6595 4 2 28 1 1306 1670 1114 3277 +6596 4 2 28 1 2553 2590 2792 3466 +6597 4 2 28 1 3063 2446 3657 3877 +6598 4 2 28 1 2621 2900 2025 3096 +6599 4 2 28 1 2886 2960 2743 3214 +6600 4 2 28 1 2753 3178 3346 3771 +6601 4 2 28 1 2842 2876 2648 3357 +6602 4 2 28 1 2849 2651 3185 3468 +6603 4 2 28 1 1404 2938 1437 3427 +6604 4 2 28 1 1503 3065 2623 3327 +6605 4 2 28 1 2615 3594 3395 3901 +6606 4 2 28 1 1870 2874 1876 3347 +6607 4 2 28 1 2802 3042 3232 3910 +6608 4 2 28 1 444 333 445 3344 +6609 4 2 28 1 654 666 750 3249 +6610 4 2 28 1 3055 3551 3471 3830 +6611 4 2 28 1 2609 2636 2590 2704 +6612 4 2 28 1 1567 3788 2980 3932 +6613 4 2 28 1 623 640 647 3467 +6614 4 2 28 1 2889 3003 2853 3906 +6615 4 2 28 1 2512 2875 2496 3422 +6616 4 2 28 1 1602 2907 3491 3815 +6617 4 2 28 1 1725 2740 1510 2918 +6618 4 2 28 1 2615 2840 3108 3346 +6619 4 2 28 1 675 653 3096 3097 +6620 4 2 28 1 1463 3037 1465 3238 +6621 4 2 28 1 2579 2659 2857 3430 +6622 4 2 28 1 2642 2787 2612 3119 +6623 4 2 28 1 965 2827 984 3809 +6624 4 2 28 1 1627 1648 1628 3152 +6625 4 2 28 1 2596 2960 3112 3551 +6626 4 2 28 1 619 734 725 2920 +6627 4 2 28 1 2980 3127 2710 3788 +6628 4 2 28 1 1425 1415 1416 3179 +6629 4 2 28 1 2982 2983 2840 3395 +6630 4 2 28 1 1908 3324 1907 3908 +6631 4 2 28 1 1964 2959 2128 3688 +6632 4 2 28 1 650 626 3044 3785 +6633 4 2 28 1 1972 1954 1973 2804 +6634 4 2 28 1 2567 2838 3238 3687 +6635 4 2 28 1 3337 3480 2816 3489 +6636 4 2 28 1 1979 2910 2805 3312 +6637 4 2 28 1 2956 3465 2728 3846 +6638 4 2 28 1 1878 1875 2777 3828 +6639 4 2 28 1 2596 3748 2743 3761 +6640 4 2 28 1 2819 3271 3071 3798 +6641 4 2 28 1 2866 3225 2755 3694 +6642 4 2 28 1 2590 2636 2706 2854 +6643 4 2 28 1 1908 2966 3324 3908 +6644 4 2 28 1 576 559 3089 3701 +6645 4 2 28 1 1518 3087 1597 3539 +6646 4 2 28 1 2728 3465 2883 3846 +6647 4 2 28 1 2898 2588 3117 3315 +6648 4 2 28 1 2928 3210 2713 3616 +6649 4 2 28 1 2540 3419 3488 3852 +6650 4 2 28 1 1688 2682 1513 3463 +6651 4 2 28 1 2629 2810 3104 3222 +6652 4 2 28 1 2784 3471 3551 3830 +6653 4 2 28 1 2707 3081 2840 3602 +6654 4 2 28 1 2749 3520 3138 3595 +6655 4 2 28 1 1868 2853 3347 3527 +6656 4 2 28 1 3020 3169 2663 3604 +6657 4 2 28 1 2735 2807 2645 3100 +6658 4 2 28 1 2261 2005 2166 3340 +6659 4 2 28 1 2539 2942 3310 3409 +6660 4 2 28 1 2698 2829 3450 3713 +6661 4 2 28 1 709 3475 644 3589 +6662 4 2 28 1 3186 3484 2651 3766 +6663 4 2 28 1 2562 3424 3299 3662 +6664 4 2 28 1 1467 1618 1619 2838 +6665 4 2 28 1 1954 1973 2804 3373 +6666 4 2 28 1 1370 1369 1344 2892 +6667 4 2 28 1 649 615 773 3726 +6668 4 2 28 1 2244 2758 2068 3133 +6669 4 2 28 1 2576 3111 2805 3312 +6670 4 2 28 1 742 700 641 3747 +6671 4 2 28 1 2898 3060 2588 3315 +6672 4 2 28 1 2801 2671 2912 3089 +6673 4 2 28 1 2624 2927 1368 3157 +6674 4 2 28 1 940 941 3452 3831 +6675 4 2 28 1 1428 2936 2822 3691 +6676 4 2 28 1 2746 2866 2605 2988 +6677 4 2 28 1 2629 3002 2834 3352 +6678 4 2 28 1 1553 2665 3143 3793 +6679 4 2 28 1 2360 3311 2967 3402 +6680 4 2 28 1 2677 2852 2765 3321 +6681 4 2 28 1 1163 1662 1327 3170 +6682 4 2 28 1 2445 3218 3186 3651 +6683 4 2 28 1 1192 1495 1660 3198 +6684 4 2 28 1 1074 1275 1073 3115 +6685 4 2 28 1 2936 2597 3037 3539 +6686 4 2 28 1 2540 2995 2762 3444 +6687 4 2 28 1 2455 3586 2819 3644 +6688 4 2 28 1 650 3044 626 3509 +6689 4 2 28 1 2632 3259 2968 3330 +6690 4 2 28 1 2579 2699 2625 3926 +6691 4 2 28 1 1973 1972 2804 3528 +6692 4 2 28 1 1869 1872 3282 3680 +6693 4 2 28 1 2710 2980 3788 3932 +6694 4 2 28 1 1176 1177 3005 3893 +6695 4 2 28 1 1789 2893 1740 3571 +6696 4 2 28 1 3069 3103 2309 3351 +6697 4 2 28 1 891 3227 1084 3410 +6698 4 2 28 1 789 2914 1288 3083 +6699 4 2 28 1 1176 3005 832 3894 +6700 4 2 28 1 2547 2939 2824 3607 +6701 4 2 28 1 2449 3278 2849 3651 +6702 4 2 28 1 1012 1270 1271 3556 +6703 4 2 28 1 3117 3289 2869 3858 +6704 4 2 28 1 626 627 650 3509 +6705 4 2 28 1 1984 2680 2776 3142 +6706 4 2 28 1 2423 2327 2299 3596 +6707 4 2 28 1 2727 2989 2815 3360 +6708 4 2 28 1 2363 2806 2362 3865 +6709 4 2 28 1 2559 2655 2667 3665 +6710 4 2 28 1 2280 2016 3110 3680 +6711 4 2 28 1 2805 3030 2615 3373 +6712 4 2 28 1 2367 2384 2357 3352 +6713 4 2 28 1 1336 2403 2340 2979 +6714 4 2 28 1 2955 2956 1378 3751 +6715 4 2 28 1 2301 3049 2302 3103 +6716 4 2 28 1 3021 3237 2602 3371 +6717 4 2 28 1 2557 2902 2751 3021 +6718 4 2 28 1 3310 3409 3052 3698 +6719 4 2 28 1 2619 2914 1538 3159 +6720 4 2 28 1 936 2973 940 3452 +6721 4 2 28 1 2374 2819 2412 3271 +6722 4 2 28 1 1919 3401 2961 3742 +6723 4 2 28 1 2821 3177 2706 3705 +6724 4 2 28 1 1199 796 209 3556 +6725 4 2 28 1 2596 3055 3112 3537 +6726 4 2 28 1 2843 2957 1387 3754 +6727 4 2 28 1 3052 3438 3310 3698 +6728 4 2 28 1 2420 2982 2451 2983 +6729 4 2 28 1 3230 3449 2834 3877 +6730 4 2 28 1 2324 3476 2321 3725 +6731 4 2 28 1 2280 2084 2016 3680 +6732 4 2 28 1 675 2900 746 3097 +6733 4 2 28 1 2893 3125 2678 3253 +6734 4 2 28 1 2886 2743 3254 3833 +6735 4 2 28 1 1278 3291 1279 3628 +6736 4 2 28 1 2667 2682 2620 3015 +6737 4 2 28 1 3037 2597 3724 3782 +6738 4 2 28 1 3045 3063 2467 3575 +6739 4 2 28 1 1392 2980 1567 3788 +6740 4 2 28 1 1878 1875 1879 3244 +6741 4 2 28 1 2824 2990 2712 3384 +6742 4 2 28 1 492 392 372 3920 +6743 4 2 28 1 1689 1787 1676 3255 +6744 4 2 28 1 2713 2928 3616 3727 +6745 4 2 28 1 3111 3545 2861 3703 +6746 4 2 28 1 962 963 1126 3902 +6747 4 2 28 1 3185 3609 2700 3718 +6748 4 2 28 1 1563 1384 1386 2957 +6749 4 2 28 1 1542 2979 1637 3253 +6750 4 2 28 1 2648 3113 3105 3174 +6751 4 2 28 1 2629 2785 3104 3352 +6752 4 2 28 1 2126 2931 521 3101 +6753 4 2 28 1 2324 3596 3040 3725 +6754 4 2 28 1 1958 3035 2742 3759 +6755 4 2 28 1 2678 3315 2979 3829 +6756 4 2 28 1 2547 3113 2939 3607 +6757 4 2 28 1 1434 2936 1428 3691 +6758 4 2 28 1 1760 2572 3362 3676 +6759 4 2 28 1 2647 3152 3500 3730 +6760 4 2 28 1 3092 3147 1231 3224 +6761 4 2 28 1 2870 3293 1922 3560 +6762 4 2 28 1 1431 1459 1426 3171 +6763 4 2 28 1 2160 3106 3218 3354 +6764 4 2 28 1 2679 2898 3060 3297 +6765 4 2 28 1 2868 3506 3431 3566 +6766 4 2 28 1 2371 2780 2411 3449 +6767 4 2 28 1 794 2882 1136 3663 +6768 4 2 28 1 1397 2797 2954 3127 +6769 4 2 28 1 2645 2735 2569 2807 +6770 4 2 28 1 2506 2840 2504 3602 +6771 4 2 28 1 1051 1287 3434 3508 +6772 4 2 28 1 2563 3190 2611 3414 +6773 4 2 28 1 1231 3092 3224 3320 +6774 4 2 28 1 1163 3170 1327 3176 +6775 4 2 28 1 2692 2893 3165 3195 +6776 4 2 28 1 2968 3259 2794 3330 +6777 4 2 28 1 2608 2903 3345 3866 +6778 4 2 28 1 1201 3284 1273 3556 +6779 4 2 28 1 2605 2579 2699 2755 +6780 4 2 28 1 518 520 401 3353 +6781 4 2 28 1 2647 3243 3152 3730 +6782 4 2 28 1 1379 1709 1734 3033 +6783 4 2 28 1 2577 3239 3098 3460 +6784 4 2 28 1 727 659 631 3499 +6785 4 2 28 1 2145 3018 1941 3809 +6786 4 2 28 1 2589 2821 2706 3705 +6787 4 2 28 1 2673 2954 3052 3127 +6788 4 2 28 1 2313 3737 3220 3889 +6789 4 2 28 1 2772 2956 2858 3478 +6790 4 2 28 1 3021 3084 2011 3733 +6791 4 2 28 1 2007 2657 1849 2951 +6792 4 2 28 1 3049 3306 2713 3355 +6793 4 2 28 1 3002 3063 2834 3877 +6794 4 2 28 1 2713 3355 3306 3616 +6795 4 2 28 1 1841 2758 2518 3370 +6796 4 2 28 1 3059 3214 1483 3542 +6797 4 2 28 1 2449 2489 2849 3278 +6798 4 2 28 1 823 878 3124 3810 +6799 4 2 28 1 1530 1527 1529 3384 +6800 4 2 28 1 1856 1855 2876 2939 +6801 4 2 28 1 2657 2658 2568 2747 +6802 4 2 28 1 2138 1164 2010 3339 +6803 4 2 28 1 1362 2944 1365 3157 +6804 4 2 28 1 984 2827 965 3372 +6805 4 2 28 1 2883 3361 2835 3820 +6806 4 2 28 1 2378 3482 2991 3692 +6807 4 2 28 1 2030 2243 3021 3237 +6808 4 2 28 1 1487 3053 2990 3749 +6809 4 2 28 1 2587 3358 3255 3803 +6810 4 2 28 1 2564 2636 2609 2654 +6811 4 2 28 1 2893 3165 2796 3571 +6812 4 2 28 1 1284 1081 1035 3572 +6813 4 2 28 1 2009 2077 2110 2716 +6814 4 2 28 1 730 634 3010 3356 +6815 4 2 28 1 2182 2863 2104 3747 +6816 4 2 28 1 1777 2858 3477 3751 +6817 4 2 28 1 2452 2982 3189 3627 +6818 4 2 28 1 2794 3259 3055 3330 +6819 4 2 28 1 1263 1478 781 3417 +6820 4 2 28 1 1057 1288 1056 3659 +6821 4 2 28 1 3098 3239 2563 3460 +6822 4 2 28 1 2670 3716 2834 3860 +6823 4 2 28 1 2556 3279 2926 3857 +6824 4 2 28 1 2834 3352 3002 3714 +6825 4 2 28 1 2652 3103 3471 3582 +6826 4 2 28 1 2632 3658 2968 3767 +6827 4 2 28 1 1399 1407 1642 3179 +6828 4 2 28 1 2477 2491 3002 3262 +6829 4 2 28 1 2381 2810 3260 3496 +6830 4 2 28 1 1899 3193 3275 3440 +6831 4 2 28 1 2707 2840 3108 3602 +6832 4 2 28 1 2055 3338 2701 3461 +6833 4 2 28 1 2350 3069 2351 3496 +6834 4 2 28 1 1553 1550 3163 3437 +6835 4 2 28 1 2558 2595 2671 3327 +6836 4 2 28 1 2718 3110 1877 3322 +6837 4 2 28 1 1958 3652 3035 3759 +6838 4 2 28 1 2772 3067 3211 3702 +6839 4 2 28 1 974 983 982 2946 +6840 4 2 28 1 2582 3301 3183 3769 +6841 4 2 28 1 2654 2988 2866 3342 +6842 4 2 28 1 1973 2910 1978 3528 +6843 4 2 28 1 2696 3136 3749 3888 +6844 4 2 28 1 3058 3123 2935 3299 +6845 4 2 28 1 2114 2693 2241 3194 +6846 4 2 28 1 3043 3311 2806 3829 +6847 4 2 28 1 1199 208 1201 3556 +6848 4 2 28 1 2751 3154 1895 3908 +6849 4 2 28 1 2476 2486 2133 3189 +6850 4 2 28 1 1118 3314 800 3612 +6851 4 2 28 1 1472 1664 1778 2925 +6852 4 2 28 1 2477 2456 3262 3590 +6853 4 2 28 1 2545 2791 2889 3242 +6854 4 2 28 1 1544 2858 1533 3253 +6855 4 2 28 1 2615 2840 3178 3395 +6856 4 2 28 1 2781 3285 3185 3609 +6857 4 2 28 1 2690 3204 3275 3483 +6858 4 2 28 1 989 3013 817 3840 +6859 4 2 28 1 2585 3250 2902 3851 +6860 4 2 28 1 2544 2935 3299 3444 +6861 4 2 28 1 603 590 716 3885 +6862 4 2 28 1 2548 3438 3052 3698 +6863 4 2 28 1 1692 1792 1599 3754 +6864 4 2 28 1 824 3124 822 3410 +6865 4 2 28 1 198 510 292 2931 +6866 4 2 28 1 2654 2746 2605 2988 +6867 4 2 28 1 2979 3175 2679 3423 +6868 4 2 28 1 2558 3327 2671 3392 +6869 4 2 28 1 2462 3186 3106 3766 +6870 4 2 28 1 2034 2035 2909 3061 +6871 4 2 28 1 2844 2937 2650 3047 +6872 4 2 28 1 2720 2849 3091 3559 +6873 4 2 28 1 2581 2659 2558 2857 +6874 4 2 28 1 1442 1672 3280 3691 +6875 4 2 28 1 2045 2047 3480 3489 +6876 4 2 28 1 2683 3207 3637 3832 +6877 4 2 28 1 2797 3052 2954 3127 +6878 4 2 28 1 2741 2917 3228 3481 +6879 4 2 28 1 2707 3111 3108 3346 +6880 4 2 28 1 2683 3709 3207 3832 +6881 4 2 28 1 631 632 727 2951 +6882 4 2 28 1 1610 1598 3477 3751 +6883 4 2 28 1 2195 2035 2209 3541 +6884 4 2 28 1 2341 2351 2350 3069 +6885 4 2 28 1 2721 2539 3172 3363 +6886 4 2 28 1 2512 2496 2531 3422 +6887 4 2 28 1 2696 3584 3470 3749 +6888 4 2 28 1 2576 2861 2772 3702 +6889 4 2 28 1 1423 3065 2841 3427 +6890 4 2 28 1 2705 2936 3135 3724 +6891 4 2 28 1 3106 2651 3484 3766 +6892 4 2 28 1 2501 2420 2493 2982 +6893 4 2 28 1 2547 2568 2944 3495 +6894 4 2 28 1 1274 1272 1018 3704 +6895 4 2 28 1 2394 2366 2374 3071 +6896 4 2 28 1 2652 3496 3069 3582 +6897 4 2 28 1 2950 3349 2848 3447 +6898 4 2 28 1 2794 3204 3055 3259 +6899 4 2 28 1 2652 3222 2949 3496 +6900 4 2 28 1 1104 1096 1105 3934 +6901 4 2 28 1 2678 3125 2796 3715 +6902 4 2 28 1 2548 2971 3028 3156 +6903 4 2 28 1 2674 2825 2763 3505 +6904 4 2 28 1 2797 2569 2938 3427 +6905 4 2 28 1 1657 1729 1606 3083 +6906 4 2 28 1 2623 2645 3065 3491 +6907 4 2 28 1 2614 3178 2840 3684 +6908 4 2 28 1 1595 1572 3166 3383 +6909 4 2 28 1 1263 1658 1478 3417 +6910 4 2 28 1 500 427 3270 3924 +6911 4 2 28 1 1894 1891 3000 3267 +6912 4 2 28 1 2284 2846 1969 3448 +6913 4 2 28 1 1121 1318 1303 3350 +6914 4 2 28 1 1908 2775 1944 3324 +6915 4 2 28 1 2610 3084 3021 3733 +6916 4 2 28 1 2717 2840 3178 3684 +6917 4 2 28 1 3292 3319 3095 3514 +6918 4 2 28 1 2590 3155 2792 3251 +6919 4 2 28 1 3063 3575 3045 3609 +6920 4 2 28 1 2634 2813 2638 3623 +6921 4 2 28 1 2784 3412 3222 3835 +6922 4 2 28 1 1722 1599 1545 3093 +6923 4 2 28 1 2683 3637 3709 3832 +6924 4 2 28 1 3006 3275 3204 3616 +6925 4 2 28 1 2579 3430 2857 3507 +6926 4 2 28 1 1201 208 207 3670 +6927 4 2 28 1 2666 2886 2960 3112 +6928 4 2 28 1 2614 3684 3246 3798 +6929 4 2 28 1 2070 3312 3133 3640 +6930 4 2 28 1 2051 2160 2052 3106 +6931 4 2 28 1 2309 2310 2991 3685 +6932 4 2 28 1 2957 2980 1563 3534 +6933 4 2 28 1 2919 3227 2978 3410 +6934 4 2 28 1 1999 1998 2055 3461 +6935 4 2 28 1 2870 3237 1921 3293 +6936 4 2 28 1 1871 1870 3347 3828 +6937 4 2 28 1 751 728 648 3638 +6938 4 2 28 1 2721 2791 2539 3363 +6939 4 2 28 1 502 427 500 3924 +6940 4 2 28 1 2693 2890 2241 3194 +6941 4 2 28 1 3232 3901 2802 3910 +6942 4 2 28 1 718 764 2951 3356 +6943 4 2 28 1 1072 1063 1062 3787 +6944 4 2 28 1 1909 2033 2195 3324 +6945 4 2 28 1 2396 1573 2340 3554 +6946 4 2 28 1 2044 1984 2680 2776 +6947 4 2 28 1 2612 2844 2803 2937 +6948 4 2 28 1 3081 3246 2507 3909 +6949 4 2 28 1 810 2925 1310 3298 +6950 4 2 28 1 1119 3535 1118 3612 +6951 4 2 28 1 2460 2078 3040 3210 +6952 4 2 28 1 2133 2486 2247 3189 +6953 4 2 28 1 1968 2739 2606 3293 +6954 4 2 28 1 2752 3564 3179 3722 +6955 4 2 28 1 2804 3514 3450 3654 +6956 4 2 28 1 3265 3402 2389 3841 +6957 4 2 28 1 2796 3043 2678 3715 +6958 4 2 28 1 1842 2460 2078 3040 +6959 4 2 28 1 2830 3349 2950 3753 +6960 4 2 28 1 1917 1899 1897 3212 +6961 4 2 28 1 602 597 589 2984 +6962 4 2 28 1 2273 3206 1928 3403 +6963 4 2 28 1 2838 3171 2559 3547 +6964 4 2 28 1 2595 2671 2623 2873 +6965 4 2 28 1 3266 3835 3207 3918 +6966 4 2 28 1 2691 2709 2635 3014 +6967 4 2 28 1 1286 3416 1023 3505 +6968 4 2 28 1 648 649 760 3578 +6969 4 2 28 1 2604 3183 2562 3536 +6970 4 2 28 1 2809 2651 3106 3354 +6971 4 2 28 1 2730 3005 2695 3916 +6972 4 2 28 1 2548 2581 3156 3392 +6973 4 2 28 1 2834 3714 3449 3717 +6974 4 2 28 1 2548 3156 2569 3392 +6975 4 2 28 1 2445 2849 3218 3651 +6976 4 2 28 1 2971 3156 2581 3683 +6977 4 2 28 1 987 3524 968 3850 +6978 4 2 28 1 884 3258 964 3863 +6979 4 2 28 1 2569 3065 2841 3392 +6980 4 2 28 1 2371 3216 2780 3449 +6981 4 2 28 1 1099 3328 1097 3934 +6982 4 2 28 1 1610 3445 3093 3899 +6983 4 2 28 1 1776 2824 1367 3317 +6984 4 2 28 1 2544 3190 3299 3424 +6985 4 2 28 1 3059 3265 2796 3383 +6986 4 2 28 1 1544 1533 1543 3253 +6987 4 2 28 1 1698 2944 2824 2990 +6988 4 2 28 1 2368 3402 3265 3715 +6989 4 2 28 1 2195 2909 2035 3541 +6990 4 2 28 1 1847 3064 2951 3269 +6991 4 2 28 1 2968 3169 2543 3636 +6992 4 2 28 1 204 1204 205 3704 +6993 4 2 28 1 2666 3412 3265 3708 +6994 4 2 28 1 3230 3657 2446 3877 +6995 4 2 28 1 1935 2175 1932 3142 +6996 4 2 28 1 2562 3183 2604 3414 +6997 4 2 28 1 3132 3286 2994 3483 +6998 4 2 28 1 2577 3472 3098 3722 +6999 4 2 28 1 2575 3266 3055 3471 +7000 4 2 28 1 1958 1923 1924 3652 +7001 4 2 28 1 2715 3132 2945 3345 +7002 4 2 28 1 2050 2672 2931 3101 +7003 4 2 28 1 1555 2736 2616 2737 +7004 4 2 28 1 521 2931 292 3101 +7005 4 2 28 1 1861 3140 2842 3404 +7006 4 2 28 1 295 3152 271 3243 +7007 4 2 28 1 558 556 557 2905 +7008 4 2 28 1 2412 2819 2374 3644 +7009 4 2 28 1 1389 1388 3215 3348 +7010 4 2 28 1 2667 2682 3015 3314 +7011 4 2 28 1 2006 2316 3041 3143 +7012 4 2 28 1 2539 2879 3635 3698 +7013 4 2 28 1 2566 2779 2661 2786 +7014 4 2 28 1 2876 3105 2547 3532 +7015 4 2 28 1 221 793 1261 3694 +7016 4 2 28 1 616 746 675 2900 +7017 4 2 28 1 624 641 700 2863 +7018 4 2 28 1 2850 3428 3257 3583 +7019 4 2 28 1 1528 1776 1742 3317 +7020 4 2 28 1 2373 3071 2875 3519 +7021 4 2 28 1 2456 2488 3262 3598 +7022 4 2 28 1 2518 3370 2758 3545 +7023 4 2 28 1 1875 3541 2777 3828 +7024 4 2 28 1 1336 2979 2340 3554 +7025 4 2 28 1 2222 2160 3288 3354 +7026 4 2 28 1 795 3182 1276 3704 +7027 4 2 28 1 587 589 577 2984 +7028 4 2 28 1 2614 3071 3289 3597 +7029 4 2 28 1 2652 3351 2991 3685 +7030 4 2 28 1 2174 3189 3030 3594 +7031 4 2 28 1 2182 2668 2104 2863 +7032 4 2 28 1 768 779 680 3336 +7033 4 2 28 1 2693 2836 2716 3340 +7034 4 2 28 1 2680 2776 2681 3270 +7035 4 2 28 1 1096 1104 1094 3298 +7036 4 2 28 1 2166 3084 3154 3340 +7037 4 2 28 1 1988 2162 1974 3476 +7038 4 2 28 1 1463 3037 3238 3666 +7039 4 2 28 1 2690 3204 3006 3275 +7040 4 2 28 1 2277 2073 2199 3317 +7041 4 2 28 1 3058 3123 2542 3326 +7042 4 2 28 1 1861 2180 2842 3140 +7043 4 2 28 1 2297 3031 3260 3598 +7044 4 2 28 1 2650 2733 2571 2759 +7045 4 2 28 1 1529 3200 2856 3384 +7046 4 2 28 1 1534 3456 2955 3534 +7047 4 2 28 1 2559 3379 3552 3564 +7048 4 2 28 1 2750 3160 1477 3577 +7049 4 2 28 1 3265 3402 2796 3715 +7050 4 2 28 1 605 595 596 3741 +7051 4 2 28 1 2448 3449 3230 3877 +7052 4 2 28 1 2645 2807 2593 3121 +7053 4 2 28 1 2836 2953 2643 3851 +7054 4 2 28 1 2690 3212 3193 3275 +7055 4 2 28 1 1306 808 1331 2877 +7056 4 2 28 1 2628 2569 2735 2807 +7057 4 2 28 1 3161 3185 2849 3651 +7058 4 2 28 1 2644 2677 2635 3011 +7059 4 2 28 1 2202 1889 3322 3742 +7060 4 2 28 1 2712 3133 2856 3174 +7061 4 2 28 1 2928 3040 2713 3210 +7062 4 2 28 1 2045 3337 1888 3489 +7063 4 2 28 1 1951 2215 2167 3480 +7064 4 2 28 1 2437 3063 2446 3657 +7065 4 2 28 1 1755 1720 1537 3083 +7066 4 2 28 1 483 403 208 3670 +7067 4 2 28 1 2021 2742 1958 3035 +7068 4 2 28 1 2398 2458 3271 3644 +7069 4 2 28 1 1567 2980 3135 3932 +7070 4 2 28 1 2724 2811 2765 3184 +7071 4 2 28 1 294 1640 1320 3243 +7072 4 2 28 1 2553 3400 3177 3645 +7073 4 2 28 1 2956 3211 3033 3735 +7074 4 2 28 1 3412 3835 2784 3918 +7075 4 2 28 1 496 342 331 3844 +7076 4 2 28 1 2596 3020 3748 3761 +7077 4 2 28 1 1945 1876 1870 2874 +7078 4 2 28 1 2614 3081 2840 3178 +7079 4 2 28 1 2945 3132 2794 3488 +7080 4 2 28 1 1383 1534 2955 3534 +7081 4 2 28 1 373 3307 483 3693 +7082 4 2 28 1 2652 3351 3685 3837 +7083 4 2 28 1 1146 3070 1197 3874 +7084 4 2 28 1 2663 3169 2968 3636 +7085 4 2 28 1 1629 1459 1707 3838 +7086 4 2 28 1 1060 1071 1059 2890 +7087 4 2 28 1 3575 3609 3063 3884 +7088 4 2 28 1 2566 2640 2779 2786 +7089 4 2 28 1 2118 2321 2298 3040 +7090 4 2 28 1 1855 2939 1853 3462 +7091 4 2 28 1 1544 3253 1543 3477 +7092 4 2 28 1 2581 2558 2659 3801 +7093 4 2 28 1 1191 1326 792 2977 +7094 4 2 28 1 2247 2486 2537 3189 +7095 4 2 28 1 1496 1559 1797 2877 +7096 4 2 28 1 2718 3134 3153 3363 +7097 4 2 28 1 2806 2363 3216 3865 +7098 4 2 28 1 1990 2680 2583 2885 +7099 4 2 28 1 907 3817 3629 3902 +7100 4 2 28 1 2576 3111 3312 3545 +7101 4 2 28 1 1944 1908 2201 3413 +7102 4 2 28 1 2515 2494 2520 2892 +7103 4 2 28 1 1031 1290 1022 2977 +7104 4 2 28 1 748 3076 532 3333 +7105 4 2 28 1 2690 3193 2711 3488 +7106 4 2 28 1 3188 3233 2685 3604 +7107 4 2 28 1 2438 3574 3651 3657 +7108 4 2 28 1 1464 1699 3238 3280 +7109 4 2 28 1 2320 3228 2312 3685 +7110 4 2 28 1 2231 2805 3373 3931 +7111 4 2 28 1 3185 3186 2849 3651 +7112 4 2 28 1 2743 3214 2960 3825 +7113 4 2 28 1 1656 1408 1790 2865 +7114 4 2 28 1 2875 3071 2373 3865 +7115 4 2 28 1 1796 3375 1476 3706 +7116 4 2 28 1 1849 2951 2657 3269 +7117 4 2 28 1 2958 3440 1900 3489 +7118 4 2 28 1 2607 2696 3236 3438 +7119 4 2 28 1 1923 2961 1924 3652 +7120 4 2 28 1 1201 3274 783 3284 +7121 4 2 28 1 2145 803 2890 3809 +7122 4 2 28 1 1919 2202 2738 3742 +7123 4 2 28 1 2109 1849 1847 2951 +7124 4 2 28 1 3041 3143 2316 3889 +7125 4 2 28 1 2994 3075 2608 3345 +7126 4 2 28 1 2592 2731 2605 3613 +7127 4 2 28 1 1698 1776 1526 2990 +7128 4 2 28 1 2750 3350 2694 3577 +7129 4 2 28 1 1932 3142 2850 3403 +7130 4 2 28 1 1909 2195 3267 3324 +7131 4 2 28 1 2034 3061 2909 3324 +7132 4 2 28 1 2599 3420 3396 3903 +7133 4 2 28 1 2886 3112 2741 3364 +7134 4 2 28 1 1878 2958 1883 3489 +7135 4 2 28 1 2846 3154 2585 3340 +7136 4 2 28 1 2771 3045 3575 3609 +7137 4 2 28 1 2804 3066 3004 3755 +7138 4 2 28 1 1921 1922 2870 3293 +7139 4 2 28 1 938 3019 3643 3800 +7140 4 2 28 1 2573 3232 2849 3468 +7141 4 2 28 1 1534 1383 1393 3534 +7142 4 2 28 1 1501 3630 3247 3737 +7143 4 2 28 1 3177 3251 2590 3466 +7144 4 2 28 1 2949 3481 2991 3482 +7145 4 2 28 1 2620 2682 2667 3231 +7146 4 2 28 1 749 639 623 2923 +7147 4 2 28 1 2025 2863 2621 3096 +7148 4 2 28 1 2625 2767 2895 2901 +7149 4 2 28 1 2764 2853 3404 3673 +7150 4 2 28 1 1288 2914 1057 3227 +7151 4 2 28 1 2849 3232 2720 3468 +7152 4 2 28 1 2843 2957 2601 3757 +7153 4 2 28 1 2792 2590 3251 3466 +7154 4 2 28 1 2638 2746 2609 2813 +7155 4 2 28 1 2665 3143 3041 3164 +7156 4 2 28 1 2541 3723 3236 3895 +7157 4 2 28 1 2277 3200 3317 3720 +7158 4 2 28 1 1424 1460 3427 3584 +7159 4 2 28 1 2602 2672 2650 2847 +7160 4 2 28 1 2670 3285 3213 3860 +7161 4 2 28 1 1462 3037 2789 3539 +7162 4 2 28 1 1866 1867 1868 3680 +7163 4 2 28 1 2581 2659 2639 2801 +7164 4 2 28 1 2541 2857 2971 3236 +7165 4 2 28 1 2357 3002 2372 3104 +7166 4 2 28 1 2991 3228 2295 3692 +7167 4 2 28 1 1498 1496 2620 2877 +7168 4 2 28 1 361 489 443 3679 +7169 4 2 28 1 1250 3181 3119 3473 +7170 4 2 28 1 1409 3065 1423 3427 +7171 4 2 28 1 1753 1392 1567 3788 +7172 4 2 28 1 2853 2889 2641 2962 +7173 4 2 28 1 1808 527 2103 3261 +7174 4 2 28 1 2011 3084 3021 3154 +7175 4 2 28 1 2772 3060 2588 3067 +7176 4 2 28 1 2662 2766 2611 3849 +7177 4 2 28 1 2910 3528 3450 3544 +7178 4 2 28 1 2232 3139 2037 3283 +7179 4 2 28 1 1894 3000 2751 3267 +7180 4 2 28 1 2250 3086 2082 3168 +7181 4 2 28 1 2602 3021 3371 3774 +7182 4 2 28 1 1590 1705 1737 2736 +7183 4 2 28 1 1405 1397 1404 3427 +7184 4 2 28 1 3110 3282 1872 3680 +7185 4 2 28 1 2802 3627 2982 3721 +7186 4 2 28 1 1115 1114 1113 3277 +7187 4 2 28 1 1610 3093 3754 3899 +7188 4 2 28 1 2611 2563 2662 3849 +7189 4 2 28 1 2630 2631 2793 3750 +7190 4 2 28 1 1460 1715 1410 3427 +7191 4 2 28 1 2657 2747 2568 3269 +7192 4 2 28 1 2522 1635 2494 2892 +7193 4 2 28 1 2966 3758 3324 3908 +7194 4 2 28 1 2512 2875 3422 3909 +7195 4 2 28 1 433 3120 504 3707 +7196 4 2 28 1 2525 2805 2517 3931 +7197 4 2 28 1 504 461 3707 3923 +7198 4 2 28 1 1409 1404 1437 3427 +7199 4 2 28 1 1071 1060 1078 3729 +7200 4 2 28 1 2128 1964 1963 2959 +7201 4 2 28 1 2137 2000 2722 3018 +7202 4 2 28 1 1231 3320 859 3881 +7203 4 2 28 1 2478 2467 2447 3877 +7204 4 2 28 1 801 815 3432 3922 +7205 4 2 28 1 2711 3193 3061 3488 +7206 4 2 28 1 2615 3030 2805 3108 +7207 4 2 28 1 2796 3059 2666 3265 +7208 4 2 28 1 3723 3848 3236 3895 +7209 4 2 28 1 1424 3136 2841 3904 +7210 4 2 28 1 2688 2643 2836 3234 +7211 4 2 28 1 2461 3210 2928 3766 +7212 4 2 28 1 2935 3299 2562 3424 +7213 4 2 28 1 2285 2090 1991 2987 +7214 4 2 28 1 2452 2982 3627 3721 +7215 4 2 28 1 2495 3030 2525 3931 +7216 4 2 28 1 1416 2943 2752 3179 +7217 4 2 28 1 916 918 917 2976 +7218 4 2 28 1 2614 2840 3081 3246 +7219 4 2 28 1 1505 2623 2697 3327 +7220 4 2 28 1 2563 3299 3239 3444 +7221 4 2 28 1 2910 2576 3312 3624 +7222 4 2 28 1 3037 3238 2567 3280 +7223 4 2 28 1 622 591 714 3001 +7224 4 2 28 1 2154 2864 1900 3847 +7225 4 2 28 1 2570 3156 2971 3683 +7226 4 2 28 1 928 932 930 2993 +7227 4 2 28 1 2810 3069 3496 3582 +7228 4 2 28 1 2552 3029 3457 3926 +7229 4 2 28 1 2575 3055 3266 3830 +7230 4 2 28 1 1018 1272 3182 3704 +7231 4 2 28 1 421 480 469 3794 +7232 4 2 28 1 2637 2978 2770 3256 +7233 4 2 28 1 202 3492 434 3697 +7234 4 2 28 1 3027 3450 2804 3514 +7235 4 2 28 1 2832 3121 2593 3922 +7236 4 2 28 1 2951 3064 2676 3269 +7237 4 2 28 1 3255 3358 2587 3593 +7238 4 2 28 1 757 685 3146 3502 +7239 4 2 28 1 977 3119 1250 3181 +7240 4 2 28 1 1592 1524 1717 2750 +7241 4 2 28 1 2574 2674 2946 3455 +7242 4 2 28 1 1251 878 3048 3853 +7243 4 2 28 1 3324 3758 2751 3908 +7244 4 2 28 1 2560 3028 2911 3326 +7245 4 2 28 1 2222 2160 2049 3288 +7246 4 2 28 1 1419 1417 1420 3202 +7247 4 2 28 1 2771 3484 3186 3766 +7248 4 2 28 1 2412 3271 2819 3644 +7249 4 2 28 1 2604 2691 2677 2765 +7250 4 2 28 1 1397 2797 1404 3427 +7251 4 2 28 1 1427 1428 1788 3546 +7252 4 2 28 1 1938 2141 2831 3518 +7253 4 2 28 1 2652 3685 2991 3837 +7254 4 2 28 1 1211 1245 1249 3046 +7255 4 2 28 1 2050 1962 2672 2739 +7256 4 2 28 1 1561 1597 3087 3335 +7257 4 2 28 1 1964 1963 2959 3688 +7258 4 2 28 1 3084 3154 2585 3250 +7259 4 2 28 1 2785 3265 3412 3708 +7260 4 2 28 1 2692 2960 3214 3825 +7261 4 2 28 1 2612 2662 2563 3849 +7262 4 2 28 1 2651 3091 2849 3218 +7263 4 2 28 1 2718 3267 1877 3541 +7264 4 2 28 1 1643 1778 1521 3298 +7265 4 2 28 1 911 2852 1128 3850 +7266 4 2 28 1 1387 1401 1389 3754 +7267 4 2 28 1 1885 2958 1879 3244 +7268 4 2 28 1 1635 1344 2494 2892 +7269 4 2 28 1 1245 1042 1041 3046 +7270 4 2 28 1 431 494 350 3796 +7271 4 2 28 1 2562 3123 2792 3390 +7272 4 2 28 1 2644 3238 3037 3666 +7273 4 2 28 1 2323 3032 3355 3725 +7274 4 2 28 1 1164 1294 3283 3339 +7275 4 2 28 1 545 665 763 3118 +7276 4 2 28 1 2720 3480 2167 3559 +7277 4 2 28 1 3177 3400 2589 3645 +7278 4 2 28 1 1384 2957 1563 3534 +7279 4 2 28 1 2814 3306 3049 3355 +7280 4 2 28 1 3033 3470 2696 3584 +7281 4 2 28 1 2558 2671 2581 3392 +7282 4 2 28 1 626 761 636 3785 +7283 4 2 28 1 2856 3268 3174 3515 +7284 4 2 28 1 2660 2990 3105 3888 +7285 4 2 28 1 2615 3078 3373 3594 +7286 4 2 28 1 1389 1691 3348 3501 +7287 4 2 28 1 288 3314 213 3843 +7288 4 2 28 1 1322 1644 722 3333 +7289 4 2 28 1 3207 3213 3075 3637 +7290 4 2 28 1 2509 3111 3108 3703 +7291 4 2 28 1 2871 3206 2850 3257 +7292 4 2 28 1 862 1231 3147 3224 +7293 4 2 28 1 693 556 2905 3526 +7294 4 2 28 1 2760 3119 2965 3453 +7295 4 2 28 1 531 681 1622 3573 +7296 4 2 28 1 1416 2943 1419 3202 +7297 4 2 28 1 498 3408 3313 3728 +7298 4 2 28 1 3346 3514 3051 3869 +7299 4 2 28 1 1764 3280 1443 3691 +7300 4 2 28 1 1571 1368 1365 2624 +7301 4 2 28 1 940 936 1162 2973 +7302 4 2 28 1 2806 3117 3043 3829 +7303 4 2 28 1 1974 2162 3415 3476 +7304 4 2 28 1 1624 1364 2990 3891 +7305 4 2 28 1 2576 3027 3067 3713 +7306 4 2 28 1 2643 2976 2706 3523 +7307 4 2 28 1 2459 3040 2423 3596 +7308 4 2 28 1 1504 1461 1503 2623 +7309 4 2 28 1 2540 3169 3020 3604 +7310 4 2 28 1 1448 1487 1469 3749 +7311 4 2 28 1 2615 3514 2804 3654 +7312 4 2 28 1 1275 1073 3115 3139 +7313 4 2 28 1 2794 3132 3055 3204 +7314 4 2 28 1 2628 2675 2569 3156 +7315 4 2 28 1 1847 2676 3064 3269 +7316 4 2 28 1 1782 1623 1675 3486 +7317 4 2 28 1 2590 2792 3155 3390 +7318 4 2 28 1 3219 3812 3160 3857 +7319 4 2 28 1 832 1176 1169 3005 +7320 4 2 28 1 3066 2816 3454 3933 +7321 4 2 28 1 2614 3289 3071 3406 +7322 4 2 28 1 2608 2994 2864 3295 +7323 4 2 28 1 1115 1116 1264 2877 +7324 4 2 28 1 2426 2322 2297 3031 +7325 4 2 28 1 2539 2791 2721 3409 +7326 4 2 28 1 1487 1526 1488 2990 +7327 4 2 28 1 2461 3106 3210 3766 +7328 4 2 28 1 919 916 1123 2976 +7329 4 2 28 1 2145 2890 3018 3809 +7330 4 2 28 1 2926 2938 1711 3279 +7331 4 2 28 1 2459 2423 2427 3596 +7332 4 2 28 1 1586 1591 1353 2917 +7333 4 2 28 1 2741 3112 3375 3481 +7334 4 2 28 1 3155 3241 2792 3251 +7335 4 2 28 1 2615 3078 3594 3901 +7336 4 2 28 1 1426 2790 1459 3179 +7337 4 2 28 1 1177 1172 1176 3005 +7338 4 2 28 1 2763 3436 3087 3539 +7339 4 2 28 1 1424 2841 1423 3327 +7340 4 2 28 1 859 3320 857 3875 +7341 4 2 28 1 2815 3513 3234 3530 +7342 4 2 28 1 1965 1938 1937 3642 +7343 4 2 28 1 1907 1908 1944 3324 +7344 4 2 28 1 2715 2839 3233 3361 +7345 4 2 28 1 2804 3450 2910 3528 +7346 4 2 28 1 622 591 3001 3389 +7347 4 2 28 1 1656 1790 1702 3470 +7348 4 2 28 1 2667 2682 2559 3231 +7349 4 2 28 1 2270 1968 2217 3560 +7350 4 2 28 1 396 369 382 3025 +7351 4 2 28 1 984 919 3167 3372 +7352 4 2 28 1 2877 3015 2682 3277 +7353 4 2 28 1 1434 1428 1433 3691 +7354 4 2 28 1 1899 3212 1917 3275 +7355 4 2 28 1 2005 2261 2002 3448 +7356 4 2 28 1 1828 1775 2904 3255 +7357 4 2 28 1 2955 3127 2673 3534 +7358 4 2 28 1 723 712 576 2912 +7359 4 2 28 1 2160 3106 2051 3218 +7360 4 2 28 1 2809 2928 3210 3766 +7361 4 2 28 1 887 3302 947 3563 +7362 4 2 28 1 318 321 442 2940 +7363 4 2 28 1 3220 3330 2734 3537 +7364 4 2 28 1 3452 3831 941 3921 +7365 4 2 28 1 2719 2634 2929 3048 +7366 4 2 28 1 2588 3060 2898 3771 +7367 4 2 28 1 2796 3571 3165 3760 +7368 4 2 28 1 2477 3045 2431 3590 +7369 4 2 28 1 2864 1900 3440 3489 +7370 4 2 28 1 1014 985 966 3072 +7371 4 2 28 1 2008 3340 3226 3669 +7372 4 2 28 1 2502 2982 2493 3778 +7373 4 2 28 1 731 780 646 3007 +7374 4 2 28 1 2902 3154 2585 3851 +7375 4 2 28 1 2167 3078 2720 3559 +7376 4 2 28 1 2640 2684 2583 2940 +7377 4 2 28 1 3161 3651 3574 3657 +7378 4 2 28 1 944 933 3240 3792 +7379 4 2 28 1 632 2951 631 3540 +7380 4 2 28 1 2785 3265 2796 3412 +7381 4 2 28 1 273 3047 518 3353 +7382 4 2 28 1 3204 3275 3483 3616 +7383 4 2 28 1 1022 1068 981 2878 +7384 4 2 28 1 2853 3003 2889 3673 +7385 4 2 28 1 2280 2202 1881 3322 +7386 4 2 28 1 750 2933 3249 3303 +7387 4 2 28 1 2041 2273 2871 3206 +7388 4 2 28 1 3055 3204 2814 3355 +7389 4 2 28 1 2720 3091 2849 3468 +7390 4 2 28 1 1135 1181 1180 2989 +7391 4 2 28 1 220 686 3342 3502 +7392 4 2 28 1 978 977 3181 3628 +7393 4 2 28 1 1545 1543 3253 3477 +7394 4 2 28 1 2638 2813 2609 3623 +7395 4 2 28 1 1635 2892 2522 3423 +7396 4 2 28 1 2707 2898 3060 3771 +7397 4 2 28 1 2698 3544 2829 3713 +7398 4 2 28 1 1177 3380 3632 3893 +7399 4 2 28 1 484 3025 3109 3672 +7400 4 2 28 1 2110 2830 2716 3339 +7401 4 2 28 1 2273 2871 2850 3557 +7402 4 2 28 1 1296 806 3335 3436 +7403 4 2 28 1 822 891 1230 2978 +7404 4 2 28 1 2315 2323 3032 3220 +7405 4 2 28 1 670 669 668 3785 +7406 4 2 28 1 2600 2833 2724 3122 +7407 4 2 28 1 2398 2458 2344 3271 +7408 4 2 28 1 2556 2822 3279 3857 +7409 4 2 28 1 1541 1804 1709 3584 +7410 4 2 28 1 2277 3317 2199 3720 +7411 4 2 28 1 1164 3283 2010 3339 +7412 4 2 28 1 2511 3246 2513 3519 +7413 4 2 28 1 1356 2676 1358 3007 +7414 4 2 28 1 2700 3185 3285 3609 +7415 4 2 28 1 1419 2943 1417 3202 +7416 4 2 28 1 2673 2980 3127 3382 +7417 4 2 28 1 1912 1921 2870 3237 +7418 4 2 28 1 1889 2202 1903 3742 +7419 4 2 28 1 2677 2691 2635 3011 +7420 4 2 28 1 2708 3197 3049 3596 +7421 4 2 28 1 2574 2822 3160 3546 +7422 4 2 28 1 2677 3114 2852 3850 +7423 4 2 28 1 3113 3357 2876 3739 +7424 4 2 28 1 342 487 340 3844 +7425 4 2 28 1 2557 3190 2544 3783 +7426 4 2 28 1 1847 2676 1845 3064 +7427 4 2 28 1 824 866 826 2969 +7428 4 2 28 1 2539 2903 2962 3292 +7429 4 2 28 1 2189 2109 1847 2951 +7430 4 2 28 1 1573 3125 1637 3554 +7431 4 2 28 1 2761 3202 2549 3428 +7432 4 2 28 1 2174 2127 3030 3189 +7433 4 2 28 1 1890 3000 2845 3451 +7434 4 2 28 1 2660 3236 3105 3814 +7435 4 2 28 1 639 752 2899 3502 +7436 4 2 28 1 2781 3213 3185 3285 +7437 4 2 28 1 3071 3289 2806 3406 +7438 4 2 28 1 1893 3000 2043 3154 +7439 4 2 28 1 1538 1477 1592 2914 +7440 4 2 28 1 2829 2726 3450 3713 +7441 4 2 28 1 2006 2173 3143 3642 +7442 4 2 28 1 2034 3061 3324 3413 +7443 4 2 28 1 1885 2286 2239 3244 +7444 4 2 28 1 2506 3108 3581 3602 +7445 4 2 28 1 2578 2731 2668 3035 +7446 4 2 28 1 2585 3360 3250 3851 +7447 4 2 28 1 3349 3447 2950 3753 +7448 4 2 28 1 1908 2775 2966 3413 +7449 4 2 28 1 1605 2954 1397 3427 +7450 4 2 28 1 1169 855 3641 3854 +7451 4 2 28 1 2605 2746 2654 3137 +7452 4 2 28 1 537 548 549 2907 +7453 4 2 28 1 3055 3259 2632 3330 +7454 4 2 28 1 2043 2846 2261 3154 +7455 4 2 28 1 938 936 937 3019 +7456 4 2 28 1 3048 3124 878 3810 +7457 4 2 28 1 2581 2659 2671 3801 +7458 4 2 28 1 1567 3135 2980 3898 +7459 4 2 28 1 3006 3415 3275 3616 +7460 4 2 28 1 1318 3170 1303 3350 +7461 4 2 28 1 1610 1598 3093 3477 +7462 4 2 28 1 1546 1545 1543 3253 +7463 4 2 28 1 2257 1993 2668 3688 +7464 4 2 28 1 1480 2915 1500 3162 +7465 4 2 28 1 530 758 678 3625 +7466 4 2 28 1 2707 3060 3067 3771 +7467 4 2 28 1 1190 817 989 3013 +7468 4 2 28 1 1919 2738 2016 3401 +7469 4 2 28 1 2451 2983 2982 3721 +7470 4 2 28 1 1677 3247 1680 3364 +7471 4 2 28 1 1358 2927 3007 3157 +7472 4 2 28 1 1164 1294 1143 3283 +7473 4 2 28 1 1128 2852 911 3629 +7474 4 2 28 1 3308 3455 2597 3724 +7475 4 2 28 1 1546 1722 1545 2893 +7476 4 2 28 1 1310 2925 1472 3298 +7477 4 2 28 1 2442 2983 2451 3721 +7478 4 2 28 1 2678 2979 3149 3829 +7479 4 2 28 1 1460 1715 3427 3584 +7480 4 2 28 1 755 527 672 3726 +7481 4 2 28 1 2295 2991 2312 3228 +7482 4 2 28 1 1442 3280 2936 3691 +7483 4 2 28 1 2442 2454 2983 3304 +7484 4 2 28 1 883 894 893 2965 +7485 4 2 28 1 2576 3067 3111 3702 +7486 4 2 28 1 2574 3587 3219 3857 +7487 4 2 28 1 1210 1085 3410 3811 +7488 4 2 28 1 2693 3523 2953 3851 +7489 4 2 28 1 3004 3528 2804 3755 +7490 4 2 28 1 2902 2544 3399 3783 +7491 4 2 28 1 1861 3404 2842 3739 +7492 4 2 28 1 1336 2340 1573 3554 +7493 4 2 28 1 2520 3545 2861 3780 +7494 4 2 28 1 1871 3347 3282 3828 +7495 4 2 28 1 449 462 320 2963 +7496 4 2 28 1 1554 3143 1553 3163 +7497 4 2 28 1 2642 2800 2586 3250 +7498 4 2 28 1 2428 3367 3197 3590 +7499 4 2 28 1 740 767 731 3388 +7500 4 2 28 1 2336 2409 2348 3692 +7501 4 2 28 1 2543 2761 2968 3636 +7502 4 2 28 1 1982 2722 3377 3856 +7503 4 2 28 1 2300 3049 2301 3197 +7504 4 2 28 1 2560 2792 3155 3241 +7505 4 2 28 1 2864 2690 3286 3440 +7506 4 2 28 1 1538 2914 2619 3812 +7507 4 2 28 1 2693 2585 3340 3448 +7508 4 2 28 1 1478 1658 1799 3417 +7509 4 2 28 1 2726 3319 3292 3514 +7510 4 2 28 1 2658 2795 2624 3024 +7511 4 2 28 1 2083 3255 1828 3803 +7512 4 2 28 1 1418 2915 1480 3418 +7513 4 2 28 1 2109 2951 2189 3499 +7514 4 2 28 1 1846 1847 3269 3601 +7515 4 2 28 1 2351 2949 2352 3496 +7516 4 2 28 1 2331 3032 1831 3041 +7517 4 2 28 1 2549 3472 2577 3722 +7518 4 2 28 1 1889 2845 3322 3742 +7519 4 2 28 1 2452 2982 2425 3189 +7520 4 2 28 1 2003 2114 2008 2693 +7521 4 2 28 1 2661 2686 2572 2862 +7522 4 2 28 1 2652 2991 2949 3481 +7523 4 2 28 1 2393 2343 1591 3166 +7524 4 2 28 1 1365 2624 1368 3157 +7525 4 2 28 1 2238 3003 2016 3680 +7526 4 2 28 1 2892 3478 1370 3503 +7527 4 2 28 1 1188 983 3380 3811 +7528 4 2 28 1 1703 1414 1413 3418 +7529 4 2 28 1 2428 2430 3367 3590 +7530 4 2 28 1 3395 3594 2802 3901 +7531 4 2 28 1 3185 3213 2700 3285 +7532 4 2 28 1 2330 2321 3476 3725 +7533 4 2 28 1 2571 3497 2550 3758 +7534 4 2 28 1 1397 2797 3127 3788 +7535 4 2 28 1 938 3019 937 3643 +7536 4 2 28 1 1889 2845 1890 3322 +7537 4 2 28 1 2562 2600 2604 3536 +7538 4 2 28 1 2624 2944 1365 3486 +7539 4 2 28 1 1602 2907 1805 3491 +7540 4 2 28 1 2761 2968 2943 3162 +7541 4 2 28 1 1280 1064 1021 3787 +7542 4 2 28 1 2727 2688 2989 3360 +7543 4 2 28 1 1776 1526 2990 3384 +7544 4 2 28 1 2545 3668 3242 3906 +7545 4 2 28 1 1998 2178 2055 3462 +7546 4 2 28 1 2936 3036 1441 3546 +7547 4 2 28 1 2615 3030 3395 3594 +7548 4 2 28 1 3246 3684 2983 3798 +7549 4 2 28 1 2566 2640 2616 2779 +7550 4 2 28 1 1480 1500 1739 3162 +7551 4 2 28 1 3021 3084 2902 3154 +7552 4 2 28 1 2697 2907 1505 3077 +7553 4 2 28 1 793 3671 2988 3694 +7554 4 2 28 1 1988 3006 3032 3476 +7555 4 2 28 1 205 518 204 2844 +7556 4 2 28 1 917 1208 1206 2975 +7557 4 2 28 1 2696 2607 2955 3438 +7558 4 2 28 1 1998 1996 1997 3405 +7559 4 2 28 1 2863 2899 2767 3781 +7560 4 2 28 1 2858 3208 1533 3253 +7561 4 2 28 1 3308 3724 2597 3782 +7562 4 2 28 1 415 3332 416 3647 +7563 4 2 28 1 1895 2011 3021 3154 +7564 4 2 28 1 2153 2025 1999 2900 +7565 4 2 28 1 2605 2699 2579 3613 +7566 4 2 28 1 1133 862 3147 3487 +7567 4 2 28 1 350 344 430 3796 +7568 4 2 28 1 2605 2579 2755 3391 +7569 4 2 28 1 945 3144 944 3834 +7570 4 2 28 1 2611 2563 3414 3822 +7571 4 2 28 1 894 3453 897 3674 +7572 4 2 28 1 2596 2915 3330 3364 +7573 4 2 28 1 2842 3140 2180 3739 +7574 4 2 28 1 442 464 352 2940 +7575 4 2 28 1 2806 3289 3117 3829 +7576 4 2 28 1 1185 1251 878 3048 +7577 4 2 28 1 2634 2609 2813 3623 +7578 4 2 28 1 942 1209 1008 3016 +7579 4 2 28 1 1680 1475 3375 3529 +7580 4 2 28 1 2679 3149 3406 3422 +7581 4 2 28 1 3117 3829 3289 3858 +7582 4 2 28 1 229 228 534 2882 +7583 4 2 28 1 1501 1712 1500 3630 +7584 4 2 28 1 696 596 594 2947 +7585 4 2 28 1 1191 792 1290 2977 +7586 4 2 28 1 3006 2690 3212 3259 +7587 4 2 28 1 2713 3040 2928 3596 +7588 4 2 28 1 2711 3259 3488 3813 +7589 4 2 28 1 1827 2196 2237 3746 +7590 4 2 28 1 1058 1121 3350 3417 +7591 4 2 28 1 2604 2600 2724 3536 +7592 4 2 28 1 2631 2792 3390 3443 +7593 4 2 28 1 1181 3517 871 3762 +7594 4 2 28 1 2625 2895 2702 2901 +7595 4 2 28 1 1389 3215 2843 3348 +7596 4 2 28 1 2455 2424 3586 3644 +7597 4 2 28 1 1310 1472 1095 3298 +7598 4 2 28 1 1311 1987 2158 2931 +7599 4 2 28 1 1528 3200 1529 3384 +7600 4 2 28 1 2309 3351 2308 3685 +7601 4 2 28 1 1894 3324 2751 3908 +7602 4 2 28 1 670 668 2924 3785 +7603 4 2 28 1 1190 3013 1136 3511 +7604 4 2 28 1 721 769 741 3768 +7605 4 2 28 1 1183 795 203 2937 +7606 4 2 28 1 526 750 2933 3421 +7607 4 2 28 1 2580 3521 2944 3522 +7608 4 2 28 1 2945 3286 3132 3488 +7609 4 2 28 1 2909 3061 2035 3244 +7610 4 2 28 1 3260 3262 2381 3598 +7611 4 2 28 1 1980 2910 3312 3640 +7612 4 2 28 1 592 583 3389 3781 +7613 4 2 28 1 2547 2824 2568 3495 +7614 4 2 28 1 2695 3005 2808 3916 +7615 4 2 28 1 1805 2907 2623 3491 +7616 4 2 28 1 3481 3482 2917 3692 +7617 4 2 28 1 2465 2322 2426 3031 +7618 4 2 28 1 224 787 1260 2888 +7619 4 2 28 1 1877 3267 2176 3541 +7620 4 2 28 1 2507 3246 2519 3909 +7621 4 2 28 1 1610 1598 1599 3093 +7622 4 2 28 1 623 2923 639 3389 +7623 4 2 28 1 2541 2971 2879 3236 +7624 4 2 28 1 2496 2875 2512 3909 +7625 4 2 28 1 1247 1261 793 2988 +7626 4 2 28 1 2892 3297 2521 3423 +7627 4 2 28 1 2549 3098 3472 3722 +7628 4 2 28 1 835 833 1212 2872 +7629 4 2 28 1 1869 1872 1871 3282 +7630 4 2 28 1 333 501 445 3120 +7631 4 2 28 1 2718 3282 3172 3541 +7632 4 2 28 1 2822 3587 3731 3845 +7633 4 2 28 1 2715 3266 3132 3345 +7634 4 2 28 1 1019 960 1005 3057 +7635 4 2 28 1 1919 2738 3401 3742 +7636 4 2 28 1 3490 3567 688 3768 +7637 4 2 28 1 2459 2427 2428 3596 +7638 4 2 28 1 2557 2751 2544 3758 +7639 4 2 28 1 2636 3177 2821 3705 +7640 4 2 28 1 2596 3551 3020 3761 +7641 4 2 28 1 2988 3225 2866 3694 +7642 4 2 28 1 3051 2615 3346 3869 +7643 4 2 28 1 2824 2939 2568 3426 +7644 4 2 28 1 1322 532 3076 3333 +7645 4 2 28 1 2960 3214 3059 3760 +7646 4 2 28 1 2374 2819 3519 3644 +7647 4 2 28 1 1389 1691 1395 3348 +7648 4 2 28 1 2469 2139 3042 3627 +7649 4 2 28 1 2605 3613 2579 3799 +7650 4 2 28 1 2560 3155 2792 3390 +7651 4 2 28 1 1628 1705 1723 3152 +7652 4 2 28 1 2630 2793 2730 2872 +7653 4 2 28 1 1025 3434 1187 3650 +7654 4 2 28 1 1251 1248 1003 3048 +7655 4 2 28 1 1795 3591 3621 3672 +7656 4 2 28 1 685 536 3342 3502 +7657 4 2 28 1 2493 2457 2524 3586 +7658 4 2 28 1 1135 2989 1180 3816 +7659 4 2 28 1 2990 3053 2660 3749 +7660 4 2 28 1 2794 3169 3488 3813 +7661 4 2 28 1 2294 2310 2991 3069 +7662 4 2 28 1 1999 2055 2701 3461 +7663 4 2 28 1 2550 3896 2565 3911 +7664 4 2 28 1 3265 3841 2389 3861 +7665 4 2 28 1 1398 1406 1399 3254 +7666 4 2 28 1 2668 3035 2257 3688 +7667 4 2 28 1 2008 2228 2077 3669 +7668 4 2 28 1 2835 2869 3117 3919 +7669 4 2 28 1 2776 3142 2681 3802 +7670 4 2 28 1 1038 1231 3092 3859 +7671 4 2 28 1 3247 3630 2734 3737 +7672 4 2 28 1 3171 3179 2752 3564 +7673 4 2 28 1 2849 3042 3232 3278 +7674 4 2 28 1 2805 3545 2517 3931 +7675 4 2 28 1 746 3097 2900 3608 +7676 4 2 28 1 2941 3304 2440 3574 +7677 4 2 28 1 1287 1051 1316 3508 +7678 4 2 28 1 1724 2380 2403 3914 +7679 4 2 28 1 2441 2438 3574 3651 +7680 4 2 28 1 2684 2640 2820 2940 +7681 4 2 28 1 1418 3254 2915 3418 +7682 4 2 28 1 657 656 658 3839 +7683 4 2 28 1 2352 2351 2353 2949 +7684 4 2 28 1 2666 3059 2796 3760 +7685 4 2 28 1 2857 3430 2552 3507 +7686 4 2 28 1 2202 2016 1919 2738 +7687 4 2 28 1 2479 2849 2489 3653 +7688 4 2 28 1 2501 2453 2420 2982 +7689 4 2 28 1 2596 3529 2886 3748 +7690 4 2 28 1 2784 3551 3266 3830 +7691 4 2 28 1 2066 2018 2278 3462 +7692 4 2 28 1 1445 3214 2886 3833 +7693 4 2 28 1 2716 2950 2830 3084 +7694 4 2 28 1 2376 3422 2875 3865 +7695 4 2 28 1 2548 2971 3235 3698 +7696 4 2 28 1 1435 1618 2838 3231 +7697 4 2 28 1 2667 2788 2682 3314 +7698 4 2 28 1 530 223 3225 3441 +7699 4 2 28 1 987 1083 1080 3050 +7700 4 2 28 1 2607 3211 2956 3465 +7701 4 2 28 1 1115 1113 3015 3277 +7702 4 2 28 1 2654 2605 2866 2988 +7703 4 2 28 1 686 749 647 2923 +7704 4 2 28 1 2843 3501 3093 3754 +7705 4 2 28 1 2090 2987 2606 2998 +7706 4 2 28 1 1941 3018 1291 3809 +7707 4 2 28 1 1515 2894 2664 2999 +7708 4 2 28 1 2479 2445 2849 3218 +7709 4 2 28 1 2559 3547 3171 3564 +7710 4 2 28 1 2635 2878 2644 3203 +7711 4 2 28 1 625 636 709 3044 +7712 4 2 28 1 1630 681 668 2924 +7713 4 2 28 1 2856 3268 2865 3779 +7714 4 2 28 1 2389 3265 2368 3402 +7715 4 2 28 1 3218 3288 2160 3354 +7716 4 2 28 1 2548 2797 2954 3427 +7717 4 2 28 1 1698 1364 2944 2990 +7718 4 2 28 1 740 3007 731 3221 +7719 4 2 28 1 1895 3154 3021 3908 +7720 4 2 28 1 2996 3570 3020 3604 +7721 4 2 28 1 2954 3427 1715 3584 +7722 4 2 28 1 3151 3165 2835 3682 +7723 4 2 28 1 659 3064 633 3221 +7724 4 2 28 1 2662 2766 2612 2803 +7725 4 2 28 1 2542 3028 2911 3610 +7726 4 2 28 1 3183 3414 2582 3769 +7727 4 2 28 1 1429 1420 2761 3202 +7728 4 2 28 1 2673 3310 3052 3438 +7729 4 2 28 1 3055 3204 2632 3259 +7730 4 2 28 1 649 3578 3191 3726 +7731 4 2 28 1 3219 3334 2619 3812 +7732 4 2 28 1 2678 3149 2979 3554 +7733 4 2 28 1 2310 2329 2294 2991 +7734 4 2 28 1 1723 2647 1705 2736 +7735 4 2 28 1 2455 2454 2983 3586 +7736 4 2 28 1 2559 2667 2655 2788 +7737 4 2 28 1 2435 3575 3186 3766 +7738 4 2 28 1 2427 3197 2428 3596 +7739 4 2 28 1 1573 1637 1336 3554 +7740 4 2 28 1 2796 2785 3412 3740 +7741 4 2 28 1 868 1001 1198 3038 +7742 4 2 28 1 3071 3271 2780 3798 +7743 4 2 28 1 2857 3235 2971 3236 +7744 4 2 28 1 2048 3218 3091 3288 +7745 4 2 28 1 2632 3204 3055 3355 +7746 4 2 28 1 1552 3192 2904 3358 +7747 4 2 28 1 3055 3471 3112 3537 +7748 4 2 28 1 2454 2455 2983 3304 +7749 4 2 28 1 1478 3170 781 3417 +7750 4 2 28 1 2994 3185 2700 3718 +7751 4 2 28 1 1724 2403 1336 2979 +7752 4 2 28 1 1426 2752 1430 3171 +7753 4 2 28 1 2113 3168 2776 3433 +7754 4 2 28 1 2293 3476 3032 3725 +7755 4 2 28 1 2696 3470 2660 3749 +7756 4 2 28 1 2811 3184 2972 3776 +7757 4 2 28 1 3395 3869 2615 3901 +7758 4 2 28 1 1642 1459 1569 2790 +7759 4 2 28 1 2626 3095 3051 3514 +7760 4 2 28 1 324 454 449 2963 +7761 4 2 28 1 1496 3198 1596 3238 +7762 4 2 28 1 1724 1336 1547 2979 +7763 4 2 28 1 2309 2991 2310 3069 +7764 4 2 28 1 1138 1139 3349 3447 +7765 4 2 28 1 585 3689 3509 3872 +7766 4 2 28 1 2595 2664 2580 2669 +7767 4 2 28 1 2549 3098 3257 3472 +7768 4 2 28 1 2814 3220 3094 3537 +7769 4 2 28 1 2917 2666 3375 3706 +7770 4 2 28 1 2585 3154 3084 3340 +7771 4 2 28 1 776 761 650 3785 +7772 4 2 28 1 1641 3109 3025 3672 +7773 4 2 28 1 2980 3127 1392 3534 +7774 4 2 28 1 3132 3204 2794 3259 +7775 4 2 28 1 2710 3135 2980 3932 +7776 4 2 28 1 2928 2809 3484 3766 +7777 4 2 28 1 1416 2943 3202 3387 +7778 4 2 28 1 3003 3680 2853 3906 +7779 4 2 28 1 1737 1555 1590 2736 +7780 4 2 28 1 207 3274 1201 3670 +7781 4 2 28 1 1984 3142 2776 3802 +7782 4 2 28 1 2573 3161 2849 3232 +7783 4 2 28 1 1402 2797 1397 3788 +7784 4 2 28 1 2615 3051 3346 3514 +7785 4 2 28 1 340 487 376 3868 +7786 4 2 28 1 1357 1359 3157 3601 +7787 4 2 28 1 2696 2955 2607 3033 +7788 4 2 28 1 1978 1973 1979 2910 +7789 4 2 28 1 1314 2914 789 3417 +7790 4 2 28 1 1942 2201 1912 2870 +7791 4 2 28 1 2825 2852 2597 3416 +7792 4 2 28 1 1313 3283 1142 3349 +7793 4 2 28 1 1938 2054 2141 3518 +7794 4 2 28 1 1025 1103 1052 2950 +7795 4 2 28 1 2617 3193 2958 3286 +7796 4 2 28 1 2609 2654 2746 3137 +7797 4 2 28 1 1894 3267 2751 3324 +7798 4 2 28 1 1242 2859 1222 3435 +7799 4 2 28 1 1680 3247 1501 3364 +7800 4 2 28 1 1938 2141 2171 2831 +7801 4 2 28 1 546 688 3490 3567 +7802 4 2 28 1 2553 3000 2751 3154 +7803 4 2 28 1 2840 3581 3108 3602 +7804 4 2 28 1 1188 3380 1177 3893 +7805 4 2 28 1 2674 2946 2825 3505 +7806 4 2 28 1 1648 1627 1654 3090 +7807 4 2 28 1 1075 1066 1070 3494 +7808 4 2 28 1 2455 2473 3271 3304 +7809 4 2 28 1 1027 1317 3229 3393 +7810 4 2 28 1 2735 667 3249 3511 +7811 4 2 28 1 3035 3652 1924 3819 +7812 4 2 28 1 656 747 753 3930 +7813 4 2 28 1 2539 2883 3310 3618 +7814 4 2 28 1 2673 3127 2980 3534 +7815 4 2 28 1 649 755 744 3261 +7816 4 2 28 1 2886 3364 2741 3375 +7817 4 2 28 1 1486 3264 2664 3486 +7818 4 2 28 1 2581 2671 2558 3801 +7819 4 2 28 1 2190 1885 3061 3193 +7820 4 2 28 1 3055 3132 2794 3830 +7821 4 2 28 1 2734 3330 2915 3364 +7822 4 2 28 1 2683 3075 3345 3866 +7823 4 2 28 1 1870 1871 2179 3828 +7824 4 2 28 1 2332 3069 2349 3260 +7825 4 2 28 1 1315 1053 1287 3669 +7826 4 2 28 1 1231 3147 3092 3859 +7827 4 2 28 1 2692 3165 3151 3682 +7828 4 2 28 1 1058 3350 1047 3659 +7829 4 2 28 1 2749 2793 2631 2868 +7830 4 2 28 1 2789 3037 1462 3666 +7831 4 2 28 1 2645 3121 2593 3263 +7832 4 2 28 1 2809 3210 3106 3766 +7833 4 2 28 1 1912 2870 2966 3237 +7834 4 2 28 1 500 3270 427 3408 +7835 4 2 28 1 2579 2971 2639 3799 +7836 4 2 28 1 2469 2139 1825 3042 +7837 4 2 28 1 2595 2558 2671 3801 +7838 4 2 28 1 2915 3162 2968 3630 +7839 4 2 28 1 2651 3091 3288 3468 +7840 4 2 28 1 1035 3572 1149 3862 +7841 4 2 28 1 996 1197 1146 3070 +7842 4 2 28 1 2297 3031 2325 3260 +7843 4 2 28 1 3065 3327 2841 3392 +7844 4 2 28 1 2598 3587 3396 3818 +7845 4 2 28 1 947 1270 2867 3302 +7846 4 2 28 1 2747 2927 2624 3157 +7847 4 2 28 1 2458 2819 2455 3271 +7848 4 2 28 1 461 525 488 3707 +7849 4 2 28 1 2629 3285 3023 3352 +7850 4 2 28 1 2784 3835 3266 3918 +7851 4 2 28 1 655 666 630 3839 +7852 4 2 28 1 2193 2138 2010 3339 +7853 4 2 28 1 2876 3029 2552 3462 +7854 4 2 28 1 2835 3151 2561 3165 +7855 4 2 28 1 2051 3106 2482 3218 +7856 4 2 28 1 2833 2930 2724 3374 +7857 4 2 28 1 2734 2915 3247 3364 +7858 4 2 28 1 1782 1365 2944 3486 +7859 4 2 28 1 634 3252 3010 3356 +7860 4 2 28 1 992 867 3517 3595 +7861 4 2 28 1 1231 3092 3320 3881 +7862 4 2 28 1 2656 2828 2709 3026 +7863 4 2 28 1 1689 1676 1775 3255 +7864 4 2 28 1 1146 1226 999 3070 +7865 4 2 28 1 1932 1931 1935 3403 +7866 4 2 28 1 2707 2898 3081 3297 +7867 4 2 28 1 520 400 401 3353 +7868 4 2 28 1 2648 2712 3113 3174 +7869 4 2 28 1 2886 3375 1475 3529 +7870 4 2 28 1 2804 3027 2910 3450 +7871 4 2 28 1 1915 1913 3039 3451 +7872 4 2 28 1 1760 1511 1582 3676 +7873 4 2 28 1 2599 3156 3623 3683 +7874 4 2 28 1 2598 3122 3587 3916 +7875 4 2 28 1 1430 3171 2752 3379 +7876 4 2 28 1 1890 2226 2043 3451 +7877 4 2 28 1 2284 1969 2002 3448 +7878 4 2 28 1 2313 3247 3094 3737 +7879 4 2 28 1 2816 3066 3480 3933 +7880 4 2 28 1 2615 3027 2804 3514 +7881 4 2 28 1 1875 3282 3541 3828 +7882 4 2 28 1 2617 3419 3153 3488 +7883 4 2 28 1 808 2877 1301 3198 +7884 4 2 28 1 1426 1425 2752 3179 +7885 4 2 28 1 2799 3144 2859 3435 +7886 4 2 28 1 1538 1477 2914 3812 +7887 4 2 28 1 1463 1464 1465 3037 +7888 4 2 28 1 2679 3406 2875 3422 +7889 4 2 28 1 2763 2825 2597 3416 +7890 4 2 28 1 689 688 721 3768 +7891 4 2 28 1 3095 3319 2753 3514 +7892 4 2 28 1 725 734 670 2924 +7893 4 2 28 1 1912 2966 1911 3237 +7894 4 2 28 1 2393 1591 1337 3166 +7895 4 2 28 1 3343 3538 2930 3641 +7896 4 2 28 1 3083 3555 1537 3823 +7897 4 2 28 1 968 987 1082 3524 +7898 4 2 28 1 789 1657 2914 3083 +7899 4 2 28 1 1648 3090 2647 3152 +7900 4 2 28 1 2366 3071 2371 3216 +7901 4 2 28 1 2588 2772 3067 3465 +7902 4 2 28 1 831 3343 833 3411 +7903 4 2 28 1 1715 1767 2954 3584 +7904 4 2 28 1 1164 2138 784 3339 +7905 4 2 28 1 3052 3310 2673 3409 +7906 4 2 28 1 2935 3123 3058 3326 +7907 4 2 28 1 1147 3196 3369 3374 +7908 4 2 28 1 1707 1459 1431 3171 +7909 4 2 28 1 2511 2519 2513 3246 +7910 4 2 28 1 585 3509 3589 3872 +7911 4 2 28 1 347 336 348 3804 +7912 4 2 28 1 1703 1413 1480 3162 +7913 4 2 28 1 3020 3551 2715 3761 +7914 4 2 28 1 2642 2612 2766 3119 +7915 4 2 28 1 2780 3230 2941 3304 +7916 4 2 28 1 2801 3089 2912 3634 +7917 4 2 28 1 1524 1477 1479 3577 +7918 4 2 28 1 2760 2851 2703 3371 +7919 4 2 28 1 1926 3206 1922 3560 +7920 4 2 28 1 2539 3409 3310 3698 +7921 4 2 28 1 2030 3237 3371 3646 +7922 4 2 28 1 3232 3869 3395 3901 +7923 4 2 28 1 2758 3545 3370 3780 +7924 4 2 28 1 2658 2757 2657 3531 +7925 4 2 28 1 2374 3071 2373 3519 +7926 4 2 28 1 2791 3326 2721 3409 +7927 4 2 28 1 1381 1610 3445 3751 +7928 4 2 28 1 2731 2742 2668 3035 +7929 4 2 28 1 724 652 748 3076 +7930 4 2 28 1 2785 3708 3222 3861 +7931 4 2 28 1 546 233 232 2925 +7932 4 2 28 1 944 3144 1215 3792 +7933 4 2 28 1 2385 3449 3714 3717 +7934 4 2 28 1 2631 2727 2815 3360 +7935 4 2 28 1 1724 3175 2380 3914 +7936 4 2 28 1 915 1111 1123 2953 +7937 4 2 28 1 1866 1868 2853 3680 +7938 4 2 28 1 1897 1899 1886 3193 +7939 4 2 28 1 2966 3021 2557 3908 +7940 4 2 28 1 2741 3228 2991 3481 +7941 4 2 28 1 2569 3156 2675 3392 +7942 4 2 28 1 1073 1063 3115 3173 +7943 4 2 28 1 1286 1055 3416 3436 +7944 4 2 28 1 1901 1863 3458 3631 +7945 4 2 28 1 2764 3404 3649 3673 +7946 4 2 28 1 2676 3007 2927 3157 +7947 4 2 28 1 3237 3497 3021 3774 +7948 4 2 28 1 771 228 227 3303 +7949 4 2 28 1 982 3350 1043 3667 +7950 4 2 28 1 2777 2958 3337 3710 +7951 4 2 28 1 1019 3309 1281 3787 +7952 4 2 28 1 2044 2776 2680 3408 +7953 4 2 28 1 2582 3414 2563 3822 +7954 4 2 28 1 1999 2055 2056 2701 +7955 4 2 28 1 982 983 3350 3667 +7956 4 2 28 1 2666 2960 3412 3708 +7957 4 2 28 1 1294 1143 3283 3508 +7958 4 2 28 1 798 2851 3115 3787 +7959 4 2 28 1 2215 2167 3480 3559 +7960 4 2 28 1 1298 3170 3176 3667 +7961 4 2 28 1 2588 2858 3195 3315 +7962 4 2 28 1 2540 3233 3188 3604 +7963 4 2 28 1 2644 2977 1494 3666 +7964 4 2 28 1 1510 2740 2618 3676 +7965 4 2 28 1 1189 2134 791 2997 +7966 4 2 28 1 2569 2645 2807 3876 +7967 4 2 28 1 1916 1855 1853 3462 +7968 4 2 28 1 2297 2426 3031 3598 +7969 4 2 28 1 2781 3185 3161 3651 +7970 4 2 28 1 1982 3377 1940 3856 +7971 4 2 28 1 793 2988 1261 3694 +7972 4 2 28 1 2648 3113 2712 3720 +7973 4 2 28 1 993 1128 3817 3850 +7974 4 2 28 1 1337 1591 1796 3166 +7975 4 2 28 1 1998 2055 3461 3462 +7976 4 2 28 1 3166 3265 2413 3482 +7977 4 2 28 1 1386 1385 1387 2957 +7978 4 2 28 1 2539 2962 2889 3635 +7979 4 2 28 1 2429 2419 2465 3197 +7980 4 2 28 1 750 3249 2933 3421 +7981 4 2 28 1 3178 2615 3395 3869 +7982 4 2 28 1 2864 3288 2154 3489 +7983 4 2 28 1 2019 1941 2145 3018 +7984 4 2 28 1 2967 3023 2785 3740 +7985 4 2 28 1 2717 3232 2802 3278 +7986 4 2 28 1 2700 3285 3213 3832 +7987 4 2 28 1 1256 1213 1017 3012 +7988 4 2 28 1 2682 2877 2620 3015 +7989 4 2 28 1 1357 3157 1358 3601 +7990 4 2 28 1 2686 3362 2572 3676 +7991 4 2 28 1 2755 2923 2866 3467 +7992 4 2 28 1 344 515 430 3217 +7993 4 2 28 1 1266 1117 1118 3130 +7994 4 2 28 1 1326 1669 792 3198 +7995 4 2 28 1 2329 2387 2991 3692 +7996 4 2 28 1 2588 2835 3117 3195 +7997 4 2 28 1 2559 2838 3231 3379 +7998 4 2 28 1 1877 3110 2718 3541 +7999 4 2 28 1 2340 2403 2395 2979 +8000 4 2 28 1 2898 3117 2588 3771 +8001 4 2 28 1 2717 2941 3079 3161 +8002 4 2 28 1 2910 3450 3027 3544 +8003 4 2 28 1 2785 3402 3265 3841 +8004 4 2 28 1 1429 2761 1738 3437 +8005 4 2 28 1 2568 2624 2658 3521 +8006 4 2 28 1 2874 2903 2777 3454 +8007 4 2 28 1 2655 3239 2656 3665 +8008 4 2 28 1 472 439 438 2964 +8009 4 2 28 1 2802 3232 3042 3278 +8010 4 2 28 1 2641 2889 2853 3906 +8011 4 2 28 1 2239 2190 1885 3061 +8012 4 2 28 1 2784 3471 3112 3551 +8013 4 2 28 1 2753 3514 3346 3869 +8014 4 2 28 1 1511 1725 1510 2918 +8015 4 2 28 1 2603 2774 2659 3801 +8016 4 2 28 1 2856 3133 2712 3200 +8017 4 2 28 1 1703 3162 2943 3418 +8018 4 2 28 1 557 2905 556 3614 +8019 4 2 28 1 1946 3066 3004 3933 +8020 4 2 28 1 1189 2997 1284 3393 +8021 4 2 28 1 2570 2639 2971 3799 +8022 4 2 28 1 2869 3637 3319 3858 +8023 4 2 28 1 2041 2273 1933 3557 +8024 4 2 28 1 2649 2724 2600 2749 +8025 4 2 28 1 1925 1922 3293 3560 +8026 4 2 28 1 2477 2456 2488 3262 +8027 4 2 28 1 2596 3020 2794 3748 +8028 4 2 28 1 445 504 433 3120 +8029 4 2 28 1 1013 1262 1269 3026 +8030 4 2 28 1 1217 1219 3145 3431 +8031 4 2 28 1 1897 1898 3212 3712 +8032 4 2 28 1 2696 3749 2660 3888 +8033 4 2 28 1 2548 2581 2971 3156 +8034 4 2 28 1 1177 3632 3005 3893 +8035 4 2 28 1 1442 1452 1441 2936 +8036 4 2 28 1 3106 3484 2809 3766 +8037 4 2 28 1 872 871 870 2921 +8038 4 2 28 1 2540 3425 3233 3576 +8039 4 2 28 1 483 3307 403 3670 +8040 4 2 28 1 1445 2886 1758 3833 +8041 4 2 28 1 2614 2875 3081 3406 +8042 4 2 28 1 2566 2549 2591 2633 +8043 4 2 28 1 2349 3069 2350 3260 +8044 4 2 28 1 1611 1795 3621 3672 +8045 4 2 28 1 2753 3051 3514 3869 +8046 4 2 28 1 2615 3108 2840 3395 +8047 4 2 28 1 1362 1782 1365 2944 +8048 4 2 28 1 2517 2525 2509 3108 +8049 4 2 28 1 2660 2865 3268 3470 +8050 4 2 28 1 2785 3412 3222 3708 +8051 4 2 28 1 2630 2600 2730 2793 +8052 4 2 28 1 2874 3004 1876 3347 +8053 4 2 28 1 2449 2489 2479 2849 +8054 4 2 28 1 2305 2309 3103 3351 +8055 4 2 28 1 2911 3122 2598 3493 +8056 4 2 28 1 2663 2968 2943 3636 +8057 4 2 28 1 3212 3259 2831 3518 +8058 4 2 28 1 1461 1503 2623 3327 +8059 4 2 28 1 2543 3169 2968 3813 +8060 4 2 28 1 3171 3379 2559 3564 +8061 4 2 28 1 2579 2639 2581 2659 +8062 4 2 28 1 2572 3552 2752 3585 +8063 4 2 28 1 520 2844 205 3274 +8064 4 2 28 1 1886 3193 1899 3440 +8065 4 2 28 1 3149 3554 2395 3914 +8066 4 2 28 1 837 1175 839 2930 +8067 4 2 28 1 839 837 3369 3538 +8068 4 2 28 1 2991 3482 3481 3692 +8069 4 2 28 1 1797 1596 1496 3198 +8070 4 2 28 1 1452 1441 2936 3036 +8071 4 2 28 1 1399 2996 1406 3418 +8072 4 2 28 1 3213 3637 3207 3832 +8073 4 2 28 1 2618 2740 1510 3603 +8074 4 2 28 1 2749 2868 2727 3138 +8075 4 2 28 1 456 334 450 2952 +8076 4 2 28 1 2072 2277 1829 1584 +8077 4 2 28 1 2915 3162 1480 3418 +8078 4 2 28 1 707 572 584 2884 +8079 4 2 28 1 840 3369 842 3538 +8080 4 2 28 1 2598 3587 3219 3916 +8081 4 2 28 1 2376 3149 3422 3865 +8082 4 2 28 1 1284 1035 3229 3572 +8083 4 2 28 1 2521 3423 3297 3797 +8084 4 2 28 1 2525 3108 3030 3581 +8085 4 2 28 1 2650 2672 2602 3497 +8086 4 2 28 1 2634 2855 2704 3750 +8087 4 2 28 1 2724 2765 2627 2974 +8088 4 2 28 1 1399 2996 1407 3179 +8089 4 2 28 1 2124 2204 2257 3273 +8090 4 2 28 1 634 3010 3252 3578 +8091 4 2 28 1 2856 3200 2712 3384 +8092 4 2 28 1 2919 3350 2750 3659 +8093 4 2 28 1 1727 2682 2620 3231 +8094 4 2 28 1 2696 2607 3236 3814 +8095 4 2 28 1 2455 2819 2458 3644 +8096 4 2 28 1 2675 2735 2569 3392 +8097 4 2 28 1 2697 2623 2907 3008 +8098 4 2 28 1 1381 1598 1610 3751 +8099 4 2 28 1 2678 3253 3125 3554 +8100 4 2 28 1 1117 1118 3130 3314 +8101 4 2 28 1 833 3343 836 3538 +8102 4 2 28 1 667 657 745 3768 +8103 4 2 28 1 2603 2594 2756 3521 +8104 4 2 28 1 2666 3112 2960 3708 +8105 4 2 28 1 631 2951 3221 3540 +8106 4 2 28 1 674 2095 527 2900 +8107 4 2 28 1 2634 2630 2855 3750 +8108 4 2 28 1 2469 3042 1825 3653 +8109 4 2 28 1 2990 3053 2547 3522 +8110 4 2 28 1 2563 3239 3098 3444 +8111 4 2 28 1 631 3221 2951 3499 +8112 4 2 28 1 2676 3269 1847 3601 +8113 4 2 28 1 478 493 384 3366 +8114 4 2 28 1 1060 3194 3167 3729 +8115 4 2 28 1 1391 1563 1386 3215 +8116 4 2 28 1 1250 1249 1041 3046 +8117 4 2 28 1 3043 3311 2678 3715 +8118 4 2 28 1 1523 3470 3584 3749 +8119 4 2 28 1 2596 2794 3020 3830 +8120 4 2 28 1 2214 2022 3341 3878 +8121 4 2 28 1 2827 2976 3167 3523 +8122 4 2 28 1 1391 2980 1563 3215 +8123 4 2 28 1 2479 3218 2849 3653 +8124 4 2 28 1 1027 3229 1026 3393 +8125 4 2 28 1 2715 3361 3233 3761 +8126 4 2 28 1 2641 3172 2718 3282 +8127 4 2 28 1 1869 3282 3347 3680 +8128 4 2 28 1 926 939 3459 3886 +8129 4 2 28 1 2435 3186 2462 3766 +8130 4 2 28 1 2603 2897 2774 2913 +8131 4 2 28 1 2612 2622 2563 2662 +8132 4 2 28 1 860 3487 864 3695 +8133 4 2 28 1 839 3369 838 3538 +8134 4 2 28 1 2549 3202 2943 3387 +8135 4 2 28 1 2576 2861 3111 3545 +8136 4 2 28 1 2712 3113 2824 3607 +8137 4 2 28 1 1416 3202 1419 3387 +8138 4 2 28 1 354 353 352 2985 +8139 4 2 28 1 1622 1321 531 3573 +8140 4 2 28 1 3107 3600 2744 3738 +8141 4 2 28 1 2769 2978 2770 3334 +8142 4 2 28 1 840 838 3369 3538 +8143 4 2 28 1 2842 3458 2764 3723 +8144 4 2 28 1 1071 2890 1060 3194 +8145 4 2 28 1 2819 3586 3519 3644 +8146 4 2 28 1 1922 1912 1921 2870 +8147 4 2 28 1 2698 3450 3004 3528 +8148 4 2 28 1 936 1162 2973 3800 +8149 4 2 28 1 798 3116 2851 3787 +8150 4 2 28 1 2609 2654 2818 3016 +8151 4 2 28 1 2696 3438 2955 3456 +8152 4 2 28 1 752 3323 661 3510 +8153 4 2 28 1 2666 3265 2949 3708 +8154 4 2 28 1 2329 2991 2295 3692 +8155 4 2 28 1 2693 3194 2114 3226 +8156 4 2 28 1 884 877 3762 3816 +8157 4 2 28 1 1156 1155 3325 3809 +8158 4 2 28 1 2857 2579 3507 3799 +8159 4 2 28 1 3029 3458 2278 3462 +8160 4 2 28 1 1149 2970 1150 3862 +8161 4 2 28 1 1928 1927 1929 3560 +8162 4 2 28 1 1317 1284 3229 3393 +8163 4 2 28 1 2806 3043 2967 3311 +8164 4 2 28 1 1890 2043 3000 3451 +8165 4 2 28 1 1592 2914 2750 3417 +8166 4 2 28 1 1258 1011 3600 3663 +8167 4 2 28 1 3020 3570 3233 3604 +8168 4 2 28 1 2634 2719 2599 2812 +8169 4 2 28 1 2550 2571 3054 3497 +8170 4 2 28 1 2666 2960 3059 3760 +8171 4 2 28 1 1163 1298 1148 3170 +8172 4 2 28 1 2050 2172 2268 3101 +8173 4 2 28 1 1286 3176 2763 3505 +8174 4 2 28 1 531 725 681 3573 +8175 4 2 28 1 2552 3507 2764 3723 +8176 4 2 28 1 842 3431 1217 3538 +8177 4 2 28 1 1637 1542 1336 2979 +8178 4 2 28 1 1762 1528 1742 3317 +8179 4 2 28 1 2635 2620 2878 2881 +8180 4 2 28 1 2349 2341 2350 3069 +8181 4 2 28 1 771 750 3249 3303 +8182 4 2 28 1 2691 3014 2635 3147 +8183 4 2 28 1 2579 2857 2581 2971 +8184 4 2 28 1 555 554 553 2873 +8185 4 2 28 1 2592 3035 2961 3652 +8186 4 2 28 1 1765 1764 3691 3898 +8187 4 2 28 1 1825 2139 2289 3042 +8188 4 2 28 1 2552 3458 2876 3723 +8189 4 2 28 1 2726 3464 2829 3895 +8190 4 2 28 1 2869 3079 2670 3213 +8191 4 2 28 1 2841 3427 2954 3584 +8192 4 2 28 1 1268 3130 1118 3535 +8193 4 2 28 1 1284 1189 791 2997 +8194 4 2 28 1 1358 3007 2676 3157 +8195 4 2 28 1 1238 812 217 3512 +8196 4 2 28 1 3319 3637 2753 3858 +8197 4 2 28 1 1048 1046 1210 2919 +8198 4 2 28 1 1464 3238 3037 3280 +8199 4 2 28 1 2238 2016 2084 3680 +8200 4 2 28 1 2553 3000 3134 3399 +8201 4 2 28 1 1418 3254 1693 3529 +8202 4 2 28 1 1897 1887 1898 3712 +8203 4 2 28 1 2563 2584 3098 3460 +8204 4 2 28 1 3055 3306 2575 3471 +8205 4 2 28 1 2678 3311 3149 3554 +8206 4 2 28 1 2239 2286 2035 3244 +8207 4 2 28 1 2447 3045 2467 3575 +8208 4 2 28 1 2615 3108 3395 3581 +8209 4 2 28 1 887 3487 3302 3563 +8210 4 2 28 1 1944 2775 1908 3413 +8211 4 2 28 1 1239 1228 3397 3411 +8212 4 2 28 1 527 3261 672 3726 +8213 4 2 28 1 2717 3178 2840 3395 +8214 4 2 28 1 2312 3228 2991 3685 +8215 4 2 28 1 1933 2273 1930 2850 +8216 4 2 28 1 1375 1790 2865 3033 +8217 4 2 28 1 2556 3587 3219 3818 +8218 4 2 28 1 1172 1170 1169 3005 +8219 4 2 28 1 2544 3153 3134 3424 +8220 4 2 28 1 2630 3145 2793 3533 +8221 4 2 28 1 2619 3083 2914 3159 +8222 4 2 28 1 3193 3286 2617 3488 +8223 4 2 28 1 2137 3018 2722 3393 +8224 4 2 28 1 2768 3080 3034 3794 +8225 4 2 28 1 2637 3124 2978 3256 +8226 4 2 28 1 2556 2911 3396 3903 +8227 4 2 28 1 1357 1359 3601 3746 +8228 4 2 28 1 2350 3260 3069 3496 +8229 4 2 28 1 2533 2518 3312 3545 +8230 4 2 28 1 2360 2967 2359 3402 +8231 4 2 28 1 3222 3412 2784 3708 +8232 4 2 28 1 3083 3227 1100 3934 +8233 4 2 28 1 2520 2861 1369 3780 +8234 4 2 28 1 1618 1699 1619 2838 +8235 4 2 28 1 2388 2395 3149 3554 +8236 4 2 28 1 2831 3518 3041 3642 +8237 4 2 28 1 633 3064 740 3221 +8238 4 2 28 1 1075 1066 3494 3512 +8239 4 2 28 1 2539 3292 2883 3618 +8240 4 2 28 1 546 2925 232 3567 +8241 4 2 28 1 2690 2864 3286 3483 +8242 4 2 28 1 2861 2865 2772 3503 +8243 4 2 28 1 2904 3255 1676 3358 +8244 4 2 28 1 1968 2606 2217 3560 +8245 4 2 28 1 2712 3317 3200 3720 +8246 4 2 28 1 2889 2541 3635 3895 +8247 4 2 28 1 2893 3125 1740 3571 +8248 4 2 28 1 1687 1505 2907 3077 +8249 4 2 28 1 2915 2663 2968 3162 +8250 4 2 28 1 2432 2430 3045 3367 +8251 4 2 28 1 2717 2802 3232 3395 +8252 4 2 28 1 971 3664 963 3902 +8253 4 2 28 1 2569 2645 2623 2735 +8254 4 2 28 1 1391 1565 3281 3562 +8255 4 2 28 1 2713 3006 3415 3476 +8256 4 2 28 1 2296 3143 3164 3889 +8257 4 2 28 1 981 1068 1069 2878 +8258 4 2 28 1 2539 3310 2879 3698 +8259 4 2 28 1 1897 3193 1887 3712 +8260 4 2 28 1 1760 1582 3378 3676 +8261 4 2 28 1 880 1213 3473 3907 +8262 4 2 28 1 2834 3063 3285 3860 +8263 4 2 28 1 1406 2996 1399 3254 +8264 4 2 28 1 2930 3343 2872 3538 +8265 4 2 28 1 1132 1034 953 3014 +8266 4 2 28 1 2610 3250 2642 3783 +8267 4 2 28 1 2590 2704 2636 2854 +8268 4 2 28 1 1848 2234 1846 3601 +8269 4 2 28 1 2566 2640 2591 3428 +8270 4 2 28 1 2716 2693 3226 3305 +8271 4 2 28 1 2160 3218 2048 3288 +8272 4 2 28 1 1885 1886 1884 3193 +8273 4 2 28 1 2568 2824 2547 2939 +8274 4 2 28 1 463 439 471 2964 +8275 4 2 28 1 1222 988 3435 3696 +8276 4 2 28 1 1833 2163 3030 3931 +8277 4 2 28 1 927 926 3459 3880 +8278 4 2 28 1 2810 3031 3262 3598 +8279 4 2 28 1 982 2946 983 3667 +8280 4 2 28 1 1663 2674 1732 3176 +8281 4 2 28 1 667 3511 2735 3768 +8282 4 2 28 1 2576 3211 2865 3515 +8283 4 2 28 1 2632 3220 3330 3658 +8284 4 2 28 1 2586 3543 2782 3849 +8285 4 2 28 1 2696 3136 3584 3749 +8286 4 2 28 1 2793 2930 2872 3538 +8287 4 2 28 1 2171 1938 2831 3557 +8288 4 2 28 1 1979 2805 2231 3931 +8289 4 2 28 1 2154 3288 2864 3847 +8290 4 2 28 1 2858 3060 2772 3478 +8291 4 2 28 1 2593 2770 3328 3432 +8292 4 2 28 1 2708 3103 3031 3582 +8293 4 2 28 1 2337 3166 1572 3383 +8294 4 2 28 1 2359 3402 2967 3841 +8295 4 2 28 1 2460 2480 2078 3210 +8296 4 2 28 1 2552 3029 2876 3458 +8297 4 2 28 1 1231 1234 1038 3092 +8298 4 2 28 1 1478 1799 3170 3417 +8299 4 2 28 1 842 3369 840 3431 +8300 4 2 28 1 2399 2917 2343 3166 +8301 4 2 28 1 477 3086 396 3672 +8302 4 2 28 1 1505 1461 1805 2623 +8303 4 2 28 1 2615 3030 3108 3581 +8304 4 2 28 1 2779 2786 2640 3074 +8305 4 2 28 1 899 3628 957 3656 +8306 4 2 28 1 2908 3491 2907 3815 +8307 4 2 28 1 1758 2886 3529 3833 +8308 4 2 28 1 1530 1741 1726 2856 +8309 4 2 28 1 1121 1058 1318 3417 +8310 4 2 28 1 2626 3450 3514 3654 +8311 4 2 28 1 658 3009 769 3768 +8312 4 2 28 1 2632 3041 3032 3220 +8313 4 2 28 1 3137 2551 3391 3799 +8314 4 2 28 1 681 670 668 2924 +8315 4 2 28 1 1877 3282 3110 3541 +8316 4 2 28 1 2763 2674 3036 3455 +8317 4 2 28 1 2567 2635 3301 3687 +8318 4 2 28 1 2540 3488 2995 3852 +8319 4 2 28 1 2157 1968 2739 3332 +8320 4 2 28 1 2990 3268 1487 3749 +8321 4 2 28 1 2373 2376 2875 3865 +8322 4 2 28 1 271 3152 1640 3243 +8323 4 2 28 1 2847 2851 3309 3787 +8324 4 2 28 1 795 2937 204 3047 +8325 4 2 28 1 1904 1895 2011 3021 +8326 4 2 28 1 1541 1709 3456 3584 +8327 4 2 28 1 3075 2573 3468 3866 +8328 4 2 28 1 2617 3061 3488 3736 +8329 4 2 28 1 2980 2710 3127 3382 +8330 4 2 28 1 3066 3454 2816 3592 +8331 4 2 28 1 2754 2755 2639 2896 +8332 4 2 28 1 2486 2476 2425 3189 +8333 4 2 28 1 1419 1416 1417 2943 +8334 4 2 28 1 779 768 638 3741 +8335 4 2 28 1 2722 2827 2821 3325 +8336 4 2 28 1 2539 3310 2942 3618 +8337 4 2 28 1 931 936 935 3019 +8338 4 2 28 1 1418 1693 1540 3529 +8339 4 2 28 1 1522 2925 2645 3263 +8340 4 2 28 1 2958 3193 1884 3440 +8341 4 2 28 1 1157 872 3648 3762 +8342 4 2 28 1 2396 3125 1573 3554 +8343 4 2 28 1 2309 3069 2317 3103 +8344 4 2 28 1 2959 2551 3035 3819 +8345 4 2 28 1 2313 2314 3737 3889 +8346 4 2 28 1 942 1209 3016 3792 +8347 4 2 28 1 2527 3519 3586 3644 +8348 4 2 28 1 2702 2756 2594 2757 +8349 4 2 28 1 2929 3048 2634 3479 +8350 4 2 28 1 1250 3119 3046 3473 +8351 4 2 28 1 906 3629 905 3870 +8352 4 2 28 1 793 3671 1077 3795 +8353 4 2 28 1 2679 3060 2898 3315 +8354 4 2 28 1 1200 1270 1269 3026 +8355 4 2 28 1 768 3336 680 3441 +8356 4 2 28 1 1599 1545 3093 3477 +8357 4 2 28 1 2677 2765 2691 3092 +8358 4 2 28 1 1648 1473 2647 3362 +8359 4 2 28 1 2609 2746 2654 3016 +8360 4 2 28 1 2652 3103 3069 3351 +8361 4 2 28 1 457 273 401 3353 +8362 4 2 28 1 1856 2876 1857 3739 +8363 4 2 28 1 2230 2851 2143 3116 +8364 4 2 28 1 1584 3200 1762 3317 +8365 4 2 28 1 396 3086 404 3368 +8366 4 2 28 1 2886 3375 2666 3706 +8367 4 2 28 1 581 580 579 2895 +8368 4 2 28 1 581 3359 590 3365 +8369 4 2 28 1 894 2848 893 2965 +8370 4 2 28 1 2641 2777 3172 3282 +8371 4 2 28 1 3075 3468 3295 3866 +8372 4 2 28 1 2569 2807 2628 3876 +8373 4 2 28 1 2340 2979 2395 3554 +8374 4 2 28 1 1995 3405 2128 3457 +8375 4 2 28 1 1190 1137 1136 3013 +8376 4 2 28 1 2330 2324 2321 3725 +8377 4 2 28 1 1823 2115 426 3433 +8378 4 2 28 1 1884 1900 2958 3440 +8379 4 2 28 1 2043 2284 2846 3451 +8380 4 2 28 1 1873 3282 1877 3541 +8381 4 2 28 1 1594 3208 2858 3478 +8382 4 2 28 1 1244 1079 3107 3738 +8383 4 2 28 1 1898 3485 3212 3712 +8384 4 2 28 1 1542 3208 2979 3253 +8385 4 2 28 1 1558 1754 3076 3333 +8386 4 2 28 1 2550 2565 3257 3911 +8387 4 2 28 1 2182 2104 2668 3688 +8388 4 2 28 1 2522 2892 2521 3423 +8389 4 2 28 1 1866 2853 1867 3680 +8390 4 2 28 1 2944 2580 3522 3891 +8391 4 2 28 1 2579 2754 2699 2755 +8392 4 2 28 1 2762 2995 3169 3579 +8393 4 2 28 1 3312 3624 3133 3640 +8394 4 2 28 1 2392 2967 2360 3216 +8395 4 2 28 1 530 3441 3225 3625 +8396 4 2 28 1 2936 3036 2597 3539 +8397 4 2 28 1 3045 3367 2430 3590 +8398 4 2 28 1 1482 1483 1450 3214 +8399 4 2 28 1 2515 2520 2516 3545 +8400 4 2 28 1 918 917 2976 3790 +8401 4 2 28 1 2342 2875 2496 3519 +8402 4 2 28 1 2609 2636 2564 3251 +8403 4 2 28 1 894 895 896 2965 +8404 4 2 28 1 2614 3178 3079 3289 +8405 4 2 28 1 2193 2010 3283 3339 +8406 4 2 28 1 1082 3050 1030 3203 +8407 4 2 28 1 2696 3033 2660 3470 +8408 4 2 28 1 3105 3532 2876 3723 +8409 4 2 28 1 2855 3329 2929 3411 +8410 4 2 28 1 2193 2110 2258 3339 +8411 4 2 28 1 1563 2980 1392 3534 +8412 4 2 28 1 2552 2764 3458 3723 +8413 4 2 28 1 1326 1191 1168 2977 +8414 4 2 28 1 1104 1094 3298 3922 +8415 4 2 28 1 3220 3737 2734 3889 +8416 4 2 28 1 1269 3026 1270 3302 +8417 4 2 28 1 2548 3235 2581 3392 +8418 4 2 28 1 791 1295 1067 3341 +8419 4 2 28 1 884 888 3234 3863 +8420 4 2 28 1 1153 1665 1455 3436 +8421 4 2 28 1 2049 2160 2048 3288 +8422 4 2 28 1 2831 3272 3642 3767 +8423 4 2 28 1 1944 2034 2033 3324 +8424 4 2 28 1 2699 2767 2625 3926 +8425 4 2 28 1 1663 3170 2674 3176 +8426 4 2 28 1 2547 2876 2939 3113 +8427 4 2 28 1 2546 3239 3444 3722 +8428 4 2 28 1 516 273 457 3047 +8429 4 2 28 1 2327 3040 2324 3596 +8430 4 2 28 1 3222 3708 2949 3861 +8431 4 2 28 1 2612 2622 2803 2844 +8432 4 2 28 1 2551 3242 3003 3673 +8433 4 2 28 1 1726 1408 2865 3779 +8434 4 2 28 1 2594 2756 2702 3744 +8435 4 2 28 1 2469 3042 2472 3627 +8436 4 2 28 1 2971 3028 2791 3698 +8437 4 2 28 1 2822 3731 3135 3845 +8438 4 2 28 1 2553 2846 3000 3154 +8439 4 2 28 1 2562 2604 2649 3928 +8440 4 2 28 1 725 713 619 3573 +8441 4 2 28 1 2324 3049 3596 3725 +8442 4 2 28 1 2692 3214 3059 3542 +8443 4 2 28 1 2605 3391 2551 3799 +8444 4 2 28 1 2950 3084 2716 3763 +8445 4 2 28 1 336 348 3804 3920 +8446 4 2 28 1 2382 2381 3262 3598 +8447 4 2 28 1 2763 3176 1519 3900 +8448 4 2 28 1 1928 3403 3206 3560 +8449 4 2 28 1 2388 3149 3311 3554 +8450 4 2 28 1 2565 3583 3257 3911 +8451 4 2 28 1 1777 3477 1681 3751 +8452 4 2 28 1 2673 3052 2954 3438 +8453 4 2 28 1 2217 2090 2285 3560 +8454 4 2 28 1 2926 2938 2593 3824 +8455 4 2 28 1 1954 1955 3373 3755 +8456 4 2 28 1 2979 2679 3175 3914 +8457 4 2 28 1 2527 3519 3246 3586 +8458 4 2 28 1 1667 1326 1168 2977 +8459 4 2 28 1 1250 3046 3119 3611 +8460 4 2 28 1 907 3629 906 3902 +8461 4 2 28 1 2680 2885 3313 3728 +8462 4 2 28 1 2743 3748 3020 3761 +8463 4 2 28 1 1984 2583 2288 2680 +8464 4 2 28 1 2600 2730 2793 2930 +8465 4 2 28 1 2029 2533 1841 3312 +8466 4 2 28 1 1147 841 3369 3806 +8467 4 2 28 1 3004 3450 2698 3690 +8468 4 2 28 1 2632 3330 2968 3658 +8469 4 2 28 1 3035 3652 2592 3759 +8470 4 2 28 1 935 931 3791 3874 +8471 4 2 28 1 1486 1515 1516 3486 +8472 4 2 28 1 2362 2806 3311 3865 +8473 4 2 28 1 2648 3133 2712 3174 +8474 4 2 28 1 1849 2657 2007 3525 +8475 4 2 28 1 2971 3235 2879 3236 +8476 4 2 28 1 1429 1421 3202 3437 +8477 4 2 28 1 741 2908 769 3008 +8478 4 2 28 1 2683 3095 3075 3866 +8479 4 2 28 1 2588 3195 3117 3315 +8480 4 2 28 1 1188 3245 1045 3811 +8481 4 2 28 1 2822 2574 3160 3857 +8482 4 2 28 1 2688 2815 2643 3234 +8483 4 2 28 1 1902 1913 1915 3451 +8484 4 2 28 1 465 301 304 3141 +8485 4 2 28 1 590 3365 3608 3885 +8486 4 2 28 1 1738 2761 1432 3163 +8487 4 2 28 1 2945 3345 2608 3419 +8488 4 2 28 1 2831 3767 3259 3813 +8489 4 2 28 1 2586 2800 2688 3250 +8490 4 2 28 1 2615 3395 3030 3581 +8491 4 2 28 1 2493 2420 2457 3586 +8492 4 2 28 1 870 3517 873 3648 +8493 4 2 28 1 2660 3174 3268 3515 +8494 4 2 28 1 2690 3286 3193 3488 +8495 4 2 28 1 2706 2827 2589 3523 +8496 4 2 28 1 2898 2707 3346 3771 +8497 4 2 28 1 2816 3480 3066 3592 +8498 4 2 28 1 2445 2479 2849 3651 +8499 4 2 28 1 3061 3205 2711 3736 +8500 4 2 28 1 1542 1533 3208 3253 +8501 4 2 28 1 1498 3231 2620 3238 +8502 4 2 28 1 2864 3440 1900 3847 +8503 4 2 28 1 483 208 209 3128 +8504 4 2 28 1 2555 2566 2640 3606 +8505 4 2 28 1 1861 1880 3140 3404 +8506 4 2 28 1 602 3540 612 3619 +8507 4 2 28 1 1424 2841 3136 3584 +8508 4 2 28 1 2559 3231 2682 3603 +8509 4 2 28 1 282 1616 1324 3707 +8510 4 2 28 1 1153 3176 1665 3436 +8511 4 2 28 1 1887 3061 2190 3712 +8512 4 2 28 1 912 968 1004 3524 +8513 4 2 28 1 1586 3228 1735 3375 +8514 4 2 28 1 2540 2945 3419 3576 +8515 4 2 28 1 1977 1988 1974 3006 +8516 4 2 28 1 2599 2744 2628 3683 +8517 4 2 28 1 426 2115 278 3408 +8518 4 2 28 1 2539 3292 2962 3464 +8519 4 2 28 1 2684 2687 2583 2985 +8520 4 2 28 1 3006 2713 3415 3616 +8521 4 2 28 1 427 426 3408 3433 +8522 4 2 28 1 2516 2515 3545 3703 +8523 4 2 28 1 1372 3478 1374 3735 +8524 4 2 28 1 3352 3716 2967 3717 +8525 4 2 28 1 1884 1879 1885 2958 +8526 4 2 28 1 2593 2628 2770 2807 +8527 4 2 28 1 2471 3002 2491 3262 +8528 4 2 28 1 1228 858 3397 3479 +8529 4 2 28 1 2581 2801 2671 2912 +8530 4 2 28 1 2982 2983 2717 3721 +8531 4 2 28 1 2936 2597 3455 3724 +8532 4 2 28 1 1230 822 2978 3410 +8533 4 2 28 1 2573 3232 3468 3592 +8534 4 2 28 1 219 3146 685 3342 +8535 4 2 28 1 3192 3202 1421 3437 +8536 4 2 28 1 2569 2797 2938 3786 +8537 4 2 28 1 1567 2980 1564 3898 +8538 4 2 28 1 2604 2627 2724 2765 +8539 4 2 28 1 2143 2851 2229 3115 +8540 4 2 28 1 1498 1560 1559 2877 +8541 4 2 28 1 1848 1846 1847 3269 +8542 4 2 28 1 2764 2842 3404 3458 +8543 4 2 28 1 2579 3391 2605 3799 +8544 4 2 28 1 1520 2938 2797 3279 +8545 4 2 28 1 1998 3029 2621 3405 +8546 4 2 28 1 2632 2831 3658 3767 +8547 4 2 28 1 1654 1751 1615 3366 +8548 4 2 28 1 3030 3395 3189 3581 +8549 4 2 28 1 2615 3373 3030 3594 +8550 4 2 28 1 2802 3189 2982 3627 +8551 4 2 28 1 1477 3160 2750 3812 +8552 4 2 28 1 2435 2433 3575 3766 +8553 4 2 28 1 371 336 456 2952 +8554 4 2 28 1 1206 1130 3506 3566 +8555 4 2 28 1 1358 2676 1356 3601 +8556 4 2 28 1 1980 2184 2070 3640 +8557 4 2 28 1 2955 2956 2607 3033 +8558 4 2 28 1 1897 3212 3193 3712 +8559 4 2 28 1 2607 3236 2879 3438 +8560 4 2 28 1 2794 3488 3259 3813 +8561 4 2 28 1 2313 3220 2314 3889 +8562 4 2 28 1 2261 2043 2284 2846 +8563 4 2 28 1 2864 2994 2651 3295 +8564 4 2 28 1 1353 1770 1647 3228 +8565 4 2 28 1 2709 3014 2691 3147 +8566 4 2 28 1 1022 1068 2878 3198 +8567 4 2 28 1 891 1230 2978 3410 +8568 4 2 28 1 2555 2640 2591 3583 +8569 4 2 28 1 1383 1534 1380 2955 +8570 4 2 28 1 2551 3401 2961 3819 +8571 4 2 28 1 2556 3279 2822 3587 +8572 4 2 28 1 2620 2878 2877 3238 +8573 4 2 28 1 2698 2829 3649 3895 +8574 4 2 28 1 2517 3111 2509 3545 +8575 4 2 28 1 2644 1494 2977 3238 +8576 4 2 28 1 660 661 3118 3510 +8577 4 2 28 1 795 2844 204 2937 +8578 4 2 28 1 1533 2858 1594 3208 +8579 4 2 28 1 2726 2962 3464 3895 +8580 4 2 28 1 3128 3129 483 3670 +8581 4 2 28 1 2299 3197 2427 3596 +8582 4 2 28 1 2917 3228 1586 3375 +8583 4 2 28 1 1848 1846 3269 3601 +8584 4 2 28 1 2608 3295 2864 3710 +8585 4 2 28 1 1465 1699 1497 3238 +8586 4 2 28 1 2637 2770 2745 3256 +8587 4 2 28 1 1703 1413 3162 3418 +8588 4 2 28 1 2635 2644 2567 2677 +8589 4 2 28 1 2620 2877 1496 3238 +8590 4 2 28 1 2280 3110 2202 3322 +8591 4 2 28 1 1858 1856 1857 3739 +8592 4 2 28 1 2565 2550 3206 3896 +8593 4 2 28 1 1455 782 1153 3436 +8594 4 2 28 1 2962 2698 3450 3690 +8595 4 2 28 1 2599 2638 2634 2812 +8596 4 2 28 1 2548 2841 3235 3392 +8597 4 2 28 1 1424 2841 3327 3904 +8598 4 2 28 1 2720 3468 3232 3592 +8599 4 2 28 1 1498 1497 3231 3238 +8600 4 2 28 1 2700 3023 3285 3832 +8601 4 2 28 1 2647 2736 3243 3730 +8602 4 2 28 1 987 967 3114 3850 +8603 4 2 28 1 2843 2601 3570 3757 +8604 4 2 28 1 1073 3173 3115 3674 +8605 4 2 28 1 1286 3176 1153 3436 +8606 4 2 28 1 2819 3271 2458 3644 +8607 4 2 28 1 3178 3346 2615 3869 +8608 4 2 28 1 2785 3023 2967 3352 +8609 4 2 28 1 2839 3419 2945 3576 +8610 4 2 28 1 2717 3079 2941 3684 +8611 4 2 28 1 2331 2315 3032 3041 +8612 4 2 28 1 2673 3534 2980 3757 +8613 4 2 28 1 2502 2501 2493 2982 +8614 4 2 28 1 2715 3551 3020 3830 +8615 4 2 28 1 2706 3177 2590 3400 +8616 4 2 28 1 2022 2725 1961 3759 +8617 4 2 28 1 2596 3020 3551 3830 +8618 4 2 28 1 3006 3204 3355 3616 +8619 4 2 28 1 2598 2808 3005 3916 +8620 4 2 28 1 2728 3445 3093 3477 +8621 4 2 28 1 1910 2043 2261 3154 +8622 4 2 28 1 2829 3236 2879 3814 +8623 4 2 28 1 526 750 226 2933 +8624 4 2 28 1 3050 3203 1160 3524 +8625 4 2 28 1 1561 2789 1462 3666 +8626 4 2 28 1 3091 3218 2651 3288 +8627 4 2 28 1 1530 1529 2856 3384 +8628 4 2 28 1 2556 2926 2797 2938 +8629 4 2 28 1 2596 3112 2886 3364 +8630 4 2 28 1 1999 2701 2621 3461 +8631 4 2 28 1 2008 2693 3226 3340 +8632 4 2 28 1 588 575 703 3022 +8633 4 2 28 1 2469 2421 2139 3627 +8634 4 2 28 1 2574 2946 2695 3455 +8635 4 2 28 1 1160 955 1093 3011 +8636 4 2 28 1 937 3643 3019 3792 +8637 4 2 28 1 3057 3291 2847 3773 +8638 4 2 28 1 2190 3061 1887 3193 +8639 4 2 28 1 590 3365 3359 3608 +8640 4 2 28 1 2185 1909 3267 3324 +8641 4 2 28 1 2544 2751 2902 3399 +8642 4 2 28 1 400 270 391 2932 +8643 4 2 28 1 1387 1389 2843 3754 +8644 4 2 28 1 2660 3033 2865 3470 +8645 4 2 28 1 2431 2432 2430 3045 +8646 4 2 28 1 1756 1570 2296 3143 +8647 4 2 28 1 3051 3095 2753 3514 +8648 4 2 28 1 2635 2828 2709 3665 +8649 4 2 28 1 2657 2757 3338 3531 +8650 4 2 28 1 1929 2687 3403 3560 +8651 4 2 28 1 2717 3395 3232 3869 +8652 4 2 28 1 1077 1008 1241 3016 +8653 4 2 28 1 2557 3021 3497 3774 +8654 4 2 28 1 2562 2649 3543 3928 +8655 4 2 28 1 1013 3026 1269 3808 +8656 4 2 28 1 2692 2893 3542 3571 +8657 4 2 28 1 3087 3335 1597 3436 +8658 4 2 28 1 2071 2250 2082 3168 +8659 4 2 28 1 2690 3275 3193 3440 +8660 4 2 28 1 776 2999 650 3333 +8661 4 2 28 1 2903 3095 2626 3292 +8662 4 2 28 1 2893 3253 3195 3477 +8663 4 2 28 1 2495 1833 2127 3030 +8664 4 2 28 1 575 587 577 3022 +8665 4 2 28 1 2742 3146 2731 3323 +8666 4 2 28 1 2202 3110 2738 3322 +8667 4 2 28 1 2694 2674 3160 3577 +8668 4 2 28 1 569 645 711 3148 +8669 4 2 28 1 233 1329 1664 2925 +8670 4 2 28 1 2381 3260 2350 3496 +8671 4 2 28 1 961 1160 3011 3469 +8672 4 2 28 1 2574 3455 3122 3845 +8673 4 2 28 1 2852 2974 2765 3629 +8674 4 2 28 1 2022 3341 2725 3494 +8675 4 2 28 1 2943 3202 2549 3636 +8676 4 2 28 1 1066 1075 1242 3512 +8677 4 2 28 1 2679 3060 2892 3297 +8678 4 2 28 1 2849 3278 3161 3651 +8679 4 2 28 1 2707 3067 3060 3702 +8680 4 2 28 1 2670 3079 2869 3289 +8681 4 2 28 1 808 1660 2877 3198 +8682 4 2 28 1 2320 2312 2319 3685 +8683 4 2 28 1 1025 1103 2950 3650 +8684 4 2 28 1 3067 3319 2726 3514 +8685 4 2 28 1 1716 1663 1732 3176 +8686 4 2 28 1 2787 3291 3057 3773 +8687 4 2 28 1 2511 2519 3246 3909 +8688 4 2 28 1 2859 3435 1242 3512 +8689 4 2 28 1 2262 2931 1966 3116 +8690 4 2 28 1 2743 2960 3761 3825 +8691 4 2 28 1 1382 2957 1385 3534 +8692 4 2 28 1 2761 2549 3202 3636 +8693 4 2 28 1 2936 3037 2597 3724 +8694 4 2 28 1 416 524 417 2998 +8695 4 2 28 1 1224 3291 1005 3656 +8696 4 2 28 1 2145 2890 803 3194 +8697 4 2 28 1 2163 2031 3030 3373 +8698 4 2 28 1 1558 3076 2894 3333 +8699 4 2 28 1 1228 1039 1246 2929 +8700 4 2 28 1 707 2884 710 3550 +8701 4 2 28 1 518 2932 520 3353 +8702 4 2 28 1 2523 3030 2127 3189 +8703 4 2 28 1 2674 2694 3350 3577 +8704 4 2 28 1 2221 3357 2211 3720 +8705 4 2 28 1 1443 3280 1672 3691 +8706 4 2 28 1 2887 3296 3046 3473 +8707 4 2 28 1 3106 3186 2651 3766 +8708 4 2 28 1 2430 2428 2429 3590 +8709 4 2 28 1 2804 1954 3373 3755 +8710 4 2 28 1 2611 3046 2887 3296 +8711 4 2 28 1 2928 3484 2809 3616 +8712 4 2 28 1 1099 3227 3328 3934 +8713 4 2 28 1 1855 1857 1856 2876 +8714 4 2 28 1 1494 1463 3238 3666 +8715 4 2 28 1 331 343 496 3745 +8716 4 2 28 1 1244 1079 1207 3107 +8717 4 2 28 1 750 226 2933 3303 +8718 4 2 28 1 710 2884 584 3550 +8719 4 2 28 1 2765 2852 2677 3308 +8720 4 2 28 1 2309 2308 2310 3685 +8721 4 2 28 1 2540 2762 2995 3169 +8722 4 2 28 1 2160 2222 2052 3354 +8723 4 2 28 1 2679 2898 3406 3829 +8724 4 2 28 1 2845 3000 1890 3322 +8725 4 2 28 1 2428 3197 2429 3590 +8726 4 2 28 1 3250 3360 2553 3851 +8727 4 2 28 1 884 3234 885 3816 +8728 4 2 28 1 2642 2787 2760 3773 +8729 4 2 28 1 2560 3241 3028 3326 +8730 4 2 28 1 534 655 657 3249 +8731 4 2 28 1 3471 3537 2814 3837 +8732 4 2 28 1 1071 3194 1060 3729 +8733 4 2 28 1 2610 2642 3774 3783 +8734 4 2 28 1 868 867 851 3038 +8735 4 2 28 1 2596 2794 3330 3748 +8736 4 2 28 1 870 873 3517 3580 +8737 4 2 28 1 2442 2454 2451 2983 +8738 4 2 28 1 3004 3450 2804 3528 +8739 4 2 28 1 2593 2926 3334 3786 +8740 4 2 28 1 2579 2625 2754 2884 +8741 4 2 28 1 3033 3211 2607 3814 +8742 4 2 28 1 1727 2620 1498 3231 +8743 4 2 28 1 1624 1487 1448 3053 +8744 4 2 28 1 2319 3094 2313 3247 +8745 4 2 28 1 645 705 720 3148 +8746 4 2 28 1 2949 3222 3104 3496 +8747 4 2 28 1 365 3290 382 3368 +8748 4 2 28 1 3129 3307 483 3670 +8749 4 2 28 1 2077 2716 2009 3340 +8750 4 2 28 1 2391 2338 2411 3449 +8751 4 2 28 1 2009 2716 2110 3084 +8752 4 2 28 1 2141 3212 2831 3518 +8753 4 2 28 1 2620 2667 3015 3130 +8754 4 2 28 1 1505 2697 1673 3327 +8755 4 2 28 1 902 2974 903 3777 +8756 4 2 28 1 707 3550 714 3732 +8757 4 2 28 1 2726 3319 3067 3465 +8758 4 2 28 1 2431 3045 2430 3590 +8759 4 2 28 1 2666 2917 3375 3481 +8760 4 2 28 1 3060 3067 2772 3702 +8761 4 2 28 1 960 1020 1145 3057 +8762 4 2 28 1 1922 3206 2870 3560 +8763 4 2 28 1 2886 3214 2743 3833 +8764 4 2 28 1 2794 2945 2715 3830 +8765 4 2 28 1 3006 2713 3355 3476 +8766 4 2 28 1 476 3500 300 3867 +8767 4 2 28 1 3160 3219 2619 3812 +8768 4 2 28 1 632 764 727 2951 +8769 4 2 28 1 2509 3108 3602 3703 +8770 4 2 28 1 1919 2016 1953 3401 +8771 4 2 28 1 2637 2919 2978 3410 +8772 4 2 28 1 2507 2504 2519 3246 +8773 4 2 28 1 1764 3280 2705 3838 +8774 4 2 28 1 2917 3166 2666 3706 +8775 4 2 28 1 1988 3032 3006 3518 +8776 4 2 28 1 2551 3613 2605 3799 +8777 4 2 28 1 2539 3310 2883 3464 +8778 4 2 28 1 929 3791 931 3874 +8779 4 2 28 1 776 650 663 3333 +8780 4 2 28 1 3043 3117 2869 3919 +8781 4 2 28 1 2707 3060 2892 3702 +8782 4 2 28 1 634 601 635 3578 +8783 4 2 28 1 2293 3032 2323 3725 +8784 4 2 28 1 2914 3083 2619 3227 +8785 4 2 28 1 1311 2158 1277 3116 +8786 4 2 28 1 2879 3235 2971 3698 +8787 4 2 28 1 3254 3529 2886 3833 +8788 4 2 28 1 3233 3361 2601 3761 +8789 4 2 28 1 893 2848 1139 3447 +8790 4 2 28 1 2721 3153 3134 3363 +8791 4 2 28 1 365 363 3290 3368 +8792 4 2 28 1 856 3381 853 3875 +8793 4 2 28 1 2589 3377 2846 3448 +8794 4 2 28 1 2825 3416 2763 3505 +8795 4 2 28 1 1034 3011 1093 3469 +8796 4 2 28 1 2614 3079 3178 3684 +8797 4 2 28 1 3049 3355 2713 3725 +8798 4 2 28 1 2338 2474 2468 3449 +8799 4 2 28 1 1884 1900 1883 2958 +8800 4 2 28 1 3149 3311 2678 3829 +8801 4 2 28 1 549 691 607 2907 +8802 4 2 28 1 1848 2823 2234 3601 +8803 4 2 28 1 2665 3163 3143 3164 +8804 4 2 28 1 1302 798 2142 3115 +8805 4 2 28 1 1966 2050 2672 2931 +8806 4 2 28 1 3135 3731 2554 3845 +8807 4 2 28 1 2842 3404 3140 3649 +8808 4 2 28 1 673 1811 674 2900 +8809 4 2 28 1 2003 2241 2114 2693 +8810 4 2 28 1 2777 3454 2903 3711 +8811 4 2 28 1 3041 3518 2054 3642 +8812 4 2 28 1 1073 3115 2703 3674 +8813 4 2 28 1 2617 3244 2909 3541 +8814 4 2 28 1 1225 3245 1188 3893 +8815 4 2 28 1 1357 1359 1358 3157 +8816 4 2 28 1 2846 3340 2585 3448 +8817 4 2 28 1 1286 2763 3176 3436 +8818 4 2 28 1 2668 2578 2863 2899 +8819 4 2 28 1 2389 3402 2359 3841 +8820 4 2 28 1 801 3121 814 3922 +8821 4 2 28 1 3199 3299 2563 3444 +8822 4 2 28 1 2855 2872 2630 3411 +8823 4 2 28 1 2636 2609 2818 2993 +8824 4 2 28 1 2170 1877 2176 3541 +8825 4 2 28 1 2857 3507 2552 3723 +8826 4 2 28 1 2692 3214 2960 3760 +8827 4 2 28 1 1311 811 2931 3116 +8828 4 2 28 1 1472 2925 1778 3298 +8829 4 2 28 1 2892 3503 2861 3702 +8830 4 2 28 1 2851 3057 2760 3173 +8831 4 2 28 1 3196 3374 1147 3661 +8832 4 2 28 1 2692 3151 2960 3825 +8833 4 2 28 1 3015 3130 2667 3314 +8834 4 2 28 1 1642 3179 2790 3562 +8835 4 2 28 1 2603 2756 2913 3073 +8836 4 2 28 1 2548 2797 2569 3903 +8837 4 2 28 1 3032 3220 3041 3889 +8838 4 2 28 1 1391 1564 2980 3281 +8839 4 2 28 1 2712 3607 3317 3720 +8840 4 2 28 1 1859 2180 3357 3739 +8841 4 2 28 1 997 996 999 3070 +8842 4 2 28 1 2604 2724 2649 2811 +8843 4 2 28 1 1777 2858 1544 3477 +8844 4 2 28 1 2636 2704 2609 2993 +8845 4 2 28 1 1278 2937 1279 3291 +8846 4 2 28 1 498 378 482 3408 +8847 4 2 28 1 2780 3216 3071 3597 +8848 4 2 28 1 2977 3198 1022 3203 +8849 4 2 28 1 2765 2811 2691 3320 +8850 4 2 28 1 1431 1426 1430 3171 +8851 4 2 28 1 1705 2647 1723 3152 +8852 4 2 28 1 2007 2264 2058 2657 +8853 4 2 28 1 1407 3179 2996 3418 +8854 4 2 28 1 2357 2384 2372 3002 +8855 4 2 28 1 1544 1777 1594 2858 +8856 4 2 28 1 2131 1900 2154 3489 +8857 4 2 28 1 1467 3280 1619 3838 +8858 4 2 28 1 1977 1988 3006 3518 +8859 4 2 28 1 2980 3382 2673 3757 +8860 4 2 28 1 1571 2624 1558 3076 +8861 4 2 28 1 1370 2892 1371 3478 +8862 4 2 28 1 2879 3236 2829 3895 +8863 4 2 28 1 2856 2865 3268 3515 +8864 4 2 28 1 2567 2677 2644 3782 +8865 4 2 28 1 1080 1030 1082 3050 +8866 4 2 28 1 2486 2425 2537 3189 +8867 4 2 28 1 2348 2409 2397 3692 +8868 4 2 28 1 2646 3290 3025 3593 +8869 4 2 28 1 2790 3179 3171 3564 +8870 4 2 28 1 204 2844 518 3047 +8871 4 2 28 1 1567 3135 1671 3932 +8872 4 2 28 1 618 699 597 3024 +8873 4 2 28 1 2545 2889 2791 3363 +8874 4 2 28 1 2225 1995 2128 3457 +8875 4 2 28 1 2705 3691 1764 3898 +8876 4 2 28 1 2620 3231 2667 3687 +8877 4 2 28 1 2609 2638 2570 3391 +8878 4 2 28 1 1312 1074 2151 3115 +8879 4 2 28 1 644 719 3073 3475 +8880 4 2 28 1 2119 2266 2028 3115 +8881 4 2 28 1 2056 1999 2701 2900 +8882 4 2 28 1 363 368 451 2860 +8883 4 2 28 1 1630 1622 681 2924 +8884 4 2 28 1 1692 3501 1800 3754 +8885 4 2 28 1 3283 3339 1294 3508 +8886 4 2 28 1 657 3009 658 3768 +8887 4 2 28 1 2702 2756 2714 3744 +8888 4 2 28 1 2420 2451 2454 2983 +8889 4 2 28 1 3032 3041 2315 3889 +8890 4 2 28 1 2468 2385 3449 3714 +8891 4 2 28 1 2791 3028 2542 3698 +8892 4 2 28 1 2358 2359 2360 2967 +8893 4 2 28 1 1917 3212 3006 3275 +8894 4 2 28 1 2843 3825 3501 3833 +8895 4 2 28 1 2730 2833 2600 3122 +8896 4 2 28 1 1286 2763 3416 3505 +8897 4 2 28 1 691 607 2907 3815 +8898 4 2 28 1 2824 3426 2568 3495 +8899 4 2 28 1 211 210 1120 2916 +8900 4 2 28 1 2109 2197 2007 3356 +8901 4 2 28 1 1963 3035 2959 3688 +8902 4 2 28 1 409 478 282 2918 +8903 4 2 28 1 2359 2967 2358 3841 +8904 4 2 28 1 2654 2746 2988 3016 +8905 4 2 28 1 1648 1473 1705 2647 +8906 4 2 28 1 1178 2887 970 3925 +8907 4 2 28 1 1795 1611 1577 3672 +8908 4 2 28 1 2610 2830 2950 3084 +8909 4 2 28 1 2119 2028 2703 3115 +8910 4 2 28 1 1661 1530 2856 3780 +8911 4 2 28 1 1875 1874 3282 3828 +8912 4 2 28 1 2641 2718 3110 3282 +8913 4 2 28 1 2740 2918 1725 3707 +8914 4 2 28 1 199 3599 200 3655 +8915 4 2 28 1 1715 1767 1605 2954 +8916 4 2 28 1 2602 3371 3237 3646 +8917 4 2 28 1 2295 3228 2336 3692 +8918 4 2 28 1 1648 2647 1628 3152 +8919 4 2 28 1 2703 3115 1073 3139 +8920 4 2 28 1 1383 2955 1380 3534 +8921 4 2 28 1 499 275 398 3398 +8922 4 2 28 1 528 663 1631 2999 +8923 4 2 28 1 2171 2831 2141 3485 +8924 4 2 28 1 2673 2942 3310 3446 +8925 4 2 28 1 2077 3340 2008 3669 +8926 4 2 28 1 752 3323 2899 3502 +8927 4 2 28 1 2669 2920 2664 3475 +8928 4 2 28 1 2762 3179 3564 3722 +8929 4 2 28 1 2019 2145 2890 3018 +8930 4 2 28 1 526 3336 762 3421 +8931 4 2 28 1 2050 2240 2739 3101 +8932 4 2 28 1 2785 3841 3265 3861 +8933 4 2 28 1 2730 2872 2793 2930 +8934 4 2 28 1 600 587 588 3022 +8935 4 2 28 1 2817 3329 2872 3411 +8936 4 2 28 1 2562 3183 3123 3536 +8937 4 2 28 1 793 2988 3671 3795 +8938 4 2 28 1 3006 3355 2713 3616 +8939 4 2 28 1 2858 2956 2728 3751 +8940 4 2 28 1 2545 3251 3137 3668 +8941 4 2 28 1 894 2965 3453 3674 +8942 4 2 28 1 3045 3367 2771 3575 +8943 4 2 28 1 2110 2716 2830 3084 +8944 4 2 28 1 2588 3067 3060 3771 +8945 4 2 28 1 2836 3305 2716 3434 +8946 4 2 28 1 2868 3138 2749 3520 +8947 4 2 28 1 2654 2799 2636 2818 +8948 4 2 28 1 2875 2679 3422 3909 +8949 4 2 28 1 3094 3247 2319 3685 +8950 4 2 28 1 2682 1688 3277 3463 +8951 4 2 28 1 1589 1555 1588 2737 +8952 4 2 28 1 2698 3004 2853 3527 +8953 4 2 28 1 2183 3347 3004 3527 +8954 4 2 28 1 3279 3610 2797 3788 +8955 4 2 28 1 1082 1160 1033 3524 +8956 4 2 28 1 2480 1826 2078 3210 +8957 4 2 28 1 2692 3093 2843 3501 +8958 4 2 28 1 1157 3258 876 3762 +8959 4 2 28 1 1883 2958 1900 3489 +8960 4 2 28 1 2609 3137 2746 3391 +8961 4 2 28 1 1291 3018 1061 3809 +8962 4 2 28 1 2746 2605 2866 3225 +8963 4 2 28 1 2045 1888 2047 3489 +8964 4 2 28 1 2679 3315 2898 3829 +8965 4 2 28 1 2838 3238 1699 3280 +8966 4 2 28 1 1156 965 2827 3372 +8967 4 2 28 1 2271 1808 2103 3261 +8968 4 2 28 1 272 428 505 2885 +8969 4 2 28 1 2006 2159 2173 3642 +8970 4 2 28 1 1903 1902 1889 3742 +8971 4 2 28 1 1176 3376 863 3893 +8972 4 2 28 1 2571 2550 2870 3758 +8973 4 2 28 1 2603 2714 2897 2913 +8974 4 2 28 1 2272 1854 1856 3113 +8975 4 2 28 1 2452 3627 2472 3721 +8976 4 2 28 1 2577 3098 2584 3460 +8977 4 2 28 1 3055 2814 3471 3537 +8978 4 2 28 1 2290 2890 2145 3194 +8979 4 2 28 1 1310 233 1664 2925 +8980 4 2 28 1 2461 2459 2464 2928 +8981 4 2 28 1 1692 1800 1792 3754 +8982 4 2 28 1 2642 2800 2610 2848 +8983 4 2 28 1 2042 2259 2207 3827 +8984 4 2 28 1 2585 2688 3250 3360 +8985 4 2 28 1 1809 408 2108 3313 +8986 4 2 28 1 1176 830 3376 3894 +8987 4 2 28 1 2061 1828 1775 2904 +8988 4 2 28 1 2356 2389 3841 3861 +8989 4 2 28 1 2550 3206 2871 3257 +8990 4 2 28 1 554 2873 556 3526 +8991 4 2 28 1 1379 1541 1709 3456 +8992 4 2 28 1 1614 2686 1615 3366 +8993 4 2 28 1 801 813 814 3121 +8994 4 2 28 1 2573 3051 3095 3637 +8995 4 2 28 1 2603 2669 2756 3073 +8996 4 2 28 1 1635 1371 1344 2892 +8997 4 2 28 1 2686 3090 2647 3362 +8998 4 2 28 1 1760 1780 1493 3387 +8999 4 2 28 1 1164 784 1294 3339 +9000 4 2 28 1 744 737 760 3578 +9001 4 2 28 1 1688 1746 1513 3277 +9002 4 2 28 1 1789 1722 2893 3542 +9003 4 2 28 1 2471 3002 2339 3714 +9004 4 2 28 1 2544 3190 3424 3662 +9005 4 2 28 1 1487 3268 1469 3749 +9006 4 2 28 1 2719 2745 2599 3048 +9007 4 2 28 1 2583 2555 2640 3606 +9008 4 2 28 1 2808 2817 2598 3005 +9009 4 2 28 1 646 3007 780 3569 +9010 4 2 28 1 1315 3226 1053 3669 +9011 4 2 28 1 2297 3260 2326 3598 +9012 4 2 28 1 2727 2688 2921 2989 +9013 4 2 28 1 2861 3702 3111 3703 +9014 4 2 28 1 2638 2639 2888 2933 +9015 4 2 28 1 1520 2938 1711 3824 +9016 4 2 28 1 2498 3370 3545 3780 +9017 4 2 28 1 3257 3428 2591 3583 +9018 4 2 28 1 2469 2472 2421 3627 +9019 4 2 28 1 2656 2826 2662 3460 +9020 4 2 28 1 666 771 750 3249 +9021 4 2 28 1 1628 2647 1705 3152 +9022 4 2 28 1 1256 3012 1017 3890 +9023 4 2 28 1 2526 3030 3189 3581 +9024 4 2 28 1 1109 1055 1296 3087 +9025 4 2 28 1 518 2844 520 2932 +9026 4 2 28 1 391 392 400 3920 +9027 4 2 28 1 2995 3488 3169 3579 +9028 4 2 28 1 1861 1880 2180 3140 +9029 4 2 28 1 899 896 1194 3119 +9030 4 2 28 1 3186 3575 2771 3766 +9031 4 2 28 1 2892 3060 2679 3423 +9032 4 2 28 1 2889 2962 2541 3895 +9033 4 2 28 1 2759 2844 2650 3047 +9034 4 2 28 1 2134 1189 2140 2997 +9035 4 2 28 1 3105 3236 2829 3814 +9036 4 2 28 1 1869 3282 1871 3347 +9037 4 2 28 1 2553 3134 3000 3466 +9038 4 2 28 1 2703 3139 1073 3674 +9039 4 2 28 1 2735 2807 3100 3511 +9040 4 2 28 1 2495 2127 2523 3030 +9041 4 2 28 1 2003 2693 2008 3340 +9042 4 2 28 1 891 3227 2978 3328 +9043 4 2 28 1 1510 2918 2740 3676 +9044 4 2 28 1 353 3678 355 3728 +9045 4 2 28 1 2677 3011 2644 3050 +9046 4 2 28 1 2562 2792 3123 3326 +9047 4 2 28 1 635 730 634 3010 +9048 4 2 28 1 1722 1599 3093 3542 +9049 4 2 28 1 1206 2975 1208 3566 +9050 4 2 28 1 1136 228 229 2882 +9051 4 2 28 1 2478 3002 2491 3714 +9052 4 2 28 1 2866 2988 2746 3225 +9053 4 2 28 1 2629 3104 3002 3352 +9054 4 2 28 1 1404 2797 1520 2938 +9055 4 2 28 1 2362 2388 3149 3311 +9056 4 2 28 1 2847 3057 2851 3787 +9057 4 2 28 1 2531 3422 2497 3797 +9058 4 2 28 1 2540 3169 2995 3488 +9059 4 2 28 1 2140 2997 1189 3393 +9060 4 2 28 1 203 2937 795 3047 +9061 4 2 28 1 776 650 2999 3785 +9062 4 2 28 1 2910 3624 3312 3640 +9063 4 2 28 1 1553 1549 1550 3437 +9064 4 2 28 1 1885 1879 2286 3244 +9065 4 2 28 1 2660 3268 2865 3515 +9066 4 2 28 1 500 359 502 3270 +9067 4 2 28 1 483 3129 3128 3548 +9068 4 2 28 1 2852 2765 3321 3629 +9069 4 2 28 1 1231 1234 3092 3881 +9070 4 2 28 1 3000 3451 2846 3645 +9071 4 2 28 1 2648 2712 3133 3720 +9072 4 2 28 1 2824 2944 2547 2990 +9073 4 2 28 1 1404 1397 1402 2797 +9074 4 2 28 1 1148 1043 1303 3667 +9075 4 2 28 1 299 3141 300 3500 +9076 4 2 28 1 3160 3546 2822 3857 +9077 4 2 28 1 3246 3519 2819 3586 +9078 4 2 28 1 778 547 2249 1768 +9079 4 2 28 1 2666 3412 2960 3760 +9080 4 2 28 1 870 3517 1198 3580 +9081 4 2 28 1 2716 2836 2585 3340 +9082 4 2 28 1 2814 3306 3103 3873 +9083 4 2 28 1 1318 3170 2750 3417 +9084 4 2 28 1 2437 3063 3657 3884 +9085 4 2 28 1 1699 2838 1497 3238 +9086 4 2 28 1 2525 3030 2532 3581 +9087 4 2 28 1 616 746 2900 2901 +9088 4 2 28 1 2264 2657 2245 3010 +9089 4 2 28 1 2997 3393 2206 3856 +9090 4 2 28 1 2740 3561 1682 3603 +9091 4 2 28 1 1084 2919 1210 3410 +9092 4 2 28 1 2572 2661 2566 3362 +9093 4 2 28 1 1596 1783 1494 2977 +9094 4 2 28 1 1845 3064 2676 3388 +9095 4 2 28 1 2614 3289 3079 3597 +9096 4 2 28 1 2589 2706 3177 3705 +9097 4 2 28 1 1459 2790 1642 3179 +9098 4 2 28 1 1529 1528 1762 3200 +9099 4 2 28 1 1568 1388 1390 3215 +9100 4 2 28 1 578 3365 705 3516 +9101 4 2 28 1 2994 3075 2700 3185 +9102 4 2 28 1 2599 3156 3420 3903 +9103 4 2 28 1 2566 3192 2616 3606 +9104 4 2 28 1 1185 3048 878 3810 +9105 4 2 28 1 2565 3206 2850 3403 +9106 4 2 28 1 1795 1577 3591 3672 +9107 4 2 28 1 2614 3597 3079 3684 +9108 4 2 28 1 2814 3306 3055 3471 +9109 4 2 28 1 433 508 3120 3344 +9110 4 2 28 1 2677 2852 3114 3782 +9111 4 2 28 1 2765 2852 2627 2974 +9112 4 2 28 1 1250 977 1194 3119 +9113 4 2 28 1 2749 3138 2727 3595 +9114 4 2 28 1 2566 2572 2549 2633 +9115 4 2 28 1 2715 3345 2839 3361 +9116 4 2 28 1 2478 3002 3714 3877 +9117 4 2 28 1 961 3011 1160 3203 +9118 4 2 28 1 2617 3488 3153 3736 +9119 4 2 28 1 2362 3311 3149 3865 +9120 4 2 28 1 2860 3290 2778 3617 +9121 4 2 28 1 482 500 427 3408 +9122 4 2 28 1 2551 3137 2605 3613 +9123 4 2 28 1 1063 3115 3173 3787 +9124 4 2 28 1 1031 2977 1022 3784 +9125 4 2 28 1 3175 3423 2530 3797 +9126 4 2 28 1 1917 3006 1918 3275 +9127 4 2 28 1 3295 3489 2864 3710 +9128 4 2 28 1 2594 3462 3531 3532 +9129 4 2 28 1 2725 3341 2022 3878 +9130 4 2 28 1 1583 1340 2067 3200 +9131 4 2 28 1 1203 3887 853 3925 +9132 4 2 28 1 520 205 206 3274 +9133 4 2 28 1 1203 1001 3887 3925 +9134 4 2 28 1 386 377 366 3633 +9135 4 2 28 1 2838 2567 3238 3280 +9136 4 2 28 1 2905 3089 557 3699 +9137 4 2 28 1 2565 3206 2550 3257 +9138 4 2 28 1 1462 1452 3037 3539 +9139 4 2 28 1 1094 3121 810 3298 +9140 4 2 28 1 808 1306 1115 2877 +9141 4 2 28 1 1380 1379 1378 2955 +9142 4 2 28 1 443 3394 495 3633 +9143 4 2 28 1 2777 3710 3454 3711 +9144 4 2 28 1 1619 1764 1620 3280 +9145 4 2 28 1 1067 1065 1014 3072 +9146 4 2 28 1 2870 3560 3206 3896 +9147 4 2 28 1 3226 3340 2716 3669 +9148 4 2 28 1 1305 1710 797 3298 +9149 4 2 28 1 2193 3283 2830 3339 +9150 4 2 28 1 2610 3021 2902 3774 +9151 4 2 28 1 2590 2706 2636 3177 +9152 4 2 28 1 1522 1521 2925 3263 +9153 4 2 28 1 2925 3490 1522 3491 +9154 4 2 28 1 1372 1594 1374 3478 +9155 4 2 28 1 2616 2640 2566 3606 +9156 4 2 28 1 952 956 3807 3864 +9157 4 2 28 1 2908 3567 3490 3768 +9158 4 2 28 1 944 3240 934 3834 +9159 4 2 28 1 2690 3204 3132 3259 +9160 4 2 28 1 559 3699 2774 3701 +9161 4 2 28 1 1718 1424 1439 3136 +9162 4 2 28 1 926 3316 925 3886 +9163 4 2 28 1 2607 3465 2956 3846 +9164 4 2 28 1 2590 2636 2609 3251 +9165 4 2 28 1 1537 1650 3298 3555 +9166 4 2 28 1 2385 3714 2367 3717 +9167 4 2 28 1 1978 2910 1980 3640 +9168 4 2 28 1 1974 1918 1917 3006 +9169 4 2 28 1 2202 3322 2738 3742 +9170 4 2 28 1 599 583 592 3781 +9171 4 2 28 1 719 701 644 3073 +9172 4 2 28 1 3649 3723 2541 3848 +9173 4 2 28 1 2709 3026 2828 3302 +9174 4 2 28 1 1042 970 3473 3925 +9175 4 2 28 1 2157 2089 1968 3332 +9176 4 2 28 1 3031 3197 2708 3590 +9177 4 2 28 1 2559 3239 2655 3665 +9178 4 2 28 1 295 298 3500 3730 +9179 4 2 28 1 2648 3515 3105 3848 +9180 4 2 28 1 2996 3254 1406 3418 +9181 4 2 28 1 887 881 3487 3563 +9182 4 2 28 1 1654 2647 3090 3362 +9183 4 2 28 1 3404 3527 3140 3649 +9184 4 2 28 1 1357 1801 1359 3746 +9185 4 2 28 1 2942 2673 3310 3409 +9186 4 2 28 1 3061 2711 3488 3736 +9187 4 2 28 1 3041 3164 3143 3889 +9188 4 2 28 1 279 425 3558 3612 +9189 4 2 28 1 2601 2957 2843 3899 +9190 4 2 28 1 2540 3419 2945 3488 +9191 4 2 28 1 987 3114 3524 3850 +9192 4 2 28 1 1998 2621 3029 3461 +9193 4 2 28 1 2717 3161 3079 3869 +9194 4 2 28 1 3232 3395 2802 3901 +9195 4 2 28 1 3104 3222 2810 3496 +9196 4 2 28 1 2750 3170 1318 3350 +9197 4 2 28 1 2395 2979 2403 3914 +9198 4 2 28 1 1569 1642 2790 3562 +9199 4 2 28 1 1212 2872 833 3538 +9200 4 2 28 1 2685 2790 3281 3883 +9201 4 2 28 1 2760 2848 2642 3774 +9202 4 2 28 1 2926 3812 3219 3857 +9203 4 2 28 1 1380 2955 1534 3456 +9204 4 2 28 1 2870 2966 2775 3413 +9205 4 2 28 1 1503 1409 1750 3065 +9206 4 2 28 1 2961 1924 3652 3819 +9207 4 2 28 1 2742 3035 2592 3759 +9208 4 2 28 1 1354 512 1611 3621 +9209 4 2 28 1 2636 2799 2613 2970 +9210 4 2 28 1 1537 3298 2832 3555 +9211 4 2 28 1 1300 1816 2145 3194 +9212 4 2 28 1 2626 2962 3450 3690 +9213 4 2 28 1 801 815 2807 3432 +9214 4 2 28 1 2892 3060 2707 3297 +9215 4 2 28 1 2692 3151 3165 3760 +9216 4 2 28 1 970 2887 1178 3695 +9217 4 2 28 1 2762 3179 2663 3855 +9218 4 2 28 1 2720 3066 3654 3755 +9219 4 2 28 1 1705 2736 2647 3300 +9220 4 2 28 1 1927 2285 1929 3560 +9221 4 2 28 1 2541 3848 3723 3895 +9222 4 2 28 1 408 3313 498 3408 +9223 4 2 28 1 2995 2711 3488 3579 +9224 4 2 28 1 2704 2636 2854 2993 +9225 4 2 28 1 2840 3581 2504 3778 +9226 4 2 28 1 2568 2658 2624 2747 +9227 4 2 28 1 2553 3400 3645 3851 +9228 4 2 28 1 1553 1593 1713 3793 +9229 4 2 28 1 754 3221 646 3569 +9230 4 2 28 1 1966 2672 1952 3646 +9231 4 2 28 1 2753 3319 3095 3637 +9232 4 2 28 1 973 974 982 2946 +9233 4 2 28 1 2632 3220 3032 3355 +9234 4 2 28 1 2608 2945 3419 3711 +9235 4 2 28 1 1989 3180 1923 3652 +9236 4 2 28 1 3043 2796 3402 3715 +9237 4 2 28 1 2482 1835 2051 3218 +9238 4 2 28 1 1406 3254 1418 3418 +9239 4 2 28 1 1807 3192 1458 3300 +9240 4 2 28 1 1721 2789 3150 3335 +9241 4 2 28 1 2853 2698 2962 3690 +9242 4 2 28 1 1442 1443 1672 3691 +9243 4 2 28 1 702 752 642 2899 +9244 4 2 28 1 2316 1831 2006 3041 +9245 4 2 28 1 1515 2894 1678 3486 +9246 4 2 28 1 275 1646 398 3398 +9247 4 2 28 1 2656 2709 2867 3026 +9248 4 2 28 1 2785 3222 3104 3861 +9249 4 2 28 1 2612 2557 3190 3497 +9250 4 2 28 1 1660 1331 808 2877 +9251 4 2 28 1 754 646 780 3569 +9252 4 2 28 1 2764 3649 2842 3723 +9253 4 2 28 1 409 282 1613 2918 +9254 4 2 28 1 2893 3195 3093 3477 +9255 4 2 28 1 2214 3341 2022 3494 +9256 4 2 28 1 1977 2235 2141 3212 +9257 4 2 28 1 3006 3204 2690 3259 +9258 4 2 28 1 2652 2991 3481 3837 +9259 4 2 28 1 2761 3429 3163 3437 +9260 4 2 28 1 1169 3005 1170 3854 +9261 4 2 28 1 2692 3501 3214 3542 +9262 4 2 28 1 2879 3464 2829 3814 +9263 4 2 28 1 2876 3458 3029 3462 +9264 4 2 28 1 2331 2315 3041 3889 +9265 4 2 28 1 2943 3179 1414 3418 +9266 4 2 28 1 2767 2863 2578 2899 +9267 4 2 28 1 2815 3506 2631 3566 +9268 4 2 28 1 3123 3326 2935 3424 +9269 4 2 28 1 2443 2440 3304 3574 +9270 4 2 28 1 2814 3355 3049 3725 +9271 4 2 28 1 2514 2522 2521 3423 +9272 4 2 28 1 1253 1213 1256 3181 +9273 4 2 28 1 1404 1520 1437 2938 +9274 4 2 28 1 2066 2278 3458 3462 +9275 4 2 28 1 484 3025 382 3290 +9276 4 2 28 1 2845 3466 2738 3668 +9277 4 2 28 1 2715 3207 3345 3361 +9278 4 2 28 1 2469 2416 3042 3653 +9279 4 2 28 1 2645 2925 1522 3491 +9280 4 2 28 1 2796 3265 2785 3402 +9281 4 2 28 1 2579 2625 3430 3926 +9282 4 2 28 1 2555 2640 2566 3428 +9283 4 2 28 1 1854 2939 1856 3113 +9284 4 2 28 1 2547 2944 2824 3495 +9285 4 2 28 1 2864 3440 3275 3483 +9286 4 2 28 1 2389 2400 2368 3265 +9287 4 2 28 1 2279 2114 2241 3194 +9288 4 2 28 1 1717 2750 1799 3417 +9289 4 2 28 1 2760 2642 2965 3119 +9290 4 2 28 1 1218 952 3660 3864 +9291 4 2 28 1 924 3316 926 3880 +9292 4 2 28 1 2819 3246 2983 3798 +9293 4 2 28 1 1048 2919 1084 3227 +9294 4 2 28 1 1253 978 977 3181 +9295 4 2 28 1 2635 2644 3011 3203 +9296 4 2 28 1 2591 2549 3257 3472 +9297 4 2 28 1 2103 3261 527 3726 +9298 4 2 28 1 2294 2309 2310 3069 +9299 4 2 28 1 2886 3214 1445 3706 +9300 4 2 28 1 3028 3052 2542 3698 +9301 4 2 28 1 2984 2624 3619 3719 +9302 4 2 28 1 473 459 487 3844 +9303 4 2 28 1 1018 2803 3181 3890 +9304 4 2 28 1 2579 2754 2659 2884 +9305 4 2 28 1 2041 2871 2273 3557 +9306 4 2 28 1 2331 1831 2316 3041 +9307 4 2 28 1 1388 1386 1387 3215 +9308 4 2 28 1 2718 3153 3172 3363 +9309 4 2 28 1 2635 3238 2620 3687 +9310 4 2 28 1 2736 2737 1589 3109 +9311 4 2 28 1 2840 2983 2982 3778 +9312 4 2 28 1 2514 3423 2521 3797 +9313 4 2 28 1 2578 2767 2699 3926 +9314 4 2 28 1 2580 2603 3522 3801 +9315 4 2 28 1 2648 3174 3105 3515 +9316 4 2 28 1 595 3550 584 3743 +9317 4 2 28 1 1690 2763 1519 3436 +9318 4 2 28 1 1190 3432 3013 3511 +9319 4 2 28 1 819 3256 989 3840 +9320 4 2 28 1 676 674 527 3726 +9321 4 2 28 1 1298 1148 3170 3667 +9322 4 2 28 1 2804 2615 3078 3373 +9323 4 2 28 1 1327 3170 1663 3176 +9324 4 2 28 1 2085 419 290 3168 +9325 4 2 28 1 2563 2584 3054 3098 +9326 4 2 28 1 2631 3506 2868 3566 +9327 4 2 28 1 2810 3260 3031 3598 +9328 4 2 28 1 1509 1510 2740 3603 +9329 4 2 28 1 1282 3291 1182 3599 +9330 4 2 28 1 1093 3011 1034 3147 +9331 4 2 28 1 2703 2848 2760 3774 +9332 4 2 28 1 307 305 440 3074 +9333 4 2 28 1 634 3498 601 3578 +9334 4 2 28 1 1418 2915 3254 3529 +9335 4 2 28 1 1563 1567 1392 2980 +9336 4 2 28 1 2337 2413 3166 3383 +9337 4 2 28 1 1831 3032 2177 3041 +9338 4 2 28 1 692 553 551 3008 +9339 4 2 28 1 1799 1708 3170 3577 +9340 4 2 28 1 2962 3292 2726 3464 +9341 4 2 28 1 1652 3208 1532 3423 +9342 4 2 28 1 353 2985 354 3678 +9343 4 2 28 1 2670 3079 2941 3860 +9344 4 2 28 1 935 3019 936 3452 +9345 4 2 28 1 381 458 453 3085 +9346 4 2 28 1 1266 1117 3130 3864 +9347 4 2 28 1 2526 2532 3030 3581 +9348 4 2 28 1 747 729 694 3089 +9349 4 2 28 1 2692 3571 3059 3760 +9350 4 2 28 1 2021 1959 2257 3035 +9351 4 2 28 1 2946 3350 983 3667 +9352 4 2 28 1 2944 3521 2568 3531 +9353 4 2 28 1 1104 2832 1096 3934 +9354 4 2 28 1 1882 3267 1877 3322 +9355 4 2 28 1 1722 1692 1599 3542 +9356 4 2 28 1 2302 3103 3049 3873 +9357 4 2 28 1 2756 2795 2669 3521 +9358 4 2 28 1 2893 3093 2692 3542 +9359 4 2 28 1 2066 3462 3458 3739 +9360 4 2 28 1 2830 2610 2950 3349 +9361 4 2 28 1 2658 3521 2756 3531 +9362 4 2 28 1 2266 2119 2151 3115 +9363 4 2 28 1 1347 2320 2292 3247 +9364 4 2 28 1 2190 1887 1885 3193 +9365 4 2 28 1 535 682 2117 3356 +9366 4 2 28 1 1475 2886 1445 3706 +9367 4 2 28 1 2566 2633 2591 2786 +9368 4 2 28 1 2365 3149 2376 3865 +9369 4 2 28 1 2674 2694 2574 2946 +9370 4 2 28 1 3052 3127 2797 3610 +9371 4 2 28 1 1400 1758 3254 3833 +9372 4 2 28 1 1545 1544 1543 3477 +9373 4 2 28 1 1830 2112 284 3168 +9374 4 2 28 1 2326 2346 2334 3598 +9375 4 2 28 1 1510 2618 1508 3676 +9376 4 2 28 1 306 311 458 3085 +9377 4 2 28 1 1274 1018 3284 3704 +9378 4 2 28 1 2784 3718 3266 3835 +9379 4 2 28 1 659 740 633 3064 +9380 4 2 28 1 2622 2759 2650 3054 +9381 4 2 28 1 2690 3275 3440 3483 +9382 4 2 28 1 2698 3450 3544 3713 +9383 4 2 28 1 2476 3189 2133 3627 +9384 4 2 28 1 2578 3507 2699 3613 +9385 4 2 28 1 1210 2919 1046 3811 +9386 4 2 28 1 2708 3049 3306 3727 +9387 4 2 28 1 963 3664 1126 3902 +9388 4 2 28 1 2539 3635 2879 3895 +9389 4 2 28 1 2546 3301 3239 3564 +9390 4 2 28 1 2686 2922 2661 3362 +9391 4 2 28 1 519 388 387 3368 +9392 4 2 28 1 1043 3350 1303 3667 +9393 4 2 28 1 1326 792 2977 3198 +9394 4 2 28 1 2639 2659 2579 2754 +9395 4 2 28 1 1288 3083 2914 3227 +9396 4 2 28 1 2464 2461 2928 3766 +9397 4 2 28 1 2943 2968 2663 3162 +9398 4 2 28 1 3092 3147 3011 3859 +9399 4 2 28 1 2118 2242 2161 3040 +9400 4 2 28 1 2564 2613 3039 3705 +9401 4 2 28 1 3071 3216 2363 3865 +9402 4 2 28 1 3095 3292 2683 3319 +9403 4 2 28 1 2310 2312 2295 2991 +9404 4 2 28 1 1844 1838 1355 3388 +9405 4 2 28 1 3011 1160 3203 3524 +9406 4 2 28 1 1221 3452 1146 3874 +9407 4 2 28 1 1661 2856 2758 3780 +9408 4 2 28 1 2469 1825 2416 3653 +9409 4 2 28 1 701 566 704 3073 +9410 4 2 28 1 2749 2972 2649 3196 +9411 4 2 28 1 2543 2968 2761 3767 +9412 4 2 28 1 2581 2671 2659 2912 +9413 4 2 28 1 2076 2230 2143 3116 +9414 4 2 28 1 1425 1674 3378 3387 +9415 4 2 28 1 395 483 274 3129 +9416 4 2 28 1 2956 3211 2772 3465 +9417 4 2 28 1 2624 2894 1558 3076 +9418 4 2 28 1 2967 3311 3043 3402 +9419 4 2 28 1 1375 1539 1790 3033 +9420 4 2 28 1 2716 2836 3434 3763 +9421 4 2 28 1 305 303 308 3074 +9422 4 2 28 1 1928 1929 3403 3560 +9423 4 2 28 1 1365 1571 2624 3486 +9424 4 2 28 1 2514 2530 3423 3797 +9425 4 2 28 1 1418 1540 2915 3529 +9426 4 2 28 1 2554 3731 3587 3845 +9427 4 2 28 1 2366 2363 3071 3216 +9428 4 2 28 1 1369 1557 2861 3503 +9429 4 2 28 1 2753 3095 3051 3637 +9430 4 2 28 1 2804 3654 3078 3901 +9431 4 2 28 1 1721 1561 2789 3335 +9432 4 2 28 1 2631 2600 2749 3443 +9433 4 2 28 1 2495 2532 2525 3030 +9434 4 2 28 1 2624 2747 2984 3619 +9435 4 2 28 1 2660 3105 2990 3174 +9436 4 2 28 1 2252 2118 2335 3040 +9437 4 2 28 1 2550 2870 3205 3206 +9438 4 2 28 1 1137 1136 3013 3663 +9439 4 2 28 1 2017 3631 2238 3680 +9440 4 2 28 1 2845 2564 3668 3742 +9441 4 2 28 1 634 3252 3498 3578 +9442 4 2 28 1 2734 3330 3220 3658 +9443 4 2 28 1 2585 3154 2846 3851 +9444 4 2 28 1 2012 3021 2011 3733 +9445 4 2 28 1 1922 2236 1942 2870 +9446 4 2 28 1 1363 1366 1367 3495 +9447 4 2 28 1 2834 3716 3352 3717 +9448 4 2 28 1 2261 2166 1910 3154 +9449 4 2 28 1 2715 3020 2794 3830 +9450 4 2 28 1 1279 3291 1224 3628 +9451 4 2 28 1 1391 2980 3215 3281 +9452 4 2 28 1 2730 2833 2695 3005 +9453 4 2 28 1 2751 3021 2902 3154 +9454 4 2 28 1 1399 1390 1398 3348 +9455 4 2 28 1 2611 2782 3046 3296 +9456 4 2 28 1 3190 3414 3299 3662 +9457 4 2 28 1 2551 2959 3035 3613 +9458 4 2 28 1 1663 1327 1662 3170 +9459 4 2 28 1 492 372 3126 3920 +9460 4 2 28 1 2879 2829 3464 3895 +9461 4 2 28 1 2546 3547 3301 3564 +9462 4 2 28 1 1201 3128 208 3670 +9463 4 2 28 1 1703 1417 1414 2943 +9464 4 2 28 1 922 923 921 3187 +9465 4 2 28 1 2612 3190 3054 3497 +9466 4 2 28 1 793 1247 2988 3795 +9467 4 2 28 1 2673 2954 2955 3438 +9468 4 2 28 1 2829 3236 3105 3848 +9469 4 2 28 1 996 969 923 3187 +9470 4 2 28 1 1918 3006 1974 3415 +9471 4 2 28 1 2925 3263 1521 3298 +9472 4 2 28 1 971 909 3276 3902 +9473 4 2 28 1 2305 2309 2317 3103 +9474 4 2 28 1 1904 1895 3021 3908 +9475 4 2 28 1 2603 2913 2669 3073 +9476 4 2 28 1 2612 2937 2803 3182 +9477 4 2 28 1 985 1065 1066 3072 +9478 4 2 28 1 3033 3211 2865 3735 +9479 4 2 28 1 3275 3440 2864 3847 +9480 4 2 28 1 1830 419 2085 3168 +9481 4 2 28 1 801 2807 815 3511 +9482 4 2 28 1 2796 3402 2785 3740 +9483 4 2 28 1 3006 3355 3032 3476 +9484 4 2 28 1 2630 2793 2631 3390 +9485 4 2 28 1 1715 2954 1605 3427 +9486 4 2 28 1 3302 3487 887 3675 +9487 4 2 28 1 2301 2300 2302 3049 +9488 4 2 28 1 3134 3153 2721 3424 +9489 4 2 28 1 220 3342 536 3502 +9490 4 2 28 1 3114 2677 3524 3850 +9491 4 2 28 1 2660 3053 2990 3888 +9492 4 2 28 1 2848 2950 2610 3349 +9493 4 2 28 1 2615 3051 3514 3654 +9494 4 2 28 1 2495 1833 3030 3931 +9495 4 2 28 1 2875 3246 3081 3909 +9496 4 2 28 1 3330 3364 2734 3537 +9497 4 2 28 1 2596 3364 3330 3537 +9498 4 2 28 1 2608 3075 2994 3295 +9499 4 2 28 1 2623 2645 2569 3065 +9500 4 2 28 1 2980 3534 2957 3757 +9501 4 2 28 1 2154 3354 3288 3847 +9502 4 2 28 1 2028 2229 2851 3115 +9503 4 2 28 1 1181 2989 3138 3517 +9504 4 2 28 1 1635 1371 2892 3423 +9505 4 2 28 1 2244 2068 2070 3133 +9506 4 2 28 1 1930 1932 2850 3403 +9507 4 2 28 1 2804 3450 2626 3654 +9508 4 2 28 1 2674 3176 2763 3900 +9509 4 2 28 1 2917 3482 2399 3692 +9510 4 2 28 1 2622 2650 2612 3054 +9511 4 2 28 1 2614 3081 2898 3406 +9512 4 2 28 1 2401 3449 2385 3717 +9513 4 2 28 1 2546 3239 3299 3444 +9514 4 2 28 1 2743 3020 2996 3570 +9515 4 2 28 1 2975 3513 2815 3530 +9516 4 2 28 1 1424 1439 3136 3904 +9517 4 2 28 1 2995 3488 3205 3736 +9518 4 2 28 1 2610 2950 2848 3447 +9519 4 2 28 1 451 368 388 3924 +9520 4 2 28 1 2376 2342 2875 3422 +9521 4 2 28 1 2802 2717 3278 3721 +9522 4 2 28 1 3319 3771 2588 3858 +9523 4 2 28 1 663 528 776 2999 +9524 4 2 28 1 2571 2759 2733 3896 +9525 4 2 28 1 447 339 327 3080 +9526 4 2 28 1 2729 2932 2723 3460 +9527 4 2 28 1 556 2873 555 3614 +9528 4 2 28 1 484 3109 3025 3290 +9529 4 2 28 1 2553 2846 3154 3851 +9530 4 2 28 1 2624 2944 2568 3157 +9531 4 2 28 1 2869 3289 3079 3858 +9532 4 2 28 1 1500 3162 2915 3630 +9533 4 2 28 1 3017 3561 2740 3603 +9534 4 2 28 1 807 2135 1299 3494 +9535 4 2 28 1 1511 1760 1651 3676 +9536 4 2 28 1 2549 3257 3098 3636 +9537 4 2 28 1 2728 3195 2858 3477 +9538 4 2 28 1 2679 3797 3422 3909 +9539 4 2 28 1 1886 1884 3193 3440 +9540 4 2 28 1 1394 1608 548 3815 +9541 4 2 28 1 2658 2624 2984 3024 +9542 4 2 28 1 2347 2412 2374 3644 +9543 4 2 28 1 2623 2873 2671 3008 +9544 4 2 28 1 1611 3621 512 3672 +9545 4 2 28 1 1535 1633 1763 3077 +9546 4 2 28 1 2550 3199 2775 3758 +9547 4 2 28 1 2601 2839 3233 3618 +9548 4 2 28 1 2598 3122 2911 3587 +9549 4 2 28 1 3098 3444 3239 3722 +9550 4 2 28 1 1488 2990 1526 3384 +9551 4 2 28 1 2558 2857 2659 3430 +9552 4 2 28 1 2658 2795 3024 3689 +9553 4 2 28 1 881 864 3487 3695 +9554 4 2 28 1 2663 3179 2762 3636 +9555 4 2 28 1 2218 2680 2120 3313 +9556 4 2 28 1 2180 1859 1861 3739 +9557 4 2 28 1 1418 1540 1481 2915 +9558 4 2 28 1 1569 1459 1629 2790 +9559 4 2 28 1 1187 964 884 3258 +9560 4 2 28 1 2866 2755 3467 3694 +9561 4 2 28 1 3351 3471 2814 3837 +9562 4 2 28 1 1071 1078 3194 3729 +9563 4 2 28 1 1344 1371 1370 2892 +9564 4 2 28 1 2853 3004 2698 3690 +9565 4 2 28 1 1449 3208 1594 3478 +9566 4 2 28 1 2863 2767 3097 3781 +9567 4 2 28 1 1879 1883 1878 2958 +9568 4 2 28 1 2958 3244 2617 3711 +9569 4 2 28 1 418 2080 289 3332 +9570 4 2 28 1 2775 3199 3736 3912 +9571 4 2 28 1 297 298 299 3062 +9572 4 2 28 1 2721 2935 3326 3424 +9573 4 2 28 1 1760 1493 2686 3362 +9574 4 2 28 1 1286 3416 2763 3436 +9575 4 2 28 1 391 3670 402 3920 +9576 4 2 28 1 2850 2543 3429 3557 +9577 4 2 28 1 2417 1826 2480 3210 +9578 4 2 28 1 2561 3740 3165 3760 +9579 4 2 28 1 2167 3078 3559 3910 +9580 4 2 28 1 527 2095 2103 2900 +9581 4 2 28 1 1790 1408 1375 2865 +9582 4 2 28 1 2737 3025 3290 3593 +9583 4 2 28 1 2598 3005 2730 3916 +9584 4 2 28 1 2777 3244 2958 3711 +9585 4 2 28 1 903 2974 902 3870 +9586 4 2 28 1 2037 2193 2282 3283 +9587 4 2 28 1 1991 1929 2285 2687 +9588 4 2 28 1 1607 1682 3561 3603 +9589 4 2 28 1 2764 2541 3649 3723 +9590 4 2 28 1 1987 198 2126 2931 +9591 4 2 28 1 1866 1865 2853 3404 +9592 4 2 28 1 2174 1840 2127 3189 +9593 4 2 28 1 529 1810 683 3010 +9594 4 2 28 1 1743 1510 1725 3707 +9595 4 2 28 1 474 496 417 2998 +9596 4 2 28 1 2618 3552 2788 3603 +9597 4 2 28 1 2700 3832 3207 3835 +9598 4 2 28 1 2832 3083 2769 3159 +9599 4 2 28 1 2853 3003 2764 3631 +9600 4 2 28 1 1908 1911 1912 2966 +9601 4 2 28 1 2658 3287 2795 3689 +9602 4 2 28 1 2263 2154 1900 3847 +9603 4 2 28 1 2025 2621 1999 2900 +9604 4 2 28 1 2660 3105 3515 3814 +9605 4 2 28 1 3051 3232 2573 3592 +9606 4 2 28 1 2691 2811 2748 3224 +9607 4 2 28 1 1971 2891 2064 3272 +9608 4 2 28 1 3094 3247 2734 3737 +9609 4 2 28 1 724 3076 3509 3719 +9610 4 2 28 1 2677 2852 3321 3850 +9611 4 2 28 1 1483 3059 1450 3214 +9612 4 2 28 1 915 1110 2953 3863 +9613 4 2 28 1 2570 3623 3156 3683 +9614 4 2 28 1 3337 3454 2816 3933 +9615 4 2 28 1 1207 1010 976 3107 +9616 4 2 28 1 2749 2727 2972 3595 +9617 4 2 28 1 2721 3409 3425 3576 +9618 4 2 28 1 2967 3216 2392 3717 +9619 4 2 28 1 2817 2929 3329 3411 +9620 4 2 28 1 2727 2868 2749 3443 +9621 4 2 28 1 1877 1882 2176 3267 +9622 4 2 28 1 2953 3523 2643 3851 +9623 4 2 28 1 1417 2943 1703 3162 +9624 4 2 28 1 382 3025 369 3368 +9625 4 2 28 1 2541 2857 3236 3723 +9626 4 2 28 1 2006 1831 2159 3041 +9627 4 2 28 1 2770 2978 2637 3334 +9628 4 2 28 1 2522 2514 2530 3423 +9629 4 2 28 1 2543 3557 2871 3813 +9630 4 2 28 1 1690 3176 2763 3436 +9631 4 2 28 1 1890 3000 1891 3322 +9632 4 2 28 1 354 2985 352 3765 +9633 4 2 28 1 382 397 396 3672 +9634 4 2 28 1 287 1611 512 3672 +9635 4 2 28 1 1310 810 233 2925 +9636 4 2 28 1 3122 2574 3587 3916 +9637 4 2 28 1 2357 3352 3104 3841 +9638 4 2 28 1 2850 3142 1932 3407 +9639 4 2 28 1 2822 3135 2936 3845 +9640 4 2 28 1 2150 1961 2022 2725 +9641 4 2 28 1 621 629 3421 3836 +9642 4 2 28 1 1780 1760 3378 3387 +9643 4 2 28 1 1418 1406 1693 3254 +9644 4 2 28 1 1980 2910 1979 3312 +9645 4 2 28 1 1940 3377 3039 3856 +9646 4 2 28 1 1382 1383 1380 3534 +9647 4 2 28 1 2303 3049 2324 3725 +9648 4 2 28 1 2683 3292 2883 3319 +9649 4 2 28 1 2544 3736 3199 3912 +9650 4 2 28 1 745 658 769 3768 +9651 4 2 28 1 660 775 742 3747 +9652 4 2 28 1 2431 2477 2447 3045 +9653 4 2 28 1 2827 3018 2890 3809 +9654 4 2 28 1 2627 2724 3122 3536 +9655 4 2 28 1 1426 1415 1425 3179 +9656 4 2 28 1 1676 2904 1775 3255 +9657 4 2 28 1 1654 3090 2686 3362 +9658 4 2 28 1 801 230 231 3100 +9659 4 2 28 1 457 3047 273 3353 +9660 4 2 28 1 2842 3105 2876 3723 +9661 4 2 28 1 1275 3115 1074 3139 +9662 4 2 28 1 1698 1624 1364 2990 +9663 4 2 28 1 2000 1982 2137 2722 +9664 4 2 28 1 2157 3101 2080 3929 +9665 4 2 28 1 2597 3036 2936 3455 +9666 4 2 28 1 2568 2747 2624 3157 +9667 4 2 28 1 2623 2671 3327 3392 +9668 4 2 28 1 1358 1368 1574 2927 +9669 4 2 28 1 3070 3533 3145 3750 +9670 4 2 28 1 2567 2644 3037 3782 +9671 4 2 28 1 970 880 3473 3907 +9672 4 2 28 1 2735 3249 657 3839 +9673 4 2 28 1 2543 2761 3429 3767 +9674 4 2 28 1 668 1630 2924 2999 +9675 4 2 28 1 3079 3213 2869 3637 +9676 4 2 28 1 1356 2676 3007 3388 +9677 4 2 28 1 2942 3233 2839 3618 +9678 4 2 28 1 935 931 3019 3791 +9679 4 2 28 1 3445 3477 2728 3751 +9680 4 2 28 1 2641 2853 3680 3906 +9681 4 2 28 1 2585 3448 2693 3851 +9682 4 2 28 1 2905 2920 2669 3475 +9683 4 2 28 1 2656 3129 2916 3548 +9684 4 2 28 1 803 2890 1071 3194 +9685 4 2 28 1 1560 1798 2877 3277 +9686 4 2 28 1 805 1151 1315 3669 +9687 4 2 28 1 2435 2445 2462 3186 +9688 4 2 28 1 1979 3312 2805 3931 +9689 4 2 28 1 1314 1288 789 2914 +9690 4 2 28 1 2006 3041 2159 3642 +9691 4 2 28 1 2942 3382 2673 3409 +9692 4 2 28 1 695 754 662 2927 +9693 4 2 28 1 2644 3050 3011 3203 +9694 4 2 28 1 2355 3841 3104 3861 +9695 4 2 28 1 2643 2953 2836 3234 +9696 4 2 28 1 1149 1150 2970 3834 +9697 4 2 28 1 2735 2882 2807 3511 +9698 4 2 28 1 1518 1462 1561 3539 +9699 4 2 28 1 833 2872 835 3411 +9700 4 2 28 1 515 428 429 2885 +9701 4 2 28 1 2692 3059 3214 3760 +9702 4 2 28 1 2698 3649 2962 3895 +9703 4 2 28 1 1765 1764 1443 3691 +9704 4 2 28 1 2541 2879 2971 3635 +9705 4 2 28 1 2911 3028 2560 3396 +9706 4 2 28 1 2329 2310 2295 2991 +9707 4 2 28 1 2373 2875 2342 3519 +9708 4 2 28 1 2576 3067 3211 3713 +9709 4 2 28 1 2300 2324 3049 3596 +9710 4 2 28 1 2400 2414 2368 3383 +9711 4 2 28 1 2626 3514 3051 3654 +9712 4 2 28 1 2630 2600 2793 3390 +9713 4 2 28 1 1607 3561 3017 3603 +9714 4 2 28 1 497 392 492 3353 +9715 4 2 28 1 723 576 729 3089 +9716 4 2 28 1 2068 3200 2758 3370 +9717 4 2 28 1 1096 2832 1104 3298 +9718 4 2 28 1 2588 3067 3319 3465 +9719 4 2 28 1 2564 2654 3137 3386 +9720 4 2 28 1 2561 3165 3151 3760 +9721 4 2 28 1 2710 2822 3279 3587 +9722 4 2 28 1 696 594 3701 3743 +9723 4 2 28 1 477 396 287 3672 +9724 4 2 28 1 1723 2736 1590 3243 +9725 4 2 28 1 1519 2763 1690 3176 +9726 4 2 28 1 2550 2775 3199 3205 +9727 4 2 28 1 457 497 379 3868 +9728 4 2 28 1 1870 2874 3347 3828 +9729 4 2 28 1 2728 2883 3820 3846 +9730 4 2 28 1 3140 3357 2180 3739 +9731 4 2 28 1 2551 3137 2961 3668 +9732 4 2 28 1 2564 2961 3137 3668 +9733 4 2 28 1 3069 3103 2652 3582 +9734 4 2 28 1 2380 1724 1653 3175 +9735 4 2 28 1 447 3080 327 3805 +9736 4 2 28 1 1712 3630 1501 3737 +9737 4 2 28 1 3032 2315 3220 3889 +9738 4 2 28 1 233 2925 546 3490 +9739 4 2 28 1 1059 1060 2890 3167 +9740 4 2 28 1 992 1181 1135 3138 +9741 4 2 28 1 327 329 328 3080 +9742 4 2 28 1 2834 3063 3860 3877 +9743 4 2 28 1 2736 3109 1589 3398 +9744 4 2 28 1 2876 2939 1855 3462 +9745 4 2 28 1 634 3252 600 3498 +9746 4 2 28 1 2619 2750 2694 3160 +9747 4 2 28 1 1301 808 1264 2877 +9748 4 2 28 1 1989 1914 1923 3180 +9749 4 2 28 1 2902 3154 3084 3250 +9750 4 2 28 1 2796 3383 3125 3571 +9751 4 2 28 1 2624 2795 2658 3521 +9752 4 2 28 1 791 1067 1081 2997 +9753 4 2 28 1 2391 2411 2394 3271 +9754 4 2 28 1 1596 1783 2977 3198 +9755 4 2 28 1 2601 3233 2942 3618 +9756 4 2 28 1 2839 2601 3233 3361 +9757 4 2 28 1 344 337 338 3796 +9758 4 2 28 1 2474 2448 2468 3449 +9759 4 2 28 1 1722 1546 1789 2893 +9760 4 2 28 1 2354 3482 3265 3861 +9761 4 2 28 1 2293 2330 3476 3725 +9762 4 2 28 1 1278 795 1183 2937 +9763 4 2 28 1 1115 3015 2877 3277 +9764 4 2 28 1 2577 2584 2729 3460 +9765 4 2 28 1 2644 2977 2878 3238 +9766 4 2 28 1 1947 1951 1948 3066 +9767 4 2 28 1 1924 1923 1920 2961 +9768 4 2 28 1 419 1830 284 3168 +9769 4 2 28 1 1951 3066 1947 3480 +9770 4 2 28 1 2558 2581 3235 3392 +9771 4 2 28 1 2637 2619 2919 3915 +9772 4 2 28 1 1692 1599 3093 3754 +9773 4 2 28 1 1558 2624 1571 3486 +9774 4 2 28 1 1866 1865 1867 2853 +9775 4 2 28 1 2558 2841 3327 3392 +9776 4 2 28 1 1954 2804 1972 3755 +9777 4 2 28 1 452 3290 367 3442 +9778 4 2 28 1 532 1322 3076 3752 +9779 4 2 28 1 486 3398 394 3730 +9780 4 2 28 1 1107 1161 992 3138 +9781 4 2 28 1 2573 3051 3637 3869 +9782 4 2 28 1 746 2900 2901 3608 +9783 4 2 28 1 2392 2358 2360 2967 +9784 4 2 28 1 2699 2754 2625 3001 +9785 4 2 28 1 2567 3037 3724 3782 +9786 4 2 28 1 2197 2245 2007 3356 +9787 4 2 28 1 2610 3084 2950 3763 +9788 4 2 28 1 439 440 308 3074 +9789 4 2 28 1 2590 2609 2704 3155 +9790 4 2 28 1 2732 2854 2706 3187 +9791 4 2 28 1 2542 3610 2911 3731 +9792 4 2 28 1 2523 2526 3030 3189 +9793 4 2 28 1 301 300 299 3141 +9794 4 2 28 1 2800 2950 2610 3447 +9795 4 2 28 1 3059 3542 1483 3571 +9796 4 2 28 1 1692 3093 3542 3754 +9797 4 2 28 1 1467 1618 2838 3171 +9798 4 2 28 1 1487 2990 1488 3268 +9799 4 2 28 1 2600 2793 2749 2930 +9800 4 2 28 1 2647 2566 2779 3141 +9801 4 2 28 1 2595 2669 2580 3801 +9802 4 2 28 1 1918 3275 3006 3415 +9803 4 2 28 1 3288 3354 2864 3847 +9804 4 2 28 1 2762 3169 2663 3636 +9805 4 2 28 1 1057 2914 1288 3659 +9806 4 2 28 1 2564 2636 2613 3705 +9807 4 2 28 1 2979 3554 3149 3914 +9808 4 2 28 1 860 3224 1196 3487 +9809 4 2 28 1 1141 3139 1313 3349 +9810 4 2 28 1 445 3120 508 3344 +9811 4 2 28 1 3137 3241 2570 3251 +9812 4 2 28 1 3079 3178 2717 3869 +9813 4 2 28 1 3224 3381 856 3875 +9814 4 2 28 1 2296 2316 3143 3889 +9815 4 2 28 1 2674 3170 1663 3577 +9816 4 2 28 1 2810 3262 3260 3598 +9817 4 2 28 1 796 1200 1262 3026 +9818 4 2 28 1 1155 3325 3018 3393 +9819 4 2 28 1 2777 3541 3282 3828 +9820 4 2 28 1 2605 2746 3137 3391 +9821 4 2 28 1 2731 2899 2668 3323 +9822 4 2 28 1 1196 3224 862 3487 +9823 4 2 28 1 2044 2023 1984 2776 +9824 4 2 28 1 2556 2938 2797 3786 +9825 4 2 28 1 1920 2961 1919 3401 +9826 4 2 28 1 727 631 2951 3499 +9827 4 2 28 1 1068 3198 1301 3439 +9828 4 2 28 1 957 3628 1224 3656 +9829 4 2 28 1 1147 3196 845 3806 +9830 4 2 28 1 2802 2982 3189 3395 +9831 4 2 28 1 2622 2932 2729 3460 +9832 4 2 28 1 1281 3309 1021 3787 +9833 4 2 28 1 2441 2470 2438 3651 +9834 4 2 28 1 2595 2697 2623 3327 +9835 4 2 28 1 1424 1423 1438 3327 +9836 4 2 28 1 1551 1548 1552 3192 +9837 4 2 28 1 2461 3106 2417 3210 +9838 4 2 28 1 344 515 3217 3917 +9839 4 2 28 1 2791 2545 3363 3770 +9840 4 2 28 1 3151 2715 3361 3918 +9841 4 2 28 1 2829 3464 3211 3814 +9842 4 2 28 1 3207 3361 2715 3918 +9843 4 2 28 1 2482 3106 2462 3218 +9844 4 2 28 1 673 1811 2900 3096 +9845 4 2 28 1 2771 3575 3186 3884 +9846 4 2 28 1 2578 2699 3507 3926 +9847 4 2 28 1 2694 2695 2574 2946 +9848 4 2 28 1 1652 1653 1724 3175 +9849 4 2 28 1 2374 3519 2347 3644 +9850 4 2 28 1 2473 2485 2418 3271 +9851 4 2 28 1 2553 3399 3134 3466 +9852 4 2 28 1 2834 3860 3230 3877 +9853 4 2 28 1 2665 3164 3041 3658 +9854 4 2 28 1 510 292 2931 3101 +9855 4 2 28 1 2802 3395 2717 3721 +9856 4 2 28 1 607 551 549 3008 +9857 4 2 28 1 3165 3195 2835 3682 +9858 4 2 28 1 1849 3269 2657 3525 +9859 4 2 28 1 2546 3058 2935 3299 +9860 4 2 28 1 2642 3119 3046 3611 +9861 4 2 28 1 2690 3440 2864 3483 +9862 4 2 28 1 2721 3326 2791 3770 +9863 4 2 28 1 2685 3188 3604 3855 +9864 4 2 28 1 1714 1522 1521 2925 +9865 4 2 28 1 1730 3383 3059 3571 +9866 4 2 28 1 3364 3375 2886 3529 +9867 4 2 28 1 2446 3230 2439 3657 +9868 4 2 28 1 2485 3230 2448 3449 +9869 4 2 28 1 3004 3066 2874 3933 +9870 4 2 28 1 1416 1415 2943 3179 +9871 4 2 28 1 1402 1520 1404 2797 +9872 4 2 28 1 2797 2938 1404 3427 +9873 4 2 28 1 2522 2530 1351 3423 +9874 4 2 28 1 2041 1943 2273 3206 +9875 4 2 28 1 2299 2327 2324 3596 +9876 4 2 28 1 2586 2782 2642 3783 +9877 4 2 28 1 2077 2716 3340 3669 +9878 4 2 28 1 2545 2791 3241 3770 +9879 4 2 28 1 2547 2568 2939 3531 +9880 4 2 28 1 706 3385 578 3516 +9881 4 2 28 1 2588 3060 2858 3315 +9882 4 2 28 1 1796 1591 1586 2917 +9883 4 2 28 1 1599 3093 1598 3477 +9884 4 2 28 1 2768 3034 3129 3794 +9885 4 2 28 1 2716 1287 3434 3669 +9886 4 2 28 1 2624 2927 2747 3619 +9887 4 2 28 1 1584 2277 1829 3200 +9888 4 2 28 1 225 679 526 2933 +9889 4 2 28 1 3188 3425 3058 3882 +9890 4 2 28 1 2805 3312 3111 3545 +9891 4 2 28 1 3072 3386 2725 3435 +9892 4 2 28 1 2571 3237 2870 3293 +9893 4 2 28 1 3000 3134 2751 3267 +9894 4 2 28 1 3319 3514 3067 3771 +9895 4 2 28 1 718 2951 632 3252 +9896 4 2 28 1 2570 3242 3137 3391 +9897 4 2 28 1 600 708 587 3252 +9898 4 2 28 1 2978 3124 822 3256 +9899 4 2 28 1 2241 2890 2693 3448 +9900 4 2 28 1 1856 2939 2876 3113 +9901 4 2 28 1 2673 3382 3052 3409 +9902 4 2 28 1 847 900 901 3196 +9903 4 2 28 1 2769 2619 3083 3227 +9904 4 2 28 1 2095 674 1811 2900 +9905 4 2 28 1 2452 2453 2425 2982 +9906 4 2 28 1 3072 3341 1065 3494 +9907 4 2 28 1 2643 3523 2589 3851 +9908 4 2 28 1 2631 2793 2600 3390 +9909 4 2 28 1 535 764 3356 3499 +9910 4 2 28 1 3104 3496 2355 3861 +9911 4 2 28 1 2651 3288 3218 3354 +9912 4 2 28 1 2841 3136 2696 3235 +9913 4 2 28 1 2259 2871 3485 3827 +9914 4 2 28 1 622 714 726 3201 +9915 4 2 28 1 2365 3422 3149 3914 +9916 4 2 28 1 2537 1840 2247 3189 +9917 4 2 28 1 2419 2427 2299 3197 +9918 4 2 28 1 849 846 848 2972 +9919 4 2 28 1 2455 2457 2454 3586 +9920 4 2 28 1 2345 3175 2497 3422 +9921 4 2 28 1 558 586 556 2905 +9922 4 2 28 1 1303 1318 781 3170 +9923 4 2 28 1 1510 1508 1511 3676 +9924 4 2 28 1 2184 3312 2070 3640 +9925 4 2 28 1 2685 2790 3188 3855 +9926 4 2 28 1 2936 3280 3037 3724 +9927 4 2 28 1 3258 3434 964 3863 +9928 4 2 28 1 2000 2722 3018 3377 +9929 4 2 28 1 1966 1962 1952 2672 +9930 4 2 28 1 2598 2969 2808 3915 +9931 4 2 28 1 1805 2623 1504 3491 +9932 4 2 28 1 2827 3167 984 3809 +9933 4 2 28 1 2780 3597 2941 3716 +9934 4 2 28 1 1167 2975 917 3790 +9935 4 2 28 1 2332 2311 3069 3260 +9936 4 2 28 1 2628 2744 2675 3683 +9937 4 2 28 1 1610 3093 1599 3754 +9938 4 2 28 1 2642 3783 2782 3849 +9939 4 2 28 1 2031 1833 2163 3030 +9940 4 2 28 1 2627 2852 2765 3308 +9941 4 2 28 1 891 2978 3227 3410 +9942 4 2 28 1 2376 3149 2365 3422 +9943 4 2 28 1 1434 1442 1441 2936 +9944 4 2 28 1 2609 3155 3251 3623 +9945 4 2 28 1 2641 3282 3110 3680 +9946 4 2 28 1 1689 1579 1787 3593 +9947 4 2 28 1 813 810 1094 3121 +9948 4 2 28 1 615 649 648 3191 +9949 4 2 28 1 1109 1088 993 3087 +9950 4 2 28 1 2561 3151 2835 3709 +9951 4 2 28 1 2179 1945 1870 2874 +9952 4 2 28 1 2839 3345 2945 3419 +9953 4 2 28 1 3066 1947 3480 3933 +9954 4 2 28 1 2664 3264 1486 3686 +9955 4 2 28 1 2674 3350 2946 3667 +9956 4 2 28 1 2613 3229 2970 3572 +9957 4 2 28 1 2853 3404 1865 3631 +9958 4 2 28 1 2693 2585 2836 3340 +9959 4 2 28 1 2176 3267 2195 3541 +9960 4 2 28 1 2625 2621 2767 2901 +9961 4 2 28 1 2869 2835 3709 3919 +9962 4 2 28 1 731 646 633 3221 +9963 4 2 28 1 2945 3132 2715 3830 +9964 4 2 28 1 955 1093 3011 3469 +9965 4 2 28 1 2559 2788 3552 3603 +9966 4 2 28 1 2632 3006 3212 3259 +9967 4 2 28 1 2615 2804 3078 3901 +9968 4 2 28 1 2240 2157 1968 2739 +9969 4 2 28 1 559 3700 3699 3701 +9970 4 2 28 1 2015 1302 2142 3115 +9971 4 2 28 1 2841 2954 2696 3584 +9972 4 2 28 1 2860 3617 2778 3679 +9973 4 2 28 1 2592 2961 3386 3652 +9974 4 2 28 1 2566 2591 2640 2786 +9975 4 2 28 1 2658 2747 3252 3540 +9976 4 2 28 1 3030 3373 2805 3931 +9977 4 2 28 1 2275 2863 2025 3096 +9978 4 2 28 1 1251 3248 1254 3853 +9979 4 2 28 1 1533 1594 1449 3208 +9980 4 2 28 1 229 2882 534 3511 +9981 4 2 28 1 2556 3396 3587 3818 +9982 4 2 28 1 3105 3522 2547 3532 +9983 4 2 28 1 2313 3094 2307 3220 +9984 4 2 28 1 1321 690 239 531 +9985 4 2 28 1 1680 1677 1501 3247 +9986 4 2 28 1 2751 3021 3154 3908 +9987 4 2 28 1 2676 3157 2747 3269 +9988 4 2 28 1 3189 3395 2982 3581 +9989 4 2 28 1 2675 3156 2581 3392 +9990 4 2 28 1 2334 2297 2326 3598 +9991 4 2 28 1 2386 2355 3104 3496 +9992 4 2 28 1 2764 3404 2842 3649 +9993 4 2 28 1 1060 2890 3167 3194 +9994 4 2 28 1 1554 3143 3163 3164 +9995 4 2 28 1 1096 3555 1105 3934 +9996 4 2 28 1 2643 3360 2688 3851 +9997 4 2 28 1 2626 3450 3004 3690 +9998 4 2 28 1 2604 2765 2677 3308 +9999 4 2 28 1 2562 2649 2600 3443 +10000 4 2 28 1 2562 2600 3123 3390 +10001 4 2 28 1 2025 1996 1999 2621 +10002 4 2 28 1 2568 2658 2657 3525 +10003 4 2 28 1 2442 2443 2454 3304 +10004 4 2 28 1 2447 2432 3045 3575 +10005 4 2 28 1 1116 1115 1113 3015 +10006 4 2 28 1 1608 542 548 3815 +10007 4 2 28 1 3094 3220 2734 3537 +10008 4 2 28 1 2326 3260 2346 3598 +10009 4 2 28 1 3078 3373 1955 3755 +10010 4 2 28 1 619 693 734 2920 +10011 4 2 28 1 1971 2063 2064 2891 +10012 4 2 28 1 3134 3267 2718 3912 +10013 4 2 28 1 345 3605 381 3913 +10014 4 2 28 1 2843 2743 3825 3833 +10015 4 2 28 1 2864 3489 2958 3710 +10016 4 2 28 1 2714 2884 2625 3430 +10017 4 2 28 1 1744 1520 1711 3824 +10018 4 2 28 1 3086 3621 3591 3672 +10019 4 2 28 1 340 331 342 2986 +10020 4 2 28 1 2790 3171 1459 3838 +10021 4 2 28 1 752 757 661 3323 +10022 4 2 28 1 1949 1972 3528 3755 +10023 4 2 28 1 210 796 3535 3548 +10024 4 2 28 1 1465 1494 1463 3238 +10025 4 2 28 1 2319 2292 2320 3247 +10026 4 2 28 1 3000 3322 2845 3466 +10027 4 2 28 1 1206 3506 3530 3566 +10028 4 2 28 1 2796 3740 3412 3760 +10029 4 2 28 1 3049 3103 2708 3306 +10030 4 2 28 1 2531 2512 3422 3797 +10031 4 2 28 1 1039 2929 1228 3411 +10032 4 2 28 1 2337 2393 1572 3166 +10033 4 2 28 1 2522 2494 2521 2892 +10034 4 2 28 1 562 564 566 2913 +10035 4 2 28 1 2615 3654 2804 3901 +10036 4 2 28 1 2262 1966 2076 3116 +10037 4 2 28 1 1197 3874 3070 3880 +10038 4 2 28 1 3151 3761 2960 3825 +10039 4 2 28 1 2835 3195 3165 3919 +10040 4 2 28 1 2009 2716 3084 3340 +10041 4 2 28 1 1711 1520 1402 3279 +10042 4 2 28 1 2565 3403 2687 3560 +10043 4 2 28 1 2685 3562 2996 3570 +10044 4 2 28 1 2576 2910 3027 3544 +10045 4 2 28 1 850 848 3318 3887 +10046 4 2 28 1 2683 3345 3207 3361 +10047 4 2 28 1 1240 223 1260 3225 +10048 4 2 28 1 1755 3083 1537 3823 +10049 4 2 28 1 1667 2977 1168 3150 +10050 4 2 28 1 2578 3405 2959 3688 +10051 4 2 28 1 2248 2025 2153 3096 +10052 4 2 28 1 1275 1074 1312 3139 +10053 4 2 28 1 1799 3170 2750 3577 +10054 4 2 28 1 2593 2938 2926 3786 +10055 4 2 28 1 2826 2932 2723 3670 +10056 4 2 28 1 2601 3361 2839 3618 +10057 4 2 28 1 2132 3607 3113 3720 +10058 4 2 28 1 1692 3093 1599 3542 +10059 4 2 28 1 3172 3282 2777 3541 +10060 4 2 28 1 2853 2962 2698 3649 +10061 4 2 28 1 2762 3098 3579 3636 +10062 4 2 28 1 1614 2918 2686 3366 +10063 4 2 28 1 772 740 541 3064 +10064 4 2 28 1 2623 2908 2645 3491 +10065 4 2 28 1 2621 2701 2900 2901 +10066 4 2 28 1 1152 2969 866 3893 +10067 4 2 28 1 3104 3222 2949 3861 +10068 4 2 28 1 3050 3666 3150 3784 +10069 4 2 28 1 955 3011 1160 3469 +10070 4 2 28 1 2853 3649 3404 3673 +10071 4 2 28 1 857 860 856 3224 +10072 4 2 28 1 2750 2619 2919 3659 +10073 4 2 28 1 1870 2179 2874 3828 +10074 4 2 28 1 2577 2729 2723 3460 +10075 4 2 28 1 1980 1978 1979 2910 +10076 4 2 28 1 2080 2157 2265 3101 +10077 4 2 28 1 3361 3709 3151 3918 +10078 4 2 28 1 1007 1244 1207 3158 +10079 4 2 28 1 2791 3242 2971 3635 +10080 4 2 28 1 2576 3111 2861 3702 +10081 4 2 28 1 1826 2482 2051 3106 +10082 4 2 28 1 1848 1850 2196 3269 +10083 4 2 28 1 2554 3183 3058 3724 +10084 4 2 28 1 2750 3160 2619 3812 +10085 4 2 28 1 2226 1890 1902 3451 +10086 4 2 28 1 857 1231 862 3224 +10087 4 2 28 1 660 3118 775 3510 +10088 4 2 28 1 2980 3382 2685 3882 +10089 4 2 28 1 2719 3376 2969 3927 +10090 4 2 28 1 983 2946 974 3380 +10091 4 2 28 1 3039 3377 2722 3856 +10092 4 2 28 1 2565 2687 2606 3560 +10093 4 2 28 1 2634 2704 2973 3019 +10094 4 2 28 1 2599 2719 2634 3329 +10095 4 2 28 1 1661 1529 1747 3200 +10096 4 2 28 1 378 3270 3408 3678 +10097 4 2 28 1 2575 3132 3055 3830 +10098 4 2 28 1 2639 2755 2579 3391 +10099 4 2 28 1 2622 2759 2729 2932 +10100 4 2 28 1 2672 2739 2733 3131 +10101 4 2 28 1 1382 3445 2957 3534 +10102 4 2 28 1 2033 2909 2195 3324 +10103 4 2 28 1 2543 2871 2850 3257 +10104 4 2 28 1 839 837 2930 3369 +10105 4 2 28 1 1233 1223 2970 3834 +10106 4 2 28 1 437 302 506 3588 +10107 4 2 28 1 1397 3127 1396 3788 +10108 4 2 28 1 2622 2729 2584 3460 +10109 4 2 28 1 769 3009 2908 3768 +10110 4 2 28 1 2581 2659 2801 2912 +10111 4 2 28 1 2717 3178 3079 3684 +10112 4 2 28 1 2603 2756 2594 3744 +10113 4 2 28 1 2784 3068 3718 3835 +10114 4 2 28 1 1868 3347 2853 3680 +10115 4 2 28 1 1407 1414 3179 3418 +10116 4 2 28 1 2526 2532 2523 3030 +10117 4 2 28 1 2542 2710 3610 3731 +10118 4 2 28 1 2679 2979 3208 3315 +10119 4 2 28 1 1358 3157 2676 3601 +10120 4 2 28 1 3257 3579 3098 3636 +10121 4 2 28 1 2257 1959 1993 3688 +10122 4 2 28 1 2526 3189 2982 3581 +10123 4 2 28 1 2607 2879 3236 3814 +10124 4 2 28 1 2558 3136 2841 3235 +10125 4 2 28 1 1954 2283 1973 3373 +10126 4 2 28 1 2857 3532 3522 3723 +10127 4 2 28 1 2292 3247 2313 3737 +10128 4 2 28 1 3188 3882 3058 3883 +10129 4 2 28 1 424 423 422 3897 +10130 4 2 28 1 3161 2781 3651 3657 +10131 4 2 28 1 890 1245 1211 3209 +10132 4 2 28 1 2598 2730 2817 3329 +10133 4 2 28 1 1494 3238 2644 3666 +10134 4 2 28 1 2961 3652 3035 3819 +10135 4 2 28 1 3275 2809 3483 3616 +10136 4 2 28 1 2847 3309 2851 3646 +10137 4 2 28 1 2831 3485 2171 3557 +10138 4 2 28 1 2635 2878 3203 3660 +10139 4 2 28 1 1058 1056 1314 3659 +10140 4 2 28 1 1609 2907 537 3077 +10141 4 2 28 1 1362 2944 3157 3495 +10142 4 2 28 1 757 3146 3323 3502 +10143 4 2 28 1 2580 2603 2669 3521 +10144 4 2 28 1 3066 3480 2720 3592 +10145 4 2 28 1 3310 3438 2879 3698 +10146 4 2 28 1 2244 2068 2758 3370 +10147 4 2 28 1 500 378 357 3270 +10148 4 2 28 1 2717 3178 3395 3869 +10149 4 2 28 1 2752 3378 1446 3379 +10150 4 2 28 1 2775 1944 3324 3413 +10151 4 2 28 1 2468 2385 2338 3449 +10152 4 2 28 1 2734 3364 3247 3537 +10153 4 2 28 1 2549 2761 3428 3636 +10154 4 2 28 1 1922 1926 2236 3206 +10155 4 2 28 1 1029 1007 1008 3158 +10156 4 2 28 1 3137 3391 3242 3799 +10157 4 2 28 1 2741 3228 2917 3375 +10158 4 2 28 1 2731 2923 2899 3502 +10159 4 2 28 1 832 3005 3343 3894 +10160 4 2 28 1 2685 3562 2790 3855 +10161 4 2 28 1 2299 2291 2419 3197 +10162 4 2 28 1 579 578 2895 3365 +10163 4 2 28 1 1135 3506 2989 3816 +10164 4 2 28 1 1831 2177 2159 3041 +10165 4 2 28 1 2822 3135 1433 3691 +10166 4 2 28 1 1796 2917 1586 3375 +10167 4 2 28 1 2796 3165 3740 3760 +10168 4 2 28 1 1074 3115 1312 3139 +10169 4 2 28 1 2733 2739 2672 3293 +10170 4 2 28 1 1643 1521 3263 3298 +10171 4 2 28 1 2832 3555 3083 3823 +10172 4 2 28 1 2562 2600 3390 3443 +10173 4 2 28 1 1031 1022 1030 3784 +10174 4 2 28 1 1264 2877 1116 3439 +10175 4 2 28 1 2533 2518 1841 3312 +10176 4 2 28 1 1123 984 919 3167 +10177 4 2 28 1 984 3167 2827 3372 +10178 4 2 28 1 421 422 423 3034 +10179 4 2 28 1 2694 2750 2619 2919 +10180 4 2 28 1 2555 3428 3192 3429 +10181 4 2 28 1 2794 3132 2945 3830 +10182 4 2 28 1 2590 2631 3390 3750 +10183 4 2 28 1 1977 3006 1917 3212 +10184 4 2 28 1 891 2978 820 3840 +10185 4 2 28 1 2756 2795 2658 3287 +10186 4 2 28 1 2128 3405 2959 3457 +10187 4 2 28 1 1287 1316 3339 3508 +10188 4 2 28 1 2750 2919 2694 3350 +10189 4 2 28 1 789 2914 1657 3417 +10190 4 2 28 1 2675 2906 2735 3392 +10191 4 2 28 1 571 563 697 2897 +10192 4 2 28 1 1385 1686 1387 3754 +10193 4 2 28 1 557 694 576 3089 +10194 4 2 28 1 2824 3495 1366 3549 +10195 4 2 28 1 2789 3037 2597 3539 +10196 4 2 28 1 2751 3134 3000 3399 +10197 4 2 28 1 2803 1018 3284 3890 +10198 4 2 28 1 2447 2467 2432 3575 +10199 4 2 28 1 820 2978 822 3840 +10200 4 2 28 1 283 415 2987 3332 +10201 4 2 28 1 2755 2866 2605 3225 +10202 4 2 28 1 2289 2139 2038 3910 +10203 4 2 28 1 2694 2808 2695 3380 +10204 4 2 28 1 2497 3422 3175 3797 +10205 4 2 28 1 1123 919 2976 3167 +10206 4 2 28 1 2670 2869 3213 3832 +10207 4 2 28 1 2637 2745 2719 3124 +10208 4 2 28 1 2320 1647 2328 3228 +10209 4 2 28 1 2990 2660 3268 3749 +10210 4 2 28 1 958 3119 977 3628 +10211 4 2 28 1 2170 2176 2195 3541 +10212 4 2 28 1 2374 2412 2394 3271 +10213 4 2 28 1 2654 3016 2988 3795 +10214 4 2 28 1 2958 3489 3337 3710 +10215 4 2 28 1 2324 2298 2321 3040 +10216 4 2 28 1 665 3118 661 3323 +10217 4 2 28 1 1493 1654 1651 2686 +10218 4 2 28 1 2775 3324 3061 3413 +10219 4 2 28 1 958 899 977 3119 +10220 4 2 28 1 2852 3276 2974 3629 +10221 4 2 28 1 2743 2843 3348 3833 +10222 4 2 28 1 1509 1508 1510 3603 +10223 4 2 28 1 344 3217 3796 3917 +10224 4 2 28 1 2902 3250 2553 3851 +10225 4 2 28 1 2585 2688 3360 3851 +10226 4 2 28 1 1407 2996 1399 3418 +10227 4 2 28 1 2555 3428 2850 3583 +10228 4 2 28 1 2949 3265 2666 3482 +10229 4 2 28 1 1508 2618 1510 3603 +10230 4 2 28 1 2216 1825 3042 3653 +10231 4 2 28 1 2961 3401 2738 3742 +10232 4 2 28 1 2683 2835 3361 3709 +10233 4 2 28 1 2730 2598 2817 3005 +10234 4 2 28 1 2631 2868 3431 3566 +10235 4 2 28 1 1954 1972 1949 3755 +10236 4 2 28 1 3098 3239 2577 3722 +10237 4 2 28 1 2613 2636 2564 3386 +10238 4 2 28 1 2637 2745 3124 3256 +10239 4 2 28 1 1080 3050 1083 3784 +10240 4 2 28 1 2032 3457 1901 3458 +10241 4 2 28 1 2217 2606 2090 3560 +10242 4 2 28 1 2432 3367 3045 3575 +10243 4 2 28 1 559 3089 2774 3699 +10244 4 2 28 1 2319 2313 2292 3247 +10245 4 2 28 1 3075 3207 2700 3213 +10246 4 2 28 1 1233 2970 1150 3834 +10247 4 2 28 1 336 2952 371 3920 +10248 4 2 28 1 2986 3131 2998 3844 +10249 4 2 28 1 1572 2393 1337 3166 +10250 4 2 28 1 2780 2941 3230 3716 +10251 4 2 28 1 1498 2620 1496 3238 +10252 4 2 28 1 2455 2458 2424 3644 +10253 4 2 28 1 414 2087 283 2987 +10254 4 2 28 1 1624 2990 1487 3053 +10255 4 2 28 1 1715 1460 1767 3584 +10256 4 2 28 1 559 2774 3089 3701 +10257 4 2 28 1 2047 3288 3091 3480 +10258 4 2 28 1 375 470 3867 3879 +10259 4 2 28 1 891 822 820 2978 +10260 4 2 28 1 1691 3348 3501 3833 +10261 4 2 28 1 2592 3035 2731 3613 +10262 4 2 28 1 503 353 355 3728 +10263 4 2 28 1 2527 2513 3246 3519 +10264 4 2 28 1 2599 3156 3028 3623 +10265 4 2 28 1 2639 2754 2579 2755 +10266 4 2 28 1 2161 3415 2162 3476 +10267 4 2 28 1 2540 2935 3188 3425 +10268 4 2 28 1 2366 3071 2363 3865 +10269 4 2 28 1 2297 2325 2326 3260 +10270 4 2 28 1 2553 3177 3466 3645 +10271 4 2 28 1 420 3504 469 3548 +10272 4 2 28 1 1690 1519 1597 3436 +10273 4 2 28 1 1858 3113 1856 3739 +10274 4 2 28 1 1486 1516 3264 3486 +10275 4 2 28 1 770 748 652 3076 +10276 4 2 28 1 2354 2949 3482 3861 +10277 4 2 28 1 2869 3709 3637 3832 +10278 4 2 28 1 991 1215 944 3144 +10279 4 2 28 1 323 322 337 3056 +10280 4 2 28 1 1914 1919 1920 2961 +10281 4 2 28 1 2680 2985 2885 3728 +10282 4 2 28 1 2609 2570 2638 3623 +10283 4 2 28 1 2728 3093 3445 3899 +10284 4 2 28 1 2850 3403 3142 3583 +10285 4 2 28 1 2537 2425 2529 3189 +10286 4 2 28 1 1113 1112 1117 3015 +10287 4 2 28 1 524 413 474 3844 +10288 4 2 28 1 2692 3501 2843 3825 +10289 4 2 28 1 1534 2954 1605 3456 +10290 4 2 28 1 2559 3552 3239 3722 +10291 4 2 28 1 824 823 822 3124 +10292 4 2 28 1 1078 1283 786 3194 +10293 4 2 28 1 344 338 346 3917 +10294 4 2 28 1 945 988 944 3144 +10295 4 2 28 1 1279 2937 1278 3492 +10296 4 2 28 1 903 904 905 2974 +10297 4 2 28 1 228 2882 794 3303 +10298 4 2 28 1 623 2923 640 3467 +10299 4 2 28 1 3272 2831 3557 3767 +10300 4 2 28 1 893 1139 2848 3674 +10301 4 2 28 1 2546 3183 3058 3299 +10302 4 2 28 1 2627 3276 2825 3294 +10303 4 2 28 1 3190 3662 3399 3783 +10304 4 2 28 1 2734 2968 2915 3330 +10305 4 2 28 1 2050 1962 1966 2672 +10306 4 2 28 1 2110 2830 2037 3733 +10307 4 2 28 1 477 3621 3086 3672 +10308 4 2 28 1 579 2895 580 3365 +10309 4 2 28 1 673 2900 675 3096 +10310 4 2 28 1 1890 1891 1882 3322 +10311 4 2 28 1 3067 3514 2726 3713 +10312 4 2 28 1 590 3608 716 3885 +10313 4 2 28 1 1571 1558 1754 3076 +10314 4 2 28 1 2815 2631 2975 3566 +10315 4 2 28 1 1152 826 866 2969 +10316 4 2 28 1 2685 3281 3882 3883 +10317 4 2 28 1 2402 3262 2422 3598 +10318 4 2 28 1 1435 1617 1618 3231 +10319 4 2 28 1 2792 3360 3399 3443 +10320 4 2 28 1 1365 1558 1571 3486 +10321 4 2 28 1 1036 1124 1184 3184 +10322 4 2 28 1 1312 3115 2151 3139 +10323 4 2 28 1 2707 3108 3111 3703 +10324 4 2 28 1 2604 3414 3183 3769 +10325 4 2 28 1 1176 3005 3376 3893 +10326 4 2 28 1 2596 3330 2794 3830 +10327 4 2 28 1 1893 1890 2043 3000 +10328 4 2 28 1 3484 3616 2928 3727 +10329 4 2 28 1 2161 1975 2162 3415 +10330 4 2 28 1 2048 2200 3091 3218 +10331 4 2 28 1 2751 3267 3134 3912 +10332 4 2 28 1 2075 2132 2073 3607 +10333 4 2 28 1 1758 3529 3254 3833 +10334 4 2 28 1 2564 2845 3039 3180 +10335 4 2 28 1 1176 3376 3005 3894 +10336 4 2 28 1 2038 3594 1981 3910 +10337 4 2 28 1 581 580 2895 3365 +10338 4 2 28 1 2632 3259 3212 3518 +10339 4 2 28 1 675 3096 2900 3097 +10340 4 2 28 1 2331 3041 2316 3889 +10341 4 2 28 1 2889 3635 2962 3895 +10342 4 2 28 1 2567 3301 2838 3687 +10343 4 2 28 1 2399 2343 2393 3166 +10344 4 2 28 1 2545 3242 3137 3251 +10345 4 2 28 1 1078 1283 3194 3729 +10346 4 2 28 1 2723 2768 2729 3472 +10347 4 2 28 1 1755 1538 3083 3159 +10348 4 2 28 1 2941 3079 2670 3597 +10349 4 2 28 1 1880 3140 3404 3527 +10350 4 2 28 1 2546 3183 2582 3301 +10351 4 2 28 1 2790 3281 1629 3562 +10352 4 2 28 1 2586 2902 3250 3360 +10353 4 2 28 1 3113 2648 3357 3720 +10354 4 2 28 1 2829 3236 3848 3895 +10355 4 2 28 1 604 2899 642 3510 +10356 4 2 28 1 2552 2594 3461 3744 +10357 4 2 28 1 578 579 2895 3385 +10358 4 2 28 1 2604 2677 2691 3769 +10359 4 2 28 1 2685 3604 2996 3855 +10360 4 2 28 1 1242 1076 2859 3871 +10361 4 2 28 1 3367 3575 2433 3766 +10362 4 2 28 1 726 736 640 3201 +10363 4 2 28 1 2660 2865 3033 3814 +10364 4 2 28 1 643 599 624 3781 +10365 4 2 28 1 2797 2926 2556 3279 +10366 4 2 28 1 2822 3587 2574 3857 +10367 4 2 28 1 369 3025 396 3368 +10368 4 2 28 1 2157 2739 2265 3101 +10369 4 2 28 1 1887 3193 3061 3712 +10370 4 2 28 1 2630 2793 2872 3533 +10371 4 2 28 1 344 3217 430 3796 +10372 4 2 28 1 2852 3817 1128 3850 +10373 4 2 28 1 1479 3160 1694 3577 +10374 4 2 28 1 3050 3114 2677 3524 +10375 4 2 28 1 786 1151 2146 3226 +10376 4 2 28 1 483 208 3128 3670 +10377 4 2 28 1 2673 2942 3446 3757 +10378 4 2 28 1 1402 3279 2797 3788 +10379 4 2 28 1 2182 2668 1993 3688 +10380 4 2 28 1 3283 3508 1143 3753 +10381 4 2 28 1 2750 3170 1799 3417 +10382 4 2 28 1 2856 2712 3174 3384 +10383 4 2 28 1 2692 3542 3059 3571 +10384 4 2 28 1 1179 853 3381 3925 +10385 4 2 28 1 2443 3304 2442 3574 +10386 4 2 28 1 1169 3641 3005 3854 +10387 4 2 28 1 2086 541 735 3064 +10388 4 2 28 1 1728 1771 1668 3150 +10389 4 2 28 1 817 3013 3432 3840 +10390 4 2 28 1 2556 2926 2938 3786 +10391 4 2 28 1 822 3124 2978 3410 +10392 4 2 28 1 2864 3286 2958 3440 +10393 4 2 28 1 2632 2831 3259 3518 +10394 4 2 28 1 2660 3033 2696 3814 +10395 4 2 28 1 2496 2511 2513 3519 +10396 4 2 28 1 2643 2706 2589 3523 +10397 4 2 28 1 2548 3028 2971 3698 +10398 4 2 28 1 1399 1390 3348 3562 +10399 4 2 28 1 2757 3148 3553 3638 +10400 4 2 28 1 1606 1538 2914 3083 +10401 4 2 28 1 2556 3396 3420 3903 +10402 4 2 28 1 1220 3296 1001 3925 +10403 4 2 28 1 2530 2538 1769 3175 +10404 4 2 28 1 1747 1340 1583 3200 +10405 4 2 28 1 1570 2296 3143 3164 +10406 4 2 28 1 2835 3117 3195 3919 +10407 4 2 28 1 1167 1208 917 2975 +10408 4 2 28 1 2758 3133 3312 3624 +10409 4 2 28 1 2575 2994 3132 3266 +10410 4 2 28 1 1300 2145 803 3194 +10411 4 2 28 1 728 613 648 3191 +10412 4 2 28 1 2903 3454 2874 3690 +10413 4 2 28 1 2259 3485 3712 3827 +10414 4 2 28 1 966 1014 3072 3572 +10415 4 2 28 1 3075 3185 2994 3295 +10416 4 2 28 1 2852 911 3629 3850 +10417 4 2 28 1 2664 3264 2580 3486 +10418 4 2 28 1 708 718 632 3252 +10419 4 2 28 1 2691 2635 3011 3147 +10420 4 2 28 1 640 623 622 3201 +10421 4 2 28 1 894 2848 2965 3674 +10422 4 2 28 1 2553 3000 2846 3645 +10423 4 2 28 1 2271 2701 2101 3261 +10424 4 2 28 1 1968 2270 3293 3560 +10425 4 2 28 1 2565 3403 2850 3583 +10426 4 2 28 1 2320 1347 1647 3228 +10427 4 2 28 1 1391 3281 3215 3562 +10428 4 2 28 1 625 3044 709 3589 +10429 4 2 28 1 390 3290 452 3442 +10430 4 2 28 1 3118 3273 2668 3323 +10431 4 2 28 1 2295 2336 2348 3692 +10432 4 2 28 1 1739 3162 1500 3630 +10433 4 2 28 1 2935 3058 2542 3326 +10434 4 2 28 1 2609 2570 3137 3391 +10435 4 2 28 1 2607 2956 2955 3846 +10436 4 2 28 1 791 2997 2134 3341 +10437 4 2 28 1 345 328 3620 3913 +10438 4 2 28 1 2041 1943 3206 3827 +10439 4 2 28 1 2651 3288 3295 3468 +10440 4 2 28 1 2966 3021 2243 3237 +10441 4 2 28 1 1461 1504 1805 2623 +10442 4 2 28 1 2290 2019 2145 2890 +10443 4 2 28 1 1289 790 2148 3139 +10444 4 2 28 1 742 641 3510 3747 +10445 4 2 28 1 2000 1982 2722 3377 +10446 4 2 28 1 520 206 270 2932 +10447 4 2 28 1 2636 3177 2564 3251 +10448 4 2 28 1 2339 3002 2471 3262 +10449 4 2 28 1 2764 3003 2853 3673 +10450 4 2 28 1 2856 3174 3133 3624 +10451 4 2 28 1 2383 2382 2381 3262 +10452 4 2 28 1 1969 2846 2284 3451 +10453 4 2 28 1 1602 3491 3490 3815 +10454 4 2 28 1 2663 2943 3179 3636 +10455 4 2 28 1 1602 1701 1805 2907 +10456 4 2 28 1 3103 3351 2814 3873 +10457 4 2 28 1 389 394 3398 3730 +10458 4 2 28 1 2615 3869 3051 3901 +10459 4 2 28 1 2296 2333 1756 3143 +10460 4 2 28 1 2539 2883 3292 3464 +10461 4 2 28 1 2021 2204 2188 3273 +10462 4 2 28 1 643 653 746 3097 +10463 4 2 28 1 1789 3542 2893 3571 +10464 4 2 28 1 1856 3113 2876 3739 +10465 4 2 28 1 2763 1519 3539 3900 +10466 4 2 28 1 3275 3415 2809 3616 +10467 4 2 28 1 2812 2634 3048 3479 +10468 4 2 28 1 723 696 712 2912 +10469 4 2 28 1 2573 3075 3185 3213 +10470 4 2 28 1 2667 2828 2656 3026 +10471 4 2 28 1 3117 3165 2678 3195 +10472 4 2 28 1 3043 3402 3311 3715 +10473 4 2 28 1 2329 2295 2387 3692 +10474 4 2 28 1 2596 3330 2915 3748 +10475 4 2 28 1 2772 3211 2956 3735 +10476 4 2 28 1 2642 2848 2760 2965 +10477 4 2 28 1 2554 3724 3058 3731 +10478 4 2 28 1 2674 3170 3350 3667 +10479 4 2 28 1 577 589 597 2984 +10480 4 2 28 1 2168 2221 2211 3720 +10481 4 2 28 1 2612 2787 2937 3182 +10482 4 2 28 1 1470 1456 3159 3812 +10483 4 2 28 1 1347 2292 1536 3247 +10484 4 2 28 1 2650 2759 2571 3054 +10485 4 2 28 1 2592 2859 2742 3512 +10486 4 2 28 1 1919 1903 2202 3742 +10487 4 2 28 1 3448 3523 2693 3851 +10488 4 2 28 1 442 321 464 2940 +10489 4 2 28 1 810 232 233 2925 +10490 4 2 28 1 1376 1377 1378 2956 +10491 4 2 28 1 2623 2671 2595 3327 +10492 4 2 28 1 607 3008 2907 3815 +10493 4 2 28 1 1893 1891 1890 3000 +10494 4 2 28 1 2252 1842 2118 3040 +10495 4 2 28 1 2764 3649 2541 3673 +10496 4 2 28 1 2796 3165 3043 3740 +10497 4 2 28 1 2664 2894 1515 3486 +10498 4 2 28 1 2547 2990 2944 3053 +10499 4 2 28 1 2555 2591 2640 3428 +10500 4 2 28 1 2399 2917 3166 3482 +10501 4 2 28 1 1875 1874 1873 3282 +10502 4 2 28 1 1385 2957 1382 3445 +10503 4 2 28 1 384 349 3344 3605 +10504 4 2 28 1 198 1987 1311 2931 +10505 4 2 28 1 1852 1854 2224 3426 +10506 4 2 28 1 725 2920 734 2924 +10507 4 2 28 1 615 2901 616 3726 +10508 4 2 28 1 1732 1519 1716 3176 +10509 4 2 28 1 801 3432 2807 3922 +10510 4 2 28 1 2477 2471 2491 3262 +10511 4 2 28 1 2417 3106 1826 3210 +10512 4 2 28 1 2656 3128 3129 3548 +10513 4 2 28 1 1773 2824 1367 3549 +10514 4 2 28 1 2582 3239 2563 3299 +10515 4 2 28 1 2706 2821 2589 2827 +10516 4 2 28 1 2845 3039 1913 3451 +10517 4 2 28 1 1366 2824 1367 3495 +10518 4 2 28 1 2216 3042 2289 3559 +10519 4 2 28 1 2894 2999 1678 3333 +10520 4 2 28 1 2909 3267 2195 3324 +10521 4 2 28 1 2552 3461 2594 3462 +10522 4 2 28 1 2648 3624 3544 3640 +10523 4 2 28 1 862 1236 1133 3147 +10524 4 2 28 1 916 2976 917 3513 +10525 4 2 28 1 2859 2725 3386 3435 +10526 4 2 28 1 2892 2679 3297 3423 +10527 4 2 28 1 1425 3378 2752 3387 +10528 4 2 28 1 2358 2967 2392 3717 +10529 4 2 28 1 3297 3602 2510 3909 +10530 4 2 28 1 2290 2145 1816 3194 +10531 4 2 28 1 2300 3049 3197 3596 +10532 4 2 28 1 2968 3163 2761 3767 +10533 4 2 28 1 740 731 3007 3388 +10534 4 2 28 1 2652 3471 3351 3837 +10535 4 2 28 1 2025 2863 1994 3405 +10536 4 2 28 1 2619 3159 1538 3812 +10537 4 2 28 1 2634 2973 2813 3019 +10538 4 2 28 1 2568 2944 2624 3521 +10539 4 2 28 1 2520 2498 3545 3780 +10540 4 2 28 1 419 387 404 3168 +10541 4 2 28 1 2552 3457 2764 3926 +10542 4 2 28 1 2570 3251 3241 3623 +10543 4 2 28 1 204 273 203 3047 +10544 4 2 28 1 1838 1349 1355 3388 +10545 4 2 28 1 1959 2257 3035 3688 +10546 4 2 28 1 2700 3207 3266 3835 +10547 4 2 28 1 2864 3483 3275 3847 +10548 4 2 28 1 2658 3024 2984 3689 +10549 4 2 28 1 2509 3108 2506 3602 +10550 4 2 28 1 676 616 675 2900 +10551 4 2 28 1 2553 3154 2902 3851 +10552 4 2 28 1 2858 2728 3477 3751 +10553 4 2 28 1 2539 3464 2962 3895 +10554 4 2 28 1 2357 3104 2355 3841 +10555 4 2 28 1 623 3201 2923 3389 +10556 4 2 28 1 425 3314 3558 3612 +10557 4 2 28 1 689 546 688 3490 +10558 4 2 28 1 3061 3193 2711 3712 +10559 4 2 28 1 639 2899 752 3389 +10560 4 2 28 1 1691 1395 3348 3833 +10561 4 2 28 1 3205 3206 2870 3827 +10562 4 2 28 1 2424 2499 2524 3586 +10563 4 2 28 1 857 3320 3224 3875 +10564 4 2 28 1 2474 2485 2448 3449 +10565 4 2 28 1 992 3517 3138 3595 +10566 4 2 28 1 2941 3574 2440 3657 +10567 4 2 28 1 1657 1606 2914 3083 +10568 4 2 28 1 2376 2342 2373 2875 +10569 4 2 28 1 1116 2877 1115 3015 +10570 4 2 28 1 519 419 284 3168 +10571 4 2 28 1 1530 3779 2856 3780 +10572 4 2 28 1 2175 1932 3142 3407 +10573 4 2 28 1 2668 3273 2742 3323 +10574 4 2 28 1 1855 1854 1853 2939 +10575 4 2 28 1 2055 3338 3461 3462 +10576 4 2 28 1 2831 3041 3658 3767 +10577 4 2 28 1 1849 1847 2951 3269 +10578 4 2 28 1 2663 2943 3162 3418 +10579 4 2 28 1 897 1145 1090 3173 +10580 4 2 28 1 2874 3066 3454 3933 +10581 4 2 28 1 2596 3551 3055 3830 +10582 4 2 28 1 1037 1217 1219 3145 +10583 4 2 28 1 2799 3386 3072 3435 +10584 4 2 28 1 2543 3257 2850 3428 +10585 4 2 28 1 2367 2358 3717 3841 +10586 4 2 28 1 1744 2938 1520 3824 +10587 4 2 28 1 2679 3406 3149 3829 +10588 4 2 28 1 3151 2601 3361 3761 +10589 4 2 28 1 1791 2616 1555 3300 +10590 4 2 28 1 1233 1223 1150 2970 +10591 4 2 28 1 2182 1993 2104 3688 +10592 4 2 28 1 2522 1351 1635 3423 +10593 4 2 28 1 2502 2526 2982 3581 +10594 4 2 28 1 1922 2236 2870 3206 +10595 4 2 28 1 2874 3004 2626 3066 +10596 4 2 28 1 2715 2945 2839 3345 +10597 4 2 28 1 2573 3592 3468 3866 +10598 4 2 28 1 2663 3169 2762 3604 +10599 4 2 28 1 2511 2507 2519 3909 +10600 4 2 28 1 1565 1629 3281 3562 +10601 4 2 28 1 1699 1619 2838 3280 +10602 4 2 28 1 697 3701 594 3743 +10603 4 2 28 1 1504 1503 1679 3491 +10604 4 2 28 1 769 3008 2908 3009 +10605 4 2 28 1 2767 2901 2621 3608 +10606 4 2 28 1 1083 3050 987 3775 +10607 4 2 28 1 1416 1415 1414 2943 +10608 4 2 28 1 3164 2734 3737 3889 +10609 4 2 28 1 2633 2661 2572 2862 +10610 4 2 28 1 3522 3532 3105 3723 +10611 4 2 28 1 3279 3587 2556 3610 +10612 4 2 28 1 3079 3161 2573 3869 +10613 4 2 28 1 2711 3193 2690 3212 +10614 4 2 28 1 1992 3415 3210 3935 +10615 4 2 28 1 2867 3026 2709 3302 +10616 4 2 28 1 1607 3463 3017 3561 +10617 4 2 28 1 2635 3203 3469 3660 +10618 4 2 28 1 2821 2827 2722 3705 +10619 4 2 28 1 3116 3309 2931 3646 +10620 4 2 28 1 2839 3345 2683 3361 +10621 4 2 28 1 1531 1532 3208 3423 +10622 4 2 28 1 2933 2675 3336 3421 +10623 4 2 28 1 3122 3587 2574 3845 +10624 4 2 28 1 3042 2849 3559 3653 +10625 4 2 28 1 2597 2825 2763 3455 +10626 4 2 28 1 333 3344 444 3620 +10627 4 2 28 1 2716 3434 1287 3508 +10628 4 2 28 1 702 2899 604 3389 +10629 4 2 28 1 879 881 886 2992 +10630 4 2 28 1 1093 1034 1236 3147 +10631 4 2 28 1 1429 3202 2761 3437 +10632 4 2 28 1 1414 2943 1415 3179 +10633 4 2 28 1 2695 2833 2730 3122 +10634 4 2 28 1 1123 2976 916 3513 +10635 4 2 28 1 3211 3464 2829 3713 +10636 4 2 28 1 2539 2879 3464 3895 +10637 4 2 28 1 2439 3230 2466 3657 +10638 4 2 28 1 1011 1009 1010 3248 +10639 4 2 28 1 2582 2563 3239 3460 +10640 4 2 28 1 2354 2949 2353 3482 +10641 4 2 28 1 2334 2487 2426 3598 +10642 4 2 28 1 3028 2599 3396 3903 +10643 4 2 28 1 2119 3115 2703 3139 +10644 4 2 28 1 1462 1452 1453 3037 +10645 4 2 28 1 2640 2583 2783 2940 +10646 4 2 28 1 2607 3211 3464 3814 +10647 4 2 28 1 2747 2927 2676 3221 +10648 4 2 28 1 1286 1023 1127 3505 +10649 4 2 28 1 824 866 2969 3410 +10650 4 2 28 1 921 969 1167 3187 +10651 4 2 28 1 891 1099 1084 3227 +10652 4 2 28 1 1361 1359 2823 3157 +10653 4 2 28 1 2080 511 289 3101 +10654 4 2 28 1 442 2940 352 2985 +10655 4 2 28 1 2544 3444 3199 3852 +10656 4 2 28 1 1026 1027 995 3229 +10657 4 2 28 1 2690 2711 3212 3259 +10658 4 2 28 1 3205 3488 2711 3736 +10659 4 2 28 1 605 617 779 3836 +10660 4 2 28 1 2196 2823 3426 3549 +10661 4 2 28 1 2741 2991 3228 3685 +10662 4 2 28 1 333 445 3344 3620 +10663 4 2 28 1 1257 978 1256 3181 +10664 4 2 28 1 2903 3419 3172 3711 +10665 4 2 28 1 1181 2989 3517 3762 +10666 4 2 28 1 2718 3153 3134 3912 +10667 4 2 28 1 812 3223 217 3512 +10668 4 2 28 1 1444 3136 1439 3904 +10669 4 2 28 1 2503 2493 3586 3778 +10670 4 2 28 1 429 428 2097 2885 +10671 4 2 28 1 1663 1732 2674 3577 +10672 4 2 28 1 639 2899 3389 3502 +10673 4 2 28 1 2607 3464 2879 3814 +10674 4 2 28 1 1376 2956 3033 3735 +10675 4 2 28 1 3165 3195 3117 3919 +10676 4 2 28 1 2563 3299 3190 3414 +10677 4 2 28 1 1475 1445 1474 3706 +10678 4 2 28 1 442 338 322 3056 +10679 4 2 28 1 2990 3053 1624 3891 +10680 4 2 28 1 647 749 623 2923 +10681 4 2 28 1 2674 2694 2946 3350 +10682 4 2 28 1 2766 3046 2642 3119 +10683 4 2 28 1 2011 2166 3084 3154 +10684 4 2 28 1 1990 2219 2288 2680 +10685 4 2 28 1 2610 2800 2642 3250 +10686 4 2 28 1 3359 3365 2895 3608 +10687 4 2 28 1 2451 2420 2453 2982 +10688 4 2 28 1 2771 3575 3367 3766 +10689 4 2 28 1 2416 2053 1835 3653 +10690 4 2 28 1 2720 3232 3051 3592 +10691 4 2 28 1 2699 2899 2731 2923 +10692 4 2 28 1 2741 3481 2991 3837 +10693 4 2 28 1 2685 2942 3233 3425 +10694 4 2 28 1 2745 2812 2599 3048 +10695 4 2 28 1 2677 3308 2852 3782 +10696 4 2 28 1 2025 2104 1994 2863 +10697 4 2 28 1 2141 3212 2235 3485 +10698 4 2 28 1 1026 3229 3325 3393 +10699 4 2 28 1 1986 3407 3142 3803 +10700 4 2 28 1 2542 2911 3028 3326 +10701 4 2 28 1 2610 2830 2703 3349 +10702 4 2 28 1 2401 2385 2367 3717 +10703 4 2 28 1 884 3234 3258 3863 +10704 4 2 28 1 1763 2697 3077 3573 +10705 4 2 28 1 2651 2994 3185 3295 +10706 4 2 28 1 2617 2945 3286 3711 +10707 4 2 28 1 3160 3577 2674 3900 +10708 4 2 28 1 2360 2361 3311 3402 +10709 4 2 28 1 2862 3080 2773 3585 +10710 4 2 28 1 2111 428 272 2885 +10711 4 2 28 1 3130 3314 1118 3612 +10712 4 2 28 1 1425 1430 1426 2752 +10713 4 2 28 1 2558 3235 2841 3392 +10714 4 2 28 1 2714 2756 3148 3516 +10715 4 2 28 1 2610 2642 2848 3774 +10716 4 2 28 1 1290 2977 792 3198 +10717 4 2 28 1 2580 2664 2595 3264 +10718 4 2 28 1 2593 2807 2770 3432 +10719 4 2 28 1 1177 1172 3005 3632 +10720 4 2 28 1 1280 1021 3309 3787 +10721 4 2 28 1 2090 2606 2285 3560 +10722 4 2 28 1 2804 3528 1972 3755 +10723 4 2 28 1 297 298 3062 3500 +10724 4 2 28 1 1256 3181 3012 3890 +10725 4 2 28 1 421 469 3504 3794 +10726 4 2 28 1 349 332 3344 3605 +10727 4 2 28 1 2597 3087 2789 3539 +10728 4 2 28 1 2542 2710 3052 3610 +10729 4 2 28 1 2133 2247 1840 3189 +10730 4 2 28 1 442 2985 352 3056 +10731 4 2 28 1 2410 2917 2399 3692 +10732 4 2 28 1 2703 2830 3139 3349 +10733 4 2 28 1 2234 1848 2196 2823 +10734 4 2 28 1 2530 3175 1351 3423 +10735 4 2 28 1 603 716 616 2901 +10736 4 2 28 1 1861 1860 3458 3739 +10737 4 2 28 1 2851 3309 3116 3646 +10738 4 2 28 1 899 3119 958 3628 +10739 4 2 28 1 2652 3481 2949 3708 +10740 4 2 28 1 3032 3476 3355 3725 +10741 4 2 28 1 2575 3055 3132 3204 +10742 4 2 28 1 649 3191 615 3726 +10743 4 2 28 1 832 3005 1169 3343 +10744 4 2 28 1 2815 2989 2688 3360 +10745 4 2 28 1 763 545 3118 3273 +10746 4 2 28 1 2443 2442 2440 3574 +10747 4 2 28 1 987 3114 3050 3524 +10748 4 2 28 1 2732 2793 3145 3431 +10749 4 2 28 1 528 1631 1319 2999 +10750 4 2 28 1 2655 2788 2667 2916 +10751 4 2 28 1 2784 3471 3222 3708 +10752 4 2 28 1 1240 793 222 3225 +10753 4 2 28 1 1323 276 1625 3090 +10754 4 2 28 1 660 665 775 3118 +10755 4 2 28 1 238 1621 537 690 +10756 4 2 28 1 2606 2998 2739 3332 +10757 4 2 28 1 2542 3326 2791 3409 +10758 4 2 28 1 548 537 237 1394 +10759 4 2 28 1 1094 810 1095 3298 +10760 4 2 28 1 2416 1825 2053 3653 +10761 4 2 28 1 2698 3649 2829 3848 +10762 4 2 28 1 2761 3428 2543 3429 +10763 4 2 28 1 1157 1187 876 3258 +10764 4 2 28 1 2642 2612 2787 3773 +10765 4 2 28 1 2564 2654 2609 3137 +10766 4 2 28 1 3207 3709 3361 3918 +10767 4 2 28 1 3095 3592 2573 3866 +10768 4 2 28 1 1100 1102 1288 3083 +10769 4 2 28 1 3208 3423 3060 3478 +10770 4 2 28 1 2423 2335 2327 3040 +10771 4 2 28 1 2597 3087 2852 3114 +10772 4 2 28 1 1128 2852 3629 3817 +10773 4 2 28 1 1661 2758 3200 3370 +10774 4 2 28 1 2461 2450 3106 3766 +10775 4 2 28 1 2652 2949 3222 3708 +10776 4 2 28 1 613 3638 720 3885 +10777 4 2 28 1 3206 3403 2565 3560 +10778 4 2 28 1 650 2894 627 3333 +10779 4 2 28 1 2550 3497 3054 3758 +10780 4 2 28 1 2630 3145 3533 3750 +10781 4 2 28 1 1537 1650 1643 3298 +10782 4 2 28 1 2551 2959 3003 3401 +10783 4 2 28 1 639 3389 2923 3502 +10784 4 2 28 1 962 1126 3416 3902 +10785 4 2 28 1 2460 2461 2480 3210 +10786 4 2 28 1 654 3249 750 3421 +10787 4 2 28 1 2549 2572 2752 3585 +10788 4 2 28 1 801 2807 3121 3922 +10789 4 2 28 1 2721 3134 3424 3770 +10790 4 2 28 1 999 3070 1226 3921 +10791 4 2 28 1 2161 1992 1975 3415 +10792 4 2 28 1 714 591 582 3001 +10793 4 2 28 1 649 755 3261 3726 +10794 4 2 28 1 612 646 695 3221 +10795 4 2 28 1 2438 3657 3651 3884 +10796 4 2 28 1 2827 2976 2706 3372 +10797 4 2 28 1 2581 2857 2558 3235 +10798 4 2 28 1 1912 1911 1921 3237 +10799 4 2 28 1 1012 2867 1270 3556 +10800 4 2 28 1 2733 2759 2650 3047 +10801 4 2 28 1 537 2907 549 3077 +10802 4 2 28 1 198 1311 811 2931 +10803 4 2 28 1 985 966 3072 3435 +10804 4 2 28 1 2369 2413 3265 3482 +10805 4 2 28 1 2666 3265 3166 3482 +10806 4 2 28 1 3012 3181 1213 3473 +10807 4 2 28 1 3164 3737 2318 3889 +10808 4 2 28 1 2894 2999 650 3785 +10809 4 2 28 1 1346 2337 1572 3383 +10810 4 2 28 1 558 2905 557 3699 +10811 4 2 28 1 884 3762 3234 3816 +10812 4 2 28 1 2065 2904 1986 3803 +10813 4 2 28 1 2498 3370 2518 3545 +10814 4 2 28 1 1717 1524 1799 2750 +10815 4 2 28 1 2620 3238 2838 3687 +10816 4 2 28 1 2011 2166 2208 3084 +10817 4 2 28 1 2229 2143 2230 2851 +10818 4 2 28 1 938 3643 3331 3800 +10819 4 2 28 1 2663 3162 2915 3418 +10820 4 2 28 1 2753 3637 3051 3869 +10821 4 2 28 1 2690 3286 3132 3483 +10822 4 2 28 1 2596 2915 3529 3748 +10823 4 2 28 1 2542 3052 3028 3610 +10824 4 2 28 1 2555 2587 3358 3606 +10825 4 2 28 1 2368 3383 2414 3715 +10826 4 2 28 1 2477 2431 2456 3590 +10827 4 2 28 1 932 933 930 3240 +10828 4 2 28 1 1357 1358 1356 3601 +10829 4 2 28 1 2310 2312 2991 3685 +10830 4 2 28 1 329 339 491 3080 +10831 4 2 28 1 404 396 477 3086 +10832 4 2 28 1 1726 2856 1741 3779 +10833 4 2 28 1 1371 2892 3423 3478 +10834 4 2 28 1 961 1160 1030 3203 +10835 4 2 28 1 2103 2271 3261 3726 +10836 4 2 28 1 1803 3539 1519 3900 +10837 4 2 28 1 2300 3197 2299 3596 +10838 4 2 28 1 338 352 346 2985 +10839 4 2 28 1 2872 2930 2730 3343 +10840 4 2 28 1 915 1110 1111 2953 +10841 4 2 28 1 1561 1462 1562 3666 +10842 4 2 28 1 333 3120 445 3620 +10843 4 2 28 1 2745 3013 2744 3663 +10844 4 2 28 1 2222 2049 2154 3288 +10845 4 2 28 1 2067 1340 1829 3200 +10846 4 2 28 1 2381 2349 2350 3260 +10847 4 2 28 1 1088 1086 993 3114 +10848 4 2 28 1 1977 3212 2141 3518 +10849 4 2 28 1 1555 2616 1791 3358 +10850 4 2 28 1 1520 2797 1402 3279 +10851 4 2 28 1 1567 1632 1671 3135 +10852 4 2 28 1 1539 3033 1709 3470 +10853 4 2 28 1 2715 3151 3361 3761 +10854 4 2 28 1 2577 3472 2549 3585 +10855 4 2 28 1 2649 2749 2600 3443 +10856 4 2 28 1 1875 3282 1873 3541 +10857 4 2 28 1 401 497 457 3353 +10858 4 2 28 1 333 501 3120 3897 +10859 4 2 28 1 2658 2984 2747 3540 +10860 4 2 28 1 2116 529 671 3010 +10861 4 2 28 1 2632 3212 3006 3518 +10862 4 2 28 1 2378 2351 2387 2991 +10863 4 2 28 1 1445 1475 1758 2886 +10864 4 2 28 1 2465 3031 2456 3590 +10865 4 2 28 1 2566 3362 3202 3387 +10866 4 2 28 1 688 231 540 3100 +10867 4 2 28 1 2869 3832 3043 3919 +10868 4 2 28 1 1288 1314 1056 2914 +10869 4 2 28 1 2365 2362 2388 3149 +10870 4 2 28 1 2614 2898 3289 3406 +10871 4 2 28 1 2516 2517 2509 3545 +10872 4 2 28 1 2915 2968 2734 3630 +10873 4 2 28 1 1523 1539 1709 3470 +10874 4 2 28 1 3094 2814 3537 3837 +10875 4 2 28 1 2711 3485 3259 3813 +10876 4 2 28 1 2716 3226 2693 3340 +10877 4 2 28 1 2694 3160 2750 3577 +10878 4 2 28 1 1701 2907 1602 3815 +10879 4 2 28 1 2703 2851 2028 3371 +10880 4 2 28 1 2664 2669 2595 2920 +10881 4 2 28 1 2645 3490 2908 3567 +10882 4 2 28 1 1103 1193 1052 2950 +10883 4 2 28 1 2955 3445 1380 3534 +10884 4 2 28 1 2033 2035 2195 2909 +10885 4 2 28 1 2533 3312 2029 3931 +10886 4 2 28 1 2623 2735 2645 2908 +10887 4 2 28 1 2195 3267 2909 3541 +10888 4 2 28 1 696 2947 594 3743 +10889 4 2 28 1 1057 1099 1100 3227 +10890 4 2 28 1 2546 3444 3564 3722 +10891 4 2 28 1 2864 3440 2958 3489 +10892 4 2 28 1 1407 1414 1415 3179 +10893 4 2 28 1 462 320 2963 3126 +10894 4 2 28 1 2807 801 3121 3567 +10895 4 2 28 1 1505 1461 2623 3327 +10896 4 2 28 1 2700 3185 3075 3213 +10897 4 2 28 1 2006 2173 2213 3143 +10898 4 2 28 1 2769 3083 2619 3159 +10899 4 2 28 1 1399 3348 2996 3562 +10900 4 2 28 1 810 3121 2925 3298 +10901 4 2 28 1 3150 3666 2977 3784 +10902 4 2 28 1 2756 3521 2594 3531 +10903 4 2 28 1 2597 2789 3087 3114 +10904 4 2 28 1 2855 3533 3070 3750 +10905 4 2 28 1 657 3249 655 3839 +10906 4 2 28 1 2388 2395 2365 3149 +10907 4 2 28 1 1311 2931 2158 3116 +10908 4 2 28 1 2465 2456 2429 3590 +10909 4 2 28 1 2904 3192 1552 3437 +10910 4 2 28 1 2560 2792 3241 3326 +10911 4 2 28 1 905 2974 904 3870 +10912 4 2 28 1 1372 3503 3478 3735 +10913 4 2 28 1 2645 2925 3490 3567 +10914 4 2 28 1 2651 3218 3106 3354 +10915 4 2 28 1 2911 3123 2560 3326 +10916 4 2 28 1 2113 2251 2071 3168 +10917 4 2 28 1 2037 2830 3139 3733 +10918 4 2 28 1 1998 3461 3029 3462 +10919 4 2 28 1 2631 3400 2732 3750 +10920 4 2 28 1 936 2973 3019 3800 +10921 4 2 28 1 2864 3295 3288 3489 +10922 4 2 28 1 2545 2792 3241 3251 +10923 4 2 28 1 2909 3061 2775 3324 +10924 4 2 28 1 1992 1976 3415 3935 +10925 4 2 28 1 1726 2856 3268 3384 +10926 4 2 28 1 2944 3053 2990 3891 +10927 4 2 28 1 1878 1888 3337 3489 +10928 4 2 28 1 2425 3189 2476 3627 +10929 4 2 28 1 3289 3829 2898 3858 +10930 4 2 28 1 3248 3600 1011 3663 +10931 4 2 28 1 544 687 780 3007 +10932 4 2 28 1 903 904 2974 3870 +10933 4 2 28 1 1452 1454 3036 3539 +10934 4 2 28 1 752 2899 702 3389 +10935 4 2 28 1 2592 2742 2731 3035 +10936 4 2 28 1 3123 3326 2792 3390 +10937 4 2 28 1 817 3013 1190 3432 +10938 4 2 28 1 1022 2878 981 3203 +10939 4 2 28 1 2140 2206 2997 3393 +10940 4 2 28 1 2754 2659 2884 2947 +10941 4 2 28 1 1785 3231 1435 3379 +10942 4 2 28 1 3091 3559 2849 3653 +10943 4 2 28 1 442 3056 322 3681 +10944 4 2 28 1 2603 2774 2669 2913 +10945 4 2 28 1 3028 3396 2911 3903 +10946 4 2 28 1 1382 1385 1384 3534 +10947 4 2 28 1 2953 2976 2643 3167 +10948 4 2 28 1 1934 1933 2850 3557 +10949 4 2 28 1 2715 3132 3266 3830 +10950 4 2 28 1 2850 2871 2543 3557 +10951 4 2 28 1 1228 2929 1246 3479 +10952 4 2 28 1 2944 3522 3053 3891 +10953 4 2 28 1 1058 1314 3417 3659 +10954 4 2 28 1 1296 3335 3087 3436 +10955 4 2 28 1 2374 2366 2373 3071 +10956 4 2 28 1 2527 2528 3519 3644 +10957 4 2 28 1 788 1466 3150 3335 +10958 4 2 28 1 462 2963 475 3126 +10959 4 2 28 1 1108 1107 1135 3138 +10960 4 2 28 1 1934 2850 1932 3407 +10961 4 2 28 1 660 3510 775 3747 +10962 4 2 28 1 276 1323 479 3090 +10963 4 2 28 1 2561 2835 3165 3919 +10964 4 2 28 1 2174 3030 2031 3594 +10965 4 2 28 1 1933 1932 1934 2850 +10966 4 2 28 1 2040 3189 2174 3594 +10967 4 2 28 1 2685 3382 3425 3882 +10968 4 2 28 1 2045 3337 3480 3933 +10969 4 2 28 1 2056 2210 1999 2900 +10970 4 2 28 1 2388 3554 3311 3715 +10971 4 2 28 1 1181 2989 1135 3138 +10972 4 2 28 1 557 3089 2905 3614 +10973 4 2 28 1 612 631 633 3221 +10974 4 2 28 1 2800 2610 2848 3447 +10975 4 2 28 1 2541 2764 3507 3723 +10976 4 2 28 1 573 568 570 3287 +10977 4 2 28 1 1601 1522 3490 3491 +10978 4 2 28 1 1428 2822 1412 3932 +10979 4 2 28 1 2625 2901 2702 3461 +10980 4 2 28 1 2461 2417 2480 3210 +10981 4 2 28 1 2120 2885 2220 3313 +10982 4 2 28 1 1082 987 1080 3050 +10983 4 2 28 1 2752 3585 3552 3722 +10984 4 2 28 1 2119 2703 2014 3139 +10985 4 2 28 1 2806 3311 3149 3829 +10986 4 2 28 1 2638 2933 2888 3738 +10987 4 2 28 1 199 510 198 2931 +10988 4 2 28 1 1157 3648 3258 3762 +10989 4 2 28 1 1149 3572 2970 3862 +10990 4 2 28 1 2799 2859 3386 3435 +10991 4 2 28 1 2983 3304 2819 3798 +10992 4 2 28 1 2352 2355 3496 3861 +10993 4 2 28 1 2621 2863 2025 3405 +10994 4 2 28 1 634 635 3010 3578 +10995 4 2 28 1 2551 2961 3401 3668 +10996 4 2 28 1 594 596 595 2947 +10997 4 2 28 1 2742 2859 2592 3146 +10998 4 2 28 1 345 332 3605 3620 +10999 4 2 28 1 1197 3070 996 3880 +11000 4 2 28 1 1391 1565 1564 3281 +11001 4 2 28 1 849 2972 848 3887 +11002 4 2 28 1 2856 3779 2758 3780 +11003 4 2 28 1 2621 2578 2767 2863 +11004 4 2 28 1 769 2908 741 3768 +11005 4 2 28 1 1400 1445 1758 3833 +11006 4 2 28 1 3153 3424 2544 3852 +11007 4 2 28 1 2175 1934 1932 3407 +11008 4 2 28 1 2435 2433 2434 3575 +11009 4 2 28 1 2911 2598 3396 3493 +11010 4 2 28 1 627 2894 650 3509 +11011 4 2 28 1 1629 3281 2790 3838 +11012 4 2 28 1 1629 2790 1459 3838 +11013 4 2 28 1 2548 2971 2581 3235 +11014 4 2 28 1 796 3548 209 3556 +11015 4 2 28 1 219 218 685 3146 +11016 4 2 28 1 2313 2314 2318 3737 +11017 4 2 28 1 317 449 320 3082 +11018 4 2 28 1 2678 3043 3165 3919 +11019 4 2 28 1 1428 1433 2822 3932 +11020 4 2 28 1 2551 2959 3401 3819 +11021 4 2 28 1 2660 3236 2696 3888 +11022 4 2 28 1 1544 1594 1533 2858 +11023 4 2 28 1 320 455 315 3082 +11024 4 2 28 1 915 2953 1123 3513 +11025 4 2 28 1 932 2993 928 3459 +11026 4 2 28 1 2790 3562 3179 3855 +11027 4 2 28 1 675 673 674 2900 +11028 4 2 28 1 2816 3489 3295 3710 +11029 4 2 28 1 2678 3117 3043 3919 +11030 4 2 28 1 1380 2955 1378 3751 +11031 4 2 28 1 939 3862 3459 3886 +11032 4 2 28 1 917 2975 1206 3530 +11033 4 2 28 1 1069 2878 1068 3439 +11034 4 2 28 1 1522 3263 2645 3842 +11035 4 2 28 1 1932 1933 1930 2850 +11036 4 2 28 1 2544 2935 3444 3852 +11037 4 2 28 1 1338 1827 3549 3746 +11038 4 2 28 1 989 3256 3013 3840 +11039 4 2 28 1 529 683 730 3010 +11040 4 2 28 1 821 878 1195 3256 +11041 4 2 28 1 3404 3458 1863 3631 +11042 4 2 28 1 2617 3419 2945 3711 +11043 4 2 28 1 2638 3107 2744 3738 +11044 4 2 28 1 845 1147 900 3196 +11045 4 2 28 1 912 1004 3321 3524 +11046 4 2 28 1 2280 3110 2084 3680 +11047 4 2 28 1 1663 1525 1732 3577 +11048 4 2 28 1 3095 3319 2683 3637 +11049 4 2 28 1 2764 3404 2853 3631 +11050 4 2 28 1 532 3076 770 3752 +11051 4 2 28 1 2293 2323 2330 3725 +11052 4 2 28 1 2539 2962 3635 3895 +11053 4 2 28 1 2613 2564 3039 3180 +11054 4 2 28 1 1976 3275 1918 3415 +11055 4 2 28 1 2567 3724 3308 3782 +11056 4 2 28 1 1477 3160 1479 3577 +11057 4 2 28 1 1390 3215 1388 3348 +11058 4 2 28 1 2543 3428 2761 3636 +11059 4 2 28 1 2617 3172 3153 3711 +11060 4 2 28 1 1385 2957 1384 3534 +11061 4 2 28 1 1567 1753 3788 3932 +11062 4 2 28 1 2635 2709 2691 3769 +11063 4 2 28 1 2003 2241 2693 3448 +11064 4 2 28 1 1376 3033 1734 3735 +11065 4 2 28 1 447 3804 3794 3805 +11066 4 2 28 1 2556 3610 2911 3903 +11067 4 2 28 1 1157 3258 3648 3650 +11068 4 2 28 1 2590 3177 2636 3251 +11069 4 2 28 1 893 883 2965 3826 +11070 4 2 28 1 2685 3188 2790 3883 +11071 4 2 28 1 440 3074 439 3789 +11072 4 2 28 1 1990 2288 2583 2680 +11073 4 2 28 1 1654 1648 2647 3362 +11074 4 2 28 1 2928 3367 2464 3766 +11075 4 2 28 1 1224 1279 1005 3291 +11076 4 2 28 1 2611 3662 3543 3928 +11077 4 2 28 1 1998 3029 2178 3462 +11078 4 2 28 1 3289 3406 2898 3829 +11079 4 2 28 1 454 462 449 2963 +11080 4 2 28 1 1031 1168 1191 2977 +11081 4 2 28 1 2367 2357 2358 3841 +11082 4 2 28 1 2734 3247 3094 3537 +11083 4 2 28 1 2626 3095 2903 3454 +11084 4 2 28 1 2784 3112 3471 3708 +11085 4 2 28 1 1968 3293 2606 3560 +11086 4 2 28 1 316 317 315 3082 +11087 4 2 28 1 2699 2605 2755 2923 +11088 4 2 28 1 2545 2738 3668 3906 +11089 4 2 28 1 2562 3299 3183 3414 +11090 4 2 28 1 945 3435 3144 3834 +11091 4 2 28 1 1680 1475 1517 3375 +11092 4 2 28 1 2028 2851 2230 3371 +11093 4 2 28 1 2378 2399 3482 3692 +11094 4 2 28 1 2572 3378 2752 3552 +11095 4 2 28 1 1741 2856 1530 3779 +11096 4 2 28 1 3068 2575 3718 3727 +11097 4 2 28 1 2157 2080 3332 3929 +11098 4 2 28 1 2648 3544 3515 3848 +11099 4 2 28 1 1010 3248 3107 3600 +11100 4 2 28 1 2553 2792 3360 3399 +11101 4 2 28 1 2334 2426 2297 3598 +11102 4 2 28 1 648 3191 649 3578 +11103 4 2 28 1 2579 3507 2699 3926 +11104 4 2 28 1 2131 2154 3288 3489 +11105 4 2 28 1 2751 3758 3324 3912 +11106 4 2 28 1 2553 3250 2902 3360 +11107 4 2 28 1 1428 1412 1433 3932 +11108 4 2 28 1 1118 3535 3130 3612 +11109 4 2 28 1 2177 3041 3032 3518 +11110 4 2 28 1 1568 3215 3348 3562 +11111 4 2 28 1 2796 3059 3571 3760 +11112 4 2 28 1 1205 206 205 3274 +11113 4 2 28 1 2772 3211 3067 3465 +11114 4 2 28 1 2082 3086 2646 3168 +11115 4 2 28 1 570 575 574 3287 +11116 4 2 28 1 2616 2640 2778 2779 +11117 4 2 28 1 2271 2701 3261 3726 +11118 4 2 28 1 1397 1393 1396 3127 +11119 4 2 28 1 1760 3362 2572 3387 +11120 4 2 28 1 2066 2876 3462 3739 +11121 4 2 28 1 374 372 371 3126 +11122 4 2 28 1 1866 1864 1865 3404 +11123 4 2 28 1 3083 3159 2832 3823 +11124 4 2 28 1 452 382 365 3290 +11125 4 2 28 1 2552 3029 2764 3457 +11126 4 2 28 1 2245 3010 2657 3356 +11127 4 2 28 1 2995 3199 3098 3444 +11128 4 2 28 1 2561 3740 3832 3919 +11129 4 2 28 1 3117 2898 3315 3829 +11130 4 2 28 1 1108 2868 1129 3520 +11131 4 2 28 1 2761 3202 2943 3636 +11132 4 2 28 1 1086 987 967 3114 +11133 4 2 28 1 1660 1798 1331 2877 +11134 4 2 28 1 1291 785 1061 3018 +11135 4 2 28 1 3458 3462 2876 3739 +11136 4 2 28 1 1827 2237 3549 3746 +11137 4 2 28 1 1211 3046 1249 3611 +11138 4 2 28 1 3072 3435 2725 3512 +11139 4 2 28 1 2595 3264 2664 3686 +11140 4 2 28 1 2941 3716 3597 3860 +11141 4 2 28 1 639 2923 749 3502 +11142 4 2 28 1 2508 2510 3297 3602 +11143 4 2 28 1 1694 3577 3160 3900 +11144 4 2 28 1 2732 2793 2631 3750 +11145 4 2 28 1 2096 673 264 533 +11146 4 2 28 1 2439 2466 2440 3657 +11147 4 2 28 1 1547 1336 1542 2979 +11148 4 2 28 1 1618 1497 1699 2838 +11149 4 2 28 1 1249 1245 1041 3046 +11150 4 2 28 1 1817 2134 2246 3341 +11151 4 2 28 1 2066 2278 1860 3739 +11152 4 2 28 1 2787 2612 3181 3182 +11153 4 2 28 1 1993 2668 2182 3118 +11154 4 2 28 1 2050 2931 2172 3101 +11155 4 2 28 1 2937 3182 795 3704 +11156 4 2 28 1 1921 1925 1922 3293 +11157 4 2 28 1 1841 2535 2256 3370 +11158 4 2 28 1 1922 1942 1912 2870 +11159 4 2 28 1 2057 2056 2055 2701 +11160 4 2 28 1 1057 1048 1084 3227 +11161 4 2 28 1 929 928 930 2993 +11162 4 2 28 1 332 444 3344 3620 +11163 4 2 28 1 2557 2544 3190 3758 +11164 4 2 28 1 2659 2774 2603 2897 +11165 4 2 28 1 2551 3401 3003 3668 +11166 4 2 28 1 364 365 363 3290 +11167 4 2 28 1 2580 2558 3264 3801 +11168 4 2 28 1 2621 2863 2767 3097 +11169 4 2 28 1 2599 2628 2744 2745 +11170 4 2 28 1 2122 3210 3106 3935 +11171 4 2 28 1 2908 3008 741 3815 +11172 4 2 28 1 1708 1525 1663 3170 +11173 4 2 28 1 2815 3234 2989 3816 +11174 4 2 28 1 2559 2655 3239 3552 +11175 4 2 28 1 2676 3064 2951 3221 +11176 4 2 28 1 1726 3268 1488 3384 +11177 4 2 28 1 2602 2851 2760 3371 +11178 4 2 28 1 2703 2610 2848 3774 +11179 4 2 28 1 794 3303 2882 3663 +11180 4 2 28 1 2684 2583 2940 2985 +11181 4 2 28 1 1475 3375 2886 3706 +11182 4 2 28 1 2356 2389 2359 3841 +11183 4 2 28 1 2724 2749 2649 3196 +11184 4 2 28 1 3377 3448 1969 3451 +11185 4 2 28 1 2300 2324 2303 3049 +11186 4 2 28 1 2118 2298 2335 3040 +11187 4 2 28 1 468 371 456 3126 +11188 4 2 28 1 2721 2791 3363 3770 +11189 4 2 28 1 3121 3263 2925 3298 +11190 4 2 28 1 2878 1022 3198 3203 +11191 4 2 28 1 2574 2694 2674 3160 +11192 4 2 28 1 2707 3111 3067 3702 +11193 4 2 28 1 2600 3122 2724 3536 +11194 4 2 28 1 1807 3202 3192 3300 +11195 4 2 28 1 1025 2950 1052 3508 +11196 4 2 28 1 2720 3078 3901 3910 +11197 4 2 28 1 2578 2668 2863 3688 +11198 4 2 28 1 1802 2520 1369 3780 +11199 4 2 28 1 1848 3269 2823 3601 +11200 4 2 28 1 2846 1969 3448 3451 +11201 4 2 28 1 942 3016 3643 3792 +11202 4 2 28 1 1893 2043 1910 3154 +11203 4 2 28 1 304 3639 458 3867 +11204 4 2 28 1 2583 2687 2684 3403 +11205 4 2 28 1 2575 3266 3132 3830 +11206 4 2 28 1 2589 3448 2846 3523 +11207 4 2 28 1 1826 3106 2122 3210 +11208 4 2 28 1 932 930 2993 3240 +11209 4 2 28 1 283 2987 1813 3332 +11210 4 2 28 1 2353 2354 2352 2949 +11211 4 2 28 1 2761 3162 1432 3163 +11212 4 2 28 1 450 312 3568 3805 +11213 4 2 28 1 2838 3231 1497 3238 +11214 4 2 28 1 227 228 794 3303 +11215 4 2 28 1 1758 2886 1475 3529 +11216 4 2 28 1 862 1196 860 3224 +11217 4 2 28 1 739 539 775 3118 +11218 4 2 28 1 1848 2196 2823 3269 +11219 4 2 28 1 2684 2985 2940 3056 +11220 4 2 28 1 2699 3507 2579 3613 +11221 4 2 28 1 1302 1072 798 3115 +11222 4 2 28 1 1835 3218 2463 3653 +11223 4 2 28 1 2651 3295 3185 3468 +11224 4 2 28 1 2968 3630 3163 3658 +11225 4 2 28 1 1522 2645 3491 3842 +11226 4 2 28 1 2482 2463 1835 3218 +11227 4 2 28 1 2780 3216 3597 3716 +11228 4 2 28 1 630 666 3421 3839 +11229 4 2 28 1 785 2136 1166 3393 +11230 4 2 28 1 2797 3786 2569 3903 +11231 4 2 28 1 1251 3048 1003 3905 +11232 4 2 28 1 795 2937 1278 3182 +11233 4 2 28 1 2502 3581 2982 3778 +11234 4 2 28 1 873 890 875 3209 +11235 4 2 28 1 2627 2825 2852 3455 +11236 4 2 28 1 2675 2882 2735 3249 +11237 4 2 28 1 2816 2720 3468 3480 +11238 4 2 28 1 2606 2739 2733 3293 +11239 4 2 28 1 2659 2884 2714 3430 +11240 4 2 28 1 2694 2695 2946 3380 +11241 4 2 28 1 1849 2007 1851 3525 +11242 4 2 28 1 2222 3288 2154 3354 +11243 4 2 28 1 2741 3247 3094 3685 +11244 4 2 28 1 2314 2318 3737 3889 +11245 4 2 28 1 1528 1529 1527 3384 +11246 4 2 28 1 2996 3562 3348 3570 +11247 4 2 28 1 2183 3004 2092 3527 +11248 4 2 28 1 1424 3136 1718 3584 +11249 4 2 28 1 2677 3114 3050 3782 +11250 4 2 28 1 2541 3673 2889 3799 +11251 4 2 28 1 2926 3334 3219 3812 +11252 4 2 28 1 2865 3503 2861 3779 +11253 4 2 28 1 1259 226 227 3303 +11254 4 2 28 1 2562 3123 2600 3536 +11255 4 2 28 1 1261 1247 1028 2988 +11256 4 2 28 1 1532 1542 1533 3208 +11257 4 2 28 1 1276 1278 1050 3182 +11258 4 2 28 1 2041 2259 2871 3485 +11259 4 2 28 1 2721 3425 2935 3576 +11260 4 2 28 1 2854 3070 2732 3750 +11261 4 2 28 1 771 3249 228 3303 +11262 4 2 28 1 2555 3192 2904 3437 +11263 4 2 28 1 685 3342 3146 3502 +11264 4 2 28 1 1288 2914 1056 3659 +11265 4 2 28 1 323 325 324 3099 +11266 4 2 28 1 2311 2294 2332 3069 +11267 4 2 28 1 2586 2782 2727 2921 +11268 4 2 28 1 1006 940 1162 2973 +11269 4 2 28 1 2997 3229 1284 3393 +11270 4 2 28 1 2721 3363 3134 3770 +11271 4 2 28 1 2630 2872 3329 3411 +11272 4 2 28 1 1430 2752 1446 3379 +11273 4 2 28 1 2732 2631 3431 3566 +11274 4 2 28 1 831 3343 3411 3894 +11275 4 2 28 1 2721 3172 3153 3363 +11276 4 2 28 1 546 3490 2925 3567 +11277 4 2 28 1 2670 3597 3716 3860 +11278 4 2 28 1 1146 3452 3070 3874 +11279 4 2 28 1 2708 3306 3103 3582 +11280 4 2 28 1 1227 1214 910 3321 +11281 4 2 28 1 2580 3264 2595 3801 +11282 4 2 28 1 3350 3659 2919 3811 +11283 4 2 28 1 2013 2011 3084 3733 +11284 4 2 28 1 919 918 916 2976 +11285 4 2 28 1 217 1238 3512 3871 +11286 4 2 28 1 2297 2322 2325 3031 +11287 4 2 28 1 2691 3224 2748 3487 +11288 4 2 28 1 1666 1330 1154 3436 +11289 4 2 28 1 3093 2728 3820 3899 +11290 4 2 28 1 942 3016 1008 3643 +11291 4 2 28 1 2457 2424 2524 3586 +11292 4 2 28 1 1313 3139 3283 3349 +11293 4 2 28 1 2240 2265 2157 2739 +11294 4 2 28 1 2416 1835 2463 3653 +11295 4 2 28 1 1435 2838 1618 3171 +11296 4 2 28 1 811 1277 1280 3116 +11297 4 2 28 1 2687 2837 2606 2987 +11298 4 2 28 1 2562 3390 2792 3443 +11299 4 2 28 1 2660 2696 3236 3814 +11300 4 2 28 1 3265 3482 2949 3861 +11301 4 2 28 1 1291 1941 785 3018 +11302 4 2 28 1 1834 772 541 3064 +11303 4 2 28 1 374 2880 492 3126 +11304 4 2 28 1 2909 2718 3267 3912 +11305 4 2 28 1 2632 3041 3220 3658 +11306 4 2 28 1 2792 3399 2553 3466 +11307 4 2 28 1 2472 2452 2490 3627 +11308 4 2 28 1 3027 3514 3067 3713 +11309 4 2 28 1 200 410 286 3655 +11310 4 2 28 1 1005 3057 960 3656 +11311 4 2 28 1 2781 3161 2941 3657 +11312 4 2 28 1 1561 1781 1597 3335 +11313 4 2 28 1 1438 1424 3327 3904 +11314 4 2 28 1 3112 3537 3471 3837 +11315 4 2 28 1 2979 2395 3554 3914 +11316 4 2 28 1 2630 3390 2631 3750 +11317 4 2 28 1 2259 3712 2207 3827 +11318 4 2 28 1 1283 786 3194 3226 +11319 4 2 28 1 2573 3637 3079 3869 +11320 4 2 28 1 2354 2369 3265 3482 +11321 4 2 28 1 1980 3312 2184 3640 +11322 4 2 28 1 2219 1984 2288 2680 +11323 4 2 28 1 2185 2033 1909 3324 +11324 4 2 28 1 2967 2785 3402 3740 +11325 4 2 28 1 1960 1308 1252 3223 +11326 4 2 28 1 1861 3458 3404 3739 +11327 4 2 28 1 2732 3145 2793 3750 +11328 4 2 28 1 354 3764 3678 3765 +11329 4 2 28 1 1450 1445 3214 3706 +11330 4 2 28 1 1518 2763 1519 3539 +11331 4 2 28 1 1568 3215 1390 3348 +11332 4 2 28 1 3053 3136 1444 3904 +11333 4 2 28 1 1426 1459 1642 3179 +11334 4 2 28 1 322 323 319 3099 +11335 4 2 28 1 2113 2251 3168 3433 +11336 4 2 28 1 2666 3166 2917 3482 +11337 4 2 28 1 624 2863 700 3097 +11338 4 2 28 1 2731 2866 2605 2923 +11339 4 2 28 1 2578 2959 3507 3613 +11340 4 2 28 1 1441 3036 1506 3546 +11341 4 2 28 1 1790 1539 1702 3470 +11342 4 2 28 1 3006 3212 2690 3275 +11343 4 2 28 1 3125 3383 1346 3571 +11344 4 2 28 1 2652 3471 3112 3708 +11345 4 2 28 1 2874 3066 2626 3454 +11346 4 2 28 1 2559 3564 3552 3722 +11347 4 2 28 1 2507 2510 3602 3909 +11348 4 2 28 1 2325 2322 2301 3031 +11349 4 2 28 1 1118 3130 1268 3808 +11350 4 2 28 1 2622 2662 2826 3460 +11351 4 2 28 1 612 3540 3221 3619 +11352 4 2 28 1 3117 3771 2898 3858 +11353 4 2 28 1 1558 1678 2894 3486 +11354 4 2 28 1 2568 2657 3269 3525 +11355 4 2 28 1 2119 2028 2014 2703 +11356 4 2 28 1 2440 2466 2443 3304 +11357 4 2 28 1 2390 2337 1346 3383 +11358 4 2 28 1 2933 2744 3600 3738 +11359 4 2 28 1 2395 2365 3149 3914 +11360 4 2 28 1 2951 3221 3064 3499 +11361 4 2 28 1 2641 3110 2718 3906 +11362 4 2 28 1 1847 1845 2181 3064 +11363 4 2 28 1 2610 2950 2800 3763 +11364 4 2 28 1 2775 3324 2966 3758 +11365 4 2 28 1 524 413 3844 3929 +11366 4 2 28 1 576 2912 712 3701 +11367 4 2 28 1 1029 1260 1244 3158 +11368 4 2 28 1 319 324 449 3099 +11369 4 2 28 1 1665 1690 1455 3436 +11370 4 2 28 1 2463 3218 2479 3653 +11371 4 2 28 1 1550 1429 1738 3437 +11372 4 2 28 1 2234 3601 2823 3746 +11373 4 2 28 1 2467 2446 2437 3063 +11374 4 2 28 1 2543 2968 3767 3813 +11375 4 2 28 1 2819 3304 3271 3798 +11376 4 2 28 1 2545 3242 2889 3906 +11377 4 2 28 1 2731 2899 2699 3613 +11378 4 2 28 1 2976 3167 919 3372 +11379 4 2 28 1 2874 3282 2641 3347 +11380 4 2 28 1 1360 1365 1368 3157 +11381 4 2 28 1 2541 2857 3507 3799 +11382 4 2 28 1 1866 3404 2853 3527 +11383 4 2 28 1 2096 673 533 3096 +11384 4 2 28 1 2696 3033 2607 3814 +11385 4 2 28 1 3068 3222 2784 3471 +11386 4 2 28 1 3075 3095 2573 3866 +11387 4 2 28 1 2559 3171 2838 3379 +11388 4 2 28 1 950 1132 953 3014 +11389 4 2 28 1 1155 3018 3325 3809 +11390 4 2 28 1 1923 3180 2961 3652 +11391 4 2 28 1 2352 2949 2354 3861 +11392 4 2 28 1 2167 1957 3078 3910 +11393 4 2 28 1 2870 3206 2550 3896 +11394 4 2 28 1 2455 2424 2457 3586 +11395 4 2 28 1 2686 2918 1651 3676 +11396 4 2 28 1 2616 2736 2647 3062 +11397 4 2 28 1 2678 3165 3117 3919 +11398 4 2 28 1 1555 2737 2616 3358 +11399 4 2 28 1 1692 3542 3501 3754 +11400 4 2 28 1 2512 3422 3797 3909 +11401 4 2 28 1 1201 2826 3284 3556 +11402 4 2 28 1 2628 3156 2569 3786 +11403 4 2 28 1 1169 1176 1172 3005 +11404 4 2 28 1 826 825 824 3124 +11405 4 2 28 1 211 420 2916 3504 +11406 4 2 28 1 241 1630 681 668 +11407 4 2 28 1 1733 1741 1530 3779 +11408 4 2 28 1 2596 3364 2886 3529 +11409 4 2 28 1 2110 3084 2830 3733 +11410 4 2 28 1 936 931 937 3019 +11411 4 2 28 1 971 3276 3664 3902 +11412 4 2 28 1 1417 1703 1432 3162 +11413 4 2 28 1 2585 2846 3448 3851 +11414 4 2 28 1 412 286 411 3655 +11415 4 2 28 1 1878 1883 1888 3489 +11416 4 2 28 1 2124 1993 2182 3118 +11417 4 2 28 1 2561 3151 2960 3760 +11418 4 2 28 1 1447 1439 1444 3136 +11419 4 2 28 1 2718 3134 3000 3267 +11420 4 2 28 1 1267 3130 1118 3808 +11421 4 2 28 1 398 275 167 1646 +11422 4 2 28 1 2827 3018 2722 3377 +11423 4 2 28 1 972 971 1186 3294 +11424 4 2 28 1 2835 3682 3195 3820 +11425 4 2 28 1 2794 3330 3055 3830 +11426 4 2 28 1 2040 3627 3594 3910 +11427 4 2 28 1 656 3839 747 3930 +11428 4 2 28 1 1878 1874 1875 3828 +11429 4 2 28 1 420 210 2916 3548 +11430 4 2 28 1 499 390 389 3109 +11431 4 2 28 1 2004 805 2147 3669 +11432 4 2 28 1 1563 1391 1564 2980 +11433 4 2 28 1 3075 3207 2683 3345 +11434 4 2 28 1 2201 2870 1942 3413 +11435 4 2 28 1 2227 2904 2062 3772 +11436 4 2 28 1 1328 1729 1102 3083 +11437 4 2 28 1 288 3314 3017 3558 +11438 4 2 28 1 1665 3176 1690 3436 +11439 4 2 28 1 357 358 359 3270 +11440 4 2 28 1 1730 1346 3383 3571 +11441 4 2 28 1 2593 2769 2832 3328 +11442 4 2 28 1 944 3240 3144 3792 +11443 4 2 28 1 1902 2845 1913 3451 +11444 4 2 28 1 2235 1977 1917 3212 +11445 4 2 28 1 2673 2957 3534 3757 +11446 4 2 28 1 2744 2812 2745 3248 +11447 4 2 28 1 2424 2499 3586 3644 +11448 4 2 28 1 3105 2829 3515 3814 +11449 4 2 28 1 2803 3284 1018 3704 +11450 4 2 28 1 468 462 374 3126 +11451 4 2 28 1 2531 2497 2512 3797 +11452 4 2 28 1 2555 2583 2640 3583 +11453 4 2 28 1 2268 2126 1814 3101 +11454 4 2 28 1 2822 2936 3546 3845 +11455 4 2 28 1 2652 3222 3471 3708 +11456 4 2 28 1 2593 3334 2770 3420 +11457 4 2 28 1 872 871 2921 3762 +11458 4 2 28 1 1752 1337 1796 3166 +11459 4 2 28 1 2456 3031 2426 3598 +11460 4 2 28 1 1180 1181 877 2989 +11461 4 2 28 1 2894 650 3044 3785 +11462 4 2 28 1 2206 2001 2997 3856 +11463 4 2 28 1 2066 3458 2278 3739 +11464 4 2 28 1 1284 2997 1081 3572 +11465 4 2 28 1 1400 1758 1693 3254 +11466 4 2 28 1 2641 3347 3282 3680 +11467 4 2 28 1 1346 1639 1740 3571 +11468 4 2 28 1 2555 2587 3142 3803 +11469 4 2 28 1 1574 2927 1368 3569 +11470 4 2 28 1 2651 3288 2864 3295 +11471 4 2 28 1 2865 3211 3033 3814 +11472 4 2 28 1 737 671 529 3010 +11473 4 2 28 1 1270 2867 1012 3563 +11474 4 2 28 1 566 2913 701 3700 +11475 4 2 28 1 1229 1042 1245 3296 +11476 4 2 28 1 374 475 2880 3126 +11477 4 2 28 1 640 2923 623 3201 +11478 4 2 28 1 1080 1030 3050 3784 +11479 4 2 28 1 2667 3026 2916 3535 +11480 4 2 28 1 1946 2092 1876 3004 +11481 4 2 28 1 2625 2621 2901 3461 +11482 4 2 28 1 2658 2657 3525 3531 +11483 4 2 28 1 1655 2904 1552 3437 +11484 4 2 28 1 2935 2544 3424 3852 +11485 4 2 28 1 3127 2797 3610 3788 +11486 4 2 28 1 1369 1370 1557 3503 +11487 4 2 28 1 2504 3581 2505 3778 +11488 4 2 28 1 2753 3346 3178 3869 +11489 4 2 28 1 2597 2852 2825 3455 +11490 4 2 28 1 2519 2527 2513 3246 +11491 4 2 28 1 1342 2318 1570 3164 +11492 4 2 28 1 2902 2585 3154 3250 +11493 4 2 28 1 895 894 883 2965 +11494 4 2 28 1 2564 2845 3180 3742 +11495 4 2 28 1 3649 3848 2541 3895 +11496 4 2 28 1 2630 2872 2855 3533 +11497 4 2 28 1 1973 1978 1972 3528 +11498 4 2 28 1 2546 2935 3058 3188 +11499 4 2 28 1 2670 2941 3597 3860 +11500 4 2 28 1 2313 2306 2307 3094 +11501 4 2 28 1 1537 3298 1643 3823 +11502 4 2 28 1 624 700 653 3097 +11503 4 2 28 1 2763 3036 2674 3900 +11504 4 2 28 1 2604 2765 2724 2811 +11505 4 2 28 1 2652 3112 3481 3708 +11506 4 2 28 1 3310 3446 2942 3618 +11507 4 2 28 1 2718 2909 3153 3912 +11508 4 2 28 1 2988 3671 3225 3694 +11509 4 2 28 1 3197 3367 2708 3590 +11510 4 2 28 1 754 2927 695 3221 +11511 4 2 28 1 2170 2195 2209 3541 +11512 4 2 28 1 2831 2871 3557 3813 +11513 4 2 28 1 2025 2275 2104 2863 +11514 4 2 28 1 1809 2108 2218 3313 +11515 4 2 28 1 2693 3340 2003 3448 +11516 4 2 28 1 2958 3286 3193 3440 +11517 4 2 28 1 2454 2443 2455 3304 +11518 4 2 28 1 936 3019 2973 3452 +11519 4 2 28 1 1560 1727 1513 2682 +11520 4 2 28 1 642 2899 752 3510 +11521 4 2 28 1 2979 2678 3253 3315 +11522 4 2 28 1 2572 3378 1760 3387 +11523 4 2 28 1 1484 3542 1789 3571 +11524 4 2 28 1 2465 2419 29 2291 +11525 4 2 28 1 1067 3072 1014 3572 +11526 4 2 28 1 2104 2863 2668 3688 +11527 4 2 28 1 299 297 3062 3500 +11528 4 2 28 1 2437 2446 2439 3657 +11529 4 2 28 1 1217 3431 3145 3538 +11530 4 2 28 1 3028 3156 2599 3903 +11531 4 2 28 1 3360 2586 3399 3443 +11532 4 2 28 1 1053 3226 3305 3669 +11533 4 2 28 1 751 648 3578 3638 +11534 4 2 28 1 2903 3172 2777 3711 +11535 4 2 28 1 1648 1685 1473 3362 +11536 4 2 28 1 1384 1385 1386 2957 +11537 4 2 28 1 2752 3552 3379 3564 +11538 4 2 28 1 2599 3156 2628 3420 +11539 4 2 28 1 1187 3434 3258 3650 +11540 4 2 28 1 1041 3046 1042 3473 +11541 4 2 28 1 935 940 941 3452 +11542 4 2 28 1 1283 3226 3194 3729 +11543 4 2 28 1 399 276 479 3090 +11544 4 2 28 1 2524 2493 72 2457 +11545 4 2 28 1 886 2992 881 3563 +11546 4 2 28 1 2584 3098 2577 3472 +11547 4 2 28 1 1574 1356 1358 3007 +11548 4 2 28 1 2816 2720 3480 3592 +11549 4 2 28 1 3052 3127 2710 3382 +11550 4 2 28 1 690 1321 239 1621 +11551 4 2 28 1 2887 3046 2766 3473 +11552 4 2 28 1 2562 2792 3399 3443 +11553 4 2 28 1 2061 2065 1828 2904 +11554 4 2 28 1 1732 1519 3176 3900 +11555 4 2 28 1 2840 3246 2983 3778 +11556 4 2 28 1 2562 3414 2604 3928 +11557 4 2 28 1 2205 1989 2150 3878 +11558 4 2 28 1 2120 2680 1990 2885 +11559 4 2 28 1 826 824 2969 3124 +11560 4 2 28 1 1137 1190 989 3013 +11561 4 2 28 1 2843 3501 3348 3833 +11562 4 2 28 1 2629 3285 3063 3609 +11563 4 2 28 1 2707 3602 3108 3703 +11564 4 2 28 1 2996 3020 2743 3748 +11565 4 2 28 1 2603 2669 2774 3801 +11566 4 2 28 1 1782 1623 3486 3891 +11567 4 2 28 1 1773 3317 2824 3549 +11568 4 2 28 1 2170 1873 1877 3541 +11569 4 2 28 1 3297 3797 2679 3909 +11570 4 2 28 1 1511 1651 1614 2918 +11571 4 2 28 1 1188 3380 3245 3811 +11572 4 2 28 1 1984 2288 2583 3142 +11573 4 2 28 1 2695 3455 3122 3916 +11574 4 2 28 1 325 3099 323 3796 +11575 4 2 28 1 940 3452 2973 3831 +11576 4 2 28 1 518 3047 2844 3353 +11577 4 2 28 1 2283 1954 1955 3373 +11578 4 2 28 1 1170 3005 1172 3632 +11579 4 2 28 1 417 524 474 2998 +11580 4 2 28 1 1289 1313 790 3139 +11581 4 2 28 1 2541 3236 2879 3895 +11582 4 2 28 1 418 195 289 2080 +11583 4 2 28 1 2858 3208 3253 3315 +11584 4 2 28 1 2396 2340 2407 3554 +11585 4 2 28 1 2672 3237 2602 3497 +11586 4 2 28 1 1367 2824 1366 3549 +11587 4 2 28 1 1705 1628 1648 2647 +11588 4 2 28 1 358 3679 3270 3764 +11589 4 2 28 1 1844 1845 1838 3388 +11590 4 2 28 1 597 2984 602 3619 +11591 4 2 28 1 2816 3480 3337 3933 +11592 4 2 28 1 1845 3388 2676 3601 +11593 4 2 28 1 2560 3326 3123 3390 +11594 4 2 28 1 2785 3352 2967 3841 +11595 4 2 28 1 2573 3213 3079 3637 +11596 4 2 28 1 2630 3329 2855 3411 +11597 4 2 28 1 3245 3410 1085 3811 +11598 4 2 28 1 938 943 975 3331 +11599 4 2 28 1 2627 2597 2852 3308 +11600 4 2 28 1 927 3459 3874 3880 +11601 4 2 28 1 2846 3448 3377 3451 +11602 4 2 28 1 3222 3471 3068 3582 +11603 4 2 28 1 991 988 1028 3144 +11604 4 2 28 1 2685 3882 3188 3883 +11605 4 2 28 1 1913 3180 3039 3742 +11606 4 2 28 1 2659 2603 2714 2897 +11607 4 2 28 1 3103 3306 3049 3873 +11608 4 2 28 1 2023 1985 1984 3802 +11609 4 2 28 1 2608 2958 3286 3711 +11610 4 2 28 1 2960 3151 2692 3760 +11611 4 2 28 1 2803 2937 2844 3182 +11612 4 2 28 1 602 2984 589 3540 +11613 4 2 28 1 2540 2935 3425 3576 +11614 4 2 28 1 1296 806 1088 3335 +11615 4 2 28 1 2561 3412 3023 3740 +11616 4 2 28 1 2775 2870 2550 3758 +11617 4 2 28 1 626 636 625 3044 +11618 4 2 28 1 2617 2945 3419 3488 +11619 4 2 28 1 3058 3724 2705 3731 +11620 4 2 28 1 935 3791 3452 3874 +11621 4 2 28 1 1073 1090 1063 3173 +11622 4 2 28 1 3028 3156 2570 3623 +11623 4 2 28 1 2660 3515 2865 3814 +11624 4 2 28 1 2545 3137 3242 3668 +11625 4 2 28 1 689 688 2908 3490 +11626 4 2 28 1 2764 3458 3404 3631 +11627 4 2 28 1 740 3064 3007 3221 +11628 4 2 28 1 1984 2583 2680 3142 +11629 4 2 28 1 2955 3445 2673 3846 +11630 4 2 28 1 1950 1955 1954 3755 +11631 4 2 28 1 2456 2465 2426 3031 +11632 4 2 28 1 2626 3454 3066 3592 +11633 4 2 28 1 1376 1377 2956 3735 +11634 4 2 28 1 2641 2853 2962 3690 +11635 4 2 28 1 2636 2970 2613 3705 +11636 4 2 28 1 2593 2770 2628 3786 +11637 4 2 28 1 2882 3013 1136 3663 +11638 4 2 28 1 321 3681 318 3789 +11639 4 2 28 1 1998 1997 3029 3405 +11640 4 2 28 1 2626 3051 3095 3592 +11641 4 2 28 1 2597 3036 2763 3539 +11642 4 2 28 1 2907 2908 2623 3491 +11643 4 2 28 1 2927 3007 2676 3221 +11644 4 2 28 1 2771 3068 3718 3727 +11645 4 2 28 1 2611 2766 2887 3046 +11646 4 2 28 1 2617 3286 2958 3711 +11647 4 2 28 1 644 3475 3073 3589 +11648 4 2 28 1 2596 3055 3330 3830 +11649 4 2 28 1 2972 3038 2649 3887 +11650 4 2 28 1 889 3513 3234 3863 +11651 4 2 28 1 2000 2212 2019 3018 +11652 4 2 28 1 1436 2926 1711 3857 +11653 4 2 28 1 2927 3619 2624 3719 +11654 4 2 28 1 3255 3358 2904 3803 +11655 4 2 28 1 3275 3415 1976 3935 +11656 4 2 28 1 2732 2975 2631 3566 +11657 4 2 28 1 2264 2058 2657 3338 +11658 4 2 28 1 2573 3095 3075 3637 +11659 4 2 28 1 1059 984 1060 3167 +11660 4 2 28 1 2229 2230 2028 2851 +11661 4 2 28 1 2634 2812 2638 2813 +11662 4 2 28 1 950 949 948 3302 +11663 4 2 28 1 283 1813 418 3332 +11664 4 2 28 1 2678 3165 2893 3195 +11665 4 2 28 1 1845 1838 3388 3601 +11666 4 2 28 1 2720 3654 3078 3755 +11667 4 2 28 1 1789 1484 1722 3542 +11668 4 2 28 1 842 3369 3431 3538 +11669 4 2 28 1 1368 2927 1719 3569 +11670 4 2 28 1 3083 3555 2769 3934 +11671 4 2 28 1 3327 3686 1502 3904 +11672 4 2 28 1 677 533 700 3096 +11673 4 2 28 1 589 2984 587 3540 +11674 4 2 28 1 2542 3058 3382 3731 +11675 4 2 28 1 2019 2241 1970 2890 +11676 4 2 28 1 1209 1241 1008 3016 +11677 4 2 28 1 981 2878 1069 3660 +11678 4 2 28 1 1156 3325 2827 3809 +11679 4 2 28 1 2970 3229 2613 3705 +11680 4 2 28 1 1123 2953 1111 3167 +11681 4 2 28 1 1283 1151 786 3226 +11682 4 2 28 1 2281 3339 2077 3669 +11683 4 2 28 1 2717 3232 3161 3869 +11684 4 2 28 1 3037 3280 2567 3724 +11685 4 2 28 1 543 757 685 3146 +11686 4 2 28 1 2501 2502 2526 2982 +11687 4 2 28 1 1303 3350 3170 3667 +11688 4 2 28 1 2555 3429 3192 3437 +11689 4 2 28 1 2816 3295 3288 3468 +11690 4 2 28 1 2716 3434 3305 3669 +11691 4 2 28 1 2557 3497 2612 3773 +11692 4 2 28 1 1175 2930 837 3641 +11693 4 2 28 1 2599 3329 2634 3623 +11694 4 2 28 1 3000 3267 1891 3322 +11695 4 2 28 1 1939 1913 2205 3039 +11696 4 2 28 1 2262 2158 1987 2931 +11697 4 2 28 1 2438 3651 2436 3884 +11698 4 2 28 1 2021 1958 1959 3035 +11699 4 2 28 1 3053 1444 3264 3904 +11700 4 2 28 1 2478 2491 2415 3714 +11701 4 2 28 1 417 416 2998 3647 +11702 4 2 28 1 2521 3297 2892 3703 +11703 4 2 28 1 2696 3235 3136 3888 +11704 4 2 28 1 1360 1362 3157 3495 +11705 4 2 28 1 2520 1802 2498 3780 +11706 4 2 28 1 800 213 212 3314 +11707 4 2 28 1 693 2905 556 3475 +11708 4 2 28 1 2296 2316 2333 3143 +11709 4 2 28 1 616 746 2901 3608 +11710 4 2 28 1 1009 1254 1251 3248 +11711 4 2 28 1 1003 3048 1248 3479 +11712 4 2 28 1 2617 3286 2945 3488 +11713 4 2 28 1 1479 1736 1694 3160 +11714 4 2 28 1 1132 1133 1034 3147 +11715 4 2 28 1 2471 2422 2402 3262 +11716 4 2 28 1 2746 3225 2888 3391 +11717 4 2 28 1 2342 2496 2534 3519 +11718 4 2 28 1 2710 3610 3279 3788 +11719 4 2 28 1 2942 2673 3382 3757 +11720 4 2 28 1 2604 2627 2765 3308 +11721 4 2 28 1 2572 2686 2661 3362 +11722 4 2 28 1 721 741 689 2908 +11723 4 2 28 1 1382 1380 3445 3534 +11724 4 2 28 1 1284 791 1081 2997 +11725 4 2 28 1 1245 3046 1211 3209 +11726 4 2 28 1 545 2106 739 3118 +11727 4 2 28 1 1185 1248 1251 3048 +11728 4 2 28 1 2685 3425 3188 3882 +11729 4 2 28 1 2638 2744 2933 3738 +11730 4 2 28 1 2641 2718 3172 3363 +11731 4 2 28 1 1838 1349 3388 3601 +11732 4 2 28 1 2543 3767 3557 3813 +11733 4 2 28 1 2724 2600 2749 2930 +11734 4 2 28 1 364 367 452 3290 +11735 4 2 28 1 1569 2790 1629 3562 +11736 4 2 28 1 1962 1952 2672 3293 +11737 4 2 28 1 997 999 1037 3145 +11738 4 2 28 1 1880 1861 1864 3404 +11739 4 2 28 1 2802 2982 3395 3721 +11740 4 2 28 1 3063 3657 2781 3860 +11741 4 2 28 1 2901 3608 3365 3885 +11742 4 2 28 1 2047 3091 2046 3480 +11743 4 2 28 1 465 3141 304 3867 +11744 4 2 28 1 2571 2672 2650 3497 +11745 4 2 28 1 3190 3399 2544 3783 +11746 4 2 28 1 2616 2647 2566 2779 +11747 4 2 28 1 2842 3357 3140 3739 +11748 4 2 28 1 2744 3013 3303 3663 +11749 4 2 28 1 2757 3022 2658 3252 +11750 4 2 28 1 2365 2362 3149 3865 +11751 4 2 28 1 1974 2162 1975 3415 +11752 4 2 28 1 2317 2309 2311 3069 +11753 4 2 28 1 2348 2387 2295 3692 +11754 4 2 28 1 1864 3404 1866 3527 +11755 4 2 28 1 747 3839 3614 3930 +11756 4 2 28 1 530 223 222 3225 +11757 4 2 28 1 1737 2736 1705 3300 +11758 4 2 28 1 2458 2481 2344 3271 +11759 4 2 28 1 776 663 2999 3333 +11760 4 2 28 1 2752 3378 2572 3387 +11761 4 2 28 1 1480 1481 1500 2915 +11762 4 2 28 1 2838 3547 3280 3838 +11763 4 2 28 1 2554 2911 3122 3587 +11764 4 2 28 1 1824 1166 2136 3393 +11765 4 2 28 1 893 2848 3447 3826 +11766 4 2 28 1 785 3018 2136 3393 +11767 4 2 28 1 2187 2183 2092 3527 +11768 4 2 28 1 2530 1769 1351 3175 +11769 4 2 28 1 2075 2073 3317 3607 +11770 4 2 28 1 1147 3369 3196 3806 +11771 4 2 28 1 294 169 405 1320 +11772 4 2 28 1 964 3258 1187 3434 +11773 4 2 28 1 168 275 405 1636 +11774 4 2 28 1 1966 2172 2050 2931 +11775 4 2 28 1 1198 3038 1001 3580 +11776 4 2 28 1 1378 2956 1377 3751 +11777 4 2 28 1 2554 3123 3058 3183 +11778 4 2 28 1 2052 2122 3106 3935 +11779 4 2 28 1 1129 2868 1108 3506 +11780 4 2 28 1 2586 2782 3783 3849 +11781 4 2 28 1 2634 2704 2609 3155 +11782 4 2 28 1 504 3707 2740 3923 +11783 4 2 28 1 2506 2509 2525 3108 +11784 4 2 28 1 786 2146 3194 3226 +11785 4 2 28 1 835 2872 1212 3533 +11786 4 2 28 1 2768 3129 3693 3794 +11787 4 2 28 1 2588 3319 3067 3771 +11788 4 2 28 1 1286 1127 3176 3505 +11789 4 2 28 1 2611 2887 2798 3296 +11790 4 2 28 1 439 472 471 2964 +11791 4 2 28 1 3161 3574 2941 3657 +11792 4 2 28 1 469 395 274 3129 +11793 4 2 28 1 2738 3322 2845 3742 +11794 4 2 28 1 791 1067 2997 3341 +11795 4 2 28 1 1148 1303 3170 3667 +11796 4 2 28 1 2534 2528 2375 3519 +11797 4 2 28 1 2676 3388 1356 3601 +11798 4 2 28 1 2654 2818 3016 3795 +11799 4 2 28 1 3183 3299 2582 3414 +11800 4 2 28 1 2749 2868 2631 3443 +11801 4 2 28 1 2962 3649 2541 3895 +11802 4 2 28 1 2500 1840 2537 3189 +11803 4 2 28 1 2719 2929 2634 3329 +11804 4 2 28 1 587 2984 577 3022 +11805 4 2 28 1 1244 3107 3158 3738 +11806 4 2 28 1 2475 2382 2422 3598 +11807 4 2 28 1 2533 2517 2518 3545 +11808 4 2 28 1 2678 3117 3195 3315 +11809 4 2 28 1 2741 2991 3685 3837 +11810 4 2 28 1 1913 2267 2205 3180 +11811 4 2 28 1 947 3302 2867 3563 +11812 4 2 28 1 1412 1428 1427 2822 +11813 4 2 28 1 2087 1813 283 2987 +11814 4 2 28 1 2581 2671 2801 2906 +11815 4 2 28 1 1955 1957 1981 3594 +11816 4 2 28 1 1280 3309 1064 3787 +11817 4 2 28 1 2875 3406 3071 3865 +11818 4 2 28 1 29 2465 2291 2322 +11819 4 2 28 1 1283 1053 1315 3226 +11820 4 2 28 1 3060 3208 2679 3423 +11821 4 2 28 1 1025 2950 3434 3650 +11822 4 2 28 1 666 3249 654 3421 +11823 4 2 28 1 2078 1842 2480 2460 +11824 4 2 28 1 1042 3046 1245 3296 +11825 4 2 28 1 2542 3028 2791 3326 +11826 4 2 28 1 2574 3122 3455 3916 +11827 4 2 28 1 3242 3635 2889 3799 +11828 4 2 28 1 1554 1593 1553 3143 +11829 4 2 28 1 947 887 948 3302 +11830 4 2 28 1 2216 2289 2039 3559 +11831 4 2 28 1 2888 3225 2755 3391 +11832 4 2 28 1 2984 3024 2624 3719 +11833 4 2 28 1 2191 1839 1350 3143 +11834 4 2 28 1 2563 2622 2612 3054 +11835 4 2 28 1 1718 3136 1447 3584 +11836 4 2 28 1 796 3026 3535 3548 +11837 4 2 28 1 2101 2102 3261 3338 +11838 4 2 28 1 2315 2307 2323 3220 +11839 4 2 28 1 1681 1777 1544 3477 +11840 4 2 28 1 868 3038 1198 3517 +11841 4 2 28 1 2727 3038 2972 3595 +11842 4 2 28 1 1067 1081 2997 3572 +11843 4 2 28 1 2484 2252 2335 3040 +11844 4 2 28 1 1018 3181 2803 3182 +11845 4 2 28 1 516 435 434 3697 +11846 4 2 28 1 1199 209 208 3128 +11847 4 2 28 1 2807 3100 801 3567 +11848 4 2 28 1 3004 3347 2853 3527 +11849 4 2 28 1 1066 985 3072 3435 +11850 4 2 28 1 1045 1188 1225 3245 +11851 4 2 28 1 1939 1982 1940 3856 +11852 4 2 28 1 1515 1486 1514 2664 +11853 4 2 28 1 2583 2555 3142 3583 +11854 4 2 28 1 2977 3150 1668 3666 +11855 4 2 28 1 2549 3428 3257 3636 +11856 4 2 28 1 2267 1914 1989 3180 +11857 4 2 28 1 2695 3122 2730 3916 +11858 4 2 28 1 2830 2950 2716 3508 +11859 4 2 28 1 2595 3686 3327 3904 +11860 4 2 28 1 526 226 225 2933 +11861 4 2 28 1 2578 2899 2731 3613 +11862 4 2 28 1 2597 3114 2852 3782 +11863 4 2 28 1 1213 3012 1256 3181 +11864 4 2 28 1 1135 3138 2989 3506 +11865 4 2 28 1 1019 1020 960 3057 +11866 4 2 28 1 3136 3235 2558 3888 +11867 4 2 28 1 2995 2711 3205 3488 +11868 4 2 28 1 2546 3564 3239 3722 +11869 4 2 28 1 718 2951 3252 3356 +11870 4 2 28 1 658 753 769 3930 +11871 4 2 28 1 2037 3139 2232 3733 +11872 4 2 28 1 1797 1660 1495 3198 +11873 4 2 28 1 2832 1104 3298 3922 +11874 4 2 28 1 3123 3390 2600 3493 +11875 4 2 28 1 453 381 3085 3913 +11876 4 2 28 1 457 3353 497 3868 +11877 4 2 28 1 2571 2870 2550 3896 +11878 4 2 28 1 2653 2880 2759 3088 +11879 4 2 28 1 2378 2991 2387 3692 +11880 4 2 28 1 2040 1981 2038 3594 +11881 4 2 28 1 1324 1613 282 2918 +11882 4 2 28 1 455 310 315 3102 +11883 4 2 28 1 2216 2053 1825 3653 +11884 4 2 28 1 812 1075 1252 3494 +11885 4 2 28 1 1637 1573 1740 3125 +11886 4 2 28 1 2103 2210 2271 3726 +11887 4 2 28 1 3093 3820 3682 3899 +11888 4 2 28 1 2956 3751 2955 3846 +11889 4 2 28 1 2562 3326 3123 3424 +11890 4 2 28 1 591 3359 3001 3389 +11891 4 2 28 1 3412 3551 2960 3918 +11892 4 2 28 1 483 3307 3129 3693 +11893 4 2 28 1 2857 3105 3522 3888 +11894 4 2 28 1 3105 3515 2829 3848 +11895 4 2 28 1 2632 3032 3006 3355 +11896 4 2 28 1 3282 3347 2874 3828 +11897 4 2 28 1 2091 2080 418 3332 +11898 4 2 28 1 414 283 415 2987 +11899 4 2 28 1 2346 2406 2334 3598 +11900 4 2 28 1 526 680 762 3336 +11901 4 2 28 1 2892 3060 3423 3478 +11902 4 2 28 1 2137 2722 1982 3393 +11903 4 2 28 1 519 388 3368 3924 +11904 4 2 28 1 443 2981 489 3394 +11905 4 2 28 1 2643 3234 2815 3513 +11906 4 2 28 1 1389 1390 1388 3348 +11907 4 2 28 1 2377 3422 2365 3914 +11908 4 2 28 1 1321 690 531 3573 +11909 4 2 28 1 881 2992 879 3695 +11910 4 2 28 1 224 787 2888 3738 +11911 4 2 28 1 1748 2924 1630 2999 +11912 4 2 28 1 2593 3121 2832 3263 +11913 4 2 28 1 2790 2685 3281 3562 +11914 4 2 28 1 533 677 2105 3096 +11915 4 2 28 1 3288 3295 2816 3489 +11916 4 2 28 1 2730 3343 2930 3641 +11917 4 2 28 1 3117 2588 3771 3858 +11918 4 2 28 1 3245 3380 1188 3893 +11919 4 2 28 1 624 604 641 3781 +11920 4 2 28 1 3216 3449 2401 3717 +11921 4 2 28 1 1494 1496 1596 3238 +11922 4 2 28 1 2609 2813 2746 3016 +11923 4 2 28 1 2581 2971 2857 3235 +11924 4 2 28 1 2793 2749 2930 3369 +11925 4 2 28 1 1394 548 2907 3815 +11926 4 2 28 1 2101 3261 2701 3338 +11927 4 2 28 1 2682 3017 2788 3603 +11928 4 2 28 1 3137 3242 3241 3251 +11929 4 2 28 1 3230 3716 2941 3860 +11930 4 2 28 1 1548 1552 3192 3437 +11931 4 2 28 1 1307 1328 1102 3083 +11932 4 2 28 1 1368 2927 1358 3157 +11933 4 2 28 1 3058 3382 3731 3882 +11934 4 2 28 1 3183 3301 2567 3769 +11935 4 2 28 1 2657 3338 3525 3531 +11936 4 2 28 1 744 3261 737 3578 +11937 4 2 28 1 2823 3157 1359 3601 +11938 4 2 28 1 3043 3832 3740 3919 +11939 4 2 28 1 2821 3229 2970 3705 +11940 4 2 28 1 2402 2422 2382 3598 +11941 4 2 28 1 2151 3115 2119 3139 +11942 4 2 28 1 2591 2633 2549 3472 +11943 4 2 28 1 861 856 860 3381 +11944 4 2 28 1 1551 1791 3192 3358 +11945 4 2 28 1 968 3524 912 3850 +11946 4 2 28 1 1035 3229 3572 3862 +11947 4 2 28 1 1149 2970 3572 3834 +11948 4 2 28 1 1450 3214 3059 3706 +11949 4 2 28 1 1511 1651 2918 3676 +11950 4 2 28 1 607 549 2907 3008 +11951 4 2 28 1 1284 1035 1027 3229 +11952 4 2 28 1 3161 3232 2573 3869 +11953 4 2 28 1 1346 1740 3125 3571 +11954 4 2 28 1 1643 3298 3263 3823 +11955 4 2 28 1 2264 2007 2245 2657 +11956 4 2 28 1 2968 3163 2665 3658 +11957 4 2 28 1 2685 3233 2942 3757 +11958 4 2 28 1 306 309 3568 3734 +11959 4 2 28 1 868 851 1001 3038 +11960 4 2 28 1 1799 1524 1708 3577 +11961 4 2 28 1 1018 3182 2803 3704 +11962 4 2 28 1 510 286 412 3655 +11963 4 2 28 1 492 3353 392 3920 +11964 4 2 28 1 3021 3237 2966 3497 +11965 4 2 28 1 1721 3150 2789 3666 +11966 4 2 28 1 1841 2244 2184 3312 +11967 4 2 28 1 2546 3299 2935 3444 +11968 4 2 28 1 2552 2764 3029 3458 +11969 4 2 28 1 3069 3260 2810 3496 +11970 4 2 28 1 2188 3223 2742 3273 +11971 4 2 28 1 2668 2899 2863 3510 +11972 4 2 28 1 456 3102 455 3126 +11973 4 2 28 1 1511 2918 1510 3676 +11974 4 2 28 1 2685 2996 3562 3855 +11975 4 2 28 1 3068 3471 3306 3582 +11976 4 2 28 1 2806 3406 3289 3829 +11977 4 2 28 1 431 2987 494 3796 +11978 4 2 28 1 2366 2371 2363 3216 +11979 4 2 28 1 2911 3123 3122 3493 +11980 4 2 28 1 2635 2881 2878 3660 +11981 4 2 28 1 2727 2631 2868 3443 +11982 4 2 28 1 2816 3468 2720 3592 +11983 4 2 28 1 2710 2822 3587 3731 +11984 4 2 28 1 2730 3641 3374 3854 +11985 4 2 28 1 3058 3183 2705 3724 +11986 4 2 28 1 2250 1830 2085 3168 +11987 4 2 28 1 1034 953 3014 3469 +11988 4 2 28 1 2467 2446 3063 3877 +11989 4 2 28 1 309 310 450 3102 +11990 4 2 28 1 334 456 336 2952 +11991 4 2 28 1 2638 2888 3107 3738 +11992 4 2 28 1 987 3050 1082 3524 +11993 4 2 28 1 3304 3574 2941 3684 +11994 4 2 28 1 1977 3006 3212 3518 +11995 4 2 28 1 993 3817 3114 3850 +11996 4 2 28 1 2263 1900 2186 3440 +11997 4 2 28 1 2328 2320 19 1647 +11998 4 2 28 1 2728 3093 3195 3477 +11999 4 2 28 1 2580 2624 2944 3521 +12000 4 2 28 1 2337 2400 2413 3383 +12001 4 2 28 1 1920 1919 1953 3401 +12002 4 2 28 1 480 421 423 3034 +12003 4 2 28 1 410 459 411 3131 +12004 4 2 28 1 456 450 455 3102 +12005 4 2 28 1 934 944 933 3240 +12006 4 2 28 1 2689 2729 2584 2880 +12007 4 2 28 1 3017 3314 288 3843 +12008 4 2 28 1 2627 2852 2597 3455 +12009 4 2 28 1 1085 3410 3245 3893 +12010 4 2 28 1 2401 3216 2371 3449 +12011 4 2 28 1 2562 2792 3326 3424 +12012 4 2 28 1 1428 1441 1506 3546 +12013 4 2 28 1 1990 2687 2583 3403 +12014 4 2 28 1 1340 1762 1584 3200 +12015 4 2 28 1 739 2106 539 3118 +12016 4 2 28 1 2608 3710 2958 3711 +12017 4 2 28 1 3195 3253 2858 3477 +12018 4 2 28 1 2549 2591 3257 3428 +12019 4 2 28 1 1060 1123 1111 3167 +12020 4 2 28 1 3081 2507 3602 3909 +12021 4 2 28 1 1956 3549 3426 3607 +12022 4 2 28 1 2761 3163 1738 3437 +12023 4 2 28 1 377 394 3442 3730 +12024 4 2 28 1 902 3661 2974 3777 +12025 4 2 28 1 3075 3095 2683 3637 +12026 4 2 28 1 2995 3199 2544 3736 +12027 4 2 28 1 681 2924 1622 3573 +12028 4 2 28 1 2540 3576 3419 3852 +12029 4 2 28 1 147 1819 2147 1158 +12030 4 2 28 1 1955 3078 1957 3594 +12031 4 2 28 1 2350 2386 2381 3496 +12032 4 2 28 1 2762 3579 3169 3636 +12033 4 2 28 1 600 634 718 3252 +12034 4 2 28 1 500 3270 502 3924 +12035 4 2 28 1 1567 1671 1753 3932 +12036 4 2 28 1 1602 1805 1504 3491 +12037 4 2 28 1 2490 2425 2476 3627 +12038 4 2 28 1 2115 3408 426 3433 +12039 4 2 28 1 1396 1402 1397 3788 +12040 4 2 28 1 2389 2368 2359 3402 +12041 4 2 28 1 2288 1990 2583 3403 +12042 4 2 28 1 2840 3395 3108 3581 +12043 4 2 28 1 3478 3503 2772 3735 +12044 4 2 28 1 2691 2748 2709 3487 +12045 4 2 28 1 3053 2660 3749 3888 +12046 4 2 28 1 2606 2998 2987 3647 +12047 4 2 28 1 896 899 898 3453 +12048 4 2 28 1 389 3442 394 3730 +12049 4 2 28 1 1531 3208 1449 3478 +12050 4 2 28 1 665 763 3118 3323 +12051 4 2 28 1 1689 1775 1339 3255 +12052 4 2 28 1 3067 2726 3465 3713 +12053 4 2 28 1 796 3026 3548 3556 +12054 4 2 28 1 1764 3838 2705 3898 +12055 4 2 28 1 2781 3657 3063 3884 +12056 4 2 28 1 550 713 690 3077 +12057 4 2 28 1 390 280 484 3109 +12058 4 2 28 1 2050 2265 2240 3101 +12059 4 2 28 1 1251 3048 3248 3853 +12060 4 2 28 1 2558 3053 3264 3904 +12061 4 2 28 1 2980 2685 3281 3882 +12062 4 2 28 1 2211 3357 3640 3720 +12063 4 2 28 1 2649 2749 2727 2972 +12064 4 2 28 1 1799 2750 1524 3577 +12065 4 2 28 1 451 2860 368 3924 +12066 4 2 28 1 1595 3059 3166 3706 +12067 4 2 28 1 2578 2959 3035 3688 +12068 4 2 28 1 2619 3160 2694 3219 +12069 4 2 28 1 220 1261 1243 3342 +12070 4 2 28 1 2589 2846 3377 3451 +12071 4 2 28 1 2700 3266 2994 3718 +12072 4 2 28 1 747 3634 3614 3839 +12073 4 2 28 1 803 1071 1300 3194 +12074 4 2 28 1 2772 3478 3060 3702 +12075 4 2 28 1 686 2923 647 3467 +12076 4 2 28 1 1250 1249 3046 3611 +12077 4 2 28 1 1656 1702 3268 3470 +12078 4 2 28 1 1384 1563 1392 3534 +12079 4 2 28 1 1258 1259 794 3303 +12080 4 2 28 1 1145 897 898 3453 +12081 4 2 28 1 411 473 413 3131 +12082 4 2 28 1 302 299 393 3062 +12083 4 2 28 1 2562 3443 3399 3662 +12084 4 2 28 1 1791 1555 1737 3300 +12085 4 2 28 1 2995 3199 2775 3205 +12086 4 2 28 1 2579 2625 2884 3430 +12087 4 2 28 1 1394 1609 1687 2907 +12088 4 2 28 1 3359 3389 583 3781 +12089 4 2 28 1 1437 3065 2938 3842 +12090 4 2 28 1 1373 3503 1372 3735 +12091 4 2 28 1 1005 1282 1019 3291 +12092 4 2 28 1 884 3258 3234 3762 +12093 4 2 28 1 2287 2128 2129 2959 +12094 4 2 28 1 3125 2678 3554 3715 +12095 4 2 28 1 399 493 276 3366 +12096 4 2 28 1 1394 1701 1608 2907 +12097 4 2 28 1 2472 3278 2444 3721 +12098 4 2 28 1 2904 3192 2555 3358 +12099 4 2 28 1 1145 1020 1063 3173 +12100 4 2 28 1 2571 3054 2759 3896 +12101 4 2 28 1 3000 3134 2718 3892 +12102 4 2 28 1 537 1609 237 1394 +12103 4 2 28 1 408 2108 3313 3408 +12104 4 2 28 1 805 147 2147 1158 +12105 4 2 28 1 2936 3724 3455 3845 +12106 4 2 28 1 3149 3311 2806 3865 +12107 4 2 28 1 3012 3473 1213 3907 +12108 4 2 28 1 2064 3272 2891 3642 +12109 4 2 28 1 1453 1464 3037 3280 +12110 4 2 28 1 2747 2951 2676 3269 +12111 4 2 28 1 749 2923 686 3502 +12112 4 2 28 1 2607 2879 3310 3438 +12113 4 2 28 1 2883 3618 3361 3820 +12114 4 2 28 1 2130 772 1834 3388 +12115 4 2 28 1 1952 2672 3237 3646 +12116 4 2 28 1 399 276 3090 3366 +12117 4 2 28 1 2041 2042 1943 3827 +12118 4 2 28 1 1201 3128 2826 3556 +12119 4 2 28 1 2561 2960 3151 3918 +12120 4 2 28 1 2743 2996 3348 3570 +12121 4 2 28 1 2578 2731 3035 3613 +12122 4 2 28 1 1859 2180 1892 3357 +12123 4 2 28 1 805 2004 1151 3669 +12124 4 2 28 1 3144 3240 944 3834 +12125 4 2 28 1 658 769 3009 3930 +12126 4 2 28 1 536 685 715 3502 +12127 4 2 28 1 1488 3268 2990 3384 +12128 4 2 28 1 2634 3329 3155 3623 +12129 4 2 28 1 286 199 200 3655 +12130 4 2 28 1 3036 3546 2936 3845 +12131 4 2 28 1 3119 3181 977 3628 +12132 4 2 28 1 1380 3445 2955 3751 +12133 4 2 28 1 489 2981 472 3394 +12134 4 2 28 1 2831 3259 3485 3813 +12135 4 2 28 1 1055 3087 1109 3817 +12136 4 2 28 1 1917 1977 1974 3006 +12137 4 2 28 1 1012 3284 2867 3556 +12138 4 2 28 1 2941 3161 2717 3574 +12139 4 2 28 1 2607 3464 3465 3846 +12140 4 2 28 1 2871 3712 3485 3827 +12141 4 2 28 1 2528 2347 3519 3644 +12142 4 2 28 1 1754 1644 1322 3333 +12143 4 2 28 1 2716 2585 2836 3763 +12144 4 2 28 1 2800 2642 3209 3826 +12145 4 2 28 1 2139 3627 2038 3910 +12146 4 2 28 1 2542 3409 2791 3698 +12147 4 2 28 1 489 361 446 2981 +12148 4 2 28 1 368 2860 363 3368 +12149 4 2 28 1 2781 3186 3185 3651 +12150 4 2 28 1 1352 3370 2498 3780 +12151 4 2 28 1 1353 1647 1586 3228 +12152 4 2 28 1 2955 3438 2954 3456 +12153 4 2 28 1 2352 3496 2949 3861 +12154 4 2 28 1 2735 657 3009 3839 +12155 4 2 28 1 2464 3367 2433 3766 +12156 4 2 28 1 1349 1356 1355 3388 +12157 4 2 28 1 2287 2225 2128 3457 +12158 4 2 28 1 1374 1373 1372 3735 +12159 4 2 28 1 2699 2755 2754 3201 +12160 4 2 28 1 2845 3451 3000 3645 +12161 4 2 28 1 2936 3135 2822 3691 +12162 4 2 28 1 1213 1202 1017 3012 +12163 4 2 28 1 1673 3327 2697 3686 +12164 4 2 28 1 2722 3039 2589 3377 +12165 4 2 28 1 2758 3779 2861 3780 +12166 4 2 28 1 1446 2752 1425 3378 +12167 4 2 28 1 722 244 1631 1644 +12168 4 2 28 1 2664 3475 2920 3677 +12169 4 2 28 1 1706 1641 1634 3672 +12170 4 2 28 1 2238 3631 3003 3680 +12171 4 2 28 1 463 3765 321 3789 +12172 4 2 28 1 2066 2876 1855 3462 +12173 4 2 28 1 2691 3011 2677 3092 +12174 4 2 28 1 873 3517 3580 3648 +12175 4 2 28 1 2632 3204 3006 3259 +12176 4 2 28 1 537 549 550 3077 +12177 4 2 28 1 808 1115 1264 2877 +12178 4 2 28 1 2263 1900 3440 3847 +12179 4 2 28 1 2643 2953 3234 3513 +12180 4 2 28 1 1436 1711 1411 3857 +12181 4 2 28 1 520 270 400 2932 +12182 4 2 28 1 2803 3181 2612 3182 +12183 4 2 28 1 872 2921 870 3648 +12184 4 2 28 1 2092 1949 1972 3528 +12185 4 2 28 1 1855 2066 1857 2876 +12186 4 2 28 1 1936 1937 1938 3557 +12187 4 2 28 1 308 437 3394 3588 +12188 4 2 28 1 1278 2937 3291 3628 +12189 4 2 28 1 2009 2208 2166 3084 +12190 4 2 28 1 2769 2770 2593 3334 +12191 4 2 28 1 1986 2904 3407 3803 +12192 4 2 28 1 217 3512 3223 3756 +12193 4 2 28 1 2721 3424 3153 3852 +12194 4 2 28 1 378 3408 2680 3678 +12195 4 2 28 1 391 2932 270 3670 +12196 4 2 28 1 996 1146 999 3070 +12197 4 2 28 1 1726 1488 1527 3384 +12198 4 2 28 1 2484 1842 2252 3040 +12199 4 2 28 1 2575 2994 3266 3718 +12200 4 2 28 1 2455 2443 2473 3304 +12201 4 2 28 1 2200 3091 3218 3653 +12202 4 2 28 1 2838 3231 2620 3687 +12203 4 2 28 1 1160 1033 3524 3859 +12204 4 2 28 1 813 3121 801 3567 +12205 4 2 28 1 2974 3276 2833 3870 +12206 4 2 28 1 2564 3180 2961 3742 +12207 4 2 28 1 2755 2888 2639 3441 +12208 4 2 28 1 2577 2656 2655 3239 +12209 4 2 28 1 622 3001 3201 3389 +12210 4 2 28 1 1554 1553 1550 3163 +12211 4 2 28 1 696 2912 723 3836 +12212 4 2 28 1 2575 3306 3068 3471 +12213 4 2 28 1 605 779 3741 3836 +12214 4 2 28 1 2665 3642 3272 3767 +12215 4 2 28 1 2673 3445 2955 3534 +12216 4 2 28 1 1412 2822 1427 3857 +12217 4 2 28 1 2753 3178 3079 3869 +12218 4 2 28 1 1924 2961 1920 3819 +12219 4 2 28 1 3397 3479 858 3810 +12220 4 2 28 1 1726 1741 1408 3779 +12221 4 2 28 1 526 2933 3336 3421 +12222 4 2 28 1 3515 3544 2648 3624 +12223 4 2 28 1 2346 2332 2349 3260 +12224 4 2 28 1 2741 3375 2917 3481 +12225 4 2 28 1 2588 3319 2883 3465 +12226 4 2 28 1 819 1195 989 3256 +12227 4 2 28 1 3484 3718 2575 3727 +12228 4 2 28 1 3271 3304 2780 3798 +12229 4 2 28 1 2114 2228 2008 3226 +12230 4 2 28 1 2601 2942 3233 3757 +12231 4 2 28 1 2725 3652 3386 3878 +12232 4 2 28 1 2847 3291 2650 3773 +12233 4 2 28 1 1732 3176 2674 3900 +12234 4 2 28 1 2866 3467 686 3694 +12235 4 2 28 1 2977 3203 1022 3784 +12236 4 2 28 1 1005 1019 3057 3291 +12237 4 2 28 1 2574 3455 2695 3916 +12238 4 2 28 1 1046 2919 1048 3659 +12239 4 2 28 1 971 3276 3294 3664 +12240 4 2 28 1 1244 3107 1207 3158 +12241 4 2 28 1 1206 3530 2975 3566 +12242 4 2 28 1 2674 2574 3160 3900 +12243 4 2 28 1 3212 3259 2711 3485 +12244 4 2 28 1 607 769 692 3008 +12245 4 2 28 1 2040 3594 2038 3910 +12246 4 2 28 1 1723 1705 1590 2736 +12247 4 2 28 1 1735 1647 1347 3228 +12248 4 2 28 1 1093 1160 3011 3859 +12249 4 2 28 1 2569 2623 3065 3392 +12250 4 2 28 1 613 3191 728 3638 +12251 4 2 28 1 1565 1569 1629 3562 +12252 4 2 28 1 2167 3078 1950 3755 +12253 4 2 28 1 3210 3415 2809 3935 +12254 4 2 28 1 1408 2865 1373 3735 +12255 4 2 28 1 2679 3208 3060 3315 +12256 4 2 28 1 3072 966 3572 3834 +12257 4 2 28 1 960 3057 1145 3656 +12258 4 2 28 1 2694 2946 3350 3811 +12259 4 2 28 1 2716 3305 3226 3669 +12260 4 2 28 1 1057 3227 2914 3659 +12261 4 2 28 1 2706 2732 2590 2854 +12262 4 2 28 1 615 616 2901 3885 +12263 4 2 28 1 2019 3018 2890 3377 +12264 4 2 28 1 2780 3304 2941 3597 +12265 4 2 28 1 2722 2613 2997 3229 +12266 4 2 28 1 2083 1828 2065 3803 +12267 4 2 28 1 1558 1515 1678 3486 +12268 4 2 28 1 862 3224 3147 3487 +12269 4 2 28 1 1347 19 2320 1647 +12270 4 2 28 1 1996 2621 2025 3405 +12271 4 2 28 1 2611 3414 3662 3928 +12272 4 2 28 1 2949 3496 3104 3861 +12273 4 2 28 1 1454 1506 3036 3900 +12274 4 2 28 1 83 2078 1842 2480 +12275 4 2 28 1 2575 3068 3306 3727 +12276 4 2 28 1 1609 238 1621 537 +12277 4 2 28 1 2849 3232 3161 3278 +12278 4 2 28 1 204 205 2844 3704 +12279 4 2 28 1 2574 3036 2674 3455 +12280 4 2 28 1 2831 3485 2871 3813 +12281 4 2 28 1 899 3119 3628 3656 +12282 4 2 28 1 2559 3239 3564 3722 +12283 4 2 28 1 2593 2770 2769 3328 +12284 4 2 28 1 2876 3458 2842 3723 +12285 4 2 28 1 3003 3242 2889 3673 +12286 4 2 28 1 2678 3195 3253 3315 +12287 4 2 28 1 2710 2980 3135 3882 +12288 4 2 28 1 2040 3189 3594 3627 +12289 4 2 28 1 3594 3627 2802 3910 +12290 4 2 28 1 3207 3266 2715 3345 +12291 4 2 28 1 1854 2939 2224 3426 +12292 4 2 28 1 2136 785 1941 3018 +12293 4 2 28 1 2731 2742 2592 3146 +12294 4 2 28 1 884 888 885 3234 +12295 4 2 28 1 1570 2318 2296 3164 +12296 4 2 28 1 1878 3337 2253 3828 +12297 4 2 28 1 2631 2727 3360 3443 +12298 4 2 28 1 2564 3039 3177 3705 +12299 4 2 28 1 807 3341 2135 3494 +12300 4 2 28 1 2048 3091 2047 3288 +12301 4 2 28 1 3026 3302 1269 3808 +12302 4 2 28 1 3105 3174 2660 3515 +12303 4 2 28 1 605 3741 596 3836 +12304 4 2 28 1 1118 1267 1266 3130 +12305 4 2 28 1 1096 1305 797 3298 +12306 4 2 28 1 1183 2937 203 3492 +12307 4 2 28 1 2790 3547 3171 3838 +12308 4 2 28 1 2064 2891 2063 3793 +12309 4 2 28 1 483 3129 395 3693 +12310 4 2 28 1 1698 1526 1487 2990 +12311 4 2 28 1 353 346 352 2985 +12312 4 2 28 1 1480 1418 1481 2915 +12313 4 2 28 1 1077 3016 1241 3795 +12314 4 2 28 1 2667 2828 3026 3535 +12315 4 2 28 1 2559 2788 2655 3552 +12316 4 2 28 1 2539 2879 3310 3464 +12317 4 2 28 1 2871 3485 2831 3557 +12318 4 2 28 1 2936 3280 2705 3691 +12319 4 2 28 1 1307 1102 1101 3083 +12320 4 2 28 1 1641 3025 1634 3672 +12321 4 2 28 1 1270 3026 2867 3302 +12322 4 2 28 1 1287 3508 3339 3669 +12323 4 2 28 1 2338 2418 98 2474 +12324 4 2 28 1 2710 3127 3610 3788 +12325 4 2 28 1 1568 3348 1390 3562 +12326 4 2 28 1 2845 3466 3322 3892 +12327 4 2 28 1 2756 3022 2757 3553 +12328 4 2 28 1 2010 2138 145 1164 +12329 4 2 28 1 2848 3349 1139 3447 +12330 4 2 28 1 2256 2244 1841 3370 +12331 4 2 28 1 2617 3153 3419 3711 +12332 4 2 28 1 2278 3458 1860 3739 +12333 4 2 28 1 3071 3597 2614 3798 +12334 4 2 28 1 772 3064 1834 3388 +12335 4 2 28 1 2757 3553 3498 3638 +12336 4 2 28 1 208 3128 1201 3556 +12337 4 2 28 1 2540 3020 3233 3604 +12338 4 2 28 1 1709 1539 1734 3033 +12339 4 2 28 1 2745 2770 2637 3420 +12340 4 2 28 1 2665 3658 3041 3767 +12341 4 2 28 1 2291 2300 2301 3197 +12342 4 2 28 1 2521 2892 2515 3703 +12343 4 2 28 1 3193 3212 2711 3712 +12344 4 2 28 1 895 896 2965 3611 +12345 4 2 28 1 30 2299 2419 2427 +12346 4 2 28 1 2127 2495 78 1833 +12347 4 2 28 1 2550 3257 2871 3579 +12348 4 2 28 1 2562 2649 3443 3543 +12349 4 2 28 1 402 403 373 3307 +12350 4 2 28 1 3091 3288 2816 3480 +12351 4 2 28 1 1210 3410 2919 3811 +12352 4 2 28 1 2787 2650 3291 3773 +12353 4 2 28 1 2557 3190 3497 3758 +12354 4 2 28 1 258 683 529 1810 +12355 4 2 28 1 2918 3120 433 3707 +12356 4 2 28 1 2967 3402 2785 3841 +12357 4 2 28 1 439 3074 308 3394 +12358 4 2 28 1 1341 517 1641 3672 +12359 4 2 28 1 2096 533 2105 3096 +12360 4 2 28 1 902 2974 3661 3870 +12361 4 2 28 1 1828 1580 2061 1775 +12362 4 2 28 1 2585 2716 3084 3763 +12363 4 2 28 1 1733 3779 1530 3780 +12364 4 2 28 1 2603 3521 2580 3522 +12365 4 2 28 1 2547 2944 3521 3522 +12366 4 2 28 1 2722 3393 2997 3856 +12367 4 2 28 1 3445 3446 2673 3846 +12368 4 2 28 1 2726 2883 3319 3465 +12369 4 2 28 1 2797 2938 2926 3279 +12370 4 2 28 1 1774 2736 1589 3398 +12371 4 2 28 1 2632 2831 3041 3658 +12372 4 2 28 1 2014 2703 2028 3371 +12373 4 2 28 1 2685 3215 2980 3281 +12374 4 2 28 1 2928 3484 3727 3766 +12375 4 2 28 1 896 3119 899 3453 +12376 4 2 28 1 2666 2949 3481 3708 +12377 4 2 28 1 2592 3512 2742 3759 +12378 4 2 28 1 2556 3334 2926 3786 +12379 4 2 28 1 3501 3542 3093 3754 +12380 4 2 28 1 1506 1441 1454 3036 +12381 4 2 28 1 1763 1695 1535 3573 +12382 4 2 28 1 2582 3239 2656 3460 +12383 4 2 28 1 2706 2854 2821 3316 +12384 4 2 28 1 3025 3086 396 3368 +12385 4 2 28 1 525 3707 461 3923 +12386 4 2 28 1 1250 3046 1041 3473 +12387 4 2 28 1 1287 2716 3508 3669 +12388 4 2 28 1 2647 3500 3062 3730 +12389 4 2 28 1 755 672 3261 3726 +12390 4 2 28 1 2624 2580 2795 3521 +12391 4 2 28 1 2593 2807 2645 3876 +12392 4 2 28 1 1919 2961 1914 3742 +12393 4 2 28 1 295 296 271 3152 +12394 4 2 28 1 2563 2582 3299 3414 +12395 4 2 28 1 2508 2507 2510 3602 +12396 4 2 28 1 1914 2961 1923 3180 +12397 4 2 28 1 2716 3434 2950 3763 +12398 4 2 28 1 2893 2678 3195 3253 +12399 4 2 28 1 2601 3446 2942 3757 +12400 4 2 28 1 2852 3308 2597 3782 +12401 4 2 28 1 1392 3127 1393 3534 +12402 4 2 28 1 2369 2413 2400 3265 +12403 4 2 28 1 2613 2725 3386 3878 +12404 4 2 28 1 2301 2302 2317 3103 +12405 4 2 28 1 1970 2890 2241 3448 +12406 4 2 28 1 2979 3253 3208 3315 +12407 4 2 28 1 3629 3817 2852 3902 +12408 4 2 28 1 2584 2577 2729 3472 +12409 4 2 28 1 171 271 436 1626 +12410 4 2 28 1 2541 3507 2857 3723 +12411 4 2 28 1 2068 2069 3133 3200 +12412 4 2 28 1 2481 2418 2391 3271 +12413 4 2 28 1 2515 2521 2494 2892 +12414 4 2 28 1 1385 1382 1610 3445 +12415 4 2 28 1 2265 2739 2240 3101 +12416 4 2 28 1 2653 2759 2733 3088 +12417 4 2 28 1 273 516 434 3047 +12418 4 2 28 1 777 544 767 3388 +12419 4 2 28 1 2206 2137 1982 3393 +12420 4 2 28 1 2726 3464 2883 3465 +12421 4 2 28 1 2672 2733 2934 3131 +12422 4 2 28 1 2428 2430 2464 3367 +12423 4 2 28 1 2545 2738 3466 3668 +12424 4 2 28 1 1376 1374 1377 3735 +12425 4 2 28 1 2641 2718 3363 3906 +12426 4 2 28 1 2771 3727 3484 3766 +12427 4 2 28 1 622 3001 714 3201 +12428 4 2 28 1 2238 3401 3003 3631 +12429 4 2 28 1 1542 1543 1533 3253 +12430 4 2 28 1 2655 2773 2618 3034 +12431 4 2 28 1 1963 2959 3035 3819 +12432 4 2 28 1 2356 3841 2355 3861 +12433 4 2 28 1 2628 3420 3156 3786 +12434 4 2 28 1 1088 993 3087 3114 +12435 4 2 28 1 740 3064 772 3388 +12436 4 2 28 1 1287 1316 1158 3339 +12437 4 2 28 1 1814 511 2080 3101 +12438 4 2 28 1 2473 2443 2466 3304 +12439 4 2 28 1 2635 2620 2881 3687 +12440 4 2 28 1 2082 3591 3086 3621 +12441 4 2 28 1 2578 3035 2959 3613 +12442 4 2 28 1 2289 2216 1825 3042 +12443 4 2 28 1 3233 3425 2942 3576 +12444 4 2 28 1 2438 2440 3574 3657 +12445 4 2 28 1 2694 3245 2808 3380 +12446 4 2 28 1 1124 1036 1125 3320 +12447 4 2 28 1 2609 3016 2818 3019 +12448 4 2 28 1 2287 2128 2959 3457 +12449 4 2 28 1 300 301 465 3141 +12450 4 2 28 1 443 2981 3394 3679 +12451 4 2 28 1 2546 3444 3188 3564 +12452 4 2 28 1 1852 2939 1854 3426 +12453 4 2 28 1 2576 2910 3544 3624 +12454 4 2 28 1 2817 3005 2808 3376 +12455 4 2 28 1 443 2778 3617 3679 +12456 4 2 28 1 728 3191 648 3638 +12457 4 2 28 1 1756 1593 1570 3143 +12458 4 2 28 1 2563 2611 3190 3849 +12459 4 2 28 1 2448 3230 2446 3877 +12460 4 2 28 1 2328 2336 2295 3228 +12461 4 2 28 1 410 411 286 3655 +12462 4 2 28 1 2289 3559 3042 3910 +12463 4 2 28 1 678 224 223 3441 +12464 4 2 28 1 2611 2798 2782 3296 +12465 4 2 28 1 1139 1140 1138 3349 +12466 4 2 28 1 2850 3142 2555 3583 +12467 4 2 28 1 1503 3065 1679 3491 +12468 4 2 28 1 813 810 3121 3567 +12469 4 2 28 1 1224 3628 3291 3656 +12470 4 2 28 1 3067 3465 3211 3713 +12471 4 2 28 1 1461 1423 1503 3327 +12472 4 2 28 1 2550 2870 2775 3205 +12473 4 2 28 1 696 596 2947 3836 +12474 4 2 28 1 352 2940 464 3765 +12475 4 2 28 1 997 996 3070 3821 +12476 4 2 28 1 1104 3922 2832 3934 +12477 4 2 28 1 2763 3087 2597 3539 +12478 4 2 28 1 272 2885 505 3313 +12479 4 2 28 1 2651 2864 3288 3354 +12480 4 2 28 1 2390 1346 3125 3383 +12481 4 2 28 1 2370 3554 2388 3715 +12482 4 2 28 1 2979 3149 2679 3914 +12483 4 2 28 1 2718 3267 3000 3322 +12484 4 2 28 1 2635 2709 2582 3665 +12485 4 2 28 1 1273 1016 1012 3284 +12486 4 2 28 1 3028 3610 3052 3903 +12487 4 2 28 1 2598 2911 3396 3587 +12488 4 2 28 1 3264 1502 3686 3904 +12489 4 2 28 1 3094 3351 2814 3837 +12490 4 2 28 1 2861 3503 1557 3779 +12491 4 2 28 1 2724 2930 2749 3196 +12492 4 2 28 1 1342 2318 3164 3737 +12493 4 2 28 1 893 2965 2848 3826 +12494 4 2 28 1 2174 2127 2031 3030 +12495 4 2 28 1 2578 3035 2668 3688 +12496 4 2 28 1 3190 3054 3497 3758 +12497 4 2 28 1 2554 3122 2911 3123 +12498 4 2 28 1 2652 3481 3112 3837 +12499 4 2 28 1 1939 1940 3039 3856 +12500 4 2 28 1 1969 3377 1970 3448 +12501 4 2 28 1 2823 3601 1359 3746 +12502 4 2 28 1 447 3794 3080 3805 +12503 4 2 28 1 2399 2410 2343 2917 +12504 4 2 28 1 2700 3213 3207 3832 +12505 4 2 28 1 1349 1356 3388 3601 +12506 4 2 28 1 3144 3435 988 3696 +12507 4 2 28 1 1452 1454 1441 3036 +12508 4 2 28 1 2626 3454 2903 3690 +12509 4 2 28 1 2753 3514 3319 3771 +12510 4 2 28 1 663 1631 243 528 +12511 4 2 28 1 2770 3334 2637 3420 +12512 4 2 28 1 2789 3050 3114 3782 +12513 4 2 28 1 2589 3523 2846 3851 +12514 4 2 28 1 2625 2699 2579 2754 +12515 4 2 28 1 2048 2160 2200 3218 +12516 4 2 28 1 2554 3123 3183 3536 +12517 4 2 28 1 2748 2811 2691 3928 +12518 4 2 28 1 1568 1565 1391 3562 +12519 4 2 28 1 2551 3003 2959 3673 +12520 4 2 28 1 1470 3159 2926 3812 +12521 4 2 28 1 2659 2714 2884 2897 +12522 4 2 28 1 3275 3483 2809 3847 +12523 4 2 28 1 2080 289 3332 3929 +12524 4 2 28 1 2009 3084 2166 3340 +12525 4 2 28 1 2757 2701 3191 3578 +12526 4 2 28 1 2037 2110 2193 2830 +12527 4 2 28 1 2604 3308 2677 3769 +12528 4 2 28 1 2542 3052 3409 3698 +12529 4 2 28 1 1946 3066 1948 3755 +12530 4 2 28 1 489 2981 443 3679 +12531 4 2 28 1 1904 2155 2243 3021 +12532 4 2 28 1 2589 3377 3448 3523 +12533 4 2 28 1 2654 2859 2799 3144 +12534 4 2 28 1 2698 3140 3527 3649 +12535 4 2 28 1 1346 106 1572 2337 +12536 4 2 28 1 2300 2299 2324 3596 +12537 4 2 28 1 217 3512 3756 3871 +12538 4 2 28 1 3122 3455 2554 3845 +12539 4 2 28 1 318 3681 316 3789 +12540 4 2 28 1 475 492 2880 3868 +12541 4 2 28 1 2710 3587 3279 3610 +12542 4 2 28 1 2036 2034 1944 3413 +12543 4 2 28 1 2780 3597 3071 3798 +12544 4 2 28 1 2825 3505 2946 3664 +12545 4 2 28 1 3007 3064 740 3388 +12546 4 2 28 1 2092 3527 3004 3528 +12547 4 2 28 1 2700 3023 3832 3835 +12548 4 2 28 1 850 848 852 3318 +12549 4 2 28 1 1346 1572 1730 3383 +12550 4 2 28 1 467 514 293 3561 +12551 4 2 28 1 2968 3162 2761 3163 +12552 4 2 28 1 2635 3203 3011 3469 +12553 4 2 28 1 2917 3481 2666 3482 +12554 4 2 28 1 187 406 408 1809 +12555 4 2 28 1 1227 912 1004 3321 +12556 4 2 28 1 2711 2995 3205 3579 +12557 4 2 28 1 1191 1290 1031 2977 +12558 4 2 28 1 2616 2737 2778 3606 +12559 4 2 28 1 2650 2672 2571 2934 +12560 4 2 28 1 3066 2804 3654 3755 +12561 4 2 28 1 2830 3339 3283 3508 +12562 4 2 28 1 2378 2410 2399 3692 +12563 4 2 28 1 2971 2791 3635 3698 +12564 4 2 28 1 2552 2876 3532 3723 +12565 4 2 28 1 244 722 1631 663 +12566 4 2 28 1 700 2863 641 3747 +12567 4 2 28 1 2669 2905 2595 2920 +12568 4 2 28 1 2547 3531 2939 3532 +12569 4 2 28 1 1864 1866 2274 3527 +12570 4 2 28 1 1564 2980 3281 3898 +12571 4 2 28 1 198 811 199 2931 +12572 4 2 28 1 2052 2122 1826 3106 +12573 4 2 28 1 2628 3013 2882 3303 +12574 4 2 28 1 833 834 836 3343 +12575 4 2 28 1 860 3224 3487 3695 +12576 4 2 28 1 1811 2248 2153 3096 +12577 4 2 28 1 2602 2760 2851 3057 +12578 4 2 28 1 763 3273 3118 3323 +12579 4 2 28 1 834 832 1169 3343 +12580 4 2 28 1 926 3459 3316 3886 +12581 4 2 28 1 2609 2813 3016 3019 +12582 4 2 28 1 1755 3159 3083 3823 +12583 4 2 28 1 2802 3627 3042 3910 +12584 4 2 28 1 1361 1360 1359 3157 +12585 4 2 28 1 3010 3261 2102 3338 +12586 4 2 28 1 652 3076 724 3719 +12587 4 2 28 1 3022 3498 2757 3553 +12588 4 2 28 1 2544 3134 2751 3399 +12589 4 2 28 1 1537 2832 3298 3823 +12590 4 2 28 1 71 2524 2424 2499 +12591 4 2 28 1 2375 2528 2347 3519 +12592 4 2 28 1 2556 3219 2926 3334 +12593 4 2 28 1 2177 2159 3041 3518 +12594 4 2 28 1 2550 3054 2584 3098 +12595 4 2 28 1 2545 2792 3251 3466 +12596 4 2 28 1 2596 2915 3364 3529 +12597 4 2 28 1 2857 3522 3105 3723 +12598 4 2 28 1 2681 2587 2778 2860 +12599 4 2 28 1 2635 3014 3011 3147 +12600 4 2 28 1 1126 3664 3416 3902 +12601 4 2 28 1 2419 2299 30 2291 +12602 4 2 28 1 670 2924 734 3677 +12603 4 2 28 1 2769 3083 2832 3555 +12604 4 2 28 1 3296 3887 1001 3925 +12605 4 2 28 1 1509 1510 1682 2740 +12606 4 2 28 1 3072 3435 966 3834 +12607 4 2 28 1 306 3639 307 3734 +12608 4 2 28 1 2775 3199 2995 3736 +12609 4 2 28 1 1522 1491 1521 3263 +12610 4 2 28 1 2612 2787 2650 2937 +12611 4 2 28 1 2573 3095 3051 3592 +12612 4 2 28 1 1059 3167 2890 3809 +12613 4 2 28 1 2570 3241 3137 3242 +12614 4 2 28 1 2064 3642 2891 3793 +12615 4 2 28 1 2864 2809 3483 3847 +12616 4 2 28 1 1280 1106 811 3309 +12617 4 2 28 1 2629 3023 3285 3835 +12618 4 2 28 1 3028 3396 2599 3623 +12619 4 2 28 1 2561 3412 3740 3760 +12620 4 2 28 1 2392 3216 2401 3717 +12621 4 2 28 1 2555 2591 3428 3583 +12622 4 2 28 1 1599 1598 1545 3477 +12623 4 2 28 1 1540 1481 2915 3529 +12624 4 2 28 1 801 3100 231 3567 +12625 4 2 28 1 1505 1805 1687 2907 +12626 4 2 28 1 3028 3052 2548 3903 +12627 4 2 28 1 2635 2691 2677 3769 +12628 4 2 28 1 2877 1301 3198 3439 +12629 4 2 28 1 2392 2360 2363 3216 +12630 4 2 28 1 3122 3455 2627 3536 +12631 4 2 28 1 2000 1940 1982 3377 +12632 4 2 28 1 2586 2727 2688 2921 +12633 4 2 28 1 2869 3637 3213 3832 +12634 4 2 28 1 2399 3166 2413 3482 +12635 4 2 28 1 2043 2226 2284 3451 +12636 4 2 28 1 670 681 725 2924 +12637 4 2 28 1 2758 3133 2856 3200 +12638 4 2 28 1 2696 3136 2841 3584 +12639 4 2 28 1 1450 3059 1595 3706 +12640 4 2 28 1 2116 1810 529 3010 +12641 4 2 28 1 3183 3308 2604 3769 +12642 4 2 28 1 1367 2824 1773 3317 +12643 4 2 28 1 2683 3361 3207 3709 +12644 4 2 28 1 2036 2190 3413 3712 +12645 4 2 28 1 3027 3346 3067 3514 +12646 4 2 28 1 2725 3652 1961 3759 +12647 4 2 28 1 1811 673 2096 3096 +12648 4 2 28 1 3006 3032 2632 3518 +12649 4 2 28 1 1319 242 528 668 +12650 4 2 28 1 3008 3009 769 3930 +12651 4 2 28 1 1262 1200 1269 3026 +12652 4 2 28 1 1554 1593 3143 3164 +12653 4 2 28 1 2626 3004 2874 3690 +12654 4 2 28 1 1109 3087 993 3817 +12655 4 2 28 1 2695 2627 2833 3122 +12656 4 2 28 1 2692 3214 3501 3825 +12657 4 2 28 1 2212 1941 2019 3018 +12658 4 2 28 1 3000 2718 3322 3892 +12659 4 2 28 1 1132 1034 3014 3147 +12660 4 2 28 1 2101 2271 2056 2701 +12661 4 2 28 1 2750 2914 2619 3659 +12662 4 2 28 1 3079 3289 2670 3597 +12663 4 2 28 1 1201 3274 2826 3670 +12664 4 2 28 1 817 1190 815 3432 +12665 4 2 28 1 2741 3364 3112 3537 +12666 4 2 28 1 922 920 1159 3372 +12667 4 2 28 1 1842 2242 2118 3040 +12668 4 2 28 1 1453 1672 1464 3280 +12669 4 2 28 1 1569 1399 1642 3562 +12670 4 2 28 1 3192 3428 2761 3429 +12671 4 2 28 1 2022 2150 2725 3878 +12672 4 2 28 1 867 3038 868 3517 +12673 4 2 28 1 2667 2656 2916 3026 +12674 4 2 28 1 971 1165 1174 3294 +12675 4 2 28 1 1001 1220 1229 3296 +12676 4 2 28 1 1992 1976 1975 3415 +12677 4 2 28 1 2857 2971 2579 3799 +12678 4 2 28 1 2503 2493 2524 3586 +12679 4 2 28 1 1585 2074 1332 3549 +12680 4 2 28 1 2342 2534 2375 3519 +12681 4 2 28 1 3164 3041 3658 3889 +12682 4 2 28 1 2587 2860 2646 3290 +12683 4 2 28 1 668 2999 2924 3785 +12684 4 2 28 1 3416 3436 1055 3817 +12685 4 2 28 1 1470 1436 1456 3812 +12686 4 2 28 1 2564 3039 2845 3177 +12687 4 2 28 1 2647 2661 2566 3141 +12688 4 2 28 1 2601 2843 3825 3899 +12689 4 2 28 1 2982 3581 2840 3778 +12690 4 2 28 1 2599 2744 2638 2812 +12691 4 2 28 1 882 892 874 3447 +12692 4 2 28 1 2694 3380 2946 3811 +12693 4 2 28 1 2343 104 2393 1591 +12694 4 2 28 1 1013 1262 3026 3535 +12695 4 2 28 1 1811 673 264 2096 +12696 4 2 28 1 2563 3054 2612 3190 +12697 4 2 28 1 338 352 2985 3056 +12698 4 2 28 1 784 145 2138 1164 +12699 4 2 28 1 2227 1986 2065 2904 +12700 4 2 28 1 1507 1512 1785 3603 +12701 4 2 28 1 1913 2205 3039 3180 +12702 4 2 28 1 1720 1650 1537 3555 +12703 4 2 28 1 1727 1512 1513 3603 +12704 4 2 28 1 2714 2756 2603 3744 +12705 4 2 28 1 1317 1166 1189 3393 +12706 4 2 28 1 2712 2824 3317 3607 +12707 4 2 28 1 1584 1762 1742 3317 +12708 4 2 28 1 2684 2820 2640 3583 +12709 4 2 28 1 2046 2215 3480 3559 +12710 4 2 28 1 2858 3253 3195 3315 +12711 4 2 28 1 1276 1257 1272 3182 +12712 4 2 28 1 2823 3495 3426 3549 +12713 4 2 28 1 971 909 1165 3276 +12714 4 2 28 1 1156 1159 965 3372 +12715 4 2 28 1 2632 3006 3204 3355 +12716 4 2 28 1 2557 3021 2966 3497 +12717 4 2 28 1 3140 2842 3649 3848 +12718 4 2 28 1 418 289 481 3332 +12719 4 2 28 1 3311 3554 2678 3715 +12720 4 2 28 1 853 3887 3381 3925 +12721 4 2 28 1 3039 3377 1940 3451 +12722 4 2 28 1 740 772 767 3388 +12723 4 2 28 1 2642 2965 3119 3611 +12724 4 2 28 1 3151 2960 3761 3918 +12725 4 2 28 1 2949 2666 3481 3482 +12726 4 2 28 1 737 730 635 3010 +12727 4 2 28 1 2391 2418 98 2338 +12728 4 2 28 1 2580 3264 2558 3522 +12729 4 2 28 1 650 2999 2894 3333 +12730 4 2 28 1 985 1014 1065 3072 +12731 4 2 28 1 3028 3241 2791 3326 +12732 4 2 28 1 922 3187 921 3790 +12733 4 2 28 1 2547 3053 2944 3522 +12734 4 2 28 1 2232 2119 2014 3139 +12735 4 2 28 1 3180 3386 2961 3652 +12736 4 2 28 1 2037 2830 2193 3283 +12737 4 2 28 1 2777 2874 3337 3828 +12738 4 2 28 1 1093 3011 3147 3859 +12739 4 2 28 1 1650 797 1710 3298 +12740 4 2 28 1 894 2965 896 3453 +12741 4 2 28 1 2656 2709 2828 3665 +12742 4 2 28 1 2970 3229 2821 3862 +12743 4 2 28 1 2583 3142 2555 3606 +12744 4 2 28 1 2627 2833 3276 3294 +12745 4 2 28 1 450 2952 334 3805 +12746 4 2 28 1 2942 3425 3409 3576 +12747 4 2 28 1 2167 3559 2039 3910 +12748 4 2 28 1 1625 3090 276 3366 +12749 4 2 28 1 1880 3404 1864 3527 +12750 4 2 28 1 2103 527 2900 3726 +12751 4 2 28 1 1183 1278 2937 3492 +12752 4 2 28 1 1826 2051 2052 3106 +12753 4 2 28 1 2580 2944 2624 3486 +12754 4 2 28 1 3316 3459 926 3880 +12755 4 2 28 1 1966 2931 2672 3646 +12756 4 2 28 1 2546 2582 3239 3301 +12757 4 2 28 1 2280 1881 3110 3322 +12758 4 2 28 1 2806 3216 3071 3865 +12759 4 2 28 1 2558 2580 3522 3801 +12760 4 2 28 1 2802 3594 3078 3901 +12761 4 2 28 1 3457 3507 2764 3926 +12762 4 2 28 1 1084 3227 2919 3410 +12763 4 2 28 1 1956 2075 2237 3549 +12764 4 2 28 1 3172 3419 3153 3711 +12765 4 2 28 1 811 3116 1280 3309 +12766 4 2 28 1 344 3056 338 3917 +12767 4 2 28 1 2022 2269 3494 3759 +12768 4 2 28 1 2594 3338 2757 3531 +12769 4 2 28 1 1950 3078 1955 3755 +12770 4 2 28 1 2647 3062 2736 3730 +12771 4 2 28 1 980 1023 1055 3416 +12772 4 2 28 1 2576 3544 3027 3713 +12773 4 2 28 1 2726 3292 2883 3464 +12774 4 2 28 1 2566 2555 3192 3606 +12775 4 2 28 1 2386 2352 2355 3496 +12776 4 2 28 1 945 988 3144 3435 +12777 4 2 28 1 378 3678 2680 3728 +12778 4 2 28 1 2218 2680 3313 3408 +12779 4 2 28 1 1421 1458 1807 3192 +12780 4 2 28 1 1613 175 282 409 +12781 4 2 28 1 3202 3300 1457 3362 +12782 4 2 28 1 2556 3786 2797 3903 +12783 4 2 28 1 892 1138 1193 3447 +12784 4 2 28 1 2694 2919 2619 3915 +12785 4 2 28 1 1146 1221 941 3452 +12786 4 2 28 1 2523 2495 78 2127 +12787 4 2 28 1 2251 2112 1830 3168 +12788 4 2 28 1 1474 1476 1475 3706 +12789 4 2 28 1 2031 2127 1833 3030 +12790 4 2 28 1 2930 3196 2724 3374 +12791 4 2 28 1 3651 3657 2781 3884 +12792 4 2 28 1 1978 3140 2910 3640 +12793 4 2 28 1 3242 2889 3673 3799 +12794 4 2 28 1 2729 2768 2723 3307 +12795 4 2 28 1 2699 2923 2755 3201 +12796 4 2 28 1 870 2921 871 3517 +12797 4 2 28 1 923 3187 922 3880 +12798 4 2 28 1 2432 2433 3367 3575 +12799 4 2 28 1 1761 1338 3549 3746 +12800 4 2 28 1 2552 2764 3507 3926 +12801 4 2 28 1 2887 1178 3695 3925 +12802 4 2 28 1 2296 3164 2318 3889 +12803 4 2 28 1 2604 2724 2627 3536 +12804 4 2 28 1 1721 1466 1659 3335 +12805 4 2 28 1 996 3187 923 3880 +12806 4 2 28 1 2098 2687 2194 3217 +12807 4 2 28 1 2459 2460 2423 3040 +12808 4 2 28 1 711 645 720 3148 +12809 4 2 28 1 2607 3464 3211 3465 +12810 4 2 28 1 2540 2762 3169 3604 +12811 4 2 28 1 2815 2688 2989 3234 +12812 4 2 28 1 2890 3018 2827 3377 +12813 4 2 28 1 661 3323 3118 3510 +12814 4 2 28 1 2458 2455 2473 3271 +12815 4 2 28 1 3079 3597 2941 3684 +12816 4 2 28 1 867 851 3038 3595 +12817 4 2 28 1 2595 3264 3686 3904 +12818 4 2 28 1 3551 3761 2960 3918 +12819 4 2 28 1 1281 802 1106 3309 +12820 4 2 28 1 2227 2891 1971 3407 +12821 4 2 28 1 2417 2482 1826 3106 +12822 4 2 28 1 2376 2379 2342 3422 +12823 4 2 28 1 2521 3297 2510 3797 +12824 4 2 28 1 2550 3205 2871 3206 +12825 4 2 28 1 2710 3127 3052 3610 +12826 4 2 28 1 2935 2721 3576 3852 +12827 4 2 28 1 2816 3288 3091 3468 +12828 4 2 28 1 2667 3231 2559 3687 +12829 4 2 28 1 119 1168 788 1466 +12830 4 2 28 1 241 1630 1622 681 +12831 4 2 28 1 2821 2827 2706 3372 +12832 4 2 28 1 2557 2642 3773 3849 +12833 4 2 28 1 1025 964 1187 3434 +12834 4 2 28 1 1821 1332 2074 3549 +12835 4 2 28 1 1760 1493 3362 3387 +12836 4 2 28 1 3046 3209 2965 3611 +12837 4 2 28 1 2627 2825 2695 3294 +12838 4 2 28 1 1126 3505 3416 3664 +12839 4 2 28 1 1863 1861 1860 3458 +12840 4 2 28 1 2769 3555 2832 3934 +12841 4 2 28 1 2146 1151 2004 3226 +12842 4 2 28 1 1120 2916 210 3535 +12843 4 2 28 1 2045 3480 1947 3933 +12844 4 2 28 1 2826 3274 1201 3284 +12845 4 2 28 1 1517 1586 1735 3375 +12846 4 2 28 1 2080 3101 289 3929 +12847 4 2 28 1 2648 3133 3174 3624 +12848 4 2 28 1 2601 2957 3446 3757 +12849 4 2 28 1 2580 3264 3053 3891 +12850 4 2 28 1 2652 3471 3222 3582 +12851 4 2 28 1 1246 2929 1039 3831 +12852 4 2 28 1 2287 3457 2959 3631 +12853 4 2 28 1 2675 2801 3336 3421 +12854 4 2 28 1 1962 2739 2240 3293 +12855 4 2 28 1 2230 3371 2851 3646 +12856 4 2 28 1 998 1173 1171 3374 +12857 4 2 28 1 2782 3046 2642 3849 +12858 4 2 28 1 2625 2714 2702 2895 +12859 4 2 28 1 1207 976 943 3331 +12860 4 2 28 1 2549 2566 2591 3428 +12861 4 2 28 1 3125 3383 2796 3715 +12862 4 2 28 1 396 3086 3025 3672 +12863 4 2 28 1 1147 841 839 3369 +12864 4 2 28 1 2544 3852 3736 3912 +12865 4 2 28 1 621 629 630 3421 +12866 4 2 28 1 1869 1871 1870 3347 +12867 4 2 28 1 1558 2894 1678 3333 +12868 4 2 28 1 1872 1869 2084 3680 +12869 4 2 28 1 321 2940 318 3681 +12870 4 2 28 1 2793 3145 2630 3750 +12871 4 2 28 1 1804 1523 1709 3584 +12872 4 2 28 1 674 2900 527 3726 +12873 4 2 28 1 841 843 840 3369 +12874 4 2 28 1 2157 2739 3101 3929 +12875 4 2 28 1 1053 979 1024 3305 +12876 4 2 28 1 3544 3624 2910 3640 +12877 4 2 28 1 318 2940 442 3681 +12878 4 2 28 1 2245 2657 2007 3356 +12879 4 2 28 1 1027 1285 1317 3393 +12880 4 2 28 1 409 478 2918 3366 +12881 4 2 28 1 2573 3075 3213 3637 +12882 4 2 28 1 2168 3133 2069 3720 +12883 4 2 28 1 2549 2577 3585 3722 +12884 4 2 28 1 2663 3179 2996 3855 +12885 4 2 28 1 1399 1568 1390 3562 +12886 4 2 28 1 2596 3112 3364 3537 +12887 4 2 28 1 768 2896 779 3336 +12888 4 2 28 1 2865 1375 3033 3735 +12889 4 2 28 1 3242 3391 2570 3799 +12890 4 2 28 1 1173 1147 1175 3374 +12891 4 2 28 1 1296 1088 3087 3335 +12892 4 2 28 1 2156 1978 3140 3528 +12893 4 2 28 1 2784 3551 3412 3918 +12894 4 2 28 1 2519 3246 2504 3778 +12895 4 2 28 1 1882 1891 3267 3322 +12896 4 2 28 1 3478 3503 2892 3702 +12897 4 2 28 1 2416 2463 2479 3653 +12898 4 2 28 1 1850 2196 3269 3426 +12899 4 2 28 1 2657 2757 2658 3252 +12900 4 2 28 1 2420 72 2493 2457 +12901 4 2 28 1 2040 2038 3627 3910 +12902 4 2 28 1 410 2934 281 3697 +12903 4 2 28 1 2013 2012 2011 3733 +12904 4 2 28 1 1427 2822 1428 3546 +12905 4 2 28 1 209 483 3128 3548 +12906 4 2 28 1 1913 3039 2845 3742 +12907 4 2 28 1 2283 2163 1973 3373 +12908 4 2 28 1 1425 1416 1674 3387 +12909 4 2 28 1 2552 3430 2625 3926 +12910 4 2 28 1 2801 2933 2675 3336 +12911 4 2 28 1 2279 2146 2114 3194 +12912 4 2 28 1 2377 2376 2365 3422 +12913 4 2 28 1 1018 1016 1274 3284 +12914 4 2 28 1 2560 3390 3123 3493 +12915 4 2 28 1 2714 2913 2756 3516 +12916 4 2 28 1 2584 2759 3054 3896 +12917 4 2 28 1 932 3240 3459 3834 +12918 4 2 28 1 3011 3203 961 3469 +12919 4 2 28 1 2858 3208 3060 3478 +12920 4 2 28 1 1022 981 961 3203 +12921 4 2 28 1 2599 2628 3156 3683 +12922 4 2 28 1 3113 3607 2712 3720 +12923 4 2 28 1 2621 2900 3096 3097 +12924 4 2 28 1 1486 1514 2664 3686 +12925 4 2 28 1 2789 3114 2597 3782 +12926 4 2 28 1 2613 2997 3229 3572 +12927 4 2 28 1 1667 1668 1326 2977 +12928 4 2 28 1 2673 2957 3446 3534 +12929 4 2 28 1 3110 3282 2718 3541 +12930 4 2 28 1 2720 3559 3078 3910 +12931 4 2 28 1 2125 3847 3275 3935 +12932 4 2 28 1 2983 3684 3304 3798 +12933 4 2 28 1 3317 3549 2075 3607 +12934 4 2 28 1 2850 2543 3428 3429 +12935 4 2 28 1 1688 1513 2682 3277 +12936 4 2 28 1 1730 1639 1346 3571 +12937 4 2 28 1 432 176 282 1616 +12938 4 2 28 1 1786 1723 1590 3243 +12939 4 2 28 1 1112 800 1117 3314 +12940 4 2 28 1 2592 2725 2859 3512 +12941 4 2 28 1 997 3070 999 3145 +12942 4 2 28 1 2543 3429 3557 3767 +12943 4 2 28 1 1526 1776 1528 3384 +12944 4 2 28 1 2643 3167 2976 3523 +12945 4 2 28 1 2503 2527 3246 3586 +12946 4 2 28 1 1466 119 1168 1667 +12947 4 2 28 1 2761 3202 3192 3437 +12948 4 2 28 1 2662 2803 2622 2826 +12949 4 2 28 1 1239 1228 829 3397 +12950 4 2 28 1 3223 3494 2269 3759 +12951 4 2 28 1 691 549 548 2907 +12952 4 2 28 1 1008 3016 1077 3671 +12953 4 2 28 1 2796 3043 3402 3740 +12954 4 2 28 1 3167 3194 2890 3729 +12955 4 2 28 1 2557 3773 2642 3774 +12956 4 2 28 1 2678 2979 3253 3554 +12957 4 2 28 1 650 2894 3044 3509 +12958 4 2 28 1 2856 3515 3174 3624 +12959 4 2 28 1 603 2901 616 3885 +12960 4 2 28 1 2599 3623 2638 3683 +12961 4 2 28 1 2057 2701 2055 3338 +12962 4 2 28 1 219 1243 799 3342 +12963 4 2 28 1 2611 3046 2782 3849 +12964 4 2 28 1 2676 2951 2747 3221 +12965 4 2 28 1 2823 2568 3426 3495 +12966 4 2 28 1 701 2913 566 3073 +12967 4 2 28 1 34 1836 2321 2118 +12968 4 2 28 1 2733 2650 2934 3047 +12969 4 2 28 1 575 588 587 3022 +12970 4 2 28 1 1201 2826 3128 3670 +12971 4 2 28 1 996 969 3187 3821 +12972 4 2 28 1 1408 1375 2865 3735 +12973 4 2 28 1 2007 2657 2058 3525 +12974 4 2 28 1 1145 3173 897 3453 +12975 4 2 28 1 2541 2889 3635 3799 +12976 4 2 28 1 553 2873 554 3526 +12977 4 2 28 1 2705 3280 2936 3724 +12978 4 2 28 1 571 572 565 3385 +12979 4 2 28 1 1004 1038 1234 3092 +12980 4 2 28 1 216 1818 766 3273 +12981 4 2 28 1 2593 3420 2770 3786 +12982 4 2 28 1 706 565 578 3385 +12983 4 2 28 1 1946 1948 1949 3755 +12984 4 2 28 1 1899 3275 2186 3440 +12985 4 2 28 1 925 926 924 3316 +12986 4 2 28 1 358 3270 3678 3764 +12987 4 2 28 1 671 2116 259 529 +12988 4 2 28 1 2544 3399 3190 3662 +12989 4 2 28 1 2045 2099 3337 3933 +12990 4 2 28 1 2567 3301 3183 3547 +12991 4 2 28 1 2570 3241 3028 3623 +12992 4 2 28 1 1466 1667 1168 3150 +12993 4 2 28 1 3079 3637 2753 3869 +12994 4 2 28 1 2771 3068 3609 3718 +12995 4 2 28 1 2855 3831 3452 3921 +12996 4 2 28 1 2218 2219 2120 2680 +12997 4 2 28 1 669 2999 668 3785 +12998 4 2 28 1 1696 2191 1350 3143 +12999 4 2 28 1 1510 2740 1725 3707 +13000 4 2 28 1 2843 2957 3754 3899 +13001 4 2 28 1 2996 2743 3254 3748 +13002 4 2 28 1 445 508 444 3344 +13003 4 2 28 1 2832 3555 1096 3934 +13004 4 2 28 1 2187 3527 2092 3528 +13005 4 2 28 1 1442 2936 1434 3691 +13006 4 2 28 1 2580 2664 2894 3044 +13007 4 2 28 1 1789 1740 1639 3571 +13008 4 2 28 1 2208 2013 2011 3084 +13009 4 2 28 1 2502 2505 3581 3778 +13010 4 2 28 1 3137 3242 2551 3799 +13011 4 2 28 1 1301 2877 1264 3439 +13012 4 2 28 1 2843 3754 3093 3899 +13013 4 2 28 1 2859 3342 3146 3871 +13014 4 2 28 1 788 1466 1168 3150 +13015 4 2 28 1 2150 3652 2725 3878 +13016 4 2 28 1 1446 1430 1425 2752 +13017 4 2 28 1 1764 1620 3280 3838 +13018 4 2 28 1 2975 2976 917 3790 +13019 4 2 28 1 1831 2331 2192 3032 +13020 4 2 28 1 2414 3383 3125 3715 +13021 4 2 28 1 1145 3057 1020 3173 +13022 4 2 28 1 507 426 427 3433 +13023 4 2 28 1 2627 3122 2695 3455 +13024 4 2 28 1 2771 3718 3484 3727 +13025 4 2 28 1 2756 2757 3148 3553 +13026 4 2 28 1 495 506 386 3633 +13027 4 2 28 1 2005 2003 3340 3448 +13028 4 2 28 1 516 3047 457 3088 +13029 4 2 28 1 2583 2681 2640 2783 +13030 4 2 28 1 2863 3510 2899 3781 +13031 4 2 28 1 2730 3005 3641 3854 +13032 4 2 28 1 1160 3524 3011 3859 +13033 4 2 28 1 2601 3761 3151 3825 +13034 4 2 28 1 2582 3183 2546 3299 +13035 4 2 28 1 906 3276 3629 3870 +13036 4 2 28 1 2959 3457 2578 3507 +13037 4 2 28 1 2627 2852 2825 3276 +13038 4 2 28 1 1284 3229 2997 3572 +13039 4 2 28 1 2054 3041 2159 3518 +13040 4 2 28 1 578 572 579 3385 +13041 4 2 28 1 1867 2017 2238 3680 +13042 4 2 28 1 1337 2393 104 1591 +13043 4 2 28 1 1055 1296 3087 3436 +13044 4 2 28 1 2923 3389 2899 3502 +13045 4 2 28 1 1908 1905 2966 3908 +13046 4 2 28 1 1194 3119 896 3611 +13047 4 2 28 1 2629 3068 3222 3835 +13048 4 2 28 1 3399 3424 2562 3662 +13049 4 2 28 1 2597 2763 3036 3455 +13050 4 2 28 1 1815 2148 790 3139 +13051 4 2 28 1 2565 2606 2687 2837 +13052 4 2 28 1 2583 2681 2680 3142 +13053 4 2 28 1 2653 2689 2584 2880 +13054 4 2 28 1 1117 3130 3015 3314 +13055 4 2 28 1 836 837 838 3538 +13056 4 2 28 1 1177 1188 990 3380 +13057 4 2 28 1 2586 2902 3360 3399 +13058 4 2 28 1 1444 3264 1485 3891 +13059 4 2 28 1 1140 1141 1142 3349 +13060 4 2 28 1 2575 3306 3616 3727 +13061 4 2 28 1 572 2884 707 3732 +13062 4 2 28 1 842 840 1129 3431 +13063 4 2 28 1 2575 3132 2994 3483 +13064 4 2 28 1 2550 3199 2995 3205 +13065 4 2 28 1 793 3225 3671 3694 +13066 4 2 28 1 1745 1558 1678 3333 +13067 4 2 28 1 358 3626 3270 3679 +13068 4 2 28 1 2722 2821 3229 3325 +13069 4 2 28 1 2866 3342 686 3502 +13070 4 2 28 1 2390 106 1346 2337 +13071 4 2 28 1 1298 3176 3505 3667 +13072 4 2 28 1 663 1631 2999 3333 +13073 4 2 28 1 2497 2345 2538 3175 +13074 4 2 28 1 581 698 590 3359 +13075 4 2 28 1 2627 2974 2852 3276 +13076 4 2 28 1 818 816 986 3328 +13077 4 2 28 1 2371 2401 2392 3216 +13078 4 2 28 1 2055 1916 3338 3462 +13079 4 2 28 1 1130 1237 1129 3431 +13080 4 2 28 1 1734 1539 1375 3033 +13081 4 2 28 1 2021 2188 2742 3273 +13082 4 2 28 1 1767 1605 2954 3456 +13083 4 2 28 1 689 2908 688 3768 +13084 4 2 28 1 2603 2756 2669 3521 +13085 4 2 28 1 838 842 1217 3538 +13086 4 2 28 1 623 647 2923 3467 +13087 4 2 28 1 2772 3503 3478 3702 +13088 4 2 28 1 1559 1560 1798 2877 +13089 4 2 28 1 2527 2528 2513 3519 +13090 4 2 28 1 2360 2359 2361 3402 +13091 4 2 28 1 1767 3456 2954 3584 +13092 4 2 28 1 2205 1939 3039 3856 +13093 4 2 28 1 2851 3116 3309 3787 +13094 4 2 28 1 1447 1718 1439 3136 +13095 4 2 28 1 2339 2471 2402 3262 +13096 4 2 28 1 528 1319 668 2999 +13097 4 2 28 1 3133 3357 2648 3720 +13098 4 2 28 1 2556 2637 3219 3334 +13099 4 2 28 1 983 974 1188 3380 +13100 4 2 28 1 2613 2970 2799 3572 +13101 4 2 28 1 463 2964 471 3765 +13102 4 2 28 1 1578 1577 1706 3025 +13103 4 2 28 1 1716 1519 1690 3176 +13104 4 2 28 1 2695 3005 2833 3294 +13105 4 2 28 1 3086 3591 3025 3672 +13106 4 2 28 1 2672 2931 3309 3646 +13107 4 2 28 1 2647 2922 2686 3362 +13108 4 2 28 1 354 3678 2783 3765 +13109 4 2 28 1 2437 2467 3063 3884 +13110 4 2 28 1 431 415 494 2987 +13111 4 2 28 1 2590 3390 3155 3750 +13112 4 2 28 1 1535 1763 2697 3077 +13113 4 2 28 1 2674 3036 2574 3900 +13114 4 2 28 1 1750 3065 1437 3842 +13115 4 2 28 1 1785 1617 1435 3231 +13116 4 2 28 1 1574 1368 1719 3569 +13117 4 2 28 1 2715 3233 3020 3761 +13118 4 2 28 1 2209 2035 2286 3244 +13119 4 2 28 1 416 283 418 3332 +13120 4 2 28 1 2628 2675 3156 3683 +13121 4 2 28 1 2784 3222 3068 3835 +13122 4 2 28 1 2508 3297 2521 3703 +13123 4 2 28 1 2620 3231 2838 3238 +13124 4 2 28 1 2498 2535 2518 3370 +13125 4 2 28 1 347 348 402 3307 +13126 4 2 28 1 1250 3119 1194 3611 +13127 4 2 28 1 2610 2703 2848 3349 +13128 4 2 28 1 2290 2241 2890 3194 +13129 4 2 28 1 1969 1940 3377 3451 +13130 4 2 28 1 2883 3292 2726 3319 +13131 4 2 28 1 1156 1155 1026 3325 +13132 4 2 28 1 2919 2694 3350 3811 +13133 4 2 28 1 906 3629 3276 3902 +13134 4 2 28 1 1034 3147 3011 3469 +13135 4 2 28 1 1412 2822 3857 3932 +13136 4 2 28 1 1684 2938 3824 3842 +13137 4 2 28 1 2765 2691 3092 3320 +13138 4 2 28 1 1913 2845 1902 3742 +13139 4 2 28 1 783 207 206 3274 +13140 4 2 28 1 2164 2156 1978 3140 +13141 4 2 28 1 1031 1168 2977 3784 +13142 4 2 28 1 2542 3382 2710 3731 +13143 4 2 28 1 2735 3511 3100 3768 +13144 4 2 28 1 2630 3533 2855 3750 +13145 4 2 28 1 1891 1894 1909 3267 +13146 4 2 28 1 599 698 583 3359 +13147 4 2 28 1 2423 2484 2335 3040 +13148 4 2 28 1 1179 853 856 3381 +13149 4 2 28 1 2098 2885 2687 3217 +13150 4 2 28 1 1558 2894 2624 3486 +13151 4 2 28 1 2461 2450 2417 3106 +13152 4 2 28 1 1687 1633 1505 3077 +13153 4 2 28 1 2615 3346 3027 3514 +13154 4 2 28 1 2041 3485 2871 3557 +13155 4 2 28 1 562 2913 566 3700 +13156 4 2 28 1 2760 3371 2703 3774 +13157 4 2 28 1 657 2735 3009 3768 +13158 4 2 28 1 653 700 774 3096 +13159 4 2 28 1 2841 2558 3327 3904 +13160 4 2 28 1 2390 1573 2396 3125 +13161 4 2 28 1 731 3007 646 3221 +13162 4 2 28 1 447 3693 3794 3804 +13163 4 2 28 1 2808 3632 3380 3893 +13164 4 2 28 1 1755 1538 1720 3083 +13165 4 2 28 1 917 2976 2975 3513 +13166 4 2 28 1 2402 2382 3262 3598 +13167 4 2 28 1 1412 1411 1403 3932 +13168 4 2 28 1 377 3442 366 3633 +13169 4 2 28 1 995 994 1026 3325 +13170 4 2 28 1 1870 1876 1868 3347 +13171 4 2 28 1 2671 3009 3008 3930 +13172 4 2 28 1 2627 3455 3308 3536 +13173 4 2 28 1 1698 1487 1624 2990 +13174 4 2 28 1 277 2107 414 2987 +13175 4 2 28 1 2469 2416 2489 3042 +13176 4 2 28 1 2404 2339 2384 3714 +13177 4 2 28 1 2631 2793 2732 3431 +13178 4 2 28 1 835 1239 831 3411 +13179 4 2 28 1 2818 2654 3144 3795 +13180 4 2 28 1 2930 3369 3196 3374 +13181 4 2 28 1 1893 1910 1895 3154 +13182 4 2 28 1 833 2872 3343 3538 +13183 4 2 28 1 3048 3256 2745 3853 +13184 4 2 28 1 2372 2386 2355 3104 +13185 4 2 28 1 3048 3124 2745 3256 +13186 4 2 28 1 2580 3053 3264 3522 +13187 4 2 28 1 3050 3775 1083 3784 +13188 4 2 28 1 2589 2722 2827 3705 +13189 4 2 28 1 2887 3473 970 3925 +13190 4 2 28 1 2605 2866 2755 2923 +13191 4 2 28 1 1531 3423 3208 3478 +13192 4 2 28 1 1065 3072 1067 3341 +13193 4 2 28 1 1990 2687 2121 2885 +13194 4 2 28 1 1651 2686 1614 2918 +13195 4 2 28 1 412 3655 411 3929 +13196 4 2 28 1 1482 3214 1422 3501 +13197 4 2 28 1 2832 3263 3121 3298 +13198 4 2 28 1 3122 3123 2600 3493 +13199 4 2 28 1 520 2932 400 3353 +13200 4 2 28 1 1957 1981 3594 3910 +13201 4 2 28 1 1721 1781 1561 3335 +13202 4 2 28 1 1139 1091 1141 3349 +13203 4 2 28 1 2786 2820 2640 3074 +13204 4 2 28 1 824 1230 866 3410 +13205 4 2 28 1 812 1075 3494 3512 +13206 4 2 28 1 2798 2649 3038 3887 +13207 4 2 28 1 2980 3135 3882 3898 +13208 4 2 28 1 686 647 756 3467 +13209 4 2 28 1 1476 3375 1475 3706 +13210 4 2 28 1 1797 2877 1660 3198 +13211 4 2 28 1 2168 2211 3133 3720 +13212 4 2 28 1 1835 2051 86 2482 +13213 4 2 28 1 2391 2344 2481 3271 +13214 4 2 28 1 2707 3702 2892 3703 +13215 4 2 28 1 2558 3235 2857 3888 +13216 4 2 28 1 1047 1121 1044 3350 +13217 4 2 28 1 2562 3543 3662 3928 +13218 4 2 28 1 783 1205 1274 3274 +13219 4 2 28 1 2762 3444 3188 3604 +13220 4 2 28 1 2662 2611 2766 2887 +13221 4 2 28 1 236 542 548 1608 +13222 4 2 28 1 3105 3236 2857 3723 +13223 4 2 28 1 2167 2039 1957 3910 +13224 4 2 28 1 1570 3143 1593 3164 +13225 4 2 28 1 595 2947 596 3741 +13226 4 2 28 1 1957 3594 3078 3910 +13227 4 2 28 1 2082 2646 3086 3591 +13228 4 2 28 1 2613 3386 3180 3878 +13229 4 2 28 1 463 439 2964 3789 +13230 4 2 28 1 2661 2922 2647 3362 +13231 4 2 28 1 1483 1595 1450 3059 +13232 4 2 28 1 2656 2655 2916 3129 +13233 4 2 28 1 2844 2937 795 3704 +13234 4 2 28 1 2480 1842 83 2460 +13235 4 2 28 1 2817 2872 2730 3343 +13236 4 2 28 1 600 587 3022 3252 +13237 4 2 28 1 2867 1012 3563 3890 +13238 4 2 28 1 3050 3150 2789 3775 +13239 4 2 28 1 392 3353 400 3920 +13240 4 2 28 1 1807 1457 3202 3300 +13241 4 2 28 1 722 651 748 3333 +13242 4 2 28 1 2809 2864 3354 3847 +13243 4 2 28 1 282 1324 2918 3707 +13244 4 2 28 1 2983 3246 2819 3586 +13245 4 2 28 1 3121 3298 1094 3922 +13246 4 2 28 1 416 524 2998 3332 +13247 4 2 28 1 2346 2326 2332 3260 +13248 4 2 28 1 3003 3631 2853 3680 +13249 4 2 28 1 2691 2811 3224 3320 +13250 4 2 28 1 2561 3709 2835 3919 +13251 4 2 28 1 2630 2730 2600 3493 +13252 4 2 28 1 1531 1652 1532 3423 +13253 4 2 28 1 2340 2395 2407 3554 +13254 4 2 28 1 2305 2308 2309 3351 +13255 4 2 28 1 2817 3376 2719 3927 +13256 4 2 28 1 2177 2054 2159 3518 +13257 4 2 28 1 1200 1270 3026 3556 +13258 4 2 28 1 812 1252 3223 3494 +13259 4 2 28 1 2361 2388 3311 3715 +13260 4 2 28 1 2564 3137 2609 3251 +13261 4 2 28 1 1447 3584 3136 3749 +13262 4 2 28 1 707 2884 3550 3732 +13263 4 2 28 1 2901 2895 3365 3608 +13264 4 2 28 1 2578 3507 3457 3926 +13265 4 2 28 1 108 2396 1573 2340 +13266 4 2 28 1 409 2918 1613 3366 +13267 4 2 28 1 1469 3268 1702 3470 +13268 4 2 28 1 387 404 3168 3368 +13269 4 2 28 1 2902 3021 2557 3774 +13270 4 2 28 1 2643 2975 2976 3513 +13271 4 2 28 1 2724 3374 3196 3661 +13272 4 2 28 1 2068 2069 2070 3133 +13273 4 2 28 1 2148 2010 144 1289 +13274 4 2 28 1 703 3022 575 3553 +13275 4 2 28 1 2726 2829 3464 3713 +13276 4 2 28 1 1330 1597 3335 3436 +13277 4 2 28 1 2732 3431 3145 3566 +13278 4 2 28 1 3091 3468 2720 3480 +13279 4 2 28 1 2792 3134 3399 3466 +13280 4 2 28 1 768 2896 3441 3625 +13281 4 2 28 1 713 3526 619 3573 +13282 4 2 28 1 2630 2634 2855 3329 +13283 4 2 28 1 220 219 536 3342 +13284 4 2 28 1 894 896 897 3453 +13285 4 2 28 1 2934 3088 3047 3697 +13286 4 2 28 1 1207 1079 1010 3107 +13287 4 2 28 1 2302 2305 3103 3873 +13288 4 2 28 1 2578 2863 2621 3405 +13289 4 2 28 1 551 3008 553 3474 +13290 4 2 28 1 2306 3351 3094 3685 +13291 4 2 28 1 1840 2174 2040 3189 +13292 4 2 28 1 2134 2997 2246 3341 +13293 4 2 28 1 394 389 377 3442 +13294 4 2 28 1 1022 3203 1030 3784 +13295 4 2 28 1 2617 3061 2909 3244 +13296 4 2 28 1 2843 2743 3348 3570 +13297 4 2 28 1 1580 1828 1339 1775 +13298 4 2 28 1 2549 2566 3202 3387 +13299 4 2 28 1 1412 1427 1411 3857 +13300 4 2 28 1 583 581 582 3359 +13301 4 2 28 1 1667 1668 2977 3150 +13302 4 2 28 1 2427 31 2299 2423 +13303 4 2 28 1 2016 2238 1953 3401 +13304 4 2 28 1 71 2524 2457 2424 +13305 4 2 28 1 2725 3435 2859 3512 +13306 4 2 28 1 1433 3135 2822 3932 +13307 4 2 28 1 2789 3150 3050 3666 +13308 4 2 28 1 1960 3223 1252 3494 +13309 4 2 28 1 763 733 545 3273 +13310 4 2 28 1 1417 1416 1414 2943 +13311 4 2 28 1 725 2924 681 3573 +13312 4 2 28 1 699 618 717 3024 +13313 4 2 28 1 2960 3412 2561 3760 +13314 4 2 28 1 3515 3544 2829 3848 +13315 4 2 28 1 1490 1643 1521 3263 +13316 4 2 28 1 556 2905 586 3475 +13317 4 2 28 1 1966 3116 2931 3646 +13318 4 2 28 1 2005 2003 2008 3340 +13319 4 2 28 1 2525 2517 2495 3931 +13320 4 2 28 1 1693 3254 1758 3529 +13321 4 2 28 1 978 1257 1050 3182 +13322 4 2 28 1 2672 2650 2847 2934 +13323 4 2 28 1 518 2844 2932 3353 +13324 4 2 28 1 2579 3613 3507 3799 +13325 4 2 28 1 856 3224 860 3381 +13326 4 2 28 1 2717 2941 3574 3684 +13327 4 2 28 1 2276 2293 35 3476 +13328 4 2 28 1 2874 2777 3337 3454 +13329 4 2 28 1 2287 2959 2129 3631 +13330 4 2 28 1 389 390 367 3442 +13331 4 2 28 1 721 741 2908 3768 +13332 4 2 28 1 2435 2436 3186 3884 +13333 4 2 28 1 443 3394 2778 3679 +13334 4 2 28 1 528 668 669 2999 +13335 4 2 28 1 2832 1537 3555 3823 +13336 4 2 28 1 2721 2935 3424 3852 +13337 4 2 28 1 1806 1380 1534 3456 +13338 4 2 28 1 1754 1558 1745 3333 +13339 4 2 28 1 2971 3635 3242 3799 +13340 4 2 28 1 1714 2925 1329 3490 +13341 4 2 28 1 515 344 380 3917 +13342 4 2 28 1 2554 3455 3308 3724 +13343 4 2 28 1 200 3599 410 3655 +13344 4 2 28 1 1364 1782 1362 2944 +13345 4 2 28 1 437 506 495 3394 +13346 4 2 28 1 2356 2357 2355 3841 +13347 4 2 28 1 1800 3501 1401 3754 +13348 4 2 28 1 2413 2393 2337 3166 +13349 4 2 28 1 2272 3113 2132 3607 +13350 4 2 28 1 575 3022 577 3689 +13351 4 2 28 1 440 305 308 3074 +13352 4 2 28 1 532 770 664 3752 +13353 4 2 28 1 917 3513 2975 3530 +13354 4 2 28 1 2782 3543 2611 3849 +13355 4 2 28 1 1913 2267 3180 3742 +13356 4 2 28 1 1321 1621 690 3573 +13357 4 2 28 1 2803 3012 2766 3181 +13358 4 2 28 1 1661 3200 1747 3370 +13359 4 2 28 1 1633 2697 1505 3077 +13360 4 2 28 1 2642 3773 2760 3774 +13361 4 2 28 1 169 405 1320 1636 +13362 4 2 28 1 391 400 2932 3920 +13363 4 2 28 1 2444 3278 2441 3574 +13364 4 2 28 1 1915 1913 1939 3039 +13365 4 2 28 1 1684 2938 1744 3824 +13366 4 2 28 1 2041 3206 2871 3827 +13367 4 2 28 1 1505 1673 1461 3327 +13368 4 2 28 1 2863 3096 2275 3747 +13369 4 2 28 1 2839 3233 2942 3576 +13370 4 2 28 1 2496 2512 2511 3909 +13371 4 2 28 1 2548 2569 3156 3903 +13372 4 2 28 1 308 3074 303 3588 +13373 4 2 28 1 2097 428 2111 2885 +13374 4 2 28 1 1467 1435 1618 3171 +13375 4 2 28 1 3153 3419 2721 3852 +13376 4 2 28 1 2532 2495 2523 3030 +13377 4 2 28 1 2816 3468 3592 3866 +13378 4 2 28 1 2637 3818 3219 3915 +13379 4 2 28 1 2853 2698 3527 3649 +13380 4 2 28 1 1614 1651 1615 2686 +13381 4 2 28 1 2024 2081 3255 3802 +13382 4 2 28 1 2589 3177 3039 3705 +13383 4 2 28 1 2765 2974 2724 3184 +13384 4 2 28 1 705 578 580 3365 +13385 4 2 28 1 1437 1744 1684 2938 +13386 4 2 28 1 2641 2853 3347 3680 +13387 4 2 28 1 1835 87 2053 2416 +13388 4 2 28 1 1427 2822 3546 3857 +13389 4 2 28 1 2047 2048 2046 3091 +13390 4 2 28 1 2691 3224 3092 3320 +13391 4 2 28 1 1796 1586 1476 3375 +13392 4 2 28 1 2607 3310 3464 3846 +13393 4 2 28 1 2544 3424 3399 3662 +13394 4 2 28 1 2144 1299 2135 3494 +13395 4 2 28 1 1280 3116 1064 3309 +13396 4 2 28 1 2961 3668 2564 3742 +13397 4 2 28 1 3067 3514 3346 3771 +13398 4 2 28 1 2125 3275 1976 3935 +13399 4 2 28 1 2719 2745 2637 3818 +13400 4 2 28 1 3003 3401 2738 3668 +13401 4 2 28 1 2393 105 1572 1337 +13402 4 2 28 1 2930 3369 837 3538 +13403 4 2 28 1 2599 2719 3329 3818 +13404 4 2 28 1 2613 3072 2725 3878 +13405 4 2 28 1 1304 120 788 1466 +13406 4 2 28 1 3011 3050 2677 3524 +13407 4 2 28 1 801 230 3100 3511 +13408 4 2 28 1 2755 3225 2888 3441 +13409 4 2 28 1 2833 3661 2974 3870 +13410 4 2 28 1 1151 3226 1315 3669 +13411 4 2 28 1 2625 2754 2884 3001 +13412 4 2 28 1 2708 3068 3306 3582 +13413 4 2 28 1 976 3107 1010 3905 +13414 4 2 28 1 2560 3123 2911 3493 +13415 4 2 28 1 459 3697 487 3844 +13416 4 2 28 1 516 434 3088 3697 +13417 4 2 28 1 2906 3009 2735 3392 +13418 4 2 28 1 1608 548 236 1394 +13419 4 2 28 1 2814 3725 3049 3873 +13420 4 2 28 1 2071 2082 2646 3168 +13421 4 2 28 1 2188 2742 3223 3759 +13422 4 2 28 1 519 3168 284 3433 +13423 4 2 28 1 2579 2884 2659 3430 +13424 4 2 28 1 1161 992 3138 3595 +13425 4 2 28 1 2676 2927 2747 3157 +13426 4 2 28 1 2751 3324 3267 3912 +13427 4 2 28 1 2751 2544 3758 3912 +13428 4 2 28 1 2639 2638 2888 3391 +13429 4 2 28 1 618 3024 597 3719 +13430 4 2 28 1 1879 1884 1883 2958 +13431 4 2 28 1 2619 2637 3334 3915 +13432 4 2 28 1 2785 3023 3412 3740 +13433 4 2 28 1 1655 1731 1552 3772 +13434 4 2 28 1 2607 3310 2879 3464 +13435 4 2 28 1 2988 2746 3225 3671 +13436 4 2 28 1 1176 830 863 3376 +13437 4 2 28 1 598 580 590 3365 +13438 4 2 28 1 1444 3136 3053 3749 +13439 4 2 28 1 1975 1918 1974 3415 +13440 4 2 28 1 1853 2939 1852 3525 +13441 4 2 28 1 1884 2186 1900 3440 +13442 4 2 28 1 2723 2768 2655 3129 +13443 4 2 28 1 499 3109 389 3398 +13444 4 2 28 1 2905 3089 2774 3801 +13445 4 2 28 1 709 3044 636 3475 +13446 4 2 28 1 971 3294 972 3664 +13447 4 2 28 1 1167 921 3187 3790 +13448 4 2 28 1 2604 2691 2765 2811 +13449 4 2 28 1 2289 2039 3559 3910 +13450 4 2 28 1 2831 3259 3212 3485 +13451 4 2 28 1 2713 3596 3049 3725 +13452 4 2 28 1 2653 2733 2759 3896 +13453 4 2 28 1 2574 3546 3160 3900 +13454 4 2 28 1 2148 1289 3139 3283 +13455 4 2 28 1 1161 3138 1107 3520 +13456 4 2 28 1 2147 1158 1819 3669 +13457 4 2 28 1 2955 3751 3445 3846 +13458 4 2 28 1 377 367 366 3442 +13459 4 2 28 1 2914 3417 1314 3659 +13460 4 2 28 1 901 3196 900 3661 +13461 4 2 28 1 1084 1210 1230 3410 +13462 4 2 28 1 569 3148 711 3553 +13463 4 2 28 1 2167 1957 1950 3078 +13464 4 2 28 1 727 2951 764 3499 +13465 4 2 28 1 2661 2779 2566 3141 +13466 4 2 28 1 2180 3140 1892 3357 +13467 4 2 28 1 973 2946 982 3667 +13468 4 2 28 1 1625 276 174 409 +13469 4 2 28 1 103 2343 2397 1591 +13470 4 2 28 1 2590 3400 2631 3750 +13471 4 2 28 1 1696 2333 2191 3143 +13472 4 2 28 1 2883 3465 3464 3846 +13473 4 2 28 1 2589 2827 2821 3705 +13474 4 2 28 1 2935 3188 2546 3444 +13475 4 2 28 1 2192 3032 2293 3476 +13476 4 2 28 1 2634 3155 2609 3623 +13477 4 2 28 1 1654 1615 2686 3366 +13478 4 2 28 1 2100 2116 671 3010 +13479 4 2 28 1 2354 3265 2389 3861 +13480 4 2 28 1 2673 3446 3445 3534 +13481 4 2 28 1 2556 3219 2637 3818 +13482 4 2 28 1 995 1026 3229 3325 +13483 4 2 28 1 779 2896 768 3741 +13484 4 2 28 1 534 2882 228 3249 +13485 4 2 28 1 2634 2929 2855 3329 +13486 4 2 28 1 847 3196 901 3776 +13487 4 2 28 1 2034 2190 2239 3061 +13488 4 2 28 1 686 2923 2866 3502 +13489 4 2 28 1 1279 1182 1282 3291 +13490 4 2 28 1 2688 2727 2586 3360 +13491 4 2 28 1 2912 3634 723 3836 +13492 4 2 28 1 987 3114 1086 3775 +13493 4 2 28 1 3150 3775 3050 3784 +13494 4 2 28 1 2373 2364 2376 3865 +13495 4 2 28 1 1908 1907 1905 3908 +13496 4 2 28 1 2160 2051 1835 3218 +13497 4 2 28 1 2464 2450 2461 3766 +13498 4 2 28 1 3104 3352 2785 3841 +13499 4 2 28 1 2764 2959 2551 3507 +13500 4 2 28 1 1123 3167 2976 3513 +13501 4 2 28 1 1320 1640 1723 3243 +13502 4 2 28 1 2799 3572 2970 3834 +13503 4 2 28 1 2542 3052 2710 3382 +13504 4 2 28 1 2622 2563 2662 3460 +13505 4 2 28 1 688 231 3100 3567 +13506 4 2 28 1 2339 3002 2384 3714 +13507 4 2 28 1 833 3343 2872 3411 +13508 4 2 28 1 1696 1756 2333 3143 +13509 4 2 28 1 2685 3382 2980 3757 +13510 4 2 28 1 2634 2638 2599 3623 +13511 4 2 28 1 2619 3334 3159 3812 +13512 4 2 28 1 974 2946 973 3664 +13513 4 2 28 1 2602 2851 2847 3057 +13514 4 2 28 1 2611 2766 3046 3849 +13515 4 2 28 1 2349 2332 24 2341 +13516 4 2 28 1 2587 3290 2646 3593 +13517 4 2 28 1 2698 2829 3544 3848 +13518 4 2 28 1 3174 3515 2648 3624 +13519 4 2 28 1 2552 3430 2857 3532 +13520 4 2 28 1 2814 3049 3306 3873 +13521 4 2 28 1 2685 3570 3233 3757 +13522 4 2 28 1 1886 1899 2186 3440 +13523 4 2 28 1 1852 1853 1854 2939 +13524 4 2 28 1 2745 2770 2628 3013 +13525 4 2 28 1 1490 1491 1489 3263 +13526 4 2 28 1 2589 3039 2722 3705 +13527 4 2 28 1 2787 3057 2760 3773 +13528 4 2 28 1 2770 3420 2628 3786 +13529 4 2 28 1 1421 1548 3192 3437 +13530 4 2 28 1 2032 2278 2018 3029 +13531 4 2 28 1 935 3019 3452 3791 +13532 4 2 28 1 774 533 673 3096 +13533 4 2 28 1 2793 2868 2749 3369 +13534 4 2 28 1 1043 983 1044 3350 +13535 4 2 28 1 2720 3066 3592 3654 +13536 4 2 28 1 3028 2911 3610 3903 +13537 4 2 28 1 2503 2527 2519 3246 +13538 4 2 28 1 2988 2746 3671 3795 +13539 4 2 28 1 930 3240 933 3791 +13540 4 2 28 1 2186 3440 2125 3847 +13541 4 2 28 1 1923 1914 1920 2961 +13542 4 2 28 1 3070 3533 2855 3921 +13543 4 2 28 1 2186 3275 2125 3440 +13544 4 2 28 1 2697 2907 3077 3474 +13545 4 2 28 1 1437 2938 1684 3842 +13546 4 2 28 1 2546 3239 2582 3299 +13547 4 2 28 1 2563 3098 3054 3199 +13548 4 2 28 1 2830 3283 3139 3349 +13549 4 2 28 1 1967 2027 2230 3646 +13550 4 2 28 1 2601 3570 3233 3761 +13551 4 2 28 1 1634 1589 2737 3109 +13552 4 2 28 1 2910 3140 1978 3528 +13553 4 2 28 1 2334 2406 2487 3598 +13554 4 2 28 1 3605 3867 381 3913 +13555 4 2 28 1 2892 3297 2707 3703 +13556 4 2 28 1 1773 1367 1366 3549 +13557 4 2 28 1 1093 3147 1236 3859 +13558 4 2 28 1 2337 105 1572 2393 +13559 4 2 28 1 1935 1986 2175 3142 +13560 4 2 28 1 2804 3373 3078 3755 +13561 4 2 28 1 3011 3092 2691 3147 +13562 4 2 28 1 949 1269 947 3302 +13563 4 2 28 1 2630 3329 2730 3493 +13564 4 2 28 1 1830 183 284 2112 +13565 4 2 28 1 434 3492 3047 3697 +13566 4 2 28 1 3163 3630 3164 3658 +13567 4 2 28 1 2883 3464 3310 3846 +13568 4 2 28 1 2688 2836 2585 3763 +13569 4 2 28 1 3028 3241 2560 3623 +13570 4 2 28 1 275 168 1646 1636 +13571 4 2 28 1 3053 3522 2580 3891 +13572 4 2 28 1 2404 2415 95 2471 +13573 4 2 28 1 3258 3434 2950 3650 +13574 4 2 28 1 2390 1346 1573 3125 +13575 4 2 28 1 3163 3164 2665 3658 +13576 4 2 28 1 3070 3187 996 3880 +13577 4 2 28 1 788 1087 1304 3335 +13578 4 2 28 1 703 588 3022 3498 +13579 4 2 28 1 2710 3135 2822 3731 +13580 4 2 28 1 2489 3042 2416 3653 +13581 4 2 28 1 535 3356 2117 3499 +13582 4 2 28 1 1444 1447 3136 3749 +13583 4 2 28 1 1551 1676 1787 3358 +13584 4 2 28 1 2612 3497 2650 3773 +13585 4 2 28 1 1595 3166 1752 3706 +13586 4 2 28 1 284 3168 2112 3433 +13587 4 2 28 1 225 679 2933 3441 +13588 4 2 28 1 2776 3270 2680 3408 +13589 4 2 28 1 2708 3367 3045 3590 +13590 4 2 28 1 1543 1637 1546 3253 +13591 4 2 28 1 1353 103 2397 1591 +13592 4 2 28 1 457 3088 3047 3353 +13593 4 2 28 1 2631 3390 2600 3443 +13594 4 2 28 1 754 538 662 3569 +13595 4 2 28 1 801 3100 2807 3511 +13596 4 2 28 1 2690 3193 3286 3440 +13597 4 2 28 1 1051 1024 1025 3434 +13598 4 2 28 1 1830 284 183 419 +13599 4 2 28 1 2230 2851 3116 3646 +13600 4 2 28 1 2643 2953 3167 3523 +13601 4 2 28 1 1962 2672 2739 3293 +13602 4 2 28 1 2565 3206 3560 3896 +13603 4 2 28 1 754 662 2927 3569 +13604 4 2 28 1 2052 3106 3354 3935 +13605 4 2 28 1 1025 3434 2950 3508 +13606 4 2 28 1 1450 1474 1445 3706 +13607 4 2 28 1 2425 74 2529 2453 +13608 4 2 28 1 2164 3140 1978 3640 +13609 4 2 28 1 2436 2445 3186 3651 +13610 4 2 28 1 1686 1610 1599 3754 +13611 4 2 28 1 2772 2861 3503 3702 +13612 4 2 28 1 1566 3281 1629 3838 +13613 4 2 28 1 1163 1148 1303 3170 +13614 4 2 28 1 2635 2582 2709 3769 +13615 4 2 28 1 288 514 467 3017 +13616 4 2 28 1 2104 1994 2863 3688 +13617 4 2 28 1 2577 3239 2655 3552 +13618 4 2 28 1 2205 3180 1989 3878 +13619 4 2 28 1 478 384 3344 3366 +13620 4 2 28 1 2150 1961 2725 3652 +13621 4 2 28 1 999 3533 3070 3921 +13622 4 2 28 1 699 597 3024 3689 +13623 4 2 28 1 2701 3578 3261 3726 +13624 4 2 28 1 429 2097 1812 2885 +13625 4 2 28 1 2085 290 3086 3168 +13626 4 2 28 1 2567 3308 3183 3769 +13627 4 2 28 1 2618 2788 3034 3558 +13628 4 2 28 1 2685 2942 3425 3757 +13629 4 2 28 1 2877 3015 1116 3439 +13630 4 2 28 1 1840 2500 77 2127 +13631 4 2 28 1 2315 2323 2293 3032 +13632 4 2 28 1 2580 2894 2795 3044 +13633 4 2 28 1 1508 3378 1511 3676 +13634 4 2 28 1 665 661 763 3323 +13635 4 2 28 1 2563 3190 2612 3849 +13636 4 2 28 1 2717 3395 2982 3721 +13637 4 2 28 1 1328 3083 1307 3555 +13638 4 2 28 1 2518 2535 1841 3370 +13639 4 2 28 1 2696 3236 3235 3888 +13640 4 2 28 1 735 541 659 3064 +13641 4 2 28 1 2621 3096 2863 3097 +13642 4 2 28 1 2123 1649 1348 3621 +13643 4 2 28 1 2915 3418 3254 3748 +13644 4 2 28 1 2216 3042 3559 3653 +13645 4 2 28 1 1525 1663 3170 3577 +13646 4 2 28 1 118 1191 1168 1326 +13647 4 2 28 1 2451 2982 2452 3721 +13648 4 2 28 1 2704 3070 2854 3750 +13649 4 2 28 1 2858 3060 3208 3315 +13650 4 2 28 1 3098 3199 2563 3444 +13651 4 2 28 1 415 2987 3332 3647 +13652 4 2 28 1 1156 2827 3325 3372 +13653 4 2 28 1 2618 2773 2655 3585 +13654 4 2 28 1 2862 3344 2686 3676 +13655 4 2 28 1 3419 3576 2721 3852 +13656 4 2 28 1 1056 2914 1314 3659 +13657 4 2 28 1 752 2899 3323 3510 +13658 4 2 28 1 1721 3150 1466 3335 +13659 4 2 28 1 2087 283 193 414 +13660 4 2 28 1 2611 2748 2798 2887 +13661 4 2 28 1 2508 3602 3297 3703 +13662 4 2 28 1 2554 3455 3724 3845 +13663 4 2 28 1 61 1344 2494 1635 +13664 4 2 28 1 2549 2752 2572 3387 +13665 4 2 28 1 1086 3114 1088 3775 +13666 4 2 28 1 2530 62 2522 1351 +13667 4 2 28 1 1057 1048 3227 3659 +13668 4 2 28 1 2000 3018 2019 3377 +13669 4 2 28 1 1502 1486 3264 3686 +13670 4 2 28 1 476 3500 2922 3879 +13671 4 2 28 1 2431 2447 2432 3045 +13672 4 2 28 1 1661 1733 1530 3780 +13673 4 2 28 1 3557 3767 2831 3813 +13674 4 2 28 1 1813 2091 418 3332 +13675 4 2 28 1 2772 2865 3211 3735 +13676 4 2 28 1 1959 1958 1924 3035 +13677 4 2 28 1 2626 2874 3454 3690 +13678 4 2 28 1 2453 74 2529 2501 +13679 4 2 28 1 2545 3134 3466 3892 +13680 4 2 28 1 805 1158 2147 3669 +13681 4 2 28 1 1901 2032 2287 3457 +13682 4 2 28 1 1136 3013 2882 3511 +13683 4 2 28 1 2593 2645 3263 3876 +13684 4 2 28 1 2655 2768 2723 3585 +13685 4 2 28 1 2479 2463 2445 3218 +13686 4 2 28 1 686 2866 2923 3467 +13687 4 2 28 1 2669 2664 3044 3475 +13688 4 2 28 1 837 2930 3538 3641 +13689 4 2 28 1 439 438 2964 3394 +13690 4 2 28 1 2065 1986 2149 3803 +13691 4 2 28 1 453 458 311 3085 +13692 4 2 28 1 274 469 3129 3548 +13693 4 2 28 1 592 591 611 3389 +13694 4 2 28 1 2144 2135 3341 3494 +13695 4 2 28 1 807 1299 1070 3494 +13696 4 2 28 1 1277 1292 1064 3116 +13697 4 2 28 1 1167 3187 969 3821 +13698 4 2 28 1 2041 2171 2259 3485 +13699 4 2 28 1 1129 1108 1130 3506 +13700 4 2 28 1 2781 3657 2941 3860 +13701 4 2 28 1 689 721 2908 3768 +13702 4 2 28 1 2739 3131 2672 3655 +13703 4 2 28 1 1761 3549 2823 3746 +13704 4 2 28 1 1483 1730 1595 3059 +13705 4 2 28 1 2379 2345 65 2531 +13706 4 2 28 1 797 1650 1307 3555 +13707 4 2 28 1 3050 3114 987 3775 +13708 4 2 28 1 2672 2931 3101 3655 +13709 4 2 28 1 1206 1130 1131 3506 +13710 4 2 28 1 3027 3544 3450 3713 +13711 4 2 28 1 1390 1395 1398 3348 +13712 4 2 28 1 2432 2433 2430 3367 +13713 4 2 28 1 1601 1700 1522 3491 +13714 4 2 28 1 3025 3591 1577 3672 +13715 4 2 28 1 2627 2695 2833 3294 +13716 4 2 28 1 2847 2672 3309 3646 +13717 4 2 28 1 3081 3602 3297 3909 +13718 4 2 28 1 2771 3367 3727 3766 +13719 4 2 28 1 257 683 1810 682 +13720 4 2 28 1 2555 2566 3192 3428 +13721 4 2 28 1 2655 2788 2618 3552 +13722 4 2 28 1 2867 3284 1012 3890 +13723 4 2 28 1 1823 2223 2115 3433 +13724 4 2 28 1 2730 2930 2833 3374 +13725 4 2 28 1 2861 3779 1557 3780 +13726 4 2 28 1 2569 2628 3786 3876 +13727 4 2 28 1 2711 3205 2871 3579 +13728 4 2 28 1 3171 3547 2790 3564 +13729 4 2 28 1 2830 2716 3339 3508 +13730 4 2 28 1 2849 3218 3091 3653 +13731 4 2 28 1 2106 545 2079 3118 +13732 4 2 28 1 2813 3643 3019 3800 +13733 4 2 28 1 120 1304 1659 1466 +13734 4 2 28 1 2773 3344 2862 3676 +13735 4 2 28 1 2564 2961 3180 3386 +13736 4 2 28 1 3059 3383 2796 3571 +13737 4 2 28 1 1834 541 2086 3064 +13738 4 2 28 1 1877 3110 1881 3322 +13739 4 2 28 1 2646 3255 2081 3802 +13740 4 2 28 1 2777 3282 2874 3828 +13741 4 2 28 1 2423 31 2299 2327 +13742 4 2 28 1 1641 517 280 3672 +13743 4 2 28 1 1945 2874 2179 3933 +13744 4 2 28 1 1955 3373 3078 3594 +13745 4 2 28 1 996 3187 3070 3821 +13746 4 2 28 1 2867 3026 1270 3556 +13747 4 2 28 1 2227 2065 2062 2904 +13748 4 2 28 1 1446 1425 1674 3378 +13749 4 2 28 1 3233 3570 2601 3757 +13750 4 2 28 1 2133 3189 2040 3627 +13751 4 2 28 1 2276 2192 2293 3476 +13752 4 2 28 1 2009 2110 2208 3084 +13753 4 2 28 1 3192 3358 2616 3606 +13754 4 2 28 1 2600 3123 3122 3536 +13755 4 2 28 1 1592 1606 1538 2914 +13756 4 2 28 1 701 704 644 3073 +13757 4 2 28 1 1508 1507 3378 3603 +13758 4 2 28 1 2157 3332 2739 3929 +13759 4 2 28 1 2498 1802 1352 3780 +13760 4 2 28 1 2558 3522 2603 3801 +13761 4 2 28 1 853 3381 3318 3875 +13762 4 2 28 1 1641 1634 3025 3109 +13763 4 2 28 1 3028 2560 3396 3623 +13764 4 2 28 1 881 864 1196 3487 +13765 4 2 28 1 723 2912 576 3089 +13766 4 2 28 1 2137 2212 2000 3018 +13767 4 2 28 1 2206 2001 2140 2997 +13768 4 2 28 1 2823 3269 2196 3426 +13769 4 2 28 1 1007 3158 1207 3643 +13770 4 2 28 1 2551 2959 2764 3673 +13771 4 2 28 1 1673 1502 3327 3686 +13772 4 2 28 1 2639 3391 2570 3683 +13773 4 2 28 1 1215 3144 991 3795 +13774 4 2 28 1 1196 1133 1134 3487 +13775 4 2 28 1 1714 1329 1601 3490 +13776 4 2 28 1 572 584 2884 3743 +13777 4 2 28 1 2721 3424 3326 3770 +13778 4 2 28 1 1718 1447 1523 3584 +13779 4 2 28 1 2560 2792 3326 3390 +13780 4 2 28 1 897 3173 1090 3674 +13781 4 2 28 1 1326 1168 118 1667 +13782 4 2 28 1 928 927 926 3459 +13783 4 2 28 1 1689 1787 3255 3593 +13784 4 2 28 1 1217 3145 1037 3533 +13785 4 2 28 1 2046 3480 3091 3559 +13786 4 2 28 1 725 2920 2924 3573 +13787 4 2 28 1 2618 3017 2788 3558 +13788 4 2 28 1 2738 2845 3668 3742 +13789 4 2 28 1 2463 2482 2462 3218 +13790 4 2 28 1 2047 2131 3288 3489 +13791 4 2 28 1 1975 1976 1918 3415 +13792 4 2 28 1 3058 3123 2554 3731 +13793 4 2 28 1 2608 3286 2945 3711 +13794 4 2 28 1 1706 3025 1577 3672 +13795 4 2 28 1 655 3249 666 3839 +13796 4 2 28 1 1034 955 953 3469 +13797 4 2 28 1 2592 2725 3512 3759 +13798 4 2 28 1 1109 1296 1088 3087 +13799 4 2 28 1 2752 3379 3171 3564 +13800 4 2 28 1 945 1222 988 3435 +13801 4 2 28 1 3318 3381 853 3887 +13802 4 2 28 1 1875 2209 3244 3541 +13803 4 2 28 1 581 2895 579 3732 +13804 4 2 28 1 1994 3405 2863 3688 +13805 4 2 28 1 2703 3139 2830 3733 +13806 4 2 28 1 2610 3371 2703 3733 +13807 4 2 28 1 705 598 720 3365 +13808 4 2 28 1 435 376 487 3088 +13809 4 2 28 1 2833 3294 3005 3854 +13810 4 2 28 1 2857 3236 3105 3888 +13811 4 2 28 1 368 3368 388 3924 +13812 4 2 28 1 831 832 833 3343 +13813 4 2 28 1 1960 2269 3223 3494 +13814 4 2 28 1 2118 2321 34 2298 +13815 4 2 28 1 1918 1976 2125 3275 +13816 4 2 28 1 1858 3357 3113 3739 +13817 4 2 28 1 939 1223 926 3459 +13818 4 2 28 1 2377 3175 3422 3914 +13819 4 2 28 1 3019 3643 3016 3792 +13820 4 2 28 1 2747 3157 2568 3269 +13821 4 2 28 1 1116 1113 1117 3015 +13822 4 2 28 1 424 422 3558 3897 +13823 4 2 28 1 1803 1454 3539 3900 +13824 4 2 28 1 2787 3182 3181 3628 +13825 4 2 28 1 2305 2306 3351 3873 +13826 4 2 28 1 592 702 604 3389 +13827 4 2 28 1 599 3359 583 3781 +13828 4 2 28 1 1905 2243 1911 2966 +13829 4 2 28 1 3005 3632 2808 3893 +13830 4 2 28 1 472 2981 489 3764 +13831 4 2 28 1 2756 3073 2795 3872 +13832 4 2 28 1 979 1024 3305 3434 +13833 4 2 28 1 382 3290 3025 3368 +13834 4 2 28 1 818 817 816 3432 +13835 4 2 28 1 2656 3128 2723 3129 +13836 4 2 28 1 1218 1069 1265 3439 +13837 4 2 28 1 1194 977 899 3119 +13838 4 2 28 1 2302 2305 2317 3103 +13839 4 2 28 1 2604 2691 2811 3928 +13840 4 2 28 1 2696 2954 3438 3456 +13841 4 2 28 1 955 961 954 3469 +13842 4 2 28 1 2816 3468 3091 3480 +13843 4 2 28 1 2205 3039 3180 3856 +13844 4 2 28 1 3106 3210 2809 3935 +13845 4 2 28 1 1872 2084 3110 3680 +13846 4 2 28 1 1329 1714 1664 2925 +13847 4 2 28 1 1606 1720 1538 3083 +13848 4 2 28 1 1007 1008 3158 3643 +13849 4 2 28 1 3151 3361 2835 3709 +13850 4 2 28 1 555 2873 553 3614 +13851 4 2 28 1 616 2901 716 3608 +13852 4 2 28 1 1540 1680 1481 3529 +13853 4 2 28 1 1572 1337 1595 3166 +13854 4 2 28 1 1518 1519 1803 3539 +13855 4 2 28 1 1791 2616 3300 3358 +13856 4 2 28 1 2579 3430 3507 3926 +13857 4 2 28 1 1769 2538 2405 3175 +13858 4 2 28 1 1136 2882 229 3511 +13859 4 2 28 1 1771 1668 3150 3666 +13860 4 2 28 1 3163 3429 2665 3437 +13861 4 2 28 1 2859 3435 3144 3696 +13862 4 2 28 1 1829 1340 1584 3200 +13863 4 2 28 1 1164 144 2010 1289 +13864 4 2 28 1 2564 3177 2636 3705 +13865 4 2 28 1 2045 1951 1947 3480 +13866 4 2 28 1 2587 2778 2737 3606 +13867 4 2 28 1 418 283 194 1813 +13868 4 2 28 1 2884 584 3550 3743 +13869 4 2 28 1 3005 3294 2695 3632 +13870 4 2 28 1 2950 3434 2716 3508 +13871 4 2 28 1 3137 3251 2564 3668 +13872 4 2 28 1 2700 3285 3023 3835 +13873 4 2 28 1 510 2931 199 3655 +13874 4 2 28 1 1730 3059 1483 3571 +13875 4 2 28 1 2776 3270 427 3924 +13876 4 2 28 1 2554 3587 3122 3845 +13877 4 2 28 1 2643 2815 2688 3360 +13878 4 2 28 1 2762 2663 3604 3855 +13879 4 2 28 1 629 3634 3421 3836 +13880 4 2 28 1 1169 3343 3005 3641 +13881 4 2 28 1 2775 3324 3758 3912 +13882 4 2 28 1 2589 2827 2722 3377 +13883 4 2 28 1 1168 3150 2977 3784 +13884 4 2 28 1 965 920 919 3372 +13885 4 2 28 1 1395 1398 3348 3833 +13886 4 2 28 1 2699 2767 2578 2899 +13887 4 2 28 1 1577 3025 1578 3591 +13888 4 2 28 1 2591 3257 3583 3911 +13889 4 2 28 1 683 3010 1810 3356 +13890 4 2 28 1 2691 2709 3147 3487 +13891 4 2 28 1 2733 2998 2986 3131 +13892 4 2 28 1 2705 3547 3183 3883 +13893 4 2 28 1 600 3022 588 3498 +13894 4 2 28 1 1535 1673 1505 2697 +13895 4 2 28 1 2358 2967 3717 3841 +13896 4 2 28 1 2688 2585 3250 3763 +13897 4 2 28 1 1630 1748 1622 2924 +13898 4 2 28 1 2982 3395 2840 3581 +13899 4 2 28 1 2673 3438 2955 3846 +13900 4 2 28 1 603 716 2901 3885 +13901 4 2 28 1 705 720 3148 3365 +13902 4 2 28 1 2919 3227 1048 3659 +13903 4 2 28 1 2615 3051 3654 3901 +13904 4 2 28 1 901 3184 3661 3777 +13905 4 2 28 1 2809 3415 3275 3935 +13906 4 2 28 1 2728 3751 2956 3846 +13907 4 2 28 1 2107 2087 414 2987 +13908 4 2 28 1 1601 3490 1700 3491 +13909 4 2 28 1 2985 3678 353 3728 +13910 4 2 28 1 804 1665 1153 3176 +13911 4 2 28 1 2807 3432 815 3511 +13912 4 2 28 1 2915 2663 3418 3748 +13913 4 2 28 1 487 2986 340 3844 +13914 4 2 28 1 802 1182 201 3599 +13915 4 2 28 1 475 2963 462 3615 +13916 4 2 28 1 1121 1303 1043 3350 +13917 4 2 28 1 1470 2926 1436 3812 +13918 4 2 28 1 543 763 757 3323 +13919 4 2 28 1 1138 882 893 3447 +13920 4 2 28 1 2467 3575 3063 3884 +13921 4 2 28 1 2738 2545 3892 3906 +13922 4 2 28 1 2125 2186 1899 3275 +13923 4 2 28 1 1635 2522 62 1351 +13924 4 2 28 1 2658 2757 2756 3022 +13925 4 2 28 1 2550 2584 3896 3911 +13926 4 2 28 1 2377 3175 2345 3422 +13927 4 2 28 1 2545 3241 2792 3770 +13928 4 2 28 1 2522 61 2494 1635 +13929 4 2 28 1 412 289 511 3929 +13930 4 2 28 1 1705 2647 1473 3300 +13931 4 2 28 1 2642 2766 2612 3849 +13932 4 2 28 1 1141 1275 1313 3139 +13933 4 2 28 1 1782 3486 2944 3891 +13934 4 2 28 1 3192 3429 2761 3437 +13935 4 2 28 1 2712 3200 3133 3720 +13936 4 2 28 1 1800 1692 1482 3501 +13937 4 2 28 1 2748 2887 2611 3822 +13938 4 2 28 1 1872 1873 1871 3282 +13939 4 2 28 1 2643 2815 2975 3513 +13940 4 2 28 1 2319 2306 3094 3685 +13941 4 2 28 1 2690 3132 3204 3483 +13942 4 2 28 1 2580 2624 2795 2894 +13943 4 2 28 1 2925 3121 810 3567 +13944 4 2 28 1 2595 3327 2558 3904 +13945 4 2 28 1 1926 1928 3206 3560 +13946 4 2 28 1 2831 2632 3041 3518 +13947 4 2 28 1 1260 1240 3225 3671 +13948 4 2 28 1 2666 3166 3059 3706 +13949 4 2 28 1 1506 3546 3036 3900 +13950 4 2 28 1 788 1297 1083 3150 +13951 4 2 28 1 1768 547 2249 3388 +13952 4 2 28 1 2281 2258 2077 3339 +13953 4 2 28 1 2218 3313 2108 3408 +13954 4 2 28 1 1508 3378 2618 3603 +13955 4 2 28 1 3115 3173 2703 3674 +13956 4 2 28 1 1776 1367 1742 3317 +13957 4 2 28 1 2561 3412 2960 3918 +13958 4 2 28 1 1328 1606 1729 3083 +13959 4 2 28 1 1307 3083 1101 3555 +13960 4 2 28 1 2601 3570 3761 3825 +13961 4 2 28 1 2801 2639 2933 3336 +13962 4 2 28 1 201 1182 202 3492 +13963 4 2 28 1 1658 128 1263 1478 +13964 4 2 28 1 3002 2834 3714 3877 +13965 4 2 28 1 2219 1990 2120 2680 +13966 4 2 28 1 790 2148 143 1289 +13967 4 2 28 1 693 2905 2920 3526 +13968 4 2 28 1 615 648 613 3191 +13969 4 2 28 1 2610 3250 3084 3763 +13970 4 2 28 1 1987 2126 2172 2931 +13971 4 2 28 1 3261 3338 3010 3578 +13972 4 2 28 1 2645 3490 2925 3491 +13973 4 2 28 1 2841 3136 2558 3904 +13974 4 2 28 1 719 3073 3475 3699 +13975 4 2 28 1 979 964 1024 3434 +13976 4 2 28 1 2652 3112 3471 3837 +13977 4 2 28 1 1914 3180 2267 3742 +13978 4 2 28 1 2364 2366 2363 3865 +13979 4 2 28 1 1155 1061 785 3018 +13980 4 2 28 1 1940 1915 1939 3039 +13981 4 2 28 1 2645 2908 2735 3768 +13982 4 2 28 1 2177 3032 1988 3518 +13983 4 2 28 1 2729 2880 2689 3126 +13984 4 2 28 1 1408 1373 2865 3503 +13985 4 2 28 1 657 658 3009 3839 +13986 4 2 28 1 2012 1904 2011 3021 +13987 4 2 28 1 2547 2944 2568 3531 +13988 4 2 28 1 2551 3507 2959 3613 +13989 4 2 28 1 2602 3237 2672 3646 +13990 4 2 28 1 1059 984 3167 3809 +13991 4 2 28 1 677 3096 700 3747 +13992 4 2 28 1 437 438 308 3394 +13993 4 2 28 1 1053 1283 1054 3305 +13994 4 2 28 1 1956 2075 3549 3607 +13995 4 2 28 1 2673 3310 3438 3846 +13996 4 2 28 1 2069 3200 2277 3720 +13997 4 2 28 1 1207 3107 976 3331 +13998 4 2 28 1 2958 3710 2777 3711 +13999 4 2 28 1 2681 2860 2776 3802 +14000 4 2 28 1 2634 2704 3155 3750 +14001 4 2 28 1 2332 2294 24 2341 +14002 4 2 28 1 2673 3127 3052 3382 +14003 4 2 28 1 437 506 3394 3588 +14004 4 2 28 1 2871 3485 2711 3813 +14005 4 2 28 1 616 2900 676 3726 +14006 4 2 28 1 1245 3209 890 3580 +14007 4 2 28 1 2063 1971 2227 2891 +14008 4 2 28 1 504 3120 2740 3707 +14009 4 2 28 1 2764 3457 3029 3458 +14010 4 2 28 1 2671 3008 2873 3930 +14011 4 2 28 1 2951 3252 2747 3540 +14012 4 2 28 1 1187 3258 1157 3650 +14013 4 2 28 1 2873 2905 556 3526 +14014 4 2 28 1 218 3146 219 3871 +14015 4 2 28 1 2744 2745 2628 3013 +14016 4 2 28 1 2909 3324 2775 3912 +14017 4 2 28 1 2767 2899 2699 3389 +14018 4 2 28 1 2232 2037 2282 3283 +14019 4 2 28 1 1260 3225 2888 3671 +14020 4 2 28 1 2553 3360 2902 3399 +14021 4 2 28 1 2590 2732 3400 3750 +14022 4 2 28 1 1036 1184 901 3184 +14023 4 2 28 1 1108 1107 3138 3520 +14024 4 2 28 1 489 438 495 3394 +14025 4 2 28 1 2642 3250 2586 3783 +14026 4 2 28 1 2737 3025 1634 3109 +14027 4 2 28 1 3299 3414 2562 3662 +14028 4 2 28 1 781 1263 128 1478 +14029 4 2 28 1 2645 2735 3100 3768 +14030 4 2 28 1 2691 3147 3092 3224 +14031 4 2 28 1 347 348 3307 3804 +14032 4 2 28 1 2731 2923 2605 3613 +14033 4 2 28 1 910 3321 1214 3629 +14034 4 2 28 1 2674 3176 3170 3667 +14035 4 2 28 1 2608 3075 3295 3866 +14036 4 2 28 1 2929 3397 1228 3411 +14037 4 2 28 1 2711 3205 3061 3712 +14038 4 2 28 1 2641 3347 2853 3690 +14039 4 2 28 1 2601 3151 3361 3682 +14040 4 2 28 1 2544 3153 3852 3912 +14041 4 2 28 1 1066 1222 985 3435 +14042 4 2 28 1 1394 2907 1608 3815 +14043 4 2 28 1 2890 3377 2827 3523 +14044 4 2 28 1 2671 2873 2905 3089 +14045 4 2 28 1 2560 3155 2630 3329 +14046 4 2 28 1 2727 2749 2649 3443 +14047 4 2 28 1 2769 3227 3083 3934 +14048 4 2 28 1 2903 3454 3095 3866 +14049 4 2 28 1 2656 2723 2655 3129 +14050 4 2 28 1 2305 3351 3103 3873 +14051 4 2 28 1 3278 3574 2444 3721 +14052 4 2 28 1 1096 2832 3298 3555 +14053 4 2 28 1 2672 2733 2571 2934 +14054 4 2 28 1 1866 2183 2274 3527 +14055 4 2 28 1 2594 3521 2603 3532 +14056 4 2 28 1 1112 3015 1113 3843 +14057 4 2 28 1 329 327 339 3080 +14058 4 2 28 1 1175 855 1171 3374 +14059 4 2 28 1 2582 2709 2691 3822 +14060 4 2 28 1 719 709 586 3475 +14061 4 2 28 1 2634 3155 2630 3750 +14062 4 2 28 1 3093 3501 2692 3542 +14063 4 2 28 1 2768 3034 2655 3129 +14064 4 2 28 1 2768 2952 2729 3472 +14065 4 2 28 1 2587 2737 3290 3593 +14066 4 2 28 1 1408 3503 2865 3779 +14067 4 2 28 1 1047 3350 1044 3811 +14068 4 2 28 1 478 433 282 2918 +14069 4 2 28 1 1112 1117 3015 3314 +14070 4 2 28 1 1279 3291 2937 3492 +14071 4 2 28 1 2566 3300 3202 3362 +14072 4 2 28 1 1626 436 479 3090 +14073 4 2 28 1 1444 3053 1448 3749 +14074 4 2 28 1 2889 3363 2545 3906 +14075 4 2 28 1 2905 3089 2873 3614 +14076 4 2 28 1 2719 2745 3048 3124 +14077 4 2 28 1 2287 1901 3457 3631 +14078 4 2 28 1 840 838 839 3369 +14079 4 2 28 1 438 472 2964 3394 +14080 4 2 28 1 2599 2745 2744 2812 +14081 4 2 28 1 1009 1010 3248 3905 +14082 4 2 28 1 1153 804 125 1665 +14083 4 2 28 1 2126 198 10 521 +14084 4 2 28 1 1522 1491 3263 3842 +14085 4 2 28 1 539 739 267 2106 +14086 4 2 28 1 272 2111 2885 3313 +14087 4 2 28 1 2502 2504 2505 3778 +14088 4 2 28 1 2399 2393 2413 3166 +14089 4 2 28 1 3212 3485 2711 3712 +14090 4 2 28 1 2623 2569 2735 3392 +14091 4 2 28 1 2340 1573 108 1336 +14092 4 2 28 1 1184 3184 1124 3875 +14093 4 2 28 1 1186 972 3294 3632 +14094 4 2 28 1 510 412 3101 3655 +14095 4 2 28 1 2899 2923 2699 3389 +14096 4 2 28 1 626 636 3044 3785 +14097 4 2 28 1 2988 3144 2654 3795 +14098 4 2 28 1 2773 3080 3034 3585 +14099 4 2 28 1 796 3026 1262 3535 +14100 4 2 28 1 2602 3057 2847 3773 +14101 4 2 28 1 3088 3353 457 3868 +14102 4 2 28 1 2698 3528 3140 3544 +14103 4 2 28 1 1256 978 1253 3181 +14104 4 2 28 1 1948 1946 1947 3066 +14105 4 2 28 1 2663 2996 3418 3748 +14106 4 2 28 1 1640 3152 1723 3243 +14107 4 2 28 1 2738 2845 3322 3892 +14108 4 2 28 1 2971 3635 2879 3698 +14109 4 2 28 1 2557 2612 3190 3849 +14110 4 2 28 1 549 3008 551 3474 +14111 4 2 28 1 635 760 737 3578 +14112 4 2 28 1 1759 2535 1352 3370 +14113 4 2 28 1 2011 1910 2166 3154 +14114 4 2 28 1 545 2079 3118 3273 +14115 4 2 28 1 2660 3174 2990 3268 +14116 4 2 28 1 3254 3348 1398 3833 +14117 4 2 28 1 1892 3357 3140 3640 +14118 4 2 28 1 205 3274 2844 3704 +14119 4 2 28 1 1763 1535 2697 3573 +14120 4 2 28 1 900 3196 1147 3661 +14121 4 2 28 1 380 428 515 2885 +14122 4 2 28 1 2032 1901 1863 3458 +14123 4 2 28 1 2899 3323 2731 3502 +14124 4 2 28 1 587 3252 708 3540 +14125 4 2 28 1 1029 3158 1008 3671 +14126 4 2 28 1 1396 3127 1392 3788 +14127 4 2 28 1 2996 3254 2743 3348 +14128 4 2 28 1 1555 1588 2737 3358 +14129 4 2 28 1 3067 3346 2707 3771 +14130 4 2 28 1 1905 1911 1908 2966 +14131 4 2 28 1 1122 1246 1006 3479 +14132 4 2 28 1 2938 3786 2593 3876 +14133 4 2 28 1 1228 858 827 3397 +14134 4 2 28 1 2606 2987 2837 3647 +14135 4 2 28 1 3063 2781 3285 3860 +14136 4 2 28 1 2787 3119 2760 3453 +14137 4 2 28 1 1970 2019 2890 3377 +14138 4 2 28 1 487 3088 376 3868 +14139 4 2 28 1 3133 3200 2069 3720 +14140 4 2 28 1 2132 3113 1906 3720 +14141 4 2 28 1 2697 3008 2907 3474 +14142 4 2 28 1 2022 3494 2725 3759 +14143 4 2 28 1 2543 3579 3257 3636 +14144 4 2 28 1 1344 1369 60 2494 +14145 4 2 28 1 2574 2822 3546 3845 +14146 4 2 28 1 486 499 389 3398 +14147 4 2 28 1 1560 1670 1798 3277 +14148 4 2 28 1 3446 3820 3618 3846 +14149 4 2 28 1 2578 3457 3405 3926 +14150 4 2 28 1 2971 3242 2570 3799 +14151 4 2 28 1 714 726 3201 3550 +14152 4 2 28 1 2775 2966 2870 3758 +14153 4 2 28 1 433 488 432 3707 +14154 4 2 28 1 2015 2142 2229 3115 +14155 4 2 28 1 569 645 3148 3516 +14156 4 2 28 1 3263 3298 2832 3823 +14157 4 2 28 1 2370 3125 2396 3554 +14158 4 2 28 1 905 3629 2974 3870 +14159 4 2 28 1 1508 1582 1511 3378 +14160 4 2 28 1 2850 3272 1934 3557 +14161 4 2 28 1 336 3804 2952 3920 +14162 4 2 28 1 694 729 576 3089 +14163 4 2 28 1 2738 3003 3668 3906 +14164 4 2 28 1 916 917 914 3513 +14165 4 2 28 1 1124 3184 1036 3320 +14166 4 2 28 1 466 295 294 3243 +14167 4 2 28 1 3264 3486 1516 3891 +14168 4 2 28 1 2361 2362 2360 3311 +14169 4 2 28 1 1784 1739 1500 3630 +14170 4 2 28 1 2722 2613 3229 3705 +14171 4 2 28 1 1754 1322 3076 3333 +14172 4 2 28 1 2199 2132 1906 3720 +14173 4 2 28 1 195 418 2091 2080 +14174 4 2 28 1 2727 2921 2782 3517 +14175 4 2 28 1 2546 3188 3058 3883 +14176 4 2 28 1 645 705 3148 3516 +14177 4 2 28 1 2613 2725 3072 3386 +14178 4 2 28 1 950 949 3302 3807 +14179 4 2 28 1 2541 3635 2971 3799 +14180 4 2 28 1 3130 3535 1268 3808 +14181 4 2 28 1 2702 2901 2895 3365 +14182 4 2 28 1 2630 3155 2634 3329 +14183 4 2 28 1 2693 2953 3167 3729 +14184 4 2 28 1 2438 2440 2441 3574 +14185 4 2 28 1 2603 3522 3430 3532 +14186 4 2 28 1 3133 3640 3357 3720 +14187 4 2 28 1 2300 2291 2299 3197 +14188 4 2 28 1 2928 3727 3367 3766 +14189 4 2 28 1 2147 2004 148 805 +14190 4 2 28 1 3220 3658 3041 3889 +14191 4 2 28 1 2292 1536 18 1347 +14192 4 2 28 1 1306 808 114 1331 +14193 4 2 28 1 2601 2942 3446 3618 +14194 4 2 28 1 700 3096 653 3097 +14195 4 2 28 1 2741 3537 3112 3837 +14196 4 2 28 1 2770 3013 2745 3256 +14197 4 2 28 1 2678 3117 3315 3829 +14198 4 2 28 1 1383 1392 1393 3534 +14199 4 2 28 1 2704 2855 2634 2973 +14200 4 2 28 1 1960 2152 1308 3223 +14201 4 2 28 1 2227 2891 2904 3772 +14202 4 2 28 1 2030 1911 2243 3237 +14203 4 2 28 1 3445 3446 2957 3534 +14204 4 2 28 1 2738 3466 2845 3892 +14205 4 2 28 1 216 766 733 3273 +14206 4 2 28 1 1040 970 880 3473 +14207 4 2 28 1 1568 1391 3215 3562 +14208 4 2 28 1 1655 2891 2904 3437 +14209 4 2 28 1 3058 3425 3382 3882 +14210 4 2 28 1 454 2963 324 3615 +14211 4 2 28 1 22 2387 2329 2295 +14212 4 2 28 1 869 870 871 3517 +14213 4 2 28 1 1452 1803 1454 3539 +14214 4 2 28 1 2629 3285 3609 3835 +14215 4 2 28 1 2811 3381 3224 3875 +14216 4 2 28 1 204 2937 2844 3047 +14217 4 2 28 1 2738 3401 2961 3668 +14218 4 2 28 1 443 3617 2778 3633 +14219 4 2 28 1 869 867 868 3517 +14220 4 2 28 1 1313 3139 1289 3283 +14221 4 2 28 1 693 586 738 3475 +14222 4 2 28 1 3060 3478 2892 3702 +14223 4 2 28 1 1153 1286 1127 3176 +14224 4 2 28 1 2552 3532 2594 3744 +14225 4 2 28 1 3241 3326 2792 3770 +14226 4 2 28 1 1166 2140 1189 3393 +14227 4 2 28 1 1515 1514 1749 2664 +14228 4 2 28 1 535 727 764 3499 +14229 4 2 28 1 1934 1936 1933 3557 +14230 4 2 28 1 966 1149 1014 3572 +14231 4 2 28 1 425 288 460 3558 +14232 4 2 28 1 397 280 517 3672 +14233 4 2 28 1 3084 3250 2585 3763 +14234 4 2 28 1 1634 3025 2737 3593 +14235 4 2 28 1 2544 2995 3736 3852 +14236 4 2 28 1 2593 3824 2938 3876 +14237 4 2 28 1 578 3385 3365 3516 +14238 4 2 28 1 2555 2904 2891 3437 +14239 4 2 28 1 1037 3145 999 3533 +14240 4 2 28 1 656 3009 658 3839 +14241 4 2 28 1 1752 1476 1474 3706 +14242 4 2 28 1 3015 3130 1117 3864 +14243 4 2 28 1 980 3416 1055 3817 +14244 4 2 28 1 2575 3616 3484 3727 +14245 4 2 28 1 2146 2114 3194 3226 +14246 4 2 28 1 973 1049 1126 3505 +14247 4 2 28 1 2604 3308 3183 3536 +14248 4 2 28 1 2593 2832 2769 3159 +14249 4 2 28 1 424 422 460 3558 +14250 4 2 28 1 410 3131 411 3655 +14251 4 2 28 1 2578 2863 3405 3688 +14252 4 2 28 1 93 2422 2475 2382 +14253 4 2 28 1 2082 1837 3591 3621 +14254 4 2 28 1 2151 1074 2015 3115 +14255 4 2 28 1 2560 2911 3396 3493 +14256 4 2 28 1 1484 1483 3542 3571 +14257 4 2 28 1 1735 1586 1647 3228 +14258 4 2 28 1 2594 2552 3462 3532 +14259 4 2 28 1 974 972 990 3380 +14260 4 2 28 1 2672 3131 2934 3655 +14261 4 2 28 1 2462 2445 2463 3218 +14262 4 2 28 1 1380 1381 3445 3751 +14263 4 2 28 1 2628 2744 3013 3303 +14264 4 2 28 1 1248 858 1246 3479 +14265 4 2 28 1 1511 3378 1582 3676 +14266 4 2 28 1 2320 2292 18 1347 +14267 4 2 28 1 2609 3155 2590 3251 +14268 4 2 28 1 2908 3490 688 3768 +14269 4 2 28 1 775 3510 3118 3747 +14270 4 2 28 1 1364 2944 1362 3495 +14271 4 2 28 1 1074 1302 2015 3115 +14272 4 2 28 1 2219 2044 1984 2680 +14273 4 2 28 1 2755 3201 2923 3467 +14274 4 2 28 1 1422 3214 1445 3833 +14275 4 2 28 1 1795 1354 1611 3621 +14276 4 2 28 1 2817 2719 3397 3927 +14277 4 2 28 1 2557 2902 3774 3783 +14278 4 2 28 1 1053 3226 1283 3305 +14279 4 2 28 1 3209 3611 1211 3826 +14280 4 2 28 1 2959 3405 2578 3457 +14281 4 2 28 1 2574 3036 3546 3900 +14282 4 2 28 1 2234 2823 2196 3746 +14283 4 2 28 1 2608 3345 3075 3866 +14284 4 2 28 1 1583 3200 2067 3370 +14285 4 2 28 1 915 1123 916 3513 +14286 4 2 28 1 1990 2121 2687 3403 +14287 4 2 28 1 2582 2691 3414 3822 +14288 4 2 28 1 695 2927 662 3619 +14289 4 2 28 1 1366 1361 1761 3495 +14290 4 2 28 1 522 179 293 1325 +14291 4 2 28 1 2879 3635 2541 3895 +14292 4 2 28 1 2110 2037 2013 3733 +14293 4 2 28 1 2823 3269 2676 3601 +14294 4 2 28 1 3490 3491 2908 3815 +14295 4 2 28 1 2638 2933 2744 3683 +14296 4 2 28 1 2788 3017 2682 3314 +14297 4 2 28 1 1880 1864 2274 3527 +14298 4 2 28 1 542 1600 732 3815 +14299 4 2 28 1 2241 2019 2290 2890 +14300 4 2 28 1 836 1217 1212 3538 +14301 4 2 28 1 1214 3321 1227 3881 +14302 4 2 28 1 2074 2075 1821 3549 +14303 4 2 28 1 3000 3466 3134 3892 +14304 4 2 28 1 1749 1515 2664 2999 +14305 4 2 28 1 1199 209 3128 3556 +14306 4 2 28 1 2018 1997 2032 3029 +14307 4 2 28 1 274 3129 483 3548 +14308 4 2 28 1 912 3524 3321 3850 +14309 4 2 28 1 1342 16 1570 2318 +14310 4 2 28 1 3254 3418 2996 3748 +14311 4 2 28 1 202 1183 203 3492 +14312 4 2 28 1 279 3558 3504 3612 +14313 4 2 28 1 3219 3818 2598 3915 +14314 4 2 28 1 1250 1041 1040 3473 +14315 4 2 28 1 2547 3521 2944 3531 +14316 4 2 28 1 2828 3535 3130 3808 +14317 4 2 28 1 2587 2555 3142 3606 +14318 4 2 28 1 3183 3547 2705 3724 +14319 4 2 28 1 1826 2122 2078 3210 +14320 4 2 28 1 2854 2821 3316 3459 +14321 4 2 28 1 1687 2907 1609 3077 +14322 4 2 28 1 1840 2040 2133 3189 +14323 4 2 28 1 878 1195 3256 3853 +14324 4 2 28 1 1219 842 1237 3431 +14325 4 2 28 1 1899 1917 1918 3275 +14326 4 2 28 1 1170 3005 3632 3854 +14327 4 2 28 1 1694 3160 3546 3900 +14328 4 2 28 1 2049 2048 2047 3288 +14329 4 2 28 1 2136 3018 2137 3393 +14330 4 2 28 1 2874 3828 2179 3933 +14331 4 2 28 1 2585 3084 2716 3340 +14332 4 2 28 1 2650 2571 2733 2934 +14333 4 2 28 1 211 279 420 3504 +14334 4 2 28 1 1490 3263 1489 3823 +14335 4 2 28 1 2699 2625 2767 3001 +14336 4 2 28 1 520 206 2932 3274 +14337 4 2 28 1 1240 793 3225 3671 +14338 4 2 28 1 2514 2521 2510 3797 +14339 4 2 28 1 1904 1896 1895 3908 +14340 4 2 28 1 2753 3771 3319 3858 +14341 4 2 28 1 2856 3133 2758 3624 +14342 4 2 28 1 2556 3587 2911 3610 +14343 4 2 28 1 2907 549 3077 3474 +14344 4 2 28 1 421 3034 480 3794 +14345 4 2 28 1 496 2998 474 3844 +14346 4 2 28 1 1193 3447 1138 3753 +14347 4 2 28 1 2419 2428 2427 3197 +14348 4 2 28 1 2569 3786 3156 3903 +14349 4 2 28 1 2599 3396 3329 3623 +14350 4 2 28 1 2734 3658 3220 3889 +14351 4 2 28 1 2022 2214 2150 3878 +14352 4 2 28 1 1166 1824 2140 3393 +14353 4 2 28 1 2657 3010 2264 3338 +14354 4 2 28 1 1467 1619 1620 3838 +14355 4 2 28 1 2957 3215 2980 3757 +14356 4 2 28 1 2663 2996 3179 3418 +14357 4 2 28 1 1371 3423 1531 3478 +14358 4 2 28 1 2545 3241 3242 3251 +14359 4 2 28 1 1499 3277 1688 3463 +14360 4 2 28 1 836 837 3538 3641 +14361 4 2 28 1 2414 2390 3125 3383 +14362 4 2 28 1 2618 3034 3120 3558 +14363 4 2 28 1 2562 3399 2792 3424 +14364 4 2 28 1 1210 1085 866 3410 +14365 4 2 28 1 2694 3245 3380 3811 +14366 4 2 28 1 1030 3203 3050 3784 +14367 4 2 28 1 2763 3176 2674 3505 +14368 4 2 28 1 2075 3317 1821 3549 +14369 4 2 28 1 423 3034 422 3897 +14370 4 2 28 1 826 2969 1152 3927 +14371 4 2 28 1 2523 77 2500 2127 +14372 4 2 28 1 1793 1333 1655 3772 +14373 4 2 28 1 1001 3296 3038 3887 +14374 4 2 28 1 1700 1601 1602 3490 +14375 4 2 28 1 3119 3181 2766 3473 +14376 4 2 28 1 1556 3162 1739 3630 +14377 4 2 28 1 2484 2460 1842 3040 +14378 4 2 28 1 2243 3021 2966 3908 +14379 4 2 28 1 1408 1373 1375 3735 +14380 4 2 28 1 2648 3544 3140 3640 +14381 4 2 28 1 2422 93 2402 2382 +14382 4 2 28 1 427 3433 2776 3924 +14383 4 2 28 1 1364 1362 1363 3495 +14384 4 2 28 1 2021 2742 2188 3759 +14385 4 2 28 1 2113 2776 3168 3802 +14386 4 2 28 1 504 2740 3120 3923 +14387 4 2 28 1 1114 809 1113 3277 +14388 4 2 28 1 2653 3088 2986 3868 +14389 4 2 28 1 2556 3396 2911 3587 +14390 4 2 28 1 3179 3562 2996 3855 +14391 4 2 28 1 1039 1239 1235 3411 +14392 4 2 28 1 454 462 2963 3615 +14393 4 2 28 1 2387 2341 23 2329 +14394 4 2 28 1 2648 3140 2842 3357 +14395 4 2 28 1 1451 1736 3160 3546 +14396 4 2 28 1 1260 2888 3158 3671 +14397 4 2 28 1 1042 3473 3296 3925 +14398 4 2 28 1 2610 3021 3371 3733 +14399 4 2 28 1 2671 2623 3008 3009 +14400 4 2 28 1 2055 1916 2057 3338 +14401 4 2 28 1 2221 1906 3357 3720 +14402 4 2 28 1 3088 487 3697 3844 +14403 4 2 28 1 2188 3223 2269 3759 +14404 4 2 28 1 2852 3114 3087 3817 +14405 4 2 28 1 566 704 3073 3622 +14406 4 2 28 1 547 777 1683 1768 +14407 4 2 28 1 2654 2859 2592 3386 +14408 4 2 28 1 211 2916 1120 3612 +14409 4 2 28 1 2975 2976 2706 3400 +14410 4 2 28 1 1123 2953 3167 3513 +14411 4 2 28 1 2656 3239 2582 3665 +14412 4 2 28 1 2597 3037 2789 3782 +14413 4 2 28 1 831 3411 1239 3894 +14414 4 2 28 1 2551 3507 3613 3799 +14415 4 2 28 1 2709 3302 3487 3563 +14416 4 2 28 1 2538 2345 2405 3175 +14417 4 2 28 1 89 2469 2421 2139 +14418 4 2 28 1 2717 3161 3232 3278 +14419 4 2 28 1 2762 3188 3444 3564 +14420 4 2 28 1 1102 1100 1101 3083 +14421 4 2 28 1 2205 3856 3180 3878 +14422 4 2 28 1 2498 1352 2535 3370 +14423 4 2 28 1 2634 3479 2812 3800 +14424 4 2 28 1 1083 3150 1297 3784 +14425 4 2 28 1 617 621 762 3336 +14426 4 2 28 1 2821 2854 2636 3459 +14427 4 2 28 1 2967 3402 3043 3740 +14428 4 2 28 1 2469 89 1825 2139 +14429 4 2 28 1 540 231 230 3100 +14430 4 2 28 1 624 2863 3097 3781 +14431 4 2 28 1 804 1327 1665 3176 +14432 4 2 28 1 796 1200 3026 3556 +14433 4 2 28 1 2555 2850 3428 3429 +14434 4 2 28 1 1490 1643 3263 3823 +14435 4 2 28 1 2557 3773 2612 3849 +14436 4 2 28 1 2178 1998 2018 3029 +14437 4 2 28 1 414 431 277 2987 +14438 4 2 28 1 1509 2740 1682 3603 +14439 4 2 28 1 1462 3037 1463 3666 +14440 4 2 28 1 2891 2665 3429 3437 +14441 4 2 28 1 1728 3150 1721 3666 +14442 4 2 28 1 1564 1567 1563 2980 +14443 4 2 28 1 416 3332 2998 3647 +14444 4 2 28 1 2374 2375 2347 3519 +14445 4 2 28 1 1142 3349 3283 3753 +14446 4 2 28 1 343 3647 496 3745 +14447 4 2 28 1 848 2972 846 3776 +14448 4 2 28 1 3426 3495 2824 3549 +14449 4 2 28 1 1556 1554 3163 3630 +14450 4 2 28 1 286 510 199 3655 +14451 4 2 28 1 88 2053 2416 1825 +14452 4 2 28 1 1067 2997 3341 3572 +14453 4 2 28 1 134 797 1305 1710 +14454 4 2 28 1 826 825 3124 3927 +14455 4 2 28 1 991 3144 1028 3795 +14456 4 2 28 1 1911 2966 2243 3237 +14457 4 2 28 1 2479 2489 2416 3653 +14458 4 2 28 1 2044 2680 2218 3408 +14459 4 2 28 1 2599 2745 2719 3818 +14460 4 2 28 1 1167 3187 2975 3790 +14461 4 2 28 1 1150 2970 1223 3862 +14462 4 2 28 1 3215 3281 2685 3562 +14463 4 2 28 1 2012 2155 3021 3371 +14464 4 2 28 1 708 3252 632 3540 +14465 4 2 28 1 736 640 3201 3625 +14466 4 2 28 1 2444 2472 2449 3278 +14467 4 2 28 1 2224 2939 1854 3607 +14468 4 2 28 1 2673 3446 2957 3757 +14469 4 2 28 1 2878 3198 1068 3439 +14470 4 2 28 1 2567 3280 2838 3547 +14471 4 2 28 1 1199 3128 208 3556 +14472 4 2 28 1 543 757 3146 3323 +14473 4 2 28 1 2723 2577 2768 3472 +14474 4 2 28 1 2843 2743 3570 3825 +14475 4 2 28 1 2578 2699 2899 3613 +14476 4 2 28 1 2644 3666 3050 3784 +14477 4 2 28 1 348 371 372 3920 +14478 4 2 28 1 363 2860 451 3626 +14479 4 2 28 1 1106 802 200 3599 +14480 4 2 28 1 1389 1395 1390 3348 +14481 4 2 28 1 2288 1931 1990 3403 +14482 4 2 28 1 2676 3157 2823 3601 +14483 4 2 28 1 1308 812 1252 3223 +14484 4 2 28 1 150 2146 1816 1300 +14485 4 2 28 1 446 2981 361 3679 +14486 4 2 28 1 2354 2353 2369 3482 +14487 4 2 28 1 2341 2294 23 2329 +14488 4 2 28 1 1825 2416 88 2469 +14489 4 2 28 1 1424 1718 1460 3584 +14490 4 2 28 1 3000 3322 3466 3892 +14491 4 2 28 1 2546 3564 3188 3883 +14492 4 2 28 1 969 921 923 3187 +14493 4 2 28 1 2601 3446 2957 3899 +14494 4 2 28 1 349 444 384 3344 +14495 4 2 28 1 2718 3134 3363 3892 +14496 4 2 28 1 2891 3272 1971 3407 +14497 4 2 28 1 2010 1289 2148 3283 +14498 4 2 28 1 2732 3070 2854 3187 +14499 4 2 28 1 2209 1879 1875 3244 +14500 4 2 28 1 2560 3155 3329 3623 +14501 4 2 28 1 2909 3267 2718 3541 +14502 4 2 28 1 1778 1714 1521 2925 +14503 4 2 28 1 812 3494 3223 3512 +14504 4 2 28 1 2230 3116 2076 3646 +14505 4 2 28 1 3061 3413 2190 3712 +14506 4 2 28 1 216 3223 1818 3273 +14507 4 2 28 1 660 742 3510 3747 +14508 4 2 28 1 1937 1936 1934 3272 +14509 4 2 28 1 785 154 1166 2136 +14510 4 2 28 1 973 1049 3505 3667 +14511 4 2 28 1 2520 60 1369 2494 +14512 4 2 28 1 73 2493 2501 2420 +14513 4 2 28 1 2567 3280 3547 3724 +14514 4 2 28 1 2709 2748 2691 3822 +14515 4 2 28 1 2445 2435 2436 3186 +14516 4 2 28 1 2705 3135 2936 3691 +14517 4 2 28 1 2345 2497 65 2531 +14518 4 2 28 1 1108 3138 1135 3506 +14519 4 2 28 1 1498 1496 1497 3238 +14520 4 2 28 1 2097 429 190 428 +14521 4 2 28 1 2500 2537 2529 3189 +14522 4 2 28 1 2654 2799 2859 3386 +14523 4 2 28 1 1489 3263 1491 3842 +14524 4 2 28 1 2878 3198 2977 3203 +14525 4 2 28 1 2192 2331 2293 3032 +14526 4 2 28 1 2695 2825 2627 3455 +14527 4 2 28 1 701 3073 719 3699 +14528 4 2 28 1 2144 2135 2214 3341 +14529 4 2 28 1 2373 2342 2375 3519 +14530 4 2 28 1 1863 3404 1861 3458 +14531 4 2 28 1 1553 3143 1593 3793 +14532 4 2 28 1 2965 3209 2642 3826 +14533 4 2 28 1 2635 3469 2881 3660 +14534 4 2 28 1 1182 3291 3492 3599 +14535 4 2 28 1 890 3209 873 3580 +14536 4 2 28 1 801 1092 230 3511 +14537 4 2 28 1 2969 3124 824 3410 +14538 4 2 28 1 3016 3671 2746 3795 +14539 4 2 28 1 1051 3434 1025 3508 +14540 4 2 28 1 2604 2691 3414 3769 +14541 4 2 28 1 2549 3585 2752 3722 +14542 4 2 28 1 1407 1399 1406 3418 +14543 4 2 28 1 500 357 359 3270 +14544 4 2 28 1 405 486 466 3243 +14545 4 2 28 1 3120 3558 3034 3897 +14546 4 2 28 1 1525 3170 1708 3577 +14547 4 2 28 1 522 215 7 1645 +14548 4 2 28 1 1653 1351 1769 3175 +14549 4 2 28 1 607 692 551 3008 +14550 4 2 28 1 3034 3080 2768 3585 +14551 4 2 28 1 3321 3524 2677 3850 +14552 4 2 28 1 2848 3453 2965 3674 +14553 4 2 28 1 2344 2398 100 2458 +14554 4 2 28 1 886 887 946 3563 +14555 4 2 28 1 1149 3572 966 3834 +14556 4 2 28 1 1885 1887 1886 3193 +14557 4 2 28 1 1934 3272 2850 3407 +14558 4 2 28 1 1580 2061 1775 3772 +14559 4 2 28 1 2693 3167 2890 3729 +14560 4 2 28 1 2542 3409 3382 3425 +14561 4 2 28 1 2838 3171 3547 3838 +14562 4 2 28 1 643 3608 599 3781 +14563 4 2 28 1 2564 3180 2613 3386 +14564 4 2 28 1 3104 3841 2785 3861 +14565 4 2 28 1 1634 1578 3025 3593 +14566 4 2 28 1 519 387 3168 3368 +14567 4 2 28 1 1073 1090 3173 3674 +14568 4 2 28 1 3032 3041 2632 3518 +14569 4 2 28 1 2305 2304 2306 3873 +14570 4 2 28 1 2012 3371 3021 3733 +14571 4 2 28 1 2723 2729 2577 3472 +14572 4 2 28 1 222 3225 793 3694 +14573 4 2 28 1 2601 3825 3682 3899 +14574 4 2 28 1 1473 3300 2647 3362 +14575 4 2 28 1 1590 1555 1589 2736 +14576 4 2 28 1 2378 2399 2353 3482 +14577 4 2 28 1 922 3372 1159 3886 +14578 4 2 28 1 1621 537 690 3077 +14579 4 2 28 1 1212 3533 2872 3538 +14580 4 2 28 1 1406 1418 1413 3418 +14581 4 2 28 1 2071 2082 2081 2646 +14582 4 2 28 1 2681 2860 2778 3679 +14583 4 2 28 1 2758 3370 1661 3780 +14584 4 2 28 1 2939 3426 2824 3607 +14585 4 2 28 1 2988 3016 2746 3795 +14586 4 2 28 1 646 3221 3007 3569 +14587 4 2 28 1 3061 3205 2775 3413 +14588 4 2 28 1 528 1631 243 1319 +14589 4 2 28 1 1650 797 3298 3555 +14590 4 2 28 1 2638 2639 2933 3683 +14591 4 2 28 1 2638 2744 2599 3683 +14592 4 2 28 1 2653 2880 3088 3868 +14593 4 2 28 1 2448 2485 2466 3230 +14594 4 2 28 1 2925 2645 3121 3567 +14595 4 2 28 1 643 3097 746 3608 +14596 4 2 28 1 265 533 677 2105 +14597 4 2 28 1 2784 3266 3551 3918 +14598 4 2 28 1 763 3273 3323 3756 +14599 4 2 28 1 2086 3064 735 3499 +14600 4 2 28 1 2438 2437 3657 3884 +14601 4 2 28 1 2626 3095 3454 3592 +14602 4 2 28 1 1228 3397 2929 3479 +14603 4 2 28 1 2616 3192 2566 3300 +14604 4 2 28 1 3235 3236 2857 3888 +14605 4 2 28 1 2082 2081 2646 3591 +14606 4 2 28 1 2730 3122 2598 3916 +14607 4 2 28 1 1494 1783 1668 2977 +14608 4 2 28 1 661 660 642 3510 +14609 4 2 28 1 1319 1630 242 668 +14610 4 2 28 1 2067 1829 2068 3200 +14611 4 2 28 1 219 3342 799 3871 +14612 4 2 28 1 1167 2975 3187 3821 +14613 4 2 28 1 939 1223 3459 3862 +14614 4 2 28 1 425 422 279 3558 +14615 4 2 28 1 2453 2452 2451 2982 +14616 4 2 28 1 2574 2694 3160 3219 +14617 4 2 28 1 2685 3215 3570 3757 +14618 4 2 28 1 2827 3167 2890 3523 +14619 4 2 28 1 368 365 369 3368 +14620 4 2 28 1 846 2972 849 3595 +14621 4 2 28 1 2357 2372 2355 3104 +14622 4 2 28 1 1156 1159 3372 3886 +14623 4 2 28 1 665 545 739 3118 +14624 4 2 28 1 1380 1378 1381 3751 +14625 4 2 28 1 2387 22 2348 2295 +14626 4 2 28 1 381 458 3085 3867 +14627 4 2 28 1 2444 2449 2441 3278 +14628 4 2 28 1 1985 3142 1984 3802 +14629 4 2 28 1 516 434 3047 3088 +14630 4 2 28 1 813 1094 814 3121 +14631 4 2 28 1 556 2905 2873 3614 +14632 4 2 28 1 1986 2904 2227 3407 +14633 4 2 28 1 683 730 3010 3356 +14634 4 2 28 1 973 3505 1126 3664 +14635 4 2 28 1 2527 3586 2499 3644 +14636 4 2 28 1 1701 1602 1608 3815 +14637 4 2 28 1 1638 3076 1322 3752 +14638 4 2 28 1 2567 3547 3183 3724 +14639 4 2 28 1 2727 2649 2972 3038 +14640 4 2 28 1 2541 3507 2764 3673 +14641 4 2 28 1 2691 3147 3224 3487 +14642 4 2 28 1 938 3331 975 3800 +14643 4 2 28 1 736 3201 726 3550 +14644 4 2 28 1 2835 3361 3151 3682 +14645 4 2 28 1 640 622 726 3201 +14646 4 2 28 1 87 1835 2463 2416 +14647 4 2 28 1 2555 3142 2850 3407 +14648 4 2 28 1 1416 1419 1492 3387 +14649 4 2 28 1 2663 3179 2943 3418 +14650 4 2 28 1 1348 1649 1795 3621 +14651 4 2 28 1 2620 3130 3015 3864 +14652 4 2 28 1 1372 1449 1594 3478 +14653 4 2 28 1 1370 3478 1372 3503 +14654 4 2 28 1 1206 3506 1131 3530 +14655 4 2 28 1 602 612 695 3619 +14656 4 2 28 1 2298 2324 2327 3040 +14657 4 2 28 1 2474 97 2338 2468 +14658 4 2 28 1 2647 2736 2616 3300 +14659 4 2 28 1 1251 1009 3248 3905 +14660 4 2 28 1 3011 3203 3050 3524 +14661 4 2 28 1 1831 2192 2177 3032 +14662 4 2 28 1 2503 3586 3246 3778 +14663 4 2 28 1 920 3372 922 3790 +14664 4 2 28 1 2306 2313 2319 3094 +14665 4 2 28 1 732 765 546 3490 +14666 4 2 28 1 2568 3157 2944 3495 +14667 4 2 28 1 1332 1821 3317 3549 +14668 4 2 28 1 2878 981 3203 3660 +14669 4 2 28 1 2695 2808 2694 3916 +14670 4 2 28 1 349 345 332 3605 +14671 4 2 28 1 2827 3167 2976 3372 +14672 4 2 28 1 2117 3356 2109 3499 +14673 4 2 28 1 1074 1073 1072 3115 +14674 4 2 28 1 2540 2935 3576 3852 +14675 4 2 28 1 2722 3229 2821 3705 +14676 4 2 28 1 2626 3051 3592 3654 +14677 4 2 28 1 2635 2828 3665 3687 +14678 4 2 28 1 1665 804 125 1327 +14679 4 2 28 1 836 3343 834 3641 +14680 4 2 28 1 1802 2498 59 2520 +14681 4 2 28 1 1169 834 3343 3641 +14682 4 2 28 1 2550 3199 3098 3579 +14683 4 2 28 1 1771 3150 1728 3666 +14684 4 2 28 1 874 3447 892 3650 +14685 4 2 28 1 301 304 3141 3588 +14686 4 2 28 1 2290 2279 2241 3194 +14687 4 2 28 1 2727 2782 3038 3517 +14688 4 2 28 1 876 1187 884 3258 +14689 4 2 28 1 2311 2326 2325 3260 +14690 4 2 28 1 2036 2207 2190 3712 +14691 4 2 28 1 1138 3349 1140 3753 +14692 4 2 28 1 2671 3089 2905 3801 +14693 4 2 28 1 2558 3136 3053 3904 +14694 4 2 28 1 2699 2923 2731 3613 +14695 4 2 28 1 2620 2881 3130 3864 +14696 4 2 28 1 2990 3174 2712 3384 +14697 4 2 28 1 2734 3164 3658 3889 +14698 4 2 28 1 1371 1531 1449 3478 +14699 4 2 28 1 2436 3651 3186 3884 +14700 4 2 28 1 2743 3020 3570 3761 +14701 4 2 28 1 502 3270 359 3626 +14702 4 2 28 1 1051 1025 1052 3508 +14703 4 2 28 1 519 387 419 3168 +14704 4 2 28 1 3062 3500 298 3730 +14705 4 2 28 1 2002 1969 1970 3448 +14706 4 2 28 1 2723 2932 2826 3460 +14707 4 2 28 1 1811 2153 2900 3096 +14708 4 2 28 1 2523 2500 2526 3189 +14709 4 2 28 1 796 1262 1120 3535 +14710 4 2 28 1 550 713 3077 3474 +14711 4 2 28 1 2365 2376 2364 3865 +14712 4 2 28 1 2741 3094 3537 3837 +14713 4 2 28 1 810 232 2925 3567 +14714 4 2 28 1 2542 3382 3058 3425 +14715 4 2 28 1 1748 1630 1749 2999 +14716 4 2 28 1 1377 1777 1681 3751 +14717 4 2 28 1 2057 2101 2056 2701 +14718 4 2 28 1 1952 3237 2672 3293 +14719 4 2 28 1 1554 3164 3163 3630 +14720 4 2 28 1 2909 3061 2617 3736 +14721 4 2 28 1 2573 3232 3051 3869 +14722 4 2 28 1 1700 3490 1602 3491 +14723 4 2 28 1 2637 2919 3410 3915 +14724 4 2 28 1 2802 3594 3189 3627 +14725 4 2 28 1 553 3008 692 3930 +14726 4 2 28 1 844 843 841 3520 +14727 4 2 28 1 332 333 444 3620 +14728 4 2 28 1 950 3302 948 3675 +14729 4 2 28 1 3276 3629 2852 3902 +14730 4 2 28 1 2566 2549 3202 3428 +14731 4 2 28 1 2762 3564 3179 3855 +14732 4 2 28 1 550 3077 549 3474 +14733 4 2 28 1 2545 3466 3134 3770 +14734 4 2 28 1 2552 3029 3461 3462 +14735 4 2 28 1 2655 2656 2577 2723 +14736 4 2 28 1 1261 1243 3342 3696 +14737 4 2 28 1 668 1319 1630 2999 +14738 4 2 28 1 2530 2497 2538 3175 +14739 4 2 28 1 892 3447 1193 3650 +14740 4 2 28 1 1886 2186 1884 3440 +14741 4 2 28 1 1103 1193 2950 3650 +14742 4 2 28 1 2876 3462 2552 3532 +14743 4 2 28 1 2628 2770 2745 3420 +14744 4 2 28 1 1508 2618 3378 3676 +14745 4 2 28 1 843 1107 1108 3520 +14746 4 2 28 1 2333 2213 2191 3143 +14747 4 2 28 1 375 381 345 3605 +14748 4 2 28 1 428 380 505 2885 +14749 4 2 28 1 2598 2730 3329 3493 +14750 4 2 28 1 2742 3756 3512 3871 +14751 4 2 28 1 2775 3061 2909 3736 +14752 4 2 28 1 2829 3544 3515 3713 +14753 4 2 28 1 2706 2975 2732 3187 +14754 4 2 28 1 3147 3487 2709 3675 +14755 4 2 28 1 382 396 3025 3672 +14756 4 2 28 1 1619 3280 1620 3838 +14757 4 2 28 1 959 1202 886 3563 +14758 4 2 28 1 899 898 3453 3656 +14759 4 2 28 1 1484 1483 1482 3542 +14760 4 2 28 1 2685 3425 3382 3757 +14761 4 2 28 1 222 530 3225 3694 +14762 4 2 28 1 2933 3303 226 3600 +14763 4 2 28 1 835 1212 1089 3533 +14764 4 2 28 1 1966 2076 3116 3646 +14765 4 2 28 1 1089 1037 999 3533 +14766 4 2 28 1 873 3209 875 3648 +14767 4 2 28 1 2735 3249 2882 3511 +14768 4 2 28 1 2472 2469 2489 3042 +14769 4 2 28 1 1634 1578 1706 3025 +14770 4 2 28 1 2730 3374 2833 3854 +14771 4 2 28 1 2581 2906 2675 3392 +14772 4 2 28 1 2571 2606 2733 3293 +14773 4 2 28 1 898 1145 3453 3656 +14774 4 2 28 1 2800 3209 3648 3826 +14775 4 2 28 1 615 3191 2901 3726 +14776 4 2 28 1 905 903 2974 3777 +14777 4 2 28 1 1260 3158 1029 3671 +14778 4 2 28 1 1135 1107 992 3138 +14779 4 2 28 1 2027 3371 2230 3646 +14780 4 2 28 1 1881 2202 1889 3322 +14781 4 2 28 1 811 2931 3116 3309 +14782 4 2 28 1 1119 800 212 3612 +14783 4 2 28 1 533 265 2096 2105 +14784 4 2 28 1 2370 2396 2407 3554 +14785 4 2 28 1 2951 3356 764 3499 +14786 4 2 28 1 2707 3297 3081 3602 +14787 4 2 28 1 2671 3009 2906 3392 +14788 4 2 28 1 2900 3097 2901 3608 +14789 4 2 28 1 2748 2992 2709 3487 +14790 4 2 28 1 2110 2013 3084 3733 +14791 4 2 28 1 2540 3444 2762 3604 +14792 4 2 28 1 2129 2128 1963 2959 +14793 4 2 28 1 1129 1130 3431 3506 +14794 4 2 28 1 971 3276 1165 3294 +14795 4 2 28 1 2644 2677 3050 3782 +14796 4 2 28 1 222 756 530 3694 +14797 4 2 28 1 2104 2863 2275 3747 +14798 4 2 28 1 780 3007 687 3569 +14799 4 2 28 1 1448 1444 1624 3053 +14800 4 2 28 1 1549 1655 1552 3437 +14801 4 2 28 1 1702 1469 1656 3268 +14802 4 2 28 1 2791 2889 3242 3635 +14803 4 2 28 1 1926 1927 1928 3560 +14804 4 2 28 1 2584 2729 2622 2759 +14805 4 2 28 1 1837 2082 2123 3621 +14806 4 2 28 1 2701 2594 2757 3191 +14807 4 2 28 1 2508 2510 2521 3297 +14808 4 2 28 1 86 1835 2482 2463 +14809 4 2 28 1 2816 3295 3468 3866 +14810 4 2 28 1 422 3034 421 3504 +14811 4 2 28 1 2925 3121 2645 3263 +14812 4 2 28 1 2719 2969 2637 3124 +14813 4 2 28 1 1393 1392 1396 3127 +14814 4 2 28 1 3155 3390 2630 3750 +14815 4 2 28 1 2580 2669 2795 3521 +14816 4 2 28 1 2559 3231 2838 3687 +14817 4 2 28 1 2049 2131 2154 3288 +14818 4 2 28 1 1732 2674 3577 3900 +14819 4 2 28 1 1869 1868 1867 3680 +14820 4 2 28 1 553 2873 3474 3930 +14821 4 2 28 1 2061 2904 1775 3772 +14822 4 2 28 1 392 401 400 3353 +14823 4 2 28 1 948 3302 887 3675 +14824 4 2 28 1 1013 3535 3026 3808 +14825 4 2 28 1 3386 3652 3180 3878 +14826 4 2 28 1 792 116 1192 1495 +14827 4 2 28 1 1447 1523 3584 3749 +14828 4 2 28 1 1824 1166 154 2136 +14829 4 2 28 1 1876 2092 2183 3004 +14830 4 2 28 1 2556 3420 3396 3818 +14831 4 2 28 1 2110 2013 2208 3084 +14832 4 2 28 1 1606 1592 1657 2914 +14833 4 2 28 1 3120 3344 445 3620 +14834 4 2 28 1 813 801 231 3567 +14835 4 2 28 1 3107 3248 1010 3905 +14836 4 2 28 1 3142 3407 2904 3803 +14837 4 2 28 1 3149 3422 2679 3914 +14838 4 2 28 1 1136 229 1092 3511 +14839 4 2 28 1 846 849 1161 3595 +14840 4 2 28 1 2044 2219 2218 2680 +14841 4 2 28 1 2361 2370 2388 3715 +14842 4 2 28 1 3087 1055 3436 3817 +14843 4 2 28 1 1536 3247 2292 3737 +14844 4 2 28 1 2878 2977 2644 3203 +14845 4 2 28 1 1161 867 992 3595 +14846 4 2 28 1 754 2927 3221 3569 +14847 4 2 28 1 3140 3527 1880 3528 +14848 4 2 28 1 2710 3382 2980 3882 +14849 4 2 28 1 1772 1354 291 523 +14850 4 2 28 1 708 632 608 3540 +14851 4 2 28 1 1131 1108 1135 3506 +14852 4 2 28 1 2613 2799 3072 3572 +14853 4 2 28 1 273 434 203 3047 +14854 4 2 28 1 2545 2792 3466 3770 +14855 4 2 28 1 874 1157 872 3648 +14856 4 2 28 1 873 872 870 3648 +14857 4 2 28 1 2081 3255 2646 3591 +14858 4 2 28 1 390 398 280 3109 +14859 4 2 28 1 393 299 298 3062 +14860 4 2 28 1 749 686 536 3502 +14861 4 2 28 1 1550 1738 3163 3437 +14862 4 2 28 1 1227 3321 1004 3881 +14863 4 2 28 1 534 2882 3249 3511 +14864 4 2 28 1 2862 3344 2773 3620 +14865 4 2 28 1 2580 2669 2664 3044 +14866 4 2 28 1 2626 3592 3066 3654 +14867 4 2 28 1 3016 3158 1008 3643 +14868 4 2 28 1 2547 2939 2876 3532 +14869 4 2 28 1 2859 3512 1242 3871 +14870 4 2 28 1 2708 3306 3068 3727 +14871 4 2 28 1 1433 3135 1757 3691 +14872 4 2 28 1 1411 1711 1402 3279 +14873 4 2 28 1 25 2346 2332 2349 +14874 4 2 28 1 1398 1400 1693 3254 +14875 4 2 28 1 3199 3444 2995 3852 +14876 4 2 28 1 818 816 3328 3432 +14877 4 2 28 1 608 602 589 3540 +14878 4 2 28 1 2935 2542 3058 3425 +14879 4 2 28 1 2618 2788 3017 3603 +14880 4 2 28 1 2327 2335 2298 3040 +14881 4 2 28 1 989 3256 1195 3853 +14882 4 2 28 1 2748 3224 2811 3381 +14883 4 2 28 1 2540 3188 3444 3604 +14884 4 2 28 1 2635 2677 2567 3769 +14885 4 2 28 1 2753 3346 3514 3771 +14886 4 2 28 1 1361 1359 1761 2823 +14887 4 2 28 1 313 2948 312 3805 +14888 4 2 28 1 2549 3472 2633 3585 +14889 4 2 28 1 1229 3296 1245 3580 +14890 4 2 28 1 436 296 490 3152 +14891 4 2 28 1 729 3089 747 3634 +14892 4 2 28 1 798 139 2142 1292 +14893 4 2 28 1 1970 3377 2890 3448 +14894 4 2 28 1 2396 2390 107 1573 +14895 4 2 28 1 1208 2975 1167 3566 +14896 4 2 28 1 900 847 845 3196 +14897 4 2 28 1 938 943 3331 3643 +14898 4 2 28 1 338 2985 346 3917 +14899 4 2 28 1 427 3270 2776 3408 +14900 4 2 28 1 427 3408 2776 3433 +14901 4 2 28 1 2896 3336 768 3441 +14902 4 2 28 1 1414 1407 1413 3418 +14903 4 2 28 1 2109 3356 2951 3499 +14904 4 2 28 1 983 1044 3350 3811 +14905 4 2 28 1 1201 1271 1199 3556 +14906 4 2 28 1 1734 3033 1375 3735 +14907 4 2 28 1 2541 2971 2857 3799 +14908 4 2 28 1 2852 3817 3416 3902 +14909 4 2 28 1 1143 1142 3283 3753 +14910 4 2 28 1 932 928 1223 3459 +14911 4 2 28 1 2586 3250 2688 3360 +14912 4 2 28 1 2657 3252 3010 3578 +14913 4 2 28 1 2766 2803 2662 3012 +14914 4 2 28 1 295 296 3152 3500 +14915 4 2 28 1 1706 1634 3025 3672 +14916 4 2 28 1 2368 2361 3402 3715 +14917 4 2 28 1 3268 3470 1469 3749 +14918 4 2 28 1 1607 1509 1682 3603 +14919 4 2 28 1 2762 3564 3444 3722 +14920 4 2 28 1 2636 2818 2799 3240 +14921 4 2 28 1 709 636 738 3475 +14922 4 2 28 1 2715 3266 3207 3918 +14923 4 2 28 1 1566 3281 3838 3898 +14924 4 2 28 1 2039 2167 2215 3559 +14925 4 2 28 1 1259 226 3303 3600 +14926 4 2 28 1 271 171 1640 1626 +14927 4 2 28 1 703 628 588 3498 +14928 4 2 28 1 1028 3144 988 3696 +14929 4 2 28 1 1239 3397 829 3894 +14930 4 2 28 1 887 881 1134 3487 +14931 4 2 28 1 2566 3202 3192 3428 +14932 4 2 28 1 2765 3184 2811 3320 +14933 4 2 28 1 201 3492 2934 3599 +14934 4 2 28 1 3162 3163 2968 3630 +14935 4 2 28 1 2720 3051 3232 3901 +14936 4 2 28 1 2655 2618 2788 3034 +14937 4 2 28 1 1444 3053 3264 3891 +14938 4 2 28 1 928 927 3459 3874 +14939 4 2 28 1 1946 1947 3066 3933 +14940 4 2 28 1 2586 3399 3443 3662 +14941 4 2 28 1 612 3221 695 3619 +14942 4 2 28 1 2836 2953 2693 3305 +14943 4 2 28 1 1780 1582 1674 3378 +14944 4 2 28 1 1177 3380 990 3632 +14945 4 2 28 1 3294 3632 3005 3854 +14946 4 2 28 1 2618 2572 2773 3585 +14947 4 2 28 1 1655 2904 2891 3772 +14948 4 2 28 1 299 3062 3141 3500 +14949 4 2 28 1 1882 1877 1881 3322 +14950 4 2 28 1 843 3369 841 3520 +14951 4 2 28 1 1285 785 1166 3393 +14952 4 2 28 1 117 792 1191 1326 +14953 4 2 28 1 2590 2854 2732 3750 +14954 4 2 28 1 2078 1992 2242 3210 +14955 4 2 28 1 516 457 376 3088 +14956 4 2 28 1 2722 3018 2827 3325 +14957 4 2 28 1 717 610 585 3509 +14958 4 2 28 1 803 1061 1059 3809 +14959 4 2 28 1 192 277 2107 414 +14960 4 2 28 1 687 3007 1612 3569 +14961 4 2 28 1 954 952 953 3469 +14962 4 2 28 1 2649 2604 2811 3928 +14963 4 2 28 1 2589 3377 3039 3451 +14964 4 2 28 1 2637 3334 2556 3420 +14965 4 2 28 1 676 675 674 2900 +14966 4 2 28 1 2662 2611 2887 3822 +14967 4 2 28 1 411 3131 413 3929 +14968 4 2 28 1 2601 2843 3570 3825 +14969 4 2 28 1 2641 2874 3347 3690 +14970 4 2 28 1 1653 1769 2405 3175 +14971 4 2 28 1 1662 1163 781 3170 +14972 4 2 28 1 2764 3003 2959 3631 +14973 4 2 28 1 2533 80 2029 1841 +14974 4 2 28 1 1701 1608 2907 3815 +14975 4 2 28 1 206 270 2932 3670 +14976 4 2 28 1 1278 1050 3182 3628 +14977 4 2 28 1 2380 3175 2377 3914 +14978 4 2 28 1 744 755 672 3261 +14979 4 2 28 1 2309 2294 2311 3069 +14980 4 2 28 1 2574 2695 2694 3916 +14981 4 2 28 1 689 2908 741 3815 +14982 4 2 28 1 2492 2478 3714 3877 +14983 4 2 28 1 747 3089 694 3614 +14984 4 2 28 1 1781 1330 1597 3335 +14985 4 2 28 1 1858 2221 1906 3357 +14986 4 2 28 1 2028 2266 2229 3115 +14987 4 2 28 1 2757 3498 3252 3578 +14988 4 2 28 1 932 3240 2993 3459 +14989 4 2 28 1 1120 1268 1119 3535 +14990 4 2 28 1 1243 799 3342 3696 +14991 4 2 28 1 2200 3218 1835 3653 +14992 4 2 28 1 2560 3329 2630 3493 +14993 4 2 28 1 1421 1419 1420 3202 +14994 4 2 28 1 920 919 3372 3790 +14995 4 2 28 1 1360 3157 1361 3495 +14996 4 2 28 1 3404 3458 2842 3739 +14997 4 2 28 1 2422 3262 2488 3598 +14998 4 2 28 1 2874 3454 3337 3933 +14999 4 2 28 1 2296 1570 16 2318 +15000 4 2 28 1 581 2895 3359 3365 +15001 4 2 28 1 1915 3039 1940 3451 +15002 4 2 28 1 1060 3167 1111 3729 +15003 4 2 28 1 2235 1897 1898 3212 +15004 4 2 28 1 2439 2446 2448 3230 +15005 4 2 28 1 1437 1520 1744 2938 +15006 4 2 28 1 973 3505 3664 3667 +15007 4 2 28 1 420 274 210 3548 +15008 4 2 28 1 2212 2137 2136 3018 +15009 4 2 28 1 2601 3682 3361 3820 +15010 4 2 28 1 3087 3114 993 3817 +15011 4 2 28 1 693 734 2920 3677 +15012 4 2 28 1 714 3550 3001 3732 +15013 4 2 28 1 570 3287 568 3553 +15014 4 2 28 1 1119 211 1120 3612 +15015 4 2 28 1 2610 2703 3371 3774 +15016 4 2 28 1 2158 2931 2262 3116 +15017 4 2 28 1 1773 1585 1332 3549 +15018 4 2 28 1 3134 3153 2544 3912 +15019 4 2 28 1 342 340 2986 3844 +15020 4 2 28 1 2974 3184 2765 3777 +15021 4 2 28 1 1008 3158 3016 3671 +15022 4 2 28 1 1761 3495 2823 3549 +15023 4 2 28 1 1800 1691 1401 3501 +15024 4 2 28 1 1239 3411 3397 3894 +15025 4 2 28 1 1807 1457 3300 3362 +15026 4 2 28 1 405 1636 275 3398 +15027 4 2 28 1 410 459 3131 3697 +15028 4 2 28 1 985 945 966 3435 +15029 4 2 28 1 800 3314 212 3612 +15030 4 2 28 1 1675 1558 1365 3486 +15031 4 2 28 1 2739 2998 2606 3131 +15032 4 2 28 1 2675 2735 2906 3249 +15033 4 2 28 1 544 780 731 3007 +15034 4 2 28 1 978 3181 1257 3182 +15035 4 2 28 1 329 328 3080 3620 +15036 4 2 28 1 398 1646 1334 3109 +15037 4 2 28 1 2797 3279 2556 3610 +15038 4 2 28 1 1818 216 2152 3223 +15039 4 2 28 1 2634 2973 3479 3800 +15040 4 2 28 1 614 597 602 3619 +15041 4 2 28 1 2429 2428 2419 3197 +15042 4 2 28 1 1617 1498 1497 3231 +15043 4 2 28 1 2476 90 2421 3627 +15044 4 2 28 1 2044 2223 2776 3408 +15045 4 2 28 1 1023 962 1126 3416 +15046 4 2 28 1 2787 3181 3119 3628 +15047 4 2 28 1 292 511 1814 3101 +15048 4 2 28 1 860 857 862 3224 +15049 4 2 28 1 2959 3003 2764 3673 +15050 4 2 28 1 734 2924 2920 3677 +15051 4 2 28 1 327 3080 328 3913 +15052 4 2 28 1 600 718 708 3252 +15053 4 2 28 1 2662 2887 2766 3012 +15054 4 2 28 1 2308 3351 2306 3685 +15055 4 2 28 1 2763 3539 3036 3900 +15056 4 2 28 1 783 1274 1273 3284 +15057 4 2 28 1 1052 2950 1193 3753 +15058 4 2 28 1 2503 3246 2519 3778 +15059 4 2 28 1 1645 1499 1688 3463 +15060 4 2 28 1 1347 1536 1677 3247 +15061 4 2 28 1 874 1157 3648 3650 +15062 4 2 28 1 723 3089 729 3634 +15063 4 2 28 1 2847 2851 2602 3646 +15064 4 2 28 1 1408 1794 3503 3779 +15065 4 2 28 1 2599 2628 2745 3420 +15066 4 2 28 1 2604 3414 2691 3928 +15067 4 2 28 1 2129 2203 3401 3819 +15068 4 2 28 1 875 890 1211 3209 +15069 4 2 28 1 1217 3145 3533 3538 +15070 4 2 28 1 1111 2953 1110 3729 +15071 4 2 28 1 1409 1423 1410 3427 +15072 4 2 28 1 1173 3374 998 3661 +15073 4 2 28 1 3134 3466 2792 3770 +15074 4 2 28 1 632 3252 2951 3540 +15075 4 2 28 1 443 2778 3394 3633 +15076 4 2 28 1 3054 3190 2563 3199 +15077 4 2 28 1 1047 3659 3350 3811 +15078 4 2 28 1 2769 3328 3227 3934 +15079 4 2 28 1 2318 2292 2313 3737 +15080 4 2 28 1 2571 3237 2672 3497 +15081 4 2 28 1 2666 3481 3112 3708 +15082 4 2 28 1 2745 2744 3248 3663 +15083 4 2 28 1 1816 1300 2146 3194 +15084 4 2 28 1 489 2981 446 3764 +15085 4 2 28 1 967 993 1086 3114 +15086 4 2 28 1 860 861 3381 3695 +15087 4 2 28 1 998 3374 1171 3854 +15088 4 2 28 1 769 721 745 3768 +15089 4 2 28 1 1147 3374 1173 3661 +15090 4 2 28 1 2211 3640 3133 3720 +15091 4 2 28 1 2673 3446 3310 3846 +15092 4 2 28 1 360 359 358 3626 +15093 4 2 28 1 2562 3662 3414 3928 +15094 4 2 28 1 2227 2904 2891 3407 +15095 4 2 28 1 604 642 641 3510 +15096 4 2 28 1 691 548 542 3815 +15097 4 2 28 1 1063 3173 1020 3787 +15098 4 2 28 1 1140 3349 1142 3753 +15099 4 2 28 1 491 501 333 3897 +15100 4 2 28 1 201 410 200 3599 +15101 4 2 28 1 2733 2759 3047 3088 +15102 4 2 28 1 2339 2372 2384 3002 +15103 4 2 28 1 2014 2232 3139 3733 +15104 4 2 28 1 2860 3168 2776 3802 +15105 4 2 28 1 1523 1468 3470 3749 +15106 4 2 28 1 2703 3115 2851 3173 +15107 4 2 28 1 2509 3602 2508 3703 +15108 4 2 28 1 610 627 626 3509 +15109 4 2 28 1 433 3120 2918 3344 +15110 4 2 28 1 2786 3074 2779 3639 +15111 4 2 28 1 1477 1479 3160 3812 +15112 4 2 28 1 695 662 614 3619 +15113 4 2 28 1 2970 3572 3229 3862 +15114 4 2 28 1 2980 3215 2685 3757 +15115 4 2 28 1 215 1309 1499 3277 +15116 4 2 28 1 714 710 726 3550 +15117 4 2 28 1 2036 3413 2207 3712 +15118 4 2 28 1 449 2963 320 3082 +15119 4 2 28 1 836 3538 3343 3641 +15120 4 2 28 1 2701 3191 3578 3726 +15121 4 2 28 1 2658 2795 2756 3521 +15122 4 2 28 1 805 2004 148 1151 +15123 4 2 28 1 978 1050 958 3628 +15124 4 2 28 1 963 971 972 3664 +15125 4 2 28 1 2756 2795 3287 3872 +15126 4 2 28 1 454 324 330 3615 +15127 4 2 28 1 2561 3151 3709 3918 +15128 4 2 28 1 2370 3125 3554 3715 +15129 4 2 28 1 2766 2612 2803 3181 +15130 4 2 28 1 1244 1007 1029 3158 +15131 4 2 28 1 390 3109 3290 3442 +15132 4 2 28 1 2175 1971 1934 3407 +15133 4 2 28 1 2665 2891 3642 3793 +15134 4 2 28 1 271 436 1626 3152 +15135 4 2 28 1 1897 1886 1887 3193 +15136 4 2 28 1 1259 3303 1258 3600 +15137 4 2 28 1 611 639 702 3389 +15138 4 2 28 1 569 570 568 3553 +15139 4 2 28 1 2702 2895 2714 3365 +15140 4 2 28 1 1064 3309 3116 3787 +15141 4 2 28 1 2684 2687 2565 3403 +15142 4 2 28 1 1240 222 223 3225 +15143 4 2 28 1 2552 3532 2857 3723 +15144 4 2 28 1 3254 3529 2915 3748 +15145 4 2 28 1 1138 3447 3349 3753 +15146 4 2 28 1 1345 249 544 687 +15147 4 2 28 1 2667 3314 3130 3612 +15148 4 2 28 1 2595 2697 3327 3686 +15149 4 2 28 1 2603 2594 3532 3744 +15150 4 2 28 1 2339 2404 95 2471 +15151 4 2 28 1 339 3080 447 3794 +15152 4 2 28 1 570 575 3287 3553 +15153 4 2 28 1 2792 3399 3134 3424 +15154 4 2 28 1 399 493 3366 3879 +15155 4 2 28 1 1997 2032 3029 3457 +15156 4 2 28 1 331 2986 340 3745 +15157 4 2 28 1 3241 3251 3155 3623 +15158 4 2 28 1 1957 1955 1950 3078 +15159 4 2 28 1 2597 3308 2627 3455 +15160 4 2 28 1 1844 1768 2249 3388 +15161 4 2 28 1 1214 3629 3321 3777 +15162 4 2 28 1 2871 3206 3205 3827 +15163 4 2 28 1 999 3145 3070 3533 +15164 4 2 28 1 589 587 708 3540 +15165 4 2 28 1 476 297 300 3500 +15166 4 2 28 1 3046 3119 2766 3473 +15167 4 2 28 1 2648 3105 2842 3848 +15168 4 2 28 1 564 706 567 3516 +15169 4 2 28 1 2010 1164 1289 3283 +15170 4 2 28 1 1067 3341 3072 3572 +15171 4 2 28 1 2890 3167 2827 3809 +15172 4 2 28 1 990 3380 972 3632 +15173 4 2 28 1 1133 3147 1132 3675 +15174 4 2 28 1 2185 1896 1907 3908 +15175 4 2 28 1 3736 3852 3153 3912 +15176 4 2 28 1 2140 2001 2134 2997 +15177 4 2 28 1 1003 3048 3479 3905 +15178 4 2 28 1 1046 1048 1047 3659 +15179 4 2 28 1 402 3670 3307 3920 +15180 4 2 28 1 763 733 3273 3756 +15181 4 2 28 1 1814 197 292 521 +15182 4 2 28 1 2927 2624 3076 3719 +15183 4 2 28 1 788 1087 3335 3775 +15184 4 2 28 1 530 756 759 3467 +15185 4 2 28 1 569 567 645 3516 +15186 4 2 28 1 874 882 3447 3826 +15187 4 2 28 1 1054 3305 1283 3729 +15188 4 2 28 1 1440 1502 3264 3904 +15189 4 2 28 1 1673 2697 1535 3686 +15190 4 2 28 1 2830 3508 3283 3753 +15191 4 2 28 1 3122 3123 2554 3536 +15192 4 2 28 1 522 1325 293 3463 +15193 4 2 28 1 2787 2650 2937 3291 +15194 4 2 28 1 1127 1298 804 3176 +15195 4 2 28 1 1474 1450 1595 3706 +15196 4 2 28 1 156 791 1189 2134 +15197 4 2 28 1 2895 3365 578 3385 +15198 4 2 28 1 219 3146 3342 3871 +15199 4 2 28 1 569 711 703 3553 +15200 4 2 28 1 968 1033 1004 3524 +15201 4 2 28 1 2739 2672 3101 3655 +15202 4 2 28 1 645 706 705 3516 +15203 4 2 28 1 1646 3109 398 3398 +15204 4 2 28 1 431 3217 2987 3796 +15205 4 2 28 1 388 368 387 3368 +15206 4 2 28 1 2783 2640 2940 2964 +15207 4 2 28 1 3169 3579 2543 3636 +15208 4 2 28 1 2780 3449 3216 3716 +15209 4 2 28 1 2828 2881 2635 3014 +15210 4 2 28 1 994 3325 995 3862 +15211 4 2 28 1 604 2899 3510 3781 +15212 4 2 28 1 2550 2871 3205 3579 +15213 4 2 28 1 2561 3740 3023 3832 +15214 4 2 28 1 771 534 228 3249 +15215 4 2 28 1 2747 3221 2951 3540 +15216 4 2 28 1 575 574 3287 3689 +15217 4 2 28 1 2643 2976 2975 3400 +15218 4 2 28 1 2086 254 735 541 +15219 4 2 28 1 2878 3439 1069 3660 +15220 4 2 28 1 1470 2926 3159 3824 +15221 4 2 28 1 2321 35 2293 3476 +15222 4 2 28 1 1662 781 1478 3170 +15223 4 2 28 1 2223 2023 2044 2776 +15224 4 2 28 1 1096 3298 797 3555 +15225 4 2 28 1 1075 1238 1242 3512 +15226 4 2 28 1 627 717 724 3509 +15227 4 2 28 1 2580 2894 2664 3486 +15228 4 2 28 1 2414 3125 2370 3715 +15229 4 2 28 1 2368 2361 2359 3402 +15230 4 2 28 1 788 3335 3150 3775 +15231 4 2 28 1 604 3510 641 3781 +15232 4 2 28 1 1573 2390 107 1346 +15233 4 2 28 1 2633 2948 2952 3102 +15234 4 2 28 1 2746 2813 2638 3158 +15235 4 2 28 1 964 3434 979 3863 +15236 4 2 28 1 914 889 915 3513 +15237 4 2 28 1 1215 3792 3144 3795 +15238 4 2 28 1 1694 3160 1736 3546 +15239 4 2 28 1 2030 1952 3237 3646 +15240 4 2 28 1 3057 3291 2787 3656 +15241 4 2 28 1 1516 1485 1486 3264 +15242 4 2 28 1 570 703 575 3553 +15243 4 2 28 1 2542 3123 2911 3326 +15244 4 2 28 1 2853 3347 3004 3690 +15245 4 2 28 1 2657 3338 2058 3525 +15246 4 2 28 1 879 2992 886 3907 +15247 4 2 28 1 1248 858 3479 3810 +15248 4 2 28 1 643 624 653 3097 +15249 4 2 28 1 1250 1194 1249 3611 +15250 4 2 28 1 333 3120 3620 3897 +15251 4 2 28 1 3329 3396 2560 3623 +15252 4 2 28 1 2583 2684 2640 3583 +15253 4 2 28 1 2891 2904 2555 3407 +15254 4 2 28 1 2168 2070 2069 3133 +15255 4 2 28 1 1305 1095 135 1710 +15256 4 2 28 1 2581 3156 2675 3683 +15257 4 2 28 1 3446 3618 3310 3846 +15258 4 2 28 1 3313 3408 2680 3728 +15259 4 2 28 1 1857 2876 2066 3739 +15260 4 2 28 1 1421 3192 1807 3202 +15261 4 2 28 1 890 873 1198 3580 +15262 4 2 28 1 1493 1654 2686 3362 +15263 4 2 28 1 2911 2554 3123 3731 +15264 4 2 28 1 1229 1198 1001 3580 +15265 4 2 28 1 2589 3039 3177 3645 +15266 4 2 28 1 344 338 3056 3796 +15267 4 2 28 1 1398 1693 1406 3254 +15268 4 2 28 1 1956 3426 2224 3607 +15269 4 2 28 1 1996 2025 1994 3405 +15270 4 2 28 1 1803 1519 1454 3900 +15271 4 2 28 1 895 1194 896 3611 +15272 4 2 28 1 2567 2838 3301 3547 +15273 4 2 28 1 694 3089 557 3614 +15274 4 2 28 1 1302 2015 141 1074 +15275 4 2 28 1 1841 2184 2029 3312 +15276 4 2 28 1 2775 2995 3205 3736 +15277 4 2 28 1 2051 1826 85 2482 +15278 4 2 28 1 479 172 436 1626 +15279 4 2 28 1 1229 1001 3296 3580 +15280 4 2 28 1 1237 3431 1130 3566 +15281 4 2 28 1 1832 535 2117 3499 +15282 4 2 28 1 1003 1248 1122 3479 +15283 4 2 28 1 1875 1873 2170 3541 +15284 4 2 28 1 970 1041 1042 3473 +15285 4 2 28 1 1039 2929 3411 3831 +15286 4 2 28 1 1280 1277 1064 3116 +15287 4 2 28 1 2296 2318 2314 3889 +15288 4 2 28 1 3134 3770 3363 3892 +15289 4 2 28 1 2967 3716 3216 3717 +15290 4 2 28 1 2746 2888 2638 3391 +15291 4 2 28 1 1983 3856 2205 3878 +15292 4 2 28 1 694 557 555 3614 +15293 4 2 28 1 1925 1926 1922 3560 +15294 4 2 28 1 633 646 612 3221 +15295 4 2 28 1 1361 3157 2823 3495 +15296 4 2 28 1 2581 2675 2639 3683 +15297 4 2 28 1 2027 2028 2230 3371 +15298 4 2 28 1 2721 3153 3172 3419 +15299 4 2 28 1 1453 1464 1463 3037 +15300 4 2 28 1 568 3287 573 3872 +15301 4 2 28 1 1207 3331 943 3643 +15302 4 2 28 1 2813 2634 3331 3800 +15303 4 2 28 1 2633 3080 2862 3585 +15304 4 2 28 1 492 2880 3353 3920 +15305 4 2 28 1 2594 3531 3521 3532 +15306 4 2 28 1 868 1198 870 3517 +15307 4 2 28 1 2644 2977 3666 3784 +15308 4 2 28 1 413 3131 473 3844 +15309 4 2 28 1 1904 3021 2243 3908 +15310 4 2 28 1 272 505 407 3313 +15311 4 2 28 1 2698 3140 3649 3848 +15312 4 2 28 1 2388 2407 2395 3554 +15313 4 2 28 1 2004 3226 1151 3669 +15314 4 2 28 1 324 2963 449 3099 +15315 4 2 28 1 2320 2328 2312 3228 +15316 4 2 28 1 2046 2059 2215 3559 +15317 4 2 28 1 1164 1143 1142 3283 +15318 4 2 28 1 693 2920 619 3526 +15319 4 2 28 1 899 3453 3119 3656 +15320 4 2 28 1 1629 1566 1565 3281 +15321 4 2 28 1 2224 3426 2939 3607 +15322 4 2 28 1 520 2932 2844 3274 +15323 4 2 28 1 1328 1307 1650 3555 +15324 4 2 28 1 2583 2640 2681 3606 +15325 4 2 28 1 552 551 553 3474 +15326 4 2 28 1 2855 3452 3070 3921 +15327 4 2 28 1 933 3791 3240 3792 +15328 4 2 28 1 874 3648 3447 3650 +15329 4 2 28 1 2014 2703 3371 3733 +15330 4 2 28 1 917 914 3513 3530 +15331 4 2 28 1 2236 1942 2870 3827 +15332 4 2 28 1 2619 2914 3227 3659 +15333 4 2 28 1 1936 1934 3272 3557 +15334 4 2 28 1 2556 2637 3420 3818 +15335 4 2 28 1 1482 1450 1422 3214 +15336 4 2 28 1 2201 1942 2233 3413 +15337 4 2 28 1 1208 1167 1000 3566 +15338 4 2 28 1 2867 2662 3284 3890 +15339 4 2 28 1 1942 3413 2870 3827 +15340 4 2 28 1 1258 3303 794 3663 +15341 4 2 28 1 2791 3326 3241 3770 +15342 4 2 28 1 1917 1897 2235 3212 +15343 4 2 28 1 514 3463 3017 3843 +15344 4 2 28 1 2168 2211 2070 3133 +15345 4 2 28 1 3003 3401 2959 3631 +15346 4 2 28 1 2812 3331 2634 3800 +15347 4 2 28 1 1767 1534 1605 3456 +15348 4 2 28 1 2552 3507 3430 3926 +15349 4 2 28 1 616 2901 2900 3726 +15350 4 2 28 1 986 3328 816 3922 +15351 4 2 28 1 1214 3777 3321 3881 +15352 4 2 28 1 133 1307 797 1650 +15353 4 2 28 1 1869 3347 1868 3680 +15354 4 2 28 1 889 914 913 3530 +15355 4 2 28 1 2654 2859 3144 3696 +15356 4 2 28 1 972 3294 3632 3664 +15357 4 2 28 1 2582 3414 2691 3769 +15358 4 2 28 1 2572 2549 2633 3585 +15359 4 2 28 1 2701 3338 3261 3578 +15360 4 2 28 1 1088 3114 3087 3775 +15361 4 2 28 1 2825 2946 2695 3664 +15362 4 2 28 1 2861 3545 2758 3780 +15363 4 2 28 1 315 317 320 3082 +15364 4 2 28 1 2601 3151 3682 3825 +15365 4 2 28 1 2586 3360 2727 3443 +15366 4 2 28 1 905 3629 1214 3777 +15367 4 2 28 1 2506 2504 2507 3602 +15368 4 2 28 1 2193 2010 2282 3283 +15369 4 2 28 1 988 991 944 3144 +15370 4 2 28 1 1021 1020 1019 3787 +15371 4 2 28 1 312 2948 313 3568 +15372 4 2 28 1 1182 3492 201 3599 +15373 4 2 28 1 558 719 586 3699 +15374 4 2 28 1 1174 3294 1165 3870 +15375 4 2 28 1 2100 3010 671 3261 +15376 4 2 28 1 3223 3512 2742 3756 +15377 4 2 28 1 2572 2862 2773 3585 +15378 4 2 28 1 825 823 824 3124 +15379 4 2 28 1 1206 1131 913 3530 +15380 4 2 28 1 2679 3422 3175 3914 +15381 4 2 28 1 2851 3173 3115 3787 +15382 4 2 28 1 2401 2371 2411 3449 +15383 4 2 28 1 1259 1258 1032 3600 +15384 4 2 28 1 796 210 209 3548 +15385 4 2 28 1 2304 2303 3725 3873 +15386 4 2 28 1 1000 1219 1237 3566 +15387 4 2 28 1 2701 2901 2702 3191 +15388 4 2 28 1 3013 3256 989 3853 +15389 4 2 28 1 929 928 2993 3874 +15390 4 2 28 1 1696 1350 1756 3143 +15391 4 2 28 1 2620 3015 3439 3864 +15392 4 2 28 1 2568 2658 3525 3531 +15393 4 2 28 1 2672 2847 2602 3646 +15394 4 2 28 1 1583 1747 3200 3370 +15395 4 2 28 1 2356 2354 2389 3861 +15396 4 2 28 1 2571 2733 2672 3293 +15397 4 2 28 1 807 1295 158 2135 +15398 4 2 28 1 710 595 606 3550 +15399 4 2 28 1 2825 3276 2852 3902 +15400 4 2 28 1 218 543 685 3146 +15401 4 2 28 1 3106 2809 3354 3935 +15402 4 2 28 1 2559 3379 3231 3603 +15403 4 2 28 1 389 3398 3442 3730 +15404 4 2 28 1 230 229 667 3511 +15405 4 2 28 1 1267 3808 956 3864 +15406 4 2 28 1 2638 2812 2744 3107 +15407 4 2 28 1 1467 1707 3171 3838 +15408 4 2 28 1 3017 3558 2618 3923 +15409 4 2 28 1 1652 1351 3175 3423 +15410 4 2 28 1 2936 3455 3036 3845 +15411 4 2 28 1 1514 2924 2664 3686 +15412 4 2 28 1 2171 3485 2041 3557 +15413 4 2 28 1 968 1082 1033 3524 +15414 4 2 28 1 301 303 304 3588 +15415 4 2 28 1 225 2933 226 3738 +15416 4 2 28 1 342 2986 331 3844 +15417 4 2 28 1 918 2976 919 3790 +15418 4 2 28 1 2354 2369 2389 3265 +15419 4 2 28 1 2259 1898 2207 3712 +15420 4 2 28 1 2049 2047 2131 3288 +15421 4 2 28 1 1007 942 1008 3643 +15422 4 2 28 1 2613 3072 2799 3386 +15423 4 2 28 1 2554 3455 3122 3536 +15424 4 2 28 1 2342 2531 66 2496 +15425 4 2 28 1 2972 3318 848 3887 +15426 4 2 28 1 2501 2453 73 2420 +15427 4 2 28 1 566 2913 564 3622 +15428 4 2 28 1 550 549 551 3474 +15429 4 2 28 1 499 398 3109 3398 +15430 4 2 28 1 383 375 349 3605 +15431 4 2 28 1 2775 3205 3061 3736 +15432 4 2 28 1 1283 3305 3226 3729 +15433 4 2 28 1 889 3513 914 3530 +15434 4 2 28 1 3030 3373 2031 3594 +15435 4 2 28 1 2264 3010 2102 3338 +15436 4 2 28 1 2622 2584 2759 3054 +15437 4 2 28 1 3614 3634 3009 3839 +15438 4 2 28 1 2824 3549 3317 3607 +15439 4 2 28 1 2346 2326 25 2332 +15440 4 2 28 1 179 522 1645 1325 +15441 4 2 28 1 701 719 560 3699 +15442 4 2 28 1 345 3620 3605 3913 +15443 4 2 28 1 2543 2871 3257 3579 +15444 4 2 28 1 2224 1854 2272 3607 +15445 4 2 28 1 1366 3495 1761 3549 +15446 4 2 28 1 1139 3349 2848 3674 +15447 4 2 28 1 2865 3503 1373 3735 +15448 4 2 28 1 1047 1056 1058 3659 +15449 4 2 28 1 2001 2206 1982 3856 +15450 4 2 28 1 2435 2434 2436 3884 +15451 4 2 28 1 683 684 730 3356 +15452 4 2 28 1 2045 2099 1888 3337 +15453 4 2 28 1 775 3118 539 3747 +15454 4 2 28 1 1125 3320 1036 3777 +15455 4 2 28 1 1421 1429 1548 3437 +15456 4 2 28 1 2699 2605 2923 3613 +15457 4 2 28 1 1186 990 972 3632 +15458 4 2 28 1 1131 3530 3506 3816 +15459 4 2 28 1 1984 1935 2288 3142 +15460 4 2 28 1 3044 3475 709 3589 +15461 4 2 28 1 855 1171 3374 3854 +15462 4 2 28 1 1007 1207 943 3643 +15463 4 2 28 1 629 723 729 3634 +15464 4 2 28 1 2760 3057 2787 3656 +15465 4 2 28 1 2048 2200 2059 3091 +15466 4 2 28 1 2126 10 198 1987 +15467 4 2 28 1 2167 1950 1948 3755 +15468 4 2 28 1 311 3085 306 3568 +15469 4 2 28 1 600 588 601 3498 +15470 4 2 28 1 2710 3731 3382 3882 +15471 4 2 28 1 3272 3557 3429 3767 +15472 4 2 28 1 1332 3317 1773 3549 +15473 4 2 28 1 1595 1337 1752 3166 +15474 4 2 28 1 1862 539 2106 3118 +15475 4 2 28 1 2715 3761 3551 3918 +15476 4 2 28 1 2595 3264 2558 3801 +15477 4 2 28 1 2715 3551 3266 3918 +15478 4 2 28 1 604 3389 2899 3781 +15479 4 2 28 1 2766 2642 3046 3849 +15480 4 2 28 1 2656 2582 2709 3665 +15481 4 2 28 1 1960 2269 2152 3223 +15482 4 2 28 1 907 911 910 3629 +15483 4 2 28 1 905 910 1214 3629 +15484 4 2 28 1 2633 2952 2689 3102 +15485 4 2 28 1 3192 3300 2616 3358 +15486 4 2 28 1 2087 193 283 1813 +15487 4 2 28 1 1101 3555 3083 3934 +15488 4 2 28 1 1889 1890 1882 3322 +15489 4 2 28 1 424 445 501 3120 +15490 4 2 28 1 3297 3602 2707 3703 +15491 4 2 28 1 1906 2132 2272 3113 +15492 4 2 28 1 1211 3209 3046 3611 +15493 4 2 28 1 1170 1172 1186 3632 +15494 4 2 28 1 1334 280 398 3109 +15495 4 2 28 1 2825 2852 3416 3902 +15496 4 2 28 1 2705 3183 3058 3883 +15497 4 2 28 1 781 1163 1303 3170 +15498 4 2 28 1 812 1238 1075 3512 +15499 4 2 28 1 647 640 759 3467 +15500 4 2 28 1 2129 3401 2959 3819 +15501 4 2 28 1 553 3474 2873 3526 +15502 4 2 28 1 3331 3643 2813 3800 +15503 4 2 28 1 371 468 374 3126 +15504 4 2 28 1 3248 2745 3663 3853 +15505 4 2 28 1 893 3447 882 3826 +15506 4 2 28 1 3173 3453 1145 3656 +15507 4 2 28 1 649 773 755 3726 +15508 4 2 28 1 1535 1505 1633 2697 +15509 4 2 28 1 1489 3823 3263 3824 +15510 4 2 28 1 2594 3461 3338 3462 +15511 4 2 28 1 2701 2702 2594 3191 +15512 4 2 28 1 2661 2786 2779 3639 +15513 4 2 28 1 2665 3163 2968 3767 +15514 4 2 28 1 2694 2619 3219 3915 +15515 4 2 28 1 2302 3049 2303 3873 +15516 4 2 28 1 1613 282 175 1324 +15517 4 2 28 1 1180 2989 877 3816 +15518 4 2 28 1 2862 2922 2686 3605 +15519 4 2 28 1 2125 3440 3275 3847 +15520 4 2 28 1 2907 3008 549 3474 +15521 4 2 28 1 2606 3560 3293 3896 +15522 4 2 28 1 2064 2198 3642 3793 +15523 4 2 28 1 2894 3024 2795 3509 +15524 4 2 28 1 492 3126 2880 3920 +15525 4 2 28 1 2612 3773 2642 3849 +15526 4 2 28 1 1028 1261 2988 3696 +15527 4 2 28 1 3618 3820 2883 3846 +15528 4 2 28 1 2703 2014 3139 3733 +15529 4 2 28 1 2178 3029 2018 3462 +15530 4 2 28 1 3308 3455 2554 3536 +15531 4 2 28 1 2612 3054 2650 3497 +15532 4 2 28 1 1878 1888 2253 3337 +15533 4 2 28 1 290 513 2085 3086 +15534 4 2 28 1 2567 2677 3308 3769 +15535 4 2 28 1 2542 3052 3382 3409 +15536 4 2 28 1 2624 2894 2580 3486 +15537 4 2 28 1 1977 2177 1988 3518 +15538 4 2 28 1 2802 3901 3078 3910 +15539 4 2 28 1 1323 1625 1751 3090 +15540 4 2 28 1 2046 3091 2059 3559 +15541 4 2 28 1 1006 3479 1246 3831 +15542 4 2 28 1 510 3101 2931 3655 +15543 4 2 28 1 1386 1388 1391 3215 +15544 4 2 28 1 2575 3483 2994 3484 +15545 4 2 28 1 441 494 343 3647 +15546 4 2 28 1 2843 3348 3215 3570 +15547 4 2 28 1 1255 1137 989 3663 +15548 4 2 28 1 677 2105 3096 3747 +15549 4 2 28 1 1913 1914 2267 3742 +15550 4 2 28 1 1379 1806 1541 3456 +15551 4 2 28 1 1595 1752 1474 3706 +15552 4 2 28 1 1535 2697 1633 3077 +15553 4 2 28 1 2194 2987 2260 3217 +15554 4 2 28 1 1219 3431 1237 3566 +15555 4 2 28 1 2571 2550 3054 3896 +15556 4 2 28 1 3129 3504 469 3794 +15557 4 2 28 1 2992 3487 881 3563 +15558 4 2 28 1 1370 1371 1372 3478 +15559 4 2 28 1 2345 2377 2380 3175 +15560 4 2 28 1 2619 3227 2919 3659 +15561 4 2 28 1 550 552 713 3474 +15562 4 2 28 1 2672 3599 3309 3655 +15563 4 2 28 1 211 212 279 3612 +15564 4 2 28 1 3225 3441 2755 3625 +15565 4 2 28 1 1106 3309 802 3599 +15566 4 2 28 1 3012 3181 2803 3890 +15567 4 2 28 1 2555 2891 3429 3437 +15568 4 2 28 1 2629 3609 3068 3835 +15569 4 2 28 1 1255 1011 1258 3663 +15570 4 2 28 1 961 3469 3203 3660 +15571 4 2 28 1 732 1600 765 3490 +15572 4 2 28 1 1793 3772 1655 3793 +15573 4 2 28 1 640 2923 3201 3467 +15574 4 2 28 1 2483 2458 2398 3644 +15575 4 2 28 1 1261 3342 2988 3696 +15576 4 2 28 1 581 579 582 3732 +15577 4 2 28 1 981 961 3203 3660 +15578 4 2 28 1 2865 3515 3211 3814 +15579 4 2 28 1 2471 2477 2422 3262 +15580 4 2 28 1 2978 3124 2637 3410 +15581 4 2 28 1 2542 3123 3058 3731 +15582 4 2 28 1 2448 2446 2492 3877 +15583 4 2 28 1 897 3453 3173 3674 +15584 4 2 28 1 1345 1612 249 687 +15585 4 2 28 1 1247 1028 2988 3795 +15586 4 2 28 1 2071 2646 2081 3802 +15587 4 2 28 1 2595 2558 3264 3904 +15588 4 2 28 1 3015 3277 1113 3843 +15589 4 2 28 1 1956 2224 2075 3607 +15590 4 2 28 1 1068 1290 792 3198 +15591 4 2 28 1 2505 2525 2532 3581 +15592 4 2 28 1 3363 3892 2545 3906 +15593 4 2 28 1 810 813 232 3567 +15594 4 2 28 1 1047 1046 3659 3811 +15595 4 2 28 1 3072 3341 2725 3878 +15596 4 2 28 1 2087 192 2107 414 +15597 4 2 28 1 2314 2313 2307 3220 +15598 4 2 28 1 940 2973 1006 3831 +15599 4 2 28 1 1265 1218 3439 3864 +15600 4 2 28 1 998 3374 3854 3870 +15601 4 2 28 1 1329 8 233 1664 +15602 4 2 28 1 1328 1720 3083 3555 +15603 4 2 28 1 2199 2069 2277 3720 +15604 4 2 28 1 2584 3054 2550 3896 +15605 4 2 28 1 562 564 2913 3565 +15606 4 2 28 1 1198 3517 3038 3580 +15607 4 2 28 1 3234 3762 2989 3816 +15608 4 2 28 1 1507 1508 1509 3603 +15609 4 2 28 1 2480 84 2078 1826 +15610 4 2 28 1 1400 1422 1445 3833 +15611 4 2 28 1 1089 3533 999 3921 +15612 4 2 28 1 2350 2351 2352 3496 +15613 4 2 28 1 1556 1739 1784 3630 +15614 4 2 28 1 2730 2833 3005 3854 +15615 4 2 28 1 788 3150 1083 3775 +15616 4 2 28 1 1590 1589 1774 2736 +15617 4 2 28 1 848 852 3318 3776 +15618 4 2 28 1 1979 2029 3312 3931 +15619 4 2 28 1 2120 1990 2220 2885 +15620 4 2 28 1 2636 2821 2970 3705 +15621 4 2 28 1 1608 1600 542 3815 +15622 4 2 28 1 952 3807 2881 3864 +15623 4 2 28 1 2576 3544 3515 3624 +15624 4 2 28 1 998 3661 3374 3870 +15625 4 2 28 1 217 216 733 3756 +15626 4 2 28 1 529 2116 258 1810 +15627 4 2 28 1 2586 2727 2782 3543 +15628 4 2 28 1 579 572 707 3732 +15629 4 2 28 1 1207 3158 3107 3643 +15630 4 2 28 1 1905 2243 2966 3908 +15631 4 2 28 1 429 515 2885 3217 +15632 4 2 28 1 835 3533 1089 3921 +15633 4 2 28 1 897 1090 1144 3674 +15634 4 2 28 1 2534 2342 67 2496 +15635 4 2 28 1 1091 3349 1139 3674 +15636 4 2 28 1 877 2989 1181 3762 +15637 4 2 28 1 2513 2534 2496 3519 +15638 4 2 28 1 3311 3402 2361 3715 +15639 4 2 28 1 3010 3252 2657 3356 +15640 4 2 28 1 228 3249 2882 3303 +15641 4 2 28 1 2235 3212 1898 3485 +15642 4 2 28 1 2713 3355 3476 3725 +15643 4 2 28 1 2676 2823 3157 3269 +15644 4 2 28 1 1193 3650 3447 3753 +15645 4 2 28 1 482 408 498 3408 +15646 4 2 28 1 2531 66 2379 2342 +15647 4 2 28 1 3344 3605 332 3620 +15648 4 2 28 1 826 3124 2969 3927 +15649 4 2 28 1 1293 789 130 1657 +15650 4 2 28 1 1205 3274 205 3704 +15651 4 2 28 1 2077 3339 2716 3669 +15652 4 2 28 1 2691 2709 2582 3769 +15653 4 2 28 1 3192 3202 2566 3300 +15654 4 2 28 1 1240 1077 793 3671 +15655 4 2 28 1 1005 3291 3057 3656 +15656 4 2 28 1 1011 1254 1009 3248 +15657 4 2 28 1 2803 2826 2662 3284 +15658 4 2 28 1 2438 2436 2437 3884 +15659 4 2 28 1 1681 3477 1598 3751 +15660 4 2 28 1 3054 3098 2550 3199 +15661 4 2 28 1 1236 1034 1133 3147 +15662 4 2 28 1 736 726 606 3550 +15663 4 2 28 1 2444 3574 2442 3721 +15664 4 2 28 1 206 207 270 3670 +15665 4 2 28 1 2638 2812 3107 3331 +15666 4 2 28 1 1739 1556 1432 3162 +15667 4 2 28 1 2639 2888 2933 3441 +15668 4 2 28 1 929 2993 930 3791 +15669 4 2 28 1 324 319 323 3099 +15670 4 2 28 1 922 3316 3187 3790 +15671 4 2 28 1 303 305 304 3639 +15672 4 2 28 1 1641 1706 1341 3672 +15673 4 2 28 1 2584 3257 3098 3472 +15674 4 2 28 1 260 671 672 3261 +15675 4 2 28 1 1664 1714 1778 2925 +15676 4 2 28 1 2033 1907 1944 3324 +15677 4 2 28 1 3230 2834 3716 3860 +15678 4 2 28 1 796 1199 1200 3556 +15679 4 2 28 1 2587 2681 3142 3802 +15680 4 2 28 1 1079 1232 1032 3600 +15681 4 2 28 1 2728 3445 3751 3846 +15682 4 2 28 1 2881 3660 952 3864 +15683 4 2 28 1 2157 2080 2091 3332 +15684 4 2 28 1 2145 151 1816 1300 +15685 4 2 28 1 2715 3151 3761 3918 +15686 4 2 28 1 422 421 279 3504 +15687 4 2 28 1 1034 3014 3147 3469 +15688 4 2 28 1 1400 3254 1398 3833 +15689 4 2 28 1 1057 1084 1099 3227 +15690 4 2 28 1 1264 1116 1265 3439 +15691 4 2 28 1 1251 3248 3048 3905 +15692 4 2 28 1 1469 1487 1488 3268 +15693 4 2 28 1 2596 3330 3055 3537 +15694 4 2 28 1 671 3010 737 3261 +15695 4 2 28 1 1469 1702 1468 3470 +15696 4 2 28 1 2186 2263 3440 3847 +15697 4 2 28 1 978 3182 1050 3628 +15698 4 2 28 1 300 3500 3141 3867 +15699 4 2 28 1 2718 3110 3892 3906 +15700 4 2 28 1 695 3221 2927 3619 +15701 4 2 28 1 1035 995 1027 3229 +15702 4 2 28 1 582 707 714 3732 +15703 4 2 28 1 491 329 3080 3620 +15704 4 2 28 1 2591 2820 2684 3583 +15705 4 2 28 1 1411 3279 1403 3932 +15706 4 2 28 1 1280 1021 1281 3309 +15707 4 2 28 1 2703 2830 2610 3733 +15708 4 2 28 1 3352 3717 2967 3841 +15709 4 2 28 1 2544 3199 2995 3852 +15710 4 2 28 1 874 892 1157 3650 +15711 4 2 28 1 2954 3456 2696 3584 +15712 4 2 28 1 563 2897 571 3565 +15713 4 2 28 1 2331 2316 2315 3889 +15714 4 2 28 1 2836 3434 3258 3863 +15715 4 2 28 1 216 3273 733 3756 +15716 4 2 28 1 2762 3188 3564 3855 +15717 4 2 28 1 216 217 812 3223 +15718 4 2 28 1 3014 3147 2709 3675 +15719 4 2 28 1 902 3661 998 3870 +15720 4 2 28 1 2233 2207 3413 3827 +15721 4 2 28 1 528 669 776 2999 +15722 4 2 28 1 3013 3432 2807 3511 +15723 4 2 28 1 447 351 448 3693 +15724 4 2 28 1 768 679 678 3441 +15725 4 2 28 1 2156 3140 1880 3528 +15726 4 2 28 1 650 651 663 3333 +15727 4 2 28 1 2638 3107 2813 3331 +15728 4 2 28 1 371 2952 456 3126 +15729 4 2 28 1 1298 3176 1127 3505 +15730 4 2 28 1 306 305 307 3639 +15731 4 2 28 1 997 1037 1219 3145 +15732 4 2 28 1 3190 3199 3054 3758 +15733 4 2 28 1 1837 2123 1348 3621 +15734 4 2 28 1 1315 1151 1283 3226 +15735 4 2 28 1 1440 1502 1486 3264 +15736 4 2 28 1 1243 1076 799 3696 +15737 4 2 28 1 1158 1287 3339 3669 +15738 4 2 28 1 572 571 584 3743 +15739 4 2 28 1 1103 892 1193 3650 +15740 4 2 28 1 1536 2292 17 3737 +15741 4 2 28 1 3024 3509 3076 3719 +15742 4 2 28 1 532 1638 1322 3752 +15743 4 2 28 1 3119 3453 896 3611 +15744 4 2 28 1 974 972 3380 3664 +15745 4 2 28 1 2663 2996 3604 3855 +15746 4 2 28 1 836 834 837 3641 +15747 4 2 28 1 1169 855 834 3641 +15748 4 2 28 1 1740 1573 1346 3125 +15749 4 2 28 1 1012 3284 1016 3890 +15750 4 2 28 1 3098 2762 3444 3722 +15751 4 2 28 1 2575 3204 3132 3483 +15752 4 2 28 1 1348 1795 3591 3621 +15753 4 2 28 1 3257 3428 2543 3636 +15754 4 2 28 1 1859 3357 1858 3739 +15755 4 2 28 1 2702 2901 3365 3885 +15756 4 2 28 1 1644 1631 722 3333 +15757 4 2 28 1 417 2998 496 3647 +15758 4 2 28 1 1793 1333 3772 3793 +15759 4 2 28 1 354 2783 2985 3765 +15760 4 2 28 1 2620 3439 2881 3864 +15761 4 2 28 1 2669 2913 2774 3073 +15762 4 2 28 1 575 577 574 3689 +15763 4 2 28 1 577 597 699 3689 +15764 4 2 28 1 2850 3429 3272 3557 +15765 4 2 28 1 3156 3786 3420 3903 +15766 4 2 28 1 354 2985 2783 3678 +15767 4 2 28 1 571 697 594 3743 +15768 4 2 28 1 450 3568 3102 3805 +15769 4 2 28 1 937 3019 931 3791 +15770 4 2 28 1 1645 1325 522 3463 +15771 4 2 28 1 3078 3654 2804 3755 +15772 4 2 28 1 197 1814 2126 521 +15773 4 2 28 1 2610 2800 3250 3763 +15774 4 2 28 1 585 574 699 3689 +15775 4 2 28 1 574 573 570 3287 +15776 4 2 28 1 424 3558 460 3923 +15777 4 2 28 1 365 364 452 3290 +15778 4 2 28 1 1585 1338 1827 3549 +15779 4 2 28 1 391 2932 3670 3920 +15780 4 2 28 1 1433 1671 1632 3135 +15781 4 2 28 1 2619 3334 3219 3915 +15782 4 2 28 1 558 586 2905 3699 +15783 4 2 28 1 301 3141 299 3588 +15784 4 2 28 1 3183 3547 2546 3883 +15785 4 2 28 1 911 910 3629 3850 +15786 4 2 28 1 3223 3512 3494 3759 +15787 4 2 28 1 2616 3358 2737 3606 +15788 4 2 28 1 1065 1067 807 3341 +15789 4 2 28 1 1167 3566 2975 3821 +15790 4 2 28 1 2622 2826 2932 3460 +15791 4 2 28 1 2675 3249 2933 3303 +15792 4 2 28 1 1454 1694 1506 3900 +15793 4 2 28 1 1329 765 1600 3490 +15794 4 2 28 1 458 304 306 3639 +15795 4 2 28 1 3342 3696 799 3871 +15796 4 2 28 1 2941 3597 3304 3684 +15797 4 2 28 1 3150 3335 2789 3775 +15798 4 2 28 1 1667 1728 1668 3150 +15799 4 2 28 1 595 584 594 3743 +15800 4 2 28 1 1463 1494 1771 3666 +15801 4 2 28 1 1470 1711 2926 3824 +15802 4 2 28 1 2993 3240 930 3791 +15803 4 2 28 1 2589 2846 3645 3851 +15804 4 2 28 1 2718 3892 3363 3906 +15805 4 2 28 1 2968 3330 2734 3658 +15806 4 2 28 1 2681 2640 2783 2981 +15807 4 2 28 1 2572 2618 3378 3552 +15808 4 2 28 1 1813 2088 2089 3332 +15809 4 2 28 1 1381 1382 1380 3445 +15810 4 2 28 1 1090 1145 1063 3173 +15811 4 2 28 1 2795 3509 3689 3872 +15812 4 2 28 1 946 1012 959 3563 +15813 4 2 28 1 2228 2281 2077 3669 +15814 4 2 28 1 2131 1883 1900 3489 +15815 4 2 28 1 2074 1827 2237 3549 +15816 4 2 28 1 2015 2151 141 1074 +15817 4 2 28 1 715 639 749 3502 +15818 4 2 28 1 3168 3368 2860 3924 +15819 4 2 28 1 1054 3729 1110 3863 +15820 4 2 28 1 1589 3109 1779 3398 +15821 4 2 28 1 1813 194 418 2091 +15822 4 2 28 1 1006 2973 1162 3800 +15823 4 2 28 1 913 3530 1131 3816 +15824 4 2 28 1 2734 3630 2968 3658 +15825 4 2 28 1 3149 3406 2806 3829 +15826 4 2 28 1 1772 162 1354 523 +15827 4 2 28 1 1542 1637 1543 3253 +15828 4 2 28 1 954 1218 952 3660 +15829 4 2 28 1 409 493 478 3366 +15830 4 2 28 1 2883 3310 3618 3846 +15831 4 2 28 1 3049 3725 2303 3873 +15832 4 2 28 1 1218 1069 3439 3660 +15833 4 2 28 1 889 3530 913 3816 +15834 4 2 28 1 1324 282 176 1616 +15835 4 2 28 1 2648 3357 3133 3640 +15836 4 2 28 1 1161 1107 844 3520 +15837 4 2 28 1 1991 2987 2194 3217 +15838 4 2 28 1 49 1844 1838 1355 +15839 4 2 28 1 697 2897 563 3701 +15840 4 2 28 1 1427 1788 1736 3546 +15841 4 2 28 1 3057 3173 1145 3656 +15842 4 2 28 1 2032 3029 3457 3458 +15843 4 2 28 1 2711 3579 2871 3813 +15844 4 2 28 1 157 1295 791 2134 +15845 4 2 28 1 1313 1289 1142 3283 +15846 4 2 28 1 2452 2472 2444 3721 +15847 4 2 28 1 2557 3783 2642 3849 +15848 4 2 28 1 332 328 329 3620 +15849 4 2 28 1 688 3567 3100 3768 +15850 4 2 28 1 309 311 306 3568 +15851 4 2 28 1 3233 3570 3020 3761 +15852 4 2 28 1 162 291 1354 523 +15853 4 2 28 1 1006 1246 1039 3831 +15854 4 2 28 1 2516 2509 2515 3703 +15855 4 2 28 1 889 3234 3513 3530 +15856 4 2 28 1 259 2100 2116 671 +15857 4 2 28 1 312 313 311 3568 +15858 4 2 28 1 1116 3439 3015 3864 +15859 4 2 28 1 2599 3396 3420 3818 +15860 4 2 28 1 2853 3527 3404 3649 +15861 4 2 28 1 770 3076 652 3752 +15862 4 2 28 1 2555 3142 2904 3803 +15863 4 2 28 1 2656 2828 2667 3665 +15864 4 2 28 1 2989 3138 2815 3506 +15865 4 2 28 1 881 3487 2992 3695 +15866 4 2 28 1 378 357 3270 3678 +15867 4 2 28 1 117 792 1326 1669 +15868 4 2 28 1 688 3100 540 3768 +15869 4 2 28 1 1556 1603 1554 3630 +15870 4 2 28 1 2303 2302 2300 3049 +15871 4 2 28 1 2555 2891 3407 3429 +15872 4 2 28 1 2733 2739 2606 3131 +15873 4 2 28 1 950 3014 953 3807 +15874 4 2 28 1 1167 918 921 3790 +15875 4 2 28 1 1123 1060 984 3167 +15876 4 2 28 1 1626 479 1323 3090 +15877 4 2 28 1 2598 3219 3915 3916 +15878 4 2 28 1 593 555 553 3614 +15879 4 2 28 1 831 832 3343 3894 +15880 4 2 28 1 1654 1685 1648 3362 +15881 4 2 28 1 2616 2778 2640 3606 +15882 4 2 28 1 305 3074 307 3639 +15883 4 2 28 1 2005 2002 2003 3448 +15884 4 2 28 1 2600 3390 2630 3493 +15885 4 2 28 1 1958 1961 3652 3759 +15886 4 2 28 1 1451 3160 3812 3857 +15887 4 2 28 1 763 3323 543 3756 +15888 4 2 28 1 918 919 920 3790 +15889 4 2 28 1 2901 3191 615 3885 +15890 4 2 28 1 2332 2326 2311 3260 +15891 4 2 28 1 2921 3648 872 3762 +15892 4 2 28 1 972 3632 3380 3664 +15893 4 2 28 1 458 306 3085 3639 +15894 4 2 28 1 1134 948 887 3675 +15895 4 2 28 1 3046 3296 1042 3473 +15896 4 2 28 1 1328 1650 1720 3555 +15897 4 2 28 1 1132 3014 950 3675 +15898 4 2 28 1 1621 1609 537 3077 +15899 4 2 28 1 2790 3547 3838 3883 +15900 4 2 28 1 2735 3009 2623 3392 +15901 4 2 28 1 2468 97 2338 2385 +15902 4 2 28 1 2328 2295 2312 3228 +15903 4 2 28 1 3092 3321 1004 3524 +15904 4 2 28 1 874 3447 3648 3826 +15905 4 2 28 1 1057 1056 1048 3659 +15906 4 2 28 1 2551 3242 3137 3668 +15907 4 2 28 1 1849 1848 1847 3269 +15908 4 2 28 1 2583 2681 3142 3606 +15909 4 2 28 1 1997 3029 3405 3457 +15910 4 2 28 1 899 957 898 3656 +15911 4 2 28 1 948 1132 950 3675 +15912 4 2 28 1 1224 957 958 3628 +15913 4 2 28 1 3302 3807 949 3808 +15914 4 2 28 1 2113 3168 2071 3802 +15915 4 2 28 1 818 817 3432 3840 +15916 4 2 28 1 2175 3142 1986 3407 +15917 4 2 28 1 930 933 1216 3791 +15918 4 2 28 1 898 960 1145 3656 +15919 4 2 28 1 477 513 290 3086 +15920 4 2 28 1 3018 3325 2722 3393 +15921 4 2 28 1 1216 937 931 3791 +15922 4 2 28 1 2171 1936 1938 3557 +15923 4 2 28 1 303 3074 305 3639 +15924 4 2 28 1 595 2947 3550 3743 +15925 4 2 28 1 2700 3609 3285 3835 +15926 4 2 28 1 1274 1205 1272 3704 +15927 4 2 28 1 2969 2637 3124 3410 +15928 4 2 28 1 2908 3009 2735 3768 +15929 4 2 28 1 2146 150 786 1300 +15930 4 2 28 1 217 3223 216 3756 +15931 4 2 28 1 2990 3268 3174 3384 +15932 4 2 28 1 559 560 558 3699 +15933 4 2 28 1 956 1266 1267 3864 +15934 4 2 28 1 2415 2492 2478 3714 +15935 4 2 28 1 3328 2832 3922 3934 +15936 4 2 28 1 1837 1348 3591 3621 +15937 4 2 28 1 2456 2426 2488 3598 +15938 4 2 28 1 867 849 851 3595 +15939 4 2 28 1 1940 1970 1969 3377 +15940 4 2 28 1 1727 3231 1512 3603 +15941 4 2 28 1 1875 2170 2209 3541 +15942 4 2 28 1 2832 3159 2593 3823 +15943 4 2 28 1 348 391 402 3920 +15944 4 2 28 1 2032 2278 3029 3458 +15945 4 2 28 1 1046 2919 3659 3811 +15946 4 2 28 1 980 1055 1109 3817 +15947 4 2 28 1 905 1214 903 3777 +15948 4 2 28 1 2961 3401 1920 3819 +15949 4 2 28 1 1111 1110 1054 3729 +15950 4 2 28 1 1016 3284 1018 3890 +15951 4 2 28 1 1703 1480 1739 3162 +15952 4 2 28 1 1003 1122 975 3800 +15953 4 2 28 1 1170 3632 1186 3854 +15954 4 2 28 1 595 3550 2947 3741 +15955 4 2 28 1 2642 2557 3774 3783 +15956 4 2 28 1 874 873 875 3648 +15957 4 2 28 1 116 792 1669 1495 +15958 4 2 28 1 3295 2816 3710 3866 +15959 4 2 28 1 1851 2007 2058 3525 +15960 4 2 28 1 337 322 338 3056 +15961 4 2 28 1 1791 3300 3192 3358 +15962 4 2 28 1 1360 1361 1362 3495 +15963 4 2 28 1 1002 940 1006 3831 +15964 4 2 28 1 450 312 309 3568 +15965 4 2 28 1 364 3290 363 3617 +15966 4 2 28 1 1036 901 903 3777 +15967 4 2 28 1 1815 2148 143 790 +15968 4 2 28 1 3013 3663 2745 3853 +15969 4 2 28 1 1408 1794 1373 3503 +15970 4 2 28 1 736 638 758 3625 +15971 4 2 28 1 693 2920 2905 3475 +15972 4 2 28 1 2725 3341 3072 3494 +15973 4 2 28 1 1133 1134 3487 3675 +15974 4 2 28 1 1122 3479 1006 3800 +15975 4 2 28 1 900 1147 1173 3661 +15976 4 2 28 1 3098 3199 2995 3579 +15977 4 2 28 1 2806 3071 3406 3865 +15978 4 2 28 1 1662 1163 127 781 +15979 4 2 28 1 2653 2733 2986 3088 +15980 4 2 28 1 1045 1225 1085 3245 +15981 4 2 28 1 938 975 1162 3800 +15982 4 2 28 1 1020 3057 1019 3787 +15983 4 2 28 1 1484 1789 1639 3571 +15984 4 2 28 1 2885 3728 2985 3917 +15985 4 2 28 1 1173 998 902 3661 +15986 4 2 28 1 2430 2433 2464 3367 +15987 4 2 28 1 2795 3589 3509 3872 +15988 4 2 28 1 3297 3423 2679 3797 +15989 4 2 28 1 732 542 235 1600 +15990 4 2 28 1 577 2984 597 3689 +15991 4 2 28 1 2776 3168 2860 3924 +15992 4 2 28 1 1602 1504 1700 3491 +15993 4 2 28 1 421 469 420 3504 +15994 4 2 28 1 2842 3140 2648 3848 +15995 4 2 28 1 2762 3604 3188 3855 +15996 4 2 28 1 1212 1217 1037 3533 +15997 4 2 28 1 289 3101 511 3929 +15998 4 2 28 1 713 690 3077 3573 +15999 4 2 28 1 3224 3320 2811 3875 +16000 4 2 28 1 361 2981 489 3679 +16001 4 2 28 1 571 2897 697 3743 +16002 4 2 28 1 3140 3528 2910 3544 +16003 4 2 28 1 1361 2823 1761 3495 +16004 4 2 28 1 473 3131 459 3844 +16005 4 2 28 1 1217 3533 1212 3538 +16006 4 2 28 1 1045 1085 1046 3811 +16007 4 2 28 1 2871 3205 3712 3827 +16008 4 2 28 1 2693 3167 2953 3523 +16009 4 2 28 1 1880 3527 2187 3528 +16010 4 2 28 1 1183 1182 1279 3492 +16011 4 2 28 1 954 3469 961 3660 +16012 4 2 28 1 2826 2723 3128 3670 +16013 4 2 28 1 1137 3013 989 3663 +16014 4 2 28 1 932 934 933 3240 +16015 4 2 28 1 848 846 847 3776 +16016 4 2 28 1 1248 3048 1185 3810 +16017 4 2 28 1 2030 1967 1952 3646 +16018 4 2 28 1 456 2952 450 3102 +16019 4 2 28 1 2476 2133 90 3627 +16020 4 2 28 1 2380 1653 2405 3175 +16021 4 2 28 1 2653 2759 2584 3896 +16022 4 2 28 1 3112 3481 2741 3837 +16023 4 2 28 1 2450 2462 3106 3766 +16024 4 2 28 1 424 3558 3120 3897 +16025 4 2 28 1 2136 1941 2212 3018 +16026 4 2 28 1 2664 2924 2920 3686 +16027 4 2 28 1 1588 1634 1589 2737 +16028 4 2 28 1 410 3599 2934 3655 +16029 4 2 28 1 846 3595 1161 3806 +16030 4 2 28 1 2211 3357 1892 3640 +16031 4 2 28 1 1055 1286 782 3436 +16032 4 2 28 1 973 982 1049 3667 +16033 4 2 28 1 2545 3466 2738 3892 +16034 4 2 28 1 2641 3363 2889 3906 +16035 4 2 28 1 1184 847 901 3776 +16036 4 2 28 1 2618 3558 3120 3923 +16037 4 2 28 1 1873 1874 1871 3282 +16038 4 2 28 1 1679 3491 3065 3842 +16039 4 2 28 1 865 1178 861 3695 +16040 4 2 28 1 1133 3487 3147 3675 +16041 4 2 28 1 2155 2027 2030 3371 +16042 4 2 28 1 2863 3096 700 3097 +16043 4 2 28 1 860 864 861 3695 +16044 4 2 28 1 2613 3072 2997 3572 +16045 4 2 28 1 617 3336 779 3836 +16046 4 2 28 1 1312 1815 790 3139 +16047 4 2 28 1 2756 3516 2913 3622 +16048 4 2 28 1 3025 1578 3591 3593 +16049 4 2 28 1 2053 2200 1835 3653 +16050 4 2 28 1 358 357 356 3678 +16051 4 2 28 1 1757 3691 3135 3898 +16052 4 2 28 1 2639 2888 2755 3391 +16053 4 2 28 1 364 363 362 3617 +16054 4 2 28 1 1111 3167 2953 3729 +16055 4 2 28 1 1613 1625 174 409 +16056 4 2 28 1 491 3080 339 3794 +16057 4 2 28 1 1655 1552 2904 3772 +16058 4 2 28 1 1247 991 1028 3795 +16059 4 2 28 1 410 281 459 3697 +16060 4 2 28 1 225 224 679 3441 +16061 4 2 28 1 1116 1265 3439 3864 +16062 4 2 28 1 3046 3209 1245 3580 +16063 4 2 28 1 635 737 3010 3578 +16064 4 2 28 1 2608 3295 3710 3866 +16065 4 2 28 1 3113 3357 1906 3720 +16066 4 2 28 1 1980 1979 2184 3312 +16067 4 2 28 1 1167 1000 3566 3821 +16068 4 2 28 1 2570 2638 3623 3683 +16069 4 2 28 1 855 3374 1175 3641 +16070 4 2 28 1 440 307 3074 3734 +16071 4 2 28 1 2863 3510 641 3747 +16072 4 2 28 1 1681 1544 1598 3477 +16073 4 2 28 1 516 376 435 3088 +16074 4 2 28 1 510 412 292 3101 +16075 4 2 28 1 322 3056 323 3099 +16076 4 2 28 1 954 952 3469 3660 +16077 4 2 28 1 956 3808 3807 3864 +16078 4 2 28 1 2965 896 3453 3611 +16079 4 2 28 1 1241 3016 1209 3792 +16080 4 2 28 1 751 635 601 3578 +16081 4 2 28 1 2391 2394 2344 3271 +16082 4 2 28 1 2648 3133 3624 3640 +16083 4 2 28 1 1564 3281 1566 3898 +16084 4 2 28 1 2450 2435 2462 3766 +16085 4 2 28 1 2223 3408 2115 3433 +16086 4 2 28 1 922 3372 3316 3790 +16087 4 2 28 1 1260 1029 1240 3671 +16088 4 2 28 1 579 3385 572 3732 +16089 4 2 28 1 581 582 3359 3732 +16090 4 2 28 1 884 877 876 3762 +16091 4 2 28 1 877 1181 871 3762 +16092 4 2 28 1 359 3270 358 3626 +16093 4 2 28 1 1077 3671 3016 3795 +16094 4 2 28 1 1910 2011 1895 3154 +16095 4 2 28 1 901 3184 3196 3661 +16096 4 2 28 1 464 2940 321 3765 +16097 4 2 28 1 2767 2621 3097 3608 +16098 4 2 28 1 597 2984 3619 3719 +16099 4 2 28 1 2144 3341 2214 3494 +16100 4 2 28 1 2769 2832 3328 3934 +16101 4 2 28 1 479 276 173 1323 +16102 4 2 28 1 1000 1219 3566 3821 +16103 4 2 28 1 1252 1299 160 1960 +16104 4 2 28 1 2265 1814 2080 3101 +16105 4 2 28 1 1462 1453 1463 3037 +16106 4 2 28 1 794 1259 227 3303 +16107 4 2 28 1 1331 808 114 1660 +16108 4 2 28 1 1913 1902 1903 3742 +16109 4 2 28 1 2540 2995 3444 3852 +16110 4 2 28 1 1193 1138 1140 3753 +16111 4 2 28 1 1554 1570 1593 3164 +16112 4 2 28 1 1554 1603 3164 3630 +16113 4 2 28 1 643 698 599 3608 +16114 4 2 28 1 676 2900 674 3726 +16115 4 2 28 1 155 1189 1166 2140 +16116 4 2 28 1 712 2912 696 3701 +16117 4 2 28 1 2816 3592 3454 3866 +16118 4 2 28 1 2984 3540 602 3619 +16119 4 2 28 1 1436 1470 1711 2926 +16120 4 2 28 1 491 333 329 3620 +16121 4 2 28 1 2621 2701 2901 3461 +16122 4 2 28 1 2131 2047 1888 3489 +16123 4 2 28 1 1631 663 722 3333 +16124 4 2 28 1 1267 951 956 3808 +16125 4 2 28 1 2467 2434 3575 3884 +16126 4 2 28 1 2503 2519 2504 3778 +16127 4 2 28 1 2818 3144 2799 3240 +16128 4 2 28 1 2703 3349 3139 3674 +16129 4 2 28 1 519 3368 3168 3924 +16130 4 2 28 1 3038 2972 3595 3887 +16131 4 2 28 1 3039 3180 2845 3742 +16132 4 2 28 1 867 3038 3517 3595 +16133 4 2 28 1 950 951 949 3807 +16134 4 2 28 1 786 149 2146 1151 +16135 4 2 28 1 2700 3266 3718 3835 +16136 4 2 28 1 2488 2422 2477 3262 +16137 4 2 28 1 1158 146 1819 3339 +16138 4 2 28 1 2424 2536 2499 3644 +16139 4 2 28 1 2559 2838 3301 3687 +16140 4 2 28 1 713 531 690 3573 +16141 4 2 28 1 2896 2754 3625 3741 +16142 4 2 28 1 514 3463 293 3561 +16143 4 2 28 1 2620 2667 3130 3687 +16144 4 2 28 1 1272 1204 1276 3704 +16145 4 2 28 1 2318 17 2292 3737 +16146 4 2 28 1 2625 2767 2621 3926 +16147 4 2 28 1 2602 2760 3057 3773 +16148 4 2 28 1 3550 3625 2754 3741 +16149 4 2 28 1 3187 3316 922 3880 +16150 4 2 28 1 3442 3617 366 3633 +16151 4 2 28 1 2601 3361 3618 3820 +16152 4 2 28 1 373 347 402 3307 +16153 4 2 28 1 2112 3168 2251 3433 +16154 4 2 28 1 2731 3323 3146 3502 +16155 4 2 28 1 3543 3662 2611 3849 +16156 4 2 28 1 1858 1906 3113 3357 +16157 4 2 28 1 2799 2818 2654 3144 +16158 4 2 28 1 2027 2014 2028 3371 +16159 4 2 28 1 2722 2997 2613 3856 +16160 4 2 28 1 2574 3587 2822 3845 +16161 4 2 28 1 2931 2672 3309 3655 +16162 4 2 28 1 1449 1532 1533 3208 +16163 4 2 28 1 565 706 564 3565 +16164 4 2 28 1 2933 3249 2675 3421 +16165 4 2 28 1 1003 3479 1122 3800 +16166 4 2 28 1 1088 3087 3335 3775 +16167 4 2 28 1 686 3467 756 3694 +16168 4 2 28 1 1435 3171 1430 3379 +16169 4 2 28 1 565 563 571 3565 +16170 4 2 28 1 1824 2136 2137 3393 +16171 4 2 28 1 2813 2973 2634 3800 +16172 4 2 28 1 3304 3597 2780 3798 +16173 4 2 28 1 2169 2222 2154 3354 +16174 4 2 28 1 3025 3290 2646 3368 +16175 4 2 28 1 2777 3337 3454 3710 +16176 4 2 28 1 2040 2174 1981 3594 +16177 4 2 28 1 2151 1815 1312 3139 +16178 4 2 28 1 2895 3385 579 3732 +16179 4 2 28 1 3085 381 3867 3913 +16180 4 2 28 1 2984 3022 587 3540 +16181 4 2 28 1 2653 2584 2759 2880 +16182 4 2 28 1 1568 1391 1388 3215 +16183 4 2 28 1 682 683 1810 3356 +16184 4 2 28 1 2720 3592 3051 3654 +16185 4 2 28 1 1077 1241 1247 3795 +16186 4 2 28 1 751 648 760 3578 +16187 4 2 28 1 729 747 637 3634 +16188 4 2 28 1 677 700 742 3747 +16189 4 2 28 1 3078 3654 2720 3901 +16190 4 2 28 1 2550 3098 2584 3257 +16191 4 2 28 1 2077 2009 2008 3340 +16192 4 2 28 1 1751 1654 1627 3090 +16193 4 2 28 1 1489 3824 3263 3842 +16194 4 2 28 1 844 3520 841 3806 +16195 4 2 28 1 2829 3848 3649 3895 +16196 4 2 28 1 1134 887 3487 3675 +16197 4 2 28 1 1352 2498 59 1802 +16198 4 2 28 1 2610 3371 3021 3774 +16199 4 2 28 1 2611 2748 3822 3928 +16200 4 2 28 1 2635 3665 2582 3769 +16201 4 2 28 1 436 3090 1626 3152 +16202 4 2 28 1 3279 3857 2822 3932 +16203 4 2 28 1 3046 1245 3296 3580 +16204 4 2 28 1 3051 2720 3654 3901 +16205 4 2 28 1 1278 3182 2937 3628 +16206 4 2 28 1 487 3088 2986 3844 +16207 4 2 28 1 1824 155 1166 2140 +16208 4 2 28 1 1233 934 932 3834 +16209 4 2 28 1 524 3844 2998 3929 +16210 4 2 28 1 2238 2255 3401 3631 +16211 4 2 28 1 1207 3107 3331 3643 +16212 4 2 28 1 2740 3017 2618 3923 +16213 4 2 28 1 2228 2004 2147 3669 +16214 4 2 28 1 974 973 972 3664 +16215 4 2 28 1 424 3120 3558 3923 +16216 4 2 28 1 1943 1928 2273 3206 +16217 4 2 28 1 2633 2689 2786 3102 +16218 4 2 28 1 1039 3411 1235 3831 +16219 4 2 28 1 3183 3536 3308 3724 +16220 4 2 28 1 1963 1959 1924 3819 +16221 4 2 28 1 2246 2001 2026 3878 +16222 4 2 28 1 966 3435 945 3834 +16223 4 2 28 1 2737 3358 2587 3606 +16224 4 2 28 1 506 3588 302 3633 +16225 4 2 28 1 756 3467 530 3694 +16226 4 2 28 1 2820 2940 2640 2964 +16227 4 2 28 1 562 563 564 3565 +16228 4 2 28 1 827 3397 858 3810 +16229 4 2 28 1 2650 2602 2847 3773 +16230 4 2 28 1 2926 3159 2593 3334 +16231 4 2 28 1 1841 2533 80 2518 +16232 4 2 28 1 595 594 2947 3743 +16233 4 2 28 1 1818 3223 2188 3273 +16234 4 2 28 1 2014 3371 2012 3733 +16235 4 2 28 1 455 450 310 3102 +16236 4 2 28 1 1556 3163 3162 3630 +16237 4 2 28 1 1960 1252 1299 3494 +16238 4 2 28 1 325 3745 3099 3796 +16239 4 2 28 1 3183 3308 2567 3724 +16240 4 2 28 1 698 3359 599 3608 +16241 4 2 28 1 2154 2169 3354 3847 +16242 4 2 28 1 609 585 610 3589 +16243 4 2 28 1 2185 1907 3324 3908 +16244 4 2 28 1 1322 1638 1754 3076 +16245 4 2 28 1 1556 1738 1432 3163 +16246 4 2 28 1 644 609 625 3589 +16247 4 2 28 1 737 3261 3010 3578 +16248 4 2 28 1 2576 3515 3544 3713 +16249 4 2 28 1 1872 2084 2280 3110 +16250 4 2 28 1 3188 3564 2790 3883 +16251 4 2 28 1 3146 3756 2742 3871 +16252 4 2 28 1 2117 2109 1832 3499 +16253 4 2 28 1 582 714 3001 3732 +16254 4 2 28 1 2939 3426 1852 3525 +16255 4 2 28 1 2693 2890 3194 3729 +16256 4 2 28 1 860 3381 3224 3695 +16257 4 2 28 1 2974 3661 3184 3777 +16258 4 2 28 1 3275 3847 2809 3935 +16259 4 2 28 1 1673 1502 1438 3327 +16260 4 2 28 1 554 693 619 3526 +16261 4 2 28 1 819 821 1195 3256 +16262 4 2 28 1 2817 3343 3005 3894 +16263 4 2 28 1 828 1152 3893 3927 +16264 4 2 28 1 2872 3533 2793 3538 +16265 4 2 28 1 2857 3522 2558 3888 +16266 4 2 28 1 2881 3130 2828 3687 +16267 4 2 28 1 2550 2995 3199 3579 +16268 4 2 28 1 295 3243 466 3730 +16269 4 2 28 1 2059 3091 2200 3653 +16270 4 2 28 1 659 541 740 3064 +16271 4 2 28 1 2704 2854 2590 3750 +16272 4 2 28 1 2581 2639 2675 2801 +16273 4 2 28 1 1320 405 294 3243 +16274 4 2 28 1 590 3359 698 3608 +16275 4 2 28 1 2315 2293 2331 3032 +16276 4 2 28 1 215 809 1309 3277 +16277 4 2 28 1 2048 2059 2046 3091 +16278 4 2 28 1 2601 3820 3446 3899 +16279 4 2 28 1 2602 3773 3497 3774 +16280 4 2 28 1 3072 3341 2997 3572 +16281 4 2 28 1 344 3796 3056 3917 +16282 4 2 28 1 783 206 1205 3274 +16283 4 2 28 1 691 2907 548 3815 +16284 4 2 28 1 846 1161 844 3806 +16285 4 2 28 1 1113 3277 809 3843 +16286 4 2 28 1 952 956 951 3807 +16287 4 2 28 1 2871 3205 2711 3712 +16288 4 2 28 1 3369 3431 2868 3520 +16289 4 2 28 1 1768 1683 547 3388 +16290 4 2 28 1 2926 2593 3159 3824 +16291 4 2 28 1 1001 3038 851 3887 +16292 4 2 28 1 845 847 846 3806 +16293 4 2 28 1 3382 3409 2942 3425 +16294 4 2 28 1 970 3473 2887 3907 +16295 4 2 28 1 893 882 883 3826 +16296 4 2 28 1 3161 3278 2717 3574 +16297 4 2 28 1 2664 2920 2595 3686 +16298 4 2 28 1 875 1211 883 3826 +16299 4 2 28 1 2560 2630 3155 3390 +16300 4 2 28 1 490 479 436 3090 +16301 4 2 28 1 2933 3336 2896 3441 +16302 4 2 28 1 652 724 618 3719 +16303 4 2 28 1 3058 3188 2935 3425 +16304 4 2 28 1 1467 1707 1431 3171 +16305 4 2 28 1 643 624 3097 3781 +16306 4 2 28 1 412 3101 3655 3929 +16307 4 2 28 1 1438 3327 1502 3904 +16308 4 2 28 1 829 828 3894 3927 +16309 4 2 28 1 895 1211 1249 3611 +16310 4 2 28 1 619 713 552 3526 +16311 4 2 28 1 597 3024 2984 3719 +16312 4 2 28 1 1460 1804 1767 3584 +16313 4 2 28 1 420 2916 3504 3548 +16314 4 2 28 1 2827 3325 3018 3809 +16315 4 2 28 1 367 3290 364 3617 +16316 4 2 28 1 2536 2408 69 3644 +16317 4 2 28 1 2868 1108 3506 3520 +16318 4 2 28 1 303 302 437 3588 +16319 4 2 28 1 2581 2671 2906 3392 +16320 4 2 28 1 997 3070 3145 3821 +16321 4 2 28 1 2481 2344 100 2458 +16322 4 2 28 1 1067 1014 1081 3572 +16323 4 2 28 1 3202 3362 1457 3387 +16324 4 2 28 1 2790 3564 3547 3883 +16325 4 2 28 1 2973 3452 2855 3831 +16326 4 2 28 1 576 3089 2912 3701 +16327 4 2 28 1 2860 3368 368 3924 +16328 4 2 28 1 1083 3775 3150 3784 +16329 4 2 28 1 2103 2900 2210 3726 +16330 4 2 28 1 504 445 424 3120 +16331 4 2 28 1 2006 2316 37 1831 +16332 4 2 28 1 524 474 2998 3844 +16333 4 2 28 1 777 547 1683 3388 +16334 4 2 28 1 2808 3005 2695 3632 +16335 4 2 28 1 217 3756 218 3871 +16336 4 2 28 1 2083 2024 2081 3255 +16337 4 2 28 1 1161 3520 844 3806 +16338 4 2 28 1 2621 3461 2625 3926 +16339 4 2 28 1 2066 2178 2018 3462 +16340 4 2 28 1 689 732 546 3490 +16341 4 2 28 1 2553 3466 3000 3645 +16342 4 2 28 1 2709 3487 2992 3563 +16343 4 2 28 1 2646 3168 2860 3802 +16344 4 2 28 1 933 1216 3791 3792 +16345 4 2 28 1 2339 2402 2383 3262 +16346 4 2 28 1 2921 871 3517 3762 +16347 4 2 28 1 1451 3546 3160 3857 +16348 4 2 28 1 2529 2526 2500 3189 +16349 4 2 28 1 1216 937 3791 3792 +16350 4 2 28 1 3318 3381 2798 3928 +16351 4 2 28 1 1087 788 1083 3775 +16352 4 2 28 1 2808 2695 3380 3632 +16353 4 2 28 1 3148 720 3638 3885 +16354 4 2 28 1 1979 2231 2029 3931 +16355 4 2 28 1 1451 1736 1479 3160 +16356 4 2 28 1 553 554 552 3526 +16357 4 2 28 1 299 3062 302 3588 +16358 4 2 28 1 1266 3130 1267 3864 +16359 4 2 28 1 2659 2714 2603 3430 +16360 4 2 28 1 1035 1081 1149 3572 +16361 4 2 28 1 933 1215 1216 3792 +16362 4 2 28 1 725 531 713 3573 +16363 4 2 28 1 2139 2421 90 3627 +16364 4 2 28 1 3180 3856 2613 3878 +16365 4 2 28 1 1638 1719 1571 3752 +16366 4 2 28 1 1013 1268 1262 3535 +16367 4 2 28 1 823 825 1185 3810 +16368 4 2 28 1 2390 2370 2414 3125 +16369 4 2 28 1 1229 1245 890 3580 +16370 4 2 28 1 950 3302 3675 3807 +16371 4 2 28 1 1149 966 1233 3834 +16372 4 2 28 1 569 568 567 3622 +16373 4 2 28 1 1216 1209 937 3792 +16374 4 2 28 1 1277 2158 138 1292 +16375 4 2 28 1 1835 2200 2160 3218 +16376 4 2 28 1 1937 1971 2064 3272 +16377 4 2 28 1 769 692 3008 3930 +16378 4 2 28 1 2445 2470 2479 3651 +16379 4 2 28 1 2575 3484 2994 3718 +16380 4 2 28 1 387 369 404 3368 +16381 4 2 28 1 1724 110 2380 1653 +16382 4 2 28 1 655 534 666 3249 +16383 4 2 28 1 436 490 3090 3152 +16384 4 2 28 1 2544 2751 3134 3912 +16385 4 2 28 1 2625 3461 2702 3744 +16386 4 2 28 1 1440 3264 1444 3904 +16387 4 2 28 1 565 3385 706 3565 +16388 4 2 28 1 410 3131 2934 3697 +16389 4 2 28 1 2554 2911 3587 3731 +16390 4 2 28 1 1083 987 1086 3775 +16391 4 2 28 1 1255 3663 989 3853 +16392 4 2 28 1 1671 3135 1433 3932 +16393 4 2 28 1 411 459 473 3131 +16394 4 2 28 1 1167 969 1000 3821 +16395 4 2 28 1 571 3385 565 3565 +16396 4 2 28 1 2961 3180 1914 3742 +16397 4 2 28 1 2568 3521 2658 3531 +16398 4 2 28 1 3105 3236 2660 3888 +16399 4 2 28 1 2633 2948 2862 3080 +16400 4 2 28 1 2591 2640 2786 2820 +16401 4 2 28 1 215 3277 1499 3463 +16402 4 2 28 1 1930 1931 1932 3403 +16403 4 2 28 1 2774 3089 2905 3699 +16404 4 2 28 1 847 3776 846 3806 +16405 4 2 28 1 2631 2815 2975 3400 +16406 4 2 28 1 2811 3381 3318 3928 +16407 4 2 28 1 2987 3647 494 3796 +16408 4 2 28 1 2661 2779 3141 3639 +16409 4 2 28 1 127 1662 781 1478 +16410 4 2 28 1 577 3022 2984 3689 +16411 4 2 28 1 911 912 910 3850 +16412 4 2 28 1 951 3807 956 3808 +16413 4 2 28 1 2520 2498 2516 3545 +16414 4 2 28 1 1877 1872 1881 3110 +16415 4 2 28 1 2548 3052 3028 3698 +16416 4 2 28 1 2618 3552 2572 3585 +16417 4 2 28 1 1523 1468 1539 3470 +16418 4 2 28 1 525 3561 3707 3923 +16419 4 2 28 1 3234 3513 2953 3863 +16420 4 2 28 1 3234 3258 2989 3762 +16421 4 2 28 1 736 606 638 3741 +16422 4 2 28 1 2860 3290 363 3368 +16423 4 2 28 1 879 886 1202 3907 +16424 4 2 28 1 2014 2027 2012 3371 +16425 4 2 28 1 1000 997 1219 3821 +16426 4 2 28 1 2664 3044 3475 3677 +16427 4 2 28 1 252 547 2249 778 +16428 4 2 28 1 2744 2933 2675 3683 +16429 4 2 28 1 2005 2009 2166 3340 +16430 4 2 28 1 1726 1656 1488 3268 +16431 4 2 28 1 209 274 483 3548 +16432 4 2 28 1 2799 3072 3572 3834 +16433 4 2 28 1 911 993 967 3850 +16434 4 2 28 1 2744 2675 2933 3303 +16435 4 2 28 1 621 654 762 3421 +16436 4 2 28 1 1304 121 1659 3335 +16437 4 2 28 1 2855 2929 2634 2973 +16438 4 2 28 1 1304 806 121 3335 +16439 4 2 28 1 1272 1276 3182 3704 +16440 4 2 28 1 2583 3403 2684 3583 +16441 4 2 28 1 3070 3874 2854 3880 +16442 4 2 28 1 1047 1044 1046 3811 +16443 4 2 28 1 3004 3527 2698 3528 +16444 4 2 28 1 2719 2929 2817 3397 +16445 4 2 28 1 2950 3434 3258 3763 +16446 4 2 28 1 2769 3159 2619 3334 +16447 4 2 28 1 3038 3296 1001 3580 +16448 4 2 28 1 855 3374 3641 3854 +16449 4 2 28 1 700 3096 2863 3747 +16450 4 2 28 1 1255 1011 3663 3853 +16451 4 2 28 1 1213 880 1202 3907 +16452 4 2 28 1 2144 2214 2022 3494 +16453 4 2 28 1 2921 3580 3517 3648 +16454 4 2 28 1 1248 1185 858 3810 +16455 4 2 28 1 2602 3371 2760 3774 +16456 4 2 28 1 2633 2661 2862 3085 +16457 4 2 28 1 973 1126 963 3664 +16458 4 2 28 1 2907 3008 2908 3815 +16459 4 2 28 1 566 564 567 3622 +16460 4 2 28 1 1356 3007 1766 3388 +16461 4 2 28 1 354 356 355 3678 +16462 4 2 28 1 1125 859 1124 3320 +16463 4 2 28 1 2641 3680 3110 3906 +16464 4 2 28 1 572 3385 571 3743 +16465 4 2 28 1 2012 2027 2155 3371 +16466 4 2 28 1 1470 1456 1471 3159 +16467 4 2 28 1 2607 3438 3310 3846 +16468 4 2 28 1 1614 1725 1511 2918 +16469 4 2 28 1 2837 3647 2987 3796 +16470 4 2 28 1 1161 3138 3520 3595 +16471 4 2 28 1 2980 3882 3281 3898 +16472 4 2 28 1 399 3366 3090 3879 +16473 4 2 28 1 3267 3324 2909 3912 +16474 4 2 28 1 363 3617 2860 3679 +16475 4 2 28 1 2598 3122 2730 3493 +16476 4 2 28 1 1093 1033 1160 3859 +16477 4 2 28 1 1422 1450 1445 3214 +16478 4 2 28 1 917 1206 914 3530 +16479 4 2 28 1 1695 3573 2924 3686 +16480 4 2 28 1 391 372 392 3920 +16481 4 2 28 1 1818 216 9 2152 +16482 4 2 28 1 889 885 888 3234 +16483 4 2 28 1 2542 2911 3123 3731 +16484 4 2 28 1 2727 3138 2989 3517 +16485 4 2 28 1 2338 2385 2401 3449 +16486 4 2 28 1 1468 1469 3470 3749 +16487 4 2 28 1 3446 3820 2728 3899 +16488 4 2 28 1 2344 2394 2412 3271 +16489 4 2 28 1 2733 3047 2934 3088 +16490 4 2 28 1 2631 2868 2793 3431 +16491 4 2 28 1 406 407 498 3313 +16492 4 2 28 1 1003 3800 975 3905 +16493 4 2 28 1 2675 2801 2639 2933 +16494 4 2 28 1 3318 3381 2811 3875 +16495 4 2 28 1 743 670 734 3677 +16496 4 2 28 1 2613 3180 3039 3856 +16497 4 2 28 1 411 3655 3131 3929 +16498 4 2 28 1 217 218 1238 3871 +16499 4 2 28 1 358 3270 357 3678 +16500 4 2 28 1 2913 3073 2756 3622 +16501 4 2 28 1 481 3332 289 3929 +16502 4 2 28 1 2079 2124 3118 3273 +16503 4 2 28 1 1403 1411 1402 3279 +16504 4 2 28 1 1422 3501 3214 3833 +16505 4 2 28 1 2633 2862 2948 3085 +16506 4 2 28 1 2589 3451 3039 3645 +16507 4 2 28 1 1080 1083 1297 3784 +16508 4 2 28 1 886 3563 1202 3907 +16509 4 2 28 1 901 3196 3184 3776 +16510 4 2 28 1 2813 3019 2973 3800 +16511 4 2 28 1 3219 3334 2637 3915 +16512 4 2 28 1 2770 2807 2628 3013 +16513 4 2 28 1 566 568 704 3622 +16514 4 2 28 1 2250 2085 3086 3168 +16515 4 2 28 1 2847 3309 2672 3599 +16516 4 2 28 1 2817 3005 3376 3894 +16517 4 2 28 1 1506 1788 1428 3546 +16518 4 2 28 1 786 2146 1300 3194 +16519 4 2 28 1 377 3442 3633 3730 +16520 4 2 28 1 1478 1799 1708 3170 +16521 4 2 28 1 1625 173 276 1323 +16522 4 2 28 1 1615 1651 1654 2686 +16523 4 2 28 1 2770 2978 2769 3328 +16524 4 2 28 1 1237 1130 1208 3566 +16525 4 2 28 1 469 448 395 3693 +16526 4 2 28 1 3183 3301 2546 3547 +16527 4 2 28 1 1300 2145 151 803 +16528 4 2 28 1 938 942 943 3643 +16529 4 2 28 1 913 1131 1180 3816 +16530 4 2 28 1 1936 3272 1937 3557 +16531 4 2 28 1 1470 3159 1471 3824 +16532 4 2 28 1 553 3474 3008 3930 +16533 4 2 28 1 659 735 3064 3499 +16534 4 2 28 1 850 852 853 3318 +16535 4 2 28 1 1153 124 782 1455 +16536 4 2 28 1 913 885 889 3816 +16537 4 2 28 1 403 3307 402 3670 +16538 4 2 28 1 540 667 745 3768 +16539 4 2 28 1 2534 67 2342 2375 +16540 4 2 28 1 980 1128 908 3817 +16541 4 2 28 1 2545 3770 3134 3892 +16542 4 2 28 1 3191 3578 648 3638 +16543 4 2 28 1 2684 2689 2653 2963 +16544 4 2 28 1 1565 1566 1564 3281 +16545 4 2 28 1 275 1636 1646 3398 +16546 4 2 28 1 1255 989 1195 3853 +16547 4 2 28 1 3452 3791 2993 3874 +16548 4 2 28 1 470 300 465 3867 +16549 4 2 28 1 124 1153 1665 1455 +16550 4 2 28 1 538 1343 664 3752 +16551 4 2 28 1 2475 2422 2488 3598 +16552 4 2 28 1 2481 2473 2418 3271 +16553 4 2 28 1 652 614 662 3719 +16554 4 2 28 1 2385 2384 2367 3714 +16555 4 2 28 1 3051 3869 3232 3901 +16556 4 2 28 1 167 1334 398 1646 +16557 4 2 28 1 1751 3090 1625 3366 +16558 4 2 28 1 1116 1266 1265 3864 +16559 4 2 28 1 2733 3088 2934 3697 +16560 4 2 28 1 1335 1293 130 1657 +16561 4 2 28 1 1129 3431 2868 3506 +16562 4 2 28 1 1028 1243 1261 3696 +16563 4 2 28 1 2192 1988 2177 3032 +16564 4 2 28 1 2760 3453 2848 3674 +16565 4 2 28 1 1458 3192 1791 3300 +16566 4 2 28 1 366 362 443 3617 +16567 4 2 28 1 1716 1327 1663 3176 +16568 4 2 28 1 2733 2606 2998 3131 +16569 4 2 28 1 2976 3372 919 3790 +16570 4 2 28 1 3019 3791 937 3792 +16571 4 2 28 1 3145 3431 1219 3566 +16572 4 2 28 1 1797 1559 1660 2877 +16573 4 2 28 1 381 465 458 3867 +16574 4 2 28 1 888 1110 889 3863 +16575 4 2 28 1 2558 3264 3053 3522 +16576 4 2 28 1 1433 1632 1757 3135 +16577 4 2 28 1 3138 3506 1108 3520 +16578 4 2 28 1 322 319 318 3681 +16579 4 2 28 1 1059 1015 984 3809 +16580 4 2 28 1 2566 2647 2616 3300 +16581 4 2 28 1 2671 2623 3009 3392 +16582 4 2 28 1 906 907 905 3629 +16583 4 2 28 1 855 1170 1171 3854 +16584 4 2 28 1 325 324 3099 3745 +16585 4 2 28 1 2487 2475 2426 3598 +16586 4 2 28 1 2398 2412 2347 3644 +16587 4 2 28 1 1186 1174 1170 3854 +16588 4 2 28 1 773 616 676 3726 +16589 4 2 28 1 939 1150 1223 3862 +16590 4 2 28 1 949 3807 951 3808 +16591 4 2 28 1 670 2924 3677 3785 +16592 4 2 28 1 613 3191 3638 3885 +16593 4 2 28 1 475 454 341 3615 +16594 4 2 28 1 2540 3188 2935 3444 +16595 4 2 28 1 2103 2095 2210 2900 +16596 4 2 28 1 448 469 480 3794 +16597 4 2 28 1 1177 990 1172 3632 +16598 4 2 28 1 770 652 662 3752 +16599 4 2 28 1 848 3318 2972 3776 +16600 4 2 28 1 1851 1853 1852 3525 +16601 4 2 28 1 2375 2374 2373 3519 +16602 4 2 28 1 2890 3167 2693 3523 +16603 4 2 28 1 2509 2506 2508 3602 +16604 4 2 28 1 912 1227 910 3321 +16605 4 2 28 1 1297 788 1168 3150 +16606 4 2 28 1 2681 2587 2860 3802 +16607 4 2 28 1 1312 790 1275 3139 +16608 4 2 28 1 2725 2592 2859 3386 +16609 4 2 28 1 696 2947 2912 3836 +16610 4 2 28 1 2660 3470 3268 3749 +16611 4 2 28 1 2379 2377 2345 3422 +16612 4 2 28 1 2207 3712 3413 3827 +16613 4 2 28 1 959 1012 1016 3890 +16614 4 2 28 1 1415 1642 1407 3179 +16615 4 2 28 1 3249 3421 666 3839 +16616 4 2 28 1 1836 2161 2162 3476 +16617 4 2 28 1 1158 784 146 3339 +16618 4 2 28 1 1097 986 1098 3934 +16619 4 2 28 1 1258 794 1137 3663 +16620 4 2 28 1 206 3274 207 3670 +16621 4 2 28 1 535 1832 255 735 +16622 4 2 28 1 1125 1234 859 3881 +16623 4 2 28 1 1342 3164 1603 3737 +16624 4 2 28 1 2331 37 2316 1831 +16625 4 2 28 1 1660 1559 1798 2877 +16626 4 2 28 1 410 2934 3131 3655 +16627 4 2 28 1 2603 2756 2714 2913 +16628 4 2 28 1 1937 3272 2064 3642 +16629 4 2 28 1 1525 1479 1694 3577 +16630 4 2 28 1 2885 3217 515 3917 +16631 4 2 28 1 560 559 561 3700 +16632 4 2 28 1 714 3201 3001 3550 +16633 4 2 28 1 2370 2407 2388 3554 +16634 4 2 28 1 2759 2729 2932 3353 +16635 4 2 28 1 2978 3227 2769 3328 +16636 4 2 28 1 1376 1734 1375 3735 +16637 4 2 28 1 1155 1061 3018 3809 +16638 4 2 28 1 1093 1236 1038 3859 +16639 4 2 28 1 2599 3329 3396 3818 +16640 4 2 28 1 1220 1042 1229 3296 +16641 4 2 28 1 751 601 628 3498 +16642 4 2 28 1 547 2130 2249 3388 +16643 4 2 28 1 399 383 493 3879 +16644 4 2 28 1 1732 3577 1525 3900 +16645 4 2 28 1 466 3243 486 3730 +16646 4 2 28 1 2667 2788 3314 3612 +16647 4 2 28 1 1165 906 904 3870 +16648 4 2 28 1 2842 3458 2876 3739 +16649 4 2 28 1 2600 2730 3122 3493 +16650 4 2 28 1 1029 1008 1077 3671 +16651 4 2 28 1 3117 2898 3829 3858 +16652 4 2 28 1 952 953 3469 3807 +16653 4 2 28 1 2643 2706 2976 3400 +16654 4 2 28 1 2984 3024 597 3689 +16655 4 2 28 1 3144 3696 1028 3795 +16656 4 2 28 1 1693 1758 1540 3529 +16657 4 2 28 1 2308 2305 2306 3351 +16658 4 2 28 1 363 451 360 3626 +16659 4 2 28 1 902 998 904 3870 +16660 4 2 28 1 3209 3580 2782 3648 +16661 4 2 28 1 1603 1556 1784 3630 +16662 4 2 28 1 1638 1571 3076 3752 +16663 4 2 28 1 1011 1255 1254 3853 +16664 4 2 28 1 1538 3159 1456 3812 +16665 4 2 28 1 2836 3258 3234 3863 +16666 4 2 28 1 317 316 318 3681 +16667 4 2 28 1 321 2940 3681 3789 +16668 4 2 28 1 1227 1004 1234 3881 +16669 4 2 28 1 2550 3205 2995 3579 +16670 4 2 28 1 525 285 488 3707 +16671 4 2 28 1 3073 2756 3622 3872 +16672 4 2 28 1 3164 3630 1603 3737 +16673 4 2 28 1 2643 2976 2953 3513 +16674 4 2 28 1 1321 1763 1621 3573 +16675 4 2 28 1 1073 1091 1090 3674 +16676 4 2 28 1 319 449 317 3681 +16677 4 2 28 1 2760 2965 2848 3453 +16678 4 2 28 1 1635 1531 1371 3423 +16679 4 2 28 1 2024 3802 3255 3803 +16680 4 2 28 1 2922 3090 2686 3879 +16681 4 2 28 1 1274 3274 1205 3704 +16682 4 2 28 1 1774 3243 2736 3398 +16683 4 2 28 1 590 598 3365 3885 +16684 4 2 28 1 323 3056 337 3796 +16685 4 2 28 1 3459 3862 2821 3886 +16686 4 2 28 1 414 415 431 2987 +16687 4 2 28 1 497 401 392 3353 +16688 4 2 28 1 828 1152 863 3893 +16689 4 2 28 1 630 629 637 3634 +16690 4 2 28 1 2510 3797 3297 3909 +16691 4 2 28 1 2919 3410 3245 3811 +16692 4 2 28 1 3114 3817 2852 3850 +16693 4 2 28 1 3135 2705 3731 3882 +16694 4 2 28 1 393 302 3062 3633 +16695 4 2 28 1 2684 2837 2687 3056 +16696 4 2 28 1 3416 3505 2825 3664 +16697 4 2 28 1 929 935 1221 3874 +16698 4 2 28 1 923 922 924 3880 +16699 4 2 28 1 1030 1022 961 3203 +16700 4 2 28 1 2724 2974 2833 3661 +16701 4 2 28 1 1758 1475 1680 3529 +16702 4 2 28 1 630 666 654 3421 +16703 4 2 28 1 1830 2250 2251 3168 +16704 4 2 28 1 614 3619 662 3719 +16705 4 2 28 1 1197 996 923 3880 +16706 4 2 28 1 2856 3174 3268 3384 +16707 4 2 28 1 1017 1016 1018 3890 +16708 4 2 28 1 1013 949 951 3808 +16709 4 2 28 1 2020 2021 2188 3759 +16710 4 2 28 1 2644 3050 2789 3782 +16711 4 2 28 1 1200 1271 1270 3556 +16712 4 2 28 1 2562 3543 3443 3662 +16713 4 2 28 1 2744 3107 2812 3248 +16714 4 2 28 1 1297 3150 1168 3784 +16715 4 2 28 1 1259 1232 226 3600 +16716 4 2 28 1 1774 1589 1779 3398 +16717 4 2 28 1 819 820 821 3840 +16718 4 2 28 1 3022 3287 575 3553 +16719 4 2 28 1 736 759 640 3625 +16720 4 2 28 1 2266 2151 2015 3115 +16721 4 2 28 1 929 927 928 3874 +16722 4 2 28 1 2554 3308 3536 3724 +16723 4 2 28 1 1850 1851 1852 3426 +16724 4 2 28 1 366 367 364 3617 +16725 4 2 28 1 2156 1880 2187 3528 +16726 4 2 28 1 2723 3129 3128 3670 +16727 4 2 28 1 575 3287 3022 3689 +16728 4 2 28 1 3013 989 3663 3853 +16729 4 2 28 1 830 829 828 3894 +16730 4 2 28 1 1174 1186 971 3294 +16731 4 2 28 1 2559 3552 3379 3603 +16732 4 2 28 1 2775 3205 2870 3413 +16733 4 2 28 1 818 1097 820 3840 +16734 4 2 28 1 3245 3410 2969 3893 +16735 4 2 28 1 1963 3035 1959 3819 +16736 4 2 28 1 3057 3173 2851 3787 +16737 4 2 28 1 2749 3196 2930 3369 +16738 4 2 28 1 1421 1807 1457 3202 +16739 4 2 28 1 1213 1202 3012 3907 +16740 4 2 28 1 2583 2783 2940 2985 +16741 4 2 28 1 906 1165 909 3276 +16742 4 2 28 1 704 609 644 3872 +16743 4 2 28 1 2181 3064 2086 3499 +16744 4 2 28 1 1874 1871 3282 3828 +16745 4 2 28 1 2860 2646 3290 3368 +16746 4 2 28 1 1482 3501 1692 3542 +16747 4 2 28 1 547 767 772 3388 +16748 4 2 28 1 2748 2992 2887 3822 +16749 4 2 28 1 553 552 3474 3526 +16750 4 2 28 1 3258 3648 2921 3762 +16751 4 2 28 1 3099 3615 2653 3745 +16752 4 2 28 1 2611 2798 2748 3928 +16753 4 2 28 1 413 473 474 3844 +16754 4 2 28 1 1003 975 976 3905 +16755 4 2 28 1 441 350 494 3796 +16756 4 2 28 1 2589 2846 3451 3645 +16757 4 2 28 1 295 297 296 3500 +16758 4 2 28 1 2755 2639 2896 3441 +16759 4 2 28 1 2933 3600 226 3738 +16760 4 2 28 1 2070 3133 2211 3640 +16761 4 2 28 1 2578 2621 2767 3926 +16762 4 2 28 1 1666 1154 782 3436 +16763 4 2 28 1 435 487 459 3697 +16764 4 2 28 1 366 3442 367 3617 +16765 4 2 28 1 1225 1152 1085 3893 +16766 4 2 28 1 2363 2362 2364 3865 +16767 4 2 28 1 1634 2737 1588 3593 +16768 4 2 28 1 1124 859 854 3875 +16769 4 2 28 1 2593 3334 3420 3786 +16770 4 2 28 1 1394 1687 1701 2907 +16771 4 2 28 1 1415 1426 1642 3179 +16772 4 2 28 1 853 852 854 3875 +16773 4 2 28 1 2335 2252 33 2118 +16774 4 2 28 1 1793 1553 1713 3793 +16775 4 2 28 1 2642 3046 2965 3611 +16776 4 2 28 1 1430 1435 1431 3171 +16777 4 2 28 1 735 1832 255 2086 +16778 4 2 28 1 455 3102 3082 3126 +16779 4 2 28 1 2604 2627 3308 3536 +16780 4 2 28 1 2908 3008 2623 3009 +16781 4 2 28 1 2870 3206 2236 3827 +16782 4 2 28 1 3219 3587 2574 3916 +16783 4 2 28 1 2909 2617 3153 3736 +16784 4 2 28 1 765 8 233 1329 +16785 4 2 28 1 371 3126 372 3920 +16786 4 2 28 1 2590 2732 2706 3400 +16787 4 2 28 1 777 547 778 1768 +16788 4 2 28 1 532 664 1638 3752 +16789 4 2 28 1 1005 1279 1282 3291 +16790 4 2 28 1 2638 3391 2639 3683 +16791 4 2 28 1 2702 2757 2594 3191 +16792 4 2 28 1 1655 3772 2891 3793 +16793 4 2 28 1 3037 3666 2789 3782 +16794 4 2 28 1 831 1239 829 3894 +16795 4 2 28 1 2162 1988 2276 3476 +16796 4 2 28 1 277 431 430 3217 +16797 4 2 28 1 1342 1536 17 3737 +16798 4 2 28 1 3175 3422 2679 3797 +16799 4 2 28 1 389 3109 390 3442 +16800 4 2 28 1 2580 2795 2669 3044 +16801 4 2 28 1 573 585 609 3872 +16802 4 2 28 1 943 976 975 3331 +16803 4 2 28 1 1187 1157 1103 3650 +16804 4 2 28 1 1203 1001 851 3887 +16805 4 2 28 1 978 3181 3182 3628 +16806 4 2 28 1 798 2142 140 1302 +16807 4 2 28 1 1112 213 800 3314 +16808 4 2 28 1 1202 3563 959 3890 +16809 4 2 28 1 908 906 909 3902 +16810 4 2 28 1 853 1203 850 3887 +16811 4 2 28 1 3022 3252 587 3540 +16812 4 2 28 1 562 561 563 3700 +16813 4 2 28 1 855 1175 837 3641 +16814 4 2 28 1 427 507 3433 3924 +16815 4 2 28 1 2817 2730 3005 3343 +16816 4 2 28 1 216 3223 3273 3756 +16817 4 2 28 1 704 568 573 3872 +16818 4 2 28 1 1694 3546 1506 3900 +16819 4 2 28 1 1409 1405 1404 3427 +16820 4 2 28 1 3454 3592 3095 3866 +16821 4 2 28 1 713 3474 552 3526 +16822 4 2 28 1 2921 2782 3580 3648 +16823 4 2 28 1 3186 3651 2781 3884 +16824 4 2 28 1 1038 3092 1004 3859 +16825 4 2 28 1 807 1067 1295 3341 +16826 4 2 28 1 2740 2618 3120 3923 +16827 4 2 28 1 2650 2787 2612 3773 +16828 4 2 28 1 2767 3001 2895 3359 +16829 4 2 28 1 2730 2930 3374 3641 +16830 4 2 28 1 1119 1120 3535 3612 +16831 4 2 28 1 3000 3466 2845 3645 +16832 4 2 28 1 2627 2833 2724 2974 +16833 4 2 28 1 2745 3420 2637 3818 +16834 4 2 28 1 1350 1581 1713 3793 +16835 4 2 28 1 1242 3512 1238 3871 +16836 4 2 28 1 2544 3134 3399 3424 +16837 4 2 28 1 805 1315 1287 3669 +16838 4 2 28 1 1221 935 941 3452 +16839 4 2 28 1 316 3082 315 3789 +16840 4 2 28 1 2795 3689 3287 3872 +16841 4 2 28 1 2706 2976 2975 3790 +16842 4 2 28 1 1128 1109 993 3817 +16843 4 2 28 1 2723 3307 3129 3670 +16844 4 2 28 1 2188 2269 2020 3759 +16845 4 2 28 1 1294 1052 1143 3508 +16846 4 2 28 1 432 285 177 3707 +16847 4 2 28 1 1251 1003 1009 3905 +16848 4 2 28 1 1154 782 123 1666 +16849 4 2 28 1 2997 3341 3072 3878 +16850 4 2 28 1 2283 1955 2031 3373 +16851 4 2 28 1 2891 3272 2665 3642 +16852 4 2 28 1 480 3034 423 3897 +16853 4 2 28 1 2146 2004 2114 3226 +16854 4 2 28 1 1031 1297 1168 3784 +16855 4 2 28 1 922 1159 925 3886 +16856 4 2 28 1 1959 3035 1924 3819 +16857 4 2 28 1 2715 3266 3551 3830 +16858 4 2 28 1 1241 1215 991 3795 +16859 4 2 28 1 2835 3361 3682 3820 +16860 4 2 28 1 1507 3379 3378 3603 +16861 4 2 28 1 1419 3202 1492 3387 +16862 4 2 28 1 2012 2155 1904 3021 +16863 4 2 28 1 2551 2764 3507 3673 +16864 4 2 28 1 1342 17 2318 3737 +16865 4 2 28 1 816 815 814 3922 +16866 4 2 28 1 711 720 728 3638 +16867 4 2 28 1 2502 2505 2526 3581 +16868 4 2 28 1 2692 3682 3151 3825 +16869 4 2 28 1 737 529 730 3010 +16870 4 2 28 1 2259 3485 1898 3712 +16871 4 2 28 1 211 279 3504 3612 +16872 4 2 28 1 1603 1342 1570 3164 +16873 4 2 28 1 1621 3077 690 3573 +16874 4 2 28 1 1017 3012 1202 3890 +16875 4 2 28 1 2681 2783 2680 3270 +16876 4 2 28 1 1089 999 1226 3921 +16877 4 2 28 1 2737 3109 2736 3442 +16878 4 2 28 1 2096 2105 2275 3096 +16879 4 2 28 1 3469 3660 952 3807 +16880 4 2 28 1 3380 3632 2695 3664 +16881 4 2 28 1 393 506 302 3633 +16882 4 2 28 1 849 3595 2972 3887 +16883 4 2 28 1 828 826 1152 3927 +16884 4 2 28 1 671 737 744 3261 +16885 4 2 28 1 2630 3390 2560 3493 +16886 4 2 28 1 829 827 828 3927 +16887 4 2 28 1 1178 861 3695 3925 +16888 4 2 28 1 2993 3019 2818 3791 +16889 4 2 28 1 2806 3406 3149 3865 +16890 4 2 28 1 920 922 921 3790 +16891 4 2 28 1 2867 3563 2662 3890 +16892 4 2 28 1 1345 3007 544 3388 +16893 4 2 28 1 2142 2015 140 1302 +16894 4 2 28 1 477 291 513 3621 +16895 4 2 28 1 560 562 701 3700 +16896 4 2 28 1 1055 1154 1296 3436 +16897 4 2 28 1 429 2885 1812 3217 +16898 4 2 28 1 2060 2081 1837 3591 +16899 4 2 28 1 2568 3426 2939 3525 +16900 4 2 28 1 2775 3736 2909 3912 +16901 4 2 28 1 2706 2975 3187 3790 +16902 4 2 28 1 2671 2905 2873 3801 +16903 4 2 28 1 2633 2786 2948 3102 +16904 4 2 28 1 2482 2417 2462 3106 +16905 4 2 28 1 310 309 307 3734 +16906 4 2 28 1 1813 2987 2088 3332 +16907 4 2 28 1 1159 1156 994 3886 +16908 4 2 28 1 381 375 470 3867 +16909 4 2 28 1 3070 3452 2854 3874 +16910 4 2 28 1 3109 3398 2736 3442 +16911 4 2 28 1 1091 1139 1144 3674 +16912 4 2 28 1 2400 2389 2369 3265 +16913 4 2 28 1 2321 2293 2330 3476 +16914 4 2 28 1 1182 3291 1279 3492 +16915 4 2 28 1 3086 3168 404 3368 +16916 4 2 28 1 835 1089 1235 3921 +16917 4 2 28 1 720 3365 598 3885 +16918 4 2 28 1 590 698 716 3608 +16919 4 2 28 1 132 1102 1328 1729 +16920 4 2 28 1 585 3509 610 3589 +16921 4 2 28 1 2635 3301 3665 3769 +16922 4 2 28 1 3194 3226 2693 3729 +16923 4 2 28 1 256 535 682 2117 +16924 4 2 28 1 434 435 281 3697 +16925 4 2 28 1 2591 2640 2820 3583 +16926 4 2 28 1 3090 3500 490 3879 +16927 4 2 28 1 3009 3614 3089 3634 +16928 4 2 28 1 1148 982 1043 3667 +16929 4 2 28 1 1955 2031 3373 3594 +16930 4 2 28 1 931 929 930 3791 +16931 4 2 28 1 626 625 610 3589 +16932 4 2 28 1 2487 27 2334 2426 +16933 4 2 28 1 288 460 3558 3923 +16934 4 2 28 1 2546 3547 3564 3883 +16935 4 2 28 1 1850 1851 3426 3525 +16936 4 2 28 1 315 310 314 3734 +16937 4 2 28 1 1905 1904 2243 3908 +16938 4 2 28 1 1134 1133 1132 3675 +16939 4 2 28 1 2998 3332 524 3929 +16940 4 2 28 1 2587 3255 2646 3802 +16941 4 2 28 1 327 328 313 3913 +16942 4 2 28 1 2872 3411 3343 3894 +16943 4 2 28 1 345 453 328 3913 +16944 4 2 28 1 751 628 728 3638 +16945 4 2 28 1 371 2952 3126 3920 +16946 4 2 28 1 1821 2075 2073 3317 +16947 4 2 28 1 2729 2952 2689 3472 +16948 4 2 28 1 1529 1762 1747 3200 +16949 4 2 28 1 1809 408 187 2108 +16950 4 2 28 1 2149 1986 1985 3803 +16951 4 2 28 1 3336 3741 779 3836 +16952 4 2 28 1 1004 3092 1234 3881 +16953 4 2 28 1 688 232 231 3567 +16954 4 2 28 1 2534 2513 2528 3519 +16955 4 2 28 1 873 3580 3209 3648 +16956 4 2 28 1 1127 804 1153 3176 +16957 4 2 28 1 1039 1235 1002 3831 +16958 4 2 28 1 2644 2789 3050 3666 +16959 4 2 28 1 2022 2020 2269 3759 +16960 4 2 28 1 453 311 313 3913 +16961 4 2 28 1 959 3563 1012 3890 +16962 4 2 28 1 99 2344 2481 2391 +16963 4 2 28 1 1125 1036 1214 3777 +16964 4 2 28 1 132 1102 1307 1328 +16965 4 2 28 1 1079 3600 3107 3738 +16966 4 2 28 1 561 697 563 3701 +16967 4 2 28 1 2207 2036 2233 3413 +16968 4 2 28 1 1298 1127 1049 3505 +16969 4 2 28 1 2487 2406 2475 3598 +16970 4 2 28 1 271 296 436 3152 +16971 4 2 28 1 1675 1623 1516 3486 +16972 4 2 28 1 2556 2797 3610 3903 +16973 4 2 28 1 2333 38 2213 2006 +16974 4 2 28 1 1765 1566 1620 3898 +16975 4 2 28 1 1858 1859 1892 3357 +16976 4 2 28 1 980 3817 908 3902 +16977 4 2 28 1 1402 1403 3279 3788 +16978 4 2 28 1 901 900 902 3661 +16979 4 2 28 1 1035 1150 995 3862 +16980 4 2 28 1 210 3535 2916 3548 +16981 4 2 28 1 1122 1006 1162 3800 +16982 4 2 28 1 361 360 358 3679 +16983 4 2 28 1 2560 3241 3155 3623 +16984 4 2 28 1 291 477 512 3621 +16985 4 2 28 1 2073 2277 2072 3317 +16986 4 2 28 1 1811 2096 2248 3096 +16987 4 2 28 1 922 925 924 3316 +16988 4 2 28 1 2045 2047 2046 3480 +16989 4 2 28 1 1556 1432 3162 3163 +16990 4 2 28 1 291 523 2254 3621 +16991 4 2 28 1 1278 1224 1050 3628 +16992 4 2 28 1 2773 3120 3034 3897 +16993 4 2 28 1 1435 1430 1785 3379 +16994 4 2 28 1 1410 1715 1405 3427 +16995 4 2 28 1 2881 952 3660 3807 +16996 4 2 28 1 2616 3442 3062 3633 +16997 4 2 28 1 569 3553 568 3622 +16998 4 2 28 1 298 295 466 3730 +16999 4 2 28 1 1979 2029 2184 3312 +17000 4 2 28 1 596 696 620 3836 +17001 4 2 28 1 1587 3065 1750 3842 +17002 4 2 28 1 1076 1028 988 3696 +17003 4 2 28 1 2822 3135 2710 3932 +17004 4 2 28 1 323 337 441 3796 +17005 4 2 28 1 3007 3221 2927 3569 +17006 4 2 28 1 2871 3579 2543 3813 +17007 4 2 28 1 561 559 712 3701 +17008 4 2 28 1 2264 2245 2102 3010 +17009 4 2 28 1 2634 2973 2929 3479 +17010 4 2 28 1 712 696 697 3701 +17011 4 2 28 1 1156 3372 3325 3886 +17012 4 2 28 1 947 948 949 3302 +17013 4 2 28 1 1054 1110 979 3863 +17014 4 2 28 1 983 1045 1044 3811 +17015 4 2 28 1 2122 1992 3210 3935 +17016 4 2 28 1 1178 1042 1220 3925 +17017 4 2 28 1 2815 3530 3234 3816 +17018 4 2 28 1 1997 2225 2032 3457 +17019 4 2 28 1 2830 3084 2610 3733 +17020 4 2 28 1 1179 861 1178 3925 +17021 4 2 28 1 1158 3339 1819 3669 +17022 4 2 28 1 1130 3431 3506 3566 +17023 4 2 28 1 2976 3167 2953 3513 +17024 4 2 28 1 1791 1548 1551 3192 +17025 4 2 28 1 2929 2973 2855 3831 +17026 4 2 28 1 848 1184 852 3776 +17027 4 2 28 1 2134 1189 156 2140 +17028 4 2 28 1 348 402 3307 3920 +17029 4 2 28 1 2105 2275 3096 3747 +17030 4 2 28 1 2811 2972 3318 3776 +17031 4 2 28 1 3073 3475 3044 3589 +17032 4 2 28 1 738 636 743 3677 +17033 4 2 28 1 1351 1653 1652 3175 +17034 4 2 28 1 703 711 628 3638 +17035 4 2 28 1 1588 2737 3358 3593 +17036 4 2 28 1 1991 2194 2687 3217 +17037 4 2 28 1 2977 2644 3203 3784 +17038 4 2 28 1 879 865 864 3695 +17039 4 2 28 1 522 215 1645 3463 +17040 4 2 28 1 2638 2813 2812 3331 +17041 4 2 28 1 70 2424 2536 2499 +17042 4 2 28 1 3107 3248 2744 3600 +17043 4 2 28 1 979 3434 3305 3863 +17044 4 2 28 1 841 3520 3369 3806 +17045 4 2 28 1 2768 3472 2577 3585 +17046 4 2 28 1 2139 2040 2038 3627 +17047 4 2 28 1 2742 3323 3273 3756 +17048 4 2 28 1 2346 2349 2381 3260 +17049 4 2 28 1 2063 3772 1822 3793 +17050 4 2 28 1 2163 2283 2031 3373 +17051 4 2 28 1 1429 1550 1549 3437 +17052 4 2 28 1 2095 1811 2153 2900 +17053 4 2 28 1 2825 2695 3294 3664 +17054 4 2 28 1 1179 856 861 3381 +17055 4 2 28 1 1763 3077 1621 3573 +17056 4 2 28 1 1050 1257 1276 3182 +17057 4 2 28 1 950 953 952 3807 +17058 4 2 28 1 1624 3053 1444 3891 +17059 4 2 28 1 636 3677 3044 3785 +17060 4 2 28 1 1678 2999 1631 3333 +17061 4 2 28 1 630 3421 629 3634 +17062 4 2 28 1 719 3475 586 3699 +17063 4 2 28 1 2601 3682 3820 3899 +17064 4 2 28 1 2574 3546 3036 3845 +17065 4 2 28 1 340 341 330 3615 +17066 4 2 28 1 2635 3665 3301 3687 +17067 4 2 28 1 2618 3034 2773 3120 +17068 4 2 28 1 2408 2347 69 3644 +17069 4 2 28 1 774 700 533 3096 +17070 4 2 28 1 363 2860 3626 3679 +17071 4 2 28 1 1218 981 1069 3660 +17072 4 2 28 1 662 3569 538 3752 +17073 4 2 28 1 716 3608 2901 3885 +17074 4 2 28 1 874 3648 875 3826 +17075 4 2 28 1 475 2880 2963 3615 +17076 4 2 28 1 2871 2711 3485 3712 +17077 4 2 28 1 2826 3128 2723 3460 +17078 4 2 28 1 2633 2952 2768 3472 +17079 4 2 28 1 2618 2655 3552 3585 +17080 4 2 28 1 2752 3552 3564 3722 +17081 4 2 28 1 872 876 871 3762 +17082 4 2 28 1 1997 2018 1998 3029 +17083 4 2 28 1 1341 165 1641 517 +17084 4 2 28 1 3159 3334 2926 3812 +17085 4 2 28 1 341 379 475 3868 +17086 4 2 28 1 2550 3257 2584 3911 +17087 4 2 28 1 440 314 307 3734 +17088 4 2 28 1 1132 3147 3014 3675 +17089 4 2 28 1 449 3082 317 3681 +17090 4 2 28 1 490 3152 296 3500 +17091 4 2 28 1 1451 1736 3546 3857 +17092 4 2 28 1 3012 2662 3563 3890 +17093 4 2 28 1 1158 805 1287 3669 +17094 4 2 28 1 2895 3001 2884 3732 +17095 4 2 28 1 1816 2279 2290 3194 +17096 4 2 28 1 3382 3425 2942 3757 +17097 4 2 28 1 626 3044 625 3589 +17098 4 2 28 1 2319 2308 2306 3685 +17099 4 2 28 1 1005 960 957 3656 +17100 4 2 28 1 759 3467 640 3625 +17101 4 2 28 1 722 532 245 1322 +17102 4 2 28 1 2741 3685 3094 3837 +17103 4 2 28 1 2631 2975 2732 3400 +17104 4 2 28 1 435 3088 487 3697 +17105 4 2 28 1 2913 3073 701 3700 +17106 4 2 28 1 2246 2026 3341 3878 +17107 4 2 28 1 2598 2817 2719 3329 +17108 4 2 28 1 2462 2417 2450 3106 +17109 4 2 28 1 1477 1451 1479 3812 +17110 4 2 28 1 1049 1298 3505 3667 +17111 4 2 28 1 1485 1624 1444 3891 +17112 4 2 28 1 2833 2974 2627 3276 +17113 4 2 28 1 1552 1775 1676 2904 +17114 4 2 28 1 1916 2055 2178 3462 +17115 4 2 28 1 2415 96 2468 3714 +17116 4 2 28 1 1522 1700 1679 3491 +17117 4 2 28 1 2937 3047 203 3492 +17118 4 2 28 1 2645 2569 3065 3876 +17119 4 2 28 1 1857 2066 1860 3739 +17120 4 2 28 1 475 2963 2880 3126 +17121 4 2 28 1 2620 3130 2881 3687 +17122 4 2 28 1 1023 3416 1126 3505 +17123 4 2 28 1 2633 3472 2768 3585 +17124 4 2 28 1 211 3504 2916 3612 +17125 4 2 28 1 317 3082 316 3681 +17126 4 2 28 1 422 3504 279 3558 +17127 4 2 28 1 2803 3274 2826 3284 +17128 4 2 28 1 1579 1576 1578 3593 +17129 4 2 28 1 1485 3264 1516 3891 +17130 4 2 28 1 693 738 734 3677 +17131 4 2 28 1 1096 797 1105 3555 +17132 4 2 28 1 3119 3453 2787 3656 +17133 4 2 28 1 2927 3569 662 3752 +17134 4 2 28 1 2323 2304 2303 3725 +17135 4 2 28 1 783 3274 1274 3284 +17136 4 2 28 1 96 2385 2468 3714 +17137 4 2 28 1 334 326 312 3805 +17138 4 2 28 1 1957 2038 1981 3910 +17139 4 2 28 1 1489 1684 3824 3842 +17140 4 2 28 1 2139 90 2133 3627 +17141 4 2 28 1 720 598 613 3885 +17142 4 2 28 1 922 3316 3372 3886 +17143 4 2 28 1 736 3550 606 3741 +17144 4 2 28 1 3022 3252 2757 3498 +17145 4 2 28 1 1312 141 2151 1074 +17146 4 2 28 1 3091 3480 2720 3559 +17147 4 2 28 1 466 486 394 3730 +17148 4 2 28 1 1826 2417 85 2482 +17149 4 2 28 1 1597 1330 1666 3436 +17150 4 2 28 1 2740 3120 2918 3707 +17151 4 2 28 1 2315 2314 3220 3889 +17152 4 2 28 1 2701 2757 3338 3578 +17153 4 2 28 1 2760 3173 3453 3674 +17154 4 2 28 1 995 3325 3229 3862 +17155 4 2 28 1 2744 3600 3248 3663 +17156 4 2 28 1 3085 458 3639 3867 +17157 4 2 28 1 3258 3650 2950 3763 +17158 4 2 28 1 2246 2997 2001 3878 +17159 4 2 28 1 1668 1783 1326 2977 +17160 4 2 28 1 986 1097 818 3328 +17161 4 2 28 1 362 363 360 3679 +17162 4 2 28 1 2067 3200 2068 3370 +17163 4 2 28 1 994 3862 939 3886 +17164 4 2 28 1 2795 2894 2624 3024 +17165 4 2 28 1 2729 2952 2768 3307 +17166 4 2 28 1 479 172 1626 1323 +17167 4 2 28 1 1879 2209 2286 3244 +17168 4 2 28 1 21 2348 2336 2409 +17169 4 2 28 1 215 7 1645 1499 +17170 4 2 28 1 495 3394 506 3633 +17171 4 2 28 1 2728 3445 3446 3899 +17172 4 2 28 1 1958 2020 1961 3759 +17173 4 2 28 1 1995 1997 1996 3405 +17174 4 2 28 1 1969 1915 1940 3451 +17175 4 2 28 1 3304 3684 3597 3798 +17176 4 2 28 1 2812 2813 2634 3331 +17177 4 2 28 1 1820 2142 139 1292 +17178 4 2 28 1 2768 2655 3034 3585 +17179 4 2 28 1 1681 1598 1381 3751 +17180 4 2 28 1 3053 3749 3136 3888 +17181 4 2 28 1 421 3504 3034 3794 +17182 4 2 28 1 1493 1492 1457 3362 +17183 4 2 28 1 1625 276 409 3366 +17184 4 2 28 1 271 1626 1640 3152 +17185 4 2 28 1 2586 2902 3399 3783 +17186 4 2 28 1 2450 2464 2433 3766 +17187 4 2 28 1 1991 2687 2987 3217 +17188 4 2 28 1 94 2471 2422 2402 +17189 4 2 28 1 519 507 388 3924 +17190 4 2 28 1 1850 3426 3269 3525 +17191 4 2 28 1 2593 3263 3823 3824 +17192 4 2 28 1 2800 3648 3258 3650 +17193 4 2 28 1 2402 2382 2383 3262 +17194 4 2 28 1 2823 2568 3269 3426 +17195 4 2 28 1 301 299 302 3588 +17196 4 2 28 1 617 680 779 3336 +17197 4 2 28 1 2763 3436 3416 3817 +17198 4 2 28 1 2717 3574 3278 3721 +17199 4 2 28 1 2878 2881 2620 3439 +17200 4 2 28 1 1444 1448 1447 3749 +17201 4 2 28 1 3058 3731 2705 3882 +17202 4 2 28 1 1600 542 235 1608 +17203 4 2 28 1 2621 2901 2900 3097 +17204 4 2 28 1 1192 1301 1068 3198 +17205 4 2 28 1 3159 3823 1471 3824 +17206 4 2 28 1 693 3475 738 3677 +17207 4 2 28 1 703 3498 3022 3553 +17208 4 2 28 1 2763 3087 3436 3817 +17209 4 2 28 1 2014 2037 2232 3733 +17210 4 2 28 1 2722 3325 3229 3393 +17211 4 2 28 1 2572 2618 2773 3676 +17212 4 2 28 1 610 3509 626 3589 +17213 4 2 28 1 1562 1462 1463 3666 +17214 4 2 28 1 2710 3135 3731 3882 +17215 4 2 28 1 1501 3247 1536 3737 +17216 4 2 28 1 934 966 945 3834 +17217 4 2 28 1 2818 3019 3016 3792 +17218 4 2 28 1 1232 3600 1079 3738 +17219 4 2 28 1 2590 3155 2704 3750 +17220 4 2 28 1 2688 3250 2800 3763 +17221 4 2 28 1 1538 1755 1456 3159 +17222 4 2 28 1 1585 53 1332 2074 +17223 4 2 28 1 3552 3585 2577 3722 +17224 4 2 28 1 1587 1750 1437 3842 +17225 4 2 28 1 2746 3016 2813 3158 +17226 4 2 28 1 2586 3250 2902 3783 +17227 4 2 28 1 3461 3744 2625 3926 +17228 4 2 28 1 736 638 3625 3741 +17229 4 2 28 1 1235 1002 3831 3921 +17230 4 2 28 1 1858 1906 1856 3113 +17231 4 2 28 1 1336 109 2340 2403 +17232 4 2 28 1 1645 215 1499 3463 +17233 4 2 28 1 2667 3130 3535 3612 +17234 4 2 28 1 3192 3202 2761 3428 +17235 4 2 28 1 2885 2985 2687 3917 +17236 4 2 28 1 3426 3549 2824 3607 +17237 4 2 28 1 2924 3573 2920 3686 +17238 4 2 28 1 1175 3374 2930 3641 +17239 4 2 28 1 2138 1819 146 3339 +17240 4 2 28 1 976 3331 3107 3905 +17241 4 2 28 1 2826 2867 2662 3284 +17242 4 2 28 1 2722 3229 2997 3393 +17243 4 2 28 1 3430 3522 2857 3532 +17244 4 2 28 1 973 3664 2946 3667 +17245 4 2 28 1 3325 3372 2821 3886 +17246 4 2 28 1 291 1772 523 3621 +17247 4 2 28 1 1817 158 1295 2135 +17248 4 2 28 1 1841 81 2256 2535 +17249 4 2 28 1 2780 3230 3449 3716 +17250 4 2 28 1 600 3252 3022 3498 +17251 4 2 28 1 1395 1400 1398 3833 +17252 4 2 28 1 874 875 882 3826 +17253 4 2 28 1 403 402 270 3670 +17254 4 2 28 1 2537 1840 76 2247 +17255 4 2 28 1 1308 2152 216 3223 +17256 4 2 28 1 1006 3800 3479 3831 +17257 4 2 28 1 1691 3501 1422 3833 +17258 4 2 28 1 2834 3449 3230 3716 +17259 4 2 28 1 2740 2918 3120 3676 +17260 4 2 28 1 280 1334 1641 3109 +17261 4 2 28 1 618 597 614 3719 +17262 4 2 28 1 2198 3143 2173 3642 +17263 4 2 28 1 416 481 524 3332 +17264 4 2 28 1 519 3168 3433 3924 +17265 4 2 28 1 322 3099 319 3681 +17266 4 2 28 1 2896 2947 2754 3741 +17267 4 2 28 1 3294 2695 3632 3664 +17268 4 2 28 1 2760 2787 3453 3656 +17269 4 2 28 1 530 3467 759 3625 +17270 4 2 28 1 1507 1785 3379 3603 +17271 4 2 28 1 3148 3365 2714 3516 +17272 4 2 28 1 844 841 845 3806 +17273 4 2 28 1 3141 3639 304 3867 +17274 4 2 28 1 2645 3065 3491 3842 +17275 4 2 28 1 3307 3804 348 3920 +17276 4 2 28 1 2829 3515 3211 3713 +17277 4 2 28 1 2929 3048 3479 3810 +17278 4 2 28 1 2689 2880 2653 2963 +17279 4 2 28 1 1596 1669 1783 3198 +17280 4 2 28 1 2472 2490 2421 3627 +17281 4 2 28 1 2821 2636 2970 3459 +17282 4 2 28 1 1161 3595 3520 3806 +17283 4 2 28 1 870 2921 3517 3648 +17284 4 2 28 1 769 753 692 3930 +17285 4 2 28 1 502 3270 3626 3924 +17286 4 2 28 1 2565 2687 2684 2837 +17287 4 2 28 1 851 3595 849 3887 +17288 4 2 28 1 2872 2855 3533 3921 +17289 4 2 28 1 3009 3634 2906 3839 +17290 4 2 28 1 1020 3173 3057 3787 +17291 4 2 28 1 2643 2975 2815 3400 +17292 4 2 28 1 2665 3642 3143 3793 +17293 4 2 28 1 897 896 898 3453 +17294 4 2 28 1 1307 133 1328 1650 +17295 4 2 28 1 2650 3497 2602 3773 +17296 4 2 28 1 2550 3054 3199 3758 +17297 4 2 28 1 52 1585 1338 1827 +17298 4 2 28 1 2665 3272 2891 3429 +17299 4 2 28 1 2635 2881 2828 3687 +17300 4 2 28 1 319 3099 449 3681 +17301 4 2 28 1 2154 2263 2169 3847 +17302 4 2 28 1 2216 3559 2059 3653 +17303 4 2 28 1 597 3619 614 3719 +17304 4 2 28 1 604 599 592 3781 +17305 4 2 28 1 2064 2063 2198 3793 +17306 4 2 28 1 3378 3379 2618 3603 +17307 4 2 28 1 469 3504 3129 3548 +17308 4 2 28 1 2558 3053 3136 3888 +17309 4 2 28 1 1004 3321 3092 3881 +17310 4 2 28 1 492 3353 2880 3868 +17311 4 2 28 1 1971 3272 1934 3407 +17312 4 2 28 1 747 694 593 3614 +17313 4 2 28 1 450 309 3102 3568 +17314 4 2 28 1 1258 3600 3303 3663 +17315 4 2 28 1 221 686 756 3694 +17316 4 2 28 1 2882 3303 3013 3663 +17317 4 2 28 1 1295 157 1817 2134 +17318 4 2 28 1 827 858 825 3810 +17319 4 2 28 1 2654 3144 2988 3696 +17320 4 2 28 1 363 3290 2860 3617 +17321 4 2 28 1 684 682 764 3356 +17322 4 2 28 1 59 1369 1802 2520 +17323 4 2 28 1 1834 2086 2181 3064 +17324 4 2 28 1 566 3073 2913 3622 +17325 4 2 28 1 455 315 3082 3102 +17326 4 2 28 1 1833 2231 2163 3931 +17327 4 2 28 1 1451 3160 1479 3812 +17328 4 2 28 1 1746 1688 1499 3277 +17329 4 2 28 1 1301 1264 1069 3439 +17330 4 2 28 1 2310 2308 2312 3685 +17331 4 2 28 1 2934 3492 2847 3599 +17332 4 2 28 1 706 3516 564 3565 +17333 4 2 28 1 3614 3839 3009 3930 +17334 4 2 28 1 703 628 3498 3638 +17335 4 2 28 1 1241 1209 1215 3792 +17336 4 2 28 1 515 380 2885 3917 +17337 4 2 28 1 1309 1114 112 1670 +17338 4 2 28 1 2567 3308 2677 3782 +17339 4 2 28 1 1868 1869 1870 3347 +17340 4 2 28 1 69 2528 2536 3644 +17341 4 2 28 1 1033 1004 3524 3859 +17342 4 2 28 1 451 3626 2860 3924 +17343 4 2 28 1 2656 3128 2826 3460 +17344 4 2 28 1 400 3353 2932 3920 +17345 4 2 28 1 2173 2159 1965 3642 +17346 4 2 28 1 569 567 3516 3622 +17347 4 2 28 1 3216 3716 3449 3717 +17348 4 2 28 1 2415 2404 96 3714 +17349 4 2 28 1 1759 1704 2535 3370 +17350 4 2 28 1 2709 2867 3302 3563 +17351 4 2 28 1 2808 3380 3245 3893 +17352 4 2 28 1 1492 3202 1457 3387 +17353 4 2 28 1 2171 2141 2235 3485 +17354 4 2 28 1 2808 3245 2694 3915 +17355 4 2 28 1 1710 1095 135 1472 +17356 4 2 28 1 997 969 996 3821 +17357 4 2 28 1 370 356 354 3764 +17358 4 2 28 1 1960 1299 160 2144 +17359 4 2 28 1 2750 3417 2914 3659 +17360 4 2 28 1 703 3553 711 3638 +17361 4 2 28 1 218 217 543 3756 +17362 4 2 28 1 2589 2827 3377 3523 +17363 4 2 28 1 2742 3512 3223 3759 +17364 4 2 28 1 2882 3249 2675 3303 +17365 4 2 28 1 325 330 324 3745 +17366 4 2 28 1 331 340 330 3745 +17367 4 2 28 1 564 3516 567 3622 +17368 4 2 28 1 2808 3376 3005 3893 +17369 4 2 28 1 1807 3300 1685 3362 +17370 4 2 28 1 1112 3314 3015 3843 +17371 4 2 28 1 1112 214 213 3843 +17372 4 2 28 1 2265 2050 2268 3101 +17373 4 2 28 1 2060 1575 1339 3255 +17374 4 2 28 1 320 3082 2963 3126 +17375 4 2 28 1 2704 3452 2993 3874 +17376 4 2 28 1 2647 2922 2661 3141 +17377 4 2 28 1 2074 1585 1827 3549 +17378 4 2 28 1 2923 3201 2699 3389 +17379 4 2 28 1 2255 2129 2203 3401 +17380 4 2 28 1 880 865 879 3907 +17381 4 2 28 1 2729 2689 2952 3126 +17382 4 2 28 1 2568 3525 2939 3531 +17383 4 2 28 1 2653 2606 2837 2986 +17384 4 2 28 1 1003 3479 3800 3905 +17385 4 2 28 1 2438 2470 2436 3651 +17386 4 2 28 1 224 225 787 3738 +17387 4 2 28 1 827 3810 825 3927 +17388 4 2 28 1 1125 3777 1214 3881 +17389 4 2 28 1 660 742 641 3510 +17390 4 2 28 1 2808 3915 2694 3916 +17391 4 2 28 1 2169 2052 2222 3354 +17392 4 2 28 1 2041 1933 1936 3557 +17393 4 2 28 1 1241 3792 1215 3795 +17394 4 2 28 1 1926 1928 1943 3206 +17395 4 2 28 1 1492 1419 1457 3202 +17396 4 2 28 1 1587 1679 1750 3065 +17397 4 2 28 1 998 3854 1174 3870 +17398 4 2 28 1 1517 1476 1586 3375 +17399 4 2 28 1 472 471 2964 3765 +17400 4 2 28 1 2854 3187 3070 3880 +17401 4 2 28 1 1143 3508 1052 3753 +17402 4 2 28 1 1320 1636 405 3243 +17403 4 2 28 1 1017 1202 959 3890 +17404 4 2 28 1 477 513 3086 3621 +17405 4 2 28 1 2908 3490 2645 3491 +17406 4 2 28 1 537 550 690 3077 +17407 4 2 28 1 507 519 284 3433 +17408 4 2 28 1 509 1604 285 3561 +17409 4 2 28 1 2709 2867 2992 3822 +17410 4 2 28 1 218 219 799 3871 +17411 4 2 28 1 1728 1721 1562 3666 +17412 4 2 28 1 1946 1945 1947 3933 +17413 4 2 28 1 3011 2677 3092 3859 +17414 4 2 28 1 1444 1440 1485 3264 +17415 4 2 28 1 1143 1140 1142 3753 +17416 4 2 28 1 337 3056 338 3796 +17417 4 2 28 1 1839 1581 1350 3793 +17418 4 2 28 1 2020 1958 2021 3759 +17419 4 2 28 1 406 188 272 3313 +17420 4 2 28 1 278 482 427 3408 +17421 4 2 28 1 2674 3505 3176 3667 +17422 4 2 28 1 986 3922 1104 3934 +17423 4 2 28 1 644 609 3589 3872 +17424 4 2 28 1 967 968 912 3850 +17425 4 2 28 1 757 763 661 3323 +17426 4 2 28 1 669 761 776 3785 +17427 4 2 28 1 1936 2171 2041 3557 +17428 4 2 28 1 2528 2527 2499 3644 +17429 4 2 28 1 84 2480 2417 1826 +17430 4 2 28 1 879 3695 2992 3907 +17431 4 2 28 1 2418 99 2481 2391 +17432 4 2 28 1 1218 3660 3439 3864 +17433 4 2 28 1 352 2985 2940 3765 +17434 4 2 28 1 2727 2989 2921 3517 +17435 4 2 28 1 585 3589 609 3872 +17436 4 2 28 1 3058 3183 2546 3883 +17437 4 2 28 1 2792 3424 3134 3770 +17438 4 2 28 1 2959 3401 2129 3631 +17439 4 2 28 1 447 335 351 3804 +17440 4 2 28 1 1991 2260 2194 2987 +17441 4 2 28 1 254 2086 1834 541 +17442 4 2 28 1 2702 2714 3148 3365 +17443 4 2 28 1 440 463 314 3789 +17444 4 2 28 1 316 463 321 3789 +17445 4 2 28 1 1496 1494 1465 3238 +17446 4 2 28 1 693 2920 3475 3677 +17447 4 2 28 1 1544 1545 1598 3477 +17448 4 2 28 1 1246 3479 2929 3831 +17449 4 2 28 1 2448 2466 2439 3230 +17450 4 2 28 1 469 395 3129 3693 +17451 4 2 28 1 2307 2315 2314 3220 +17452 4 2 28 1 1821 1332 53 2074 +17453 4 2 28 1 939 994 995 3862 +17454 4 2 28 1 346 2985 353 3917 +17455 4 2 28 1 2920 2924 2664 3677 +17456 4 2 28 1 2795 3073 3044 3589 +17457 4 2 28 1 2181 2086 2189 3499 +17458 4 2 28 1 27 2297 2334 2426 +17459 4 2 28 1 2593 3159 2769 3334 +17460 4 2 28 1 437 495 438 3394 +17461 4 2 28 1 1074 1072 1302 3115 +17462 4 2 28 1 2798 2887 3381 3925 +17463 4 2 28 1 1951 2046 2215 3480 +17464 4 2 28 1 3024 2795 3509 3689 +17465 4 2 28 1 1036 3184 901 3777 +17466 4 2 28 1 2636 2854 2993 3459 +17467 4 2 28 1 3013 2770 3432 3840 +17468 4 2 28 1 224 2888 3441 3738 +17469 4 2 28 1 2059 3559 3091 3653 +17470 4 2 28 1 413 3131 3844 3929 +17471 4 2 28 1 245 722 1322 1644 +17472 4 2 28 1 1180 877 885 3816 +17473 4 2 28 1 830 828 863 3376 +17474 4 2 28 1 2327 2423 32 2335 +17475 4 2 28 1 1610 1382 1381 3445 +17476 4 2 28 1 1063 1020 1062 3787 +17477 4 2 28 1 2606 2571 2733 3896 +17478 4 2 28 1 1232 226 3600 3738 +17479 4 2 28 1 2965 3046 2642 3209 +17480 4 2 28 1 878 1254 1195 3853 +17481 4 2 28 1 2577 3552 2655 3585 +17482 4 2 28 1 2704 3019 2993 3452 +17483 4 2 28 1 2947 596 3741 3836 +17484 4 2 28 1 2970 3459 3240 3834 +17485 4 2 28 1 3474 3526 713 3573 +17486 4 2 28 1 1026 994 1156 3325 +17487 4 2 28 1 3016 3019 2813 3643 +17488 4 2 28 1 2287 2129 1901 3631 +17489 4 2 28 1 2887 3695 3381 3925 +17490 4 2 28 1 590 603 598 3885 +17491 4 2 28 1 1600 3490 732 3815 +17492 4 2 28 1 1033 1038 1004 3859 +17493 4 2 28 1 1197 927 3874 3880 +17494 4 2 28 1 2003 1970 2241 3448 +17495 4 2 28 1 2832 3298 3121 3922 +17496 4 2 28 1 2693 3448 2890 3523 +17497 4 2 28 1 1095 1710 1305 3298 +17498 4 2 28 1 2689 2880 2963 3126 +17499 4 2 28 1 2937 3182 2787 3628 +17500 4 2 28 1 412 411 413 3929 +17501 4 2 28 1 2221 1892 2211 3357 +17502 4 2 28 1 1475 1476 1517 3375 +17503 4 2 28 1 1367 1773 1742 3317 +17504 4 2 28 1 888 964 979 3863 +17505 4 2 28 1 889 3234 3530 3816 +17506 4 2 28 1 2172 1966 2262 2931 +17507 4 2 28 1 3036 3539 1454 3900 +17508 4 2 28 1 1685 3300 1473 3362 +17509 4 2 28 1 1125 1214 1227 3881 +17510 4 2 28 1 2101 2701 2057 3338 +17511 4 2 28 1 1141 1140 1139 3349 +17512 4 2 28 1 2887 2992 2662 3822 +17513 4 2 28 1 1849 1850 1848 3269 +17514 4 2 28 1 2793 3533 3145 3538 +17515 4 2 28 1 1054 979 1053 3305 +17516 4 2 28 1 884 876 3258 3762 +17517 4 2 28 1 2082 1837 2081 3591 +17518 4 2 28 1 2877 3198 2878 3439 +17519 4 2 28 1 998 1171 1174 3854 +17520 4 2 28 1 467 288 3017 3923 +17521 4 2 28 1 2656 2867 2826 3556 +17522 4 2 28 1 219 220 1243 3342 +17523 4 2 28 1 2662 2992 2887 3012 +17524 4 2 28 1 2973 3019 2704 3452 +17525 4 2 28 1 1184 901 3184 3776 +17526 4 2 28 1 2854 3874 3459 3880 +17527 4 2 28 1 2246 3341 2997 3878 +17528 4 2 28 1 1232 1079 787 3738 +17529 4 2 28 1 1986 3142 1985 3803 +17530 4 2 28 1 446 358 356 3764 +17531 4 2 28 1 2755 2754 3201 3625 +17532 4 2 28 1 2894 3076 3024 3509 +17533 4 2 28 1 1521 1491 1490 3263 +17534 4 2 28 1 2180 2164 1892 3140 +17535 4 2 28 1 1576 3591 1578 3593 +17536 4 2 28 1 1920 1953 2203 3401 +17537 4 2 28 1 1960 1299 2144 3494 +17538 4 2 28 1 2755 2896 2754 3625 +17539 4 2 28 1 2679 3423 3175 3797 +17540 4 2 28 1 814 1094 1104 3922 +17541 4 2 28 1 2723 2768 2577 3585 +17542 4 2 28 1 3146 543 3323 3756 +17543 4 2 28 1 2799 3144 3435 3834 +17544 4 2 28 1 568 3553 3287 3622 +17545 4 2 28 1 754 780 687 3569 +17546 4 2 28 1 3184 3320 1124 3875 +17547 4 2 28 1 2968 3658 2665 3767 +17548 4 2 28 1 1488 1526 1527 3384 +17549 4 2 28 1 2644 3666 3037 3782 +17550 4 2 28 1 404 477 290 3086 +17551 4 2 28 1 2667 3130 2828 3535 +17552 4 2 28 1 2611 2782 2798 3543 +17553 4 2 28 1 184 426 284 3433 +17554 4 2 28 1 1737 1458 1791 3300 +17555 4 2 28 1 1489 1491 1684 3842 +17556 4 2 28 1 2657 2757 3252 3578 +17557 4 2 28 1 2681 2981 2778 3606 +17558 4 2 28 1 998 1174 1165 3870 +17559 4 2 28 1 2647 3152 3090 3500 +17560 4 2 28 1 1452 1462 1518 3539 +17561 4 2 28 1 2656 2826 3128 3556 +17562 4 2 28 1 3140 3544 2910 3640 +17563 4 2 28 1 2782 2642 3046 3209 +17564 4 2 28 1 472 370 471 3765 +17565 4 2 28 1 2150 1989 1961 3652 +17566 4 2 28 1 2704 2993 2854 3874 +17567 4 2 28 1 799 1242 1238 3871 +17568 4 2 28 1 224 3441 225 3738 +17569 4 2 28 1 221 222 793 3694 +17570 4 2 28 1 2352 2354 2355 3861 +17571 4 2 28 1 1531 1532 1449 3208 +17572 4 2 28 1 494 2987 415 3647 +17573 4 2 28 1 96 2404 2385 3714 +17574 4 2 28 1 334 2952 336 3805 +17575 4 2 28 1 993 3114 967 3850 +17576 4 2 28 1 789 1102 131 1729 +17577 4 2 28 1 1701 1687 1805 2907 +17578 4 2 28 1 3143 3642 2198 3793 +17579 4 2 28 1 408 278 186 3408 +17580 4 2 28 1 539 3118 1862 3747 +17581 4 2 28 1 1352 1759 58 2535 +17582 4 2 28 1 1807 1685 1457 3362 +17583 4 2 28 1 1920 3401 2203 3819 +17584 4 2 28 1 2921 3258 2800 3648 +17585 4 2 28 1 2940 3056 442 3681 +17586 4 2 28 1 306 3568 3639 3734 +17587 4 2 28 1 412 511 3101 3929 +17588 4 2 28 1 20 2328 1647 1770 +17589 4 2 28 1 852 3776 1184 3875 +17590 4 2 28 1 347 373 351 3804 +17591 4 2 28 1 2667 2828 3130 3687 +17592 4 2 28 1 2584 2729 2689 3472 +17593 4 2 28 1 1680 1540 1758 3529 +17594 4 2 28 1 225 3441 2933 3738 +17595 4 2 28 1 1471 3823 1489 3824 +17596 4 2 28 1 1672 1764 1619 3280 +17597 4 2 28 1 1815 2151 2119 3139 +17598 4 2 28 1 2680 3408 3270 3678 +17599 4 2 28 1 3138 3517 2727 3595 +17600 4 2 28 1 621 762 3336 3421 +17601 4 2 28 1 2245 1810 2116 3010 +17602 4 2 28 1 2567 3301 2635 3769 +17603 4 2 28 1 2147 1819 2281 3669 +17604 4 2 28 1 1592 1717 1335 3417 +17605 4 2 28 1 1197 924 927 3880 +17606 4 2 28 1 2621 3405 3029 3926 +17607 4 2 28 1 797 134 1650 1710 +17608 4 2 28 1 1221 1197 927 3874 +17609 4 2 28 1 1205 205 1204 3704 +17610 4 2 28 1 2953 1110 3729 3863 +17611 4 2 28 1 1353 2397 102 1770 +17612 4 2 28 1 1670 112 1309 1499 +17613 4 2 28 1 2922 3500 3090 3879 +17614 4 2 28 1 797 1307 1101 3555 +17615 4 2 28 1 2581 2801 2675 2906 +17616 4 2 28 1 3034 3558 422 3897 +17617 4 2 28 1 1490 1537 1643 3823 +17618 4 2 28 1 1679 3065 1587 3842 +17619 4 2 28 1 689 3490 2908 3815 +17620 4 2 28 1 2664 2999 2894 3785 +17621 4 2 28 1 2932 3307 2723 3670 +17622 4 2 28 1 2798 3296 2887 3925 +17623 4 2 28 1 403 207 208 3670 +17624 4 2 28 1 1921 1911 1952 3237 +17625 4 2 28 1 1860 1861 1859 3739 +17626 4 2 28 1 818 819 817 3840 +17627 4 2 28 1 1770 2397 102 2409 +17628 4 2 28 1 2584 3257 3472 3911 +17629 4 2 28 1 863 1225 1177 3893 +17630 4 2 28 1 2138 146 784 3339 +17631 4 2 28 1 2245 1810 3010 3356 +17632 4 2 28 1 2887 3012 2992 3907 +17633 4 2 28 1 1808 260 672 3261 +17634 4 2 28 1 381 3605 375 3867 +17635 4 2 28 1 1319 1631 1678 2999 +17636 4 2 28 1 2821 2706 3316 3372 +17637 4 2 28 1 2880 3615 475 3868 +17638 4 2 28 1 2756 3287 3022 3553 +17639 4 2 28 1 1440 1438 1502 3904 +17640 4 2 28 1 831 830 832 3894 +17641 4 2 28 1 640 3467 3201 3625 +17642 4 2 28 1 1720 1606 1328 3083 +17643 4 2 28 1 1193 2950 3650 3753 +17644 4 2 28 1 777 250 544 1345 +17645 4 2 28 1 568 3622 3287 3872 +17646 4 2 28 1 738 3475 636 3677 +17647 4 2 28 1 2179 3828 2099 3933 +17648 4 2 28 1 2458 2473 2481 3271 +17649 4 2 28 1 976 1010 1009 3905 +17650 4 2 28 1 530 759 758 3625 +17651 4 2 28 1 3211 3515 2829 3814 +17652 4 2 28 1 2598 3915 2808 3916 +17653 4 2 28 1 2653 2689 2684 3911 +17654 4 2 28 1 2938 3065 2569 3876 +17655 4 2 28 1 2735 2908 2623 3009 +17656 4 2 28 1 1566 1629 1620 3838 +17657 4 2 28 1 560 701 3699 3700 +17658 4 2 28 1 3090 3366 2686 3879 +17659 4 2 28 1 2062 2904 2065 3772 +17660 4 2 28 1 2191 2213 1839 3143 +17661 4 2 28 1 2705 3547 3280 3724 +17662 4 2 28 1 190 429 2097 1812 +17663 4 2 28 1 3077 3474 713 3573 +17664 4 2 28 1 467 460 288 3923 +17665 4 2 28 1 3001 3359 582 3732 +17666 4 2 28 1 2867 2992 2662 3563 +17667 4 2 28 1 2638 2813 3107 3158 +17668 4 2 28 1 704 3622 568 3872 +17669 4 2 28 1 2969 3893 1152 3927 +17670 4 2 28 1 1531 1635 1351 3423 +17671 4 2 28 1 2842 3105 3723 3848 +17672 4 2 28 1 2957 3446 3445 3899 +17673 4 2 28 1 439 3074 2964 3789 +17674 4 2 28 1 1717 1799 1658 3417 +17675 4 2 28 1 2598 3329 3396 3493 +17676 4 2 28 1 1265 956 1218 3864 +17677 4 2 28 1 2089 2091 1813 3332 +17678 4 2 28 1 852 1184 1124 3875 +17679 4 2 28 1 1958 1961 1923 3652 +17680 4 2 28 1 2365 2364 2362 3865 +17681 4 2 28 1 2812 3800 3479 3905 +17682 4 2 28 1 2807 3013 2770 3432 +17683 4 2 28 1 1310 233 8 1664 +17684 4 2 28 1 1719 3569 2927 3752 +17685 4 2 28 1 1686 1599 1792 3754 +17686 4 2 28 1 1114 1670 1309 3277 +17687 4 2 28 1 122 806 1154 1330 +17688 4 2 28 1 2400 2337 2414 3383 +17689 4 2 28 1 736 3201 3550 3625 +17690 4 2 28 1 2084 1867 2238 3680 +17691 4 2 28 1 963 962 909 3902 +17692 4 2 28 1 850 851 849 3887 +17693 4 2 28 1 505 407 3313 3728 +17694 4 2 28 1 1862 539 267 2106 +17695 4 2 28 1 569 3516 3148 3553 +17696 4 2 28 1 1993 1959 1964 3688 +17697 4 2 28 1 3339 3508 2716 3669 +17698 4 2 28 1 480 491 339 3794 +17699 4 2 28 1 2680 3270 2783 3678 +17700 4 2 28 1 383 375 3605 3879 +17701 4 2 28 1 2722 3705 3039 3856 +17702 4 2 28 1 2825 3294 3276 3664 +17703 4 2 28 1 2129 2959 1963 3819 +17704 4 2 28 1 2061 2065 2904 3772 +17705 4 2 28 1 1467 1620 1707 3838 +17706 4 2 28 1 2328 20 2336 1770 +17707 4 2 28 1 1814 292 197 511 +17708 4 2 28 1 316 315 314 3789 +17709 4 2 28 1 3201 3467 2755 3625 +17710 4 2 28 1 2204 1818 2188 3273 +17711 4 2 28 1 3017 3314 2788 3558 +17712 4 2 28 1 2989 3234 2688 3258 +17713 4 2 28 1 1892 3140 2164 3640 +17714 4 2 28 1 479 490 399 3090 +17715 4 2 28 1 2788 3558 3314 3612 +17716 4 2 28 1 2733 2606 2986 2998 +17717 4 2 28 1 508 478 384 3344 +17718 4 2 28 1 2766 3181 3012 3473 +17719 4 2 28 1 1552 1548 1549 3437 +17720 4 2 28 1 720 3148 3365 3885 +17721 4 2 28 1 974 3380 2946 3664 +17722 4 2 28 1 3022 3287 2658 3689 +17723 4 2 28 1 360 3626 358 3679 +17724 4 2 28 1 447 326 335 3805 +17725 4 2 28 1 344 350 337 3796 +17726 4 2 28 1 778 251 777 1768 +17727 4 2 28 1 1349 49 1838 1355 +17728 4 2 28 1 2940 2985 442 3056 +17729 4 2 28 1 2631 3360 2815 3400 +17730 4 2 28 1 2250 2071 2251 3168 +17731 4 2 28 1 1617 1785 1512 3231 +17732 4 2 28 1 994 939 925 3886 +17733 4 2 28 1 562 563 3565 3700 +17734 4 2 28 1 532 664 246 1638 +17735 4 2 28 1 560 3699 559 3700 +17736 4 2 28 1 604 624 599 3781 +17737 4 2 28 1 865 3695 879 3907 +17738 4 2 28 1 1667 1466 1728 3150 +17739 4 2 28 1 3246 3586 2983 3778 +17740 4 2 28 1 3078 3594 2802 3910 +17741 4 2 28 1 766 216 9 1818 +17742 4 2 28 1 1911 2030 1952 3237 +17743 4 2 28 1 2395 2403 2380 3914 +17744 4 2 28 1 809 215 214 3843 +17745 4 2 28 1 2524 2499 2527 3586 +17746 4 2 28 1 1054 1283 1078 3729 +17747 4 2 28 1 2572 3378 2618 3676 +17748 4 2 28 1 1477 1538 1456 3812 +17749 4 2 28 1 2535 2165 2256 3370 +17750 4 2 28 1 1045 3245 1085 3811 +17751 4 2 28 1 1062 1021 1064 3787 +17752 4 2 28 1 2078 2122 1992 3210 +17753 4 2 28 1 1500 1712 1784 3630 +17754 4 2 28 1 851 3038 3595 3887 +17755 4 2 28 1 2687 3796 3217 3917 +17756 4 2 28 1 826 827 825 3927 +17757 4 2 28 1 1991 2121 1929 2687 +17758 4 2 28 1 499 398 390 3109 +17759 4 2 28 1 2798 2887 2748 3381 +17760 4 2 28 1 2052 3354 2169 3935 +17761 4 2 28 1 2699 3201 3001 3389 +17762 4 2 28 1 461 424 460 3923 +17763 4 2 28 1 2803 2844 3274 3704 +17764 4 2 28 1 383 385 375 3879 +17765 4 2 28 1 300 3141 465 3867 +17766 4 2 28 1 2675 2906 2801 3421 +17767 4 2 28 1 747 593 753 3930 +17768 4 2 28 1 481 413 524 3929 +17769 4 2 28 1 1874 2179 1871 3828 +17770 4 2 28 1 394 393 298 3730 +17771 4 2 28 1 2701 3338 2594 3461 +17772 4 2 28 1 833 832 834 3343 +17773 4 2 28 1 2423 2460 2484 3040 +17774 4 2 28 1 3699 3700 2774 3701 +17775 4 2 28 1 2618 3379 3552 3603 +17776 4 2 28 1 2442 2444 2441 3574 +17777 4 2 28 1 463 2964 3765 3789 +17778 4 2 28 1 1753 1671 1403 3932 +17779 4 2 28 1 315 3102 310 3734 +17780 4 2 28 1 2686 2572 2862 3676 +17781 4 2 28 1 2287 2032 2225 3457 +17782 4 2 28 1 165 280 1641 517 +17783 4 2 28 1 2855 2973 2704 3452 +17784 4 2 28 1 2117 2197 2109 3356 +17785 4 2 28 1 2020 2022 1961 3759 +17786 4 2 28 1 56 2067 1583 1340 +17787 4 2 28 1 2346 26 2326 2334 +17788 4 2 28 1 2688 3234 2836 3258 +17789 4 2 28 1 2732 3070 3145 3750 +17790 4 2 28 1 2776 3408 2223 3433 +17791 4 2 28 1 277 2107 2987 3217 +17792 4 2 28 1 2414 2337 2390 3383 +17793 4 2 28 1 1071 1078 786 3194 +17794 4 2 28 1 2738 3322 3110 3892 +17795 4 2 28 1 3145 3566 1219 3821 +17796 4 2 28 1 209 3548 3128 3556 +17797 4 2 28 1 2735 2906 3249 3839 +17798 4 2 28 1 485 346 353 3917 +17799 4 2 28 1 1872 2280 1881 3110 +17800 4 2 28 1 1235 1226 1002 3921 +17801 4 2 28 1 1354 291 162 512 +17802 4 2 28 1 3010 3338 2657 3578 +17803 4 2 28 1 502 359 451 3626 +17804 4 2 28 1 405 275 486 3398 +17805 4 2 28 1 986 816 1104 3922 +17806 4 2 28 1 962 980 908 3902 +17807 4 2 28 1 2866 2923 2731 3502 +17808 4 2 28 1 595 606 3550 3741 +17809 4 2 28 1 547 772 2130 3388 +17810 4 2 28 1 809 3277 215 3843 +17811 4 2 28 1 310 3102 309 3734 +17812 4 2 28 1 2817 3397 2929 3411 +17813 4 2 28 1 334 336 335 3805 +17814 4 2 28 1 1838 1845 1846 3601 +17815 4 2 28 1 2623 2908 2907 3008 +17816 4 2 28 1 656 637 747 3839 +17817 4 2 28 1 3239 3301 2582 3665 +17818 4 2 28 1 1557 3503 1794 3779 +17819 4 2 28 1 1851 2058 1853 3525 +17820 4 2 28 1 2587 3358 2737 3593 +17821 4 2 28 1 2868 3369 2793 3431 +17822 4 2 28 1 3521 3522 2603 3532 +17823 4 2 28 1 1013 1268 3535 3808 +17824 4 2 28 1 412 511 292 3101 +17825 4 2 28 1 1356 1766 1355 3388 +17826 4 2 28 1 578 565 572 3385 +17827 4 2 28 1 815 816 817 3432 +17828 4 2 28 1 1820 138 2158 1292 +17829 4 2 28 1 2566 2661 2647 3362 +17830 4 2 28 1 2575 3483 3484 3616 +17831 4 2 28 1 2150 1983 2205 3878 +17832 4 2 28 1 711 3148 720 3638 +17833 4 2 28 1 1907 2033 2185 3324 +17834 4 2 28 1 1898 1887 2207 3712 +17835 4 2 28 1 636 3475 3044 3677 +17836 4 2 28 1 2106 2079 2124 3118 +17837 4 2 28 1 2595 2905 2873 2920 +17838 4 2 28 1 1839 39 2191 1350 +17839 4 2 28 1 2503 2502 2493 3778 +17840 4 2 28 1 2207 1887 2190 3712 +17841 4 2 28 1 370 354 464 3765 +17842 4 2 28 1 149 2004 2146 1151 +17843 4 2 28 1 3062 3633 3442 3730 +17844 4 2 28 1 3316 2821 3372 3886 +17845 4 2 28 1 1926 1943 2236 3206 +17846 4 2 28 1 2921 2782 3517 3580 +17847 4 2 28 1 814 3121 1094 3922 +17848 4 2 28 1 1313 1275 790 3139 +17849 4 2 28 1 469 3693 3129 3794 +17850 4 2 28 1 1359 1360 1358 3157 +17851 4 2 28 1 2279 1816 2146 3194 +17852 4 2 28 1 2872 3411 2855 3921 +17853 4 2 28 1 2778 2640 2981 3394 +17854 4 2 28 1 2576 3211 3515 3713 +17855 4 2 28 1 2370 2390 2396 3125 +17856 4 2 28 1 1143 1052 1193 3753 +17857 4 2 28 1 1503 1750 1679 3065 +17858 4 2 28 1 321 3765 2940 3789 +17859 4 2 28 1 2873 553 3614 3930 +17860 4 2 28 1 3281 3838 2705 3883 +17861 4 2 28 1 3454 3710 2816 3866 +17862 4 2 28 1 1179 1220 1203 3925 +17863 4 2 28 1 1557 1741 1733 3779 +17864 4 2 28 1 1138 892 882 3447 +17865 4 2 28 1 2497 64 2538 2345 +17866 4 2 28 1 1611 1706 1577 3672 +17867 4 2 28 1 1684 1744 1489 3824 +17868 4 2 28 1 1086 1088 1087 3775 +17869 4 2 28 1 3316 3459 2821 3886 +17870 4 2 28 1 1585 1761 1338 3549 +17871 4 2 28 1 1263 129 1658 3417 +17872 4 2 28 1 478 3344 2918 3366 +17873 4 2 28 1 206 2932 3274 3670 +17874 4 2 28 1 2616 2736 3062 3442 +17875 4 2 28 1 2689 2820 2786 3102 +17876 4 2 28 1 2773 3344 3120 3620 +17877 4 2 28 1 3255 3591 1576 3593 +17878 4 2 28 1 2655 2723 2577 3585 +17879 4 2 28 1 1749 1678 1515 2999 +17880 4 2 28 1 2575 3204 3483 3616 +17881 4 2 28 1 2732 2975 2706 3400 +17882 4 2 28 1 2176 1882 1891 3267 +17883 4 2 28 1 2653 2986 3615 3868 +17884 4 2 28 1 516 3088 435 3697 +17885 4 2 28 1 2538 1769 63 2530 +17886 4 2 28 1 2565 2653 2606 2837 +17887 4 2 28 1 2970 2636 3240 3459 +17888 4 2 28 1 1985 3802 2024 3803 +17889 4 2 28 1 2266 2015 2229 3115 +17890 4 2 28 1 2176 1909 2195 3267 +17891 4 2 28 1 920 965 1159 3372 +17892 4 2 28 1 33 2335 2118 2298 +17893 4 2 28 1 3013 2745 3256 3853 +17894 4 2 28 1 395 351 373 3693 +17895 4 2 28 1 816 3328 3432 3922 +17896 4 2 28 1 2616 3062 2779 3633 +17897 4 2 28 1 293 525 467 3561 +17898 4 2 28 1 2677 2765 3092 3321 +17899 4 2 28 1 1987 10 198 1311 +17900 4 2 28 1 2650 3054 2571 3497 +17901 4 2 28 1 2514 2512 2497 3797 +17902 4 2 28 1 481 524 3332 3929 +17903 4 2 28 1 2890 3448 3377 3523 +17904 4 2 28 1 766 2079 545 3273 +17905 4 2 28 1 3405 3457 3029 3926 +17906 4 2 28 1 69 2347 2528 3644 +17907 4 2 28 1 2704 3070 2855 3452 +17908 4 2 28 1 1851 1852 3426 3525 +17909 4 2 28 1 498 3313 407 3728 +17910 4 2 28 1 1088 3335 1087 3775 +17911 4 2 28 1 705 3365 3148 3516 +17912 4 2 28 1 604 592 3389 3781 +17913 4 2 28 1 2754 3550 3201 3625 +17914 4 2 28 1 1652 1531 1351 3423 +17915 4 2 28 1 1942 2233 3413 3827 +17916 4 2 28 1 2639 2675 2933 3683 +17917 4 2 28 1 2568 3157 2823 3269 +17918 4 2 28 1 1712 1603 3630 3737 +17919 4 2 28 1 2399 2413 2369 3482 +17920 4 2 28 1 1036 3320 3184 3777 +17921 4 2 28 1 3245 3410 2919 3915 +17922 4 2 28 1 2731 3146 3342 3502 +17923 4 2 28 1 250 777 1683 1345 +17924 4 2 28 1 1786 1774 1636 3243 +17925 4 2 28 1 2993 3452 3019 3791 +17926 4 2 28 1 2896 2947 3741 3836 +17927 4 2 28 1 1527 1526 1528 3384 +17928 4 2 28 1 2929 3479 3397 3810 +17929 4 2 28 1 845 3196 847 3806 +17930 4 2 28 1 2974 3629 3276 3870 +17931 4 2 28 1 2702 2757 3191 3638 +17932 4 2 28 1 2362 2361 2388 3311 +17933 4 2 28 1 491 480 423 3897 +17934 4 2 28 1 743 669 670 3785 +17935 4 2 28 1 751 3498 628 3638 +17936 4 2 28 1 2591 3472 3257 3911 +17937 4 2 28 1 2633 2862 2572 3585 +17938 4 2 28 1 448 3693 469 3794 +17939 4 2 28 1 1712 1501 1536 3737 +17940 4 2 28 1 981 954 961 3660 +17941 4 2 28 1 1263 1293 129 3417 +17942 4 2 28 1 2545 3363 3770 3892 +17943 4 2 28 1 751 601 3498 3578 +17944 4 2 28 1 1155 1015 1061 3809 +17945 4 2 28 1 3073 3699 701 3700 +17946 4 2 28 1 447 351 3693 3804 +17947 4 2 28 1 2815 3360 2643 3400 +17948 4 2 28 1 2723 2932 2729 3307 +17949 4 2 28 1 1756 1570 15 2296 +17950 4 2 28 1 2650 2934 3047 3492 +17951 4 2 28 1 2205 2267 1989 3180 +17952 4 2 28 1 260 2100 671 3261 +17953 4 2 28 1 3229 3325 2821 3862 +17954 4 2 28 1 1332 1821 2072 3317 +17955 4 2 28 1 3090 3152 490 3500 +17956 4 2 28 1 375 3867 2922 3879 +17957 4 2 28 1 2371 2392 2363 3216 +17958 4 2 28 1 2888 3158 3107 3738 +17959 4 2 28 1 841 840 839 3369 +17960 4 2 28 1 1173 1175 1171 3374 +17961 4 2 28 1 1937 2064 1965 3642 +17962 4 2 28 1 491 333 3620 3897 +17963 4 2 28 1 2559 3301 3239 3665 +17964 4 2 28 1 2817 2929 2719 3329 +17965 4 2 28 1 2709 3487 3302 3675 +17966 4 2 28 1 2622 2826 2803 3274 +17967 4 2 28 1 2429 2431 2430 3590 +17968 4 2 28 1 739 775 665 3118 +17969 4 2 28 1 1987 2172 2262 2931 +17970 4 2 28 1 2989 3506 2815 3816 +17971 4 2 28 1 3025 3109 2737 3290 +17972 4 2 28 1 2217 1925 2270 3560 +17973 4 2 28 1 2702 2714 2625 3744 +17974 4 2 28 1 2681 2778 2587 3606 +17975 4 2 28 1 1650 1710 1643 3298 +17976 4 2 28 1 2827 2821 3325 3372 +17977 4 2 28 1 747 3089 3614 3634 +17978 4 2 28 1 1501 1677 1536 3247 +17979 4 2 28 1 2101 2057 2102 3338 +17980 4 2 28 1 2555 3358 3192 3606 +17981 4 2 28 1 2661 3605 3085 3867 +17982 4 2 28 1 1308 9 216 2152 +17983 4 2 28 1 3050 3203 2644 3784 +17984 4 2 28 1 1484 1639 1483 3571 +17985 4 2 28 1 3013 3256 2770 3840 +17986 4 2 28 1 1274 1016 1273 3284 +17987 4 2 28 1 2644 2789 3666 3782 +17988 4 2 28 1 1557 3779 1733 3780 +17989 4 2 28 1 1443 1757 1765 3691 +17990 4 2 28 1 377 389 367 3442 +17991 4 2 28 1 2860 3168 2646 3368 +17992 4 2 28 1 2702 3148 2757 3638 +17993 4 2 28 1 2646 2071 3168 3802 +17994 4 2 28 1 3025 3591 2646 3593 +17995 4 2 28 1 1704 2165 2535 3370 +17996 4 2 28 1 1824 2206 2140 3393 +17997 4 2 28 1 823 3124 825 3810 +17998 4 2 28 1 1352 58 2498 2535 +17999 4 2 28 1 1013 1267 1268 3808 +18000 4 2 28 1 471 464 321 3765 +18001 4 2 28 1 496 474 342 3844 +18002 4 2 28 1 1818 2152 2188 3223 +18003 4 2 28 1 2647 3090 2922 3500 +18004 4 2 28 1 1747 1762 1340 3200 +18005 4 2 28 1 509 293 179 1325 +18006 4 2 28 1 1497 1496 1465 3238 +18007 4 2 28 1 2586 3399 3662 3783 +18008 4 2 28 1 2759 2880 2729 3353 +18009 4 2 28 1 2800 2921 2688 3258 +18010 4 2 28 1 682 1810 257 2117 +18011 4 2 28 1 2556 3420 3786 3903 +18012 4 2 28 1 1035 995 3229 3862 +18013 4 2 28 1 2705 3838 3281 3898 +18014 4 2 28 1 2877 2878 2620 3439 +18015 4 2 28 1 1232 225 226 3738 +18016 4 2 28 1 652 3719 662 3752 +18017 4 2 28 1 1165 3294 3276 3870 +18018 4 2 28 1 2981 3270 3679 3764 +18019 4 2 28 1 2993 3240 2636 3459 +18020 4 2 28 1 159 1299 807 2135 +18021 4 2 28 1 2659 2897 2884 2947 +18022 4 2 28 1 818 3432 3328 3840 +18023 4 2 28 1 2846 3523 3448 3851 +18024 4 2 28 1 583 698 581 3359 +18025 4 2 28 1 1446 3378 1507 3379 +18026 4 2 28 1 2554 3536 3183 3724 +18027 4 2 28 1 561 3700 559 3701 +18028 4 2 28 1 3397 3411 2817 3894 +18029 4 2 28 1 499 486 275 3398 +18030 4 2 28 1 2698 3544 3140 3848 +18031 4 2 28 1 2648 3140 3357 3640 +18032 4 2 28 1 56 2067 1340 1829 +18033 4 2 28 1 2773 3034 2655 3585 +18034 4 2 28 1 1228 827 829 3397 +18035 4 2 28 1 2972 846 3776 3806 +18036 4 2 28 1 280 166 1334 398 +18037 4 2 28 1 2186 2125 2263 3847 +18038 4 2 28 1 662 3719 3619 3752 +18039 4 2 28 1 2912 3089 723 3634 +18040 4 2 28 1 2941 3657 3230 3860 +18041 4 2 28 1 2916 3535 3026 3548 +18042 4 2 28 1 3296 3473 2887 3925 +18043 4 2 28 1 888 889 3234 3863 +18044 4 2 28 1 2832 2593 3263 3823 +18045 4 2 28 1 2793 3431 3369 3538 +18046 4 2 28 1 2969 3410 3245 3915 +18047 4 2 28 1 2437 2434 2467 3884 +18048 4 2 28 1 561 563 3700 3701 +18049 4 2 28 1 2508 2521 2515 3703 +18050 4 2 28 1 393 3062 298 3730 +18051 4 2 28 1 1470 1471 1489 3824 +18052 4 2 28 1 1570 1554 1603 3164 +18053 4 2 28 1 501 423 424 3897 +18054 4 2 28 1 218 543 3146 3756 +18055 4 2 28 1 846 2972 3595 3806 +18056 4 2 28 1 2872 2817 3411 3894 +18057 4 2 28 1 1953 2238 2255 3401 +18058 4 2 28 1 441 494 3647 3796 +18059 4 2 28 1 2580 3486 3264 3891 +18060 4 2 28 1 2637 3410 2969 3915 +18061 4 2 28 1 1819 3339 2281 3669 +18062 4 2 28 1 2774 3699 3073 3700 +18063 4 2 28 1 2862 2686 3344 3605 +18064 4 2 28 1 2607 2955 3438 3846 +18065 4 2 28 1 875 3209 1211 3826 +18066 4 2 28 1 2510 2512 3797 3909 +18067 4 2 28 1 743 670 3677 3785 +18068 4 2 28 1 1916 2058 2057 3338 +18069 4 2 28 1 3111 3702 2707 3703 +18070 4 2 28 1 2676 3064 3007 3388 +18071 4 2 28 1 1225 1085 3245 3893 +18072 4 2 28 1 1985 3142 3802 3803 +18073 4 2 28 1 1753 1403 3788 3932 +18074 4 2 28 1 637 3634 747 3839 +18075 4 2 28 1 2228 3226 2004 3669 +18076 4 2 28 1 1944 2201 2036 3413 +18077 4 2 28 1 1548 1458 1421 3192 +18078 4 2 28 1 1863 1865 1864 3404 +18079 4 2 28 1 2970 3459 1223 3862 +18080 4 2 28 1 2921 3517 2989 3762 +18081 4 2 28 1 934 3240 932 3834 +18082 4 2 28 1 1127 1023 1126 3505 +18083 4 2 28 1 405 486 3243 3398 +18084 4 2 28 1 1080 1031 1030 3784 +18085 4 2 28 1 1695 1535 3573 3686 +18086 4 2 28 1 643 746 716 3608 +18087 4 2 28 1 308 3394 3074 3588 +18088 4 2 28 1 1697 1801 1357 3746 +18089 4 2 28 1 2432 2467 2434 3575 +18090 4 2 28 1 2746 2638 2888 3158 +18091 4 2 28 1 2613 3705 2722 3856 +18092 4 2 28 1 3140 3544 2648 3848 +18093 4 2 28 1 1604 177 285 3707 +18094 4 2 28 1 2067 2165 1583 3370 +18095 4 2 28 1 277 2987 431 3217 +18096 4 2 28 1 2725 2592 3652 3759 +18097 4 2 28 1 626 3509 3044 3589 +18098 4 2 28 1 1202 3563 3890 3907 +18099 4 2 28 1 2633 2689 2952 3472 +18100 4 2 28 1 2854 3070 2704 3452 +18101 4 2 28 1 842 1129 1237 3431 +18102 4 2 28 1 1617 1727 1498 3231 +18103 4 2 28 1 3009 3089 2671 3634 +18104 4 2 28 1 2813 3158 3016 3643 +18105 4 2 28 1 3248 3663 1011 3853 +18106 4 2 28 1 2680 2681 2583 2783 +18107 4 2 28 1 2555 3407 2850 3429 +18108 4 2 28 1 2254 523 1772 3621 +18109 4 2 28 1 1699 1464 1619 3280 +18110 4 2 28 1 2809 3484 3483 3616 +18111 4 2 28 1 362 3617 363 3679 +18112 4 2 28 1 1436 3812 2926 3857 +18113 4 2 28 1 481 416 418 3332 +18114 4 2 28 1 2964 2981 472 3764 +18115 4 2 28 1 1309 1670 1499 3277 +18116 4 2 28 1 2681 2778 2981 3679 +18117 4 2 28 1 501 424 3120 3897 +18118 4 2 28 1 2728 3820 3446 3846 +18119 4 2 28 1 2789 3114 3050 3775 +18120 4 2 28 1 1466 1721 1728 3150 +18121 4 2 28 1 3272 3429 2665 3767 +18122 4 2 28 1 997 3145 1219 3821 +18123 4 2 28 1 311 3568 313 3913 +18124 4 2 28 1 836 838 1217 3538 +18125 4 2 28 1 2881 3014 2828 3807 +18126 4 2 28 1 2924 2664 3677 3785 +18127 4 2 28 1 2927 662 3619 3752 +18128 4 2 28 1 2845 3177 3039 3645 +18129 4 2 28 1 2965 3453 3119 3611 +18130 4 2 28 1 339 447 448 3794 +18131 4 2 28 1 422 3034 3504 3558 +18132 4 2 28 1 2277 2069 1829 3200 +18133 4 2 28 1 621 3336 617 3836 +18134 4 2 28 1 1025 1024 964 3434 +18135 4 2 28 1 3011 3524 2677 3859 +18136 4 2 28 1 1492 3362 1493 3387 +18137 4 2 28 1 2568 2823 3157 3495 +18138 4 2 28 1 2748 3381 2811 3928 +18139 4 2 28 1 620 621 617 3836 +18140 4 2 28 1 1823 426 184 3433 +18141 4 2 28 1 1840 76 2500 2537 +18142 4 2 28 1 1098 1105 1101 3934 +18143 4 2 28 1 1629 1707 1620 3838 +18144 4 2 28 1 1937 1934 1971 3272 +18145 4 2 28 1 1112 1113 809 3843 +18146 4 2 28 1 3145 3431 2793 3538 +18147 4 2 28 1 2825 3664 3276 3902 +18148 4 2 28 1 905 2974 3629 3777 +18149 4 2 28 1 288 3558 3017 3923 +18150 4 2 28 1 2790 3564 3188 3855 +18151 4 2 28 1 2621 2578 3405 3926 +18152 4 2 28 1 2639 2933 2896 3441 +18153 4 2 28 1 1054 979 3305 3863 +18154 4 2 28 1 2811 2972 2649 3318 +18155 4 2 28 1 2636 2799 2970 3240 +18156 4 2 28 1 885 3234 889 3816 +18157 4 2 28 1 1188 974 990 3380 +18158 4 2 28 1 2569 3786 2938 3876 +18159 4 2 28 1 2724 2833 3374 3661 +18160 4 2 28 1 2729 2759 2584 2880 +18161 4 2 28 1 362 361 443 3679 +18162 4 2 28 1 747 3614 593 3930 +18163 4 2 28 1 1095 1096 1094 3298 +18164 4 2 28 1 2603 3532 3430 3744 +18165 4 2 28 1 1623 1516 3486 3891 +18166 4 2 28 1 703 3498 3553 3638 +18167 4 2 28 1 736 3625 3550 3741 +18168 4 2 28 1 2988 1028 3696 3795 +18169 4 2 28 1 3416 3664 2825 3902 +18170 4 2 28 1 986 1104 1105 3934 +18171 4 2 28 1 2671 2873 3089 3614 +18172 4 2 28 1 2787 3291 2937 3628 +18173 4 2 28 1 303 304 3588 3639 +18174 4 2 28 1 2778 2779 2640 3394 +18175 4 2 28 1 599 3608 3359 3781 +18176 4 2 28 1 2677 3524 3092 3859 +18177 4 2 28 1 2997 3072 2613 3878 +18178 4 2 28 1 1384 1383 1382 3534 +18179 4 2 28 1 1432 1703 1739 3162 +18180 4 2 28 1 806 1087 1088 3335 +18181 4 2 28 1 950 3675 3014 3807 +18182 4 2 28 1 3385 3516 706 3565 +18183 4 2 28 1 580 598 705 3365 +18184 4 2 28 1 15 2333 1756 2296 +18185 4 2 28 1 299 3141 3062 3588 +18186 4 2 28 1 3609 3718 3068 3835 +18187 4 2 28 1 2616 2737 2736 3442 +18188 4 2 28 1 2099 2253 3337 3828 +18189 4 2 28 1 2060 3255 2081 3591 +18190 4 2 28 1 2845 3466 3177 3645 +18191 4 2 28 1 1839 1350 3143 3793 +18192 4 2 28 1 472 2981 2964 3394 +18193 4 2 28 1 1525 3577 1694 3900 +18194 4 2 28 1 434 3047 3088 3697 +18195 4 2 28 1 1962 1921 1952 3293 +18196 4 2 28 1 1235 1239 835 3411 +18197 4 2 28 1 3205 3413 3061 3712 +18198 4 2 28 1 636 761 743 3785 +18199 4 2 28 1 2778 3290 2737 3617 +18200 4 2 28 1 637 630 3634 3839 +18201 4 2 28 1 2710 3279 2822 3932 +18202 4 2 28 1 2896 2933 2639 3336 +18203 4 2 28 1 1768 2249 48 1844 +18204 4 2 28 1 432 177 1616 3707 +18205 4 2 28 1 2812 3048 2745 3248 +18206 4 2 28 1 2847 2650 3291 3492 +18207 4 2 28 1 792 1192 1068 3198 +18208 4 2 28 1 370 472 446 3764 +18209 4 2 28 1 1828 2060 1339 3255 +18210 4 2 28 1 519 3433 507 3924 +18211 4 2 28 1 2233 2042 2207 3827 +18212 4 2 28 1 1438 1439 1424 3904 +18213 4 2 28 1 2799 3240 3144 3834 +18214 4 2 28 1 2544 3199 3190 3758 +18215 4 2 28 1 569 3516 3553 3622 +18216 4 2 28 1 3128 3548 3026 3556 +18217 4 2 28 1 2066 1855 1916 3462 +18218 4 2 28 1 2424 2483 2536 3644 +18219 4 2 28 1 358 3678 356 3764 +18220 4 2 28 1 2009 2005 2008 3340 +18221 4 2 28 1 2164 1978 1980 3640 +18222 4 2 28 1 2079 2204 2124 3273 +18223 4 2 28 1 505 3313 2885 3728 +18224 4 2 28 1 1845 1844 2130 3388 +18225 4 2 28 1 1980 2070 2211 3640 +18226 4 2 28 1 3144 3792 2818 3795 +18227 4 2 28 1 330 3615 324 3745 +18228 4 2 28 1 2727 2649 3038 3543 +18229 4 2 28 1 1792 1800 1401 3754 +18230 4 2 28 1 912 3321 910 3850 +18231 4 2 28 1 2653 2837 2684 3099 +18232 4 2 28 1 2904 3142 2555 3407 +18233 4 2 28 1 1754 1638 1571 3076 +18234 4 2 28 1 2695 2946 3380 3664 +18235 4 2 28 1 2295 21 2348 2336 +18236 4 2 28 1 2682 3463 3277 3843 +18237 4 2 28 1 2565 3560 2606 3896 +18238 4 2 28 1 2026 2001 1983 3878 +18239 4 2 28 1 2997 3856 2001 3878 +18240 4 2 28 1 3088 3697 3131 3844 +18241 4 2 28 1 1317 1285 1166 3393 +18242 4 2 28 1 1348 1575 1837 3591 +18243 4 2 28 1 1361 1366 1363 3495 +18244 4 2 28 1 630 654 621 3421 +18245 4 2 28 1 1121 1043 1044 3350 +18246 4 2 28 1 3011 3147 3014 3469 +18247 4 2 28 1 534 771 666 3249 +18248 4 2 28 1 2577 2656 3239 3460 +18249 4 2 28 1 525 3561 285 3707 +18250 4 2 28 1 2773 2862 2572 3676 +18251 4 2 28 1 1060 1111 1078 3729 +18252 4 2 28 1 1488 1656 1469 3268 +18253 4 2 28 1 1903 1919 1914 3742 +18254 4 2 28 1 450 3102 2952 3805 +18255 4 2 28 1 2669 2595 2905 3801 +18256 4 2 28 1 2662 2992 2867 3822 +18257 4 2 28 1 704 644 3073 3872 +18258 4 2 28 1 2152 2269 2188 3223 +18259 4 2 28 1 866 1230 1210 3410 +18260 4 2 28 1 2060 1837 1575 3591 +18261 4 2 28 1 819 821 3256 3840 +18262 4 2 28 1 447 3693 448 3794 +18263 4 2 28 1 3283 3349 2830 3753 +18264 4 2 28 1 3239 3552 2577 3722 +18265 4 2 28 1 2842 3723 3649 3848 +18266 4 2 28 1 389 3398 3109 3442 +18267 4 2 28 1 659 727 735 3499 +18268 4 2 28 1 1716 1690 1665 3176 +18269 4 2 28 1 2616 2778 3442 3633 +18270 4 2 28 1 363 3626 360 3679 +18271 4 2 28 1 1011 1254 3248 3853 +18272 4 2 28 1 1626 3090 1627 3152 +18273 4 2 28 1 1995 1994 1964 3688 +18274 4 2 28 1 595 605 606 3741 +18275 4 2 28 1 2937 3291 2650 3492 +18276 4 2 28 1 3325 3862 994 3886 +18277 4 2 28 1 1780 1492 1493 3387 +18278 4 2 28 1 2606 3293 2571 3896 +18279 4 2 28 1 2743 3348 3254 3833 +18280 4 2 28 1 3494 3512 2725 3759 +18281 4 2 28 1 2664 2894 3044 3785 +18282 4 2 28 1 356 3678 354 3764 +18283 4 2 28 1 2104 1993 1994 3688 +18284 4 2 28 1 1839 2093 1581 3793 +18285 4 2 28 1 2854 3459 3316 3880 +18286 4 2 28 1 1716 1665 1327 3176 +18287 4 2 28 1 1548 1791 1458 3192 +18288 4 2 28 1 2704 2854 3452 3874 +18289 4 2 28 1 3413 3712 3205 3827 +18290 4 2 28 1 2656 2723 3128 3460 +18291 4 2 28 1 3004 3347 2874 3690 +18292 4 2 28 1 2638 2570 3391 3683 +18293 4 2 28 1 2551 3242 3673 3799 +18294 4 2 28 1 1862 3118 2182 3747 +18295 4 2 28 1 2518 2517 2516 3545 +18296 4 2 28 1 2550 3098 3257 3579 +18297 4 2 28 1 2801 3421 3634 3836 +18298 4 2 28 1 1438 1423 1461 3327 +18299 4 2 28 1 1626 1627 1628 3152 +18300 4 2 28 1 2237 2075 2074 3549 +18301 4 2 28 1 3092 3524 1004 3859 +18302 4 2 28 1 340 3615 2986 3868 +18303 4 2 28 1 2686 3366 3344 3879 +18304 4 2 28 1 2872 3343 2817 3894 +18305 4 2 28 1 1931 2121 1990 3403 +18306 4 2 28 1 1844 1355 1768 3388 +18307 4 2 28 1 2107 2260 2087 2987 +18308 4 2 28 1 2952 3804 3307 3920 +18309 4 2 28 1 341 475 3615 3868 +18310 4 2 28 1 2303 2324 2330 3725 +18311 4 2 28 1 2765 3321 3629 3777 +18312 4 2 28 1 1921 3237 1952 3293 +18313 4 2 28 1 2694 3915 3219 3916 +18314 4 2 28 1 459 3131 3697 3844 +18315 4 2 28 1 3047 3492 2934 3697 +18316 4 2 28 1 2255 2129 3401 3631 +18317 4 2 28 1 1449 1372 1371 3478 +18318 4 2 28 1 2847 2672 2934 3599 +18319 4 2 28 1 2724 3184 2974 3661 +18320 4 2 28 1 1097 3328 986 3934 +18321 4 2 28 1 2764 3457 2959 3507 +18322 4 2 28 1 825 3810 3124 3927 +18323 4 2 28 1 2614 3597 3684 3798 +18324 4 2 28 1 2004 2228 2114 3226 +18325 4 2 28 1 1408 1741 1794 3779 +18326 4 2 28 1 2798 3038 2649 3543 +18327 4 2 28 1 2397 2410 2348 3692 +18328 4 2 28 1 779 3336 2896 3741 +18329 4 2 28 1 2557 3497 2966 3758 +18330 4 2 28 1 3794 3804 2768 3805 +18331 4 2 28 1 1856 1906 2272 3113 +18332 4 2 28 1 2992 3012 2662 3563 +18333 4 2 28 1 1055 782 1154 3436 +18334 4 2 28 1 1695 1763 1321 3573 +18335 4 2 28 1 3148 711 3553 3638 +18336 4 2 28 1 2568 3269 3426 3525 +18337 4 2 28 1 2801 2896 3336 3836 +18338 4 2 28 1 1757 3135 1632 3898 +18339 4 2 28 1 1930 1928 1929 3403 +18340 4 2 28 1 2181 1845 1834 3064 +18341 4 2 28 1 1566 3838 1620 3898 +18342 4 2 28 1 1186 3294 1174 3854 +18343 4 2 28 1 2932 2826 3274 3670 +18344 4 2 28 1 2828 3014 2709 3302 +18345 4 2 28 1 2148 2282 2010 3283 +18346 4 2 28 1 636 743 3677 3785 +18347 4 2 28 1 3276 3294 2833 3870 +18348 4 2 28 1 2653 2684 2963 3099 +18349 4 2 28 1 592 611 702 3389 +18350 4 2 28 1 2386 2350 2352 3496 +18351 4 2 28 1 277 429 1812 3217 +18352 4 2 28 1 498 407 503 3728 +18353 4 2 28 1 3144 3240 2818 3792 +18354 4 2 28 1 2591 2633 2689 2786 +18355 4 2 28 1 2916 3535 1120 3612 +18356 4 2 28 1 1737 1705 1473 3300 +18357 4 2 28 1 3221 3540 2747 3619 +18358 4 2 28 1 3007 3064 2676 3221 +18359 4 2 28 1 1970 2000 2019 3377 +18360 4 2 28 1 2873 3008 2697 3474 +18361 4 2 28 1 2798 2649 3318 3928 +18362 4 2 28 1 2133 2476 91 2486 +18363 4 2 28 1 109 1336 1724 2403 +18364 4 2 28 1 1612 1343 248 687 +18365 4 2 28 1 2530 1769 63 1351 +18366 4 2 28 1 2083 2024 3255 3803 +18367 4 2 28 1 1695 1748 1514 2924 +18368 4 2 28 1 2698 3527 3140 3528 +18369 4 2 28 1 2680 3678 2985 3728 +18370 4 2 28 1 818 3328 1097 3840 +18371 4 2 28 1 439 2964 3074 3394 +18372 4 2 28 1 1318 1058 1263 3417 +18373 4 2 28 1 2435 2450 2433 3766 +18374 4 2 28 1 293 1325 509 3561 +18375 4 2 28 1 2183 2187 2274 3527 +18376 4 2 28 1 2969 3124 2719 3927 +18377 4 2 28 1 1793 1581 1333 3793 +18378 4 2 28 1 1666 782 1455 3436 +18379 4 2 28 1 525 509 285 3561 +18380 4 2 28 1 2125 2169 3847 3935 +18381 4 2 28 1 1184 3776 3184 3875 +18382 4 2 28 1 1316 1294 784 3339 +18383 4 2 28 1 2471 94 2339 2402 +18384 4 2 28 1 3291 3628 2787 3656 +18385 4 2 28 1 2756 2658 3022 3287 +18386 4 2 28 1 335 336 347 3804 +18387 4 2 28 1 572 3385 2884 3732 +18388 4 2 28 1 2798 3038 2782 3296 +18389 4 2 28 1 1280 1281 1106 3309 +18390 4 2 28 1 613 615 3191 3885 +18391 4 2 28 1 1052 3508 2950 3753 +18392 4 2 28 1 2134 2001 2246 2997 +18393 4 2 28 1 2045 1947 2099 3933 +18394 4 2 28 1 571 3385 3565 3743 +18395 4 2 28 1 1324 1614 1613 2918 +18396 4 2 28 1 3328 3922 986 3934 +18397 4 2 28 1 2656 3026 2867 3556 +18398 4 2 28 1 378 355 357 3678 +18399 4 2 28 1 2574 2694 3219 3916 +18400 4 2 28 1 547 2130 252 2249 +18401 4 2 28 1 496 3647 2998 3844 +18402 4 2 28 1 2593 3263 3824 3876 +18403 4 2 28 1 3168 2776 3433 3924 +18404 4 2 28 1 2121 2687 2098 2885 +18405 4 2 28 1 1125 859 3320 3881 +18406 4 2 28 1 1165 3276 906 3870 +18407 4 2 28 1 2998 3332 2987 3647 +18408 4 2 28 1 2595 2671 2873 3801 +18409 4 2 28 1 2801 3634 2912 3836 +18410 4 2 28 1 2276 2192 35 2293 +18411 4 2 28 1 605 596 617 3836 +18412 4 2 28 1 656 3009 3839 3930 +18413 4 2 28 1 1430 1446 1507 3379 +18414 4 2 28 1 52 1585 1827 2074 +18415 4 2 28 1 2661 2922 3605 3867 +18416 4 2 28 1 2526 2505 2532 3581 +18417 4 2 28 1 2560 3396 3329 3493 +18418 4 2 28 1 2584 2689 2653 3911 +18419 4 2 28 1 2548 3156 3028 3903 +18420 4 2 28 1 1966 1952 1967 3646 +18421 4 2 28 1 2164 2180 1880 3140 +18422 4 2 28 1 2618 3017 2740 3603 +18423 4 2 28 1 2799 3435 3072 3834 +18424 4 2 28 1 367 3442 3290 3617 +18425 4 2 28 1 962 1023 980 3416 +18426 4 2 28 1 2113 2776 2223 3433 +18427 4 2 28 1 2123 46 1348 1649 +18428 4 2 28 1 1925 3293 2270 3560 +18429 4 2 28 1 605 779 638 3741 +18430 4 2 28 1 3005 3343 2730 3641 +18431 4 2 28 1 1384 1392 1383 3534 +18432 4 2 28 1 2090 2088 1991 2987 +18433 4 2 28 1 2646 2860 2587 3802 +18434 4 2 28 1 269 545 766 2079 +18435 4 2 28 1 2625 2884 2714 2895 +18436 4 2 28 1 1899 1918 2125 3275 +18437 4 2 28 1 928 3459 2993 3874 +18438 4 2 28 1 3011 3014 2635 3469 +18439 4 2 28 1 1814 2265 2268 3101 +18440 4 2 28 1 3001 3550 2884 3732 +18441 4 2 28 1 2699 2754 3001 3201 +18442 4 2 28 1 2248 2275 2025 3096 +18443 4 2 28 1 2773 3120 3344 3676 +18444 4 2 28 1 2653 3615 2986 3745 +18445 4 2 28 1 732 3490 689 3815 +18446 4 2 28 1 3277 3463 215 3843 +18447 4 2 28 1 775 539 742 3747 +18448 4 2 28 1 2148 3139 2232 3283 +18449 4 2 28 1 362 443 3617 3679 +18450 4 2 28 1 2844 3182 2937 3704 +18451 4 2 28 1 491 3620 3080 3897 +18452 4 2 28 1 2577 2723 2656 3460 +18453 4 2 28 1 2415 2468 2492 3714 +18454 4 2 28 1 2948 3085 2862 3913 +18455 4 2 28 1 922 925 3316 3886 +18456 4 2 28 1 1697 1357 3601 3746 +18457 4 2 28 1 2884 2947 2897 3743 +18458 4 2 28 1 3394 3588 506 3633 +18459 4 2 28 1 1131 1130 1108 3506 +18460 4 2 28 1 2772 3503 2865 3735 +18461 4 2 28 1 935 3452 1221 3874 +18462 4 2 28 1 417 496 343 3647 +18463 4 2 28 1 581 3359 2895 3732 +18464 4 2 28 1 2552 3461 3029 3926 +18465 4 2 28 1 1473 1685 1807 3300 +18466 4 2 28 1 1864 1861 1863 3404 +18467 4 2 28 1 1962 2240 2270 3293 +18468 4 2 28 1 762 680 617 3336 +18469 4 2 28 1 2247 2133 91 2486 +18470 4 2 28 1 2725 2592 3386 3652 +18471 4 2 28 1 304 3141 3588 3639 +18472 4 2 28 1 881 1196 1134 3487 +18473 4 2 28 1 1468 1448 1469 3749 +18474 4 2 28 1 2613 3039 3705 3856 +18475 4 2 28 1 542 732 689 3815 +18476 4 2 28 1 2211 1892 2164 3640 +18477 4 2 28 1 2210 2153 1999 2900 +18478 4 2 28 1 906 3276 909 3902 +18479 4 2 28 1 3062 3442 2736 3730 +18480 4 2 28 1 1995 3405 1994 3688 +18481 4 2 28 1 1156 3325 994 3886 +18482 4 2 28 1 2633 2768 2948 3080 +18483 4 2 28 1 2818 2636 2993 3240 +18484 4 2 28 1 922 3316 924 3880 +18485 4 2 28 1 476 490 296 3500 +18486 4 2 28 1 453 3085 311 3913 +18487 4 2 28 1 1724 2380 110 2403 +18488 4 2 28 1 1929 2687 2121 3403 +18489 4 2 28 1 593 3614 553 3930 +18490 4 2 28 1 338 3056 2985 3917 +18491 4 2 28 1 284 2112 184 3433 +18492 4 2 28 1 417 494 415 3647 +18493 4 2 28 1 2738 3892 3110 3906 +18494 4 2 28 1 2433 2432 2434 3575 +18495 4 2 28 1 1682 1743 1604 3707 +18496 4 2 28 1 2748 3381 2887 3695 +18497 4 2 28 1 2766 3012 2887 3473 +18498 4 2 28 1 2867 3284 2826 3556 +18499 4 2 28 1 2540 3444 2935 3852 +18500 4 2 28 1 3080 3620 328 3913 +18501 4 2 28 1 2647 3141 3062 3500 +18502 4 2 28 1 2719 3048 2929 3810 +18503 4 2 28 1 2440 2438 2439 3657 +18504 4 2 28 1 2705 3280 3547 3838 +18505 4 2 28 1 1124 3320 859 3875 +18506 4 2 28 1 2558 3522 3053 3888 +18507 4 2 28 1 664 662 538 3752 +18508 4 2 28 1 828 863 3376 3893 +18509 4 2 28 1 1772 291 1354 3621 +18510 4 2 28 1 2553 3645 2846 3851 +18511 4 2 28 1 525 467 3561 3923 +18512 4 2 28 1 637 655 630 3839 +18513 4 2 28 1 2718 3110 3322 3892 +18514 4 2 28 1 2079 766 1818 3273 +18515 4 2 28 1 1442 1434 1443 3691 +18516 4 2 28 1 1434 1433 1757 3691 +18517 4 2 28 1 928 926 1223 3459 +18518 4 2 28 1 1683 777 251 1768 +18519 4 2 28 1 3209 875 3648 3826 +18520 4 2 28 1 491 3080 3794 3897 +18521 4 2 28 1 2989 3762 877 3816 +18522 4 2 28 1 830 828 3376 3894 +18523 4 2 28 1 678 679 224 3441 +18524 4 2 28 1 2601 3618 3446 3820 +18525 4 2 28 1 525 461 467 3923 +18526 4 2 28 1 613 603 615 3885 +18527 4 2 28 1 2755 3441 2896 3625 +18528 4 2 28 1 1969 2284 2226 3451 +18529 4 2 28 1 340 3615 330 3745 +18530 4 2 28 1 2965 3611 3209 3826 +18531 4 2 28 1 1174 3854 3294 3870 +18532 4 2 28 1 2580 2944 3486 3891 +18533 4 2 28 1 2382 2475 2406 3598 +18534 4 2 28 1 2728 3446 3445 3846 +18535 4 2 28 1 564 3565 3516 3622 +18536 4 2 28 1 1354 163 1611 512 +18537 4 2 28 1 586 709 738 3475 +18538 4 2 28 1 1049 1148 1298 3667 +18539 4 2 28 1 2946 3505 2674 3667 +18540 4 2 28 1 853 3318 852 3875 +18541 4 2 28 1 1613 2918 1614 3366 +18542 4 2 28 1 2745 3248 3048 3853 +18543 4 2 28 1 1763 1633 1621 3077 +18544 4 2 28 1 2561 3832 3709 3919 +18545 4 2 28 1 1666 782 123 1455 +18546 4 2 28 1 2801 2947 2896 3836 +18547 4 2 28 1 351 373 3693 3804 +18548 4 2 28 1 1183 202 1182 3492 +18549 4 2 28 1 755 676 527 3726 +18550 4 2 28 1 1267 3130 3808 3864 +18551 4 2 28 1 955 954 953 3469 +18552 4 2 28 1 2132 2075 2224 3607 +18553 4 2 28 1 81 1841 2518 2535 +18554 4 2 28 1 2541 3507 3673 3799 +18555 4 2 28 1 2924 2999 2664 3785 +18556 4 2 28 1 1402 1396 1403 3788 +18557 4 2 28 1 2767 2699 3001 3389 +18558 4 2 28 1 2684 2820 2689 3082 +18559 4 2 28 1 2779 3588 3141 3639 +18560 4 2 28 1 1558 1516 1515 3486 +18561 4 2 28 1 38 2333 2316 2006 +18562 4 2 28 1 247 664 538 1343 +18563 4 2 28 1 2918 3344 3120 3676 +18564 4 2 28 1 2587 3142 2681 3606 +18565 4 2 28 1 853 850 3318 3887 +18566 4 2 28 1 2071 2081 2024 3802 +18567 4 2 28 1 2593 3823 3159 3824 +18568 4 2 28 1 2616 2779 2778 3633 +18569 4 2 28 1 2156 2164 1880 3140 +18570 4 2 28 1 2828 3130 2881 3808 +18571 4 2 28 1 2595 2873 2905 3801 +18572 4 2 28 1 2744 3303 2933 3600 +18573 4 2 28 1 2026 2214 3341 3878 +18574 4 2 28 1 2782 2727 3038 3543 +18575 4 2 28 1 1435 1467 1431 3171 +18576 4 2 28 1 2847 2934 2650 3492 +18577 4 2 28 1 447 335 3804 3805 +18578 4 2 28 1 1396 1392 1753 3788 +18579 4 2 28 1 2709 2992 2867 3563 +18580 4 2 28 1 1354 291 512 3621 +18581 4 2 28 1 812 1308 216 3223 +18582 4 2 28 1 2714 3430 2625 3744 +18583 4 2 28 1 2379 2376 2377 3422 +18584 4 2 28 1 2919 3245 2694 3811 +18585 4 2 28 1 1350 39 2191 1696 +18586 4 2 28 1 3016 2818 3792 3795 +18587 4 2 28 1 1639 1730 1483 3571 +18588 4 2 28 1 2483 2398 2408 3644 +18589 4 2 28 1 1955 1981 2031 3594 +18590 4 2 28 1 2645 3065 3842 3876 +18591 4 2 28 1 1274 3284 3274 3704 +18592 4 2 28 1 2653 3896 2584 3911 +18593 4 2 28 1 975 3331 976 3905 +18594 4 2 28 1 2727 3443 2649 3543 +18595 4 2 28 1 2765 3320 3092 3881 +18596 4 2 28 1 2672 3237 2571 3293 +18597 4 2 28 1 2684 2689 2963 3082 +18598 4 2 28 1 1360 1368 1358 3157 +18599 4 2 28 1 2684 3403 2565 3583 +18600 4 2 28 1 1666 122 1154 1330 +18601 4 2 28 1 2085 513 1843 3086 +18602 4 2 28 1 2484 32 2423 2335 +18603 4 2 28 1 1472 1310 136 1664 +18604 4 2 28 1 2646 3591 3255 3593 +18605 4 2 28 1 2476 2421 2490 3627 +18606 4 2 28 1 2719 2929 3397 3810 +18607 4 2 28 1 1604 285 3561 3707 +18608 4 2 28 1 1451 1427 1736 3857 +18609 4 2 28 1 2701 2757 2594 3338 +18610 4 2 28 1 376 3088 457 3868 +18611 4 2 28 1 188 2111 272 3313 +18612 4 2 28 1 1222 945 985 3435 +18613 4 2 28 1 2922 3605 375 3879 +18614 4 2 28 1 1235 3831 3411 3921 +18615 4 2 28 1 2367 2358 2392 3717 +18616 4 2 28 1 3449 3716 2834 3717 +18617 4 2 28 1 2807 2882 2628 3013 +18618 4 2 28 1 2748 3487 3224 3695 +18619 4 2 28 1 405 3243 1636 3398 +18620 4 2 28 1 1343 538 248 687 +18621 4 2 28 1 2704 2855 3070 3750 +18622 4 2 28 1 196 2080 1814 511 +18623 4 2 28 1 3351 3094 3685 3837 +18624 4 2 28 1 1427 1436 1411 3857 +18625 4 2 28 1 2653 3615 2880 3868 +18626 4 2 28 1 406 1809 188 3313 +18627 4 2 28 1 2587 2646 3255 3593 +18628 4 2 28 1 370 3764 354 3765 +18629 4 2 28 1 3085 3867 3605 3913 +18630 4 2 28 1 2144 2269 1960 3494 +18631 4 2 28 1 2891 3772 2063 3793 +18632 4 2 28 1 1095 1472 1710 3298 +18633 4 2 28 1 572 2884 3385 3743 +18634 4 2 28 1 2308 2319 2312 3685 +18635 4 2 28 1 2260 1991 2088 2987 +18636 4 2 28 1 3316 3372 2706 3790 +18637 4 2 28 1 1625 409 1613 3366 +18638 4 2 28 1 58 1759 1704 2535 +18639 4 2 28 1 1787 1588 3358 3593 +18640 4 2 28 1 2787 3628 3119 3656 +18641 4 2 28 1 1691 1422 1395 3833 +18642 4 2 28 1 3365 3385 2714 3516 +18643 4 2 28 1 929 2993 3791 3874 +18644 4 2 28 1 64 2405 2538 2345 +18645 4 2 28 1 1634 1588 1578 3593 +18646 4 2 28 1 816 3432 815 3922 +18647 4 2 28 1 3678 3764 2783 3765 +18648 4 2 28 1 763 543 733 3756 +18649 4 2 28 1 1387 1686 1401 3754 +18650 4 2 28 1 421 420 279 3504 +18651 4 2 28 1 3565 3700 563 3701 +18652 4 2 28 1 1522 1587 1491 3842 +18653 4 2 28 1 1657 789 131 1729 +18654 4 2 28 1 1921 2270 1925 3293 +18655 4 2 28 1 2348 2378 2387 3692 +18656 4 2 28 1 1712 1603 1784 3630 +18657 4 2 28 1 1054 3305 3729 3863 +18658 4 2 28 1 2703 2848 3349 3674 +18659 4 2 28 1 2790 3179 3564 3855 +18660 4 2 28 1 656 657 655 3839 +18661 4 2 28 1 2220 2097 2111 2885 +18662 4 2 28 1 200 802 201 3599 +18663 4 2 28 1 2196 1850 1956 3426 +18664 4 2 28 1 2809 3847 3354 3935 +18665 4 2 28 1 3029 3461 2621 3926 +18666 4 2 28 1 2543 3579 3169 3813 +18667 4 2 28 1 2618 3379 3378 3552 +18668 4 2 28 1 2099 3828 3337 3933 +18669 4 2 28 1 2986 3615 340 3745 +18670 4 2 28 1 163 287 1611 512 +18671 4 2 28 1 2022 2269 2144 3494 +18672 4 2 28 1 1859 1858 1857 3739 +18673 4 2 28 1 2227 1971 2175 3407 +18674 4 2 28 1 493 409 276 3366 +18675 4 2 28 1 644 3589 3073 3872 +18676 4 2 28 1 505 485 407 3728 +18677 4 2 28 1 2483 70 2424 2536 +18678 4 2 28 1 1674 1780 3378 3387 +18679 4 2 28 1 1691 1482 1422 3501 +18680 4 2 28 1 1748 1695 1622 2924 +18681 4 2 28 1 1125 3320 3777 3881 +18682 4 2 28 1 7 215 1309 1499 +18683 4 2 28 1 2738 3668 2961 3742 +18684 4 2 28 1 1977 2141 2054 3518 +18685 4 2 28 1 2622 2844 2759 2932 +18686 4 2 28 1 2274 2187 1880 3527 +18687 4 2 28 1 491 3794 480 3897 +18688 4 2 28 1 1607 1513 1509 3603 +18689 4 2 28 1 1569 1568 1399 3562 +18690 4 2 28 1 2238 2017 2255 3631 +18691 4 2 28 1 1042 3296 1220 3925 +18692 4 2 28 1 1248 3479 3048 3810 +18693 4 2 28 1 2759 3353 3088 3868 +18694 4 2 28 1 722 663 651 3333 +18695 4 2 28 1 2633 2786 2661 3085 +18696 4 2 28 1 1662 1478 1708 3170 +18697 4 2 28 1 2106 2182 1862 3118 +18698 4 2 28 1 2687 3217 2885 3917 +18699 4 2 28 1 2811 3318 2649 3928 +18700 4 2 28 1 2510 2512 2514 3797 +18701 4 2 28 1 3258 3434 2836 3763 +18702 4 2 28 1 2765 3629 2974 3777 +18703 4 2 28 1 2851 3371 2602 3646 +18704 4 2 28 1 2812 3331 3800 3905 +18705 4 2 28 1 1915 2226 1902 3451 +18706 4 2 28 1 2622 2803 2844 3274 +18707 4 2 28 1 2587 3802 3142 3803 +18708 4 2 28 1 756 647 759 3467 +18709 4 2 28 1 1470 1744 1711 3824 +18710 4 2 28 1 1041 970 1040 3473 +18711 4 2 28 1 2278 1863 1860 3458 +18712 4 2 28 1 2877 2620 3015 3439 +18713 4 2 28 1 593 553 692 3930 +18714 4 2 28 1 3344 3605 2686 3879 +18715 4 2 28 1 2882 3013 2807 3511 +18716 4 2 28 1 2952 3102 456 3126 +18717 4 2 28 1 2800 3650 3258 3763 +18718 4 2 28 1 2122 1976 1992 3935 +18719 4 2 28 1 643 3097 3608 3781 +18720 4 2 28 1 2591 2689 2684 2820 +18721 4 2 28 1 2778 3394 2981 3679 +18722 4 2 28 1 538 3569 1343 3752 +18723 4 2 28 1 487 342 473 3844 +18724 4 2 28 1 3397 3810 827 3927 +18725 4 2 28 1 1246 1122 1248 3479 +18726 4 2 28 1 733 766 545 3273 +18727 4 2 28 1 835 1235 3411 3921 +18728 4 2 28 1 1906 2221 2168 3720 +18729 4 2 28 1 790 142 1815 1312 +18730 4 2 28 1 2552 2625 3430 3744 +18731 4 2 28 1 2438 2437 2439 3657 +18732 4 2 28 1 2731 3342 2866 3502 +18733 4 2 28 1 1945 2179 2099 3933 +18734 4 2 28 1 2778 2981 2640 3606 +18735 4 2 28 1 2483 2408 2536 3644 +18736 4 2 28 1 2334 2346 26 2406 +18737 4 2 28 1 1828 43 1580 1339 +18738 4 2 28 1 1006 2973 3800 3831 +18739 4 2 28 1 1702 1539 1468 3470 +18740 4 2 28 1 2503 2524 2527 3586 +18741 4 2 28 1 2700 3718 3609 3835 +18742 4 2 28 1 2906 3009 2671 3634 +18743 4 2 28 1 1985 1986 1935 3142 +18744 4 2 28 1 868 870 869 3517 +18745 4 2 28 1 2881 2635 3014 3469 +18746 4 2 28 1 1471 1456 1755 3159 +18747 4 2 28 1 2733 2986 2606 3896 +18748 4 2 28 1 2079 766 269 1818 +18749 4 2 28 1 2768 3794 3693 3804 +18750 4 2 28 1 1681 1378 1377 3751 +18751 4 2 28 1 829 3397 827 3927 +18752 4 2 28 1 2099 2253 1888 3337 +18753 4 2 28 1 2682 3017 3463 3843 +18754 4 2 28 1 349 375 345 3605 +18755 4 2 28 1 393 377 386 3633 +18756 4 2 28 1 3205 2870 3413 3827 +18757 4 2 28 1 2912 3089 2774 3701 +18758 4 2 28 1 2599 3420 2745 3818 +18759 4 2 28 1 1299 159 2144 2135 +18760 4 2 28 1 2099 2179 2253 3828 +18761 4 2 28 1 2768 3307 2952 3804 +18762 4 2 28 1 486 3243 3398 3730 +18763 4 2 28 1 2828 3302 3026 3808 +18764 4 2 28 1 2706 3187 2854 3316 +18765 4 2 28 1 3381 3887 2798 3925 +18766 4 2 28 1 2565 2684 2653 2837 +18767 4 2 28 1 2837 3099 2653 3745 +18768 4 2 28 1 2064 2198 2173 3642 +18769 4 2 28 1 1492 1457 3362 3387 +18770 4 2 28 1 3118 3323 2668 3510 +18771 4 2 28 1 2282 2148 2232 3283 +18772 4 2 28 1 3709 3832 2869 3919 +18773 4 2 28 1 3287 3622 2756 3872 +18774 4 2 28 1 1451 3812 1436 3857 +18775 4 2 28 1 749 536 715 3502 +18776 4 2 28 1 914 915 916 3513 +18777 4 2 28 1 405 466 294 3243 +18778 4 2 28 1 630 3421 3634 3839 +18779 4 2 28 1 2220 2885 2111 3313 +18780 4 2 28 1 2406 2346 2382 3598 +18781 4 2 28 1 1576 1577 1578 3591 +18782 4 2 28 1 2826 2622 2932 3274 +18783 4 2 28 1 3088 3131 2986 3844 +18784 4 2 28 1 1643 1472 1778 3298 +18785 4 2 28 1 2125 1976 2169 3935 +18786 4 2 28 1 2798 3887 3296 3925 +18787 4 2 28 1 2734 3164 3630 3658 +18788 4 2 28 1 682 684 683 3356 +18789 4 2 28 1 2087 2088 1813 2987 +18790 4 2 28 1 2992 3563 886 3907 +18791 4 2 28 1 1757 1765 3691 3898 +18792 4 2 28 1 2230 2076 1967 3646 +18793 4 2 28 1 2436 2470 2445 3651 +18794 4 2 28 1 1524 1525 1708 3577 +18795 4 2 28 1 234 765 732 1600 +18796 4 2 28 1 2205 1983 1939 3856 +18797 4 2 28 1 336 3804 335 3805 +18798 4 2 28 1 2697 2920 3573 3686 +18799 4 2 28 1 2729 2952 3307 3920 +18800 4 2 28 1 2131 1888 1883 3489 +18801 4 2 28 1 1075 1070 1252 3494 +18802 4 2 28 1 1812 2097 2098 2885 +18803 4 2 28 1 3014 3469 953 3807 +18804 4 2 28 1 2705 3882 3281 3883 +18805 4 2 28 1 2709 2992 2748 3822 +18806 4 2 28 1 427 502 507 3924 +18807 4 2 28 1 2792 3326 3424 3770 +18808 4 2 28 1 669 776 2999 3785 +18809 4 2 28 1 1112 213 3314 3843 +18810 4 2 28 1 2157 2091 2089 3332 +18811 4 2 28 1 1482 1692 1484 3542 +18812 4 2 28 1 2774 3073 2913 3700 +18813 4 2 28 1 2093 40 1839 1581 +18814 4 2 28 1 3080 3794 2768 3805 +18815 4 2 28 1 425 460 422 3558 +18816 4 2 28 1 1179 3381 861 3925 +18817 4 2 28 1 2173 2198 2213 3143 +18818 4 2 28 1 1985 2024 2149 3803 +18819 4 2 28 1 3443 3543 2586 3662 +18820 4 2 28 1 293 3463 1325 3561 +18821 4 2 28 1 303 3588 3074 3639 +18822 4 2 28 1 3374 3661 2833 3870 +18823 4 2 28 1 472 3764 370 3765 +18824 4 2 28 1 2080 196 289 511 +18825 4 2 28 1 2467 2478 2446 3877 +18826 4 2 28 1 704 3073 3622 3872 +18827 4 2 28 1 2130 1844 2249 3388 +18828 4 2 28 1 2677 3321 3092 3524 +18829 4 2 28 1 852 3318 3776 3875 +18830 4 2 28 1 444 508 384 3344 +18831 4 2 28 1 2946 3664 3505 3667 +18832 4 2 28 1 1440 1444 1439 3904 +18833 4 2 28 1 1682 3561 2740 3707 +18834 4 2 28 1 809 1114 1309 3277 +18835 4 2 28 1 2356 2359 2358 3841 +18836 4 2 28 1 2060 1575 3255 3591 +18837 4 2 28 1 2557 3497 3773 3774 +18838 4 2 28 1 1704 1583 2165 3370 +18839 4 2 28 1 3263 3842 3824 3876 +18840 4 2 28 1 2909 3736 3153 3912 +18841 4 2 28 1 2901 3097 2621 3608 +18842 4 2 28 1 1843 3086 513 3621 +18843 4 2 28 1 1943 2236 3206 3827 +18844 4 2 28 1 1350 1593 1756 3143 +18845 4 2 28 1 1512 1507 1509 3603 +18846 4 2 28 1 2109 2189 1832 3499 +18847 4 2 28 1 1095 1310 136 1472 +18848 4 2 28 1 2816 3337 3489 3710 +18849 4 2 28 1 1990 2121 2098 2885 +18850 4 2 28 1 2767 3389 3359 3781 +18851 4 2 28 1 2175 1986 2227 3407 +18852 4 2 28 1 1633 1687 1609 3077 +18853 4 2 28 1 1504 1679 1700 3491 +18854 4 2 28 1 1852 2224 1956 3426 +18855 4 2 28 1 1427 3546 1736 3857 +18856 4 2 28 1 751 3578 3498 3638 +18857 4 2 28 1 1865 1901 2017 3631 +18858 4 2 28 1 1766 1345 1683 3388 +18859 4 2 28 1 1927 2217 2285 3560 +18860 4 2 28 1 2244 2256 2068 3370 +18861 4 2 28 1 2684 3583 2565 3911 +18862 4 2 28 1 2451 2444 2442 3721 +18863 4 2 28 1 368 369 387 3368 +18864 4 2 28 1 1662 1708 1663 3170 +18865 4 2 28 1 1795 1577 1348 3591 +18866 4 2 28 1 3008 3474 2873 3930 +18867 4 2 28 1 1508 1507 1446 3378 +18868 4 2 28 1 343 331 325 3745 +18869 4 2 28 1 1832 735 535 3499 +18870 4 2 28 1 2252 32 2484 2335 +18871 4 2 28 1 2884 3550 2947 3743 +18872 4 2 28 1 1350 1839 40 1581 +18873 4 2 28 1 1241 3016 3792 3795 +18874 4 2 28 1 1823 184 2112 3433 +18875 4 2 28 1 2556 3420 3334 3786 +18876 4 2 28 1 2098 2121 2194 2687 +18877 4 2 28 1 246 532 1638 1322 +18878 4 2 28 1 1996 1994 1995 3405 +18879 4 2 28 1 2506 2507 2508 3602 +18880 4 2 28 1 3001 3359 2767 3389 +18881 4 2 28 1 2757 2657 3338 3578 +18882 4 2 28 1 3321 3629 910 3850 +18883 4 2 28 1 3274 3284 2803 3704 +18884 4 2 28 1 2441 2440 2442 3574 +18885 4 2 28 1 1410 1405 1409 3427 +18886 4 2 28 1 1293 1335 129 3417 +18887 4 2 28 1 440 314 3734 3789 +18888 4 2 28 1 375 3605 2922 3867 +18889 4 2 28 1 2223 2113 2023 2776 +18890 4 2 28 1 2702 2901 2701 3461 +18891 4 2 28 1 2193 2258 2138 3339 +18892 4 2 28 1 2767 2899 3389 3781 +18893 4 2 28 1 1787 1579 1588 3593 +18894 4 2 28 1 1058 1314 1293 3417 +18895 4 2 28 1 3196 3369 2749 3806 +18896 4 2 28 1 291 1843 2254 523 +18897 4 2 28 1 1535 2697 3573 3686 +18898 4 2 28 1 2094 1349 1838 3601 +18899 4 2 28 1 2984 3022 2658 3689 +18900 4 2 28 1 621 3421 3336 3836 +18901 4 2 28 1 340 376 341 3868 +18902 4 2 28 1 11 32 2252 2335 +18903 4 2 28 1 1580 1775 1731 3772 +18904 4 2 28 1 1265 1069 1264 3439 +18905 4 2 28 1 2653 2684 2565 3911 +18906 4 2 28 1 1403 3279 3788 3932 +18907 4 2 28 1 2681 2640 2981 3606 +18908 4 2 28 1 1797 1495 1669 3198 +18909 4 2 28 1 1658 129 1335 3417 +18910 4 2 28 1 1832 2086 735 3499 +18911 4 2 28 1 2719 3124 3048 3810 +18912 4 2 28 1 2743 3761 3570 3825 +18913 4 2 28 1 429 430 515 3217 +18914 4 2 28 1 1869 1867 2084 3680 +18915 4 2 28 1 2774 2669 3073 3699 +18916 4 2 28 1 1755 1471 3159 3823 +18917 4 2 28 1 315 3734 314 3789 +18918 4 2 28 1 2408 2398 2347 3644 +18919 4 2 28 1 635 751 760 3578 +18920 4 2 28 1 252 772 2130 547 +18921 4 2 28 1 2742 3146 3323 3756 +18922 4 2 28 1 806 1330 121 3335 +18923 4 2 28 1 2948 3568 312 3805 +18924 4 2 28 1 1575 1689 1339 3255 +18925 4 2 28 1 2616 2778 2737 3442 +18926 4 2 28 1 2906 2801 3421 3634 +18927 4 2 28 1 1659 121 1330 3335 +18928 4 2 28 1 2429 2456 2431 3590 +18929 4 2 28 1 2559 3665 2667 3687 +18930 4 2 28 1 2900 2901 2701 3726 +18931 4 2 28 1 3058 3882 2705 3883 +18932 4 2 28 1 502 3626 451 3924 +18933 4 2 28 1 1316 1294 3339 3508 +18934 4 2 28 1 2552 3430 3532 3744 +18935 4 2 28 1 688 540 721 3768 +18936 4 2 28 1 1440 1486 1485 3264 +18937 4 2 28 1 2653 2986 2733 3896 +18938 4 2 28 1 959 886 946 3563 +18939 4 2 28 1 1882 1881 1889 3322 +18940 4 2 28 1 302 3588 3062 3633 +18941 4 2 28 1 1746 1670 1560 3277 +18942 4 2 28 1 260 1808 2100 3261 +18943 4 2 28 1 1164 1142 1289 3283 +18944 4 2 28 1 1604 509 1325 3561 +18945 4 2 28 1 1406 1413 1407 3418 +18946 4 2 28 1 2594 2702 2701 3461 +18947 4 2 28 1 2735 3009 2906 3839 +18948 4 2 28 1 2948 3102 2786 3568 +18949 4 2 28 1 1186 3632 3294 3854 +18950 4 2 28 1 1604 1616 177 3707 +18951 4 2 28 1 2881 3439 2878 3660 +18952 4 2 28 1 1343 1638 664 3752 +18953 4 2 28 1 2598 3396 3329 3818 +18954 4 2 28 1 3146 218 3756 3871 +18955 4 2 28 1 1951 2045 2046 3480 +18956 4 2 28 1 765 234 1329 1600 +18957 4 2 28 1 2884 2895 2625 3001 +18958 4 2 28 1 1576 3255 1575 3591 +18959 4 2 28 1 1820 2076 2143 3116 +18960 4 2 28 1 828 3893 3376 3927 +18961 4 2 28 1 627 610 717 3509 +18962 4 2 28 1 2598 3329 2719 3818 +18963 4 2 28 1 1966 1967 2076 3646 +18964 4 2 28 1 1627 1626 1323 3090 +18965 4 2 28 1 340 341 3615 3868 +18966 4 2 28 1 3307 3670 2932 3920 +18967 4 2 28 1 2591 3583 2684 3911 +18968 4 2 28 1 1800 1482 1691 3501 +18969 4 2 28 1 1471 1490 1489 3823 +18970 4 2 28 1 2072 1584 1332 3317 +18971 4 2 28 1 2963 3099 324 3615 +18972 4 2 28 1 777 767 547 3388 +18973 4 2 28 1 2790 3838 3281 3883 +18974 4 2 28 1 828 3376 3894 3927 +18975 4 2 28 1 2171 2235 1898 3485 +18976 4 2 28 1 2795 3044 2894 3509 +18977 4 2 28 1 2552 3744 3461 3926 +18978 4 2 28 1 2638 3107 2888 3158 +18979 4 2 28 1 2611 3662 3190 3849 +18980 4 2 28 1 2082 3086 1843 3621 +18981 4 2 28 1 2281 2228 2147 3669 +18982 4 2 28 1 1839 3143 2198 3793 +18983 4 2 28 1 2693 3305 2953 3729 +18984 4 2 28 1 2000 1970 1940 3377 +18985 4 2 28 1 2065 2149 2083 3803 +18986 4 2 28 1 2847 3492 3291 3599 +18987 4 2 28 1 1722 1484 1692 3542 +18988 4 2 28 1 2586 3443 2727 3543 +18989 4 2 28 1 1568 1569 1565 3562 +18990 4 2 28 1 2057 2264 2102 3338 +18991 4 2 28 1 110 2380 1653 2405 +18992 4 2 28 1 2887 3473 3012 3907 +18993 4 2 28 1 2424 2458 2483 3644 +18994 4 2 28 1 642 660 641 3510 +18995 4 2 28 1 843 844 1107 3520 +18996 4 2 28 1 962 3416 980 3902 +18997 4 2 28 1 1092 229 230 3511 +18998 4 2 28 1 2686 3344 2918 3676 +18999 4 2 28 1 1457 1419 1421 3202 +19000 4 2 28 1 2684 2689 2591 3911 +19001 4 2 28 1 212 211 1119 3612 +19002 4 2 28 1 2072 1829 55 1584 +19003 4 2 28 1 467 3017 3561 3923 +19004 4 2 28 1 2072 1821 2073 3317 +19005 4 2 28 1 2782 3038 3517 3580 +19006 4 2 28 1 2657 3252 2951 3356 +19007 4 2 28 1 266 677 539 3747 +19008 4 2 28 1 2253 1874 1878 3828 +19009 4 2 28 1 2793 3369 2930 3538 +19010 4 2 28 1 2611 3822 3414 3928 +19011 4 2 28 1 1370 1372 1373 3503 +19012 4 2 28 1 70 2483 2408 2536 +19013 4 2 28 1 682 1810 2117 3356 +19014 4 2 28 1 1268 1120 1262 3535 +19015 4 2 28 1 2661 2862 3085 3605 +19016 4 2 28 1 3085 3639 3141 3867 +19017 4 2 28 1 2650 3047 2937 3492 +19018 4 2 28 1 505 2885 380 3917 +19019 4 2 28 1 2595 2873 2697 2920 +19020 4 2 28 1 2963 2653 3099 3615 +19021 4 2 28 1 1457 1685 1493 3362 +19022 4 2 28 1 829 3894 3397 3927 +19023 4 2 28 1 2216 2059 2053 3653 +19024 4 2 28 1 2749 3369 2868 3520 +19025 4 2 28 1 3141 3500 2922 3867 +19026 4 2 28 1 2557 3190 3783 3849 +19027 4 2 28 1 274 209 210 3548 +19028 4 2 28 1 2104 2275 2105 3747 +19029 4 2 28 1 1957 2039 2038 3910 +19030 4 2 28 1 2591 2786 2689 2820 +19031 4 2 28 1 3255 3802 2587 3803 +19032 4 2 28 1 2093 2063 1822 3793 +19033 4 2 28 1 2812 3479 3048 3905 +19034 4 2 28 1 1961 1989 1923 3652 +19035 4 2 28 1 3056 3796 2687 3917 +19036 4 2 28 1 2356 2358 2357 3841 +19037 4 2 28 1 2176 1891 1909 3267 +19038 4 2 28 1 306 3568 3085 3639 +19039 4 2 28 1 867 1161 849 3595 +19040 4 2 28 1 347 3307 373 3804 +19041 4 2 28 1 2408 14 70 2536 +19042 4 2 28 1 2682 3314 3017 3843 +19043 4 2 28 1 2353 2399 2369 3482 +19044 4 2 28 1 1524 1479 1525 3577 +19045 4 2 28 1 1212 1037 1089 3533 +19046 4 2 28 1 645 567 706 3516 +19047 4 2 28 1 2221 1858 1892 3357 +19048 4 2 28 1 1636 3243 1774 3398 +19049 4 2 28 1 2289 2038 2039 3910 +19050 4 2 28 1 601 588 628 3498 +19051 4 2 28 1 1646 1779 1334 3109 +19052 4 2 28 1 1492 1674 1416 3387 +19053 4 2 28 1 873 874 872 3648 +19054 4 2 28 1 2395 2377 2365 3914 +19055 4 2 28 1 2859 3696 3342 3871 +19056 4 2 28 1 2963 3082 449 3681 +19057 4 2 28 1 2798 3381 3318 3887 +19058 4 2 28 1 2671 2873 3614 3930 +19059 4 2 28 1 2192 2331 36 2293 +19060 4 2 28 1 379 376 457 3868 +19061 4 2 28 1 1828 2083 2060 3255 +19062 4 2 28 1 2001 3856 1983 3878 +19063 4 2 28 1 2633 2768 3080 3585 +19064 4 2 28 1 2821 3459 2970 3862 +19065 4 2 28 1 324 3615 3099 3745 +19066 4 2 28 1 2845 3039 3451 3645 +19067 4 2 28 1 2881 3807 3808 3864 +19068 4 2 28 1 1300 1071 786 3194 +19069 4 2 28 1 703 570 569 3553 +19070 4 2 28 1 2667 3665 2828 3687 +19071 4 2 28 1 2304 2302 2303 3873 +19072 4 2 28 1 2098 2220 1990 2885 +19073 4 2 28 1 2023 2776 2113 3802 +19074 4 2 28 1 1954 1949 1950 3755 +19075 4 2 28 1 2661 2922 2862 3605 +19076 4 2 28 1 2837 2987 2687 3796 +19077 4 2 28 1 3038 2727 3517 3595 +19078 4 2 28 1 2694 3245 2919 3915 +19079 4 2 28 1 27 28 2297 2426 +19080 4 2 28 1 2913 3565 564 3622 +19081 4 2 28 1 3184 3320 2765 3777 +19082 4 2 28 1 2624 3024 2894 3076 +19083 4 2 28 1 2419 30 29 2291 +19084 4 2 28 1 1349 1357 1356 3601 +19085 4 2 28 1 2963 449 3099 3681 +19086 4 2 28 1 1913 1903 1914 3742 +19087 4 2 28 1 535 256 1832 2117 +19088 4 2 28 1 1761 1585 1366 3549 +19089 4 2 28 1 710 606 726 3550 +19090 4 2 28 1 2552 2625 3744 3926 +19091 4 2 28 1 2054 2177 1977 3518 +19092 4 2 28 1 1564 1566 1632 3898 +19093 4 2 28 1 1682 1604 3561 3707 +19094 4 2 28 1 2509 2508 2515 3703 +19095 4 2 28 1 2952 3804 336 3805 +19096 4 2 28 1 2767 2625 2895 3001 +19097 4 2 28 1 671 744 672 3261 +19098 4 2 28 1 2948 313 3568 3913 +19099 4 2 28 1 2245 2197 1810 3356 +19100 4 2 28 1 2518 2516 2498 3545 +19101 4 2 28 1 813 231 232 3567 +19102 4 2 28 1 3447 3650 2950 3753 +19103 4 2 28 1 1694 1736 1506 3546 +19104 4 2 28 1 708 608 589 3540 +19105 4 2 28 1 2667 3535 2916 3612 +19106 4 2 28 1 2818 3791 3019 3792 +19107 4 2 28 1 388 502 451 3924 +19108 4 2 28 1 2921 2688 3258 3762 +19109 4 2 28 1 847 3196 3776 3806 +19110 4 2 28 1 1984 1985 1935 3142 +19111 4 2 28 1 2488 2426 2475 3598 +19112 4 2 28 1 1464 1672 1619 3280 +19113 4 2 28 1 3187 3316 2706 3790 +19114 4 2 28 1 1600 1601 1329 3490 +19115 4 2 28 1 1970 2003 2002 3448 +19116 4 2 28 1 2671 3089 3009 3614 +19117 4 2 28 1 2896 3741 3336 3836 +19118 4 2 28 1 2653 2606 2986 3896 +19119 4 2 28 1 2524 72 71 2457 +19120 4 2 28 1 1587 1437 1684 3842 +19121 4 2 28 1 1779 3109 1646 3398 +19122 4 2 28 1 2380 2405 2345 3175 +19123 4 2 28 1 3281 3882 2705 3898 +19124 4 2 28 1 2507 2511 2510 3909 +19125 4 2 28 1 562 3565 2913 3700 +19126 4 2 28 1 2216 2039 2059 3559 +19127 4 2 28 1 614 602 695 3619 +19128 4 2 28 1 2354 2356 2355 3861 +19129 4 2 28 1 277 430 429 3217 +19130 4 2 28 1 2094 1846 2234 3601 +19131 4 2 28 1 2850 3407 3272 3429 +19132 4 2 28 1 2246 2026 2214 3341 +19133 4 2 28 1 1149 1081 1014 3572 +19134 4 2 28 1 440 3734 3074 3789 +19135 4 2 28 1 1602 1601 1600 3490 +19136 4 2 28 1 277 1812 2107 3217 +19137 4 2 28 1 3044 3073 2669 3475 +19138 4 2 28 1 2760 3453 3173 3656 +19139 4 2 28 1 50 1838 2094 1349 +19140 4 2 28 1 1833 2495 79 3931 +19141 4 2 28 1 1950 1949 1948 3755 +19142 4 2 28 1 2788 2916 2655 3504 +19143 4 2 28 1 2816 3454 3337 3710 +19144 4 2 28 1 689 741 691 3815 +19145 4 2 28 1 3097 2767 3608 3781 +19146 4 2 28 1 2085 290 181 513 +19147 4 2 28 1 3076 3719 652 3752 +19148 4 2 28 1 2278 2032 1863 3458 +19149 4 2 28 1 137 1987 2158 1311 +19150 4 2 28 1 2398 2483 100 2458 +19151 4 2 28 1 2667 2916 2788 3612 +19152 4 2 28 1 2862 3605 3344 3620 +19153 4 2 28 1 1824 2137 2206 3393 +19154 4 2 28 1 2333 38 2191 2213 +19155 4 2 28 1 2148 1815 2232 3139 +19156 4 2 28 1 2922 3141 2647 3500 +19157 4 2 28 1 304 305 306 3639 +19158 4 2 28 1 2719 3124 3810 3927 +19159 4 2 28 1 2633 2948 2786 3085 +19160 4 2 28 1 2424 70 71 2499 +19161 4 2 28 1 2976 2706 3372 3790 +19162 4 2 28 1 2214 1817 2246 3341 +19163 4 2 28 1 2068 1829 2069 3200 +19164 4 2 28 1 1829 1340 55 1584 +19165 4 2 28 1 2959 3457 2764 3631 +19166 4 2 28 1 3087 2789 3335 3775 +19167 4 2 28 1 2156 1972 1978 3528 +19168 4 2 28 1 145 144 2010 1164 +19169 4 2 28 1 2800 2950 3650 3763 +19170 4 2 28 1 1277 137 2158 1311 +19171 4 2 28 1 472 2964 3764 3765 +19172 4 2 28 1 2985 3056 2687 3917 +19173 4 2 28 1 972 973 963 3664 +19174 4 2 28 1 2171 1898 2259 3485 +19175 4 2 28 1 2118 34 33 2298 +19176 4 2 28 1 1712 1342 1603 3737 +19177 4 2 28 1 3506 3530 2815 3816 +19178 4 2 28 1 120 119 788 1466 +19179 4 2 28 1 1316 1051 1294 3508 +19180 4 2 28 1 3164 2734 3630 3737 +19181 4 2 28 1 1738 1556 1550 3163 +19182 4 2 28 1 1200 1199 1271 3556 +19183 4 2 28 1 2897 3565 563 3701 +19184 4 2 28 1 490 385 399 3879 +19185 4 2 28 1 1105 3555 1101 3934 +19186 4 2 28 1 2714 2895 2884 3385 +19187 4 2 28 1 2082 1843 2123 3621 +19188 4 2 28 1 2646 3086 3025 3368 +19189 4 2 28 1 407 406 272 3313 +19190 4 2 28 1 895 1249 1194 3611 +19191 4 2 28 1 1202 3890 3012 3907 +19192 4 2 28 1 2133 2040 2139 3627 +19193 4 2 28 1 2116 2100 2102 3010 +19194 4 2 28 1 1549 1548 1429 3437 +19195 4 2 28 1 1198 1229 890 3580 +19196 4 2 28 1 2801 2896 2639 3336 +19197 4 2 28 1 1631 243 244 663 +19198 4 2 28 1 2169 3354 3847 3935 +19199 4 2 28 1 2800 3648 3447 3826 +19200 4 2 28 1 2836 3234 2953 3863 +19201 4 2 28 1 2655 2916 3129 3504 +19202 4 2 28 1 552 550 551 3474 +19203 4 2 28 1 2066 1916 2178 3462 +19204 4 2 28 1 2756 3553 3516 3622 +19205 4 2 28 1 2929 3479 2973 3831 +19206 4 2 28 1 2102 3010 2100 3261 +19207 4 2 28 1 2836 2953 3305 3863 +19208 4 2 28 1 23 24 2294 2341 +19209 4 2 28 1 2688 2800 3258 3763 +19210 4 2 28 1 115 114 808 1660 +19211 4 2 28 1 333 332 329 3620 +19212 4 2 28 1 1575 44 2060 1339 +19213 4 2 28 1 2250 2085 2082 3086 +19214 4 2 28 1 1126 1049 1127 3505 +19215 4 2 28 1 1101 1105 797 3555 +19216 4 2 28 1 2067 2165 57 1583 +19217 4 2 28 1 2884 3001 2754 3550 +19218 4 2 28 1 3129 3504 2916 3548 +19219 4 2 28 1 2338 2401 2411 3449 +19220 4 2 28 1 3337 3828 2874 3933 +19221 4 2 28 1 1452 1518 1803 3539 +19222 4 2 28 1 1321 239 240 531 +19223 4 2 28 1 2702 3461 2594 3744 +19224 4 2 28 1 571 3565 2897 3743 +19225 4 2 28 1 1741 1557 1794 3779 +19226 4 2 28 1 697 2897 3701 3743 +19227 4 2 28 1 103 104 2343 1591 +19228 4 2 28 1 148 147 2147 805 +19229 4 2 28 1 560 719 558 3699 +19230 4 2 28 1 2547 3522 3521 3532 +19231 4 2 28 1 312 311 309 3568 +19232 4 2 28 1 975 3800 3331 3905 +19233 4 2 28 1 586 3475 2905 3699 +19234 4 2 28 1 2803 3182 2844 3704 +19235 4 2 28 1 1369 59 60 2520 +19236 4 2 28 1 1588 1555 1791 3358 +19237 4 2 28 1 3226 3305 2693 3729 +19238 4 2 28 1 1607 1325 3463 3561 +19239 4 2 28 1 1623 1485 1516 3891 +19240 4 2 28 1 2828 2881 3807 3808 +19241 4 2 28 1 593 694 555 3614 +19242 4 2 28 1 2092 1972 2187 3528 +19243 4 2 28 1 3038 3296 2798 3887 +19244 4 2 28 1 490 399 3090 3879 +19245 4 2 28 1 579 707 582 3732 +19246 4 2 28 1 302 303 301 3588 +19247 4 2 28 1 3034 3504 3129 3794 +19248 4 2 28 1 2759 2932 2844 3353 +19249 4 2 28 1 307 3639 3074 3734 +19250 4 2 28 1 1797 1669 1596 3198 +19251 4 2 28 1 594 584 571 3743 +19252 4 2 28 1 1208 1000 1237 3566 +19253 4 2 28 1 2782 3038 2798 3543 +19254 4 2 28 1 485 353 3728 3917 +19255 4 2 28 1 142 2151 1815 1312 +19256 4 2 28 1 323 3099 3056 3796 +19257 4 2 28 1 1536 18 17 2292 +19258 4 2 28 1 2714 3365 2895 3385 +19259 4 2 28 1 1732 1454 1519 3900 +19260 4 2 28 1 943 942 1007 3643 +19261 4 2 28 1 2500 77 76 1840 +19262 4 2 28 1 3148 3516 2756 3553 +19263 4 2 28 1 1924 1920 2203 3819 +19264 4 2 28 1 2808 2969 3245 3915 +19265 4 2 28 1 2326 25 26 2346 +19266 4 2 28 1 2276 1836 2162 3476 +19267 4 2 28 1 785 153 154 2136 +19268 4 2 28 1 1514 1695 2924 3686 +19269 4 2 28 1 2862 3080 2948 3913 +19270 4 2 28 1 2603 3430 2714 3744 +19271 4 2 28 1 2096 2275 2248 3096 +19272 4 2 28 1 2093 1333 1581 3793 +19273 4 2 28 1 1095 1305 1096 3298 +19274 4 2 28 1 285 432 488 3707 +19275 4 2 28 1 1206 913 914 3530 +19276 4 2 28 1 2296 2314 2316 3889 +19277 4 2 28 1 1259 1032 1232 3600 +19278 4 2 28 1 505 3728 2885 3917 +19279 4 2 28 1 2152 1308 161 1960 +19280 4 2 28 1 2668 3323 2899 3510 +19281 4 2 28 1 3272 3407 2891 3429 +19282 4 2 28 1 2547 3521 3531 3532 +19283 4 2 28 1 1363 1362 1361 3495 +19284 4 2 28 1 454 330 341 3615 +19285 4 2 28 1 1616 1743 1725 3707 +19286 4 2 28 1 322 3056 3099 3681 +19287 4 2 28 1 60 61 1344 2494 +19288 4 2 28 1 2855 3411 2929 3831 +19289 4 2 28 1 2837 2653 2986 3745 +19290 4 2 28 1 2759 2880 3353 3868 +19291 4 2 28 1 1843 291 180 523 +19292 4 2 28 1 2759 3088 2880 3868 +19293 4 2 28 1 2347 68 69 2528 +19294 4 2 28 1 2465 29 28 2322 +19295 4 2 28 1 2645 3842 3263 3876 +19296 4 2 28 1 2115 186 278 3408 +19297 4 2 28 1 2026 2150 2214 3878 +19298 4 2 28 1 2314 2315 2316 3889 +19299 4 2 28 1 2938 3842 3065 3876 +19300 4 2 28 1 1255 1258 1137 3663 +19301 4 2 28 1 1224 958 1050 3628 +19302 4 2 28 1 1640 1628 1723 3152 +19303 4 2 28 1 2113 2112 2251 3433 +19304 4 2 28 1 1343 3569 1719 3752 +19305 4 2 28 1 2697 2920 2873 3526 +19306 4 2 28 1 1604 509 178 1325 +19307 4 2 28 1 1819 147 146 1158 +19308 4 2 28 1 577 699 574 3689 +19309 4 2 28 1 1370 1794 1557 3503 +19310 4 2 28 1 2778 2737 3442 3617 +19311 4 2 28 1 451 359 360 3626 +19312 4 2 28 1 1768 1355 1683 3388 +19313 4 2 28 1 1609 237 238 537 +19314 4 2 28 1 1374 1376 1375 3735 +19315 4 2 28 1 2719 3810 3397 3927 +19316 4 2 28 1 280 166 1641 1334 +19317 4 2 28 1 905 907 910 3629 +19318 4 2 28 1 2328 19 20 1647 +19319 4 2 28 1 2498 59 58 1352 +19320 4 2 28 1 1186 1172 990 3632 +19321 4 2 28 1 408 186 2108 3408 +19322 4 2 28 1 2574 3036 3455 3845 +19323 4 2 28 1 2591 2689 2633 3472 +19324 4 2 28 1 2881 3808 3130 3864 +19325 4 2 28 1 2582 3665 3301 3769 +19326 4 2 28 1 2992 3487 2748 3695 +19327 4 2 28 1 980 3416 3817 3902 +19328 4 2 28 1 2887 2992 2748 3695 +19329 4 2 28 1 3082 3734 315 3789 +19330 4 2 28 1 2254 1843 180 523 +19331 4 2 28 1 3301 3665 2559 3687 +19332 4 2 28 1 1493 1685 1654 3362 +19333 4 2 28 1 2873 2920 2905 3526 +19334 4 2 28 1 1338 1761 1801 3746 +19335 4 2 28 1 1580 2061 43 1828 +19336 4 2 28 1 2950 3508 2830 3753 +19337 4 2 28 1 2158 2262 2076 3116 +19338 4 2 28 1 1077 1240 1029 3671 +19339 4 2 28 1 188 1809 2111 3313 +19340 4 2 28 1 2611 3543 2798 3928 +19341 4 2 28 1 2688 3258 2836 3763 +19342 4 2 28 1 2759 3047 3088 3353 +19343 4 2 28 1 372 391 348 3920 +19344 4 2 28 1 784 1158 1316 3339 +19345 4 2 28 1 2808 2969 3376 3893 +19346 4 2 28 1 1617 1512 1727 3231 +19347 4 2 28 1 2852 3629 3321 3850 +19348 4 2 28 1 2522 62 61 1635 +19349 4 2 28 1 2672 2934 3599 3655 +19350 4 2 28 1 2844 3047 2759 3353 +19351 4 2 28 1 2783 2985 2680 3678 +19352 4 2 28 1 2742 3273 3223 3756 +19353 4 2 28 1 183 182 1830 419 +19354 4 2 28 1 2565 3896 2653 3911 +19355 4 2 28 1 2368 2414 2370 3715 +19356 4 2 28 1 2744 3303 3600 3663 +19357 4 2 28 1 1943 2042 2236 3827 +19358 4 2 28 1 2174 2031 1981 3594 +19359 4 2 28 1 2897 2912 3701 3743 +19360 4 2 28 1 2760 3173 3057 3656 +19361 4 2 28 1 2918 3344 2686 3366 +19362 4 2 28 1 2669 3475 3073 3699 +19363 4 2 28 1 2897 2913 2714 3565 +19364 4 2 28 1 3080 3034 3794 3897 +19365 4 2 28 1 178 285 509 1604 +19366 4 2 28 1 2921 2989 2688 3762 +19367 4 2 28 1 1575 1576 1689 3255 +19368 4 2 28 1 2182 2106 2124 3118 +19369 4 2 28 1 1842 2484 83 2460 +19370 4 2 28 1 2854 3316 3187 3880 +19371 4 2 28 1 2497 65 64 2345 +19372 4 2 28 1 3318 2811 3776 3875 +19373 4 2 28 1 2748 2798 3381 3928 +19374 4 2 28 1 108 109 2340 1336 +19375 4 2 28 1 1438 1461 1673 3327 +19376 4 2 28 1 2361 2368 2370 3715 +19377 4 2 28 1 284 426 507 3433 +19378 4 2 28 1 2746 3158 2888 3671 +19379 4 2 28 1 1622 240 241 681 +19380 4 2 28 1 270 207 403 3670 +19381 4 2 28 1 2215 2059 2039 3559 +19382 4 2 28 1 2060 2083 2081 3255 +19383 4 2 28 1 729 637 629 3634 +19384 4 2 28 1 1624 1623 1364 3891 +19385 4 2 28 1 2348 22 21 2295 +19386 4 2 28 1 548 237 236 1394 +19387 4 2 28 1 2392 2401 2367 3717 +19388 4 2 28 1 3044 3677 2664 3785 +19389 4 2 28 1 535 735 727 3499 +19390 4 2 28 1 366 364 362 3617 +19391 4 2 28 1 2272 2132 2224 3607 +19392 4 2 28 1 2671 3614 3009 3930 +19393 4 2 28 1 3321 3777 2765 3881 +19394 4 2 28 1 1252 161 1308 1960 +19395 4 2 28 1 3381 3695 861 3925 +19396 4 2 28 1 1688 1607 1645 3463 +19397 4 2 28 1 834 855 837 3641 +19398 4 2 28 1 2833 3854 3374 3870 +19399 4 2 28 1 2740 3120 2618 3676 +19400 4 2 28 1 3087 3114 2789 3775 +19401 4 2 28 1 1153 125 124 1665 +19402 4 2 28 1 2776 2681 3270 3626 +19403 4 2 28 1 2299 30 31 2427 +19404 4 2 28 1 1812 2885 2098 3217 +19405 4 2 28 1 892 1103 1157 3650 +19406 4 2 28 1 3359 3608 2767 3781 +19407 4 2 28 1 2746 2888 3225 3671 +19408 4 2 28 1 2776 2860 2681 3626 +19409 4 2 28 1 3504 3558 2788 3612 +19410 4 2 28 1 2647 3300 2566 3362 +19411 4 2 28 1 2754 2947 2884 3550 +19412 4 2 28 1 674 263 262 2095 +19413 4 2 28 1 2770 2978 3328 3840 +19414 4 2 28 1 687 1612 1343 3569 +19415 4 2 28 1 247 664 1343 1638 +19416 4 2 28 1 2404 2384 2385 3714 +19417 4 2 28 1 505 485 3728 3917 +19418 4 2 28 1 1953 2255 2203 3401 +19419 4 2 28 1 316 3681 3082 3789 +19420 4 2 28 1 565 564 563 3565 +19421 4 2 28 1 104 105 2393 1337 +19422 4 2 28 1 106 105 1572 2337 +19423 4 2 28 1 1048 1056 1047 3659 +19424 4 2 28 1 1905 1907 1896 3908 +19425 4 2 28 1 1412 1671 1433 3932 +19426 4 2 28 1 2565 2606 2653 3896 +19427 4 2 28 1 2697 2920 3526 3573 +19428 4 2 28 1 2985 3728 353 3917 +19429 4 2 28 1 1582 1446 1674 3378 +19430 4 2 28 1 772 253 1834 541 +19431 4 2 28 1 2729 3307 2932 3920 +19432 4 2 28 1 79 78 2495 1833 +19433 4 2 28 1 2052 2169 2122 3935 +19434 4 2 28 1 2062 1822 2063 3772 +19435 4 2 28 1 1772 2254 5 523 +19436 4 2 28 1 296 297 476 3500 +19437 4 2 28 1 1132 948 1134 3675 +19438 4 2 28 1 2258 2281 1819 3339 +19439 4 2 28 1 2203 2129 1963 3819 +19440 4 2 28 1 1630 241 242 668 +19441 4 2 28 1 2096 264 265 533 +19442 4 2 28 1 3447 3648 2800 3650 +19443 4 2 28 1 3290 3442 2737 3617 +19444 4 2 28 1 1634 1779 1589 3109 +19445 4 2 28 1 1621 238 239 690 +19446 4 2 28 1 2535 81 2256 2165 +19447 4 2 28 1 1216 931 930 3791 +19448 4 2 28 1 1982 1939 1983 3856 +19449 4 2 28 1 957 960 898 3656 +19450 4 2 28 1 113 112 1114 1670 +19451 4 2 28 1 2094 1697 1349 3601 +19452 4 2 28 1 722 245 244 1644 +19453 4 2 28 1 2993 3459 2854 3874 +19454 4 2 28 1 920 921 918 3790 +19455 4 2 28 1 1817 2214 2135 3341 +19456 4 2 28 1 1766 1356 1574 3007 +19457 4 2 28 1 1006 1039 1002 3831 +19458 4 2 28 1 1749 1630 1319 2999 +19459 4 2 28 1 3014 3675 3302 3807 +19460 4 2 28 1 1091 1144 1090 3674 +19461 4 2 28 1 2551 3673 3507 3799 +19462 4 2 28 1 1534 1767 1806 3456 +19463 4 2 28 1 1468 1523 1447 3749 +19464 4 2 28 1 1036 903 1214 3777 +19465 4 2 28 1 35 34 1836 2321 +19466 4 2 28 1 2164 1980 2211 3640 +19467 4 2 28 1 975 1122 1162 3800 +19468 4 2 28 1 610 625 609 3589 +19469 4 2 28 1 865 861 864 3695 +19470 4 2 28 1 991 1247 1241 3795 +19471 4 2 28 1 902 900 1173 3661 +19472 4 2 28 1 1070 1299 1252 3494 +19473 4 2 28 1 687 538 754 3569 +19474 4 2 28 1 952 951 950 3807 +19475 4 2 28 1 1320 1723 1786 3243 +19476 4 2 28 1 1332 54 2072 1821 +19477 4 2 28 1 848 847 1184 3776 +19478 4 2 28 1 619 552 554 3526 +19479 4 2 28 1 2082 2085 1843 3086 +19480 4 2 28 1 48 1768 1844 1355 +19481 4 2 28 1 1839 2213 2198 3143 +19482 4 2 28 1 2423 32 31 2327 +19483 4 2 28 1 317 318 319 3681 +19484 4 2 28 1 3025 3086 2646 3591 +19485 4 2 28 1 3240 3791 2818 3792 +19486 4 2 28 1 2669 3044 2795 3073 +19487 4 2 28 1 2739 3131 3655 3929 +19488 4 2 28 1 13 2334 2406 2487 +19489 4 2 28 1 2881 3469 3014 3807 +19490 4 2 28 1 3026 3535 2828 3808 +19491 4 2 28 1 2023 2024 1985 3802 +19492 4 2 28 1 2001 1982 1983 3856 +19493 4 2 28 1 1456 1436 1451 3812 +19494 4 2 28 1 1904 1905 1896 3908 +19495 4 2 28 1 435 459 281 3697 +19496 4 2 28 1 1400 1395 1422 3833 +19497 4 2 28 1 351 395 448 3693 +19498 4 2 28 1 2808 3245 2969 3893 +19499 4 2 28 1 1835 86 87 2463 +19500 4 2 28 1 1087 806 1304 3335 +19501 4 2 28 1 2884 2897 2714 3385 +19502 4 2 28 1 2382 2475 93 2406 +19503 4 2 28 1 2732 3070 3187 3821 +19504 4 2 28 1 2774 2905 2669 3699 +19505 4 2 28 1 156 157 791 2134 +19506 4 2 28 1 3191 2757 3578 3638 +19507 4 2 28 1 1062 1020 1021 3787 +19508 4 2 28 1 3024 3076 2624 3719 +19509 4 2 28 1 17 16 1342 2318 +19510 4 2 28 1 1243 1028 1076 3696 +19511 4 2 28 1 2947 3550 2754 3741 +19512 4 2 28 1 2681 3626 2860 3679 +19513 4 2 28 1 2989 3258 2688 3762 +19514 4 2 28 1 2397 102 103 1353 +19515 4 2 28 1 2705 3838 3547 3883 +19516 4 2 28 1 876 877 871 3762 +19517 4 2 28 1 1827 2234 2196 3746 +19518 4 2 28 1 1570 16 15 2296 +19519 4 2 28 1 759 736 758 3625 +19520 4 2 28 1 687 1343 538 3569 +19521 4 2 28 1 1509 1513 1512 3603 +19522 4 2 28 1 2987 3217 2687 3796 +19523 4 2 28 1 1991 2194 2121 2687 +19524 4 2 28 1 2390 106 107 1346 +19525 4 2 28 1 1045 1046 1044 3811 +19526 4 2 28 1 3184 3776 2811 3875 +19527 4 2 28 1 2260 2987 2107 3217 +19528 4 2 28 1 566 567 568 3622 +19529 4 2 28 1 255 254 735 2086 +19530 4 2 28 1 1205 1204 1272 3704 +19531 4 2 28 1 1341 164 517 3672 +19532 4 2 28 1 1769 3 111 2405 +19533 4 2 28 1 196 289 195 2080 +19534 4 2 28 1 480 3794 3034 3897 +19535 4 2 28 1 96 97 2468 2385 +19536 4 2 28 1 2820 2786 3102 3734 +19537 4 2 28 1 1645 1607 1325 3463 +19538 4 2 28 1 734 738 743 3677 +19539 4 2 28 1 393 386 506 3633 +19540 4 2 28 1 1697 1357 1349 3601 +19541 4 2 28 1 465 381 470 3867 +19542 4 2 28 1 1807 1458 1737 3300 +19543 4 2 28 1 3369 3520 2749 3806 +19544 4 2 28 1 2584 3472 2689 3911 +19545 4 2 28 1 11 32 2484 2252 +19546 4 2 28 1 417 343 494 3647 +19547 4 2 28 1 1562 1771 1728 3666 +19548 4 2 28 1 2405 1769 3 2538 +19549 4 2 28 1 2640 2964 2783 2981 +19550 4 2 28 1 2529 75 74 2425 +19551 4 2 28 1 277 191 192 2107 +19552 4 2 28 1 2418 98 99 2391 +19553 4 2 28 1 2142 140 139 798 +19554 4 2 28 1 3307 3693 373 3804 +19555 4 2 28 1 1584 1742 1332 3317 +19556 4 2 28 1 3439 3660 2881 3864 +19557 4 2 28 1 2788 3504 3034 3558 +19558 4 2 28 1 2709 3302 3014 3675 +19559 4 2 28 1 293 509 525 3561 +19560 4 2 28 1 2302 2304 2305 3873 +19561 4 2 28 1 1837 46 1348 2123 +19562 4 2 28 1 2739 3655 3101 3929 +19563 4 2 28 1 2495 2533 79 3931 +19564 4 2 28 1 1551 1787 1588 3358 +19565 4 2 28 1 90 89 2421 2139 +19566 4 2 28 1 3145 2732 3566 3821 +19567 4 2 28 1 1427 1451 1436 3857 +19568 4 2 28 1 505 380 485 3917 +19569 4 2 28 1 792 117 116 1669 +19570 4 2 28 1 1612 3007 1574 3569 +19571 4 2 28 1 882 875 883 3826 +19572 4 2 28 1 1626 1628 1640 3152 +19573 4 2 28 1 1613 1614 1615 3366 +19574 4 2 28 1 357 355 356 3678 +19575 4 2 28 1 846 844 845 3806 +19576 4 2 28 1 309 3102 3568 3734 +19577 4 2 28 1 1745 1678 1631 3333 +19578 4 2 28 1 2988 3696 3144 3795 +19579 4 2 28 1 966 934 1233 3834 +19580 4 2 28 1 3135 2705 3882 3898 +19581 4 2 28 1 522 293 215 3463 +19582 4 2 28 1 2714 2913 3516 3565 +19583 4 2 28 1 2732 3187 2975 3821 +19584 4 2 28 1 310 307 314 3734 +19585 4 2 28 1 2710 3788 3279 3932 +19586 4 2 28 1 2927 3719 3076 3752 +19587 4 2 28 1 956 1265 1266 3864 +19588 4 2 28 1 73 74 2453 2501 +19589 4 2 28 1 1862 2182 2104 3747 +19590 4 2 28 1 2535 1704 4 2165 +19591 4 2 28 1 1058 1293 1263 3417 +19592 4 2 28 1 2504 2502 2503 3778 +19593 4 2 28 1 698 643 716 3608 +19594 4 2 28 1 2061 2062 2065 3772 +19595 4 2 28 1 170 271 171 1640 +19596 4 2 28 1 1215 1209 1216 3792 +19597 4 2 28 1 2950 3447 2800 3650 +19598 4 2 28 1 1785 1430 1507 3379 +19599 4 2 28 1 2333 2191 1 1696 +19600 4 2 28 1 2602 2760 3773 3774 +19601 4 2 28 1 2169 2263 2125 3847 +19602 4 2 28 1 2682 3277 3015 3843 +19603 4 2 28 1 1202 880 879 3907 +19604 4 2 28 1 1185 825 858 3810 +19605 4 2 28 1 2434 2437 2436 3884 +19606 4 2 28 1 405 169 168 1636 +19607 4 2 28 1 2844 2932 2622 3274 +19608 4 2 28 1 119 118 1168 1667 +19609 4 2 28 1 1712 1536 1342 3737 +19610 4 2 28 1 315 3082 3102 3734 +19611 4 2 28 1 150 149 2146 786 +19612 4 2 28 1 1804 1718 1523 3584 +19613 4 2 28 1 2493 73 72 2420 +19614 4 2 28 1 101 14 2483 2408 +19615 4 2 28 1 1831 2331 36 2192 +19616 4 2 28 1 1839 2198 2093 3793 +19617 4 2 28 1 1808 2271 2101 3261 +19618 4 2 28 1 1294 1051 1052 3508 +19619 4 2 28 1 997 1000 969 3821 +19620 4 2 28 1 2234 2094 3601 3746 +19621 4 2 28 1 3085 3605 2862 3913 +19622 4 2 28 1 248 249 1612 687 +19623 4 2 28 1 2689 3082 2820 3102 +19624 4 2 28 1 1016 1017 959 3890 +19625 4 2 28 1 2659 2774 2897 2912 +19626 4 2 28 1 2736 3442 3398 3730 +19627 4 2 28 1 982 1148 1049 3667 +19628 4 2 28 1 2992 3695 2887 3907 +19629 4 2 28 1 1323 1751 1627 3090 +19630 4 2 28 1 545 269 268 2079 +19631 4 2 28 1 408 482 278 3408 +19632 4 2 28 1 2530 63 62 1351 +19633 4 2 28 1 2076 1820 2158 3116 +19634 4 2 28 1 289 412 481 3929 +19635 4 2 28 1 609 704 573 3872 +19636 4 2 28 1 562 560 561 3700 +19637 4 2 28 1 2484 82 11 2252 +19638 4 2 28 1 2053 87 88 2416 +19639 4 2 28 1 912 911 967 3850 +19640 4 2 28 1 2083 2149 2024 3803 +19641 4 2 28 1 2406 92 13 2487 +19642 4 2 28 1 350 441 337 3796 +19643 4 2 28 1 3012 3563 2992 3907 +19644 4 2 28 1 2901 3191 2701 3726 +19645 4 2 28 1 1906 2168 2199 3720 +19646 4 2 28 1 1675 1516 1558 3486 +19647 4 2 28 1 1929 2121 1931 3403 +19648 4 2 28 1 2828 3807 3302 3808 +19649 4 2 28 1 236 235 542 1608 +19650 4 2 28 1 2483 14 70 2408 +19651 4 2 28 1 711 728 628 3638 +19652 4 2 28 1 1806 1767 1541 3456 +19653 4 2 28 1 266 2105 677 3747 +19654 4 2 28 1 2201 2233 2036 3413 +19655 4 2 28 1 2510 2511 2512 3909 +19656 4 2 28 1 393 3633 3062 3730 +19657 4 2 28 1 1732 1525 1694 3900 +19658 4 2 28 1 2656 3128 3026 3556 +19659 4 2 28 1 1554 1550 1556 3163 +19660 4 2 28 1 2788 2655 3034 3504 +19661 4 2 28 1 1254 1255 1195 3853 +19662 4 2 28 1 2079 1818 2204 3273 +19663 4 2 28 1 1766 3007 1345 3388 +19664 4 2 28 1 3479 3800 2973 3831 +19665 4 2 28 1 2 2336 1770 2409 +19666 4 2 28 1 885 913 1180 3816 +19667 4 2 28 1 1374 1375 1373 3735 +19668 4 2 28 1 2029 79 2533 3931 +19669 4 2 28 1 66 67 2342 2496 +19670 4 2 28 1 2970 3240 2799 3834 +19671 4 2 28 1 1093 1038 1033 3859 +19672 4 2 28 1 380 344 346 3917 +19673 4 2 28 1 2801 2912 2659 2947 +19674 4 2 28 1 2236 2233 1942 3827 +19675 4 2 28 1 1227 1234 1125 3881 +19676 4 2 28 1 134 133 797 1650 +19677 4 2 28 1 2247 12 2537 2486 +19678 4 2 28 1 2380 2377 2395 3914 +19679 4 2 28 1 1697 50 2094 1349 +19680 4 2 28 1 1171 1170 1174 3854 +19681 4 2 28 1 1150 939 995 3862 +19682 4 2 28 1 453 313 328 3913 +19683 4 2 28 1 2964 2981 2640 3394 +19684 4 2 28 1 2495 2517 2533 3931 +19685 4 2 28 1 2165 1704 57 1583 +19686 4 2 28 1 2192 36 35 2293 +19687 4 2 28 1 169 294 170 1320 +19688 4 2 28 1 2451 2452 2444 3721 +19689 4 2 28 1 2881 3660 3469 3807 +19690 4 2 28 1 2732 2975 3566 3821 +19691 4 2 28 1 1841 80 81 2518 +19692 4 2 28 1 2770 3256 2978 3840 +19693 4 2 28 1 1165 904 998 3870 +19694 4 2 28 1 1574 1612 1345 3007 +19695 4 2 28 1 2264 2057 2058 3338 +19696 4 2 28 1 3605 3620 2862 3913 +19697 4 2 28 1 222 221 756 3694 +19698 4 2 28 1 888 979 1110 3863 +19699 4 2 28 1 2150 2026 1983 3878 +19700 4 2 28 1 712 697 561 3701 +19701 4 2 28 1 2633 2948 2768 2952 +19702 4 2 28 1 1403 1671 1412 3932 +19703 4 2 28 1 1366 1585 1773 3549 +19704 4 2 28 1 1095 136 135 1472 +19705 4 2 28 1 3135 3691 2705 3898 +19706 4 2 28 1 129 128 1263 1658 +19707 4 2 28 1 2320 18 19 1347 +19708 4 2 28 1 1197 923 924 3880 +19709 4 2 28 1 929 1221 927 3874 +19710 4 2 28 1 2740 3707 3561 3923 +19711 4 2 28 1 1267 1013 951 3808 +19712 4 2 28 1 287 396 397 3672 +19713 4 2 28 1 2338 98 97 2474 +19714 4 2 28 1 2523 78 77 2127 +19715 4 2 28 1 194 195 418 2091 +19716 4 2 28 1 1009 1003 976 3905 +19717 4 2 28 1 1489 1744 1470 3824 +19718 4 2 28 1 1124 854 852 3875 +19719 4 2 28 1 820 819 818 3840 +19720 4 2 28 1 1225 863 1152 3893 +19721 4 2 28 1 1109 1128 980 3817 +19722 4 2 28 1 770 662 664 3752 +19723 4 2 28 1 831 829 830 3894 +19724 4 2 28 1 1203 851 850 3887 +19725 4 2 28 1 2103 261 262 527 +19726 4 2 28 1 217 733 543 3756 +19727 4 2 28 1 2059 2200 2053 3653 +19728 4 2 28 1 2071 2023 2113 3802 +19729 4 2 28 1 1825 88 89 2469 +19730 4 2 28 1 962 908 909 3902 +19731 4 2 28 1 436 172 171 1626 +19732 4 2 28 1 2798 3543 2649 3928 +19733 4 2 28 1 954 981 1218 3660 +19734 4 2 28 1 2640 3074 2964 3394 +19735 4 2 28 1 2218 2120 1809 3313 +19736 4 2 28 1 330 325 331 3745 +19737 4 2 28 1 2681 2981 2783 3270 +19738 4 2 28 1 1140 1143 1193 3753 +19739 4 2 28 1 1087 1083 1086 3775 +19740 4 2 28 1 1332 1742 1773 3317 +19741 4 2 28 1 1054 1078 1111 3729 +19742 4 2 28 1 15 2333 1696 1756 +19743 4 2 28 1 3102 3568 2952 3805 +19744 4 2 28 1 1823 185 184 426 +19745 4 2 28 1 2097 190 189 428 +19746 4 2 28 1 259 260 2100 671 +19747 4 2 28 1 2714 3516 3385 3565 +19748 4 2 28 1 2232 1815 2119 3139 +19749 4 2 28 1 287 517 164 3672 +19750 4 2 28 1 37 38 2316 2006 +19751 4 2 28 1 1901 2129 2255 3631 +19752 4 2 28 1 1159 994 925 3886 +19753 4 2 28 1 826 828 827 3927 +19754 4 2 28 1 177 176 432 1616 +19755 4 2 28 1 218 799 1238 3871 +19756 4 2 28 1 816 814 1104 3922 +19757 4 2 28 1 146 145 2138 784 +19758 4 2 28 1 2729 3126 2952 3920 +19759 4 2 28 1 1751 1625 1615 3366 +19760 4 2 28 1 1636 1774 1646 3398 +19761 4 2 28 1 1597 1455 1690 3436 +19762 4 2 28 1 2818 3240 2993 3791 +19763 4 2 28 1 1089 1226 1235 3921 +19764 4 2 28 1 1179 1178 1220 3925 +19765 4 2 28 1 1460 1718 1804 3584 +19766 4 2 28 1 2812 3248 3107 3905 +19767 4 2 28 1 1661 1747 1759 3370 +19768 4 2 28 1 676 755 773 3726 +19769 4 2 28 1 83 84 2078 2480 +19770 4 2 28 1 804 126 125 1327 +19771 4 2 28 1 2684 2820 3082 3681 +19772 4 2 28 1 1578 1588 1579 3593 +19773 4 2 28 1 174 173 276 1625 +19774 4 2 28 1 1059 1061 1015 3809 +19775 4 2 28 1 501 491 423 3897 +19776 4 2 28 1 2595 2920 2697 3686 +19777 4 2 28 1 652 618 614 3719 +19778 4 2 28 1 2737 3290 3109 3442 +19779 4 2 28 1 2323 2303 2330 3725 +19780 4 2 28 1 1341 1611 164 3672 +19781 4 2 28 1 1843 180 291 513 +19782 4 2 28 1 1757 1632 1765 3898 +19783 4 2 28 1 2739 3332 2998 3929 +19784 4 2 28 1 44 1828 2060 1339 +19785 4 2 28 1 275 168 167 1646 +19786 4 2 28 1 2536 2528 2499 3644 +19787 4 2 28 1 1352 1733 1661 3780 +19788 4 2 28 1 2687 3056 2837 3796 +19789 4 2 28 1 1808 260 261 672 +19790 4 2 28 1 2684 2837 3056 3099 +19791 4 2 28 1 2123 2254 1772 3621 +19792 4 2 28 1 361 362 360 3679 +19793 4 2 28 1 2405 3 64 2538 +19794 4 2 28 1 26 13 2334 2406 +19795 4 2 28 1 2029 1833 79 3931 +19796 4 2 28 1 334 335 326 3805 +19797 4 2 28 1 2123 2254 47 1772 +19798 4 2 28 1 598 603 613 3885 +19799 4 2 28 1 2661 3141 3085 3639 +19800 4 2 28 1 1802 1557 1733 3780 +19801 4 2 28 1 2821 3862 3325 3886 +19802 4 2 28 1 1754 1745 1644 3333 +19803 4 2 28 1 272 188 189 2111 +19804 4 2 28 1 3016 3158 2746 3671 +19805 4 2 28 1 85 84 2417 1826 +19806 4 2 28 1 809 214 1112 3843 +19807 4 2 28 1 95 96 2415 2404 +19808 4 2 28 1 2998 3647 2986 3844 +19809 4 2 28 1 2339 95 94 2471 +19810 4 2 28 1 2145 152 151 803 +19811 4 2 28 1 689 691 542 3815 +19812 4 2 28 1 2986 3088 2733 3131 +19813 4 2 28 1 1508 1446 1582 3378 +19814 4 2 28 1 1774 1779 1646 3398 +19815 4 2 28 1 467 461 460 3923 +19816 4 2 28 1 2820 2964 2640 3074 +19817 4 2 28 1 1994 1993 1964 3688 +19818 4 2 28 1 1324 1725 1614 2918 +19819 4 2 28 1 2897 2912 2774 3701 +19820 4 2 28 1 3048 3248 2812 3905 +19821 4 2 28 1 187 188 406 1809 +19822 4 2 28 1 3001 3201 2754 3550 +19823 4 2 28 1 2013 2014 2012 3733 +19824 4 2 28 1 1852 1956 1850 3426 +19825 4 2 28 1 1348 1575 45 1837 +19826 4 2 28 1 1348 1576 1575 3591 +19827 4 2 28 1 1621 1633 1609 3077 +19828 4 2 28 1 2773 2618 3120 3676 +19829 4 2 28 1 2940 3765 2964 3789 +19830 4 2 28 1 1930 1929 1931 3403 +19831 4 2 28 1 781 128 127 1478 +19832 4 2 28 1 1972 2156 2187 3528 +19833 4 2 28 1 3034 3080 2773 3897 +19834 4 2 28 1 107 108 2396 1573 +19835 4 2 28 1 463 316 314 3789 +19836 4 2 28 1 2153 2210 2095 2900 +19837 4 2 28 1 2927 3619 3719 3752 +19838 4 2 28 1 1102 132 131 1729 +19839 4 2 28 1 2897 2947 2912 3743 +19840 4 2 28 1 2779 3074 2640 3394 +19841 4 2 28 1 1822 41 2093 1333 +19842 4 2 28 1 1105 1098 986 3934 +19843 4 2 28 1 2697 2873 3474 3526 +19844 4 2 28 1 1613 174 175 409 +19845 4 2 28 1 2782 3296 3038 3580 +19846 4 2 28 1 2868 3506 3138 3520 +19847 4 2 28 1 1447 1448 1468 3749 +19848 4 2 28 1 1643 1710 1472 3298 +19849 4 2 28 1 179 178 509 1325 +19850 4 2 28 1 2795 3073 3589 3872 +19851 4 2 28 1 2583 2680 2783 2985 +19852 4 2 28 1 225 1232 787 3738 +19853 4 2 28 1 164 1611 287 3672 +19854 4 2 28 1 2778 3617 3442 3633 +19855 4 2 28 1 503 485 353 3728 +19856 4 2 28 1 2669 2905 3475 3699 +19857 4 2 28 1 285 178 177 1604 +19858 4 2 28 1 2724 3196 3184 3661 +19859 4 2 28 1 193 192 2087 414 +19860 4 2 28 1 539 1862 266 3747 +19861 4 2 28 1 356 370 446 3764 +19862 4 2 28 1 1843 513 291 3621 +19863 4 2 28 1 2254 1843 291 3621 +19864 4 2 28 1 2782 3046 3296 3580 +19865 4 2 28 1 1859 1857 1860 3739 +19866 4 2 28 1 1945 2099 1947 3933 +19867 4 2 28 1 2348 2410 2378 3692 +19868 4 2 28 1 620 617 596 3836 +19869 4 2 28 1 2116 2102 2245 3010 +19870 4 2 28 1 1080 1297 1031 3784 +19871 4 2 28 1 2686 3605 2922 3879 +19872 4 2 28 1 673 264 263 1811 +19873 4 2 28 1 2669 2905 2774 3801 +19874 4 2 28 1 3376 3893 2969 3927 +19875 4 2 28 1 137 10 1987 1311 +19876 4 2 28 1 2379 65 66 2531 +19877 4 2 28 1 2675 3249 2906 3421 +19878 4 2 28 1 2256 2067 2068 3370 +19879 4 2 28 1 2773 3620 3120 3897 +19880 4 2 28 1 2972 3196 2749 3806 +19881 4 2 28 1 2953 3729 3305 3863 +19882 4 2 28 1 3062 3141 2779 3588 +19883 4 2 28 1 514 215 293 3463 +19884 4 2 28 1 2837 3745 3647 3796 +19885 4 2 28 1 1641 1334 1634 3109 +19886 4 2 28 1 1378 1681 1381 3751 +19887 4 2 28 1 1793 1713 1581 3793 +19888 4 2 28 1 2786 2661 3085 3639 +19889 4 2 28 1 1439 1438 1440 3904 +19890 4 2 28 1 258 257 683 1810 +19891 4 2 28 1 677 266 265 2105 +19892 4 2 28 1 1921 1962 2270 3293 +19893 4 2 28 1 2860 3626 2776 3924 +19894 4 2 28 1 2774 2913 2897 3700 +19895 4 2 28 1 2880 2729 3353 3920 +19896 4 2 28 1 2948 3080 2768 3805 +19897 4 2 28 1 464 471 370 3765 +19898 4 2 28 1 1319 1678 1749 2999 +19899 4 2 28 1 341 376 379 3868 +19900 4 2 28 1 1786 1636 1320 3243 +19901 4 2 28 1 1721 1659 1781 3335 +19902 4 2 28 1 605 638 606 3741 +19903 4 2 28 1 2912 2947 2801 3836 +19904 4 2 28 1 1607 1682 1325 3561 +19905 4 2 28 1 2061 1580 42 3772 +19906 4 2 28 1 3014 3302 2828 3807 +19907 4 2 28 1 258 259 2116 529 +19908 4 2 28 1 1771 1562 1463 3666 +19909 4 2 28 1 3305 3434 2836 3863 +19910 4 2 28 1 185 186 278 2115 +19911 4 2 28 1 2786 3085 2948 3568 +19912 4 2 28 1 143 142 1815 790 +19913 4 2 28 1 528 243 242 1319 +19914 4 2 28 1 2697 3526 3474 3573 +19915 4 2 28 1 1927 1925 2217 3560 +19916 4 2 28 1 2646 3168 3086 3368 +19917 4 2 28 1 637 656 655 3839 +19918 4 2 28 1 2478 2492 2446 3877 +19919 4 2 28 1 2952 3568 2948 3805 +19920 4 2 28 1 118 117 1191 1326 +19921 4 2 28 1 2778 2779 3394 3633 +19922 4 2 28 1 3224 3381 2748 3695 +19923 4 2 28 1 2782 3209 3046 3580 +19924 4 2 28 1 1745 1631 1644 3333 +19925 4 2 28 1 2747 3540 2984 3619 +19926 4 2 28 1 2933 3441 2888 3738 +19927 4 2 28 1 2168 2069 2199 3720 +19928 4 2 28 1 1746 1499 1670 3277 +19929 4 2 28 1 1343 1719 1638 3752 +19930 4 2 28 1 385 383 399 3879 +19931 4 2 28 1 2927 3221 2747 3619 +19932 4 2 28 1 7 179 522 1645 +19933 4 2 28 1 194 283 193 1813 +19934 4 2 28 1 1455 1597 1666 3436 +19935 4 2 28 1 1792 1401 1686 3754 +19936 4 2 28 1 2013 2037 2014 3733 +19937 4 2 28 1 2820 3681 2940 3789 +19938 4 2 28 1 176 175 282 1324 +19939 4 2 28 1 772 1834 253 2130 +19940 4 2 28 1 127 126 1163 1662 +19941 4 2 28 1 3012 3890 3563 3907 +19942 4 2 28 1 339 448 480 3794 +19943 4 2 28 1 2895 3359 3001 3732 +19944 4 2 28 1 2684 2940 2820 3681 +19945 4 2 28 1 164 163 287 1611 +19946 4 2 28 1 2173 1965 2064 3642 +19947 4 2 28 1 1697 3601 2094 3746 +19948 4 2 28 1 2906 3421 3249 3839 +19949 4 2 28 1 154 155 1166 1824 +19950 4 2 28 1 1574 1345 1766 3007 +19951 4 2 28 1 669 743 761 3785 +19952 4 2 28 1 1584 54 2072 1332 +19953 4 2 28 1 311 3085 3568 3913 +19954 4 2 28 1 1576 1348 1577 3591 +19955 4 2 28 1 335 347 351 3804 +19956 4 2 28 1 2880 3126 2729 3920 +19957 4 2 28 1 1299 159 160 2144 +19958 4 2 28 1 1755 1537 1471 3823 +19959 4 2 28 1 1434 1757 1443 3691 +19960 4 2 28 1 474 473 342 3844 +19961 4 2 28 1 2613 3856 2997 3878 +19962 4 2 28 1 298 466 394 3730 +19963 4 2 28 1 2252 2484 82 1842 +19964 4 2 28 1 2029 79 80 2533 +19965 4 2 28 1 3824 3842 2938 3876 +19966 4 2 28 1 151 150 1816 1300 +19967 4 2 28 1 1502 1673 1535 3686 +19968 4 2 28 1 2406 2475 92 2487 +19969 4 2 28 1 806 122 121 1330 +19970 4 2 28 1 2332 24 25 2349 +19971 4 2 28 1 408 186 187 2108 +19972 4 2 28 1 2158 138 137 1277 +19973 4 2 28 1 2952 3102 2948 3568 +19974 4 2 28 1 1653 111 110 2405 +19975 4 2 28 1 2120 2220 2111 3313 +19976 4 2 28 1 1514 1535 1695 3686 +19977 4 2 28 1 2897 2714 3385 3565 +19978 4 2 28 1 2422 93 94 2402 +19979 4 2 28 1 1769 111 1653 2405 +19980 4 2 28 1 68 67 2534 2375 +19981 4 2 28 1 3287 3553 2756 3622 +19982 4 2 28 1 2126 10 197 521 +19983 4 2 28 1 778 2249 6 1768 +19984 4 2 28 1 1655 1333 1731 3772 +19985 4 2 28 1 1506 1736 1788 3546 +19986 4 2 28 1 544 250 249 1345 +19987 4 2 28 1 2884 3385 2895 3732 +19988 4 2 28 1 3378 3379 2752 3552 +19989 4 2 28 1 2101 2102 2100 3261 +19990 4 2 28 1 664 247 246 1638 +19991 4 2 28 1 23 22 2387 2329 +19992 4 2 28 1 2108 2044 2218 3408 +19993 4 2 28 1 2659 2912 2897 2947 +19994 4 2 28 1 2408 2483 101 2398 +19995 4 2 28 1 3099 3745 2837 3796 +19996 4 2 28 1 2733 3131 3088 3697 +19997 4 2 28 1 1310 8 136 1664 +19998 4 2 28 1 2029 2231 1833 3931 +19999 4 2 28 1 253 254 1834 541 +20000 4 2 28 1 1456 1451 1477 3812 +20001 4 2 28 1 2226 1915 1969 3451 +20002 4 2 28 1 1325 1682 1604 3561 +20003 4 2 28 1 3320 2765 3777 3881 +20004 4 2 28 1 1812 2098 2194 3217 +20005 4 2 28 1 234 8 765 1329 +20006 4 2 28 1 130 129 1293 1335 +20007 4 2 28 1 481 412 413 3929 +20008 4 2 28 1 3085 3141 2661 3867 +20009 4 2 28 1 745 721 540 3768 +20010 4 2 28 1 2148 144 143 1289 +20011 4 2 28 1 1822 2061 42 3772 +20012 4 2 28 1 539 677 742 3747 +20013 4 2 28 1 3411 3831 2855 3921 +20014 4 2 28 1 2333 1 15 1696 +20015 4 2 28 1 158 159 807 2135 +20016 4 2 28 1 1704 4 58 2535 +20017 4 2 28 1 2702 3191 2901 3885 +20018 4 2 28 1 83 82 2484 1842 +20019 4 2 28 1 485 503 407 3728 +20020 4 2 28 1 142 141 2151 1312 +20021 4 2 28 1 2115 2108 186 3408 +20022 4 2 28 1 2916 3504 2788 3612 +20023 4 2 28 1 1743 1616 1604 3707 +20024 4 2 28 1 1514 1486 1502 3686 +20025 4 2 28 1 1814 197 196 511 +20026 4 2 28 1 2476 91 90 2133 +20027 4 2 28 1 2169 1976 2122 3935 +20028 4 2 28 1 3148 2702 3365 3885 +20029 4 2 28 1 255 256 1832 535 +20030 4 2 28 1 2932 3353 2729 3920 +20031 4 2 28 1 2094 1838 1846 3601 +20032 4 2 28 1 3662 3783 3190 3849 +20033 4 2 28 1 1370 1373 1794 3503 +20034 4 2 28 1 2113 2223 1823 3433 +20035 4 2 28 1 2483 100 101 2398 +20036 4 2 28 1 1551 1588 1791 3358 +20037 4 2 28 1 2732 3145 3070 3821 +20038 4 2 28 1 3294 3854 2833 3870 +20039 4 2 28 1 76 12 2537 2247 +20040 4 2 28 1 9 269 766 1818 +20041 4 2 28 1 1963 1924 2203 3819 +20042 4 2 28 1 429 190 191 1812 +20043 4 2 28 1 92 93 2475 2406 +20044 4 2 28 1 1613 1615 1625 3366 +20045 4 2 28 1 2198 2063 2093 3793 +20046 4 2 28 1 1335 1717 1658 3417 +20047 4 2 28 1 1927 1926 1925 3560 +20048 4 2 28 1 1471 1537 1490 3823 +20049 4 2 28 1 2940 2985 2783 3765 +20050 4 2 28 1 2255 2017 1901 3631 +20051 4 2 28 1 682 257 256 2117 +20052 4 2 28 1 2913 3565 2897 3700 +20053 4 2 28 1 183 184 284 2112 +20054 4 2 28 1 1770 102 2 2409 +20055 4 2 28 1 2344 100 99 2481 +20056 4 2 28 1 1759 1583 1704 3370 +20057 4 2 28 1 1843 2085 181 513 +20058 4 2 28 1 1583 1759 1747 3370 +20059 4 2 28 1 2655 3129 3034 3504 +20060 4 2 28 1 1454 1732 1694 3900 +20061 4 2 28 1 124 123 782 1455 +20062 4 2 28 1 1304 121 120 1659 +20063 4 2 28 1 1581 2093 41 1333 +20064 4 2 28 1 2015 141 140 1302 +20065 4 2 28 1 2336 20 2 1770 +20066 4 2 28 1 1820 139 138 1292 +20067 4 2 28 1 1334 166 167 398 +20068 4 2 28 1 2986 3647 2837 3745 +20069 4 2 28 1 2776 3626 3270 3924 +20070 4 2 28 1 1403 1396 1753 3788 +20071 4 2 28 1 3044 3509 2795 3589 +20072 4 2 28 1 161 9 1308 2152 +20073 4 2 28 1 2820 3102 3082 3734 +20074 4 2 28 1 2220 2098 2097 2885 +20075 4 2 28 1 2087 2260 2088 2987 +20076 4 2 28 1 1252 160 161 1960 +20077 4 2 28 1 593 692 753 3930 +20078 4 2 28 1 182 290 181 2085 +20079 4 2 28 1 2256 2165 2067 3370 +20080 4 2 28 1 1575 2060 45 1837 +20081 4 2 28 1 3328 3432 2770 3840 +20082 4 2 28 1 2051 85 86 2482 +20083 4 2 28 1 1772 1354 1649 3621 +20084 4 2 28 1 166 165 280 1641 +20085 4 2 28 1 1612 1574 1343 3569 +20086 4 2 28 1 1795 1649 1354 3621 +20087 4 2 28 1 2189 2086 1832 3499 +20088 4 2 28 1 1772 1649 2123 3621 +20089 4 2 28 1 2697 3474 3077 3573 +20090 4 2 28 1 1772 47 2123 1649 +20091 4 2 28 1 2336 2 21 2409 +20092 4 2 28 1 2024 2023 2071 3802 +20093 4 2 28 1 2765 3092 3321 3881 +20094 4 2 28 1 2331 36 37 1831 +20095 4 2 28 1 2247 91 12 2486 +20096 4 2 28 1 2972 3776 3196 3806 +20097 4 2 28 1 507 502 388 3924 +20098 4 2 28 1 1772 5 162 523 +20099 4 2 28 1 2120 2111 1809 3313 +20100 4 2 28 1 12 75 2537 2486 +20101 4 2 28 1 2897 2774 3700 3701 +20102 4 2 28 1 1611 1341 1706 3672 +20103 4 2 28 1 1674 1492 1780 3387 +20104 4 2 28 1 2254 180 5 523 +20105 4 2 28 1 4 81 2535 2165 +20106 4 2 28 1 1737 1473 1807 3300 +20107 4 2 28 1 1 38 2191 2333 +20108 4 2 28 1 777 251 250 1683 +20109 4 2 28 1 2591 2689 3472 3911 +20110 4 2 28 1 2773 3080 2862 3620 +20111 4 2 28 1 739 268 267 2106 +20112 4 2 28 1 1634 1334 1779 3109 +20113 4 2 28 1 3184 2811 3320 3875 +20114 4 2 28 1 287 397 517 3672 +20115 4 2 28 1 157 158 1295 1817 +20116 4 2 28 1 2253 2179 1874 3828 +20117 4 2 28 1 539 267 266 1862 +20118 4 2 28 1 2094 51 1697 3746 +20119 4 2 28 1 235 234 732 1600 +20120 4 2 28 1 123 122 1154 1666 +20121 4 2 28 1 1624 1485 1623 3891 +20122 4 2 28 1 1309 112 7 1499 +20123 4 2 28 1 2105 266 1862 3747 +20124 4 2 28 1 2682 3015 3314 3843 +20125 4 2 28 1 2913 3516 3565 3622 +20126 4 2 28 1 485 380 346 3917 +20127 4 2 28 1 2897 3385 2884 3743 +20128 4 2 28 1 2897 3700 3565 3701 +20129 4 2 28 1 2194 2260 2107 3217 +20130 4 2 28 1 42 1580 1333 3772 +20131 4 2 28 1 2779 3074 3588 3639 +20132 4 2 28 1 2768 2952 2948 3805 +20133 4 2 28 1 2105 1862 2104 3747 +20134 4 2 28 1 1343 1574 1719 3569 +20135 4 2 28 1 1491 1587 1684 3842 +20136 4 2 28 1 2768 3693 3307 3804 +20137 4 2 28 1 2812 3107 3331 3905 +20138 4 2 28 1 2783 2964 2940 3765 +20139 4 2 28 1 2044 2115 2223 3408 +20140 4 2 28 1 2258 1819 2138 3339 +20141 4 2 28 1 2783 2981 2964 3764 +20142 4 2 28 1 149 148 2004 1151 +20143 4 2 28 1 2113 1823 2112 3433 +20144 4 2 28 1 3056 3099 2837 3796 +20145 4 2 28 1 2684 3056 2940 3681 +20146 4 2 28 1 2820 3082 3681 3789 +20147 4 2 28 1 2897 3565 3385 3743 +20148 4 2 28 1 2653 2963 2880 3615 +20149 4 2 28 1 155 156 1189 2140 +20150 4 2 28 1 2733 2934 3131 3697 +20151 4 2 28 1 42 1333 1822 3772 +20152 4 2 28 1 1808 2101 2100 3261 +20153 4 2 28 1 2233 2236 2042 3827 +20154 4 2 28 1 116 115 1192 1495 +20155 4 2 28 1 2740 3561 3017 3923 +20156 4 2 28 1 3498 3578 2757 3638 +20157 4 2 28 1 1801 1697 1338 3746 +20158 4 2 28 1 1632 1566 1765 3898 +20159 4 2 28 1 173 172 479 1323 +20160 4 2 28 1 2254 5 47 1772 +20161 4 2 28 1 3082 3102 2689 3126 +20162 4 2 28 1 131 130 789 1657 +20163 4 2 28 1 1844 49 48 1355 +20164 4 2 28 1 532 246 245 1322 +20165 4 2 28 1 3336 3421 2801 3836 +20166 4 2 28 1 2820 3074 2786 3734 +20167 4 2 28 1 2786 3639 3568 3734 +20168 4 2 28 1 57 56 2067 1583 +20169 4 2 28 1 152 153 1291 1941 +20170 4 2 28 1 2061 1822 2062 3772 +20171 4 2 28 1 2922 2661 3141 3867 +20172 4 2 28 1 2117 1810 2197 3356 +20173 4 2 28 1 1354 162 163 512 +20174 4 2 28 1 2940 2964 2820 3789 +20175 4 2 28 1 1580 1731 1333 3772 +20176 4 2 28 1 2249 6 252 778 +20177 4 2 28 1 1355 1766 1683 3388 +20178 4 2 28 1 772 253 252 2130 +20179 4 2 28 1 3080 3620 2773 3897 +20180 4 2 28 1 2689 3102 2952 3126 +20181 4 2 28 1 2252 33 11 2335 +20182 4 2 28 1 1338 1697 51 3746 +20183 4 2 28 1 2963 3082 2689 3126 +20184 4 2 28 1 2964 3074 2820 3789 +20185 4 2 28 1 2107 1812 2194 3217 +20186 4 2 28 1 50 49 1838 1349 +20187 4 2 28 1 2094 1827 51 3746 +20188 4 2 28 1 2334 13 27 2487 +20189 4 2 28 1 2862 3620 3080 3913 +20190 4 2 28 1 45 46 1348 1837 +20191 4 2 28 1 1502 1535 1514 3686 +20192 4 2 28 1 63 3 1769 2538 +20193 4 2 28 1 2779 3062 3588 3633 +20194 4 2 28 1 1307 133 132 1328 +20195 4 2 28 1 2768 3804 2952 3805 +20196 4 2 28 1 2249 48 6 1768 +20197 4 2 28 1 2408 69 14 2536 +20198 4 2 28 1 2736 3398 3243 3730 +20199 4 2 28 1 2906 3634 3421 3839 +20200 4 2 28 1 1659 1330 1781 3335 +20201 4 2 28 1 1827 1338 51 3746 +20202 4 2 28 1 39 1 2191 1696 +20203 4 2 28 1 1340 55 56 1829 +20204 4 2 28 1 778 6 251 1768 +20205 4 2 28 1 2779 3588 3394 3633 +20206 4 2 28 1 1839 40 39 1350 +20207 4 2 28 1 2684 3099 3056 3681 +20208 4 2 28 1 1341 164 165 517 +20209 4 2 28 1 2820 3734 3082 3789 +20210 4 2 28 1 1827 2094 2234 3746 +20211 4 2 28 1 1352 1802 1733 3780 +20212 4 2 28 1 3074 3734 2820 3789 +20213 4 2 28 1 135 134 1305 1710 +20214 4 2 28 1 2783 3764 2964 3765 +20215 4 2 28 1 110 109 1724 2403 +20216 4 2 28 1 3074 3394 2779 3588 +20217 4 2 28 1 1585 52 53 2074 +20218 4 2 28 1 2115 2044 2108 3408 +20219 4 2 28 1 53 54 1332 1821 +20220 4 2 28 1 1306 114 113 1331 +20221 4 2 28 1 1704 57 4 2165 +20222 4 2 28 1 3085 3568 2786 3639 +20223 4 2 28 1 42 41 1822 1333 +20224 4 2 28 1 2786 3568 3102 3734 +20225 4 2 28 1 51 52 1338 1827 +20226 4 2 28 1 248 247 538 1343 +20227 4 2 28 1 3074 3639 2786 3734 +20228 4 2 28 1 1843 181 180 513 +20229 4 2 28 1 55 54 2072 1584 +20230 4 2 28 1 43 42 2061 1580 +20231 4 2 28 1 2948 3568 3085 3913 +20232 4 2 28 1 2094 51 50 1697 +20233 4 2 28 1 2254 2123 1843 3621 +20234 4 2 28 1 45 44 2060 1575 +20235 4 2 28 1 44 43 1828 1339 +20236 4 2 28 1 47 46 2123 1649 +20237 4 2 28 1 2093 41 40 1581 +20238 4 2 28 1 3730 3152 295 3243 +20239 4 2 28 1 3730 295 3152 3500 +20240 4 2 28 1 3722 2943 3179 2752 +20241 4 2 28 1 537 1394 2907 1609 +20242 4 2 28 1 2907 1394 537 548 +20243 4 2 28 1 3210 2459 2460 2461 +20244 4 2 28 1 3210 2460 2459 3040 +20245 4 2 28 1 3232 3559 3910 3042 +20246 4 2 28 1 3910 3559 3232 2720 +20247 4 2 28 1 2409 3692 1770 2397 +20248 4 2 28 1 1353 1770 3692 2397 +20249 4 2 28 1 1353 3692 1770 3228 +20250 4 2 28 1 3208 1547 1542 2979 +20251 4 2 28 1 3208 1542 1547 1532 +20252 4 2 28 1 3722 2943 2549 3636 +20253 4 2 28 1 3722 2549 2943 2752 +20254 4 2 28 1 2341 2329 2991 2294 +20255 4 2 28 1 2991 2329 2341 2387 +20256 4 2 28 1 521 3101 1814 2126 +20257 4 2 28 1 1814 3101 521 292 +20258 4 2 28 1 1287 3434 3305 1024 +20259 4 2 28 1 1287 3305 3434 3669 +20260 4 2 28 1 1660 1192 115 1495 +20261 4 2 28 1 1660 115 1192 808 +20262 4 2 28 1 3918 3832 3709 2561 +20263 4 2 28 1 3918 3709 3832 3207 +20264 4 2 28 1 3779 3624 2865 2856 +20265 4 2 28 1 3779 2865 3624 2576 +20266 4 2 28 1 3515 2865 3624 2856 +20267 4 2 28 1 3515 3624 2865 2576 +20268 4 2 28 1 2520 3703 3545 2515 +20269 4 2 28 1 3545 3703 2520 2861 +20270 4 2 28 1 3624 3779 2758 2856 +20271 4 2 28 1 2758 3779 3624 2861 +20272 4 2 28 1 3423 2979 1652 3208 +20273 4 2 28 1 3423 1652 2979 3175 +20274 4 2 28 1 3758 2571 2966 2870 +20275 4 2 28 1 3758 2966 2571 3497 +20276 4 2 28 1 3237 2966 2571 2870 +20277 4 2 28 1 3237 2571 2966 3497 +20278 4 2 28 1 3317 3384 2824 2712 +20279 4 2 28 1 2824 3384 3317 1776 +20280 4 2 28 1 3342 2592 3146 2731 +20281 4 2 28 1 3342 3146 2592 2859 +20282 4 2 28 1 3597 2806 2670 3216 +20283 4 2 28 1 3597 2670 2806 3289 +20284 4 2 28 1 3933 1876 2874 3004 +20285 4 2 28 1 3933 2874 1876 1945 +20286 4 2 28 1 2742 3871 2859 3146 +20287 4 2 28 1 2859 3871 2742 3512 +20288 4 2 28 1 3525 1916 2058 1853 +20289 4 2 28 1 3525 2058 1916 3338 +20290 4 2 28 1 3484 3186 3185 2771 +20291 4 2 28 1 3484 3185 3186 2651 +20292 4 2 28 1 3616 3210 3415 2809 +20293 4 2 28 1 3616 3415 3210 2713 +20294 4 2 28 1 3803 1828 2904 3255 +20295 4 2 28 1 3803 2904 1828 2065 +20296 4 2 28 1 3688 1963 1959 1964 +20297 4 2 28 1 3688 1959 1963 3035 +20298 4 2 28 1 1292 2142 3116 1820 +20299 4 2 28 1 1292 3116 2142 798 +20300 4 2 28 1 3317 3384 3200 1528 +20301 4 2 28 1 3200 3384 3317 2712 +20302 4 2 28 1 3934 1099 1100 1098 +20303 4 2 28 1 3934 1100 1099 3227 +20304 4 2 28 1 3376 2719 2808 2817 +20305 4 2 28 1 3376 2808 2719 2969 +20306 4 2 28 1 2598 2808 2719 2817 +20307 4 2 28 1 2598 2719 2808 2969 +20308 4 2 28 1 3601 1847 1845 1846 +20309 4 2 28 1 3601 1845 1847 2676 +20310 4 2 28 1 3879 476 490 385 +20311 4 2 28 1 3879 490 476 3500 +20312 4 2 28 1 2016 3110 2202 2280 +20313 4 2 28 1 2202 3110 2016 2738 +20314 4 2 28 1 1552 3358 1676 1551 +20315 4 2 28 1 1676 3358 1552 2904 +20316 4 2 28 1 3103 2325 2301 3031 +20317 4 2 28 1 3103 2301 2325 2317 +20318 4 2 28 1 3921 941 3070 1226 +20319 4 2 28 1 3921 3070 941 3452 +20320 4 2 28 1 1146 3070 941 1226 +20321 4 2 28 1 1146 941 3070 3452 +20322 4 2 28 1 3292 3450 3514 2626 +20323 4 2 28 1 3514 3450 3292 2726 +20324 4 2 28 1 531 1622 240 1321 +20325 4 2 28 1 531 240 1622 681 +20326 4 2 28 1 1437 3427 3065 1409 +20327 4 2 28 1 3065 3427 1437 2938 +20328 4 2 28 1 3328 1099 891 3227 +20329 4 2 28 1 3328 891 1099 1097 +20330 4 2 28 1 3309 1282 1019 1281 +20331 4 2 28 1 3309 1019 1282 3291 +20332 4 2 28 1 3566 2815 3530 2975 +20333 4 2 28 1 3566 3530 2815 3506 +20334 4 2 28 1 3502 757 752 3323 +20335 4 2 28 1 3502 752 757 715 +20336 4 2 28 1 3674 1275 3349 3139 +20337 4 2 28 1 3674 3349 1275 1091 +20338 4 2 28 1 1141 3349 1275 3139 +20339 4 2 28 1 1141 1275 3349 1091 +20340 4 2 28 1 3236 3438 3235 2879 +20341 4 2 28 1 3235 3438 3236 2696 +20342 4 2 28 1 3768 3511 540 667 +20343 4 2 28 1 3768 540 3511 3100 +20344 4 2 28 1 230 540 3511 667 +20345 4 2 28 1 230 3511 540 3100 +20346 4 2 28 1 2257 3118 1993 2124 +20347 4 2 28 1 1993 3118 2257 2668 +20348 4 2 28 1 3875 857 856 3224 +20349 4 2 28 1 3875 856 857 854 +20350 4 2 28 1 3235 3698 3438 2548 +20351 4 2 28 1 3438 3698 3235 2879 +20352 4 2 28 1 3389 622 623 3201 +20353 4 2 28 1 3389 623 622 611 +20354 4 2 28 1 3393 1026 1155 3325 +20355 4 2 28 1 3393 1155 1026 1285 +20356 4 2 28 1 3256 822 3840 821 +20357 4 2 28 1 3256 3840 822 2978 +20358 4 2 28 1 3517 992 1181 869 +20359 4 2 28 1 3517 1181 992 3138 +20360 4 2 28 1 2982 2529 2526 2501 +20361 4 2 28 1 2982 2526 2529 3189 +20362 4 2 28 1 3437 2665 1553 2891 +20363 4 2 28 1 3437 1553 2665 3163 +20364 4 2 28 1 2593 3922 3328 2832 +20365 4 2 28 1 3328 3922 2593 3432 +20366 4 2 28 1 3899 1610 1385 3754 +20367 4 2 28 1 3899 1385 1610 3445 +20368 4 2 28 1 3076 1368 3752 1571 +20369 4 2 28 1 3076 3752 1368 2927 +20370 4 2 28 1 1719 3752 1368 1571 +20371 4 2 28 1 1719 1368 3752 2927 +20372 4 2 28 1 3851 2836 2693 2585 +20373 4 2 28 1 3851 2693 2836 2953 +20374 4 2 28 1 2134 1295 3341 1817 +20375 4 2 28 1 2134 3341 1295 791 +20376 4 2 28 1 619 3573 2920 725 +20377 4 2 28 1 2920 3573 619 3526 +20378 4 2 28 1 674 1811 263 2095 +20379 4 2 28 1 263 1811 674 673 +20380 4 2 28 1 3816 1135 1131 1180 +20381 4 2 28 1 3816 1131 1135 3506 +20382 4 2 28 1 3473 1253 1213 1040 +20383 4 2 28 1 3473 1213 1253 3181 +20384 4 2 28 1 3519 3909 2496 2511 +20385 4 2 28 1 2496 3909 3519 2875 +20386 4 2 28 1 3256 823 822 821 +20387 4 2 28 1 3256 822 823 3124 +20388 4 2 28 1 3581 2504 2506 2840 +20389 4 2 28 1 3581 2506 2504 2505 +20390 4 2 28 1 3495 1364 1698 1363 +20391 4 2 28 1 3495 1698 1364 2944 +20392 4 2 28 1 3494 1065 1066 1070 +20393 4 2 28 1 3494 1066 1065 3072 +20394 4 2 28 1 3540 612 631 608 +20395 4 2 28 1 3540 631 612 3221 +20396 4 2 28 1 3586 2454 2420 2457 +20397 4 2 28 1 3586 2420 2454 2983 +20398 4 2 28 1 3651 2449 2479 2849 +20399 4 2 28 1 3651 2479 2449 2470 +20400 4 2 28 1 512 3672 477 287 +20401 4 2 28 1 477 3672 512 3621 +20402 4 2 28 1 3820 3093 3195 2728 +20403 4 2 28 1 3820 3195 3093 3682 +20404 4 2 28 1 3541 2035 3244 2909 +20405 4 2 28 1 3541 3244 2035 2209 +20406 4 2 28 1 3215 1563 2957 2980 +20407 4 2 28 1 3215 2957 1563 1386 +20408 4 2 28 1 3556 1273 1012 3284 +20409 4 2 28 1 3556 1012 1273 1271 +20410 4 2 28 1 3333 724 748 3076 +20411 4 2 28 1 3333 748 724 651 +20412 4 2 28 1 3079 3858 3178 2753 +20413 4 2 28 1 3178 3858 3079 3289 +20414 4 2 28 1 3857 2556 3219 2926 +20415 4 2 28 1 3857 3219 2556 3587 +20416 4 2 28 1 3680 2738 3906 3003 +20417 4 2 28 1 3680 3906 2738 3110 +20418 4 2 28 1 3600 1011 1010 3248 +20419 4 2 28 1 3600 1010 1011 1032 +20420 4 2 28 1 3320 857 1231 859 +20421 4 2 28 1 3320 1231 857 3224 +20422 4 2 28 1 3651 2449 2441 2470 +20423 4 2 28 1 3651 2441 2449 3278 +20424 4 2 28 1 3501 1401 1389 1691 +20425 4 2 28 1 3607 1854 3113 2939 +20426 4 2 28 1 3607 3113 1854 2272 +20427 4 2 28 1 3545 3931 2533 2517 +20428 4 2 28 1 2533 3931 3545 3312 +20429 4 2 28 1 3738 1244 2888 3158 +20430 4 2 28 1 3738 2888 1244 787 +20431 4 2 28 1 1260 2888 1244 3158 +20432 4 2 28 1 1260 1244 2888 787 +20433 4 2 28 1 3696 1222 2859 3435 +20434 4 2 28 1 3696 2859 1222 1076 +20435 4 2 28 1 3356 718 634 3252 +20436 4 2 28 1 3356 634 718 684 +20437 4 2 28 1 3867 2922 476 3500 +20438 4 2 28 1 3417 1293 789 1314 +20439 4 2 28 1 815 3511 1190 1092 +20440 4 2 28 1 1190 3511 815 3432 +20441 4 2 28 1 3328 891 3840 2978 +20442 4 2 28 1 3328 3840 891 1097 +20443 4 2 28 1 3019 2634 2609 2813 +20444 4 2 28 1 3019 2609 2634 2704 +20445 4 2 28 1 3480 3489 3288 2816 +20446 4 2 28 1 3288 3489 3480 2047 +20447 4 2 28 1 3427 1424 1423 1410 +20448 4 2 28 1 3427 1423 1424 2841 +20449 4 2 28 1 1269 3808 949 1013 +20450 4 2 28 1 949 3808 1269 3302 +20451 4 2 28 1 2597 3416 3817 2763 +20452 4 2 28 1 3817 3416 2597 2852 +20453 4 2 28 1 3817 3087 2597 2763 +20454 4 2 28 1 2597 3087 3817 2852 +20455 4 2 28 1 3627 2425 2452 2490 +20456 4 2 28 1 3627 2452 2425 3189 +20457 4 2 28 1 3809 965 1156 1015 +20458 4 2 28 1 3809 1156 965 2827 +20459 4 2 28 1 3347 2183 1876 1868 +20460 4 2 28 1 3347 1876 2183 3004 +20461 4 2 28 1 3490 233 1329 765 +20462 4 2 28 1 3490 1329 233 2925 +20463 4 2 28 1 3314 425 288 213 +20464 4 2 28 1 3314 288 425 3558 +20465 4 2 28 1 2914 3812 2750 2619 +20466 4 2 28 1 2750 3812 2914 1477 +20467 4 2 28 1 3757 2843 3215 3570 +20468 4 2 28 1 3757 3215 2843 2957 +20469 4 2 28 1 3127 1605 1534 2954 +20470 4 2 28 1 3127 1534 1605 1393 +20471 4 2 28 1 3896 3293 2870 3560 +20472 4 2 28 1 3896 2870 3293 2571 +20473 4 2 28 1 3698 2539 2791 3635 +20474 4 2 28 1 3698 2791 2539 3409 +20475 4 2 28 1 2563 3822 3460 2582 +20476 4 2 28 1 2563 3460 3822 2662 +20477 4 2 28 1 2656 3460 3822 2582 +20478 4 2 28 1 2656 3822 3460 2662 +20479 4 2 28 1 3758 3912 3199 2775 +20480 4 2 28 1 3199 3912 3758 2544 +20481 4 2 28 1 3162 1417 2761 1432 +20482 4 2 28 1 3162 2761 1417 2943 +20483 4 2 28 1 3278 2489 2472 2449 +20484 4 2 28 1 3278 2472 2489 3042 +20485 4 2 28 1 2509 3545 3703 2516 +20486 4 2 28 1 3703 3545 2509 3111 +20487 4 2 28 1 3282 1877 1872 1873 +20488 4 2 28 1 3282 1872 1877 3110 +20489 4 2 28 1 3642 3767 3041 2831 +20490 4 2 28 1 3041 3767 3642 2665 +20491 4 2 28 1 3359 591 582 583 +20492 4 2 28 1 3359 582 591 3001 +20493 4 2 28 1 3436 806 1330 1154 +20494 4 2 28 1 3436 1330 806 3335 +20495 4 2 28 1 3251 3466 3668 2545 +20496 4 2 28 1 3668 3466 3251 3177 +20497 4 2 28 1 2111 428 189 272 +20498 4 2 28 1 189 428 2111 2097 +20499 4 2 28 1 3179 1399 3562 1642 +20500 4 2 28 1 3179 3562 1399 2996 +20501 4 2 28 1 3590 2465 3197 2429 +20502 4 2 28 1 3590 3197 2465 3031 +20503 4 2 28 1 2656 3822 2709 2582 +20504 4 2 28 1 2709 3822 2656 2867 +20505 4 2 28 1 641 3781 2863 624 +20506 4 2 28 1 2863 3781 641 3510 +20507 4 2 28 1 3072 3512 3494 1066 +20508 4 2 28 1 3494 3512 3072 2725 +20509 4 2 28 1 2332 2341 3069 2294 +20510 4 2 28 1 3069 2341 2332 2349 +20511 4 2 28 1 3787 1072 798 1062 +20512 4 2 28 1 3787 798 1072 3115 +20513 4 2 28 1 3395 3594 3189 2802 +20514 4 2 28 1 3189 3594 3395 3030 +20515 4 2 28 1 3879 384 3605 383 +20516 4 2 28 1 3879 3605 384 3344 +20517 4 2 28 1 1399 3254 3348 1398 +20518 4 2 28 1 3348 3254 1399 2996 +20519 4 2 28 1 3697 202 2934 281 +20520 4 2 28 1 3697 2934 202 3492 +20521 4 2 28 1 201 2934 202 281 +20522 4 2 28 1 201 202 2934 3492 +20523 4 2 28 1 2575 3718 3471 3068 +20524 4 2 28 1 2575 3471 3718 3266 +20525 4 2 28 1 2784 3471 3718 3068 +20526 4 2 28 1 2784 3718 3471 3266 +20527 4 2 28 1 3285 3832 2670 3213 +20528 4 2 28 1 2670 3832 3285 3023 +20529 4 2 28 1 3448 2284 2261 2002 +20530 4 2 28 1 3448 2261 2284 2846 +20531 4 2 28 1 1155 3393 785 1285 +20532 4 2 28 1 785 3393 1155 3018 +20533 4 2 28 1 527 2095 262 2103 +20534 4 2 28 1 262 2095 527 674 +20535 4 2 28 1 1065 3494 807 1070 +20536 4 2 28 1 807 3494 1065 3341 +20537 4 2 28 1 680 3441 2933 679 +20538 4 2 28 1 2933 3441 680 3336 +20539 4 2 28 1 2933 526 680 679 +20540 4 2 28 1 680 526 2933 3336 +20541 4 2 28 1 3777 902 901 903 +20542 4 2 28 1 3777 901 902 3661 +20543 4 2 28 1 1261 3694 3342 221 +20544 4 2 28 1 1304 1466 3335 1659 +20545 4 2 28 1 3335 1466 1304 788 +20546 4 2 28 1 3657 2466 2941 3230 +20547 4 2 28 1 3657 2941 2466 2440 +20548 4 2 28 1 3518 1938 3642 2831 +20549 4 2 28 1 3518 3642 1938 2054 +20550 4 2 28 1 2951 2007 3356 2109 +20551 4 2 28 1 2951 3356 2007 2657 +20552 4 2 28 1 3861 3708 3265 2785 +20553 4 2 28 1 3861 3265 3708 2949 +20554 4 2 28 1 3551 3112 3708 2960 +20555 4 2 28 1 3708 3112 3551 2784 +20556 4 2 28 1 3708 3412 3551 2960 +20557 4 2 28 1 3551 3412 3708 2784 +20558 4 2 28 1 3403 2583 1935 3142 +20559 4 2 28 1 2288 1935 2583 3142 +20560 4 2 28 1 3312 2070 2244 2184 +20561 4 2 28 1 3312 2244 2070 3133 +20562 4 2 28 1 3836 629 723 620 +20563 4 2 28 1 3836 723 629 3634 +20564 4 2 28 1 3910 2139 3042 2289 +20565 4 2 28 1 3910 3042 2139 3627 +20566 4 2 28 1 3642 2054 2159 1965 +20567 4 2 28 1 3642 2159 2054 3041 +20568 4 2 28 1 3600 1010 1079 3107 +20569 4 2 28 1 3600 1079 1010 1032 +20570 4 2 28 1 3857 1711 3279 2926 +20571 4 2 28 1 3857 3279 1711 1411 +20572 4 2 28 1 777 1345 3388 1683 +20573 4 2 28 1 3388 1345 777 544 +20574 4 2 28 1 3876 2628 2593 2807 +20575 4 2 28 1 3876 2593 2628 3786 +20576 4 2 28 1 3293 1968 2240 2270 +20577 4 2 28 1 3293 2240 1968 2739 +20578 4 2 28 1 3731 3724 3135 2554 +20579 4 2 28 1 3731 3135 3724 2705 +20580 4 2 28 1 3754 1389 3501 1401 +20581 4 2 28 1 3754 3501 1389 2843 +20582 4 2 28 1 3468 3075 3185 2573 +20583 4 2 28 1 3468 3185 3075 3295 +20584 4 2 28 1 2426 2322 28 2297 +20585 4 2 28 1 28 2322 2426 2465 +20586 4 2 28 1 2833 2600 2930 2730 +20587 4 2 28 1 2833 2930 2600 2724 +20588 4 2 28 1 2993 2609 3019 2704 +20589 4 2 28 1 2993 3019 2609 2818 +20590 4 2 28 1 3783 2610 2902 3774 +20591 4 2 28 1 3783 2902 2610 3250 +20592 4 2 28 1 3598 2381 2346 2382 +20593 4 2 28 1 3598 2346 2381 3260 +20594 4 2 28 1 3262 2372 2339 3002 +20595 4 2 28 1 3262 2339 2372 2383 +20596 4 2 28 1 3309 199 811 2931 +20597 4 2 28 1 3309 811 199 1106 +20598 4 2 28 1 3851 3400 3360 2553 +20599 4 2 28 1 3851 3360 3400 2643 +20600 4 2 28 1 3549 2196 3746 2237 +20601 4 2 28 1 3549 3746 2196 2823 +20602 4 2 28 1 3843 514 215 214 +20603 4 2 28 1 3843 215 514 3463 +20604 4 2 28 1 3406 3422 3865 2875 +20605 4 2 28 1 3865 3422 3406 3149 +20606 4 2 28 1 3736 3852 3488 3153 +20607 4 2 28 1 3488 3852 3736 2995 +20608 4 2 28 1 3860 3877 3657 3230 +20609 4 2 28 1 3657 3877 3860 3063 +20610 4 2 28 1 3811 2946 983 3380 +20611 4 2 28 1 3811 983 2946 3350 +20612 4 2 28 1 3680 2017 2853 1867 +20613 4 2 28 1 3680 2853 2017 3631 +20614 4 2 28 1 1865 2853 2017 1867 +20615 4 2 28 1 1865 2017 2853 3631 +20616 4 2 28 1 1808 527 261 2103 +20617 4 2 28 1 261 527 1808 672 +20618 4 2 28 1 3463 1513 3017 2682 +20619 4 2 28 1 3463 3017 1513 1607 +20620 4 2 28 1 3603 3017 1513 2682 +20621 4 2 28 1 3603 1513 3017 1607 +20622 4 2 28 1 3280 1453 1442 3037 +20623 4 2 28 1 3280 1442 1453 1672 +20624 4 2 28 1 3884 2435 3575 3186 +20625 4 2 28 1 3884 3575 2435 2434 +20626 4 2 28 1 3704 204 795 2844 +20627 4 2 28 1 3704 795 204 1204 +20628 4 2 28 1 1670 1306 113 1331 +20629 4 2 28 1 1670 113 1306 1114 +20630 4 2 28 1 3458 3631 3457 1901 +20631 4 2 28 1 3457 3631 3458 2764 +20632 4 2 28 1 3717 3714 3352 2834 +20633 4 2 28 1 3717 3352 3714 2367 +20634 4 2 28 1 3581 2506 2525 3108 +20635 4 2 28 1 3581 2525 2506 2505 +20636 4 2 28 1 3829 2979 2679 3315 +20637 4 2 28 1 3829 2679 2979 3149 +20638 4 2 28 1 2404 2471 3714 2415 +20639 4 2 28 1 3714 2471 2404 2339 +20640 4 2 28 1 3525 3531 3462 2939 +20641 4 2 28 1 3625 678 768 758 +20642 4 2 28 1 3625 768 678 3441 +20643 4 2 28 1 3290 390 484 3109 +20644 4 2 28 1 3290 484 390 452 +20645 4 2 28 1 3934 1100 1101 1098 +20646 4 2 28 1 3934 1101 1100 3083 +20647 4 2 28 1 3350 3417 3659 1058 +20648 4 2 28 1 3659 3417 3350 2750 +20649 4 2 28 1 3868 487 2986 340 +20650 4 2 28 1 3868 2986 487 3088 +20651 4 2 28 1 2106 545 268 2079 +20652 4 2 28 1 2106 268 545 739 +20653 4 2 28 1 2649 3196 3184 2724 +20654 4 2 28 1 3184 3196 2649 2972 +20655 4 2 28 1 3184 2811 2649 2724 +20656 4 2 28 1 2649 2811 3184 2972 +20657 4 2 28 1 3872 3689 573 585 +20658 4 2 28 1 3872 573 3689 3287 +20659 4 2 28 1 574 573 3689 585 +20660 4 2 28 1 574 3689 573 3287 +20661 4 2 28 1 3796 325 3647 441 +20662 4 2 28 1 3796 3647 325 3745 +20663 4 2 28 1 343 3647 325 441 +20664 4 2 28 1 343 325 3647 3745 +20665 4 2 28 1 3864 1117 1116 1266 +20666 4 2 28 1 3864 1116 1117 3015 +20667 4 2 28 1 3563 1270 947 946 +20668 4 2 28 1 3563 947 1270 2867 +20669 4 2 28 1 3384 1530 1726 2856 +20670 4 2 28 1 3384 1726 1530 1527 +20671 4 2 28 1 3868 497 492 3353 +20672 4 2 28 1 3868 492 497 379 +20673 4 2 28 1 3856 3393 1982 2722 +20674 4 2 28 1 3856 1982 3393 2206 +20675 4 2 28 1 3707 1510 1682 1743 +20676 4 2 28 1 3707 1682 1510 2740 +20677 4 2 28 1 1019 3787 3291 3309 +20678 4 2 28 1 1019 3291 3787 3057 +20679 4 2 28 1 2847 3291 3787 3309 +20680 4 2 28 1 2847 3787 3291 3057 +20681 4 2 28 1 3537 3247 2741 3364 +20682 4 2 28 1 3537 2741 3247 3094 +20683 4 2 28 1 3225 2888 223 1260 +20684 4 2 28 1 3225 223 2888 3441 +20685 4 2 28 1 224 223 2888 1260 +20686 4 2 28 1 224 2888 223 3441 +20687 4 2 28 1 3637 3709 3319 2683 +20688 4 2 28 1 3319 3709 3637 2869 +20689 4 2 28 1 3290 2587 2778 2737 +20690 4 2 28 1 3290 2778 2587 2860 +20691 4 2 28 1 3386 2636 2654 2799 +20692 4 2 28 1 3386 2654 2636 2564 +20693 4 2 28 1 1770 2328 3228 2336 +20694 4 2 28 1 1770 3228 2328 1647 +20695 4 2 28 1 3695 970 3907 865 +20696 4 2 28 1 3695 3907 970 2887 +20697 4 2 28 1 294 1640 170 1320 +20698 4 2 28 1 170 1640 294 271 +20699 4 2 28 1 3871 1076 3696 799 +20700 4 2 28 1 3871 3696 1076 2859 +20701 4 2 28 1 1597 3539 2763 1518 +20702 4 2 28 1 2763 3539 1597 3436 +20703 4 2 28 1 2763 1519 1597 1518 +20704 4 2 28 1 1597 1519 2763 3436 +20705 4 2 28 1 3631 1863 1865 1901 +20706 4 2 28 1 3631 1865 1863 3404 +20707 4 2 28 1 2836 3851 2688 2585 +20708 4 2 28 1 2688 3851 2836 2643 +20709 4 2 28 1 3172 3711 3541 2777 +20710 4 2 28 1 3172 3541 3711 2617 +20711 4 2 28 1 3244 3541 3711 2777 +20712 4 2 28 1 3244 3711 3541 2617 +20713 4 2 28 1 3713 3514 3450 3027 +20714 4 2 28 1 3713 3450 3514 2726 +20715 4 2 28 1 1163 1327 126 804 +20716 4 2 28 1 126 1327 1163 1662 +20717 4 2 28 1 3350 3577 3170 2674 +20718 4 2 28 1 3170 3577 3350 2750 +20719 4 2 28 1 3332 2088 2090 2987 +20720 4 2 28 1 3332 2090 2088 2089 +20721 4 2 28 1 3570 3562 3215 2685 +20722 4 2 28 1 3570 3215 3562 3348 +20723 4 2 28 1 3374 1175 839 1147 +20724 4 2 28 1 839 1175 3374 2930 +20725 4 2 28 1 839 3369 3374 1147 +20726 4 2 28 1 3374 3369 839 2930 +20727 4 2 28 1 3674 893 894 2848 +20728 4 2 28 1 3674 894 893 1144 +20729 4 2 28 1 2890 1059 803 1071 +20730 4 2 28 1 2890 803 1059 3809 +20731 4 2 28 1 3711 3454 2608 3710 +20732 4 2 28 1 3711 2608 3454 2903 +20733 4 2 28 1 3866 2608 3454 3710 +20734 4 2 28 1 3866 3454 2608 2903 +20735 4 2 28 1 419 2085 182 1830 +20736 4 2 28 1 419 182 2085 290 +20737 4 2 28 1 3101 2172 2126 2931 +20738 4 2 28 1 3101 2126 2172 2268 +20739 4 2 28 1 3492 434 203 202 +20740 4 2 28 1 3492 203 434 3047 +20741 4 2 28 1 3720 3607 2199 2132 +20742 4 2 28 1 3720 2199 3607 3317 +20743 4 2 28 1 2073 2199 3607 2132 +20744 4 2 28 1 2073 3607 2199 3317 +20745 4 2 28 1 3714 2491 2471 3002 +20746 4 2 28 1 3714 2471 2491 2415 +20747 4 2 28 1 3179 3636 3722 2762 +20748 4 2 28 1 3722 3636 3179 2943 +20749 4 2 28 1 3610 3731 3587 2911 +20750 4 2 28 1 3587 3731 3610 2710 +20751 4 2 28 1 3841 2367 3352 3717 +20752 4 2 28 1 3841 3352 2367 2357 +20753 4 2 28 1 3387 2566 2572 2549 +20754 4 2 28 1 3387 2572 2566 3362 +20755 4 2 28 1 3540 2658 3022 3252 +20756 4 2 28 1 3540 3022 2658 2984 +20757 4 2 28 1 3198 1326 1783 2977 +20758 4 2 28 1 3198 1783 1326 1669 +20759 4 2 28 1 3706 2917 1796 3375 +20760 4 2 28 1 3706 1796 2917 3166 +20761 4 2 28 1 3578 744 649 760 +20762 4 2 28 1 3578 649 744 3261 +20763 4 2 28 1 3520 1129 3431 2868 +20764 4 2 28 1 430 3796 431 350 +20765 4 2 28 1 431 3796 430 3217 +20766 4 2 28 1 3865 2366 2373 2364 +20767 4 2 28 1 3865 2373 2366 3071 +20768 4 2 28 1 3408 500 378 482 +20769 4 2 28 1 3408 378 500 3270 +20770 4 2 28 1 3906 3242 3003 3668 +20771 4 2 28 1 3906 3003 3242 2889 +20772 4 2 28 1 3126 320 455 468 +20773 4 2 28 1 3126 455 320 3082 +20774 4 2 28 1 803 1941 152 1291 +20775 4 2 28 1 152 1941 803 2145 +20776 4 2 28 1 2127 2500 3189 1840 +20777 4 2 28 1 2127 3189 2500 2523 +20778 4 2 28 1 282 3707 433 432 +20779 4 2 28 1 433 3707 282 2918 +20780 4 2 28 1 3772 2227 2063 2062 +20781 4 2 28 1 3772 2063 2227 2891 +20782 4 2 28 1 3417 1657 1592 2914 +20783 4 2 28 1 3417 1592 1657 1335 +20784 4 2 28 1 3825 3833 3214 3501 +20785 4 2 28 1 3214 3833 3825 2743 +20786 4 2 28 1 3797 2530 2497 2514 +20787 4 2 28 1 3797 2497 2530 3175 +20788 4 2 28 1 3772 1552 1775 1731 +20789 4 2 28 1 3772 1775 1552 2904 +20790 4 2 28 1 3300 1555 2736 2616 +20791 4 2 28 1 3300 2736 1555 1737 +20792 4 2 28 1 3488 3813 3579 2711 +20793 4 2 28 1 3579 3813 3488 3169 +20794 4 2 28 1 3636 3722 3098 2549 +20795 4 2 28 1 3098 3722 3636 2762 +20796 4 2 28 1 3730 377 393 3633 +20797 4 2 28 1 3730 393 377 394 +20798 4 2 28 1 3379 2838 1435 3171 +20799 4 2 28 1 3379 1435 2838 3231 +20800 4 2 28 1 2999 1748 2664 1749 +20801 4 2 28 1 2999 2664 1748 2924 +20802 4 2 28 1 1514 2664 1748 1749 +20803 4 2 28 1 1514 1748 2664 2924 +20804 4 2 28 1 3457 1995 1997 2225 +20805 4 2 28 1 3457 1997 1995 3405 +20806 4 2 28 1 3595 2749 3806 2972 +20807 4 2 28 1 3595 3806 2749 3520 +20808 4 2 28 1 3838 2838 1467 3280 +20809 4 2 28 1 3838 1467 2838 3171 +20810 4 2 28 1 3350 3417 1318 2750 +20811 4 2 28 1 1318 3417 3350 1121 +20812 4 2 28 1 3168 290 404 419 +20813 4 2 28 1 3168 404 290 3086 +20814 4 2 28 1 3843 514 288 3017 +20815 4 2 28 1 3843 288 514 214 +20816 4 2 28 1 366 3633 443 386 +20817 4 2 28 1 443 3633 366 3617 +20818 4 2 28 1 2934 201 410 281 +20819 4 2 28 1 2934 410 201 3599 +20820 4 2 28 1 2190 3413 2034 2036 +20821 4 2 28 1 2034 3413 2190 3061 +20822 4 2 28 1 3366 384 3879 493 +20823 4 2 28 1 3366 3879 384 3344 +20824 4 2 28 1 3499 2181 1847 2189 +20825 4 2 28 1 3499 1847 2181 3064 +20826 4 2 28 1 3741 768 3625 2896 +20827 4 2 28 1 3741 3625 768 638 +20828 4 2 28 1 2619 3334 3227 2769 +20829 4 2 28 1 2619 3227 3334 2637 +20830 4 2 28 1 2978 3227 3334 2769 +20831 4 2 28 1 2978 3334 3227 2637 +20832 4 2 28 1 1367 3495 1698 1363 +20833 4 2 28 1 1698 3495 1367 2824 +20834 4 2 28 1 3366 1654 3090 2686 +20835 4 2 28 1 3366 3090 1654 1751 +20836 4 2 28 1 3456 1380 1379 1806 +20837 4 2 28 1 3456 1379 1380 2955 +20838 4 2 28 1 2115 426 185 1823 +20839 4 2 28 1 2115 185 426 278 +20840 4 2 28 1 3388 731 544 767 +20841 4 2 28 1 3388 544 731 3007 +20842 4 2 28 1 355 3728 378 503 +20843 4 2 28 1 378 3728 355 3678 +20844 4 2 28 1 699 3689 717 585 +20845 4 2 28 1 699 717 3689 3024 +20846 4 2 28 1 3509 717 3689 585 +20847 4 2 28 1 3509 3689 717 3024 +20848 4 2 28 1 1369 3780 1557 1802 +20849 4 2 28 1 1557 3780 1369 2861 +20850 4 2 28 1 2135 1295 3341 807 +20851 4 2 28 1 2135 3341 1295 1817 +20852 4 2 28 1 3803 3358 2555 2587 +20853 4 2 28 1 3803 2555 3358 2904 +20854 4 2 28 1 3863 3513 915 889 +20855 4 2 28 1 3863 915 3513 2953 +20856 4 2 28 1 3532 2939 3462 3531 +20857 4 2 28 1 3532 3462 2939 2876 +20858 4 2 28 1 3273 2021 2257 2742 +20859 4 2 28 1 3273 2257 2021 2204 +20860 4 2 28 1 3666 1561 1721 1562 +20861 4 2 28 1 3666 1721 1561 2789 +20862 4 2 28 1 3893 3410 866 1085 +20863 4 2 28 1 3893 866 3410 2969 +20864 4 2 28 1 3728 3408 378 498 +20865 4 2 28 1 3728 378 3408 2680 +20866 4 2 28 1 3593 1689 1576 3255 +20867 4 2 28 1 3593 1576 1689 1579 +20868 4 2 28 1 3927 2817 3894 3397 +20869 4 2 28 1 3927 3894 2817 3376 +20870 4 2 28 1 3309 3655 199 2931 +20871 4 2 28 1 199 3655 3309 3599 +20872 4 2 28 1 3746 1359 1761 1801 +20873 4 2 28 1 3746 1761 1359 2823 +20874 4 2 28 1 3481 3692 3228 2991 +20875 4 2 28 1 3228 3692 3481 2917 +20876 4 2 28 1 3277 1513 1560 1746 +20877 4 2 28 1 3277 1560 1513 2682 +20878 4 2 28 1 3344 433 478 2918 +20879 4 2 28 1 3344 478 433 508 +20880 4 2 28 1 3429 3163 3767 2761 +20881 4 2 28 1 3429 3767 3163 2665 +20882 4 2 28 1 3608 2895 2767 2901 +20883 4 2 28 1 3608 2767 2895 3359 +20884 4 2 28 1 3666 1668 1494 1771 +20885 4 2 28 1 3666 1494 1668 2977 +20886 4 2 28 1 3231 1618 1497 1617 +20887 4 2 28 1 3231 1497 1618 2838 +20888 4 2 28 1 3291 3309 3599 1282 +20889 4 2 28 1 3599 3309 3291 2847 +20890 4 2 28 1 3584 1541 1767 3456 +20891 4 2 28 1 3584 1767 1541 1804 +20892 4 2 28 1 3879 470 476 385 +20893 4 2 28 1 3465 3713 3464 3211 +20894 4 2 28 1 3464 3713 3465 2726 +20895 4 2 28 1 3476 2192 1988 2276 +20896 4 2 28 1 3476 1988 2192 3032 +20897 4 2 28 1 3825 3899 3093 3682 +20898 4 2 28 1 3093 3899 3825 2843 +20899 4 2 28 1 3093 2692 3825 3682 +20900 4 2 28 1 3825 2692 3093 2843 +20901 4 2 28 1 1941 785 153 1291 +20902 4 2 28 1 1941 153 785 2136 +20903 4 2 28 1 3509 3719 618 724 +20904 4 2 28 1 618 3719 3509 3024 +20905 4 2 28 1 618 717 3509 724 +20906 4 2 28 1 3509 717 618 3024 +20907 4 2 28 1 2345 2531 3422 2497 +20908 4 2 28 1 3422 2531 2345 2379 +20909 4 2 28 1 3849 2586 3662 3783 +20910 4 2 28 1 3849 3662 2586 3543 +20911 4 2 28 1 3561 514 3017 467 +20912 4 2 28 1 3561 3017 514 3463 +20913 4 2 28 1 3858 3637 3079 2869 +20914 4 2 28 1 3858 3079 3637 2753 +20915 4 2 28 1 3459 3834 1223 932 +20916 4 2 28 1 1223 3834 3459 2970 +20917 4 2 28 1 3020 2663 2996 3604 +20918 4 2 28 1 3020 2996 2663 3748 +20919 4 2 28 1 3646 2027 2030 1967 +20920 4 2 28 1 3646 2030 2027 3371 +20921 4 2 28 1 3506 2631 3138 2815 +20922 4 2 28 1 3506 3138 2631 2868 +20923 4 2 28 1 3878 1989 3652 3180 +20924 4 2 28 1 3878 3652 1989 2150 +20925 4 2 28 1 3119 2612 3181 2787 +20926 4 2 28 1 3119 3181 2612 2766 +20927 4 2 28 1 3793 1593 1350 3143 +20928 4 2 28 1 3793 1350 1593 1713 +20929 4 2 28 1 2528 2375 68 2534 +20930 4 2 28 1 2528 68 2375 2347 +20931 4 2 28 1 3887 2649 3318 2798 +20932 4 2 28 1 3887 3318 2649 2972 +20933 4 2 28 1 3391 3225 2605 2746 +20934 4 2 28 1 3391 2605 3225 2755 +20935 4 2 28 1 3478 3735 1594 1374 +20936 4 2 28 1 3478 1594 3735 2956 +20937 4 2 28 1 1377 1594 3735 1374 +20938 4 2 28 1 1377 3735 1594 2956 +20939 4 2 28 1 3476 35 1836 2321 +20940 4 2 28 1 3476 1836 35 2276 +20941 4 2 28 1 3890 2803 2662 3284 +20942 4 2 28 1 3890 2662 2803 3012 +20943 4 2 28 1 2900 2056 3726 2701 +20944 4 2 28 1 2900 3726 2056 2210 +20945 4 2 28 1 2271 3726 2056 2701 +20946 4 2 28 1 2271 2056 3726 2210 +20947 4 2 28 1 3549 1956 2196 2237 +20948 4 2 28 1 3549 2196 1956 3426 +20949 4 2 28 1 1293 1657 3417 789 +20950 4 2 28 1 3417 1657 1293 1335 +20951 4 2 28 1 3827 2041 2259 2871 +20952 4 2 28 1 3827 2259 2041 2042 +20953 4 2 28 1 3573 1622 1695 2924 +20954 4 2 28 1 3573 1695 1622 1321 +20955 4 2 28 1 3643 3107 2813 3158 +20956 4 2 28 1 3643 2813 3107 3331 +20957 4 2 28 1 3525 1849 1850 1851 +20958 4 2 28 1 3525 1850 1849 3269 +20959 4 2 28 1 3903 3052 2797 3610 +20960 4 2 28 1 3903 2797 3052 2548 +20961 4 2 28 1 3490 1714 1522 1601 +20962 4 2 28 1 3490 1522 1714 2925 +20963 4 2 28 1 3437 1655 1553 1549 +20964 4 2 28 1 3437 1553 1655 2891 +20965 4 2 28 1 3923 504 424 3120 +20966 4 2 28 1 3923 424 504 461 +20967 4 2 28 1 1834 3388 1845 2130 +20968 4 2 28 1 1845 3388 1834 3064 +20969 4 2 28 1 687 1345 3007 544 +20970 4 2 28 1 687 3007 1345 1612 +20971 4 2 28 1 3603 1727 2682 1513 +20972 4 2 28 1 3603 2682 1727 3231 +20973 4 2 28 1 2757 3531 2756 2594 +20974 4 2 28 1 2756 3531 2757 2658 +20975 4 2 28 1 3674 2760 2703 2848 +20976 4 2 28 1 3674 2703 2760 3173 +20977 4 2 28 1 2006 2333 3143 2213 +20978 4 2 28 1 2006 3143 2333 2316 +20979 4 2 28 1 3891 1782 1364 2944 +20980 4 2 28 1 3891 1364 1782 1623 +20981 4 2 28 1 3932 1411 3857 1412 +20982 4 2 28 1 3932 3857 1411 3279 +20983 4 2 28 1 3707 1324 1725 1616 +20984 4 2 28 1 3707 1725 1324 2918 +20985 4 2 28 1 2425 2537 75 2486 +20986 4 2 28 1 2425 75 2537 2529 +20987 4 2 28 1 3403 2288 1935 2583 +20988 4 2 28 1 3403 1935 2288 1931 +20989 4 2 28 1 792 1495 3198 1669 +20990 4 2 28 1 3198 1495 792 1192 +20991 4 2 28 1 3826 3611 883 2965 +20992 4 2 28 1 3826 883 3611 1211 +20993 4 2 28 1 895 883 3611 2965 +20994 4 2 28 1 895 3611 883 1211 +20995 4 2 28 1 1655 3793 1553 1793 +20996 4 2 28 1 1553 3793 1655 2891 +20997 4 2 28 1 3672 382 484 3025 +20998 4 2 28 1 3672 484 382 397 +20999 4 2 28 1 3329 2872 2730 2817 +21000 4 2 28 1 3329 2730 2872 2630 +21001 4 2 28 1 3915 3818 2969 2637 +21002 4 2 28 1 3915 2969 3818 2598 +21003 4 2 28 1 2719 2969 3818 2637 +21004 4 2 28 1 2719 3818 2969 2598 +21005 4 2 28 1 3805 3913 313 2948 +21006 4 2 28 1 3696 2654 3342 2988 +21007 4 2 28 1 3696 3342 2654 2859 +21008 4 2 28 1 3919 3740 3165 2561 +21009 4 2 28 1 3919 3165 3740 3043 +21010 4 2 28 1 3603 1785 3231 1512 +21011 4 2 28 1 3603 3231 1785 3379 +21012 4 2 28 1 3842 1679 1522 1587 +21013 4 2 28 1 3842 1522 1679 3491 +21014 4 2 28 1 3303 2628 2675 2882 +21015 4 2 28 1 3303 2675 2628 2744 +21016 4 2 28 1 3339 2077 2110 2258 +21017 4 2 28 1 3339 2110 2077 2716 +21018 4 2 28 1 3768 2645 3567 3100 +21019 4 2 28 1 3768 3567 2645 2908 +21020 4 2 28 1 3548 2656 3026 2916 +21021 4 2 28 1 3548 3026 2656 3128 +21022 4 2 28 1 3805 3913 3080 327 +21023 4 2 28 1 3080 3913 3805 2948 +21024 4 2 28 1 3826 2800 2848 3447 +21025 4 2 28 1 3747 2668 3510 3118 +21026 4 2 28 1 3747 3510 2668 2863 +21027 4 2 28 1 3430 3522 2558 2857 +21028 4 2 28 1 2558 3522 3430 2603 +21029 4 2 28 1 2659 3801 2912 2671 +21030 4 2 28 1 2659 2912 3801 2774 +21031 4 2 28 1 3089 2912 3801 2671 +21032 4 2 28 1 3089 3801 2912 2774 +21033 4 2 28 1 3648 2782 2800 2921 +21034 4 2 28 1 3648 2800 2782 3209 +21035 4 2 28 1 2642 2782 2800 3209 +21036 4 2 28 1 3815 1600 1602 1608 +21037 4 2 28 1 3815 1602 1600 3490 +21038 4 2 28 1 3647 2606 2986 2837 +21039 4 2 28 1 3647 2986 2606 2998 +21040 4 2 28 1 277 1812 191 2107 +21041 4 2 28 1 191 1812 277 429 +21042 4 2 28 1 3930 656 658 753 +21043 4 2 28 1 3930 658 656 3009 +21044 4 2 28 1 3922 2807 2593 3432 +21045 4 2 28 1 3922 2593 2807 3121 +21046 4 2 28 1 3567 2807 2645 3121 +21047 4 2 28 1 3567 2645 2807 3100 +21048 4 2 28 1 3638 2702 3885 3191 +21049 4 2 28 1 3638 3885 2702 3148 +21050 4 2 28 1 3531 3338 3462 2594 +21051 4 2 28 1 3531 3462 3338 3525 +21052 4 2 28 1 3724 3845 3135 2554 +21053 4 2 28 1 3135 3845 3724 2936 +21054 4 2 28 1 1620 3898 1764 1765 +21055 4 2 28 1 1764 3898 1620 3838 +21056 4 2 28 1 3681 2963 2684 3099 +21057 4 2 28 1 3681 2684 2963 3082 +21058 4 2 28 1 3921 2872 835 3533 +21059 4 2 28 1 3921 835 2872 3411 +21060 4 2 28 1 1292 2158 3116 1277 +21061 4 2 28 1 1292 3116 2158 1820 +21062 4 2 28 1 3867 3879 476 2922 +21063 4 2 28 1 476 3879 3867 470 +21064 4 2 28 1 1590 3243 1774 1786 +21065 4 2 28 1 1774 3243 1590 2736 +21066 4 2 28 1 1822 3793 1333 2093 +21067 4 2 28 1 1333 3793 1822 3772 +21068 4 2 28 1 3764 3679 446 358 +21069 4 2 28 1 3764 446 3679 2981 +21070 4 2 28 1 530 3694 3625 3225 +21071 4 2 28 1 530 3625 3694 3467 +21072 4 2 28 1 2755 3625 3694 3225 +21073 4 2 28 1 2755 3694 3625 3467 +21074 4 2 28 1 3679 3270 2681 3626 +21075 4 2 28 1 3679 2681 3270 2981 +21076 4 2 28 1 3764 3270 2783 2981 +21077 4 2 28 1 3764 2783 3270 3678 +21078 4 2 28 1 3647 2986 496 3745 +21079 4 2 28 1 3647 496 2986 3844 +21080 4 2 28 1 331 496 2986 3745 +21081 4 2 28 1 331 2986 496 3844 +21082 4 2 28 1 2671 3634 2801 2906 +21083 4 2 28 1 2801 3634 2671 3089 +21084 4 2 28 1 1352 3370 1661 1759 +21085 4 2 28 1 1661 3370 1352 3780 +21086 4 2 28 1 3743 2912 696 2947 +21087 4 2 28 1 3743 696 2912 3701 +21088 4 2 28 1 3131 2998 3929 2739 +21089 4 2 28 1 3131 3929 2998 3844 +21090 4 2 28 1 3822 3928 2691 3414 +21091 4 2 28 1 2691 3928 3822 2748 +21092 4 2 28 1 3307 3129 2768 2723 +21093 4 2 28 1 3307 2768 3129 3693 +21094 4 2 28 1 3826 2642 2848 2800 +21095 4 2 28 1 3826 2848 2642 2965 +21096 4 2 28 1 3692 1770 2336 2409 +21097 4 2 28 1 3692 2336 1770 3228 +21098 4 2 28 1 3694 3342 2988 1261 +21099 4 2 28 1 3694 2988 3342 2866 +21100 4 2 28 1 3342 686 3694 2866 +21101 4 2 28 1 3342 221 686 220 +21102 4 2 28 1 686 221 3342 3694 +21103 4 2 28 1 3333 724 627 651 +21104 4 2 28 1 3076 2894 724 3509 +21105 4 2 28 1 3076 724 2894 3333 +21106 4 2 28 1 627 724 2894 3509 +21107 4 2 28 1 627 2894 724 3333 +21108 4 2 28 1 1129 840 3369 3431 +21109 4 2 28 1 3369 840 1129 843 +21110 4 2 28 1 3369 3520 1129 3431 +21111 4 2 28 1 1129 3520 3369 843 +21112 4 2 28 1 313 3805 327 3913 +21113 4 2 28 1 327 3805 313 326 +21114 4 2 28 1 2782 2800 2586 2642 +21115 4 2 28 1 2782 2586 2800 2921 +$EndElements From 6e10481286edfc9c9a3e66b2830634fad5fd9ed2 Mon Sep 17 00:00:00 2001 From: iyevugah Date: Mon, 26 May 2025 10:22:23 -0400 Subject: [PATCH 22/39] Lemaitre.i with analytical solution in py --- examples/viscoelasticity/Lemaitre/Lemaitre.i | 252 ++++++++++++++++++ .../Lemaitre_analytical.py | 46 ++++ .../Lemaitre_analytical/gamma_vp_results.xlsx | Bin 0 -> 7199 bytes .../Lemaitre/lubby2.i:Zone.Identifier | 0 4 files changed, 298 insertions(+) create mode 100644 examples/viscoelasticity/Lemaitre/Lemaitre.i create mode 100644 examples/viscoelasticity/Lemaitre/Lemaitre_analytical/Lemaitre_analytical.py create mode 100644 examples/viscoelasticity/Lemaitre/Lemaitre_analytical/gamma_vp_results.xlsx create mode 100644 examples/viscoelasticity/Lemaitre/lubby2.i:Zone.Identifier diff --git a/examples/viscoelasticity/Lemaitre/Lemaitre.i b/examples/viscoelasticity/Lemaitre/Lemaitre.i new file mode 100644 index 0000000..1975a48 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/Lemaitre.i @@ -0,0 +1,252 @@ +# Input file for purely Lemaitre creep model based on RTL2020 model (Azabou et al. (2021)). +# Note: Parameter A is set to zero to ensure the Munson-Dawson component is zero. +# Also, volumetric part is set to false and parameter z is set to zero. +# Parameters +# Units: stress in MPa, time in days, strain in m / m + +E = 6000 +nu = 0.44 +alpha = 0.1 +A2 = 1 +n2 = 14.8 +Ar = 1 +A1 = 1 +n1 = 1 +A = 0.0 #0.001 +n = 10 +B = 0.0 +m = 2.2195 +Tr = 289 +#P = 5 +z = 0.0 +Nz = 0.0241 +nz = 1.2644 +Mz = 0.024 +mz = 1.028 + +[Mesh] + type = GeneratedMesh + dim = 3 + nx = 1 + ny = 1 + nz = 2 + xmin = 0 + xmax = 1 + ymin = 0 + ymax = 1 + zmin = 0 + zmax = 0.1 +[] + +[Variables] + [disp_x] + order = FIRST + family = LAGRANGE + [] + [disp_y] + order = FIRST + family = LAGRANGE + [] + [disp_z] + order = FIRST + family = LAGRANGE + [] +[] + +[Kernels] + [stress_x] + type = BVStressDivergence + component = x + variable = disp_x + [] + [stress_y] + type = BVStressDivergence + component = y + variable = disp_y + [] + [stress_z] + type = BVStressDivergence + component = z + variable = disp_z + [] +[] + +[AuxVariables] + [temp] + order = FIRST + family = LAGRANGE + initial_condition = 289 + [] + [eqv_stress] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain_rate] + order = CONSTANT + family = MONOMIAL + [] + [strain_yy] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_L] + order = CONSTANT + family = MONOMIAL + [] +[] + +[AuxKernels] + [temp_aux] + type = ConstantAux + variable = temp + value = 289 + execute_on = 'TIMESTEP_END' + [] + [eqv_stress_aux] + type = BVMisesStressAux + variable = eqv_stress + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_aux] + type = BVEqvStrainAux + variable = eqv_strain + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_rate_aux] + type = BVEqvStrainRateAux + variable = eqv_strain_rate + execute_on = 'TIMESTEP_END' + [] + [strain_yy_aux] + type = BVStrainComponentAux + variable = strain_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_L_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_L + property = eqv_creep_strain_L + execute_on = 'TIMESTEP_END' + [] +[] + +[BCs] + [no_x] + type = DirichletBC + variable = disp_x + boundary = 'left' + value = 0.0 + [] + [no_y] + type = DirichletBC + variable = disp_y + boundary = 'bottom' + value = 0.0 + [] + [no_z] + type = DirichletBC + variable = disp_z + boundary = 'front back' + value = 0.0 + [] + [BVPressure] + [pressure_right] + boundary = 'right' + displacement_vars = 'disp_x disp_y disp_z' + value = 1.0 + [] + [pressure_top] + boundary = 'top' + displacement_vars = 'disp_x disp_y disp_z' + value = -1.0 + [] + [] +[] + +[Materials] + [elasticity] + type = BVMechanicalMaterial + displacements = 'disp_x disp_y disp_z' + young_modulus = ${E} + poisson_ratio = ${nu} + initial_stress = '-1.0 1.0 0.0' + inelastic_models = 'viscoelastic' + [] + [viscoelastic] + type = BVRTL2020ModelUpdate + volumetric = false + temperature = temp + Tr = ${Tr} + Ar = ${Ar} + alpha = ${alpha} + A1 = ${A1} + n1 = ${n1} + A2 = ${A2} + n2 = ${n2} + A = ${A} + n = ${n} + B = ${B} + m = ${m} + Nz = ${Nz} + nz = ${nz} + Mz = ${Mz} + mz = ${mz} + z = ${z} + [] +[] + +[Preconditioning] + active = 'hypre' + [hypre] + type = SMP + full = true + petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix' + petsc_options_iname = '-pc_type -pc_hypre_type + -snes_atol -snes_rtol -snes_stol -snes_max_it -snes_linesearch_type' + petsc_options_value = 'hypre boomeramg + 1.0e-10 1.0e-12 0 20 + basic' + [] +[] + +[Postprocessors] + [e] + type = ElementAverageValue + variable = eqv_strain + outputs = csv + [] + [e_rate] + type = ElementAverageValue + variable = eqv_strain_rate + outputs = csv + [] + [eqv_strain_L] + type = ElementAverageValue + variable = eqv_creep_strain_L + outputs = csv + [] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + start_time = 0.0 + end_time = 1 #10.0 + dt = 0.01 +[] + +[Outputs] + perf_graph = true + execute_on = 'TIMESTEP_END' + print_linear_residuals = false + exodus = true + [csv] + type = CSV + [] +[] diff --git a/examples/viscoelasticity/Lemaitre/Lemaitre_analytical/Lemaitre_analytical.py b/examples/viscoelasticity/Lemaitre/Lemaitre_analytical/Lemaitre_analytical.py new file mode 100644 index 0000000..a2b2108 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/Lemaitre_analytical/Lemaitre_analytical.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_t=1, T_r=1, T=1, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_t * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.1, 0.01) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.xlsx") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/Lemaitre_analytical/gamma_vp_results.xlsx b/examples/viscoelasticity/Lemaitre/Lemaitre_analytical/gamma_vp_results.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..87d9c4215bc13584480e43abc5460a115e5a1329 GIT binary patch literal 7199 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 Date: Wed, 28 May 2025 18:39:56 -0400 Subject: [PATCH 23/39] Lemaitre model working now --- .../.history/Lemaitre_20250527142730.i | 254 ++++++++++++++++++ .../.history/Lemaitre_20250528133255.i | 254 ++++++++++++++++++ .../.history/Lemaitre_20250528133256.i | 254 ++++++++++++++++++ .../.history/Lemaitre_20250528172043.i | 254 ++++++++++++++++++ .../.history/Lemaitre_20250528172044.i | 254 ++++++++++++++++++ .../.history/Lemaitre_20250528172734.i | 254 ++++++++++++++++++ .../.history/Lemaitre_20250528172735.i | 254 ++++++++++++++++++ .../.history/Lemaitre_20250528173715.i | 254 ++++++++++++++++++ .../.history/Lemaitre_20250528173716.i | 254 ++++++++++++++++++ .../.history/Lemaitre_20250528173755.i | 254 ++++++++++++++++++ .../.history/Lemaitre_20250528173756.i | 254 ++++++++++++++++++ .../.history/Lemaitre_20250528173812.i | 254 ++++++++++++++++++ .../.history/Lemaitre_20250528173813.i | 254 ++++++++++++++++++ .../.history/Lemaitre_20250528173814.i | 254 ++++++++++++++++++ .../.history/Lemaitre_20250528183435.i | 254 ++++++++++++++++++ .../.history/Lemaitre_20250528183436.i | 254 ++++++++++++++++++ .../.history/Lemaitre_20250528183651.i | 254 ++++++++++++++++++ .../.history/Lemaitre_20250528183652.i | 254 ++++++++++++++++++ .../.history/Lemaitre_20250528183735.i | 254 ++++++++++++++++++ .../.history/Lemaitre_20250528183736.i | 254 ++++++++++++++++++ .../.history/Lemaitre_20250528183737.i | 254 ++++++++++++++++++ .../.history/Lemaitre_20250528183745.i | 254 ++++++++++++++++++ .../.history/Lemaitre_20250528183746.i | 254 ++++++++++++++++++ .../.history/Lemaitre_20250528183747.i | 254 ++++++++++++++++++ .../.history/Lemaitre_20250528183758.i | 254 ++++++++++++++++++ .../Lemaitre_analytical_20250527142313.py | 46 ++++ .../Lemaitre_analytical_20250528130109.py | 46 ++++ .../Lemaitre_analytical_20250528130110.py | 46 ++++ .../Lemaitre_analytical_20250528130323.py | 46 ++++ .../Lemaitre_analytical_20250528130324.py | 46 ++++ .../Lemaitre_analytical_20250528130458.py | 46 ++++ .../Lemaitre_analytical_20250528130459.py | 46 ++++ .../Lemaitre_analytical_20250528130524.py | 46 ++++ .../Lemaitre_analytical_20250528130525.py | 46 ++++ .../Lemaitre_analytical_20250528130550.py | 46 ++++ .../Lemaitre_analytical_20250528130551.py | 46 ++++ .../Lemaitre_analytical_20250528130653.py | 46 ++++ .../Lemaitre_analytical_20250528130654.py | 46 ++++ .../Lemaitre_analytical_20250528130730.py | 46 ++++ .../Lemaitre_analytical_20250528130731.py | 46 ++++ .../Lemaitre_analytical_20250528133756.py | 46 ++++ .../Lemaitre_analytical_20250528133757.py | 46 ++++ .../Lemaitre_analytical_20250528133837.py | 46 ++++ .../Lemaitre_analytical_20250528133838.py | 46 ++++ .../Lemaitre_analytical_20250528133859.py | 46 ++++ .../Lemaitre_analytical_20250528133900.py | 46 ++++ .../Lemaitre_analytical_20250528133922.py | 46 ++++ .../Lemaitre_analytical_20250528133923.py | 46 ++++ .../Lemaitre_analytical_20250528133924.py | 46 ++++ .../Lemaitre_analytical_20250528133925.py | 46 ++++ .../Lemaitre_analytical_20250528173303.py | 46 ++++ .../Lemaitre_analytical_20250528173304.py | 46 ++++ .../Lemaitre_analytical_20250528173444.py | 46 ++++ .../Lemaitre_analytical_20250528173445.py | 46 ++++ .../Lemaitre_analytical_20250528174048.py | 46 ++++ .../Lemaitre_analytical_20250528174049.py | 46 ++++ .../Lemaitre_analytical_20250528174222.py | 46 ++++ .../Lemaitre_analytical_20250528174223.py | 46 ++++ .../Lemaitre_analytical_20250528174235.py | 46 ++++ .../Lemaitre_analytical_20250528174236.py | 46 ++++ .../Lemaitre_analytical_20250528174437.py | 49 ++++ .../Lemaitre_analytical_20250528174438.py | 49 ++++ .../Lemaitre_analytical_20250528174519.py | 49 ++++ .../Lemaitre_analytical_20250528174520.py | 49 ++++ .../Lemaitre_analytical_20250528174546.py | 47 ++++ .../Lemaitre_analytical_20250528174547.py | 47 ++++ .../Lemaitre_analytical_20250528174850.py | 94 +++++++ .../Lemaitre_analytical_20250528174851.py | 94 +++++++ .../Lemaitre_analytical_20250528174930.py | 47 ++++ .../Lemaitre_analytical_20250528174931.py | 47 ++++ .../Lemaitre_analytical_20250528175122.py | 45 ++++ .../Lemaitre_analytical_20250528175123.py | 45 ++++ .../Lemaitre_analytical_20250528175315.py | 45 ++++ .../Lemaitre_analytical_20250528175316.py | 45 ++++ .../Lemaitre_analytical_20250528175333.py | 45 ++++ .../Lemaitre_analytical_20250528175334.py | 45 ++++ .../Lemaitre_analytical_20250528175426.py | 45 ++++ .../Lemaitre_analytical_20250528175427.py | 45 ++++ .../Lemaitre_analytical_20250528175448.py | 45 ++++ .../Lemaitre_analytical_20250528175449.py | 45 ++++ .../Lemaitre_analytical_20250528175507.py | 45 ++++ .../Lemaitre_analytical_20250528175508.py | 45 ++++ .../Lemaitre_analytical_20250528175520.py | 45 ++++ .../Lemaitre_analytical_20250528175521.py | 45 ++++ .../Lemaitre_analytical_20250528181550.py | 45 ++++ .../Lemaitre_analytical_20250528181551.py | 45 ++++ .../Lemaitre_analytical_20250528181755.py | 45 ++++ .../Lemaitre_analytical_20250528181756.py | 45 ++++ .../Lemaitre_analytical_20250528181757.py | 45 ++++ .../Lemaitre_analytical_20250528181758.py | 45 ++++ .../Lemaitre_analytical_20250528181839.py | 45 ++++ .../Lemaitre_analytical_20250528181840.py | 45 ++++ .../Lemaitre_analytical_20250528182157.py | 46 ++++ .../Lemaitre_analytical_20250528182158.py | 46 ++++ .../Lemaitre_analytical_20250528182254.py | 43 +++ .../Lemaitre_analytical_20250528182255.py | 43 +++ .../Lemaitre_analytical_20250528182311.py | 43 +++ .../Lemaitre_analytical_20250528182312.py | 43 +++ .../Lemaitre_analytical_20250528182339.py | 43 +++ .../Lemaitre_analytical_20250528182340.py | 43 +++ .../Lemaitre_analytical_20250528182343.py | 43 +++ .../Lemaitre_analytical_20250528182344.py | 43 +++ .../Lemaitre_analytical_20250528182434.py | 43 +++ .../Lemaitre_analytical_20250528182435.py | 43 +++ .../Lemaitre_analytical_20250528182448.py | 43 +++ .../Lemaitre_analytical_20250528182449.py | 43 +++ .../Lemaitre_analytical_20250528182505.py | 43 +++ .../Lemaitre_analytical_20250528182506.py | 43 +++ .../Lemaitre_analytical_20250528182551.py | 43 +++ .../Lemaitre_analytical_20250528182552.py | 43 +++ .../Lemaitre_analytical_20250528182602.py | 43 +++ .../Lemaitre_analytical_20250528182603.py | 43 +++ .../Lemaitre_analytical_20250528182628.py | 43 +++ .../Lemaitre_analytical_20250528182629.py | 43 +++ .../Lemaitre_analytical_20250528183320.py | 43 +++ .../Lemaitre_analytical_20250528183321.py | 43 +++ .../Lemaitre_analytical_20250528183518.py | 43 +++ .../Lemaitre_analytical_20250528183519.py | 43 +++ .../Lemaitre_analytical_20250528183645.py | 43 +++ .../Lemaitre_analytical_20250528183646.py | 43 +++ .../Lemaitre_analytical_20250528183648.py | 43 +++ .../Lemaitre_analytical_20250528183649.py | 43 +++ .../Lemaitre_analytical_20250528183654.py | 43 +++ .../solution_compared_20250512112534.py | 43 +++ .../solution_compared_20250528173528.py | 43 +++ .../solution_compared_20250528173529.py | 43 +++ .../solution_compared_20250528173555.py | 43 +++ .../solution_compared_20250528173556.py | 43 +++ .../solution_compared_20250528175803.py | 43 +++ .../solution_compared_20250528175804.py | 43 +++ .../solution_compared_20250528180220.py | 43 +++ .../solution_compared_20250528180221.py | 43 +++ .../solution_compared_20250528180222.py | 43 +++ .../solution_compared_20250528180223.py | 43 +++ .../solution_compared_20250528180338.py | 43 +++ .../solution_compared_20250528180339.py | 43 +++ .../solution_compared_20250528180449.py | 67 +++++ .../solution_compared_20250528180450.py | 67 +++++ .../solution_compared_20250528180728.py | 45 ++++ .../solution_compared_20250528180729.py | 45 ++++ .../solution_compared_20250528180744.py | 45 ++++ .../solution_compared_20250528180745.py | 45 ++++ .../solution_compared_20250528181033.py | 45 ++++ .../solution_compared_20250528181034.py | 45 ++++ .../solution_compared_20250528181035.py | 45 ++++ .../solution_compared_20250528181036.py | 45 ++++ .../solution_compared_20250528181044.py | 45 ++++ .../solution_compared_20250528181045.py | 45 ++++ .../solution_compared_20250528181119.py | 45 ++++ .../solution_compared_20250528181120.py | 45 ++++ .../solution_compared_20250528181404.py | 45 ++++ .../solution_compared_20250528181405.py | 45 ++++ .../solution_compared_20250528181437.py | 45 ++++ .../solution_compared_20250528181438.py | 45 ++++ .../solution_compared_20250528182746.py | 45 ++++ .../solution_compared_20250528182747.py | 45 ++++ .../solution_compared_20250528182816.py | 45 ++++ .../solution_compared_20250528182817.py | 45 ++++ .../solution_compared_20250528182944.py | 45 ++++ .../viscoelasticity/Lemaitre/.lh/.lhignore | 6 + examples/viscoelasticity/Lemaitre/Lemaitre.i | 22 +- ...> Lemaitre_analytical.csv:Zone.Identifier} | 0 .../Lemaitre_analytical.py | 37 ++- .../Lemaitre_analytical/gamma_vp_results.xlsx | Bin 7199 -> 0 bytes .../Lemaitre/publication.mplstyle | 50 ++++ .../Lemaitre/solution_compared.py | 45 ++++ 166 files changed, 12629 insertions(+), 30 deletions(-) create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250527142730.i create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528133255.i create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528133256.i create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528172043.i create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528172044.i create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528172734.i create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528172735.i create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528173715.i create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528173716.i create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528173755.i create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528173756.i create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528173812.i create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528173813.i create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528173814.i create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183435.i create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183436.i create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183651.i create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183652.i create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183735.i create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183736.i create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183737.i create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183745.i create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183746.i create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183747.i create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183758.i create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250527142313.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130109.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130110.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130323.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130324.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130458.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130459.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130524.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130525.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130550.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130551.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130653.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130654.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130730.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130731.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133756.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133757.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133837.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133838.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133859.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133900.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133922.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133923.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133924.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133925.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528173303.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528173304.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528173444.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528173445.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174048.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174049.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174222.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174223.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174235.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174236.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174437.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174438.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174519.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174520.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174546.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174547.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174850.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174851.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174930.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174931.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175122.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175123.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175315.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175316.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175333.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175334.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175426.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175427.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175448.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175449.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175507.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175508.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175520.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175521.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181550.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181551.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181755.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181756.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181757.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181758.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181839.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181840.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182157.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182158.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182254.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182255.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182311.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182312.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182339.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182340.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182343.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182344.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182434.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182435.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182448.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182449.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182505.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182506.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182551.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182552.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182602.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182603.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182628.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182629.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183320.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183321.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183518.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183519.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183645.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183646.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183648.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183649.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183654.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250512112534.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528173528.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528173529.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528173555.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528173556.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528175803.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528175804.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180220.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180221.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180222.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180223.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180338.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180339.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180449.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180450.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180728.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180729.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180744.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180745.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181033.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181034.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181035.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181036.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181044.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181045.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181119.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181120.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181404.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181405.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181437.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181438.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528182746.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528182747.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528182816.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528182817.py create mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528182944.py create mode 100644 examples/viscoelasticity/Lemaitre/.lh/.lhignore rename examples/viscoelasticity/Lemaitre/{lubby2.i:Zone.Identifier => Lemaitre_analytical.csv:Zone.Identifier} (100%) delete mode 100644 examples/viscoelasticity/Lemaitre/Lemaitre_analytical/gamma_vp_results.xlsx create mode 100644 examples/viscoelasticity/Lemaitre/publication.mplstyle create mode 100644 examples/viscoelasticity/Lemaitre/solution_compared.py diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250527142730.i b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250527142730.i new file mode 100644 index 0000000..4329fe3 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250527142730.i @@ -0,0 +1,254 @@ +# Input file for purely Lemaitre creep model based on RTL2020 model (Azabou et al. (2021)). +# Note: Parameter A is set to zero to ensure the Munson-Dawson component is zero. +# Also, volumetric part is set to false and parameter z is set to zero. +# Parameters +# Units: stress in MPa, time in days, strain in m / m + +E = 6000 +nu = 0.44 +alpha = 0.1 +A2 = 1 +n2 = 14.8 +Ar = 1 +Tr = 289 +# parameters for Munson-Dawson part +A1 = 1 +n1 = 1 +A = 0.0 #0.001 +n = 10 +B = 0.0 +m = 2.2195 +P = 1 +# parameters for volumetric part +z = 0.0 +Nz = 0.0241 +nz = 1.2644 +Mz = 0.024 +mz = 1.028 + +[Mesh] + type = GeneratedMesh + dim = 3 + nx = 1 + ny = 1 + nz = 2 + xmin = 0 + xmax = 1 + ymin = 0 + ymax = 1 + zmin = 0 + zmax = 0.1 +[] + +[Variables] + [disp_x] + order = FIRST + family = LAGRANGE + [] + [disp_y] + order = FIRST + family = LAGRANGE + [] + [disp_z] + order = FIRST + family = LAGRANGE + [] +[] + +[Kernels] + [stress_x] + type = BVStressDivergence + component = x + variable = disp_x + [] + [stress_y] + type = BVStressDivergence + component = y + variable = disp_y + [] + [stress_z] + type = BVStressDivergence + component = z + variable = disp_z + [] +[] + +[AuxVariables] + [temp] + order = FIRST + family = LAGRANGE + initial_condition = 289 + [] + [eqv_stress] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain_rate] + order = CONSTANT + family = MONOMIAL + [] + [strain_yy] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_L] + order = CONSTANT + family = MONOMIAL + [] +[] + +[AuxKernels] + [temp_aux] + type = ConstantAux + variable = temp + value = 289 + execute_on = 'TIMESTEP_END' + [] + [eqv_stress_aux] + type = BVMisesStressAux + variable = eqv_stress + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_aux] + type = BVEqvStrainAux + variable = eqv_strain + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_rate_aux] + type = BVEqvStrainRateAux + variable = eqv_strain_rate + execute_on = 'TIMESTEP_END' + [] + [strain_yy_aux] + type = BVStrainComponentAux + variable = strain_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_L_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_L + property = eqv_creep_strain_L + execute_on = 'TIMESTEP_END' + [] +[] + +[BCs] + [no_x] + type = DirichletBC + variable = disp_x + boundary = 'left' + value = 0.0 + [] + [no_y] + type = DirichletBC + variable = disp_y + boundary = 'bottom' + value = 0.0 + [] + [no_z] + type = DirichletBC + variable = disp_z + boundary = 'front back' + value = 0.0 + [] + [BVPressure] + [pressure_right] + boundary = 'right' + displacement_vars = 'disp_x disp_y disp_z' + value = 1.0 + [] + [pressure_top] + boundary = 'top' + displacement_vars = 'disp_x disp_y disp_z' + value = -1.0 + [] + [] +[] + +[Materials] + [elasticity] + type = BVMechanicalMaterial + displacements = 'disp_x disp_y disp_z' + young_modulus = ${E} + poisson_ratio = ${nu} + initial_stress = '-${P} ${P} 0.0' + inelastic_models = 'viscoelastic' + [] + [viscoelastic] + type = BVRTL2020ModelUpdate + volumetric = false + temperature = temp + Tr = ${Tr} + Ar = ${Ar} + alpha = ${alpha} + A1 = ${A1} + n1 = ${n1} + A2 = ${A2} + n2 = ${n2} + A = ${A} + n = ${n} + B = ${B} + m = ${m} + Nz = ${Nz} + nz = ${nz} + Mz = ${Mz} + mz = ${mz} + z = ${z} + [] +[] + +[Preconditioning] + active = 'hypre' + [hypre] + type = SMP + full = true + petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix' + petsc_options_iname = '-pc_type -pc_hypre_type + -snes_atol -snes_rtol -snes_stol -snes_max_it -snes_linesearch_type' + petsc_options_value = 'hypre boomeramg + 1.0e-10 1.0e-12 0 20 + basic' + [] +[] + +[Postprocessors] + [e] + type = ElementAverageValue + variable = eqv_strain + outputs = csv + [] + [e_rate] + type = ElementAverageValue + variable = eqv_strain_rate + outputs = csv + [] + [eqv_strain_L] + type = ElementAverageValue + variable = eqv_creep_strain_L + outputs = csv + [] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + start_time = 0.0 + end_time = 1 #10.0 + dt = 0.01 +[] + +[Outputs] + perf_graph = true + execute_on = 'TIMESTEP_END' + print_linear_residuals = false + exodus = true + [csv] + type = CSV + [] +[] diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528133255.i b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528133255.i new file mode 100644 index 0000000..a904697 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528133255.i @@ -0,0 +1,254 @@ +# Input file for purely Lemaitre creep model based on RTL2020 model (Azabou et al. (2021)). +# Note: Parameter A is set to zero to ensure the Munson-Dawson component is zero. +# Also, volumetric part is set to false and parameter z is set to zero. +# Parameters +# Units: stress in MPa, time in days, strain in m / m + +E = 6000 +nu = 0.44 +alpha = 0.1 +A2 = 1 +n2 = 14.8 +Ar = 1 +Tr = 289 +# parameters for Munson-Dawson part +A1 = 1 +n1 = 1 +A = 0.0 #0.001 +n = 10 +B = 0.0 +m = 2.2195 +P = 1 +# parameters for volumetric part +z = 0.0 +Nz = 0.0241 +nz = 1.2644 +Mz = 0.024 +mz = 1.028 + +[Mesh] + type = GeneratedMesh + dim = 3 + nx = 1 + ny = 1 + nz = 2 + xmin = 0 + xmax = 1 + ymin = 0 + ymax = 1 + zmin = 0 + zmax = 0.1 +[] + +[Variables] + [disp_x] + order = FIRST + family = LAGRANGE + [] + [disp_y] + order = FIRST + family = LAGRANGE + [] + [disp_z] + order = FIRST + family = LAGRANGE + [] +[] + +[Kernels] + [stress_x] + type = BVStressDivergence + component = x + variable = disp_x + [] + [stress_y] + type = BVStressDivergence + component = y + variable = disp_y + [] + [stress_z] + type = BVStressDivergence + component = z + variable = disp_z + [] +[] + +[AuxVariables] + [temp] + order = FIRST + family = LAGRANGE + initial_condition = 289 + [] + [eqv_stress] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain_rate] + order = CONSTANT + family = MONOMIAL + [] + [strain_yy] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_L] + order = CONSTANT + family = MONOMIAL + [] +[] + +[AuxKernels] + [temp_aux] + type = ConstantAux + variable = temp + value = 289 + execute_on = 'TIMESTEP_END' + [] + [eqv_stress_aux] + type = BVMisesStressAux + variable = eqv_stress + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_aux] + type = BVEqvStrainAux + variable = eqv_strain + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_rate_aux] + type = BVEqvStrainRateAux + variable = eqv_strain_rate + execute_on = 'TIMESTEP_END' + [] + [strain_yy_aux] + type = BVStrainComponentAux + variable = strain_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_L_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_L + property = eqv_creep_strain_L + execute_on = 'TIMESTEP_END' + [] +[] + +[BCs] + [no_x] + type = DirichletBC + variable = disp_x + boundary = 'left' + value = 0.0 + [] + [no_y] + type = DirichletBC + variable = disp_y + boundary = 'bottom' + value = 0.0 + [] + [no_z] + type = DirichletBC + variable = disp_z + boundary = 'front back' + value = 0.0 + [] + [BVPressure] + [pressure_right] + boundary = 'right' + displacement_vars = 'disp_x disp_y disp_z' + value = 0.0 + [] + [pressure_top] + boundary = 'top' + displacement_vars = 'disp_x disp_y disp_z' + value = -2.0 + [] + [] +[] + +[Materials] + [elasticity] + type = BVMechanicalMaterial + displacements = 'disp_x disp_y disp_z' + young_modulus = ${E} + poisson_ratio = ${nu} + initial_stress = '-${P} ${P} 0.0' + inelastic_models = 'viscoelastic' + [] + [viscoelastic] + type = BVRTL2020ModelUpdate + volumetric = false + temperature = temp + Tr = ${Tr} + Ar = ${Ar} + alpha = ${alpha} + A1 = ${A1} + n1 = ${n1} + A2 = ${A2} + n2 = ${n2} + A = ${A} + n = ${n} + B = ${B} + m = ${m} + Nz = ${Nz} + nz = ${nz} + Mz = ${Mz} + mz = ${mz} + z = ${z} + [] +[] + +[Preconditioning] + active = 'hypre' + [hypre] + type = SMP + full = true + petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix' + petsc_options_iname = '-pc_type -pc_hypre_type + -snes_atol -snes_rtol -snes_stol -snes_max_it -snes_linesearch_type' + petsc_options_value = 'hypre boomeramg + 1.0e-10 1.0e-12 0 20 + basic' + [] +[] + +[Postprocessors] + [e] + type = ElementAverageValue + variable = eqv_strain + outputs = csv + [] + [e_rate] + type = ElementAverageValue + variable = eqv_strain_rate + outputs = csv + [] + [eqv_strain_L] + type = ElementAverageValue + variable = eqv_creep_strain_L + outputs = csv + [] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + start_time = 0.0 + end_time = 1 #10.0 + dt = 0.01 +[] + +[Outputs] + perf_graph = true + execute_on = 'TIMESTEP_END' + print_linear_residuals = false + exodus = true + [csv] + type = CSV + [] +[] diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528133256.i b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528133256.i new file mode 100644 index 0000000..a904697 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528133256.i @@ -0,0 +1,254 @@ +# Input file for purely Lemaitre creep model based on RTL2020 model (Azabou et al. (2021)). +# Note: Parameter A is set to zero to ensure the Munson-Dawson component is zero. +# Also, volumetric part is set to false and parameter z is set to zero. +# Parameters +# Units: stress in MPa, time in days, strain in m / m + +E = 6000 +nu = 0.44 +alpha = 0.1 +A2 = 1 +n2 = 14.8 +Ar = 1 +Tr = 289 +# parameters for Munson-Dawson part +A1 = 1 +n1 = 1 +A = 0.0 #0.001 +n = 10 +B = 0.0 +m = 2.2195 +P = 1 +# parameters for volumetric part +z = 0.0 +Nz = 0.0241 +nz = 1.2644 +Mz = 0.024 +mz = 1.028 + +[Mesh] + type = GeneratedMesh + dim = 3 + nx = 1 + ny = 1 + nz = 2 + xmin = 0 + xmax = 1 + ymin = 0 + ymax = 1 + zmin = 0 + zmax = 0.1 +[] + +[Variables] + [disp_x] + order = FIRST + family = LAGRANGE + [] + [disp_y] + order = FIRST + family = LAGRANGE + [] + [disp_z] + order = FIRST + family = LAGRANGE + [] +[] + +[Kernels] + [stress_x] + type = BVStressDivergence + component = x + variable = disp_x + [] + [stress_y] + type = BVStressDivergence + component = y + variable = disp_y + [] + [stress_z] + type = BVStressDivergence + component = z + variable = disp_z + [] +[] + +[AuxVariables] + [temp] + order = FIRST + family = LAGRANGE + initial_condition = 289 + [] + [eqv_stress] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain_rate] + order = CONSTANT + family = MONOMIAL + [] + [strain_yy] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_L] + order = CONSTANT + family = MONOMIAL + [] +[] + +[AuxKernels] + [temp_aux] + type = ConstantAux + variable = temp + value = 289 + execute_on = 'TIMESTEP_END' + [] + [eqv_stress_aux] + type = BVMisesStressAux + variable = eqv_stress + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_aux] + type = BVEqvStrainAux + variable = eqv_strain + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_rate_aux] + type = BVEqvStrainRateAux + variable = eqv_strain_rate + execute_on = 'TIMESTEP_END' + [] + [strain_yy_aux] + type = BVStrainComponentAux + variable = strain_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_L_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_L + property = eqv_creep_strain_L + execute_on = 'TIMESTEP_END' + [] +[] + +[BCs] + [no_x] + type = DirichletBC + variable = disp_x + boundary = 'left' + value = 0.0 + [] + [no_y] + type = DirichletBC + variable = disp_y + boundary = 'bottom' + value = 0.0 + [] + [no_z] + type = DirichletBC + variable = disp_z + boundary = 'front back' + value = 0.0 + [] + [BVPressure] + [pressure_right] + boundary = 'right' + displacement_vars = 'disp_x disp_y disp_z' + value = 0.0 + [] + [pressure_top] + boundary = 'top' + displacement_vars = 'disp_x disp_y disp_z' + value = -2.0 + [] + [] +[] + +[Materials] + [elasticity] + type = BVMechanicalMaterial + displacements = 'disp_x disp_y disp_z' + young_modulus = ${E} + poisson_ratio = ${nu} + initial_stress = '-${P} ${P} 0.0' + inelastic_models = 'viscoelastic' + [] + [viscoelastic] + type = BVRTL2020ModelUpdate + volumetric = false + temperature = temp + Tr = ${Tr} + Ar = ${Ar} + alpha = ${alpha} + A1 = ${A1} + n1 = ${n1} + A2 = ${A2} + n2 = ${n2} + A = ${A} + n = ${n} + B = ${B} + m = ${m} + Nz = ${Nz} + nz = ${nz} + Mz = ${Mz} + mz = ${mz} + z = ${z} + [] +[] + +[Preconditioning] + active = 'hypre' + [hypre] + type = SMP + full = true + petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix' + petsc_options_iname = '-pc_type -pc_hypre_type + -snes_atol -snes_rtol -snes_stol -snes_max_it -snes_linesearch_type' + petsc_options_value = 'hypre boomeramg + 1.0e-10 1.0e-12 0 20 + basic' + [] +[] + +[Postprocessors] + [e] + type = ElementAverageValue + variable = eqv_strain + outputs = csv + [] + [e_rate] + type = ElementAverageValue + variable = eqv_strain_rate + outputs = csv + [] + [eqv_strain_L] + type = ElementAverageValue + variable = eqv_creep_strain_L + outputs = csv + [] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + start_time = 0.0 + end_time = 1 #10.0 + dt = 0.01 +[] + +[Outputs] + perf_graph = true + execute_on = 'TIMESTEP_END' + print_linear_residuals = false + exodus = true + [csv] + type = CSV + [] +[] diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528172043.i b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528172043.i new file mode 100644 index 0000000..6be849e --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528172043.i @@ -0,0 +1,254 @@ +# Input file for purely Lemaitre creep model based on RTL2020 model (Azabou et al. (2021)). +# Note: Parameter A is set to zero to ensure the Munson-Dawson component is zero. +# Also, volumetric part is set to false and parameter z is set to zero. +# Parameters +# Units: stress in MPa, time in days, strain in m / m + +E = 6000 +nu = 0.000044 +alpha = 0.1 +A2 = 1 +n2 = 14.8 +Ar = 1 +Tr = 289 +# parameters for Munson-Dawson part +A1 = 1 +n1 = 1 +A = 0.0 #0.001 +n = 10 +B = 0.0 +m = 2.2195 +P = 1 +# parameters for volumetric part +z = 0.0 +Nz = 0.0241 +nz = 1.2644 +Mz = 0.024 +mz = 1.028 + +[Mesh] + type = GeneratedMesh + dim = 3 + nx = 1 + ny = 1 + nz = 2 + xmin = 0 + xmax = 1 + ymin = 0 + ymax = 1 + zmin = 0 + zmax = 0.1 +[] + +[Variables] + [disp_x] + order = FIRST + family = LAGRANGE + [] + [disp_y] + order = FIRST + family = LAGRANGE + [] + [disp_z] + order = FIRST + family = LAGRANGE + [] +[] + +[Kernels] + [stress_x] + type = BVStressDivergence + component = x + variable = disp_x + [] + [stress_y] + type = BVStressDivergence + component = y + variable = disp_y + [] + [stress_z] + type = BVStressDivergence + component = z + variable = disp_z + [] +[] + +[AuxVariables] + [temp] + order = FIRST + family = LAGRANGE + initial_condition = 289 + [] + [eqv_stress] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain_rate] + order = CONSTANT + family = MONOMIAL + [] + [strain_yy] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_L] + order = CONSTANT + family = MONOMIAL + [] +[] + +[AuxKernels] + [temp_aux] + type = ConstantAux + variable = temp + value = 289 + execute_on = 'TIMESTEP_END' + [] + [eqv_stress_aux] + type = BVMisesStressAux + variable = eqv_stress + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_aux] + type = BVEqvStrainAux + variable = eqv_strain + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_rate_aux] + type = BVEqvStrainRateAux + variable = eqv_strain_rate + execute_on = 'TIMESTEP_END' + [] + [strain_yy_aux] + type = BVStrainComponentAux + variable = strain_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_L_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_L + property = eqv_creep_strain_L + execute_on = 'TIMESTEP_END' + [] +[] + +[BCs] + [no_x] + type = DirichletBC + variable = disp_x + boundary = 'left' + value = 0.0 + [] + [no_y] + type = DirichletBC + variable = disp_y + boundary = 'bottom' + value = 0.0 + [] + [no_z] + type = DirichletBC + variable = disp_z + boundary = 'front back' + value = 0.0 + [] + [BVPressure] + [pressure_right] + boundary = 'right' + displacement_vars = 'disp_x disp_y disp_z' + value = 0.0 + [] + [pressure_top] + boundary = 'top' + displacement_vars = 'disp_x disp_y disp_z' + value = -2.0 + [] + [] +[] + +[Materials] + [elasticity] + type = BVMechanicalMaterial + displacements = 'disp_x disp_y disp_z' + young_modulus = ${E} + poisson_ratio = ${nu} + initial_stress = '-${P} ${P} 0.0' + inelastic_models = 'viscoelastic' + [] + [viscoelastic] + type = BVRTL2020ModelUpdate + volumetric = false + temperature = temp + Tr = ${Tr} + Ar = ${Ar} + alpha = ${alpha} + A1 = ${A1} + n1 = ${n1} + A2 = ${A2} + n2 = ${n2} + A = ${A} + n = ${n} + B = ${B} + m = ${m} + Nz = ${Nz} + nz = ${nz} + Mz = ${Mz} + mz = ${mz} + z = ${z} + [] +[] + +[Preconditioning] + active = 'hypre' + [hypre] + type = SMP + full = true + petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix' + petsc_options_iname = '-pc_type -pc_hypre_type + -snes_atol -snes_rtol -snes_stol -snes_max_it -snes_linesearch_type' + petsc_options_value = 'hypre boomeramg + 1.0e-10 1.0e-12 0 20 + basic' + [] +[] + +[Postprocessors] + [e] + type = ElementAverageValue + variable = eqv_strain + outputs = csv + [] + [e_rate] + type = ElementAverageValue + variable = eqv_strain_rate + outputs = csv + [] + [eqv_strain_L] + type = ElementAverageValue + variable = eqv_creep_strain_L + outputs = csv + [] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + start_time = 0.0 + end_time = 1 #10.0 + dt = 0.01 +[] + +[Outputs] + perf_graph = true + execute_on = 'TIMESTEP_END' + print_linear_residuals = false + exodus = true + [csv] + type = CSV + [] +[] diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528172044.i b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528172044.i new file mode 100644 index 0000000..6be849e --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528172044.i @@ -0,0 +1,254 @@ +# Input file for purely Lemaitre creep model based on RTL2020 model (Azabou et al. (2021)). +# Note: Parameter A is set to zero to ensure the Munson-Dawson component is zero. +# Also, volumetric part is set to false and parameter z is set to zero. +# Parameters +# Units: stress in MPa, time in days, strain in m / m + +E = 6000 +nu = 0.000044 +alpha = 0.1 +A2 = 1 +n2 = 14.8 +Ar = 1 +Tr = 289 +# parameters for Munson-Dawson part +A1 = 1 +n1 = 1 +A = 0.0 #0.001 +n = 10 +B = 0.0 +m = 2.2195 +P = 1 +# parameters for volumetric part +z = 0.0 +Nz = 0.0241 +nz = 1.2644 +Mz = 0.024 +mz = 1.028 + +[Mesh] + type = GeneratedMesh + dim = 3 + nx = 1 + ny = 1 + nz = 2 + xmin = 0 + xmax = 1 + ymin = 0 + ymax = 1 + zmin = 0 + zmax = 0.1 +[] + +[Variables] + [disp_x] + order = FIRST + family = LAGRANGE + [] + [disp_y] + order = FIRST + family = LAGRANGE + [] + [disp_z] + order = FIRST + family = LAGRANGE + [] +[] + +[Kernels] + [stress_x] + type = BVStressDivergence + component = x + variable = disp_x + [] + [stress_y] + type = BVStressDivergence + component = y + variable = disp_y + [] + [stress_z] + type = BVStressDivergence + component = z + variable = disp_z + [] +[] + +[AuxVariables] + [temp] + order = FIRST + family = LAGRANGE + initial_condition = 289 + [] + [eqv_stress] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain_rate] + order = CONSTANT + family = MONOMIAL + [] + [strain_yy] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_L] + order = CONSTANT + family = MONOMIAL + [] +[] + +[AuxKernels] + [temp_aux] + type = ConstantAux + variable = temp + value = 289 + execute_on = 'TIMESTEP_END' + [] + [eqv_stress_aux] + type = BVMisesStressAux + variable = eqv_stress + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_aux] + type = BVEqvStrainAux + variable = eqv_strain + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_rate_aux] + type = BVEqvStrainRateAux + variable = eqv_strain_rate + execute_on = 'TIMESTEP_END' + [] + [strain_yy_aux] + type = BVStrainComponentAux + variable = strain_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_L_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_L + property = eqv_creep_strain_L + execute_on = 'TIMESTEP_END' + [] +[] + +[BCs] + [no_x] + type = DirichletBC + variable = disp_x + boundary = 'left' + value = 0.0 + [] + [no_y] + type = DirichletBC + variable = disp_y + boundary = 'bottom' + value = 0.0 + [] + [no_z] + type = DirichletBC + variable = disp_z + boundary = 'front back' + value = 0.0 + [] + [BVPressure] + [pressure_right] + boundary = 'right' + displacement_vars = 'disp_x disp_y disp_z' + value = 0.0 + [] + [pressure_top] + boundary = 'top' + displacement_vars = 'disp_x disp_y disp_z' + value = -2.0 + [] + [] +[] + +[Materials] + [elasticity] + type = BVMechanicalMaterial + displacements = 'disp_x disp_y disp_z' + young_modulus = ${E} + poisson_ratio = ${nu} + initial_stress = '-${P} ${P} 0.0' + inelastic_models = 'viscoelastic' + [] + [viscoelastic] + type = BVRTL2020ModelUpdate + volumetric = false + temperature = temp + Tr = ${Tr} + Ar = ${Ar} + alpha = ${alpha} + A1 = ${A1} + n1 = ${n1} + A2 = ${A2} + n2 = ${n2} + A = ${A} + n = ${n} + B = ${B} + m = ${m} + Nz = ${Nz} + nz = ${nz} + Mz = ${Mz} + mz = ${mz} + z = ${z} + [] +[] + +[Preconditioning] + active = 'hypre' + [hypre] + type = SMP + full = true + petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix' + petsc_options_iname = '-pc_type -pc_hypre_type + -snes_atol -snes_rtol -snes_stol -snes_max_it -snes_linesearch_type' + petsc_options_value = 'hypre boomeramg + 1.0e-10 1.0e-12 0 20 + basic' + [] +[] + +[Postprocessors] + [e] + type = ElementAverageValue + variable = eqv_strain + outputs = csv + [] + [e_rate] + type = ElementAverageValue + variable = eqv_strain_rate + outputs = csv + [] + [eqv_strain_L] + type = ElementAverageValue + variable = eqv_creep_strain_L + outputs = csv + [] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + start_time = 0.0 + end_time = 1 #10.0 + dt = 0.01 +[] + +[Outputs] + perf_graph = true + execute_on = 'TIMESTEP_END' + print_linear_residuals = false + exodus = true + [csv] + type = CSV + [] +[] diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528172734.i b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528172734.i new file mode 100644 index 0000000..4c8845d --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528172734.i @@ -0,0 +1,254 @@ +# Input file for purely Lemaitre creep model based on RTL2020 model (Azabou et al. (2021)). +# Note: Parameter A is set to zero to ensure the Munson-Dawson component is zero. +# Also, volumetric part is set to false and parameter z is set to zero. +# Parameters +# Units: stress in MPa, time in days, strain in m / m + +E = 6000 +nu = 0.000044 +alpha = 0.1 +A2 = 1 +n2 = 14.8 +Ar = 1 +Tr = 289 +# parameters for Munson-Dawson part +A1 = 1 +n1 = 1 +A = 0.0 #0.001 +n = 10 +B = 0.0 +m = 2.2195 +P = 1 +# parameters for volumetric part +z = 0.0 +Nz = 0.0241 +nz = 1.2644 +Mz = 0.024 +mz = 1.028 + +[Mesh] + type = GeneratedMesh + dim = 3 + nx = 1 + ny = 1 + nz = 2 + xmin = 0 + xmax = 1 + ymin = 0 + ymax = 1 + zmin = 0 + zmax = 0.1 +[] + +[Variables] + [disp_x] + order = FIRST + family = LAGRANGE + [] + [disp_y] + order = FIRST + family = LAGRANGE + [] + [disp_z] + order = FIRST + family = LAGRANGE + [] +[] + +[Kernels] + [stress_x] + type = BVStressDivergence + component = x + variable = disp_x + [] + [stress_y] + type = BVStressDivergence + component = y + variable = disp_y + [] + [stress_z] + type = BVStressDivergence + component = z + variable = disp_z + [] +[] + +[AuxVariables] + [temp] + order = FIRST + family = LAGRANGE + initial_condition = 289 + [] + [eqv_stress] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain_rate] + order = CONSTANT + family = MONOMIAL + [] + [strain_yy] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_L] + order = CONSTANT + family = MONOMIAL + [] +[] + +[AuxKernels] + [temp_aux] + type = ConstantAux + variable = temp + value = 289 + execute_on = 'TIMESTEP_END' + [] + [eqv_stress_aux] + type = BVMisesStressAux + variable = eqv_stress + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_aux] + type = BVEqvStrainAux + variable = eqv_strain + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_rate_aux] + type = BVEqvStrainRateAux + variable = eqv_strain_rate + execute_on = 'TIMESTEP_END' + [] + [strain_yy_aux] + type = BVStrainComponentAux + variable = strain_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_L_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_L + property = eqv_creep_strain_L + execute_on = 'TIMESTEP_END' + [] +[] + +[BCs] + [no_x] + type = DirichletBC + variable = disp_x + boundary = 'left' + value = 0.0 + [] + [no_y] + type = DirichletBC + variable = disp_y + boundary = 'bottom' + value = 0.0 + [] + [no_z] + type = DirichletBC + variable = disp_z + boundary = 'front back' + value = 0.0 + [] + [BVPressure] + [pressure_right] + boundary = 'right' + displacement_vars = 'disp_x disp_y disp_z' + value = 0.0 + [] + [pressure_top] + boundary = 'top' + displacement_vars = 'disp_x disp_y disp_z' + value = -2.0 + [] + [] +[] + +[Materials] + [elasticity] + type = BVMechanicalMaterial + displacements = 'disp_x disp_y disp_z' + young_modulus = ${E} + poisson_ratio = ${nu} + initial_stress = '-${P} ${P} 0.0' + inelastic_models = 'viscoelastic' + [] + [viscoelastic] + type = BVRTL2020ModelUpdate + volumetric = false + temperature = temp + Tr = ${Tr} + Ar = ${Ar} + alpha = ${alpha} + A1 = ${A1} + n1 = ${n1} + A2 = ${A2} + n2 = ${n2} + A = ${A} + n = ${n} + B = ${B} + m = ${m} + Nz = ${Nz} + nz = ${nz} + Mz = ${Mz} + mz = ${mz} + z = ${z} + [] +[] + +[Preconditioning] + active = 'hypre' + [hypre] + type = SMP + full = true + petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix' + petsc_options_iname = '-pc_type -pc_hypre_type + -snes_atol -snes_rtol -snes_stol -snes_max_it -snes_linesearch_type' + petsc_options_value = 'hypre boomeramg + 1.0e-10 1.0e-12 0 20 + basic' + [] +[] + +[Postprocessors] + [e] + type = ElementAverageValue + variable = eqv_strain + outputs = csv + [] + [e_rate] + type = ElementAverageValue + variable = eqv_strain_rate + outputs = csv + [] + [eqv_strain_L] + type = ElementAverageValue + variable = eqv_creep_strain_L + outputs = csv + [] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + start_time = 0.0 + end_time = 1 #10.0 + dt = 0.0001 +[] + +[Outputs] + perf_graph = true + execute_on = 'TIMESTEP_END' + print_linear_residuals = false + exodus = true + [csv] + type = CSV + [] +[] diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528172735.i b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528172735.i new file mode 100644 index 0000000..4c8845d --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528172735.i @@ -0,0 +1,254 @@ +# Input file for purely Lemaitre creep model based on RTL2020 model (Azabou et al. (2021)). +# Note: Parameter A is set to zero to ensure the Munson-Dawson component is zero. +# Also, volumetric part is set to false and parameter z is set to zero. +# Parameters +# Units: stress in MPa, time in days, strain in m / m + +E = 6000 +nu = 0.000044 +alpha = 0.1 +A2 = 1 +n2 = 14.8 +Ar = 1 +Tr = 289 +# parameters for Munson-Dawson part +A1 = 1 +n1 = 1 +A = 0.0 #0.001 +n = 10 +B = 0.0 +m = 2.2195 +P = 1 +# parameters for volumetric part +z = 0.0 +Nz = 0.0241 +nz = 1.2644 +Mz = 0.024 +mz = 1.028 + +[Mesh] + type = GeneratedMesh + dim = 3 + nx = 1 + ny = 1 + nz = 2 + xmin = 0 + xmax = 1 + ymin = 0 + ymax = 1 + zmin = 0 + zmax = 0.1 +[] + +[Variables] + [disp_x] + order = FIRST + family = LAGRANGE + [] + [disp_y] + order = FIRST + family = LAGRANGE + [] + [disp_z] + order = FIRST + family = LAGRANGE + [] +[] + +[Kernels] + [stress_x] + type = BVStressDivergence + component = x + variable = disp_x + [] + [stress_y] + type = BVStressDivergence + component = y + variable = disp_y + [] + [stress_z] + type = BVStressDivergence + component = z + variable = disp_z + [] +[] + +[AuxVariables] + [temp] + order = FIRST + family = LAGRANGE + initial_condition = 289 + [] + [eqv_stress] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain_rate] + order = CONSTANT + family = MONOMIAL + [] + [strain_yy] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_L] + order = CONSTANT + family = MONOMIAL + [] +[] + +[AuxKernels] + [temp_aux] + type = ConstantAux + variable = temp + value = 289 + execute_on = 'TIMESTEP_END' + [] + [eqv_stress_aux] + type = BVMisesStressAux + variable = eqv_stress + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_aux] + type = BVEqvStrainAux + variable = eqv_strain + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_rate_aux] + type = BVEqvStrainRateAux + variable = eqv_strain_rate + execute_on = 'TIMESTEP_END' + [] + [strain_yy_aux] + type = BVStrainComponentAux + variable = strain_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_L_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_L + property = eqv_creep_strain_L + execute_on = 'TIMESTEP_END' + [] +[] + +[BCs] + [no_x] + type = DirichletBC + variable = disp_x + boundary = 'left' + value = 0.0 + [] + [no_y] + type = DirichletBC + variable = disp_y + boundary = 'bottom' + value = 0.0 + [] + [no_z] + type = DirichletBC + variable = disp_z + boundary = 'front back' + value = 0.0 + [] + [BVPressure] + [pressure_right] + boundary = 'right' + displacement_vars = 'disp_x disp_y disp_z' + value = 0.0 + [] + [pressure_top] + boundary = 'top' + displacement_vars = 'disp_x disp_y disp_z' + value = -2.0 + [] + [] +[] + +[Materials] + [elasticity] + type = BVMechanicalMaterial + displacements = 'disp_x disp_y disp_z' + young_modulus = ${E} + poisson_ratio = ${nu} + initial_stress = '-${P} ${P} 0.0' + inelastic_models = 'viscoelastic' + [] + [viscoelastic] + type = BVRTL2020ModelUpdate + volumetric = false + temperature = temp + Tr = ${Tr} + Ar = ${Ar} + alpha = ${alpha} + A1 = ${A1} + n1 = ${n1} + A2 = ${A2} + n2 = ${n2} + A = ${A} + n = ${n} + B = ${B} + m = ${m} + Nz = ${Nz} + nz = ${nz} + Mz = ${Mz} + mz = ${mz} + z = ${z} + [] +[] + +[Preconditioning] + active = 'hypre' + [hypre] + type = SMP + full = true + petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix' + petsc_options_iname = '-pc_type -pc_hypre_type + -snes_atol -snes_rtol -snes_stol -snes_max_it -snes_linesearch_type' + petsc_options_value = 'hypre boomeramg + 1.0e-10 1.0e-12 0 20 + basic' + [] +[] + +[Postprocessors] + [e] + type = ElementAverageValue + variable = eqv_strain + outputs = csv + [] + [e_rate] + type = ElementAverageValue + variable = eqv_strain_rate + outputs = csv + [] + [eqv_strain_L] + type = ElementAverageValue + variable = eqv_creep_strain_L + outputs = csv + [] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + start_time = 0.0 + end_time = 1 #10.0 + dt = 0.0001 +[] + +[Outputs] + perf_graph = true + execute_on = 'TIMESTEP_END' + print_linear_residuals = false + exodus = true + [csv] + type = CSV + [] +[] diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528173715.i b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528173715.i new file mode 100644 index 0000000..b664a4b --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528173715.i @@ -0,0 +1,254 @@ +# Input file for purely Lemaitre creep model based on RTL2020 model (Azabou et al. (2021)). +# Note: Parameter A is set to zero to ensure the Munson-Dawson component is zero. +# Also, volumetric part is set to false and parameter z is set to zero. +# Parameters +# Units: stress in MPa, time in days, strain in m / m + +E = 6000 +nu = 0.000044 +alpha = 0.1 +A2 = 1 +n2 = 14.8 +Ar = 1 +Tr = 289 +# parameters for Munson-Dawson part +A1 = 1 +n1 = 1 +A = 0.0 #0.001 +n = 10 +B = 0.0 +m = 2.2195 +P = 1e6 +# parameters for volumetric part +z = 0.0 +Nz = 0.0241 +nz = 1.2644 +Mz = 0.024 +mz = 1.028 + +[Mesh] + type = GeneratedMesh + dim = 3 + nx = 1 + ny = 1 + nz = 2 + xmin = 0 + xmax = 1 + ymin = 0 + ymax = 1 + zmin = 0 + zmax = 0.1 +[] + +[Variables] + [disp_x] + order = FIRST + family = LAGRANGE + [] + [disp_y] + order = FIRST + family = LAGRANGE + [] + [disp_z] + order = FIRST + family = LAGRANGE + [] +[] + +[Kernels] + [stress_x] + type = BVStressDivergence + component = x + variable = disp_x + [] + [stress_y] + type = BVStressDivergence + component = y + variable = disp_y + [] + [stress_z] + type = BVStressDivergence + component = z + variable = disp_z + [] +[] + +[AuxVariables] + [temp] + order = FIRST + family = LAGRANGE + initial_condition = 289 + [] + [eqv_stress] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain_rate] + order = CONSTANT + family = MONOMIAL + [] + [strain_yy] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_L] + order = CONSTANT + family = MONOMIAL + [] +[] + +[AuxKernels] + [temp_aux] + type = ConstantAux + variable = temp + value = 289 + execute_on = 'TIMESTEP_END' + [] + [eqv_stress_aux] + type = BVMisesStressAux + variable = eqv_stress + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_aux] + type = BVEqvStrainAux + variable = eqv_strain + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_rate_aux] + type = BVEqvStrainRateAux + variable = eqv_strain_rate + execute_on = 'TIMESTEP_END' + [] + [strain_yy_aux] + type = BVStrainComponentAux + variable = strain_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_L_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_L + property = eqv_creep_strain_L + execute_on = 'TIMESTEP_END' + [] +[] + +[BCs] + [no_x] + type = DirichletBC + variable = disp_x + boundary = 'left' + value = 0.0 + [] + [no_y] + type = DirichletBC + variable = disp_y + boundary = 'bottom' + value = 0.0 + [] + [no_z] + type = DirichletBC + variable = disp_z + boundary = 'front back' + value = 0.0 + [] + [BVPressure] + [pressure_right] + boundary = 'right' + displacement_vars = 'disp_x disp_y disp_z' + value = 0.0 + [] + [pressure_top] + boundary = 'top' + displacement_vars = 'disp_x disp_y disp_z' + value = -2e6 + [] + [] +[] + +[Materials] + [elasticity] + type = BVMechanicalMaterial + displacements = 'disp_x disp_y disp_z' + young_modulus = ${E} + poisson_ratio = ${nu} + initial_stress = '-${P} ${P} 0.0' + inelastic_models = 'viscoelastic' + [] + [viscoelastic] + type = BVRTL2020ModelUpdate + volumetric = false + temperature = temp + Tr = ${Tr} + Ar = ${Ar} + alpha = ${alpha} + A1 = ${A1} + n1 = ${n1} + A2 = ${A2} + n2 = ${n2} + A = ${A} + n = ${n} + B = ${B} + m = ${m} + Nz = ${Nz} + nz = ${nz} + Mz = ${Mz} + mz = ${mz} + z = ${z} + [] +[] + +[Preconditioning] + active = 'hypre' + [hypre] + type = SMP + full = true + petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix' + petsc_options_iname = '-pc_type -pc_hypre_type + -snes_atol -snes_rtol -snes_stol -snes_max_it -snes_linesearch_type' + petsc_options_value = 'hypre boomeramg + 1.0e-10 1.0e-12 0 20 + basic' + [] +[] + +[Postprocessors] + [e] + type = ElementAverageValue + variable = eqv_strain + outputs = csv + [] + [e_rate] + type = ElementAverageValue + variable = eqv_strain_rate + outputs = csv + [] + [eqv_strain_L] + type = ElementAverageValue + variable = eqv_creep_strain_L + outputs = csv + [] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + start_time = 0.0 + end_time = 1 #10.0 + dt = 0.0001 +[] + +[Outputs] + perf_graph = true + execute_on = 'TIMESTEP_END' + print_linear_residuals = false + exodus = true + [csv] + type = CSV + [] +[] diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528173716.i b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528173716.i new file mode 100644 index 0000000..b664a4b --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528173716.i @@ -0,0 +1,254 @@ +# Input file for purely Lemaitre creep model based on RTL2020 model (Azabou et al. (2021)). +# Note: Parameter A is set to zero to ensure the Munson-Dawson component is zero. +# Also, volumetric part is set to false and parameter z is set to zero. +# Parameters +# Units: stress in MPa, time in days, strain in m / m + +E = 6000 +nu = 0.000044 +alpha = 0.1 +A2 = 1 +n2 = 14.8 +Ar = 1 +Tr = 289 +# parameters for Munson-Dawson part +A1 = 1 +n1 = 1 +A = 0.0 #0.001 +n = 10 +B = 0.0 +m = 2.2195 +P = 1e6 +# parameters for volumetric part +z = 0.0 +Nz = 0.0241 +nz = 1.2644 +Mz = 0.024 +mz = 1.028 + +[Mesh] + type = GeneratedMesh + dim = 3 + nx = 1 + ny = 1 + nz = 2 + xmin = 0 + xmax = 1 + ymin = 0 + ymax = 1 + zmin = 0 + zmax = 0.1 +[] + +[Variables] + [disp_x] + order = FIRST + family = LAGRANGE + [] + [disp_y] + order = FIRST + family = LAGRANGE + [] + [disp_z] + order = FIRST + family = LAGRANGE + [] +[] + +[Kernels] + [stress_x] + type = BVStressDivergence + component = x + variable = disp_x + [] + [stress_y] + type = BVStressDivergence + component = y + variable = disp_y + [] + [stress_z] + type = BVStressDivergence + component = z + variable = disp_z + [] +[] + +[AuxVariables] + [temp] + order = FIRST + family = LAGRANGE + initial_condition = 289 + [] + [eqv_stress] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain_rate] + order = CONSTANT + family = MONOMIAL + [] + [strain_yy] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_L] + order = CONSTANT + family = MONOMIAL + [] +[] + +[AuxKernels] + [temp_aux] + type = ConstantAux + variable = temp + value = 289 + execute_on = 'TIMESTEP_END' + [] + [eqv_stress_aux] + type = BVMisesStressAux + variable = eqv_stress + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_aux] + type = BVEqvStrainAux + variable = eqv_strain + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_rate_aux] + type = BVEqvStrainRateAux + variable = eqv_strain_rate + execute_on = 'TIMESTEP_END' + [] + [strain_yy_aux] + type = BVStrainComponentAux + variable = strain_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_L_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_L + property = eqv_creep_strain_L + execute_on = 'TIMESTEP_END' + [] +[] + +[BCs] + [no_x] + type = DirichletBC + variable = disp_x + boundary = 'left' + value = 0.0 + [] + [no_y] + type = DirichletBC + variable = disp_y + boundary = 'bottom' + value = 0.0 + [] + [no_z] + type = DirichletBC + variable = disp_z + boundary = 'front back' + value = 0.0 + [] + [BVPressure] + [pressure_right] + boundary = 'right' + displacement_vars = 'disp_x disp_y disp_z' + value = 0.0 + [] + [pressure_top] + boundary = 'top' + displacement_vars = 'disp_x disp_y disp_z' + value = -2e6 + [] + [] +[] + +[Materials] + [elasticity] + type = BVMechanicalMaterial + displacements = 'disp_x disp_y disp_z' + young_modulus = ${E} + poisson_ratio = ${nu} + initial_stress = '-${P} ${P} 0.0' + inelastic_models = 'viscoelastic' + [] + [viscoelastic] + type = BVRTL2020ModelUpdate + volumetric = false + temperature = temp + Tr = ${Tr} + Ar = ${Ar} + alpha = ${alpha} + A1 = ${A1} + n1 = ${n1} + A2 = ${A2} + n2 = ${n2} + A = ${A} + n = ${n} + B = ${B} + m = ${m} + Nz = ${Nz} + nz = ${nz} + Mz = ${Mz} + mz = ${mz} + z = ${z} + [] +[] + +[Preconditioning] + active = 'hypre' + [hypre] + type = SMP + full = true + petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix' + petsc_options_iname = '-pc_type -pc_hypre_type + -snes_atol -snes_rtol -snes_stol -snes_max_it -snes_linesearch_type' + petsc_options_value = 'hypre boomeramg + 1.0e-10 1.0e-12 0 20 + basic' + [] +[] + +[Postprocessors] + [e] + type = ElementAverageValue + variable = eqv_strain + outputs = csv + [] + [e_rate] + type = ElementAverageValue + variable = eqv_strain_rate + outputs = csv + [] + [eqv_strain_L] + type = ElementAverageValue + variable = eqv_creep_strain_L + outputs = csv + [] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + start_time = 0.0 + end_time = 1 #10.0 + dt = 0.0001 +[] + +[Outputs] + perf_graph = true + execute_on = 'TIMESTEP_END' + print_linear_residuals = false + exodus = true + [csv] + type = CSV + [] +[] diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528173755.i b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528173755.i new file mode 100644 index 0000000..eb3e729 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528173755.i @@ -0,0 +1,254 @@ +# Input file for purely Lemaitre creep model based on RTL2020 model (Azabou et al. (2021)). +# Note: Parameter A is set to zero to ensure the Munson-Dawson component is zero. +# Also, volumetric part is set to false and parameter z is set to zero. +# Parameters +# Units: stress in MPa, time in days, strain in m / m + +E = 6000 +nu = 0.000044 +alpha = 0.1 +A2 = 1 +n2 = 14.8 +Ar = 1 +Tr = 289 +# parameters for Munson-Dawson part +A1 = 1 +n1 = 1 +A = 0.0 #0.001 +n = 10 +B = 0.0 +m = 2.2195 +P = 1 +# parameters for volumetric part +z = 0.0 +Nz = 0.0241 +nz = 1.2644 +Mz = 0.024 +mz = 1.028 + +[Mesh] + type = GeneratedMesh + dim = 3 + nx = 1 + ny = 1 + nz = 2 + xmin = 0 + xmax = 1 + ymin = 0 + ymax = 1 + zmin = 0 + zmax = 0.1 +[] + +[Variables] + [disp_x] + order = FIRST + family = LAGRANGE + [] + [disp_y] + order = FIRST + family = LAGRANGE + [] + [disp_z] + order = FIRST + family = LAGRANGE + [] +[] + +[Kernels] + [stress_x] + type = BVStressDivergence + component = x + variable = disp_x + [] + [stress_y] + type = BVStressDivergence + component = y + variable = disp_y + [] + [stress_z] + type = BVStressDivergence + component = z + variable = disp_z + [] +[] + +[AuxVariables] + [temp] + order = FIRST + family = LAGRANGE + initial_condition = 289 + [] + [eqv_stress] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain_rate] + order = CONSTANT + family = MONOMIAL + [] + [strain_yy] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_L] + order = CONSTANT + family = MONOMIAL + [] +[] + +[AuxKernels] + [temp_aux] + type = ConstantAux + variable = temp + value = 289 + execute_on = 'TIMESTEP_END' + [] + [eqv_stress_aux] + type = BVMisesStressAux + variable = eqv_stress + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_aux] + type = BVEqvStrainAux + variable = eqv_strain + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_rate_aux] + type = BVEqvStrainRateAux + variable = eqv_strain_rate + execute_on = 'TIMESTEP_END' + [] + [strain_yy_aux] + type = BVStrainComponentAux + variable = strain_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_L_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_L + property = eqv_creep_strain_L + execute_on = 'TIMESTEP_END' + [] +[] + +[BCs] + [no_x] + type = DirichletBC + variable = disp_x + boundary = 'left' + value = 0.0 + [] + [no_y] + type = DirichletBC + variable = disp_y + boundary = 'bottom' + value = 0.0 + [] + [no_z] + type = DirichletBC + variable = disp_z + boundary = 'front back' + value = 0.0 + [] + [BVPressure] + [pressure_right] + boundary = 'right' + displacement_vars = 'disp_x disp_y disp_z' + value = 0.0 + [] + [pressure_top] + boundary = 'top' + displacement_vars = 'disp_x disp_y disp_z' + value = -2e6 + [] + [] +[] + +[Materials] + [elasticity] + type = BVMechanicalMaterial + displacements = 'disp_x disp_y disp_z' + young_modulus = ${E} + poisson_ratio = ${nu} + initial_stress = '-${P} ${P} 0.0' + inelastic_models = 'viscoelastic' + [] + [viscoelastic] + type = BVRTL2020ModelUpdate + volumetric = false + temperature = temp + Tr = ${Tr} + Ar = ${Ar} + alpha = ${alpha} + A1 = ${A1} + n1 = ${n1} + A2 = ${A2} + n2 = ${n2} + A = ${A} + n = ${n} + B = ${B} + m = ${m} + Nz = ${Nz} + nz = ${nz} + Mz = ${Mz} + mz = ${mz} + z = ${z} + [] +[] + +[Preconditioning] + active = 'hypre' + [hypre] + type = SMP + full = true + petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix' + petsc_options_iname = '-pc_type -pc_hypre_type + -snes_atol -snes_rtol -snes_stol -snes_max_it -snes_linesearch_type' + petsc_options_value = 'hypre boomeramg + 1.0e-10 1.0e-12 0 20 + basic' + [] +[] + +[Postprocessors] + [e] + type = ElementAverageValue + variable = eqv_strain + outputs = csv + [] + [e_rate] + type = ElementAverageValue + variable = eqv_strain_rate + outputs = csv + [] + [eqv_strain_L] + type = ElementAverageValue + variable = eqv_creep_strain_L + outputs = csv + [] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + start_time = 0.0 + end_time = 1 #10.0 + dt = 0.0001 +[] + +[Outputs] + perf_graph = true + execute_on = 'TIMESTEP_END' + print_linear_residuals = false + exodus = true + [csv] + type = CSV + [] +[] diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528173756.i b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528173756.i new file mode 100644 index 0000000..eb3e729 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528173756.i @@ -0,0 +1,254 @@ +# Input file for purely Lemaitre creep model based on RTL2020 model (Azabou et al. (2021)). +# Note: Parameter A is set to zero to ensure the Munson-Dawson component is zero. +# Also, volumetric part is set to false and parameter z is set to zero. +# Parameters +# Units: stress in MPa, time in days, strain in m / m + +E = 6000 +nu = 0.000044 +alpha = 0.1 +A2 = 1 +n2 = 14.8 +Ar = 1 +Tr = 289 +# parameters for Munson-Dawson part +A1 = 1 +n1 = 1 +A = 0.0 #0.001 +n = 10 +B = 0.0 +m = 2.2195 +P = 1 +# parameters for volumetric part +z = 0.0 +Nz = 0.0241 +nz = 1.2644 +Mz = 0.024 +mz = 1.028 + +[Mesh] + type = GeneratedMesh + dim = 3 + nx = 1 + ny = 1 + nz = 2 + xmin = 0 + xmax = 1 + ymin = 0 + ymax = 1 + zmin = 0 + zmax = 0.1 +[] + +[Variables] + [disp_x] + order = FIRST + family = LAGRANGE + [] + [disp_y] + order = FIRST + family = LAGRANGE + [] + [disp_z] + order = FIRST + family = LAGRANGE + [] +[] + +[Kernels] + [stress_x] + type = BVStressDivergence + component = x + variable = disp_x + [] + [stress_y] + type = BVStressDivergence + component = y + variable = disp_y + [] + [stress_z] + type = BVStressDivergence + component = z + variable = disp_z + [] +[] + +[AuxVariables] + [temp] + order = FIRST + family = LAGRANGE + initial_condition = 289 + [] + [eqv_stress] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain_rate] + order = CONSTANT + family = MONOMIAL + [] + [strain_yy] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_L] + order = CONSTANT + family = MONOMIAL + [] +[] + +[AuxKernels] + [temp_aux] + type = ConstantAux + variable = temp + value = 289 + execute_on = 'TIMESTEP_END' + [] + [eqv_stress_aux] + type = BVMisesStressAux + variable = eqv_stress + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_aux] + type = BVEqvStrainAux + variable = eqv_strain + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_rate_aux] + type = BVEqvStrainRateAux + variable = eqv_strain_rate + execute_on = 'TIMESTEP_END' + [] + [strain_yy_aux] + type = BVStrainComponentAux + variable = strain_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_L_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_L + property = eqv_creep_strain_L + execute_on = 'TIMESTEP_END' + [] +[] + +[BCs] + [no_x] + type = DirichletBC + variable = disp_x + boundary = 'left' + value = 0.0 + [] + [no_y] + type = DirichletBC + variable = disp_y + boundary = 'bottom' + value = 0.0 + [] + [no_z] + type = DirichletBC + variable = disp_z + boundary = 'front back' + value = 0.0 + [] + [BVPressure] + [pressure_right] + boundary = 'right' + displacement_vars = 'disp_x disp_y disp_z' + value = 0.0 + [] + [pressure_top] + boundary = 'top' + displacement_vars = 'disp_x disp_y disp_z' + value = -2e6 + [] + [] +[] + +[Materials] + [elasticity] + type = BVMechanicalMaterial + displacements = 'disp_x disp_y disp_z' + young_modulus = ${E} + poisson_ratio = ${nu} + initial_stress = '-${P} ${P} 0.0' + inelastic_models = 'viscoelastic' + [] + [viscoelastic] + type = BVRTL2020ModelUpdate + volumetric = false + temperature = temp + Tr = ${Tr} + Ar = ${Ar} + alpha = ${alpha} + A1 = ${A1} + n1 = ${n1} + A2 = ${A2} + n2 = ${n2} + A = ${A} + n = ${n} + B = ${B} + m = ${m} + Nz = ${Nz} + nz = ${nz} + Mz = ${Mz} + mz = ${mz} + z = ${z} + [] +[] + +[Preconditioning] + active = 'hypre' + [hypre] + type = SMP + full = true + petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix' + petsc_options_iname = '-pc_type -pc_hypre_type + -snes_atol -snes_rtol -snes_stol -snes_max_it -snes_linesearch_type' + petsc_options_value = 'hypre boomeramg + 1.0e-10 1.0e-12 0 20 + basic' + [] +[] + +[Postprocessors] + [e] + type = ElementAverageValue + variable = eqv_strain + outputs = csv + [] + [e_rate] + type = ElementAverageValue + variable = eqv_strain_rate + outputs = csv + [] + [eqv_strain_L] + type = ElementAverageValue + variable = eqv_creep_strain_L + outputs = csv + [] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + start_time = 0.0 + end_time = 1 #10.0 + dt = 0.0001 +[] + +[Outputs] + perf_graph = true + execute_on = 'TIMESTEP_END' + print_linear_residuals = false + exodus = true + [csv] + type = CSV + [] +[] diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528173812.i b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528173812.i new file mode 100644 index 0000000..4c8845d --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528173812.i @@ -0,0 +1,254 @@ +# Input file for purely Lemaitre creep model based on RTL2020 model (Azabou et al. (2021)). +# Note: Parameter A is set to zero to ensure the Munson-Dawson component is zero. +# Also, volumetric part is set to false and parameter z is set to zero. +# Parameters +# Units: stress in MPa, time in days, strain in m / m + +E = 6000 +nu = 0.000044 +alpha = 0.1 +A2 = 1 +n2 = 14.8 +Ar = 1 +Tr = 289 +# parameters for Munson-Dawson part +A1 = 1 +n1 = 1 +A = 0.0 #0.001 +n = 10 +B = 0.0 +m = 2.2195 +P = 1 +# parameters for volumetric part +z = 0.0 +Nz = 0.0241 +nz = 1.2644 +Mz = 0.024 +mz = 1.028 + +[Mesh] + type = GeneratedMesh + dim = 3 + nx = 1 + ny = 1 + nz = 2 + xmin = 0 + xmax = 1 + ymin = 0 + ymax = 1 + zmin = 0 + zmax = 0.1 +[] + +[Variables] + [disp_x] + order = FIRST + family = LAGRANGE + [] + [disp_y] + order = FIRST + family = LAGRANGE + [] + [disp_z] + order = FIRST + family = LAGRANGE + [] +[] + +[Kernels] + [stress_x] + type = BVStressDivergence + component = x + variable = disp_x + [] + [stress_y] + type = BVStressDivergence + component = y + variable = disp_y + [] + [stress_z] + type = BVStressDivergence + component = z + variable = disp_z + [] +[] + +[AuxVariables] + [temp] + order = FIRST + family = LAGRANGE + initial_condition = 289 + [] + [eqv_stress] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain_rate] + order = CONSTANT + family = MONOMIAL + [] + [strain_yy] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_L] + order = CONSTANT + family = MONOMIAL + [] +[] + +[AuxKernels] + [temp_aux] + type = ConstantAux + variable = temp + value = 289 + execute_on = 'TIMESTEP_END' + [] + [eqv_stress_aux] + type = BVMisesStressAux + variable = eqv_stress + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_aux] + type = BVEqvStrainAux + variable = eqv_strain + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_rate_aux] + type = BVEqvStrainRateAux + variable = eqv_strain_rate + execute_on = 'TIMESTEP_END' + [] + [strain_yy_aux] + type = BVStrainComponentAux + variable = strain_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_L_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_L + property = eqv_creep_strain_L + execute_on = 'TIMESTEP_END' + [] +[] + +[BCs] + [no_x] + type = DirichletBC + variable = disp_x + boundary = 'left' + value = 0.0 + [] + [no_y] + type = DirichletBC + variable = disp_y + boundary = 'bottom' + value = 0.0 + [] + [no_z] + type = DirichletBC + variable = disp_z + boundary = 'front back' + value = 0.0 + [] + [BVPressure] + [pressure_right] + boundary = 'right' + displacement_vars = 'disp_x disp_y disp_z' + value = 0.0 + [] + [pressure_top] + boundary = 'top' + displacement_vars = 'disp_x disp_y disp_z' + value = -2.0 + [] + [] +[] + +[Materials] + [elasticity] + type = BVMechanicalMaterial + displacements = 'disp_x disp_y disp_z' + young_modulus = ${E} + poisson_ratio = ${nu} + initial_stress = '-${P} ${P} 0.0' + inelastic_models = 'viscoelastic' + [] + [viscoelastic] + type = BVRTL2020ModelUpdate + volumetric = false + temperature = temp + Tr = ${Tr} + Ar = ${Ar} + alpha = ${alpha} + A1 = ${A1} + n1 = ${n1} + A2 = ${A2} + n2 = ${n2} + A = ${A} + n = ${n} + B = ${B} + m = ${m} + Nz = ${Nz} + nz = ${nz} + Mz = ${Mz} + mz = ${mz} + z = ${z} + [] +[] + +[Preconditioning] + active = 'hypre' + [hypre] + type = SMP + full = true + petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix' + petsc_options_iname = '-pc_type -pc_hypre_type + -snes_atol -snes_rtol -snes_stol -snes_max_it -snes_linesearch_type' + petsc_options_value = 'hypre boomeramg + 1.0e-10 1.0e-12 0 20 + basic' + [] +[] + +[Postprocessors] + [e] + type = ElementAverageValue + variable = eqv_strain + outputs = csv + [] + [e_rate] + type = ElementAverageValue + variable = eqv_strain_rate + outputs = csv + [] + [eqv_strain_L] + type = ElementAverageValue + variable = eqv_creep_strain_L + outputs = csv + [] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + start_time = 0.0 + end_time = 1 #10.0 + dt = 0.0001 +[] + +[Outputs] + perf_graph = true + execute_on = 'TIMESTEP_END' + print_linear_residuals = false + exodus = true + [csv] + type = CSV + [] +[] diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528173813.i b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528173813.i new file mode 100644 index 0000000..4c8845d --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528173813.i @@ -0,0 +1,254 @@ +# Input file for purely Lemaitre creep model based on RTL2020 model (Azabou et al. (2021)). +# Note: Parameter A is set to zero to ensure the Munson-Dawson component is zero. +# Also, volumetric part is set to false and parameter z is set to zero. +# Parameters +# Units: stress in MPa, time in days, strain in m / m + +E = 6000 +nu = 0.000044 +alpha = 0.1 +A2 = 1 +n2 = 14.8 +Ar = 1 +Tr = 289 +# parameters for Munson-Dawson part +A1 = 1 +n1 = 1 +A = 0.0 #0.001 +n = 10 +B = 0.0 +m = 2.2195 +P = 1 +# parameters for volumetric part +z = 0.0 +Nz = 0.0241 +nz = 1.2644 +Mz = 0.024 +mz = 1.028 + +[Mesh] + type = GeneratedMesh + dim = 3 + nx = 1 + ny = 1 + nz = 2 + xmin = 0 + xmax = 1 + ymin = 0 + ymax = 1 + zmin = 0 + zmax = 0.1 +[] + +[Variables] + [disp_x] + order = FIRST + family = LAGRANGE + [] + [disp_y] + order = FIRST + family = LAGRANGE + [] + [disp_z] + order = FIRST + family = LAGRANGE + [] +[] + +[Kernels] + [stress_x] + type = BVStressDivergence + component = x + variable = disp_x + [] + [stress_y] + type = BVStressDivergence + component = y + variable = disp_y + [] + [stress_z] + type = BVStressDivergence + component = z + variable = disp_z + [] +[] + +[AuxVariables] + [temp] + order = FIRST + family = LAGRANGE + initial_condition = 289 + [] + [eqv_stress] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain_rate] + order = CONSTANT + family = MONOMIAL + [] + [strain_yy] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_L] + order = CONSTANT + family = MONOMIAL + [] +[] + +[AuxKernels] + [temp_aux] + type = ConstantAux + variable = temp + value = 289 + execute_on = 'TIMESTEP_END' + [] + [eqv_stress_aux] + type = BVMisesStressAux + variable = eqv_stress + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_aux] + type = BVEqvStrainAux + variable = eqv_strain + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_rate_aux] + type = BVEqvStrainRateAux + variable = eqv_strain_rate + execute_on = 'TIMESTEP_END' + [] + [strain_yy_aux] + type = BVStrainComponentAux + variable = strain_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_L_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_L + property = eqv_creep_strain_L + execute_on = 'TIMESTEP_END' + [] +[] + +[BCs] + [no_x] + type = DirichletBC + variable = disp_x + boundary = 'left' + value = 0.0 + [] + [no_y] + type = DirichletBC + variable = disp_y + boundary = 'bottom' + value = 0.0 + [] + [no_z] + type = DirichletBC + variable = disp_z + boundary = 'front back' + value = 0.0 + [] + [BVPressure] + [pressure_right] + boundary = 'right' + displacement_vars = 'disp_x disp_y disp_z' + value = 0.0 + [] + [pressure_top] + boundary = 'top' + displacement_vars = 'disp_x disp_y disp_z' + value = -2.0 + [] + [] +[] + +[Materials] + [elasticity] + type = BVMechanicalMaterial + displacements = 'disp_x disp_y disp_z' + young_modulus = ${E} + poisson_ratio = ${nu} + initial_stress = '-${P} ${P} 0.0' + inelastic_models = 'viscoelastic' + [] + [viscoelastic] + type = BVRTL2020ModelUpdate + volumetric = false + temperature = temp + Tr = ${Tr} + Ar = ${Ar} + alpha = ${alpha} + A1 = ${A1} + n1 = ${n1} + A2 = ${A2} + n2 = ${n2} + A = ${A} + n = ${n} + B = ${B} + m = ${m} + Nz = ${Nz} + nz = ${nz} + Mz = ${Mz} + mz = ${mz} + z = ${z} + [] +[] + +[Preconditioning] + active = 'hypre' + [hypre] + type = SMP + full = true + petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix' + petsc_options_iname = '-pc_type -pc_hypre_type + -snes_atol -snes_rtol -snes_stol -snes_max_it -snes_linesearch_type' + petsc_options_value = 'hypre boomeramg + 1.0e-10 1.0e-12 0 20 + basic' + [] +[] + +[Postprocessors] + [e] + type = ElementAverageValue + variable = eqv_strain + outputs = csv + [] + [e_rate] + type = ElementAverageValue + variable = eqv_strain_rate + outputs = csv + [] + [eqv_strain_L] + type = ElementAverageValue + variable = eqv_creep_strain_L + outputs = csv + [] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + start_time = 0.0 + end_time = 1 #10.0 + dt = 0.0001 +[] + +[Outputs] + perf_graph = true + execute_on = 'TIMESTEP_END' + print_linear_residuals = false + exodus = true + [csv] + type = CSV + [] +[] diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528173814.i b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528173814.i new file mode 100644 index 0000000..4c8845d --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528173814.i @@ -0,0 +1,254 @@ +# Input file for purely Lemaitre creep model based on RTL2020 model (Azabou et al. (2021)). +# Note: Parameter A is set to zero to ensure the Munson-Dawson component is zero. +# Also, volumetric part is set to false and parameter z is set to zero. +# Parameters +# Units: stress in MPa, time in days, strain in m / m + +E = 6000 +nu = 0.000044 +alpha = 0.1 +A2 = 1 +n2 = 14.8 +Ar = 1 +Tr = 289 +# parameters for Munson-Dawson part +A1 = 1 +n1 = 1 +A = 0.0 #0.001 +n = 10 +B = 0.0 +m = 2.2195 +P = 1 +# parameters for volumetric part +z = 0.0 +Nz = 0.0241 +nz = 1.2644 +Mz = 0.024 +mz = 1.028 + +[Mesh] + type = GeneratedMesh + dim = 3 + nx = 1 + ny = 1 + nz = 2 + xmin = 0 + xmax = 1 + ymin = 0 + ymax = 1 + zmin = 0 + zmax = 0.1 +[] + +[Variables] + [disp_x] + order = FIRST + family = LAGRANGE + [] + [disp_y] + order = FIRST + family = LAGRANGE + [] + [disp_z] + order = FIRST + family = LAGRANGE + [] +[] + +[Kernels] + [stress_x] + type = BVStressDivergence + component = x + variable = disp_x + [] + [stress_y] + type = BVStressDivergence + component = y + variable = disp_y + [] + [stress_z] + type = BVStressDivergence + component = z + variable = disp_z + [] +[] + +[AuxVariables] + [temp] + order = FIRST + family = LAGRANGE + initial_condition = 289 + [] + [eqv_stress] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain_rate] + order = CONSTANT + family = MONOMIAL + [] + [strain_yy] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_L] + order = CONSTANT + family = MONOMIAL + [] +[] + +[AuxKernels] + [temp_aux] + type = ConstantAux + variable = temp + value = 289 + execute_on = 'TIMESTEP_END' + [] + [eqv_stress_aux] + type = BVMisesStressAux + variable = eqv_stress + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_aux] + type = BVEqvStrainAux + variable = eqv_strain + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_rate_aux] + type = BVEqvStrainRateAux + variable = eqv_strain_rate + execute_on = 'TIMESTEP_END' + [] + [strain_yy_aux] + type = BVStrainComponentAux + variable = strain_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_L_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_L + property = eqv_creep_strain_L + execute_on = 'TIMESTEP_END' + [] +[] + +[BCs] + [no_x] + type = DirichletBC + variable = disp_x + boundary = 'left' + value = 0.0 + [] + [no_y] + type = DirichletBC + variable = disp_y + boundary = 'bottom' + value = 0.0 + [] + [no_z] + type = DirichletBC + variable = disp_z + boundary = 'front back' + value = 0.0 + [] + [BVPressure] + [pressure_right] + boundary = 'right' + displacement_vars = 'disp_x disp_y disp_z' + value = 0.0 + [] + [pressure_top] + boundary = 'top' + displacement_vars = 'disp_x disp_y disp_z' + value = -2.0 + [] + [] +[] + +[Materials] + [elasticity] + type = BVMechanicalMaterial + displacements = 'disp_x disp_y disp_z' + young_modulus = ${E} + poisson_ratio = ${nu} + initial_stress = '-${P} ${P} 0.0' + inelastic_models = 'viscoelastic' + [] + [viscoelastic] + type = BVRTL2020ModelUpdate + volumetric = false + temperature = temp + Tr = ${Tr} + Ar = ${Ar} + alpha = ${alpha} + A1 = ${A1} + n1 = ${n1} + A2 = ${A2} + n2 = ${n2} + A = ${A} + n = ${n} + B = ${B} + m = ${m} + Nz = ${Nz} + nz = ${nz} + Mz = ${Mz} + mz = ${mz} + z = ${z} + [] +[] + +[Preconditioning] + active = 'hypre' + [hypre] + type = SMP + full = true + petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix' + petsc_options_iname = '-pc_type -pc_hypre_type + -snes_atol -snes_rtol -snes_stol -snes_max_it -snes_linesearch_type' + petsc_options_value = 'hypre boomeramg + 1.0e-10 1.0e-12 0 20 + basic' + [] +[] + +[Postprocessors] + [e] + type = ElementAverageValue + variable = eqv_strain + outputs = csv + [] + [e_rate] + type = ElementAverageValue + variable = eqv_strain_rate + outputs = csv + [] + [eqv_strain_L] + type = ElementAverageValue + variable = eqv_creep_strain_L + outputs = csv + [] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + start_time = 0.0 + end_time = 1 #10.0 + dt = 0.0001 +[] + +[Outputs] + perf_graph = true + execute_on = 'TIMESTEP_END' + print_linear_residuals = false + exodus = true + [csv] + type = CSV + [] +[] diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183435.i b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183435.i new file mode 100644 index 0000000..31e018f --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183435.i @@ -0,0 +1,254 @@ +# Input file for purely Lemaitre creep model based on RTL2020 model (Azabou et al. (2021)). +# Note: Parameter A is set to zero to ensure the Munson-Dawson component is zero. +# Also, volumetric part is set to false and parameter z is set to zero. +# Parameters +# Units used for the simulation: stress in MPa, time in days, strain in m / m + +E = 6000 +nu = 0.000044 +alpha = 0.1 +A2 = 1 +n2 = 14.8 +Ar = 1 +Tr = 289 +# parameters for Munson-Dawson part +A1 = 1 +n1 = 1 +A = 0.0 #0.001 +n = 10 +B = 0.0 +m = 2.2195 +P = 1 +# parameters for volumetric part +z = 0.0 +Nz = 0.0241 +nz = 1.2644 +Mz = 0.024 +mz = 1.028 + +[Mesh] + type = GeneratedMesh + dim = 3 + nx = 1 + ny = 1 + nz = 2 + xmin = 0 + xmax = 1 + ymin = 0 + ymax = 1 + zmin = 0 + zmax = 0.1 +[] + +[Variables] + [disp_x] + order = FIRST + family = LAGRANGE + [] + [disp_y] + order = FIRST + family = LAGRANGE + [] + [disp_z] + order = FIRST + family = LAGRANGE + [] +[] + +[Kernels] + [stress_x] + type = BVStressDivergence + component = x + variable = disp_x + [] + [stress_y] + type = BVStressDivergence + component = y + variable = disp_y + [] + [stress_z] + type = BVStressDivergence + component = z + variable = disp_z + [] +[] + +[AuxVariables] + [temp] + order = FIRST + family = LAGRANGE + initial_condition = 289 + [] + [eqv_stress] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain_rate] + order = CONSTANT + family = MONOMIAL + [] + [strain_yy] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_L] + order = CONSTANT + family = MONOMIAL + [] +[] + +[AuxKernels] + [temp_aux] + type = ConstantAux + variable = temp + value = 289 + execute_on = 'TIMESTEP_END' + [] + [eqv_stress_aux] + type = BVMisesStressAux + variable = eqv_stress + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_aux] + type = BVEqvStrainAux + variable = eqv_strain + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_rate_aux] + type = BVEqvStrainRateAux + variable = eqv_strain_rate + execute_on = 'TIMESTEP_END' + [] + [strain_yy_aux] + type = BVStrainComponentAux + variable = strain_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_L_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_L + property = eqv_creep_strain_L + execute_on = 'TIMESTEP_END' + [] +[] + +[BCs] + [no_x] + type = DirichletBC + variable = disp_x + boundary = 'left' + value = 0.0 + [] + [no_y] + type = DirichletBC + variable = disp_y + boundary = 'bottom' + value = 0.0 + [] + [no_z] + type = DirichletBC + variable = disp_z + boundary = 'front back' + value = 0.0 + [] + [BVPressure] + [pressure_right] + boundary = 'right' + displacement_vars = 'disp_x disp_y disp_z' + value = 0.0 + [] + [pressure_top] + boundary = 'top' + displacement_vars = 'disp_x disp_y disp_z' + value = -2.0 + [] + [] +[] + +[Materials] + [elasticity] + type = BVMechanicalMaterial + displacements = 'disp_x disp_y disp_z' + young_modulus = ${E} + poisson_ratio = ${nu} + initial_stress = '-${P} ${P} 0.0' + inelastic_models = 'viscoelastic' + [] + [viscoelastic] + type = BVRTL2020ModelUpdate + volumetric = false + temperature = temp + Tr = ${Tr} + Ar = ${Ar} + alpha = ${alpha} + A1 = ${A1} + n1 = ${n1} + A2 = ${A2} + n2 = ${n2} + A = ${A} + n = ${n} + B = ${B} + m = ${m} + Nz = ${Nz} + nz = ${nz} + Mz = ${Mz} + mz = ${mz} + z = ${z} + [] +[] + +[Preconditioning] + active = 'hypre' + [hypre] + type = SMP + full = true + petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix' + petsc_options_iname = '-pc_type -pc_hypre_type + -snes_atol -snes_rtol -snes_stol -snes_max_it -snes_linesearch_type' + petsc_options_value = 'hypre boomeramg + 1.0e-10 1.0e-12 0 20 + basic' + [] +[] + +[Postprocessors] + [e] + type = ElementAverageValue + variable = eqv_strain + outputs = csv + [] + [e_rate] + type = ElementAverageValue + variable = eqv_strain_rate + outputs = csv + [] + [eqv_strain_L] + type = ElementAverageValue + variable = eqv_creep_strain_L + outputs = csv + [] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + start_time = 0.0 + end_time = 1 #10.0 + dt = 0.0001 +[] + +[Outputs] + perf_graph = true + execute_on = 'TIMESTEP_END' + print_linear_residuals = false + exodus = true + [csv] + type = CSV + [] +[] diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183436.i b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183436.i new file mode 100644 index 0000000..31e018f --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183436.i @@ -0,0 +1,254 @@ +# Input file for purely Lemaitre creep model based on RTL2020 model (Azabou et al. (2021)). +# Note: Parameter A is set to zero to ensure the Munson-Dawson component is zero. +# Also, volumetric part is set to false and parameter z is set to zero. +# Parameters +# Units used for the simulation: stress in MPa, time in days, strain in m / m + +E = 6000 +nu = 0.000044 +alpha = 0.1 +A2 = 1 +n2 = 14.8 +Ar = 1 +Tr = 289 +# parameters for Munson-Dawson part +A1 = 1 +n1 = 1 +A = 0.0 #0.001 +n = 10 +B = 0.0 +m = 2.2195 +P = 1 +# parameters for volumetric part +z = 0.0 +Nz = 0.0241 +nz = 1.2644 +Mz = 0.024 +mz = 1.028 + +[Mesh] + type = GeneratedMesh + dim = 3 + nx = 1 + ny = 1 + nz = 2 + xmin = 0 + xmax = 1 + ymin = 0 + ymax = 1 + zmin = 0 + zmax = 0.1 +[] + +[Variables] + [disp_x] + order = FIRST + family = LAGRANGE + [] + [disp_y] + order = FIRST + family = LAGRANGE + [] + [disp_z] + order = FIRST + family = LAGRANGE + [] +[] + +[Kernels] + [stress_x] + type = BVStressDivergence + component = x + variable = disp_x + [] + [stress_y] + type = BVStressDivergence + component = y + variable = disp_y + [] + [stress_z] + type = BVStressDivergence + component = z + variable = disp_z + [] +[] + +[AuxVariables] + [temp] + order = FIRST + family = LAGRANGE + initial_condition = 289 + [] + [eqv_stress] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain_rate] + order = CONSTANT + family = MONOMIAL + [] + [strain_yy] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_L] + order = CONSTANT + family = MONOMIAL + [] +[] + +[AuxKernels] + [temp_aux] + type = ConstantAux + variable = temp + value = 289 + execute_on = 'TIMESTEP_END' + [] + [eqv_stress_aux] + type = BVMisesStressAux + variable = eqv_stress + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_aux] + type = BVEqvStrainAux + variable = eqv_strain + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_rate_aux] + type = BVEqvStrainRateAux + variable = eqv_strain_rate + execute_on = 'TIMESTEP_END' + [] + [strain_yy_aux] + type = BVStrainComponentAux + variable = strain_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_L_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_L + property = eqv_creep_strain_L + execute_on = 'TIMESTEP_END' + [] +[] + +[BCs] + [no_x] + type = DirichletBC + variable = disp_x + boundary = 'left' + value = 0.0 + [] + [no_y] + type = DirichletBC + variable = disp_y + boundary = 'bottom' + value = 0.0 + [] + [no_z] + type = DirichletBC + variable = disp_z + boundary = 'front back' + value = 0.0 + [] + [BVPressure] + [pressure_right] + boundary = 'right' + displacement_vars = 'disp_x disp_y disp_z' + value = 0.0 + [] + [pressure_top] + boundary = 'top' + displacement_vars = 'disp_x disp_y disp_z' + value = -2.0 + [] + [] +[] + +[Materials] + [elasticity] + type = BVMechanicalMaterial + displacements = 'disp_x disp_y disp_z' + young_modulus = ${E} + poisson_ratio = ${nu} + initial_stress = '-${P} ${P} 0.0' + inelastic_models = 'viscoelastic' + [] + [viscoelastic] + type = BVRTL2020ModelUpdate + volumetric = false + temperature = temp + Tr = ${Tr} + Ar = ${Ar} + alpha = ${alpha} + A1 = ${A1} + n1 = ${n1} + A2 = ${A2} + n2 = ${n2} + A = ${A} + n = ${n} + B = ${B} + m = ${m} + Nz = ${Nz} + nz = ${nz} + Mz = ${Mz} + mz = ${mz} + z = ${z} + [] +[] + +[Preconditioning] + active = 'hypre' + [hypre] + type = SMP + full = true + petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix' + petsc_options_iname = '-pc_type -pc_hypre_type + -snes_atol -snes_rtol -snes_stol -snes_max_it -snes_linesearch_type' + petsc_options_value = 'hypre boomeramg + 1.0e-10 1.0e-12 0 20 + basic' + [] +[] + +[Postprocessors] + [e] + type = ElementAverageValue + variable = eqv_strain + outputs = csv + [] + [e_rate] + type = ElementAverageValue + variable = eqv_strain_rate + outputs = csv + [] + [eqv_strain_L] + type = ElementAverageValue + variable = eqv_creep_strain_L + outputs = csv + [] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + start_time = 0.0 + end_time = 1 #10.0 + dt = 0.0001 +[] + +[Outputs] + perf_graph = true + execute_on = 'TIMESTEP_END' + print_linear_residuals = false + exodus = true + [csv] + type = CSV + [] +[] diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183651.i b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183651.i new file mode 100644 index 0000000..31e018f --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183651.i @@ -0,0 +1,254 @@ +# Input file for purely Lemaitre creep model based on RTL2020 model (Azabou et al. (2021)). +# Note: Parameter A is set to zero to ensure the Munson-Dawson component is zero. +# Also, volumetric part is set to false and parameter z is set to zero. +# Parameters +# Units used for the simulation: stress in MPa, time in days, strain in m / m + +E = 6000 +nu = 0.000044 +alpha = 0.1 +A2 = 1 +n2 = 14.8 +Ar = 1 +Tr = 289 +# parameters for Munson-Dawson part +A1 = 1 +n1 = 1 +A = 0.0 #0.001 +n = 10 +B = 0.0 +m = 2.2195 +P = 1 +# parameters for volumetric part +z = 0.0 +Nz = 0.0241 +nz = 1.2644 +Mz = 0.024 +mz = 1.028 + +[Mesh] + type = GeneratedMesh + dim = 3 + nx = 1 + ny = 1 + nz = 2 + xmin = 0 + xmax = 1 + ymin = 0 + ymax = 1 + zmin = 0 + zmax = 0.1 +[] + +[Variables] + [disp_x] + order = FIRST + family = LAGRANGE + [] + [disp_y] + order = FIRST + family = LAGRANGE + [] + [disp_z] + order = FIRST + family = LAGRANGE + [] +[] + +[Kernels] + [stress_x] + type = BVStressDivergence + component = x + variable = disp_x + [] + [stress_y] + type = BVStressDivergence + component = y + variable = disp_y + [] + [stress_z] + type = BVStressDivergence + component = z + variable = disp_z + [] +[] + +[AuxVariables] + [temp] + order = FIRST + family = LAGRANGE + initial_condition = 289 + [] + [eqv_stress] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain_rate] + order = CONSTANT + family = MONOMIAL + [] + [strain_yy] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_L] + order = CONSTANT + family = MONOMIAL + [] +[] + +[AuxKernels] + [temp_aux] + type = ConstantAux + variable = temp + value = 289 + execute_on = 'TIMESTEP_END' + [] + [eqv_stress_aux] + type = BVMisesStressAux + variable = eqv_stress + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_aux] + type = BVEqvStrainAux + variable = eqv_strain + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_rate_aux] + type = BVEqvStrainRateAux + variable = eqv_strain_rate + execute_on = 'TIMESTEP_END' + [] + [strain_yy_aux] + type = BVStrainComponentAux + variable = strain_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_L_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_L + property = eqv_creep_strain_L + execute_on = 'TIMESTEP_END' + [] +[] + +[BCs] + [no_x] + type = DirichletBC + variable = disp_x + boundary = 'left' + value = 0.0 + [] + [no_y] + type = DirichletBC + variable = disp_y + boundary = 'bottom' + value = 0.0 + [] + [no_z] + type = DirichletBC + variable = disp_z + boundary = 'front back' + value = 0.0 + [] + [BVPressure] + [pressure_right] + boundary = 'right' + displacement_vars = 'disp_x disp_y disp_z' + value = 0.0 + [] + [pressure_top] + boundary = 'top' + displacement_vars = 'disp_x disp_y disp_z' + value = -2.0 + [] + [] +[] + +[Materials] + [elasticity] + type = BVMechanicalMaterial + displacements = 'disp_x disp_y disp_z' + young_modulus = ${E} + poisson_ratio = ${nu} + initial_stress = '-${P} ${P} 0.0' + inelastic_models = 'viscoelastic' + [] + [viscoelastic] + type = BVRTL2020ModelUpdate + volumetric = false + temperature = temp + Tr = ${Tr} + Ar = ${Ar} + alpha = ${alpha} + A1 = ${A1} + n1 = ${n1} + A2 = ${A2} + n2 = ${n2} + A = ${A} + n = ${n} + B = ${B} + m = ${m} + Nz = ${Nz} + nz = ${nz} + Mz = ${Mz} + mz = ${mz} + z = ${z} + [] +[] + +[Preconditioning] + active = 'hypre' + [hypre] + type = SMP + full = true + petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix' + petsc_options_iname = '-pc_type -pc_hypre_type + -snes_atol -snes_rtol -snes_stol -snes_max_it -snes_linesearch_type' + petsc_options_value = 'hypre boomeramg + 1.0e-10 1.0e-12 0 20 + basic' + [] +[] + +[Postprocessors] + [e] + type = ElementAverageValue + variable = eqv_strain + outputs = csv + [] + [e_rate] + type = ElementAverageValue + variable = eqv_strain_rate + outputs = csv + [] + [eqv_strain_L] + type = ElementAverageValue + variable = eqv_creep_strain_L + outputs = csv + [] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + start_time = 0.0 + end_time = 1 #10.0 + dt = 0.0001 +[] + +[Outputs] + perf_graph = true + execute_on = 'TIMESTEP_END' + print_linear_residuals = false + exodus = true + [csv] + type = CSV + [] +[] diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183652.i b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183652.i new file mode 100644 index 0000000..31e018f --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183652.i @@ -0,0 +1,254 @@ +# Input file for purely Lemaitre creep model based on RTL2020 model (Azabou et al. (2021)). +# Note: Parameter A is set to zero to ensure the Munson-Dawson component is zero. +# Also, volumetric part is set to false and parameter z is set to zero. +# Parameters +# Units used for the simulation: stress in MPa, time in days, strain in m / m + +E = 6000 +nu = 0.000044 +alpha = 0.1 +A2 = 1 +n2 = 14.8 +Ar = 1 +Tr = 289 +# parameters for Munson-Dawson part +A1 = 1 +n1 = 1 +A = 0.0 #0.001 +n = 10 +B = 0.0 +m = 2.2195 +P = 1 +# parameters for volumetric part +z = 0.0 +Nz = 0.0241 +nz = 1.2644 +Mz = 0.024 +mz = 1.028 + +[Mesh] + type = GeneratedMesh + dim = 3 + nx = 1 + ny = 1 + nz = 2 + xmin = 0 + xmax = 1 + ymin = 0 + ymax = 1 + zmin = 0 + zmax = 0.1 +[] + +[Variables] + [disp_x] + order = FIRST + family = LAGRANGE + [] + [disp_y] + order = FIRST + family = LAGRANGE + [] + [disp_z] + order = FIRST + family = LAGRANGE + [] +[] + +[Kernels] + [stress_x] + type = BVStressDivergence + component = x + variable = disp_x + [] + [stress_y] + type = BVStressDivergence + component = y + variable = disp_y + [] + [stress_z] + type = BVStressDivergence + component = z + variable = disp_z + [] +[] + +[AuxVariables] + [temp] + order = FIRST + family = LAGRANGE + initial_condition = 289 + [] + [eqv_stress] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain_rate] + order = CONSTANT + family = MONOMIAL + [] + [strain_yy] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_L] + order = CONSTANT + family = MONOMIAL + [] +[] + +[AuxKernels] + [temp_aux] + type = ConstantAux + variable = temp + value = 289 + execute_on = 'TIMESTEP_END' + [] + [eqv_stress_aux] + type = BVMisesStressAux + variable = eqv_stress + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_aux] + type = BVEqvStrainAux + variable = eqv_strain + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_rate_aux] + type = BVEqvStrainRateAux + variable = eqv_strain_rate + execute_on = 'TIMESTEP_END' + [] + [strain_yy_aux] + type = BVStrainComponentAux + variable = strain_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_L_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_L + property = eqv_creep_strain_L + execute_on = 'TIMESTEP_END' + [] +[] + +[BCs] + [no_x] + type = DirichletBC + variable = disp_x + boundary = 'left' + value = 0.0 + [] + [no_y] + type = DirichletBC + variable = disp_y + boundary = 'bottom' + value = 0.0 + [] + [no_z] + type = DirichletBC + variable = disp_z + boundary = 'front back' + value = 0.0 + [] + [BVPressure] + [pressure_right] + boundary = 'right' + displacement_vars = 'disp_x disp_y disp_z' + value = 0.0 + [] + [pressure_top] + boundary = 'top' + displacement_vars = 'disp_x disp_y disp_z' + value = -2.0 + [] + [] +[] + +[Materials] + [elasticity] + type = BVMechanicalMaterial + displacements = 'disp_x disp_y disp_z' + young_modulus = ${E} + poisson_ratio = ${nu} + initial_stress = '-${P} ${P} 0.0' + inelastic_models = 'viscoelastic' + [] + [viscoelastic] + type = BVRTL2020ModelUpdate + volumetric = false + temperature = temp + Tr = ${Tr} + Ar = ${Ar} + alpha = ${alpha} + A1 = ${A1} + n1 = ${n1} + A2 = ${A2} + n2 = ${n2} + A = ${A} + n = ${n} + B = ${B} + m = ${m} + Nz = ${Nz} + nz = ${nz} + Mz = ${Mz} + mz = ${mz} + z = ${z} + [] +[] + +[Preconditioning] + active = 'hypre' + [hypre] + type = SMP + full = true + petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix' + petsc_options_iname = '-pc_type -pc_hypre_type + -snes_atol -snes_rtol -snes_stol -snes_max_it -snes_linesearch_type' + petsc_options_value = 'hypre boomeramg + 1.0e-10 1.0e-12 0 20 + basic' + [] +[] + +[Postprocessors] + [e] + type = ElementAverageValue + variable = eqv_strain + outputs = csv + [] + [e_rate] + type = ElementAverageValue + variable = eqv_strain_rate + outputs = csv + [] + [eqv_strain_L] + type = ElementAverageValue + variable = eqv_creep_strain_L + outputs = csv + [] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + start_time = 0.0 + end_time = 1 #10.0 + dt = 0.0001 +[] + +[Outputs] + perf_graph = true + execute_on = 'TIMESTEP_END' + print_linear_residuals = false + exodus = true + [csv] + type = CSV + [] +[] diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183735.i b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183735.i new file mode 100644 index 0000000..b39f016 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183735.i @@ -0,0 +1,254 @@ +# Input file for purely Lemaitre creep model based on RTL2020 model (Azabou et al. (2021)). +# Note: Parameter A is set to zero to ensure the Munson-Dawson component is zero. +# Also, volumetric part is set to false and parameter z is set to zero. +# Parameters +# Units used for the simulation: stress in MPa, time in days, strain in m / m + +E = 6000 +nu = 0.000044 +alpha = 0.1 +A2 = 1 +n2 = 14.8 +Ar = 1 +Tr = 289 +# parameters for Munson-Dawson part +A1 = 1 +n1 = 1 +A = 0.0 +n = 10 +B = 0.0 +m = 2.2195 +P = 1 +# parameters for volumetric part +z = 0.0 +Nz = 0.0241 +nz = 1.2644 +Mz = 0.024 +mz = 1.028 + +[Mesh] + type = GeneratedMesh + dim = 3 + nx = 1 + ny = 1 + nz = 2 + xmin = 0 + xmax = 1 + ymin = 0 + ymax = 1 + zmin = 0 + zmax = 0.1 +[] + +[Variables] + [disp_x] + order = FIRST + family = LAGRANGE + [] + [disp_y] + order = FIRST + family = LAGRANGE + [] + [disp_z] + order = FIRST + family = LAGRANGE + [] +[] + +[Kernels] + [stress_x] + type = BVStressDivergence + component = x + variable = disp_x + [] + [stress_y] + type = BVStressDivergence + component = y + variable = disp_y + [] + [stress_z] + type = BVStressDivergence + component = z + variable = disp_z + [] +[] + +[AuxVariables] + [temp] + order = FIRST + family = LAGRANGE + initial_condition = 289 + [] + [eqv_stress] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain_rate] + order = CONSTANT + family = MONOMIAL + [] + [strain_yy] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_L] + order = CONSTANT + family = MONOMIAL + [] +[] + +[AuxKernels] + [temp_aux] + type = ConstantAux + variable = temp + value = 289 + execute_on = 'TIMESTEP_END' + [] + [eqv_stress_aux] + type = BVMisesStressAux + variable = eqv_stress + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_aux] + type = BVEqvStrainAux + variable = eqv_strain + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_rate_aux] + type = BVEqvStrainRateAux + variable = eqv_strain_rate + execute_on = 'TIMESTEP_END' + [] + [strain_yy_aux] + type = BVStrainComponentAux + variable = strain_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_L_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_L + property = eqv_creep_strain_L + execute_on = 'TIMESTEP_END' + [] +[] + +[BCs] + [no_x] + type = DirichletBC + variable = disp_x + boundary = 'left' + value = 0.0 + [] + [no_y] + type = DirichletBC + variable = disp_y + boundary = 'bottom' + value = 0.0 + [] + [no_z] + type = DirichletBC + variable = disp_z + boundary = 'front back' + value = 0.0 + [] + [BVPressure] + [pressure_right] + boundary = 'right' + displacement_vars = 'disp_x disp_y disp_z' + value = 0.0 + [] + [pressure_top] + boundary = 'top' + displacement_vars = 'disp_x disp_y disp_z' + value = -2.0 + [] + [] +[] + +[Materials] + [elasticity] + type = BVMechanicalMaterial + displacements = 'disp_x disp_y disp_z' + young_modulus = ${E} + poisson_ratio = ${nu} + initial_stress = '-${P} ${P} 0.0' + inelastic_models = 'viscoelastic' + [] + [viscoelastic] + type = BVRTL2020ModelUpdate + volumetric = false + temperature = temp + Tr = ${Tr} + Ar = ${Ar} + alpha = ${alpha} + A1 = ${A1} + n1 = ${n1} + A2 = ${A2} + n2 = ${n2} + A = ${A} + n = ${n} + B = ${B} + m = ${m} + Nz = ${Nz} + nz = ${nz} + Mz = ${Mz} + mz = ${mz} + z = ${z} + [] +[] + +[Preconditioning] + active = 'hypre' + [hypre] + type = SMP + full = true + petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix' + petsc_options_iname = '-pc_type -pc_hypre_type + -snes_atol -snes_rtol -snes_stol -snes_max_it -snes_linesearch_type' + petsc_options_value = 'hypre boomeramg + 1.0e-10 1.0e-12 0 20 + basic' + [] +[] + +[Postprocessors] + [e] + type = ElementAverageValue + variable = eqv_strain + outputs = csv + [] + [e_rate] + type = ElementAverageValue + variable = eqv_strain_rate + outputs = csv + [] + [eqv_strain_L] + type = ElementAverageValue + variable = eqv_creep_strain_L + outputs = csv + [] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + start_time = 0.0 + end_time = 1 #10.0 + dt = 0.0001 +[] + +[Outputs] + perf_graph = true + execute_on = 'TIMESTEP_END' + print_linear_residuals = false + exodus = true + [csv] + type = CSV + [] +[] diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183736.i b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183736.i new file mode 100644 index 0000000..b39f016 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183736.i @@ -0,0 +1,254 @@ +# Input file for purely Lemaitre creep model based on RTL2020 model (Azabou et al. (2021)). +# Note: Parameter A is set to zero to ensure the Munson-Dawson component is zero. +# Also, volumetric part is set to false and parameter z is set to zero. +# Parameters +# Units used for the simulation: stress in MPa, time in days, strain in m / m + +E = 6000 +nu = 0.000044 +alpha = 0.1 +A2 = 1 +n2 = 14.8 +Ar = 1 +Tr = 289 +# parameters for Munson-Dawson part +A1 = 1 +n1 = 1 +A = 0.0 +n = 10 +B = 0.0 +m = 2.2195 +P = 1 +# parameters for volumetric part +z = 0.0 +Nz = 0.0241 +nz = 1.2644 +Mz = 0.024 +mz = 1.028 + +[Mesh] + type = GeneratedMesh + dim = 3 + nx = 1 + ny = 1 + nz = 2 + xmin = 0 + xmax = 1 + ymin = 0 + ymax = 1 + zmin = 0 + zmax = 0.1 +[] + +[Variables] + [disp_x] + order = FIRST + family = LAGRANGE + [] + [disp_y] + order = FIRST + family = LAGRANGE + [] + [disp_z] + order = FIRST + family = LAGRANGE + [] +[] + +[Kernels] + [stress_x] + type = BVStressDivergence + component = x + variable = disp_x + [] + [stress_y] + type = BVStressDivergence + component = y + variable = disp_y + [] + [stress_z] + type = BVStressDivergence + component = z + variable = disp_z + [] +[] + +[AuxVariables] + [temp] + order = FIRST + family = LAGRANGE + initial_condition = 289 + [] + [eqv_stress] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain_rate] + order = CONSTANT + family = MONOMIAL + [] + [strain_yy] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_L] + order = CONSTANT + family = MONOMIAL + [] +[] + +[AuxKernels] + [temp_aux] + type = ConstantAux + variable = temp + value = 289 + execute_on = 'TIMESTEP_END' + [] + [eqv_stress_aux] + type = BVMisesStressAux + variable = eqv_stress + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_aux] + type = BVEqvStrainAux + variable = eqv_strain + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_rate_aux] + type = BVEqvStrainRateAux + variable = eqv_strain_rate + execute_on = 'TIMESTEP_END' + [] + [strain_yy_aux] + type = BVStrainComponentAux + variable = strain_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_L_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_L + property = eqv_creep_strain_L + execute_on = 'TIMESTEP_END' + [] +[] + +[BCs] + [no_x] + type = DirichletBC + variable = disp_x + boundary = 'left' + value = 0.0 + [] + [no_y] + type = DirichletBC + variable = disp_y + boundary = 'bottom' + value = 0.0 + [] + [no_z] + type = DirichletBC + variable = disp_z + boundary = 'front back' + value = 0.0 + [] + [BVPressure] + [pressure_right] + boundary = 'right' + displacement_vars = 'disp_x disp_y disp_z' + value = 0.0 + [] + [pressure_top] + boundary = 'top' + displacement_vars = 'disp_x disp_y disp_z' + value = -2.0 + [] + [] +[] + +[Materials] + [elasticity] + type = BVMechanicalMaterial + displacements = 'disp_x disp_y disp_z' + young_modulus = ${E} + poisson_ratio = ${nu} + initial_stress = '-${P} ${P} 0.0' + inelastic_models = 'viscoelastic' + [] + [viscoelastic] + type = BVRTL2020ModelUpdate + volumetric = false + temperature = temp + Tr = ${Tr} + Ar = ${Ar} + alpha = ${alpha} + A1 = ${A1} + n1 = ${n1} + A2 = ${A2} + n2 = ${n2} + A = ${A} + n = ${n} + B = ${B} + m = ${m} + Nz = ${Nz} + nz = ${nz} + Mz = ${Mz} + mz = ${mz} + z = ${z} + [] +[] + +[Preconditioning] + active = 'hypre' + [hypre] + type = SMP + full = true + petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix' + petsc_options_iname = '-pc_type -pc_hypre_type + -snes_atol -snes_rtol -snes_stol -snes_max_it -snes_linesearch_type' + petsc_options_value = 'hypre boomeramg + 1.0e-10 1.0e-12 0 20 + basic' + [] +[] + +[Postprocessors] + [e] + type = ElementAverageValue + variable = eqv_strain + outputs = csv + [] + [e_rate] + type = ElementAverageValue + variable = eqv_strain_rate + outputs = csv + [] + [eqv_strain_L] + type = ElementAverageValue + variable = eqv_creep_strain_L + outputs = csv + [] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + start_time = 0.0 + end_time = 1 #10.0 + dt = 0.0001 +[] + +[Outputs] + perf_graph = true + execute_on = 'TIMESTEP_END' + print_linear_residuals = false + exodus = true + [csv] + type = CSV + [] +[] diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183737.i b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183737.i new file mode 100644 index 0000000..b39f016 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183737.i @@ -0,0 +1,254 @@ +# Input file for purely Lemaitre creep model based on RTL2020 model (Azabou et al. (2021)). +# Note: Parameter A is set to zero to ensure the Munson-Dawson component is zero. +# Also, volumetric part is set to false and parameter z is set to zero. +# Parameters +# Units used for the simulation: stress in MPa, time in days, strain in m / m + +E = 6000 +nu = 0.000044 +alpha = 0.1 +A2 = 1 +n2 = 14.8 +Ar = 1 +Tr = 289 +# parameters for Munson-Dawson part +A1 = 1 +n1 = 1 +A = 0.0 +n = 10 +B = 0.0 +m = 2.2195 +P = 1 +# parameters for volumetric part +z = 0.0 +Nz = 0.0241 +nz = 1.2644 +Mz = 0.024 +mz = 1.028 + +[Mesh] + type = GeneratedMesh + dim = 3 + nx = 1 + ny = 1 + nz = 2 + xmin = 0 + xmax = 1 + ymin = 0 + ymax = 1 + zmin = 0 + zmax = 0.1 +[] + +[Variables] + [disp_x] + order = FIRST + family = LAGRANGE + [] + [disp_y] + order = FIRST + family = LAGRANGE + [] + [disp_z] + order = FIRST + family = LAGRANGE + [] +[] + +[Kernels] + [stress_x] + type = BVStressDivergence + component = x + variable = disp_x + [] + [stress_y] + type = BVStressDivergence + component = y + variable = disp_y + [] + [stress_z] + type = BVStressDivergence + component = z + variable = disp_z + [] +[] + +[AuxVariables] + [temp] + order = FIRST + family = LAGRANGE + initial_condition = 289 + [] + [eqv_stress] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain_rate] + order = CONSTANT + family = MONOMIAL + [] + [strain_yy] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_L] + order = CONSTANT + family = MONOMIAL + [] +[] + +[AuxKernels] + [temp_aux] + type = ConstantAux + variable = temp + value = 289 + execute_on = 'TIMESTEP_END' + [] + [eqv_stress_aux] + type = BVMisesStressAux + variable = eqv_stress + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_aux] + type = BVEqvStrainAux + variable = eqv_strain + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_rate_aux] + type = BVEqvStrainRateAux + variable = eqv_strain_rate + execute_on = 'TIMESTEP_END' + [] + [strain_yy_aux] + type = BVStrainComponentAux + variable = strain_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_L_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_L + property = eqv_creep_strain_L + execute_on = 'TIMESTEP_END' + [] +[] + +[BCs] + [no_x] + type = DirichletBC + variable = disp_x + boundary = 'left' + value = 0.0 + [] + [no_y] + type = DirichletBC + variable = disp_y + boundary = 'bottom' + value = 0.0 + [] + [no_z] + type = DirichletBC + variable = disp_z + boundary = 'front back' + value = 0.0 + [] + [BVPressure] + [pressure_right] + boundary = 'right' + displacement_vars = 'disp_x disp_y disp_z' + value = 0.0 + [] + [pressure_top] + boundary = 'top' + displacement_vars = 'disp_x disp_y disp_z' + value = -2.0 + [] + [] +[] + +[Materials] + [elasticity] + type = BVMechanicalMaterial + displacements = 'disp_x disp_y disp_z' + young_modulus = ${E} + poisson_ratio = ${nu} + initial_stress = '-${P} ${P} 0.0' + inelastic_models = 'viscoelastic' + [] + [viscoelastic] + type = BVRTL2020ModelUpdate + volumetric = false + temperature = temp + Tr = ${Tr} + Ar = ${Ar} + alpha = ${alpha} + A1 = ${A1} + n1 = ${n1} + A2 = ${A2} + n2 = ${n2} + A = ${A} + n = ${n} + B = ${B} + m = ${m} + Nz = ${Nz} + nz = ${nz} + Mz = ${Mz} + mz = ${mz} + z = ${z} + [] +[] + +[Preconditioning] + active = 'hypre' + [hypre] + type = SMP + full = true + petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix' + petsc_options_iname = '-pc_type -pc_hypre_type + -snes_atol -snes_rtol -snes_stol -snes_max_it -snes_linesearch_type' + petsc_options_value = 'hypre boomeramg + 1.0e-10 1.0e-12 0 20 + basic' + [] +[] + +[Postprocessors] + [e] + type = ElementAverageValue + variable = eqv_strain + outputs = csv + [] + [e_rate] + type = ElementAverageValue + variable = eqv_strain_rate + outputs = csv + [] + [eqv_strain_L] + type = ElementAverageValue + variable = eqv_creep_strain_L + outputs = csv + [] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + start_time = 0.0 + end_time = 1 #10.0 + dt = 0.0001 +[] + +[Outputs] + perf_graph = true + execute_on = 'TIMESTEP_END' + print_linear_residuals = false + exodus = true + [csv] + type = CSV + [] +[] diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183745.i b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183745.i new file mode 100644 index 0000000..197efaa --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183745.i @@ -0,0 +1,254 @@ +# Input file for purely Lemaitre creep model based on RTL2020 model (Azabou et al. (2021)). +# Note: Parameter A is set to zero to ensure the Munson-Dawson component is zero. +# Also, volumetric part is set to false and parameter z is set to zero. +# Parameters +# Units used for the simulation: stress in MPa, time in days, strain in m / m + +E = 6000 +nu = 0.000044 +alpha = 0.1 +A2 = 1 +n2 = 14.8 +Ar = 1 +Tr = 289 +# parameters for Munson-Dawson part +A1 = 1 +n1 = 1 +A = 0.0 +n = 10 +B = 0.0 +m = 2.2195 +P = 1 +# parameters for volumetric part +z = 0.0 +Nz = 0.0241 +nz = 1.2644 +Mz = 0.024 +mz = 1.028 + +[Mesh] + type = GeneratedMesh + dim = 3 + nx = 1 + ny = 1 + nz = 2 + xmin = 0 + xmax = 1 + ymin = 0 + ymax = 1 + zmin = 0 + zmax = 0.1 +[] + +[Variables] + [disp_x] + order = FIRST + family = LAGRANGE + [] + [disp_y] + order = FIRST + family = LAGRANGE + [] + [disp_z] + order = FIRST + family = LAGRANGE + [] +[] + +[Kernels] + [stress_x] + type = BVStressDivergence + component = x + variable = disp_x + [] + [stress_y] + type = BVStressDivergence + component = y + variable = disp_y + [] + [stress_z] + type = BVStressDivergence + component = z + variable = disp_z + [] +[] + +[AuxVariables] + [temp] + order = FIRST + family = LAGRANGE + initial_condition = 289 + [] + [eqv_stress] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain_rate] + order = CONSTANT + family = MONOMIAL + [] + [strain_yy] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_L] + order = CONSTANT + family = MONOMIAL + [] +[] + +[AuxKernels] + [temp_aux] + type = ConstantAux + variable = temp + value = 289 + execute_on = 'TIMESTEP_END' + [] + [eqv_stress_aux] + type = BVMisesStressAux + variable = eqv_stress + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_aux] + type = BVEqvStrainAux + variable = eqv_strain + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_rate_aux] + type = BVEqvStrainRateAux + variable = eqv_strain_rate + execute_on = 'TIMESTEP_END' + [] + [strain_yy_aux] + type = BVStrainComponentAux + variable = strain_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_L_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_L + property = eqv_creep_strain_L + execute_on = 'TIMESTEP_END' + [] +[] + +[BCs] + [no_x] + type = DirichletBC + variable = disp_x + boundary = 'left' + value = 0.0 + [] + [no_y] + type = DirichletBC + variable = disp_y + boundary = 'bottom' + value = 0.0 + [] + [no_z] + type = DirichletBC + variable = disp_z + boundary = 'front back' + value = 0.0 + [] + [BVPressure] + [pressure_right] + boundary = 'right' + displacement_vars = 'disp_x disp_y disp_z' + value = 0.0 + [] + [pressure_top] + boundary = 'top' + displacement_vars = 'disp_x disp_y disp_z' + value = -2.0 + [] + [] +[] + +[Materials] + [elasticity] + type = BVMechanicalMaterial + displacements = 'disp_x disp_y disp_z' + young_modulus = ${E} + poisson_ratio = ${nu} + initial_stress = '-${P} ${P} 0.0' + inelastic_models = 'viscoelastic' + [] + [viscoelastic] + type = BVRTL2020ModelUpdate + volumetric = false + temperature = temp + Tr = ${Tr} + Ar = ${Ar} + alpha = ${alpha} + A1 = ${A1} + n1 = ${n1} + A2 = ${A2} + n2 = ${n2} + A = ${A} + n = ${n} + B = ${B} + m = ${m} + Nz = ${Nz} + nz = ${nz} + Mz = ${Mz} + mz = ${mz} + z = ${z} + [] +[] + +[Preconditioning] + active = 'hypre' + [hypre] + type = SMP + full = true + petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix' + petsc_options_iname = '-pc_type -pc_hypre_type + -snes_atol -snes_rtol -snes_stol -snes_max_it -snes_linesearch_type' + petsc_options_value = 'hypre boomeramg + 1.0e-10 1.0e-12 0 20 + basic' + [] +[] + +[Postprocessors] + [e] + type = ElementAverageValue + variable = eqv_strain + outputs = csv + [] + [e_rate] + type = ElementAverageValue + variable = eqv_strain_rate + outputs = csv + [] + [eqv_strain_L] + type = ElementAverageValue + variable = eqv_creep_strain_L + outputs = csv + [] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + start_time = 0.0 + end_time = 1 + dt = 0.0001 +[] + +[Outputs] + perf_graph = true + execute_on = 'TIMESTEP_END' + print_linear_residuals = false + exodus = true + [csv] + type = CSV + [] +[] diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183746.i b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183746.i new file mode 100644 index 0000000..197efaa --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183746.i @@ -0,0 +1,254 @@ +# Input file for purely Lemaitre creep model based on RTL2020 model (Azabou et al. (2021)). +# Note: Parameter A is set to zero to ensure the Munson-Dawson component is zero. +# Also, volumetric part is set to false and parameter z is set to zero. +# Parameters +# Units used for the simulation: stress in MPa, time in days, strain in m / m + +E = 6000 +nu = 0.000044 +alpha = 0.1 +A2 = 1 +n2 = 14.8 +Ar = 1 +Tr = 289 +# parameters for Munson-Dawson part +A1 = 1 +n1 = 1 +A = 0.0 +n = 10 +B = 0.0 +m = 2.2195 +P = 1 +# parameters for volumetric part +z = 0.0 +Nz = 0.0241 +nz = 1.2644 +Mz = 0.024 +mz = 1.028 + +[Mesh] + type = GeneratedMesh + dim = 3 + nx = 1 + ny = 1 + nz = 2 + xmin = 0 + xmax = 1 + ymin = 0 + ymax = 1 + zmin = 0 + zmax = 0.1 +[] + +[Variables] + [disp_x] + order = FIRST + family = LAGRANGE + [] + [disp_y] + order = FIRST + family = LAGRANGE + [] + [disp_z] + order = FIRST + family = LAGRANGE + [] +[] + +[Kernels] + [stress_x] + type = BVStressDivergence + component = x + variable = disp_x + [] + [stress_y] + type = BVStressDivergence + component = y + variable = disp_y + [] + [stress_z] + type = BVStressDivergence + component = z + variable = disp_z + [] +[] + +[AuxVariables] + [temp] + order = FIRST + family = LAGRANGE + initial_condition = 289 + [] + [eqv_stress] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain_rate] + order = CONSTANT + family = MONOMIAL + [] + [strain_yy] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_L] + order = CONSTANT + family = MONOMIAL + [] +[] + +[AuxKernels] + [temp_aux] + type = ConstantAux + variable = temp + value = 289 + execute_on = 'TIMESTEP_END' + [] + [eqv_stress_aux] + type = BVMisesStressAux + variable = eqv_stress + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_aux] + type = BVEqvStrainAux + variable = eqv_strain + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_rate_aux] + type = BVEqvStrainRateAux + variable = eqv_strain_rate + execute_on = 'TIMESTEP_END' + [] + [strain_yy_aux] + type = BVStrainComponentAux + variable = strain_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_L_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_L + property = eqv_creep_strain_L + execute_on = 'TIMESTEP_END' + [] +[] + +[BCs] + [no_x] + type = DirichletBC + variable = disp_x + boundary = 'left' + value = 0.0 + [] + [no_y] + type = DirichletBC + variable = disp_y + boundary = 'bottom' + value = 0.0 + [] + [no_z] + type = DirichletBC + variable = disp_z + boundary = 'front back' + value = 0.0 + [] + [BVPressure] + [pressure_right] + boundary = 'right' + displacement_vars = 'disp_x disp_y disp_z' + value = 0.0 + [] + [pressure_top] + boundary = 'top' + displacement_vars = 'disp_x disp_y disp_z' + value = -2.0 + [] + [] +[] + +[Materials] + [elasticity] + type = BVMechanicalMaterial + displacements = 'disp_x disp_y disp_z' + young_modulus = ${E} + poisson_ratio = ${nu} + initial_stress = '-${P} ${P} 0.0' + inelastic_models = 'viscoelastic' + [] + [viscoelastic] + type = BVRTL2020ModelUpdate + volumetric = false + temperature = temp + Tr = ${Tr} + Ar = ${Ar} + alpha = ${alpha} + A1 = ${A1} + n1 = ${n1} + A2 = ${A2} + n2 = ${n2} + A = ${A} + n = ${n} + B = ${B} + m = ${m} + Nz = ${Nz} + nz = ${nz} + Mz = ${Mz} + mz = ${mz} + z = ${z} + [] +[] + +[Preconditioning] + active = 'hypre' + [hypre] + type = SMP + full = true + petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix' + petsc_options_iname = '-pc_type -pc_hypre_type + -snes_atol -snes_rtol -snes_stol -snes_max_it -snes_linesearch_type' + petsc_options_value = 'hypre boomeramg + 1.0e-10 1.0e-12 0 20 + basic' + [] +[] + +[Postprocessors] + [e] + type = ElementAverageValue + variable = eqv_strain + outputs = csv + [] + [e_rate] + type = ElementAverageValue + variable = eqv_strain_rate + outputs = csv + [] + [eqv_strain_L] + type = ElementAverageValue + variable = eqv_creep_strain_L + outputs = csv + [] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + start_time = 0.0 + end_time = 1 + dt = 0.0001 +[] + +[Outputs] + perf_graph = true + execute_on = 'TIMESTEP_END' + print_linear_residuals = false + exodus = true + [csv] + type = CSV + [] +[] diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183747.i b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183747.i new file mode 100644 index 0000000..197efaa --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183747.i @@ -0,0 +1,254 @@ +# Input file for purely Lemaitre creep model based on RTL2020 model (Azabou et al. (2021)). +# Note: Parameter A is set to zero to ensure the Munson-Dawson component is zero. +# Also, volumetric part is set to false and parameter z is set to zero. +# Parameters +# Units used for the simulation: stress in MPa, time in days, strain in m / m + +E = 6000 +nu = 0.000044 +alpha = 0.1 +A2 = 1 +n2 = 14.8 +Ar = 1 +Tr = 289 +# parameters for Munson-Dawson part +A1 = 1 +n1 = 1 +A = 0.0 +n = 10 +B = 0.0 +m = 2.2195 +P = 1 +# parameters for volumetric part +z = 0.0 +Nz = 0.0241 +nz = 1.2644 +Mz = 0.024 +mz = 1.028 + +[Mesh] + type = GeneratedMesh + dim = 3 + nx = 1 + ny = 1 + nz = 2 + xmin = 0 + xmax = 1 + ymin = 0 + ymax = 1 + zmin = 0 + zmax = 0.1 +[] + +[Variables] + [disp_x] + order = FIRST + family = LAGRANGE + [] + [disp_y] + order = FIRST + family = LAGRANGE + [] + [disp_z] + order = FIRST + family = LAGRANGE + [] +[] + +[Kernels] + [stress_x] + type = BVStressDivergence + component = x + variable = disp_x + [] + [stress_y] + type = BVStressDivergence + component = y + variable = disp_y + [] + [stress_z] + type = BVStressDivergence + component = z + variable = disp_z + [] +[] + +[AuxVariables] + [temp] + order = FIRST + family = LAGRANGE + initial_condition = 289 + [] + [eqv_stress] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain_rate] + order = CONSTANT + family = MONOMIAL + [] + [strain_yy] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_L] + order = CONSTANT + family = MONOMIAL + [] +[] + +[AuxKernels] + [temp_aux] + type = ConstantAux + variable = temp + value = 289 + execute_on = 'TIMESTEP_END' + [] + [eqv_stress_aux] + type = BVMisesStressAux + variable = eqv_stress + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_aux] + type = BVEqvStrainAux + variable = eqv_strain + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_rate_aux] + type = BVEqvStrainRateAux + variable = eqv_strain_rate + execute_on = 'TIMESTEP_END' + [] + [strain_yy_aux] + type = BVStrainComponentAux + variable = strain_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_L_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_L + property = eqv_creep_strain_L + execute_on = 'TIMESTEP_END' + [] +[] + +[BCs] + [no_x] + type = DirichletBC + variable = disp_x + boundary = 'left' + value = 0.0 + [] + [no_y] + type = DirichletBC + variable = disp_y + boundary = 'bottom' + value = 0.0 + [] + [no_z] + type = DirichletBC + variable = disp_z + boundary = 'front back' + value = 0.0 + [] + [BVPressure] + [pressure_right] + boundary = 'right' + displacement_vars = 'disp_x disp_y disp_z' + value = 0.0 + [] + [pressure_top] + boundary = 'top' + displacement_vars = 'disp_x disp_y disp_z' + value = -2.0 + [] + [] +[] + +[Materials] + [elasticity] + type = BVMechanicalMaterial + displacements = 'disp_x disp_y disp_z' + young_modulus = ${E} + poisson_ratio = ${nu} + initial_stress = '-${P} ${P} 0.0' + inelastic_models = 'viscoelastic' + [] + [viscoelastic] + type = BVRTL2020ModelUpdate + volumetric = false + temperature = temp + Tr = ${Tr} + Ar = ${Ar} + alpha = ${alpha} + A1 = ${A1} + n1 = ${n1} + A2 = ${A2} + n2 = ${n2} + A = ${A} + n = ${n} + B = ${B} + m = ${m} + Nz = ${Nz} + nz = ${nz} + Mz = ${Mz} + mz = ${mz} + z = ${z} + [] +[] + +[Preconditioning] + active = 'hypre' + [hypre] + type = SMP + full = true + petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix' + petsc_options_iname = '-pc_type -pc_hypre_type + -snes_atol -snes_rtol -snes_stol -snes_max_it -snes_linesearch_type' + petsc_options_value = 'hypre boomeramg + 1.0e-10 1.0e-12 0 20 + basic' + [] +[] + +[Postprocessors] + [e] + type = ElementAverageValue + variable = eqv_strain + outputs = csv + [] + [e_rate] + type = ElementAverageValue + variable = eqv_strain_rate + outputs = csv + [] + [eqv_strain_L] + type = ElementAverageValue + variable = eqv_creep_strain_L + outputs = csv + [] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + start_time = 0.0 + end_time = 1 + dt = 0.0001 +[] + +[Outputs] + perf_graph = true + execute_on = 'TIMESTEP_END' + print_linear_residuals = false + exodus = true + [csv] + type = CSV + [] +[] diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183758.i b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183758.i new file mode 100644 index 0000000..197efaa --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183758.i @@ -0,0 +1,254 @@ +# Input file for purely Lemaitre creep model based on RTL2020 model (Azabou et al. (2021)). +# Note: Parameter A is set to zero to ensure the Munson-Dawson component is zero. +# Also, volumetric part is set to false and parameter z is set to zero. +# Parameters +# Units used for the simulation: stress in MPa, time in days, strain in m / m + +E = 6000 +nu = 0.000044 +alpha = 0.1 +A2 = 1 +n2 = 14.8 +Ar = 1 +Tr = 289 +# parameters for Munson-Dawson part +A1 = 1 +n1 = 1 +A = 0.0 +n = 10 +B = 0.0 +m = 2.2195 +P = 1 +# parameters for volumetric part +z = 0.0 +Nz = 0.0241 +nz = 1.2644 +Mz = 0.024 +mz = 1.028 + +[Mesh] + type = GeneratedMesh + dim = 3 + nx = 1 + ny = 1 + nz = 2 + xmin = 0 + xmax = 1 + ymin = 0 + ymax = 1 + zmin = 0 + zmax = 0.1 +[] + +[Variables] + [disp_x] + order = FIRST + family = LAGRANGE + [] + [disp_y] + order = FIRST + family = LAGRANGE + [] + [disp_z] + order = FIRST + family = LAGRANGE + [] +[] + +[Kernels] + [stress_x] + type = BVStressDivergence + component = x + variable = disp_x + [] + [stress_y] + type = BVStressDivergence + component = y + variable = disp_y + [] + [stress_z] + type = BVStressDivergence + component = z + variable = disp_z + [] +[] + +[AuxVariables] + [temp] + order = FIRST + family = LAGRANGE + initial_condition = 289 + [] + [eqv_stress] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain_rate] + order = CONSTANT + family = MONOMIAL + [] + [strain_yy] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_L] + order = CONSTANT + family = MONOMIAL + [] +[] + +[AuxKernels] + [temp_aux] + type = ConstantAux + variable = temp + value = 289 + execute_on = 'TIMESTEP_END' + [] + [eqv_stress_aux] + type = BVMisesStressAux + variable = eqv_stress + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_aux] + type = BVEqvStrainAux + variable = eqv_strain + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_rate_aux] + type = BVEqvStrainRateAux + variable = eqv_strain_rate + execute_on = 'TIMESTEP_END' + [] + [strain_yy_aux] + type = BVStrainComponentAux + variable = strain_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_L_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_L + property = eqv_creep_strain_L + execute_on = 'TIMESTEP_END' + [] +[] + +[BCs] + [no_x] + type = DirichletBC + variable = disp_x + boundary = 'left' + value = 0.0 + [] + [no_y] + type = DirichletBC + variable = disp_y + boundary = 'bottom' + value = 0.0 + [] + [no_z] + type = DirichletBC + variable = disp_z + boundary = 'front back' + value = 0.0 + [] + [BVPressure] + [pressure_right] + boundary = 'right' + displacement_vars = 'disp_x disp_y disp_z' + value = 0.0 + [] + [pressure_top] + boundary = 'top' + displacement_vars = 'disp_x disp_y disp_z' + value = -2.0 + [] + [] +[] + +[Materials] + [elasticity] + type = BVMechanicalMaterial + displacements = 'disp_x disp_y disp_z' + young_modulus = ${E} + poisson_ratio = ${nu} + initial_stress = '-${P} ${P} 0.0' + inelastic_models = 'viscoelastic' + [] + [viscoelastic] + type = BVRTL2020ModelUpdate + volumetric = false + temperature = temp + Tr = ${Tr} + Ar = ${Ar} + alpha = ${alpha} + A1 = ${A1} + n1 = ${n1} + A2 = ${A2} + n2 = ${n2} + A = ${A} + n = ${n} + B = ${B} + m = ${m} + Nz = ${Nz} + nz = ${nz} + Mz = ${Mz} + mz = ${mz} + z = ${z} + [] +[] + +[Preconditioning] + active = 'hypre' + [hypre] + type = SMP + full = true + petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix' + petsc_options_iname = '-pc_type -pc_hypre_type + -snes_atol -snes_rtol -snes_stol -snes_max_it -snes_linesearch_type' + petsc_options_value = 'hypre boomeramg + 1.0e-10 1.0e-12 0 20 + basic' + [] +[] + +[Postprocessors] + [e] + type = ElementAverageValue + variable = eqv_strain + outputs = csv + [] + [e_rate] + type = ElementAverageValue + variable = eqv_strain_rate + outputs = csv + [] + [eqv_strain_L] + type = ElementAverageValue + variable = eqv_creep_strain_L + outputs = csv + [] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + start_time = 0.0 + end_time = 1 + dt = 0.0001 +[] + +[Outputs] + perf_graph = true + execute_on = 'TIMESTEP_END' + print_linear_residuals = false + exodus = true + [csv] + type = CSV + [] +[] diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250527142313.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250527142313.py new file mode 100644 index 0000000..5d1c1ab --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250527142313.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.xlsx") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130109.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130109.py new file mode 100644 index 0000000..d3c2305 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130109.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return 1e-6*first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.xlsx") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130110.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130110.py new file mode 100644 index 0000000..d3c2305 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130110.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return 1e-6*first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.xlsx") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130323.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130323.py new file mode 100644 index 0000000..5d1c1ab --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130323.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.xlsx") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130324.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130324.py new file mode 100644 index 0000000..5d1c1ab --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130324.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.xlsx") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130458.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130458.py new file mode 100644 index 0000000..4423563 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130458.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.xlsx") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130459.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130459.py new file mode 100644 index 0000000..4423563 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130459.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.xlsx") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130524.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130524.py new file mode 100644 index 0000000..801b85c --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130524.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = 1-alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.xlsx") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130525.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130525.py new file mode 100644 index 0000000..801b85c --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130525.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = 1-alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.xlsx") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130550.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130550.py new file mode 100644 index 0000000..5d1c1ab --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130550.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.xlsx") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130551.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130551.py new file mode 100644 index 0000000..5d1c1ab --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130551.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.xlsx") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130653.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130653.py new file mode 100644 index 0000000..7040980 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130653.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=0.148): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.xlsx") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130654.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130654.py new file mode 100644 index 0000000..7040980 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130654.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=0.148): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.xlsx") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130730.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130730.py new file mode 100644 index 0000000..5d1c1ab --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130730.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.xlsx") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130731.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130731.py new file mode 100644 index 0000000..5d1c1ab --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130731.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.xlsx") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133756.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133756.py new file mode 100644 index 0000000..3cbae30 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133756.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return (first_term * second_term * (t ))** (1-alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.xlsx") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133757.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133757.py new file mode 100644 index 0000000..3cbae30 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133757.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return (first_term * second_term * (t ))** (1-alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.xlsx") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133837.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133837.py new file mode 100644 index 0000000..485a8a3 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133837.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return (first_term * second_term * (t ))** (1-1/alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.xlsx") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133838.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133838.py new file mode 100644 index 0000000..485a8a3 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133838.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return (first_term * second_term * (t ))** (1-1/alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.xlsx") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133859.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133859.py new file mode 100644 index 0000000..5d12adb --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133859.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = 1-alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return (first_term * second_term * (t ))** (1-1/alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.xlsx") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133900.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133900.py new file mode 100644 index 0000000..5d12adb --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133900.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = 1-alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return (first_term * second_term * (t ))** (1-1/alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.xlsx") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133922.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133922.py new file mode 100644 index 0000000..5d1c1ab --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133922.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.xlsx") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133923.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133923.py new file mode 100644 index 0000000..5d1c1ab --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133923.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.xlsx") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133924.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133924.py new file mode 100644 index 0000000..5d1c1ab --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133924.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.xlsx") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133925.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133925.py new file mode 100644 index 0000000..5d1c1ab --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133925.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.xlsx") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528173303.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528173303.py new file mode 100644 index 0000000..d650b93 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528173303.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.csv") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528173304.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528173304.py new file mode 100644 index 0000000..d650b93 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528173304.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.csv") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528173444.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528173444.py new file mode 100644 index 0000000..2de96e9 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528173444.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("Lemaitre_analytical.csv") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528173445.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528173445.py new file mode 100644 index 0000000..2de96e9 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528173445.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("Lemaitre_analytical.csv") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174048.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174048.py new file mode 100644 index 0000000..a7e6ccc --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174048.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha)*1e-6 + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("Lemaitre_analytical.csv") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174049.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174049.py new file mode 100644 index 0000000..a7e6ccc --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174049.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha)*1e-6 + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("Lemaitre_analytical.csv") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174222.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174222.py new file mode 100644 index 0000000..2de96e9 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174222.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("Lemaitre_analytical.csv") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174223.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174223.py new file mode 100644 index 0000000..2de96e9 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174223.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("Lemaitre_analytical.csv") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174235.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174235.py new file mode 100644 index 0000000..d650b93 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174235.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.csv") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174236.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174236.py new file mode 100644 index 0000000..d650b93 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174236.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.csv") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174437.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174437.py new file mode 100644 index 0000000..5bbfe21 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174437.py @@ -0,0 +1,49 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.csv") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.axhline(y=2.0, color='r', linestyle='--', label='y = 2.0 (Target)') +plt.axvline(x=0.5, color='g', linestyle=':', label='t = 0.5 (Switch Point)') +plt.legend() +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174438.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174438.py new file mode 100644 index 0000000..5bbfe21 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174438.py @@ -0,0 +1,49 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.csv") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.axhline(y=2.0, color='r', linestyle='--', label='y = 2.0 (Target)') +plt.axvline(x=0.5, color='g', linestyle=':', label='t = 0.5 (Switch Point)') +plt.legend() +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174519.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174519.py new file mode 100644 index 0000000..ff9385f --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174519.py @@ -0,0 +1,49 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.csv") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.axhline(y=2.0, color='r', linestyle='--') +plt.axvline(x=0.5, color='g', linestyle=':') +plt.legend() +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174520.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174520.py new file mode 100644 index 0000000..ff9385f --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174520.py @@ -0,0 +1,49 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.csv") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.axhline(y=2.0, color='r', linestyle='--') +plt.axvline(x=0.5, color='g', linestyle=':') +plt.legend() +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174546.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174546.py new file mode 100644 index 0000000..ed3b2dd --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174546.py @@ -0,0 +1,47 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.csv") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174547.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174547.py new file mode 100644 index 0000000..ed3b2dd --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174547.py @@ -0,0 +1,47 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.csv") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174850.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174850.py new file mode 100644 index 0000000..00b0345 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174850.py @@ -0,0 +1,94 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """ + Calculate the analytical solution for gamma_vp + + Parameters: + ----------- + t : float or array + Time values + A_r : float, default=1 + Arrhenius constant + T_r : float, default=289 + Reference temperature + T : float, default=289 + Current temperature + q : float, default=2 + Flow rate parameter + A_2 : float, default=1 + Area parameter + alpha : float, default=0.1 + Alpha exponent + beta : float, default=1.48 + Beta exponent + + Returns: + -------- + float or array + Calculated gamma_vp values + """ + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +def save_to_csv(t_values, gamma_vp_values, filename="gamma_vp_results.csv"): + """Save results to CSV file""" + with open(filename, 'w', newline='', encoding='utf-8') as csvfile: + writer = csv.writer(csvfile) + # Write header + writer.writerow(["Time (t)", "Gamma_vp"]) + # Write data + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + print(f"Data successfully saved to {filename}") + +def create_plot(t_values, gamma_vp_values, save_filename="gamma_vp_plot.png"): + """Create and save the plot""" + plt.figure(figsize=(10, 6)) + plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2, label=r'$\gamma_{vp}$') + plt.legend(loc='upper left', fontsize=12) + plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14, fontweight='bold') + plt.xlabel('Time (t)', fontsize=12) + plt.ylabel(r'$\gamma_{vp}$', fontsize=12) + plt.grid(True, linestyle='--', alpha=0.7) + plt.xticks(np.arange(0, 1.1, 0.1)) + + # Dynamic y-axis scaling based on data + y_max = max(gamma_vp_values) + y_step = max(0.1, y_max / 20) # Adaptive step size + plt.yticks(np.arange(0, y_max + y_step, y_step)) + + plt.tight_layout() + plt.savefig(save_filename, dpi=300, bbox_inches='tight') + print(f"Plot saved to {save_filename}") + plt.show() + +def main(): + """Main execution function""" + # Time range from 0 to 1 with step 0.001 + t_values = np.arange(0.001, 1.001, 0.001) # Start from 0.001 to avoid t=0 issues + + # Calculate gamma_vp for each time point (vectorized for better performance) + gamma_vp_values = calculate_gamma_vp(t_values) + + # Save results to CSV + save_to_csv(t_values, gamma_vp_values) + + # Create and save plot + create_plot(t_values, gamma_vp_values) + + # Print summary statistics + print(f"\nSummary Statistics:") + print(f"- Number of data points: {len(t_values)}") + print(f"- Time range: {t_values[0]:.3f} to {t_values[-1]:.3f}") + print(f"- Gamma_vp range: {min(gamma_vp_values):.6f} to {max(gamma_vp_values):.6f}") + print(f"- Mean gamma_vp: {np.mean(gamma_vp_values):.6f}") + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174851.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174851.py new file mode 100644 index 0000000..00b0345 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174851.py @@ -0,0 +1,94 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """ + Calculate the analytical solution for gamma_vp + + Parameters: + ----------- + t : float or array + Time values + A_r : float, default=1 + Arrhenius constant + T_r : float, default=289 + Reference temperature + T : float, default=289 + Current temperature + q : float, default=2 + Flow rate parameter + A_2 : float, default=1 + Area parameter + alpha : float, default=0.1 + Alpha exponent + beta : float, default=1.48 + Beta exponent + + Returns: + -------- + float or array + Calculated gamma_vp values + """ + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +def save_to_csv(t_values, gamma_vp_values, filename="gamma_vp_results.csv"): + """Save results to CSV file""" + with open(filename, 'w', newline='', encoding='utf-8') as csvfile: + writer = csv.writer(csvfile) + # Write header + writer.writerow(["Time (t)", "Gamma_vp"]) + # Write data + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + print(f"Data successfully saved to {filename}") + +def create_plot(t_values, gamma_vp_values, save_filename="gamma_vp_plot.png"): + """Create and save the plot""" + plt.figure(figsize=(10, 6)) + plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2, label=r'$\gamma_{vp}$') + plt.legend(loc='upper left', fontsize=12) + plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14, fontweight='bold') + plt.xlabel('Time (t)', fontsize=12) + plt.ylabel(r'$\gamma_{vp}$', fontsize=12) + plt.grid(True, linestyle='--', alpha=0.7) + plt.xticks(np.arange(0, 1.1, 0.1)) + + # Dynamic y-axis scaling based on data + y_max = max(gamma_vp_values) + y_step = max(0.1, y_max / 20) # Adaptive step size + plt.yticks(np.arange(0, y_max + y_step, y_step)) + + plt.tight_layout() + plt.savefig(save_filename, dpi=300, bbox_inches='tight') + print(f"Plot saved to {save_filename}") + plt.show() + +def main(): + """Main execution function""" + # Time range from 0 to 1 with step 0.001 + t_values = np.arange(0.001, 1.001, 0.001) # Start from 0.001 to avoid t=0 issues + + # Calculate gamma_vp for each time point (vectorized for better performance) + gamma_vp_values = calculate_gamma_vp(t_values) + + # Save results to CSV + save_to_csv(t_values, gamma_vp_values) + + # Create and save plot + create_plot(t_values, gamma_vp_values) + + # Print summary statistics + print(f"\nSummary Statistics:") + print(f"- Number of data points: {len(t_values)}") + print(f"- Time range: {t_values[0]:.3f} to {t_values[-1]:.3f}") + print(f"- Gamma_vp range: {min(gamma_vp_values):.6f} to {max(gamma_vp_values):.6f}") + print(f"- Mean gamma_vp: {np.mean(gamma_vp_values):.6f}") + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174930.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174930.py new file mode 100644 index 0000000..ed3b2dd --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174930.py @@ -0,0 +1,47 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.csv") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174931.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174931.py new file mode 100644 index 0000000..ed3b2dd --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174931.py @@ -0,0 +1,47 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to Excel --- +wb = Workbook() +ws = wb.active +ws.title = "Gamma_vp Results" +ws.append(["Time (t)", "Gamma_vp"]) +for t, gamma in zip(t_values, gamma_vp_values): + ws.append([t, gamma]) +wb.save("gamma_vp_results.csv") + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- Excel file: 'gamma_vp_results.xlsx'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175122.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175122.py new file mode 100644 index 0000000..753362c --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175122.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('gamma_vp_results.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'gamma_vp_results.csv'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175123.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175123.py new file mode 100644 index 0000000..753362c --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175123.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('gamma_vp_results.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'gamma_vp_results.csv'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175315.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175315.py new file mode 100644 index 0000000..104f8fd --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175315.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre.csv'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175316.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175316.py new file mode 100644 index 0000000..104f8fd --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175316.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre.csv'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175333.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175333.py new file mode 100644 index 0000000..00f934f --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175333.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) * 1e-6 + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre.csv'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175334.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175334.py new file mode 100644 index 0000000..00f934f --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175334.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) * 1e-6 + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre.csv'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175426.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175426.py new file mode 100644 index 0000000..104f8fd --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175426.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre.csv'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175427.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175427.py new file mode 100644 index 0000000..104f8fd --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175427.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre.csv'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175448.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175448.py new file mode 100644 index 0000000..1a36718 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175448.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return 1e-6* first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre.csv'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175449.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175449.py new file mode 100644 index 0000000..1a36718 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175449.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return 1e-6* first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre.csv'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175507.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175507.py new file mode 100644 index 0000000..104f8fd --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175507.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre.csv'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175508.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175508.py new file mode 100644 index 0000000..104f8fd --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175508.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre.csv'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175520.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175520.py new file mode 100644 index 0000000..104f8fd --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175520.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre.csv'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175521.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175521.py new file mode 100644 index 0000000..104f8fd --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175521.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre.csv'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181550.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181550.py new file mode 100644 index 0000000..64bd24c --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181550.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2e6, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre.csv'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181551.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181551.py new file mode 100644 index 0000000..64bd24c --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181551.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2e6, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre.csv'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181755.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181755.py new file mode 100644 index 0000000..3d69e01 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181755.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2e6, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, None, 0.1)) +plt.yticks(np.arange(0, None, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre.csv'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181756.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181756.py new file mode 100644 index 0000000..3d69e01 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181756.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2e6, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, None, 0.1)) +plt.yticks(np.arange(0, None, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre.csv'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181757.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181757.py new file mode 100644 index 0000000..3d69e01 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181757.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2e6, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, None, 0.1)) +plt.yticks(np.arange(0, None, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre.csv'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181758.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181758.py new file mode 100644 index 0000000..3d69e01 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181758.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2e6, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, None, 0.1)) +plt.yticks(np.arange(0, None, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre.csv'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181839.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181839.py new file mode 100644 index 0000000..64bd24c --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181839.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2e6, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre.csv'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181840.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181840.py new file mode 100644 index 0000000..64bd24c --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181840.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2e6, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.xticks(np.arange(0, 1.1, 0.1)) +plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre.csv'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182157.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182157.py new file mode 100644 index 0000000..27eeca5 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182157.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2e6, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +# Remove these two lines to auto-scale: +# plt.xticks(np.arange(0, 1.1, 0.1)) +# plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre.csv'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182158.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182158.py new file mode 100644 index 0000000..27eeca5 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182158.py @@ -0,0 +1,46 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2e6, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +# Remove these two lines to auto-scale: +# plt.xticks(np.arange(0, 1.1, 0.1)) +# plt.yticks(np.arange(0, 3.1, 0.1)) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre.csv'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182254.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182254.py new file mode 100644 index 0000000..b320c3a --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182254.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2e6, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre.csv'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182255.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182255.py new file mode 100644 index 0000000..b320c3a --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182255.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2e6, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre.csv'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182311.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182311.py new file mode 100644 index 0000000..c2e84c6 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182311.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre.csv'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182312.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182312.py new file mode 100644 index 0000000..c2e84c6 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182312.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return first_term * second_term * (t ** alpha) + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre.csv'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182339.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182339.py new file mode 100644 index 0000000..30b7824 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182339.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return (first_term * second_term * (t ** alpha)) *1e-6 + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre.csv'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182340.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182340.py new file mode 100644 index 0000000..30b7824 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182340.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return (first_term * second_term * (t ** alpha)) *1e-6 + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre.csv'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182343.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182343.py new file mode 100644 index 0000000..1b59acd --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182343.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return (first_term * second_term * (t ** alpha)) * 1e-6 + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre.csv'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182344.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182344.py new file mode 100644 index 0000000..1b59acd --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182344.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return (first_term * second_term * (t ** alpha)) * 1e-6 + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.tight_layout() + +# Save and show plot +plt.savefig('gamma_vp_plot.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre.csv'") +print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182434.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182434.py new file mode 100644 index 0000000..acb1f68 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182434.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return (first_term * second_term * (t ** alpha)) * 1e-6 + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.tight_layout() + +# Save and show plot +plt.savefig('Lemaitre_analytical.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre.csv'") +print("- Plot: 'Lemaitre_analytical.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182435.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182435.py new file mode 100644 index 0000000..acb1f68 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182435.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return (first_term * second_term * (t ** alpha)) * 1e-6 + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.tight_layout() + +# Save and show plot +plt.savefig('Lemaitre_analytical.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre.csv'") +print("- Plot: 'Lemaitre_analytical.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182448.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182448.py new file mode 100644 index 0000000..d2a94db --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182448.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return (first_term * second_term * (t ** alpha)) * 1e-6 # results converted to Pa + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.tight_layout() + +# Save and show plot +plt.savefig('Lemaitre_analytical.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre.csv'") +print("- Plot: 'Lemaitre_analytical.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182449.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182449.py new file mode 100644 index 0000000..d2a94db --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182449.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return (first_term * second_term * (t ** alpha)) * 1e-6 # results converted to Pa + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.tight_layout() + +# Save and show plot +plt.savefig('Lemaitre_analytical.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre.csv'") +print("- Plot: 'Lemaitre_analytical.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182505.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182505.py new file mode 100644 index 0000000..b12f2ee --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182505.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return (first_term * second_term * (t ** alpha)) * 1e-6 # results converted to Pa + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp} (Pa)$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.tight_layout() + +# Save and show plot +plt.savefig('Lemaitre_analytical.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre.csv'") +print("- Plot: 'Lemaitre_analytical.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182506.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182506.py new file mode 100644 index 0000000..b12f2ee --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182506.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return (first_term * second_term * (t ** alpha)) * 1e-6 # results converted to Pa + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp} (Pa)$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.tight_layout() + +# Save and show plot +plt.savefig('Lemaitre_analytical.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre.csv'") +print("- Plot: 'Lemaitre_analytical.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182551.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182551.py new file mode 100644 index 0000000..a12f558 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182551.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return (first_term * second_term * (t ** alpha)) * 1e-6 # results converted to Pa + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp} (Pa)$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.tight_layout() + +# Save and show plot +plt.savefig('Lemaitre_analytical.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre_analytical.csv'") +print("- Plot: 'Lemaitre_analytical.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182552.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182552.py new file mode 100644 index 0000000..a12f558 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182552.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return (first_term * second_term * (t ** alpha)) * 1e-6 # results converted to Pa + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp} (Pa)$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.tight_layout() + +# Save and show plot +plt.savefig('Lemaitre_analytical.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre_analytical.csv'") +print("- Plot: 'Lemaitre_analytical.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182602.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182602.py new file mode 100644 index 0000000..a12f558 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182602.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return (first_term * second_term * (t ** alpha)) * 1e-6 # results converted to Pa + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp} (Pa)$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.tight_layout() + +# Save and show plot +plt.savefig('Lemaitre_analytical.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre_analytical.csv'") +print("- Plot: 'Lemaitre_analytical.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182603.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182603.py new file mode 100644 index 0000000..a12f558 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182603.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return (first_term * second_term * (t ** alpha)) * 1e-6 # results converted to Pa + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp} (Pa)$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.tight_layout() + +# Save and show plot +plt.savefig('Lemaitre_analytical.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre_analytical.csv'") +print("- Plot: 'Lemaitre_analytical.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182628.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182628.py new file mode 100644 index 0000000..0c15876 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182628.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return (first_term * second_term * (t ** alpha)) * 1e-6 # results converted to Pa + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre_analytical.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp} (Pa)$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.tight_layout() + +# Save and show plot +plt.savefig('Lemaitre_analytical.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre_analytical.csv'") +print("- Plot: 'Lemaitre_analytical.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182629.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182629.py new file mode 100644 index 0000000..0c15876 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182629.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return (first_term * second_term * (t ** alpha)) * 1e-6 # results converted to Pa + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre_analytical.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp} (Pa)$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.tight_layout() + +# Save and show plot +plt.savefig('Lemaitre_analytical.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre_analytical.csv'") +print("- Plot: 'Lemaitre_analytical.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183320.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183320.py new file mode 100644 index 0000000..3f0e231 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183320.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return (first_term * second_term * (t ** alpha)) * 1e-6 # results converted to Pa + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre_analytical.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (days)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp} (Pa)$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.tight_layout() + +# Save and show plot +plt.savefig('Lemaitre_analytical.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre_analytical.csv'") +print("- Plot: 'Lemaitre_analytical.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183321.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183321.py new file mode 100644 index 0000000..3f0e231 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183321.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return (first_term * second_term * (t ** alpha)) * 1e-6 # results converted to Pa + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre_analytical.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (days)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp} (Pa)$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.tight_layout() + +# Save and show plot +plt.savefig('Lemaitre_analytical.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre_analytical.csv'") +print("- Plot: 'Lemaitre_analytical.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183518.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183518.py new file mode 100644 index 0000000..3f0e231 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183518.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return (first_term * second_term * (t ** alpha)) * 1e-6 # results converted to Pa + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre_analytical.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (days)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp} (Pa)$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.tight_layout() + +# Save and show plot +plt.savefig('Lemaitre_analytical.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre_analytical.csv'") +print("- Plot: 'Lemaitre_analytical.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183519.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183519.py new file mode 100644 index 0000000..3f0e231 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183519.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return (first_term * second_term * (t ** alpha)) * 1e-6 # results converted to Pa + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre_analytical.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (days)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp} (Pa)$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.tight_layout() + +# Save and show plot +plt.savefig('Lemaitre_analytical.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre_analytical.csv'") +print("- Plot: 'Lemaitre_analytical.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183645.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183645.py new file mode 100644 index 0000000..1fdc714 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183645.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return (first_term * second_term * (t ** alpha)) * 1e-6 # 1e-6 factor added due to the numerical code's scaling + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre_analytical.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (days)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp} (Pa)$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.tight_layout() + +# Save and show plot +plt.savefig('Lemaitre_analytical.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre_analytical.csv'") +print("- Plot: 'Lemaitre_analytical.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183646.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183646.py new file mode 100644 index 0000000..1fdc714 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183646.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return (first_term * second_term * (t ** alpha)) * 1e-6 # 1e-6 factor added due to the numerical code's scaling + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre_analytical.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (days)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp} (Pa)$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.tight_layout() + +# Save and show plot +plt.savefig('Lemaitre_analytical.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre_analytical.csv'") +print("- Plot: 'Lemaitre_analytical.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183648.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183648.py new file mode 100644 index 0000000..1fdc714 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183648.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return (first_term * second_term * (t ** alpha)) * 1e-6 # 1e-6 factor added due to the numerical code's scaling + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre_analytical.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (days)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp} (Pa)$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.tight_layout() + +# Save and show plot +plt.savefig('Lemaitre_analytical.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre_analytical.csv'") +print("- Plot: 'Lemaitre_analytical.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183649.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183649.py new file mode 100644 index 0000000..1fdc714 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183649.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return (first_term * second_term * (t ** alpha)) * 1e-6 # 1e-6 factor added due to the numerical code's scaling + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre_analytical.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (days)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp} (Pa)$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.tight_layout() + +# Save and show plot +plt.savefig('Lemaitre_analytical.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre_analytical.csv'") +print("- Plot: 'Lemaitre_analytical.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183654.py b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183654.py new file mode 100644 index 0000000..1fdc714 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183654.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt +import csv + +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): + """Calculate the analytical solution for gamma_vp""" + exponent = A_r * ((1 / T_r) - (1 / T)) + numerator = alpha * np.exp(exponent) + denominator = alpha + first_term = (numerator / denominator) ** alpha + second_term = (q / A_2) ** beta + return (first_term * second_term * (t ** alpha)) * 1e-6 # 1e-6 factor added due to the numerical code's scaling + +# Time range from 0 to 1 with step 0.1 +t_values = np.arange(0, 1.0, 0.001) + +# Calculate gamma_vp for each time point +gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] + +# --- Save to CSV --- +with open('Lemaitre_analytical.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) + +# --- Create Plot --- +plt.figure(figsize=(8, 5)) +plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (days)', fontsize=14) +plt.xlabel('Time (t)', fontsize=12) +plt.ylabel(r'$\gamma_{vp} (Pa)$', fontsize=12) +plt.grid(True, linestyle='--', alpha=0.7) +plt.tight_layout() + +# Save and show plot +plt.savefig('Lemaitre_analytical.png', dpi=300) +plt.show() + +print("Results saved to:") +print("- CSV file: 'Lemaitre_analytical.csv'") +print("- Plot: 'Lemaitre_analytical.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250512112534.py b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250512112534.py new file mode 100644 index 0000000..a97e764 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250512112534.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt + +plt.style.use('publication.mplstyle') +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_experimental_data(): + filename = "Fig8_Bas_Bottom.csv" + gamma, q = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[4, 9], unpack=True, encoding='ISO-8859-1') + return gamma, q + +def read_simulation_data(): + filename = "BVRTL2020salt5triaxialtest3_csv.csv" # Replace with your actual filename + gamma, q = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[10, 11], unpack=True) + return gamma, q + +def plot_figure(): + fig, ax = plt.subplots() + ax.set_title('q vs $\gamma$ for bottom experiment') + + # Read data + gamma_exp, q_exp = read_experimental_data() + gamma_sim, q_sim = read_simulation_data() + + # Plot experimental data + ax.plot(gamma_exp, q_exp, color="k", label="Experimental q") + # Plot simulation data + ax.plot(gamma_sim, q_sim, color="r", label="Simulation q") + + # Set x-axis limit + ax.set_xlim(None,4.69) + + # Additional plot settings + ax.set_xlabel(r'shear Strain ($\gamma$)/%') + ax.set_ylabel('Differential Stress (Q-P)/MPa') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + + # Save figure + fig.savefig("q_gamma_compared_bottom.pdf", format="pdf", dpi=300, bbox_inches="tight") + +if __name__ == '__main__': + plot_figure() diff --git a/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528173528.py b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528173528.py new file mode 100644 index 0000000..df0ca61 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528173528.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt + +plt.style.use('publication.mplstyle') +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_analytical_data(): + filename = "Lemaitre_analytical.csv" + gamma, q = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[4, 9], unpack=True, encoding='ISO-8859-1') + return gamma, q + +def read_simulation_data(): + filename = "BVRTL2020salt5triaxialtest3_csv.csv" # Replace with your actual filename + gamma, q = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[10, 11], unpack=True) + return gamma, q + +def plot_figure(): + fig, ax = plt.subplots() + ax.set_title('q vs $\gamma$ for bottom experiment') + + # Read data + gamma_exp, q_exp = read_analytical_data() + gamma_sim, q_sim = read_simulation_data() + + # Plot experimental data + ax.plot(gamma_exp, q_exp, color="k", label="Experimental q") + # Plot simulation data + ax.plot(gamma_sim, q_sim, color="r", label="Simulation q") + + # Set x-axis limit + ax.set_xlim(None,4.69) + + # Additional plot settings + ax.set_xlabel(r'shear Strain ($\gamma$)/%') + ax.set_ylabel('Differential Stress (Q-P)/MPa') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + + # Save figure + fig.savefig("q_gamma_compared_bottom.pdf", format="pdf", dpi=300, bbox_inches="tight") + +if __name__ == '__main__': + plot_figure() diff --git a/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528173529.py b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528173529.py new file mode 100644 index 0000000..df0ca61 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528173529.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt + +plt.style.use('publication.mplstyle') +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_analytical_data(): + filename = "Lemaitre_analytical.csv" + gamma, q = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[4, 9], unpack=True, encoding='ISO-8859-1') + return gamma, q + +def read_simulation_data(): + filename = "BVRTL2020salt5triaxialtest3_csv.csv" # Replace with your actual filename + gamma, q = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[10, 11], unpack=True) + return gamma, q + +def plot_figure(): + fig, ax = plt.subplots() + ax.set_title('q vs $\gamma$ for bottom experiment') + + # Read data + gamma_exp, q_exp = read_analytical_data() + gamma_sim, q_sim = read_simulation_data() + + # Plot experimental data + ax.plot(gamma_exp, q_exp, color="k", label="Experimental q") + # Plot simulation data + ax.plot(gamma_sim, q_sim, color="r", label="Simulation q") + + # Set x-axis limit + ax.set_xlim(None,4.69) + + # Additional plot settings + ax.set_xlabel(r'shear Strain ($\gamma$)/%') + ax.set_ylabel('Differential Stress (Q-P)/MPa') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + + # Save figure + fig.savefig("q_gamma_compared_bottom.pdf", format="pdf", dpi=300, bbox_inches="tight") + +if __name__ == '__main__': + plot_figure() diff --git a/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528173555.py b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528173555.py new file mode 100644 index 0000000..11833f1 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528173555.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt + +plt.style.use('publication.mplstyle') +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_analytical_data(): + filename = "Lemaitre_analytical.csv" + gamma, q = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[4, 9], unpack=True, encoding='ISO-8859-1') + return gamma, q + +def read_simulation_data(): + filename = "Lemaitre_csv.csv" # Replace with your actual filename + gamma, q = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[10, 11], unpack=True) + return gamma, q + +def plot_figure(): + fig, ax = plt.subplots() + ax.set_title('q vs $\gamma$ for bottom experiment') + + # Read data + gamma_exp, q_exp = read_analytical_data() + gamma_sim, q_sim = read_simulation_data() + + # Plot experimental data + ax.plot(gamma_exp, q_exp, color="k", label="Experimental q") + # Plot simulation data + ax.plot(gamma_sim, q_sim, color="r", label="Simulation q") + + # Set x-axis limit + ax.set_xlim(None,4.69) + + # Additional plot settings + ax.set_xlabel(r'shear Strain ($\gamma$)/%') + ax.set_ylabel('Differential Stress (Q-P)/MPa') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + + # Save figure + fig.savefig("q_gamma_compared_bottom.pdf", format="pdf", dpi=300, bbox_inches="tight") + +if __name__ == '__main__': + plot_figure() diff --git a/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528173556.py b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528173556.py new file mode 100644 index 0000000..11833f1 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528173556.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt + +plt.style.use('publication.mplstyle') +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_analytical_data(): + filename = "Lemaitre_analytical.csv" + gamma, q = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[4, 9], unpack=True, encoding='ISO-8859-1') + return gamma, q + +def read_simulation_data(): + filename = "Lemaitre_csv.csv" # Replace with your actual filename + gamma, q = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[10, 11], unpack=True) + return gamma, q + +def plot_figure(): + fig, ax = plt.subplots() + ax.set_title('q vs $\gamma$ for bottom experiment') + + # Read data + gamma_exp, q_exp = read_analytical_data() + gamma_sim, q_sim = read_simulation_data() + + # Plot experimental data + ax.plot(gamma_exp, q_exp, color="k", label="Experimental q") + # Plot simulation data + ax.plot(gamma_sim, q_sim, color="r", label="Simulation q") + + # Set x-axis limit + ax.set_xlim(None,4.69) + + # Additional plot settings + ax.set_xlabel(r'shear Strain ($\gamma$)/%') + ax.set_ylabel('Differential Stress (Q-P)/MPa') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + + # Save figure + fig.savefig("q_gamma_compared_bottom.pdf", format="pdf", dpi=300, bbox_inches="tight") + +if __name__ == '__main__': + plot_figure() diff --git a/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528175803.py b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528175803.py new file mode 100644 index 0000000..a5e7204 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528175803.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt + +plt.style.use('publication.mplstyle') +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_analytical_data(): + filename = "Lemaitre.csv" + gamma, q = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[4, 9], unpack=True, encoding='ISO-8859-1') + return gamma, q + +def read_simulation_data(): + filename = "Lemaitre_csv.csv" # Replace with your actual filename + gamma, q = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[10, 11], unpack=True) + return gamma, q + +def plot_figure(): + fig, ax = plt.subplots() + ax.set_title('q vs $\gamma$ for bottom experiment') + + # Read data + gamma_exp, q_exp = read_analytical_data() + gamma_sim, q_sim = read_simulation_data() + + # Plot experimental data + ax.plot(gamma_exp, q_exp, color="k", label="Experimental q") + # Plot simulation data + ax.plot(gamma_sim, q_sim, color="r", label="Simulation q") + + # Set x-axis limit + ax.set_xlim(None,4.69) + + # Additional plot settings + ax.set_xlabel(r'shear Strain ($\gamma$)/%') + ax.set_ylabel('Differential Stress (Q-P)/MPa') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + + # Save figure + fig.savefig("q_gamma_compared_bottom.pdf", format="pdf", dpi=300, bbox_inches="tight") + +if __name__ == '__main__': + plot_figure() diff --git a/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528175804.py b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528175804.py new file mode 100644 index 0000000..a5e7204 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528175804.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt + +plt.style.use('publication.mplstyle') +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_analytical_data(): + filename = "Lemaitre.csv" + gamma, q = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[4, 9], unpack=True, encoding='ISO-8859-1') + return gamma, q + +def read_simulation_data(): + filename = "Lemaitre_csv.csv" # Replace with your actual filename + gamma, q = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[10, 11], unpack=True) + return gamma, q + +def plot_figure(): + fig, ax = plt.subplots() + ax.set_title('q vs $\gamma$ for bottom experiment') + + # Read data + gamma_exp, q_exp = read_analytical_data() + gamma_sim, q_sim = read_simulation_data() + + # Plot experimental data + ax.plot(gamma_exp, q_exp, color="k", label="Experimental q") + # Plot simulation data + ax.plot(gamma_sim, q_sim, color="r", label="Simulation q") + + # Set x-axis limit + ax.set_xlim(None,4.69) + + # Additional plot settings + ax.set_xlabel(r'shear Strain ($\gamma$)/%') + ax.set_ylabel('Differential Stress (Q-P)/MPa') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + + # Save figure + fig.savefig("q_gamma_compared_bottom.pdf", format="pdf", dpi=300, bbox_inches="tight") + +if __name__ == '__main__': + plot_figure() diff --git a/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180220.py b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180220.py new file mode 100644 index 0000000..6ed66d1 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180220.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt + +plt.style.use('publication.mplstyle') +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_analytical_data(): + filename = "Lemaitre.csv" + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 3], unpack=True) + return t, gamma_vp + +def read_simulation_data(): + filename = "Lemaitre_csv.csv" # Replace with your actual filename + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 3], unpack=True) + return t, gamma_vp + +def plot_figure(): + fig, ax = plt.subplots() + ax.set_title('t vs $\gamma_vp') + + # Read data + t, gamma_vp_exp = read_analytical_data() + t, gamma_vp_sim = read_simulation_data() + + # Plot experimental data + ax.plot(t, gamma_vp_exp, color="k", label="Experimental q") + # Plot simulation data + ax.plot(t, gamma_vp_sim, color="r", label="Simulation q") + + # Set x-axis limit + ax.set_xlim(None,4.69) + + # Additional plot settings + ax.set_xlabel(r'shear Strain ($\gamma$)/%') + ax.set_ylabel('Differential Stress (Q-P)/MPa') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + + # Save figure + fig.savefig("q_gamma_compared_bottom.pdf", format="pdf", dpi=300, bbox_inches="tight") + +if __name__ == '__main__': + plot_figure() diff --git a/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180221.py b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180221.py new file mode 100644 index 0000000..6ed66d1 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180221.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt + +plt.style.use('publication.mplstyle') +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_analytical_data(): + filename = "Lemaitre.csv" + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 3], unpack=True) + return t, gamma_vp + +def read_simulation_data(): + filename = "Lemaitre_csv.csv" # Replace with your actual filename + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 3], unpack=True) + return t, gamma_vp + +def plot_figure(): + fig, ax = plt.subplots() + ax.set_title('t vs $\gamma_vp') + + # Read data + t, gamma_vp_exp = read_analytical_data() + t, gamma_vp_sim = read_simulation_data() + + # Plot experimental data + ax.plot(t, gamma_vp_exp, color="k", label="Experimental q") + # Plot simulation data + ax.plot(t, gamma_vp_sim, color="r", label="Simulation q") + + # Set x-axis limit + ax.set_xlim(None,4.69) + + # Additional plot settings + ax.set_xlabel(r'shear Strain ($\gamma$)/%') + ax.set_ylabel('Differential Stress (Q-P)/MPa') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + + # Save figure + fig.savefig("q_gamma_compared_bottom.pdf", format="pdf", dpi=300, bbox_inches="tight") + +if __name__ == '__main__': + plot_figure() diff --git a/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180222.py b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180222.py new file mode 100644 index 0000000..6ed66d1 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180222.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt + +plt.style.use('publication.mplstyle') +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_analytical_data(): + filename = "Lemaitre.csv" + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 3], unpack=True) + return t, gamma_vp + +def read_simulation_data(): + filename = "Lemaitre_csv.csv" # Replace with your actual filename + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 3], unpack=True) + return t, gamma_vp + +def plot_figure(): + fig, ax = plt.subplots() + ax.set_title('t vs $\gamma_vp') + + # Read data + t, gamma_vp_exp = read_analytical_data() + t, gamma_vp_sim = read_simulation_data() + + # Plot experimental data + ax.plot(t, gamma_vp_exp, color="k", label="Experimental q") + # Plot simulation data + ax.plot(t, gamma_vp_sim, color="r", label="Simulation q") + + # Set x-axis limit + ax.set_xlim(None,4.69) + + # Additional plot settings + ax.set_xlabel(r'shear Strain ($\gamma$)/%') + ax.set_ylabel('Differential Stress (Q-P)/MPa') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + + # Save figure + fig.savefig("q_gamma_compared_bottom.pdf", format="pdf", dpi=300, bbox_inches="tight") + +if __name__ == '__main__': + plot_figure() diff --git a/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180223.py b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180223.py new file mode 100644 index 0000000..6ed66d1 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180223.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt + +plt.style.use('publication.mplstyle') +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_analytical_data(): + filename = "Lemaitre.csv" + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 3], unpack=True) + return t, gamma_vp + +def read_simulation_data(): + filename = "Lemaitre_csv.csv" # Replace with your actual filename + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 3], unpack=True) + return t, gamma_vp + +def plot_figure(): + fig, ax = plt.subplots() + ax.set_title('t vs $\gamma_vp') + + # Read data + t, gamma_vp_exp = read_analytical_data() + t, gamma_vp_sim = read_simulation_data() + + # Plot experimental data + ax.plot(t, gamma_vp_exp, color="k", label="Experimental q") + # Plot simulation data + ax.plot(t, gamma_vp_sim, color="r", label="Simulation q") + + # Set x-axis limit + ax.set_xlim(None,4.69) + + # Additional plot settings + ax.set_xlabel(r'shear Strain ($\gamma$)/%') + ax.set_ylabel('Differential Stress (Q-P)/MPa') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + + # Save figure + fig.savefig("q_gamma_compared_bottom.pdf", format="pdf", dpi=300, bbox_inches="tight") + +if __name__ == '__main__': + plot_figure() diff --git a/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180338.py b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180338.py new file mode 100644 index 0000000..5b773db --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180338.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt + +plt.style.use('publication.mplstyle') +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_analytical_data(): + filename = "Lemaitre.csv" + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 2], unpack=True) + return t, gamma_vp + +def read_simulation_data(): + filename = "Lemaitre_csv.csv" # Replace with your actual filename + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 3], unpack=True) + return t, gamma_vp + +def plot_figure(): + fig, ax = plt.subplots() + ax.set_title('t vs $\gamma_vp') + + # Read data + t, gamma_vp_exp = read_analytical_data() + t, gamma_vp_sim = read_simulation_data() + + # Plot experimental data + ax.plot(t, gamma_vp_exp, color="k", label="Experimental q") + # Plot simulation data + ax.plot(t, gamma_vp_sim, color="r", label="Simulation q") + + # Set x-axis limit + ax.set_xlim(None,4.69) + + # Additional plot settings + ax.set_xlabel(r'shear Strain ($\gamma$)/%') + ax.set_ylabel('Differential Stress (Q-P)/MPa') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + + # Save figure + fig.savefig("q_gamma_compared_bottom.pdf", format="pdf", dpi=300, bbox_inches="tight") + +if __name__ == '__main__': + plot_figure() diff --git a/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180339.py b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180339.py new file mode 100644 index 0000000..5b773db --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180339.py @@ -0,0 +1,43 @@ +import numpy as np +import matplotlib.pyplot as plt + +plt.style.use('publication.mplstyle') +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_analytical_data(): + filename = "Lemaitre.csv" + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 2], unpack=True) + return t, gamma_vp + +def read_simulation_data(): + filename = "Lemaitre_csv.csv" # Replace with your actual filename + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 3], unpack=True) + return t, gamma_vp + +def plot_figure(): + fig, ax = plt.subplots() + ax.set_title('t vs $\gamma_vp') + + # Read data + t, gamma_vp_exp = read_analytical_data() + t, gamma_vp_sim = read_simulation_data() + + # Plot experimental data + ax.plot(t, gamma_vp_exp, color="k", label="Experimental q") + # Plot simulation data + ax.plot(t, gamma_vp_sim, color="r", label="Simulation q") + + # Set x-axis limit + ax.set_xlim(None,4.69) + + # Additional plot settings + ax.set_xlabel(r'shear Strain ($\gamma$)/%') + ax.set_ylabel('Differential Stress (Q-P)/MPa') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + + # Save figure + fig.savefig("q_gamma_compared_bottom.pdf", format="pdf", dpi=300, bbox_inches="tight") + +if __name__ == '__main__': + plot_figure() diff --git a/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180449.py b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180449.py new file mode 100644 index 0000000..5b20c42 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180449.py @@ -0,0 +1,67 @@ +import numpy as np +import matplotlib.pyplot as plt + +# plt.style.use('publication.mplstyle') # Comment out if style file doesn't exist +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_analytical_data(): + filename = "Lemaitre.csv" + try: + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 2], unpack=True) + return t, gamma_vp + except FileNotFoundError: + print(f"File {filename} not found!") + return None, None + except IndexError: + print(f"Column index error in {filename}. Check if column 2 exists.") + return None, None + +def read_simulation_data(): + filename = "Lemaitre_csv.csv" # Replace with your actual filename + try: + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 3], unpack=True) + return t, gamma_vp + except FileNotFoundError: + print(f"File {filename} not found!") + return None, None + except IndexError: + print(f"Column index error in {filename}. Check if column 3 exists.") + return None, None + +def plot_figure(): + fig, ax = plt.subplots(figsize=(8, 6)) + ax.set_title(r't vs $\gamma_{vp}$') # Fixed LaTeX syntax + + # Read data + t_exp, gamma_vp_exp = read_analytical_data() + t_sim, gamma_vp_sim = read_simulation_data() + + # Check if data was loaded successfully + if t_exp is None or gamma_vp_exp is None: + print("Failed to load analytical data") + return + if t_sim is None or gamma_vp_sim is None: + print("Failed to load simulation data") + return + + # Plot experimental data + ax.plot(t_exp, gamma_vp_exp, color="k", label="Experimental q", linewidth=2) + # Plot simulation data + ax.plot(t_sim, gamma_vp_sim, color="r", label="Simulation q", linewidth=2) + + # Set x-axis limit + ax.set_xlim(None, 4.69) + + # Additional plot settings + ax.set_xlabel(r'Shear Strain ($\gamma$)/%') + ax.set_ylabel('Differential Stress (Q-P)/MPa') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + ax.grid(True, alpha=0.3) # Add grid for better readability + + # Save figure + fig.savefig("q_gamma_compared_bottom.pdf", format="pdf", dpi=300, bbox_inches="tight") + plt.show() # Display the plot + +if __name__ == '__main__': + plot_figure() \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180450.py b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180450.py new file mode 100644 index 0000000..5b20c42 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180450.py @@ -0,0 +1,67 @@ +import numpy as np +import matplotlib.pyplot as plt + +# plt.style.use('publication.mplstyle') # Comment out if style file doesn't exist +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_analytical_data(): + filename = "Lemaitre.csv" + try: + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 2], unpack=True) + return t, gamma_vp + except FileNotFoundError: + print(f"File {filename} not found!") + return None, None + except IndexError: + print(f"Column index error in {filename}. Check if column 2 exists.") + return None, None + +def read_simulation_data(): + filename = "Lemaitre_csv.csv" # Replace with your actual filename + try: + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 3], unpack=True) + return t, gamma_vp + except FileNotFoundError: + print(f"File {filename} not found!") + return None, None + except IndexError: + print(f"Column index error in {filename}. Check if column 3 exists.") + return None, None + +def plot_figure(): + fig, ax = plt.subplots(figsize=(8, 6)) + ax.set_title(r't vs $\gamma_{vp}$') # Fixed LaTeX syntax + + # Read data + t_exp, gamma_vp_exp = read_analytical_data() + t_sim, gamma_vp_sim = read_simulation_data() + + # Check if data was loaded successfully + if t_exp is None or gamma_vp_exp is None: + print("Failed to load analytical data") + return + if t_sim is None or gamma_vp_sim is None: + print("Failed to load simulation data") + return + + # Plot experimental data + ax.plot(t_exp, gamma_vp_exp, color="k", label="Experimental q", linewidth=2) + # Plot simulation data + ax.plot(t_sim, gamma_vp_sim, color="r", label="Simulation q", linewidth=2) + + # Set x-axis limit + ax.set_xlim(None, 4.69) + + # Additional plot settings + ax.set_xlabel(r'Shear Strain ($\gamma$)/%') + ax.set_ylabel('Differential Stress (Q-P)/MPa') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + ax.grid(True, alpha=0.3) # Add grid for better readability + + # Save figure + fig.savefig("q_gamma_compared_bottom.pdf", format="pdf", dpi=300, bbox_inches="tight") + plt.show() # Display the plot + +if __name__ == '__main__': + plot_figure() \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180728.py b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180728.py new file mode 100644 index 0000000..5cd78be --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180728.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt + +# plt.style.use('publication.mplstyle') # Comment out if style file doesn't exist +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_analytical_data(): + filename = "Lemaitre.csv" + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 2], unpack=True) + return t, gamma_vp + +def read_simulation_data(): + filename = "Lemaitre_csv.csv" # Replace with your actual filename + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 3], unpack=True) + return t, gamma_vp + +def plot_figure(): + fig, ax = plt.subplots(figsize=(8, 6)) + ax.set_title(r't vs $\gamma_{vp}$') # Fixed LaTeX syntax + + # Read data + t_exp, gamma_vp_exp = read_analytical_data() + t_sim, gamma_vp_sim = read_simulation_data() + + # Plot experimental data + ax.plot(t_exp, gamma_vp_exp, color="k", label="Experimental q", linewidth=2) + # Plot simulation data + ax.plot(t_sim, gamma_vp_sim, color="r", label="Simulation q", linewidth=2) + + # Set x-axis limit + ax.set_xlim(None, 4.69) + + # Additional plot settings + ax.set_xlabel(r'Shear Strain ($\gamma$)/%') + ax.set_ylabel('Differential Stress (Q-P)/MPa') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + ax.grid(True, alpha=0.3) # Add grid for better readability + + # Save figure + fig.savefig("q_gamma_compared_bottom.pdf", format="pdf", dpi=300, bbox_inches="tight") + plt.show() # Display the plot + +if __name__ == '__main__': + plot_figure() \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180729.py b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180729.py new file mode 100644 index 0000000..5cd78be --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180729.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt + +# plt.style.use('publication.mplstyle') # Comment out if style file doesn't exist +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_analytical_data(): + filename = "Lemaitre.csv" + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 2], unpack=True) + return t, gamma_vp + +def read_simulation_data(): + filename = "Lemaitre_csv.csv" # Replace with your actual filename + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 3], unpack=True) + return t, gamma_vp + +def plot_figure(): + fig, ax = plt.subplots(figsize=(8, 6)) + ax.set_title(r't vs $\gamma_{vp}$') # Fixed LaTeX syntax + + # Read data + t_exp, gamma_vp_exp = read_analytical_data() + t_sim, gamma_vp_sim = read_simulation_data() + + # Plot experimental data + ax.plot(t_exp, gamma_vp_exp, color="k", label="Experimental q", linewidth=2) + # Plot simulation data + ax.plot(t_sim, gamma_vp_sim, color="r", label="Simulation q", linewidth=2) + + # Set x-axis limit + ax.set_xlim(None, 4.69) + + # Additional plot settings + ax.set_xlabel(r'Shear Strain ($\gamma$)/%') + ax.set_ylabel('Differential Stress (Q-P)/MPa') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + ax.grid(True, alpha=0.3) # Add grid for better readability + + # Save figure + fig.savefig("q_gamma_compared_bottom.pdf", format="pdf", dpi=300, bbox_inches="tight") + plt.show() # Display the plot + +if __name__ == '__main__': + plot_figure() \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180744.py b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180744.py new file mode 100644 index 0000000..d0b670d --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180744.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt + +# plt.style.use('publication.mplstyle') # Comment out if style file doesn't exist +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_analytical_data(): + filename = "Lemaitre.csv" + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 2], unpack=True) + return t, gamma_vp + +def read_simulation_data(): + filename = "Lemaitre_csv.csv" # Replace with your actual filename + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 3], unpack=True) + return t, gamma_vp + +def plot_figure(): + fig, ax = plt.subplots(figsize=(8, 6)) + ax.set_title(r't vs $\gamma_{vp}$') # Fixed LaTeX syntax + + # Read data + t_exp, gamma_vp_exp = read_analytical_data() + t_sim, gamma_vp_sim = read_simulation_data() + + # Plot experimental data + ax.plot(t_exp, gamma_vp_exp, color="k", label="Experimental q", linewidth=2) + # Plot simulation data + ax.plot(t_sim, gamma_vp_sim, color="r", label="Simulation q", linewidth=2) + + # Set x-axis limit + ax.set_xlim(None, 1.0) + + # Additional plot settings + ax.set_xlabel(r'Shear Strain ($\gamma$)/%') + ax.set_ylabel('Differential Stress (Q-P)/MPa') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + ax.grid(True, alpha=0.3) # Add grid for better readability + + # Save figure + fig.savefig("q_gamma_compared_bottom.pdf", format="pdf", dpi=300, bbox_inches="tight") + plt.show() # Display the plot + +if __name__ == '__main__': + plot_figure() \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180745.py b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180745.py new file mode 100644 index 0000000..d0b670d --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180745.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt + +# plt.style.use('publication.mplstyle') # Comment out if style file doesn't exist +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_analytical_data(): + filename = "Lemaitre.csv" + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 2], unpack=True) + return t, gamma_vp + +def read_simulation_data(): + filename = "Lemaitre_csv.csv" # Replace with your actual filename + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 3], unpack=True) + return t, gamma_vp + +def plot_figure(): + fig, ax = plt.subplots(figsize=(8, 6)) + ax.set_title(r't vs $\gamma_{vp}$') # Fixed LaTeX syntax + + # Read data + t_exp, gamma_vp_exp = read_analytical_data() + t_sim, gamma_vp_sim = read_simulation_data() + + # Plot experimental data + ax.plot(t_exp, gamma_vp_exp, color="k", label="Experimental q", linewidth=2) + # Plot simulation data + ax.plot(t_sim, gamma_vp_sim, color="r", label="Simulation q", linewidth=2) + + # Set x-axis limit + ax.set_xlim(None, 1.0) + + # Additional plot settings + ax.set_xlabel(r'Shear Strain ($\gamma$)/%') + ax.set_ylabel('Differential Stress (Q-P)/MPa') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + ax.grid(True, alpha=0.3) # Add grid for better readability + + # Save figure + fig.savefig("q_gamma_compared_bottom.pdf", format="pdf", dpi=300, bbox_inches="tight") + plt.show() # Display the plot + +if __name__ == '__main__': + plot_figure() \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181033.py b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181033.py new file mode 100644 index 0000000..fc39240 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181033.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt + +# plt.style.use('publication.mplstyle') # Comment out if style file doesn't exist +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_analytical_data(): + filename = "Lemaitre.csv" + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 2], unpack=True) + return t, gamma_vp + +def read_simulation_data(): + filename = "Lemaitre_csv.csv" # Replace with your actual filename + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 3], unpack=True) + return t, gamma_vp + +def plot_figure(): + fig, ax = plt.subplots(figsize=(8, 6)) + ax.set_title(r't vs $\gamma_{vp}$') # Fixed LaTeX syntax + + # Read data + t_exp, gamma_vp_exp = read_analytical_data() + t_sim, gamma_vp_sim = read_simulation_data() + + # Plot experimental data + ax.plot(t_exp, gamma_vp_exp, color="k", label="Experimental q", linewidth=2) + # Plot simulation data + ax.plot(t_sim, gamma_vp_sim, color="r", label="Simulation q", linewidth=2) + + # Set x-axis limit + ax.set_xlim(None, 1.0) + + # Additional plot settings + ax.set_xlabel(r'Shear Strain ($\gamma$)/%') + ax.set_ylabel('Time (days)') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + ax.grid(True, alpha=0.3) # Add grid for better readability + + # Save figure + fig.savefig("simulation_vs_analytical_sol.pdf", format="pdf", dpi=300, bbox_inches="tight") + plt.show() # Display the plot + +if __name__ == '__main__': + plot_figure() \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181034.py b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181034.py new file mode 100644 index 0000000..fc39240 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181034.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt + +# plt.style.use('publication.mplstyle') # Comment out if style file doesn't exist +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_analytical_data(): + filename = "Lemaitre.csv" + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 2], unpack=True) + return t, gamma_vp + +def read_simulation_data(): + filename = "Lemaitre_csv.csv" # Replace with your actual filename + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 3], unpack=True) + return t, gamma_vp + +def plot_figure(): + fig, ax = plt.subplots(figsize=(8, 6)) + ax.set_title(r't vs $\gamma_{vp}$') # Fixed LaTeX syntax + + # Read data + t_exp, gamma_vp_exp = read_analytical_data() + t_sim, gamma_vp_sim = read_simulation_data() + + # Plot experimental data + ax.plot(t_exp, gamma_vp_exp, color="k", label="Experimental q", linewidth=2) + # Plot simulation data + ax.plot(t_sim, gamma_vp_sim, color="r", label="Simulation q", linewidth=2) + + # Set x-axis limit + ax.set_xlim(None, 1.0) + + # Additional plot settings + ax.set_xlabel(r'Shear Strain ($\gamma$)/%') + ax.set_ylabel('Time (days)') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + ax.grid(True, alpha=0.3) # Add grid for better readability + + # Save figure + fig.savefig("simulation_vs_analytical_sol.pdf", format="pdf", dpi=300, bbox_inches="tight") + plt.show() # Display the plot + +if __name__ == '__main__': + plot_figure() \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181035.py b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181035.py new file mode 100644 index 0000000..fc39240 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181035.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt + +# plt.style.use('publication.mplstyle') # Comment out if style file doesn't exist +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_analytical_data(): + filename = "Lemaitre.csv" + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 2], unpack=True) + return t, gamma_vp + +def read_simulation_data(): + filename = "Lemaitre_csv.csv" # Replace with your actual filename + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 3], unpack=True) + return t, gamma_vp + +def plot_figure(): + fig, ax = plt.subplots(figsize=(8, 6)) + ax.set_title(r't vs $\gamma_{vp}$') # Fixed LaTeX syntax + + # Read data + t_exp, gamma_vp_exp = read_analytical_data() + t_sim, gamma_vp_sim = read_simulation_data() + + # Plot experimental data + ax.plot(t_exp, gamma_vp_exp, color="k", label="Experimental q", linewidth=2) + # Plot simulation data + ax.plot(t_sim, gamma_vp_sim, color="r", label="Simulation q", linewidth=2) + + # Set x-axis limit + ax.set_xlim(None, 1.0) + + # Additional plot settings + ax.set_xlabel(r'Shear Strain ($\gamma$)/%') + ax.set_ylabel('Time (days)') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + ax.grid(True, alpha=0.3) # Add grid for better readability + + # Save figure + fig.savefig("simulation_vs_analytical_sol.pdf", format="pdf", dpi=300, bbox_inches="tight") + plt.show() # Display the plot + +if __name__ == '__main__': + plot_figure() \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181036.py b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181036.py new file mode 100644 index 0000000..fc39240 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181036.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt + +# plt.style.use('publication.mplstyle') # Comment out if style file doesn't exist +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_analytical_data(): + filename = "Lemaitre.csv" + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 2], unpack=True) + return t, gamma_vp + +def read_simulation_data(): + filename = "Lemaitre_csv.csv" # Replace with your actual filename + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 3], unpack=True) + return t, gamma_vp + +def plot_figure(): + fig, ax = plt.subplots(figsize=(8, 6)) + ax.set_title(r't vs $\gamma_{vp}$') # Fixed LaTeX syntax + + # Read data + t_exp, gamma_vp_exp = read_analytical_data() + t_sim, gamma_vp_sim = read_simulation_data() + + # Plot experimental data + ax.plot(t_exp, gamma_vp_exp, color="k", label="Experimental q", linewidth=2) + # Plot simulation data + ax.plot(t_sim, gamma_vp_sim, color="r", label="Simulation q", linewidth=2) + + # Set x-axis limit + ax.set_xlim(None, 1.0) + + # Additional plot settings + ax.set_xlabel(r'Shear Strain ($\gamma$)/%') + ax.set_ylabel('Time (days)') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + ax.grid(True, alpha=0.3) # Add grid for better readability + + # Save figure + fig.savefig("simulation_vs_analytical_sol.pdf", format="pdf", dpi=300, bbox_inches="tight") + plt.show() # Display the plot + +if __name__ == '__main__': + plot_figure() \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181044.py b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181044.py new file mode 100644 index 0000000..ad9dacc --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181044.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt + +# plt.style.use('publication.mplstyle') # Comment out if style file doesn't exist +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_analytical_data(): + filename = "Lemaitre.csv" + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 2], unpack=True) + return t, gamma_vp + +def read_simulation_data(): + filename = "Lemaitre_csv.csv" # Replace with your actual filename + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 3], unpack=True) + return t, gamma_vp + +def plot_figure(): + fig, ax = plt.subplots(figsize=(8, 6)) + ax.set_title(r't vs $\gamma_{vp}$') # Fixed LaTeX syntax + + # Read data + t_exp, gamma_vp_exp = read_analytical_data() + t_sim, gamma_vp_sim = read_simulation_data() + + # Plot experimental data + ax.plot(t_exp, gamma_vp_exp, color="k", label="Experimental q", linewidth=2) + # Plot simulation data + ax.plot(t_sim, gamma_vp_sim, color="r", label="Simulation q", linewidth=2) + + # Set x-axis limit + ax.set_xlim(None, 1.0) + + # Additional plot settings + ax.set_xlabel(r'Shear Strain ($\gamma_vp$)/%') + ax.set_ylabel('Time (days)') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + ax.grid(True, alpha=0.3) # Add grid for better readability + + # Save figure + fig.savefig("simulation_vs_analytical_sol.pdf", format="pdf", dpi=300, bbox_inches="tight") + plt.show() # Display the plot + +if __name__ == '__main__': + plot_figure() \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181045.py b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181045.py new file mode 100644 index 0000000..ad9dacc --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181045.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt + +# plt.style.use('publication.mplstyle') # Comment out if style file doesn't exist +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_analytical_data(): + filename = "Lemaitre.csv" + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 2], unpack=True) + return t, gamma_vp + +def read_simulation_data(): + filename = "Lemaitre_csv.csv" # Replace with your actual filename + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 3], unpack=True) + return t, gamma_vp + +def plot_figure(): + fig, ax = plt.subplots(figsize=(8, 6)) + ax.set_title(r't vs $\gamma_{vp}$') # Fixed LaTeX syntax + + # Read data + t_exp, gamma_vp_exp = read_analytical_data() + t_sim, gamma_vp_sim = read_simulation_data() + + # Plot experimental data + ax.plot(t_exp, gamma_vp_exp, color="k", label="Experimental q", linewidth=2) + # Plot simulation data + ax.plot(t_sim, gamma_vp_sim, color="r", label="Simulation q", linewidth=2) + + # Set x-axis limit + ax.set_xlim(None, 1.0) + + # Additional plot settings + ax.set_xlabel(r'Shear Strain ($\gamma_vp$)/%') + ax.set_ylabel('Time (days)') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + ax.grid(True, alpha=0.3) # Add grid for better readability + + # Save figure + fig.savefig("simulation_vs_analytical_sol.pdf", format="pdf", dpi=300, bbox_inches="tight") + plt.show() # Display the plot + +if __name__ == '__main__': + plot_figure() \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181119.py b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181119.py new file mode 100644 index 0000000..d2ebcbf --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181119.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt + +# plt.style.use('publication.mplstyle') # Comment out if style file doesn't exist +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_analytical_data(): + filename = "Lemaitre.csv" + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 2], unpack=True) + return t, gamma_vp + +def read_simulation_data(): + filename = "Lemaitre_csv.csv" # Replace with your actual filename + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 3], unpack=True) + return t, gamma_vp + +def plot_figure(): + fig, ax = plt.subplots(figsize=(8, 6)) + ax.set_title(r't vs $\gamma_{vp}$') # Fixed LaTeX syntax + + # Read data + t_exp, gamma_vp_exp = read_analytical_data() + t_sim, gamma_vp_sim = read_simulation_data() + + # Plot experimental data + ax.plot(t_exp, gamma_vp_exp, color="k", label="Experimental q", linewidth=2) + # Plot simulation data + ax.plot(t_sim, gamma_vp_sim, color="r", label="Simulation q", linewidth=2) + + # Set x-axis limit + ax.set_xlim(None, 1.0) + + # Additional plot settings + ax.set_ylabel(r'Shear Strain ($\gamma_{vp}$)/%') + ax.set_xlabel('Time (days)') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + ax.grid(True, alpha=0.3) # Add grid for better readability + + # Save figure + fig.savefig("simulation_vs_analytical_sol.pdf", format="pdf", dpi=300, bbox_inches="tight") + plt.show() # Display the plot + +if __name__ == '__main__': + plot_figure() \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181120.py b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181120.py new file mode 100644 index 0000000..d2ebcbf --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181120.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt + +# plt.style.use('publication.mplstyle') # Comment out if style file doesn't exist +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_analytical_data(): + filename = "Lemaitre.csv" + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 2], unpack=True) + return t, gamma_vp + +def read_simulation_data(): + filename = "Lemaitre_csv.csv" # Replace with your actual filename + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 3], unpack=True) + return t, gamma_vp + +def plot_figure(): + fig, ax = plt.subplots(figsize=(8, 6)) + ax.set_title(r't vs $\gamma_{vp}$') # Fixed LaTeX syntax + + # Read data + t_exp, gamma_vp_exp = read_analytical_data() + t_sim, gamma_vp_sim = read_simulation_data() + + # Plot experimental data + ax.plot(t_exp, gamma_vp_exp, color="k", label="Experimental q", linewidth=2) + # Plot simulation data + ax.plot(t_sim, gamma_vp_sim, color="r", label="Simulation q", linewidth=2) + + # Set x-axis limit + ax.set_xlim(None, 1.0) + + # Additional plot settings + ax.set_ylabel(r'Shear Strain ($\gamma_{vp}$)/%') + ax.set_xlabel('Time (days)') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + ax.grid(True, alpha=0.3) # Add grid for better readability + + # Save figure + fig.savefig("simulation_vs_analytical_sol.pdf", format="pdf", dpi=300, bbox_inches="tight") + plt.show() # Display the plot + +if __name__ == '__main__': + plot_figure() \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181404.py b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181404.py new file mode 100644 index 0000000..6ceb2a0 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181404.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt + +# plt.style.use('publication.mplstyle') # Comment out if style file doesn't exist +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_analytical_data(): + filename = "Lemaitre.csv" + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 2], unpack=True) + return t, gamma_vp + +def read_simulation_data(): + filename = "Lemaitre_csv.csv" # Replace with your actual filename + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 3], unpack=True) + return t, gamma_vp + +def plot_figure(): + fig, ax = plt.subplots(figsize=(8, 6)) + ax.set_title(r't vs $\gamma_{vp}$') # Fixed LaTeX syntax + + # Read data + t_analytical, gamma_vp_exp = read_analytical_data() + t_sim, gamma_vp_sim = read_simulation_data() + + # Plot experimental data + ax.plot(t_analytical, gamma_vp_exp, color="k", label="Analytical _ $\gamma_{vp}$", linewidth=2) + # Plot simulation data + ax.plot(t_sim, gamma_vp_sim, color="r", label="Simulation _ $\gamma_{vp}$", linewidth=2) + + # Set x-axis limit + ax.set_xlim(None, 1.0) + + # Additional plot settings + ax.set_ylabel(r'Shear Strain ($\gamma_{vp}$)/%') + ax.set_xlabel('Time (days)') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + ax.grid(True, alpha=0.3) # Add grid for better readability + + # Save figure + fig.savefig("simulation_vs_analytical_sol.pdf", format="pdf", dpi=300, bbox_inches="tight") + plt.show() # Display the plot + +if __name__ == '__main__': + plot_figure() \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181405.py b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181405.py new file mode 100644 index 0000000..6ceb2a0 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181405.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt + +# plt.style.use('publication.mplstyle') # Comment out if style file doesn't exist +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_analytical_data(): + filename = "Lemaitre.csv" + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 2], unpack=True) + return t, gamma_vp + +def read_simulation_data(): + filename = "Lemaitre_csv.csv" # Replace with your actual filename + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 3], unpack=True) + return t, gamma_vp + +def plot_figure(): + fig, ax = plt.subplots(figsize=(8, 6)) + ax.set_title(r't vs $\gamma_{vp}$') # Fixed LaTeX syntax + + # Read data + t_analytical, gamma_vp_exp = read_analytical_data() + t_sim, gamma_vp_sim = read_simulation_data() + + # Plot experimental data + ax.plot(t_analytical, gamma_vp_exp, color="k", label="Analytical _ $\gamma_{vp}$", linewidth=2) + # Plot simulation data + ax.plot(t_sim, gamma_vp_sim, color="r", label="Simulation _ $\gamma_{vp}$", linewidth=2) + + # Set x-axis limit + ax.set_xlim(None, 1.0) + + # Additional plot settings + ax.set_ylabel(r'Shear Strain ($\gamma_{vp}$)/%') + ax.set_xlabel('Time (days)') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + ax.grid(True, alpha=0.3) # Add grid for better readability + + # Save figure + fig.savefig("simulation_vs_analytical_sol.pdf", format="pdf", dpi=300, bbox_inches="tight") + plt.show() # Display the plot + +if __name__ == '__main__': + plot_figure() \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181437.py b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181437.py new file mode 100644 index 0000000..071c893 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181437.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt + +# plt.style.use('publication.mplstyle') # Comment out if style file doesn't exist +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_analytical_data(): + filename = "Lemaitre.csv" + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 2], unpack=True) + return t, gamma_vp + +def read_simulation_data(): + filename = "Lemaitre_csv.csv" # Replace with your actual filename + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 3], unpack=True) + return t, gamma_vp + +def plot_figure(): + fig, ax = plt.subplots(figsize=(8, 6)) + ax.set_title(r'$\gamma_{vp}$ vs Time (days)') # Fixed LaTeX syntax + + # Read data + t_analytical, gamma_vp_exp = read_analytical_data() + t_sim, gamma_vp_sim = read_simulation_data() + + # Plot experimental data + ax.plot(t_analytical, gamma_vp_exp, color="k", label="Analytical _ $\gamma_{vp}$", linewidth=2) + # Plot simulation data + ax.plot(t_sim, gamma_vp_sim, color="r", label="Simulation _ $\gamma_{vp}$", linewidth=2) + + # Set x-axis limit + ax.set_xlim(None, 1.0) + + # Additional plot settings + ax.set_ylabel(r'Shear Strain ($\gamma_{vp}$)/%') + ax.set_xlabel('Time (days)') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + ax.grid(True, alpha=0.3) # Add grid for better readability + + # Save figure + fig.savefig("simulation_vs_analytical_sol.pdf", format="pdf", dpi=300, bbox_inches="tight") + plt.show() # Display the plot + +if __name__ == '__main__': + plot_figure() \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181438.py b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181438.py new file mode 100644 index 0000000..071c893 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181438.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt + +# plt.style.use('publication.mplstyle') # Comment out if style file doesn't exist +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_analytical_data(): + filename = "Lemaitre.csv" + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 2], unpack=True) + return t, gamma_vp + +def read_simulation_data(): + filename = "Lemaitre_csv.csv" # Replace with your actual filename + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 3], unpack=True) + return t, gamma_vp + +def plot_figure(): + fig, ax = plt.subplots(figsize=(8, 6)) + ax.set_title(r'$\gamma_{vp}$ vs Time (days)') # Fixed LaTeX syntax + + # Read data + t_analytical, gamma_vp_exp = read_analytical_data() + t_sim, gamma_vp_sim = read_simulation_data() + + # Plot experimental data + ax.plot(t_analytical, gamma_vp_exp, color="k", label="Analytical _ $\gamma_{vp}$", linewidth=2) + # Plot simulation data + ax.plot(t_sim, gamma_vp_sim, color="r", label="Simulation _ $\gamma_{vp}$", linewidth=2) + + # Set x-axis limit + ax.set_xlim(None, 1.0) + + # Additional plot settings + ax.set_ylabel(r'Shear Strain ($\gamma_{vp}$)/%') + ax.set_xlabel('Time (days)') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + ax.grid(True, alpha=0.3) # Add grid for better readability + + # Save figure + fig.savefig("simulation_vs_analytical_sol.pdf", format="pdf", dpi=300, bbox_inches="tight") + plt.show() # Display the plot + +if __name__ == '__main__': + plot_figure() \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528182746.py b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528182746.py new file mode 100644 index 0000000..0d23bfc --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528182746.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt + +# plt.style.use('publication.mplstyle') # Comment out if style file doesn't exist +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_analytical_data(): + filename = "Lemaitre_analytical.csv" + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 1], unpack=True) + return t, gamma_vp + +def read_simulation_data(): + filename = "Lemaitre_csv.csv" # Replace with your actual filename + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 3], unpack=True) + return t, gamma_vp + +def plot_figure(): + fig, ax = plt.subplots(figsize=(8, 6)) + ax.set_title(r'$\gamma_{vp}$ vs Time (days)') # Fixed LaTeX syntax + + # Read data + t_analytical, gamma_vp_exp = read_analytical_data() + t_sim, gamma_vp_sim = read_simulation_data() + + # Plot experimental data + ax.plot(t_analytical, gamma_vp_exp, color="k", label="Analytical _ $\gamma_{vp}$", linewidth=2) + # Plot simulation data + ax.plot(t_sim, gamma_vp_sim, color="r", label="Simulation _ $\gamma_{vp}$", linewidth=2) + + # Set x-axis limit + ax.set_xlim(None, 1.0) + + # Additional plot settings + ax.set_ylabel(r'Shear Strain ($\gamma_{vp}$)/%') + ax.set_xlabel('Time (days)') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + ax.grid(True, alpha=0.3) # Add grid for better readability + + # Save figure + fig.savefig("simulation_vs_analytical_sol.pdf", format="pdf", dpi=300, bbox_inches="tight") + plt.show() # Display the plot + +if __name__ == '__main__': + plot_figure() \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528182747.py b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528182747.py new file mode 100644 index 0000000..0d23bfc --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528182747.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt + +# plt.style.use('publication.mplstyle') # Comment out if style file doesn't exist +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_analytical_data(): + filename = "Lemaitre_analytical.csv" + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 1], unpack=True) + return t, gamma_vp + +def read_simulation_data(): + filename = "Lemaitre_csv.csv" # Replace with your actual filename + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 3], unpack=True) + return t, gamma_vp + +def plot_figure(): + fig, ax = plt.subplots(figsize=(8, 6)) + ax.set_title(r'$\gamma_{vp}$ vs Time (days)') # Fixed LaTeX syntax + + # Read data + t_analytical, gamma_vp_exp = read_analytical_data() + t_sim, gamma_vp_sim = read_simulation_data() + + # Plot experimental data + ax.plot(t_analytical, gamma_vp_exp, color="k", label="Analytical _ $\gamma_{vp}$", linewidth=2) + # Plot simulation data + ax.plot(t_sim, gamma_vp_sim, color="r", label="Simulation _ $\gamma_{vp}$", linewidth=2) + + # Set x-axis limit + ax.set_xlim(None, 1.0) + + # Additional plot settings + ax.set_ylabel(r'Shear Strain ($\gamma_{vp}$)/%') + ax.set_xlabel('Time (days)') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + ax.grid(True, alpha=0.3) # Add grid for better readability + + # Save figure + fig.savefig("simulation_vs_analytical_sol.pdf", format="pdf", dpi=300, bbox_inches="tight") + plt.show() # Display the plot + +if __name__ == '__main__': + plot_figure() \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528182816.py b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528182816.py new file mode 100644 index 0000000..0d23bfc --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528182816.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt + +# plt.style.use('publication.mplstyle') # Comment out if style file doesn't exist +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_analytical_data(): + filename = "Lemaitre_analytical.csv" + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 1], unpack=True) + return t, gamma_vp + +def read_simulation_data(): + filename = "Lemaitre_csv.csv" # Replace with your actual filename + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 3], unpack=True) + return t, gamma_vp + +def plot_figure(): + fig, ax = plt.subplots(figsize=(8, 6)) + ax.set_title(r'$\gamma_{vp}$ vs Time (days)') # Fixed LaTeX syntax + + # Read data + t_analytical, gamma_vp_exp = read_analytical_data() + t_sim, gamma_vp_sim = read_simulation_data() + + # Plot experimental data + ax.plot(t_analytical, gamma_vp_exp, color="k", label="Analytical _ $\gamma_{vp}$", linewidth=2) + # Plot simulation data + ax.plot(t_sim, gamma_vp_sim, color="r", label="Simulation _ $\gamma_{vp}$", linewidth=2) + + # Set x-axis limit + ax.set_xlim(None, 1.0) + + # Additional plot settings + ax.set_ylabel(r'Shear Strain ($\gamma_{vp}$)/%') + ax.set_xlabel('Time (days)') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + ax.grid(True, alpha=0.3) # Add grid for better readability + + # Save figure + fig.savefig("simulation_vs_analytical_sol.pdf", format="pdf", dpi=300, bbox_inches="tight") + plt.show() # Display the plot + +if __name__ == '__main__': + plot_figure() \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528182817.py b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528182817.py new file mode 100644 index 0000000..0d23bfc --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528182817.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt + +# plt.style.use('publication.mplstyle') # Comment out if style file doesn't exist +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_analytical_data(): + filename = "Lemaitre_analytical.csv" + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 1], unpack=True) + return t, gamma_vp + +def read_simulation_data(): + filename = "Lemaitre_csv.csv" # Replace with your actual filename + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 3], unpack=True) + return t, gamma_vp + +def plot_figure(): + fig, ax = plt.subplots(figsize=(8, 6)) + ax.set_title(r'$\gamma_{vp}$ vs Time (days)') # Fixed LaTeX syntax + + # Read data + t_analytical, gamma_vp_exp = read_analytical_data() + t_sim, gamma_vp_sim = read_simulation_data() + + # Plot experimental data + ax.plot(t_analytical, gamma_vp_exp, color="k", label="Analytical _ $\gamma_{vp}$", linewidth=2) + # Plot simulation data + ax.plot(t_sim, gamma_vp_sim, color="r", label="Simulation _ $\gamma_{vp}$", linewidth=2) + + # Set x-axis limit + ax.set_xlim(None, 1.0) + + # Additional plot settings + ax.set_ylabel(r'Shear Strain ($\gamma_{vp}$)/%') + ax.set_xlabel('Time (days)') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + ax.grid(True, alpha=0.3) # Add grid for better readability + + # Save figure + fig.savefig("simulation_vs_analytical_sol.pdf", format="pdf", dpi=300, bbox_inches="tight") + plt.show() # Display the plot + +if __name__ == '__main__': + plot_figure() \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528182944.py b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528182944.py new file mode 100644 index 0000000..aa4ceb1 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528182944.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt + +# plt.style.use('publication.mplstyle') # Comment out if style file doesn't exist +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_analytical_data(): + filename = "Lemaitre_analytical.csv" + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 1], unpack=True) + return t, gamma_vp + +def read_simulation_data(): + filename = "Lemaitre_csv.csv" # Replace with your actual filename + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 3], unpack=True) + return t, gamma_vp + +def plot_figure(): + fig, ax = plt.subplots(figsize=(8, 6)) + ax.set_title(r'$\gamma_{vp}$ vs Time (days)') # Fixed LaTeX syntax + + # Read data + t_analytical, gamma_vp_exp = read_analytical_data() + t_sim, gamma_vp_sim = read_simulation_data() + + # Plot experimental data + ax.plot(t_analytical, gamma_vp_exp, color="k", label="Lemaitre_analytical _ $\gamma_{vp}$", linewidth=2) + # Plot simulation data + ax.plot(t_sim, gamma_vp_sim, color="r", label="Lemaitre_simulation _ $\gamma_{vp}$", linewidth=2) + + # Set x-axis limit + ax.set_xlim(None, 1.0) + + # Additional plot settings + ax.set_ylabel(r'Shear Strain ($\gamma_{vp}$)/%') + ax.set_xlabel('Time (days)') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + ax.grid(True, alpha=0.3) # Add grid for better readability + + # Save figure + fig.savefig("simulation_vs_analytical_sol.pdf", format="pdf", dpi=300, bbox_inches="tight") + plt.show() # Display the plot + +if __name__ == '__main__': + plot_figure() \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/.lh/.lhignore b/examples/viscoelasticity/Lemaitre/.lh/.lhignore new file mode 100644 index 0000000..1de5100 --- /dev/null +++ b/examples/viscoelasticity/Lemaitre/.lh/.lhignore @@ -0,0 +1,6 @@ +# list file to not track by the local-history extension. comment line starts with a '#' character +# each line describe a regular expression pattern (search for 'Javascript regex') +# it will relate to the workspace directory root. for example: +# '.*\.txt' ignores any file with 'txt' extension +# '/test/.*' ignores all the files under the 'test' directory +# '.*/test/.*' ignores all the files under any 'test' directory (even under sub-folders) diff --git a/examples/viscoelasticity/Lemaitre/Lemaitre.i b/examples/viscoelasticity/Lemaitre/Lemaitre.i index 1975a48..197efaa 100644 --- a/examples/viscoelasticity/Lemaitre/Lemaitre.i +++ b/examples/viscoelasticity/Lemaitre/Lemaitre.i @@ -2,22 +2,24 @@ # Note: Parameter A is set to zero to ensure the Munson-Dawson component is zero. # Also, volumetric part is set to false and parameter z is set to zero. # Parameters -# Units: stress in MPa, time in days, strain in m / m +# Units used for the simulation: stress in MPa, time in days, strain in m / m E = 6000 -nu = 0.44 +nu = 0.000044 alpha = 0.1 A2 = 1 n2 = 14.8 Ar = 1 +Tr = 289 +# parameters for Munson-Dawson part A1 = 1 n1 = 1 -A = 0.0 #0.001 +A = 0.0 n = 10 B = 0.0 m = 2.2195 -Tr = 289 -#P = 5 +P = 1 +# parameters for volumetric part z = 0.0 Nz = 0.0241 nz = 1.2644 @@ -159,12 +161,12 @@ mz = 1.028 [pressure_right] boundary = 'right' displacement_vars = 'disp_x disp_y disp_z' - value = 1.0 + value = 0.0 [] [pressure_top] boundary = 'top' displacement_vars = 'disp_x disp_y disp_z' - value = -1.0 + value = -2.0 [] [] [] @@ -175,7 +177,7 @@ mz = 1.028 displacements = 'disp_x disp_y disp_z' young_modulus = ${E} poisson_ratio = ${nu} - initial_stress = '-1.0 1.0 0.0' + initial_stress = '-${P} ${P} 0.0' inelastic_models = 'viscoelastic' [] [viscoelastic] @@ -237,8 +239,8 @@ mz = 1.028 type = Transient solve_type = 'NEWTON' start_time = 0.0 - end_time = 1 #10.0 - dt = 0.01 + end_time = 1 + dt = 0.0001 [] [Outputs] diff --git a/examples/viscoelasticity/Lemaitre/lubby2.i:Zone.Identifier b/examples/viscoelasticity/Lemaitre/Lemaitre_analytical.csv:Zone.Identifier similarity index 100% rename from examples/viscoelasticity/Lemaitre/lubby2.i:Zone.Identifier rename to examples/viscoelasticity/Lemaitre/Lemaitre_analytical.csv:Zone.Identifier diff --git a/examples/viscoelasticity/Lemaitre/Lemaitre_analytical/Lemaitre_analytical.py b/examples/viscoelasticity/Lemaitre/Lemaitre_analytical/Lemaitre_analytical.py index a2b2108..1fdc714 100644 --- a/examples/viscoelasticity/Lemaitre/Lemaitre_analytical/Lemaitre_analytical.py +++ b/examples/viscoelasticity/Lemaitre/Lemaitre_analytical/Lemaitre_analytical.py @@ -1,46 +1,43 @@ import numpy as np import matplotlib.pyplot as plt -from openpyxl import Workbook +import csv -def calculate_gamma_vp(t, A_t=1, T_r=1, T=1, q=2, A_2=1, alpha=0.1, beta=1.48): +def calculate_gamma_vp(t, A_r=1, T_r=289, T=289, q=2, A_2=1, alpha=0.1, beta=1.48): """Calculate the analytical solution for gamma_vp""" - exponent = A_t * ((1 / T_r) - (1 / T)) + exponent = A_r * ((1 / T_r) - (1 / T)) numerator = alpha * np.exp(exponent) denominator = alpha first_term = (numerator / denominator) ** alpha second_term = (q / A_2) ** beta - return first_term * second_term * (t ** alpha) + return (first_term * second_term * (t ** alpha)) * 1e-6 # 1e-6 factor added due to the numerical code's scaling # Time range from 0 to 1 with step 0.1 -t_values = np.arange(0, 1.1, 0.01) +t_values = np.arange(0, 1.0, 0.001) # Calculate gamma_vp for each time point gamma_vp_values = [calculate_gamma_vp(t) for t in t_values] -# --- Save to Excel --- -wb = Workbook() -ws = wb.active -ws.title = "Gamma_vp Results" -ws.append(["Time (t)", "Gamma_vp"]) -for t, gamma in zip(t_values, gamma_vp_values): - ws.append([t, gamma]) -wb.save("gamma_vp_results.xlsx") +# --- Save to CSV --- +with open('Lemaitre_analytical.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['Time (t)', 'Gamma_vp']) + for t, gamma in zip(t_values, gamma_vp_values): + writer.writerow([t, gamma]) # --- Create Plot --- plt.figure(figsize=(8, 5)) plt.plot(t_values, gamma_vp_values, 'b-', linewidth=2) -plt.title(r'$\gamma_{vp}$ vs Time (t)', fontsize=14) +plt.legend([r'$\gamma_{vp}$'], loc='upper left', fontsize=12) +plt.title(r'$\gamma_{vp}$ vs Time (days)', fontsize=14) plt.xlabel('Time (t)', fontsize=12) -plt.ylabel(r'$\gamma_{vp}$', fontsize=12) +plt.ylabel(r'$\gamma_{vp} (Pa)$', fontsize=12) plt.grid(True, linestyle='--', alpha=0.7) -plt.xticks(np.arange(0, 1.1, 0.1)) -plt.yticks(np.arange(0, 3.1, 0.1)) plt.tight_layout() # Save and show plot -plt.savefig('gamma_vp_plot.png', dpi=300) +plt.savefig('Lemaitre_analytical.png', dpi=300) plt.show() print("Results saved to:") -print("- Excel file: 'gamma_vp_results.xlsx'") -print("- Plot: 'gamma_vp_plot.png'") \ No newline at end of file +print("- CSV file: 'Lemaitre_analytical.csv'") +print("- Plot: 'Lemaitre_analytical.png'") \ No newline at end of file diff --git a/examples/viscoelasticity/Lemaitre/Lemaitre_analytical/gamma_vp_results.xlsx b/examples/viscoelasticity/Lemaitre/Lemaitre_analytical/gamma_vp_results.xlsx deleted file mode 100644 index 87d9c4215bc13584480e43abc5460a115e5a1329..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7199 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 Date: Thu, 29 May 2025 10:34:22 -0400 Subject: [PATCH 24/39] Cleaned Lemaitre example --- doc/content/media/lemaitre_strain.png | Bin 0 -> 44161 bytes .../.history/Lemaitre_20250527142730.i | 254 ------------------ .../.history/Lemaitre_20250528133255.i | 254 ------------------ .../.history/Lemaitre_20250528133256.i | 254 ------------------ .../.history/Lemaitre_20250528172043.i | 254 ------------------ .../.history/Lemaitre_20250528172044.i | 254 ------------------ .../.history/Lemaitre_20250528172734.i | 254 ------------------ .../.history/Lemaitre_20250528172735.i | 254 ------------------ .../.history/Lemaitre_20250528173715.i | 254 ------------------ .../.history/Lemaitre_20250528173716.i | 254 ------------------ .../.history/Lemaitre_20250528173755.i | 254 ------------------ .../.history/Lemaitre_20250528173756.i | 254 ------------------ .../.history/Lemaitre_20250528173812.i | 254 ------------------ .../.history/Lemaitre_20250528173813.i | 254 ------------------ .../.history/Lemaitre_20250528173814.i | 254 ------------------ .../.history/Lemaitre_20250528183435.i | 254 ------------------ .../.history/Lemaitre_20250528183436.i | 254 ------------------ .../.history/Lemaitre_20250528183651.i | 254 ------------------ .../.history/Lemaitre_20250528183652.i | 254 ------------------ .../.history/Lemaitre_20250528183735.i | 254 ------------------ .../.history/Lemaitre_20250528183736.i | 254 ------------------ .../.history/Lemaitre_20250528183737.i | 254 ------------------ .../.history/Lemaitre_20250528183746.i | 254 ------------------ .../.history/Lemaitre_20250528183747.i | 254 ------------------ .../.history/Lemaitre_20250528183758.i | 254 ------------------ .../Lemaitre_analytical_20250527142313.py | 46 ---- .../Lemaitre_analytical_20250528130109.py | 46 ---- .../Lemaitre_analytical_20250528130110.py | 46 ---- .../Lemaitre_analytical_20250528130323.py | 46 ---- .../Lemaitre_analytical_20250528130324.py | 46 ---- .../Lemaitre_analytical_20250528130458.py | 46 ---- .../Lemaitre_analytical_20250528130459.py | 46 ---- .../Lemaitre_analytical_20250528130524.py | 46 ---- .../Lemaitre_analytical_20250528130525.py | 46 ---- .../Lemaitre_analytical_20250528130550.py | 46 ---- .../Lemaitre_analytical_20250528130551.py | 46 ---- .../Lemaitre_analytical_20250528130653.py | 46 ---- .../Lemaitre_analytical_20250528130654.py | 46 ---- .../Lemaitre_analytical_20250528130730.py | 46 ---- .../Lemaitre_analytical_20250528130731.py | 46 ---- .../Lemaitre_analytical_20250528133756.py | 46 ---- .../Lemaitre_analytical_20250528133757.py | 46 ---- .../Lemaitre_analytical_20250528133837.py | 46 ---- .../Lemaitre_analytical_20250528133838.py | 46 ---- .../Lemaitre_analytical_20250528133859.py | 46 ---- .../Lemaitre_analytical_20250528133900.py | 46 ---- .../Lemaitre_analytical_20250528133922.py | 46 ---- .../Lemaitre_analytical_20250528133923.py | 46 ---- .../Lemaitre_analytical_20250528133924.py | 46 ---- .../Lemaitre_analytical_20250528133925.py | 46 ---- .../Lemaitre_analytical_20250528173303.py | 46 ---- .../Lemaitre_analytical_20250528173304.py | 46 ---- .../Lemaitre_analytical_20250528173444.py | 46 ---- .../Lemaitre_analytical_20250528173445.py | 46 ---- .../Lemaitre_analytical_20250528174048.py | 46 ---- .../Lemaitre_analytical_20250528174049.py | 46 ---- .../Lemaitre_analytical_20250528174222.py | 46 ---- .../Lemaitre_analytical_20250528174223.py | 46 ---- .../Lemaitre_analytical_20250528174235.py | 46 ---- .../Lemaitre_analytical_20250528174236.py | 46 ---- .../Lemaitre_analytical_20250528174437.py | 49 ---- .../Lemaitre_analytical_20250528174438.py | 49 ---- .../Lemaitre_analytical_20250528174519.py | 49 ---- .../Lemaitre_analytical_20250528174520.py | 49 ---- .../Lemaitre_analytical_20250528174546.py | 47 ---- .../Lemaitre_analytical_20250528174547.py | 47 ---- .../Lemaitre_analytical_20250528174850.py | 94 ------- .../Lemaitre_analytical_20250528174851.py | 94 ------- .../Lemaitre_analytical_20250528174930.py | 47 ---- .../Lemaitre_analytical_20250528174931.py | 47 ---- .../Lemaitre_analytical_20250528175122.py | 45 ---- .../Lemaitre_analytical_20250528175123.py | 45 ---- .../Lemaitre_analytical_20250528175315.py | 45 ---- .../Lemaitre_analytical_20250528175316.py | 45 ---- .../Lemaitre_analytical_20250528175333.py | 45 ---- .../Lemaitre_analytical_20250528175334.py | 45 ---- .../Lemaitre_analytical_20250528175426.py | 45 ---- .../Lemaitre_analytical_20250528175427.py | 45 ---- .../Lemaitre_analytical_20250528175448.py | 45 ---- .../Lemaitre_analytical_20250528175449.py | 45 ---- .../Lemaitre_analytical_20250528175507.py | 45 ---- .../Lemaitre_analytical_20250528175508.py | 45 ---- .../Lemaitre_analytical_20250528175520.py | 45 ---- .../Lemaitre_analytical_20250528175521.py | 45 ---- .../Lemaitre_analytical_20250528181550.py | 45 ---- .../Lemaitre_analytical_20250528181551.py | 45 ---- .../Lemaitre_analytical_20250528181755.py | 45 ---- .../Lemaitre_analytical_20250528181756.py | 45 ---- .../Lemaitre_analytical_20250528181757.py | 45 ---- .../Lemaitre_analytical_20250528181758.py | 45 ---- .../Lemaitre_analytical_20250528181839.py | 45 ---- .../Lemaitre_analytical_20250528181840.py | 45 ---- .../Lemaitre_analytical_20250528182157.py | 46 ---- .../Lemaitre_analytical_20250528182158.py | 46 ---- .../Lemaitre_analytical_20250528182254.py | 43 --- .../Lemaitre_analytical_20250528182255.py | 43 --- .../Lemaitre_analytical_20250528182311.py | 43 --- .../Lemaitre_analytical_20250528182312.py | 43 --- .../Lemaitre_analytical_20250528182339.py | 43 --- .../Lemaitre_analytical_20250528182340.py | 43 --- .../Lemaitre_analytical_20250528182343.py | 43 --- .../Lemaitre_analytical_20250528182344.py | 43 --- .../Lemaitre_analytical_20250528182434.py | 43 --- .../Lemaitre_analytical_20250528182435.py | 43 --- .../Lemaitre_analytical_20250528182448.py | 43 --- .../Lemaitre_analytical_20250528182449.py | 43 --- .../Lemaitre_analytical_20250528182505.py | 43 --- .../Lemaitre_analytical_20250528182506.py | 43 --- .../Lemaitre_analytical_20250528182551.py | 43 --- .../Lemaitre_analytical_20250528182552.py | 43 --- .../Lemaitre_analytical_20250528182602.py | 43 --- .../Lemaitre_analytical_20250528182603.py | 43 --- .../Lemaitre_analytical_20250528182628.py | 43 --- .../Lemaitre_analytical_20250528182629.py | 43 --- .../Lemaitre_analytical_20250528183320.py | 43 --- .../Lemaitre_analytical_20250528183321.py | 43 --- .../Lemaitre_analytical_20250528183518.py | 43 --- .../Lemaitre_analytical_20250528183519.py | 43 --- .../Lemaitre_analytical_20250528183645.py | 43 --- .../Lemaitre_analytical_20250528183646.py | 43 --- .../Lemaitre_analytical_20250528183648.py | 43 --- .../Lemaitre_analytical_20250528183649.py | 43 --- .../Lemaitre_analytical_20250528183654.py | 43 --- .../solution_compared_20250512112534.py | 43 --- .../solution_compared_20250528173528.py | 43 --- .../solution_compared_20250528173529.py | 43 --- .../solution_compared_20250528173555.py | 43 --- .../solution_compared_20250528173556.py | 43 --- .../solution_compared_20250528175803.py | 43 --- .../solution_compared_20250528175804.py | 43 --- .../solution_compared_20250528180220.py | 43 --- .../solution_compared_20250528180221.py | 43 --- .../solution_compared_20250528180222.py | 43 --- .../solution_compared_20250528180223.py | 43 --- .../solution_compared_20250528180338.py | 43 --- .../solution_compared_20250528180339.py | 43 --- .../solution_compared_20250528180449.py | 67 ----- .../solution_compared_20250528180450.py | 67 ----- .../solution_compared_20250528180728.py | 45 ---- .../solution_compared_20250528180729.py | 45 ---- .../solution_compared_20250528180744.py | 45 ---- .../solution_compared_20250528180745.py | 45 ---- .../solution_compared_20250528181033.py | 45 ---- .../solution_compared_20250528181034.py | 45 ---- .../solution_compared_20250528181035.py | 45 ---- .../solution_compared_20250528181036.py | 45 ---- .../solution_compared_20250528181044.py | 45 ---- .../solution_compared_20250528181045.py | 45 ---- .../solution_compared_20250528181119.py | 45 ---- .../solution_compared_20250528181120.py | 45 ---- .../solution_compared_20250528181404.py | 45 ---- .../solution_compared_20250528181405.py | 45 ---- .../solution_compared_20250528181437.py | 45 ---- .../solution_compared_20250528181438.py | 45 ---- .../solution_compared_20250528182746.py | 45 ---- .../solution_compared_20250528182747.py | 45 ---- .../solution_compared_20250528182816.py | 45 ---- .../solution_compared_20250528182817.py | 45 ---- .../solution_compared_20250528182944.py | 45 ---- .../viscoelasticity/Lemaitre/.lh/.lhignore | 6 - examples/viscoelasticity/Lemaitre/Lemaitre.i | 254 ------------------ .../Lemaitre_analytical.csv:Zone.Identifier | 0 .../Lemaitre_analytical.py | 43 --- .../Lemaitre/publication.mplstyle | 50 ---- .../Lemaitre/solution_compared.py | 45 ---- .../lemaitre.i} | 0 examples/viscoelasticity/lemaitre/lemaitre.py | 58 ++++ src/fvkernels/BVFVMultiPhasePressureDarcy.C | 6 +- src/fvkernels/BVFVMultiPhaseSaturationDarcy.C | 6 +- src/fvkernels/BVFVSinglePhaseDarcy.C | 6 +- 170 files changed, 67 insertions(+), 12652 deletions(-) create mode 100644 doc/content/media/lemaitre_strain.png delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250527142730.i delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528133255.i delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528133256.i delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528172043.i delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528172044.i delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528172734.i delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528172735.i delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528173715.i delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528173716.i delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528173755.i delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528173756.i delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528173812.i delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528173813.i delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528173814.i delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183435.i delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183436.i delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183651.i delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183652.i delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183735.i delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183736.i delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183737.i delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183746.i delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183747.i delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_20250528183758.i delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250527142313.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130109.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130110.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130323.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130324.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130458.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130459.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130524.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130525.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130550.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130551.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130653.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130654.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130730.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528130731.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133756.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133757.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133837.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133838.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133859.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133900.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133922.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133923.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133924.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528133925.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528173303.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528173304.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528173444.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528173445.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174048.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174049.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174222.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174223.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174235.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174236.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174437.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174438.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174519.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174520.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174546.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174547.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174850.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174851.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174930.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528174931.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175122.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175123.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175315.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175316.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175333.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175334.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175426.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175427.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175448.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175449.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175507.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175508.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175520.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528175521.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181550.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181551.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181755.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181756.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181757.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181758.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181839.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528181840.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182157.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182158.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182254.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182255.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182311.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182312.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182339.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182340.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182343.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182344.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182434.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182435.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182448.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182449.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182505.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182506.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182551.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182552.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182602.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182603.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182628.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528182629.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183320.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183321.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183518.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183519.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183645.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183646.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183648.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183649.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/Lemaitre_analytical/Lemaitre_analytical_20250528183654.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250512112534.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528173528.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528173529.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528173555.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528173556.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528175803.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528175804.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180220.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180221.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180222.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180223.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180338.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180339.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180449.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180450.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180728.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180729.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180744.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528180745.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181033.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181034.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181035.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181036.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181044.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181045.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181119.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181120.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181404.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181405.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181437.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528181438.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528182746.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528182747.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528182816.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528182817.py delete mode 100644 examples/viscoelasticity/Lemaitre/.history/solution_compared_20250528182944.py delete mode 100644 examples/viscoelasticity/Lemaitre/.lh/.lhignore delete mode 100644 examples/viscoelasticity/Lemaitre/Lemaitre.i delete mode 100644 examples/viscoelasticity/Lemaitre/Lemaitre_analytical.csv:Zone.Identifier delete mode 100644 examples/viscoelasticity/Lemaitre/Lemaitre_analytical/Lemaitre_analytical.py delete mode 100644 examples/viscoelasticity/Lemaitre/publication.mplstyle delete mode 100644 examples/viscoelasticity/Lemaitre/solution_compared.py rename examples/viscoelasticity/{Lemaitre/.history/Lemaitre_20250528183745.i => lemaitre/lemaitre.i} (100%) create mode 100644 examples/viscoelasticity/lemaitre/lemaitre.py diff --git a/doc/content/media/lemaitre_strain.png b/doc/content/media/lemaitre_strain.png new file mode 100644 index 0000000000000000000000000000000000000000..134d4ac617e970735802c2cc05ec3357bb298662 GIT binary patch literal 44161 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"fluid_mobility")), _lambda_neighbor(getNeighborADMaterialProperty("fluid_mobility")) { - if ((_var.faceInterpolationMethod() == Moose::FV::InterpMethod::SkewCorrectedAverage) && - (_tid == 0)) - adjustRMGhostLayers(std::max((unsigned short)(3), _pars.get("ghost_layers"))); + // if ((_var.faceInterpolationMethod() == Moose::FV::InterpMethod::SkewCorrectedAverage) && + // (_tid == 0)) + // adjustRMGhostLayers(std::max((unsigned short)(3), _pars.get("ghost_layers"))); } ADReal diff --git a/src/fvkernels/BVFVMultiPhaseSaturationDarcy.C b/src/fvkernels/BVFVMultiPhaseSaturationDarcy.C index d5a4d56..48e5f95 100644 --- a/src/fvkernels/BVFVMultiPhaseSaturationDarcy.C +++ b/src/fvkernels/BVFVMultiPhaseSaturationDarcy.C @@ -40,9 +40,9 @@ BVFVMultiPhaseSaturationDarcy::BVFVMultiPhaseSaturationDarcy(const InputParamete _D(getADMaterialProperty("diffusivity_saturation")), _D_neighbor(getNeighborADMaterialProperty("diffusivity_saturation")) { - if ((_var.faceInterpolationMethod() == Moose::FV::InterpMethod::SkewCorrectedAverage) && - (_tid == 0)) - adjustRMGhostLayers(std::max((unsigned short)(3), _pars.get("ghost_layers"))); + // if ((_var.faceInterpolationMethod() == Moose::FV::InterpMethod::SkewCorrectedAverage) && + // (_tid == 0)) + // adjustRMGhostLayers(std::max((unsigned short)(3), _pars.get("ghost_layers"))); } ADReal diff --git a/src/fvkernels/BVFVSinglePhaseDarcy.C b/src/fvkernels/BVFVSinglePhaseDarcy.C index 7463836..a8793dc 100644 --- a/src/fvkernels/BVFVSinglePhaseDarcy.C +++ b/src/fvkernels/BVFVSinglePhaseDarcy.C @@ -30,9 +30,9 @@ BVFVSinglePhaseDarcy::BVFVSinglePhaseDarcy(const InputParameters & parameters) _lambda(getADMaterialProperty("fluid_mobility")), _lambda_neighbor(getNeighborADMaterialProperty("fluid_mobility")) { - if ((_var.faceInterpolationMethod() == Moose::FV::InterpMethod::SkewCorrectedAverage) && - (_tid == 0)) - adjustRMGhostLayers(std::max((unsigned short)(3), _pars.get("ghost_layers"))); + // if ((_var.faceInterpolationMethod() == Moose::FV::InterpMethod::SkewCorrectedAverage) && + // (_tid == 0)) + // adjustRMGhostLayers(std::max((unsigned short)(3), _pars.get("ghost_layers"))); } ADReal From 5b04737c0c440da89bf8316c831ef6e97ddbe546 Mon Sep 17 00:00:00 2001 From: iyevugah Date: Thu, 29 May 2025 10:43:11 -0400 Subject: [PATCH 25/39] munson-dawson --- examples/viscoelasticity/MunsonD/MunsonD.i | 262 +++++++++++++++ .../MunsonD_analytical - Copy.py | 118 +++++++ ...nsonD_analytical - Copy.py:Zone.Identifier | 0 .../MunsonD_analytical/MunsonD_analytical.py | 108 +++++++ .../trash/MunsonD_analytical - Copy (2).py | 297 ++++++++++++++++++ .../trash/MunsonD_analytical - Copy.py | 287 +++++++++++++++++ ...unsonDawson_analytical.csv:Zone.Identifier | 0 .../MunsonD/solution_compared.py | 45 +++ .../solution_compared.py:Zone.Identifier | 0 9 files changed, 1117 insertions(+) create mode 100644 examples/viscoelasticity/MunsonD/MunsonD.i create mode 100644 examples/viscoelasticity/MunsonD/MunsonD_analytical/MunsonD_analytical - Copy.py create mode 100644 examples/viscoelasticity/MunsonD/MunsonD_analytical/MunsonD_analytical - Copy.py:Zone.Identifier create mode 100644 examples/viscoelasticity/MunsonD/MunsonD_analytical/MunsonD_analytical.py create mode 100644 examples/viscoelasticity/MunsonD/MunsonD_analytical/trash/MunsonD_analytical - Copy (2).py create mode 100644 examples/viscoelasticity/MunsonD/MunsonD_analytical/trash/MunsonD_analytical - Copy.py create mode 100644 examples/viscoelasticity/MunsonD/MunsonDawson_analytical.csv:Zone.Identifier create mode 100644 examples/viscoelasticity/MunsonD/solution_compared.py create mode 100644 examples/viscoelasticity/MunsonD/solution_compared.py:Zone.Identifier diff --git a/examples/viscoelasticity/MunsonD/MunsonD.i b/examples/viscoelasticity/MunsonD/MunsonD.i new file mode 100644 index 0000000..c6cb993 --- /dev/null +++ b/examples/viscoelasticity/MunsonD/MunsonD.i @@ -0,0 +1,262 @@ +# Input file for purely Lemaitre creep model based on RTL2020 model (Azabou et al. (2021)). +# Note: Parameter A is set to zero to ensure the Munson-Dawson component is zero. +# Also, volumetric part is set to false and parameter z is set to zero. +# Parameters +# Units: stress in MPa, time in days, strain in m / m + +E = 0.6 +nu = 0.000044 +alpha = 0.1 +A2 = 0.5 +n2 = 4 +Ar = 1 +Tr = 289 +# parameters for Munson-Dawson part +A1 = 0.3 +n1 = 3 +A = 0.5 +n = 5 +B = 0.05 +m = 5 +P = 1 +# parameters for volumetric part +z = 0.0 +Nz = 0.0241 +nz = 1.2644 +Mz = 0.024 +mz = 1.028 + +[Mesh] + type = GeneratedMesh + dim = 3 + nx = 1 + ny = 1 + nz = 2 + xmin = 0 + xmax = 1 + ymin = 0 + ymax = 1 + zmin = 0 + zmax = 0.1 +[] + +[Variables] + [disp_x] + order = FIRST + family = LAGRANGE + [] + [disp_y] + order = FIRST + family = LAGRANGE + [] + [disp_z] + order = FIRST + family = LAGRANGE + [] +[] + +[Kernels] + [stress_x] + type = BVStressDivergence + component = x + variable = disp_x + [] + [stress_y] + type = BVStressDivergence + component = y + variable = disp_y + [] + [stress_z] + type = BVStressDivergence + component = z + variable = disp_z + [] +[] + +[AuxVariables] + [temp] + order = FIRST + family = LAGRANGE + initial_condition = 289 + [] + [eqv_stress] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain_rate] + order = CONSTANT + family = MONOMIAL + [] + [strain_yy] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_R] + order = CONSTANT + family = MONOMIAL + [] +[] + +[AuxKernels] + [temp_aux] + type = ConstantAux + variable = temp + value = 289 + execute_on = 'TIMESTEP_END' + [] + [eqv_stress_aux] + type = BVMisesStressAux + variable = eqv_stress + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_aux] + type = BVEqvStrainAux + variable = eqv_strain + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_rate_aux] + type = BVEqvStrainRateAux + variable = eqv_strain_rate + execute_on = 'TIMESTEP_END' + [] + [strain_yy_aux] + type = BVStrainComponentAux + variable = strain_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_R_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_R + property = eqv_creep_strain_R + execute_on = 'TIMESTEP_END' + [] +[] + +[Functions] + [Q_loading] + type = ParsedFunction + expression = 'if(t<=15,10,5)' + [] +[] + +[BCs] + [no_x] + type = DirichletBC + variable = disp_x + boundary = 'left' + value = 0.0 + [] + [no_y] + type = DirichletBC + variable = disp_y + boundary = 'bottom' + value = 0.0 + [] + [no_z] + type = DirichletBC + variable = disp_z + boundary = 'front back' + value = 0.0 + [] + [BVPressure] + [pressure_right] + boundary = 'right' + displacement_vars = 'disp_x disp_y disp_z' + value = 0.0 + [] + [pressure_top] + boundary = 'top' + displacement_vars = 'disp_x disp_y disp_z' + function = Q_loading + # value = -10.0 + [] + [] +[] + +[Materials] + [elasticity] + type = BVMechanicalMaterial + displacements = 'disp_x disp_y disp_z' + young_modulus = ${E} + poisson_ratio = ${nu} + initial_stress = '-${P} ${P} 0.0' + inelastic_models = 'viscoelastic' + [] + [viscoelastic] + type = BVRTL2020ModelUpdate + volumetric = false + temperature = temp + Tr = ${Tr} + Ar = ${Ar} + alpha = ${alpha} + A1 = ${A1} + n1 = ${n1} + A2 = ${A2} + n2 = ${n2} + A = ${A} + n = ${n} + B = ${B} + m = ${m} + Nz = ${Nz} + nz = ${nz} + Mz = ${Mz} + mz = ${mz} + z = ${z} + [] +[] + +[Preconditioning] + active = 'hypre' + [hypre] + type = SMP + full = true + petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix' + petsc_options_iname = '-pc_type -pc_hypre_type + -snes_atol -snes_rtol -snes_stol -snes_max_it -snes_linesearch_type' + petsc_options_value = 'hypre boomeramg + 1.0e-10 1.0e-12 0 20 + basic' + [] +[] + +[Postprocessors] + [e] + type = ElementAverageValue + variable = eqv_strain + outputs = csv + [] + [e_rate] + type = ElementAverageValue + variable = eqv_strain_rate + outputs = csv + [] + [eqv_strain_R] + type = ElementAverageValue + variable = eqv_creep_strain_R + outputs = csv + [] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + start_time = 0.0 + end_time = 30.0 + dt = 0.01 +[] + +[Outputs] + perf_graph = true + execute_on = 'TIMESTEP_END' + print_linear_residuals = false + exodus = true + [csv] + type = CSV + [] +[] diff --git a/examples/viscoelasticity/MunsonD/MunsonD_analytical/MunsonD_analytical - Copy.py b/examples/viscoelasticity/MunsonD/MunsonD_analytical/MunsonD_analytical - Copy.py new file mode 100644 index 0000000..1732938 --- /dev/null +++ b/examples/viscoelasticity/MunsonD/MunsonD_analytical/MunsonD_analytical - Copy.py @@ -0,0 +1,118 @@ +import numpy as np +import matplotlib.pyplot as plt + +def calculate_gamma_R_bar(q, A1, n1): + return (q / A1) ** n1 + +def get_q_values(t, t_switch=15.0, q1=10.0, q2=5.0): + if t <= t_switch: + return q1 + else: + return q2 + +def solve_segment(t, gamma_R0, gamma_R_bar, A, B, n, m, t0, A1, A2, n1, n2, q_val): + # Determine regime + if gamma_R0 <= gamma_R_bar: + k = n + U = A * ((1 - gamma_R0/gamma_R_bar) ** (n-1)) + else: + k = m + U = B * ((gamma_R0/gamma_R_bar - 1) ** (m-1)) + + # Calculate Z + Z = (A1 ** n1) / (A2 ** n2) * (q_val ** (n2 - n1)) + + # Calculate V + dt = max(t - t0, 0) + V = (k - 1) * U * Z * dt + + # Calculate xi + if abs(k - 1) < 1e-10: + xi = 1 - np.exp(-V) + else: + V = max(V, 0) + xi = 1 - (1 / (1 + V)) ** (1/(k-1)) + + # Calculate gamma_R + gamma_R = gamma_R0 + (gamma_R_bar - gamma_R0) * xi + return gamma_R + +def analytical_solution(t_array, gamma_R0, A1, A2, n1, n2, A, B, n, m, t_switch=15.0, q1=10.0, q2=5.0): + gamma_R_results = [] + gamma_R_bar_results = [] + q_results = [] + + # Process first segment (t <= t_switch) + gamma_R_at_switch = gamma_R0 + + for i, t in enumerate(t_array): + q = get_q_values(t, t_switch, q1, q2) + gamma_R_bar = calculate_gamma_R_bar(q, A1, n1) + + if t <= t_switch: + # First segment + gamma_R = solve_segment(t, gamma_R0, gamma_R_bar, A, B, n, m, 0, A1, A2, n1, n2, q1) + if i == len([x for x in t_array if x <= t_switch]) - 1: + gamma_R_at_switch = gamma_R + else: + # Second segment + gamma_R = solve_segment(t, gamma_R_at_switch, gamma_R_bar, A, B, n, m, t_switch, A1, A2, n1, n2, q2) + + gamma_R_results.append(gamma_R) + gamma_R_bar_results.append(gamma_R_bar) + q_results.append(q) + + return gamma_R_results, gamma_R_bar_results, q_results + +def save_results_to_csv(t, gamma_R, gamma_R_bar, q, filename="MunsonDawson_analytical.csv"): + with open(filename, 'w') as f: + f.write("Time (t),Gamma_R,Gamma_R_bar,q_parameter\n") + for i in range(len(t)): + f.write(f"{t[i]},{gamma_R[i]},{gamma_R_bar[i]},{q[i]}\n") + print(f"Results saved to {filename}") + +def plot_solution(): + # Time range + t = np.linspace(0, 30, 1000) + + # Parameters + gamma_R0 = 0.0 + A1, A2 = 0.3, 0.5 + n1, n2 = 3.0, 4.0 + A, B = 0.5, 0.05 + n, m = 5.0, 5.0 + + # Calculate solution + gamma_R, gamma_R_bar, q = analytical_solution(t, gamma_R0, A1, A2, n1, n2, A, B, n, m) + + # Plot + plt.figure(figsize=(10, 6)) + plt.plot(t, gamma_R, 'b-', linewidth=2, label='γ_R(t)') + plt.plot(t, gamma_R_bar, 'r--', linewidth=2, label='γ̄_R(t)') + plt.axhline(y=gamma_R0, color='g', linestyle=':', label='γ_R0 = 0') + plt.axvline(x=15, color='k', linestyle='--', label='t = 15 (q switch)') + plt.title('Analytical Solution') + plt.xlabel('Time t') + plt.ylabel('γ_R, γ̄_R') + plt.legend() + plt.grid(True) + plt.show() + + # Save results + save_results_to_csv(t, gamma_R, gamma_R_bar, q) + + return t, gamma_R, gamma_R_bar, q + +# def analyze_solution(t, gamma_R, gamma_R_bar, q): +# print("Solution Analysis") +# print("="*50) +# print(f"Time range: {t[0]:.1f} to {t[-1]:.1f}") +# print(f"Initial γ_R: {gamma_R[0]:.4f}") +# print(f"Final γ_R: {gamma_R[-1]:.4f}") +# print(f"q for t ≤ 15: {q[0]:.1f}") +# print(f"q for t > 15: {q[-1]:.1f}") + +# Run the solution +if __name__ == "__main__": + t, gamma_R, gamma_R_bar, q = plot_solution() + # analyze_solution(t, gamma_R, gamma_R_bar, q) \ No newline at end of file diff --git a/examples/viscoelasticity/MunsonD/MunsonD_analytical/MunsonD_analytical - Copy.py:Zone.Identifier b/examples/viscoelasticity/MunsonD/MunsonD_analytical/MunsonD_analytical - Copy.py:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/examples/viscoelasticity/MunsonD/MunsonD_analytical/MunsonD_analytical.py b/examples/viscoelasticity/MunsonD/MunsonD_analytical/MunsonD_analytical.py new file mode 100644 index 0000000..a12bb9d --- /dev/null +++ b/examples/viscoelasticity/MunsonD/MunsonD_analytical/MunsonD_analytical.py @@ -0,0 +1,108 @@ +import numpy as np +import matplotlib.pyplot as plt + +def calculate_gamma_R_bar(q, A1, n1): + return (q / A1) ** n1 + +def get_q_values(t, t_switch=15.0, q1=10.0, q2=5.0): + if t <= t_switch: + return q1 + else: + return q2 + +def solve_segment(t, gamma_R0, gamma_R_bar, A, B, n, m, t0, A1, A2, n1, n2, q_val): + # Determine regime + if gamma_R0 <= gamma_R_bar: + k = n + U = A * ((1 - gamma_R0/gamma_R_bar) ** (n-1)) + else: + k = m + U = B * ((gamma_R0/gamma_R_bar - 1) ** (m-1)) + + # Calculate Z + Z = (A1 ** n1) / (A2 ** n2) * (q_val ** (n2 - n1)) + + # Calculate V + dt = max(t - t0, 0) + V = (k - 1) * U * Z * dt + + # Calculate xi + if abs(k - 1) < 1e-10: + xi = 1 - np.exp(-V) + else: + V = max(V, 0) + xi = 1 - (1 / (1 + V)) ** (1/(k-1)) + + # Calculate gamma_R + gamma_R = gamma_R0 + (gamma_R_bar - gamma_R0) * xi + return gamma_R + +def analytical_solution(t_array, gamma_R0, A1, A2, n1, n2, A, B, n, m, t_switch=15.0, q1=10.0, q2=5.0): + gamma_R_results = [] + gamma_R_bar_results = [] + q_results = [] + + # Process first segment (t <= t_switch) + gamma_R_at_switch = gamma_R0 + + for i, t in enumerate(t_array): + q = get_q_values(t, t_switch, q1, q2) + gamma_R_bar = calculate_gamma_R_bar(q, A1, n1) + + if t <= t_switch: + # First segment + gamma_R = solve_segment(t, gamma_R0, gamma_R_bar, A, B, n, m, 0, A1, A2, n1, n2, q1) + if i == len([x for x in t_array if x <= t_switch]) - 1: + gamma_R_at_switch = gamma_R + else: + # Second segment + gamma_R = solve_segment(t, gamma_R_at_switch, gamma_R_bar, A, B, n, m, t_switch, A1, A2, n1, n2, q2) + + gamma_R_results.append(gamma_R) + gamma_R_bar_results.append(gamma_R_bar) + q_results.append(q) + + return gamma_R_results, gamma_R_bar_results, q_results + +def save_results_to_csv(t, gamma_R, gamma_R_bar, q, filename="MunsonDawson_analytical.csv"): + with open(filename, 'w') as f: + f.write("Time (t),Gamma_R,Gamma_R_bar,q_parameter\n") + for i in range(len(t)): + f.write(f"{t[i]},{gamma_R[i]},{gamma_R_bar[i]},{q[i]}\n") + print(f"Results saved to {filename}") + +def plot_solution(): + # Time range + t = np.linspace(0, 30, 1000) + + # Parameters + gamma_R0 = 0.0 + A1, A2 = 0.3, 0.5 + n1, n2 = 3.0, 4.0 + A, B = 0.5, 0.05 + n, m = 5.0, 5.0 + + # Calculate solution + gamma_R, gamma_R_bar, q = analytical_solution(t, gamma_R0, A1, A2, n1, n2, A, B, n, m) + + # Plot + plt.figure(figsize=(10, 6)) + plt.plot(t, gamma_R, 'b-', linewidth=2, label='γ_R(t)') + plt.plot(t, gamma_R_bar, 'r--', linewidth=2, label='γ̄_R(t)') + plt.axhline(y=gamma_R0, color='g', linestyle=':', label='γ_R0 = 0') + plt.axvline(x=15, color='k', linestyle='--', label='t = 15 (q switch)') + plt.title('Analytical Solution') + plt.xlabel('Time t') + plt.ylabel('γ_R, γ̄_R') + plt.legend() + plt.grid(True) + plt.show() + + # Save results + save_results_to_csv(t, gamma_R, gamma_R_bar, q) + + return t, gamma_R, gamma_R_bar, q + +# Run the solution +if __name__ == "__main__": + t, gamma_R, gamma_R_bar, q = plot_solution() \ No newline at end of file diff --git a/examples/viscoelasticity/MunsonD/MunsonD_analytical/trash/MunsonD_analytical - Copy (2).py b/examples/viscoelasticity/MunsonD/MunsonD_analytical/trash/MunsonD_analytical - Copy (2).py new file mode 100644 index 0000000..3f6a292 --- /dev/null +++ b/examples/viscoelasticity/MunsonD/MunsonD_analytical/trash/MunsonD_analytical - Copy (2).py @@ -0,0 +1,297 @@ +import numpy as np +import matplotlib.pyplot as plt +from openpyxl import Workbook + +def calculate_gamma_R_bar(q, A1, n1): + """ + Calculate γ̄_R = (q/A1)^n1 + + Parameters: + ----------- + q : float or array + Time-dependent parameter q + A1 : float + Model parameter A1 + n1 : float + Exponent parameter n1 + + Returns: + -------- + gamma_R_bar : float or array + Target value γ̄_R + """ + return np.power(q / A1, n1) + +def get_q_values(t, t_switch=15.0, q1=10.0, q2=5.0): + """ + Get time-dependent q values. + + Parameters: + ----------- + t : array-like + Time points + t_switch : float + Time at which q switches from q1 to q2 + q1 : float + q value for t <= t_switch + q2 : float + q value for t > t_switch + + Returns: + -------- + q : array + Time-dependent q values + """ + t = np.asarray(t) + q = np.where(t <= t_switch, q1, q2) + return q + +def analytical_solution(t, gamma_R0, A1, A2, n1, n2, A, B, n, m, t0=0, + t_switch=15.0, q1=10.0, q2=5.0): + """ + Compute the improved analytical solution γ_R(t) with dynamic γ̄_R. + + Parameters: + ----------- + t : array-like + Time points + gamma_R0 : float + Initial value γ_R0 + A1 : float + Parameter A1 for γ̄_R calculation + A2 : float + Parameter A2 for Z calculation + n1 : float + Exponent n1 for γ̄_R calculation + n2 : float + Exponent n2 for Z calculation + A, B : float + Model parameters + n, m : float + Exponent parameters + t0 : float, optional + Initial time (default: 0) + t_switch : float, optional + Time at which q switches (default: 15.0) + q1, q2 : float, optional + q values before and after switch (default: 10.0, 5.0) + + Returns: + -------- + gamma_R : array + Solution γ_R(t) at time points t + gamma_R_bar : array + Time-dependent target values γ̄_R(t) + q : array + Time-dependent q values + """ + + t = np.asarray(t) + + # Get time-dependent q values + q = get_q_values(t, t_switch, q1, q2) + + # Calculate time-dependent γ̄_R + gamma_R_bar = calculate_gamma_R_bar(q, A1, n1) + + # Initialize solution array + gamma_R = np.zeros_like(t) + + # Handle each time segment separately due to discontinuity at t_switch + # Segment 1: t <= t_switch + mask1 = t <= t_switch + if np.any(mask1): + t1 = t[mask1] + gamma_R_bar1 = gamma_R_bar[mask1][0] # Constant in this segment + q1_val = q[mask1][0] # q value for this segment + gamma_R[mask1] = solve_segment(t1, gamma_R0, gamma_R_bar1, A, B, n, m, t0, + A1, A2, n1, n2, q1_val) + + # Segment 2: t > t_switch + mask2 = t > t_switch + if np.any(mask2): + t2 = t[mask2] + gamma_R_bar2 = gamma_R_bar[mask2][0] # Constant in this segment + q2_val = q[mask2][0] # q value for this segment + + # Initial condition for second segment is the value at t_switch + if np.any(mask1): + gamma_R0_seg2 = gamma_R[mask1][-1] + else: + # If no previous segment, use original initial condition + gamma_R0_seg2 = gamma_R0 + + gamma_R[mask2] = solve_segment(t2, gamma_R0_seg2, gamma_R_bar2, A, B, n, m, t_switch, + A1, A2, n1, n2, q2_val) + + return gamma_R, gamma_R_bar, q + +def solve_segment(t, gamma_R0, gamma_R_bar, A, B, n, m, t0, A1, A2, n1, n2, q_val): + """ + Solve the analytical solution for a single segment with constant γ̄_R. + + Parameters: + ----------- + t : array-like + Time points for this segment + gamma_R0 : float + Initial value for this segment + gamma_R_bar : float + Constant target value for this segment + A, B, n, m : float + Model parameters + t0 : float + Initial time for this segment + A1, A2 : float + Parameters for Z calculation + n1, n2 : float + Exponents for Z calculation + q_val : float + Constant q value for this segment + + Returns: + -------- + gamma_R : array + Solution for this segment + """ + + t = np.asarray(t) + + # Determine regime based on γ_R0 vs γ̄_R + if gamma_R0 <= gamma_R_bar: + # Case: γ_R0 ≤ γ̄_R (growth) + k = n + U = A * np.power(1 - gamma_R0/gamma_R_bar, n-1) + else: + # Case: γ_R0 ≥ γ̄_R (decay) + k = m + U = B * np.power(gamma_R0/gamma_R_bar - 1, m-1) + + # Calculate Z - constant for this segment + Z = (np.power(A1, n1) / np.power(A2, n2)) * np.power(q_val, (n2 - n1)) + + # Calculate V(t - t0) - simplified form + dt = np.maximum(t - t0, 0) + V = (k - 1) * U * Z * dt + + # Handle case where k is close to 1 + if np.abs(k - 1) < 1e-10: + # For k≈1, use exponential form + xi = 1 - np.exp(-V) + else: + # Standard case: ξ(t) = 1 - (1/(1+V))^(1/(k-1)) + # Ensure V is positive to avoid numerical issues + V = np.maximum(V, 0) + xi = 1 - np.power(1 / (1 + V), 1/(k-1)) + + # Calculate γ_R(t) using equation (17) + gamma_R = gamma_R0 + (gamma_R_bar - gamma_R0) * xi + + return gamma_R + +def save_results_to_excel(t, gamma_R, gamma_R_bar, q, filename="gamma_R_results.xlsx"): + """ + Save the analysis results to an Excel file. + + Parameters: + ----------- + t : array + Time values + gamma_R : array + Gamma_R values + gamma_R_bar : array + Gamma_R_bar values (target values) + q : array + q parameter values + filename : str + Output Excel filename + """ + # --- Save to Excel --- + wb = Workbook() + ws = wb.active + ws.title = "Gamma_R Results" + + # Add headers + ws.append(["Time (t)", "Gamma_R", "Gamma_R_bar", "q_parameter"]) + + # Add data rows + for t_val, gamma_r_val, gamma_r_bar_val, q_val in zip(t, gamma_R, gamma_R_bar, q): + ws.append([float(t_val), float(gamma_r_val), float(gamma_r_bar_val), float(q_val)]) + + # Save the workbook + wb.save(filename) + print(f"Results saved to {filename}") + +def plot_improved_solution(): + """ + Plot the improved analytical solution with dynamic parameters. + """ + # Time range from 0 to 30 + t = np.linspace(0, 30, 1000) + + # Parameters + gamma_R0 = 0.0 + A1, A2 = 0.3, 0.5 + n1, n2 = 3.0, 4.0 + A, B = 0.5, 0.05 + n, m = 5.0, 5.0 + + # Calculate solution + gamma_R, gamma_R_bar, q = analytical_solution( + t, gamma_R0, A1, A2, n1, n2, A, B, n, m, + t_switch=15.0, q1=10.0, q2=5.0 + ) + + # Create main plot only + plt.figure(figsize=(10, 6)) + plt.plot(t, gamma_R, 'b-', linewidth=2, label='γ_R(t)') + plt.plot(t, gamma_R_bar, 'r--', linewidth=2, label='γ̄_R(t) = (q/A₁)^n₁') + plt.axhline(y=gamma_R0, color='g', linestyle=':', alpha=0.7, label='γ_R0 = 0') + plt.axvline(x=15, color='k', linestyle='--', alpha=0.5, label='t = 15 (q switch)') + plt.title('Analytical Solution: γ_R(t) and γ̄_R(t)', fontsize=14) + plt.xlabel('Time t') + plt.ylabel('γ_R, γ̄_R') + plt.legend() + plt.grid(True, alpha=0.3) + plt.tight_layout() + plt.show() + + # Save results to Excel + save_results_to_excel(t, gamma_R, gamma_R_bar, q) + + return t, gamma_R, gamma_R_bar, q + +def analyze_solution_properties(t, gamma_R, gamma_R_bar, q): + """ + Analyze key properties of the solution. + """ + print("Solution Analysis") + print("="*50) + print(f"Time range: {t[0]:.1f} to {t[-1]:.1f}") + print(f"Initial γ_R: {gamma_R[0]:.4f}") + print(f"Final γ_R: {gamma_R[-1]:.4f}") + print(f"γ̄_R at t=0: {gamma_R_bar[0]:.4f}") + print(f"γ̄_R at t=15⁻: {gamma_R_bar[t <= 15][-1]:.4f}") + print(f"γ̄_R at t=15⁺: {gamma_R_bar[t > 15][0]:.4f}") + print(f"γ̄_R at t=30: {gamma_R_bar[-1]:.4f}") + + # Find discontinuity magnitude + idx_switch = np.where(t > 15)[0][0] + gamma_R_jump = gamma_R_bar[idx_switch] - gamma_R_bar[idx_switch-1] + print(f"γ̄_R discontinuity at t=15: {gamma_R_jump:.4f}") + + # Check if solution reaches equilibrium + final_diff = abs(gamma_R[-1] - gamma_R_bar[-1]) + print(f"Final |γ_R - γ̄_R|: {final_diff:.4f}") + + print("\nq parameter switch:") + print(f"q for t ≤ 15: {q[0]:.1f}") + print(f"q for t > 15: {q[-1]:.1f}") + +# Example usage and demonstration +if __name__ == "__main__": + # Run the improved solution + t, gamma_R, gamma_R_bar, q = plot_improved_solution() + + # Analyze the solution + analyze_solution_properties(t, gamma_R, gamma_R_bar, q) \ No newline at end of file diff --git a/examples/viscoelasticity/MunsonD/MunsonD_analytical/trash/MunsonD_analytical - Copy.py b/examples/viscoelasticity/MunsonD/MunsonD_analytical/trash/MunsonD_analytical - Copy.py new file mode 100644 index 0000000..15b5cac --- /dev/null +++ b/examples/viscoelasticity/MunsonD/MunsonD_analytical/trash/MunsonD_analytical - Copy.py @@ -0,0 +1,287 @@ +import numpy as np +import matplotlib.pyplot as plt + +def calculate_gamma_R_bar(q, A1, n1): + """ + Calculate γ̄_R = (q/A1)^n1 + + Parameters: + ----------- + q : float or array + Time-dependent parameter q + A1 : float + Model parameter A1 + n1 : float + Exponent parameter n1 + + Returns: + -------- + gamma_R_bar : float or array + Target value γ̄_R + """ + return np.power(q / A1, n1) + +def get_q_values(t, t_switch=15.0, q1=10.0, q2=5.0): + """ + Get time-dependent q values. + + Parameters: + ----------- + t : array-like + Time points + t_switch : float + Time at which q switches from q1 to q2 + q1 : float + q value for t <= t_switch + q2 : float + q value for t > t_switch + + Returns: + -------- + q : array + Time-dependent q values + """ + t = np.asarray(t) + q = np.where(t <= t_switch, q1, q2) + return q + +def analytical_solution_improved(t, gamma_R0, A1, n1, A, B, n, m, t0=0, + t_switch=15.0, q1=10.0, q2=5.0): + """ + Compute the improved analytical solution γ_R(t) with dynamic γ̄_R. + + Parameters: + ----------- + t : array-like + Time points + gamma_R0 : float + Initial value γ_R0 + A1 : float + Parameter A1 for γ̄_R calculation + n1 : float + Exponent n1 for γ̄_R calculation + A, B : float + Model parameters + n, m : float + Exponent parameters + t0 : float, optional + Initial time (default: 0) + t_switch : float, optional + Time at which q switches (default: 15.0) + q1, q2 : float, optional + q values before and after switch (default: 10.0, 5.0) + + Returns: + -------- + gamma_R : array + Solution γ_R(t) at time points t + gamma_R_bar : array + Time-dependent target values γ̄_R(t) + q : array + Time-dependent q values + """ + + t = np.asarray(t) + + # Get time-dependent q values + q = get_q_values(t, t_switch, q1, q2) + + # Calculate time-dependent γ̄_R + gamma_R_bar = calculate_gamma_R_bar(q, A1, n1) + + # Initialize solution array + gamma_R = np.zeros_like(t) + + # Handle each time segment separately due to discontinuity at t_switch + # Segment 1: t <= t_switch + mask1 = t <= t_switch + if np.any(mask1): + t1 = t[mask1] + gamma_R_bar1 = gamma_R_bar[mask1][0] # Constant in this segment + gamma_R[mask1] = solve_segment(t1, gamma_R0, gamma_R_bar1, A, B, n, m, t0) + + # Segment 2: t > t_switch + mask2 = t > t_switch + if np.any(mask2): + t2 = t[mask2] + gamma_R_bar2 = gamma_R_bar[mask2][0] # Constant in this segment + + # Initial condition for second segment is the value at t_switch + if np.any(mask1): + gamma_R0_seg2 = gamma_R[mask1][-1] + else: + # If no previous segment, use original initial condition + gamma_R0_seg2 = gamma_R0 + + gamma_R[mask2] = solve_segment(t2, gamma_R0_seg2, gamma_R_bar2, A, B, n, m, t_switch) + + return gamma_R, gamma_R_bar, q + +def solve_segment(t, gamma_R0, gamma_R_bar, A, B, n, m, t0): + """ + Solve the analytical solution for a single segment with constant γ̄_R. + + Parameters: + ----------- + t : array-like + Time points for this segment + gamma_R0 : float + Initial value for this segment + gamma_R_bar : float + Constant target value for this segment + A, B, n, m : float + Model parameters + t0 : float + Initial time for this segment + + Returns: + -------- + gamma_R : array + Solution for this segment + """ + + t = np.asarray(t) + + # Determine regime based on γ_R0 vs γ̄_R + if gamma_R0 <= gamma_R_bar: + # Case: γ_R0 ≤ γ̄_R (growth) + k = n + U = A * np.power(1 - gamma_R0/gamma_R_bar, n-1) + else: + # Case: γ_R0 ≥ γ̄_R (decay) + k = m + U = B * np.power(gamma_R0/gamma_R_bar - 1, m-1) + + # Calculate V(t - t0) - simplified form + # Assuming V = (k-1)U * (t-t0) for this implementation + dt = np.maximum(t - t0, 0) + V = (k - 1) * U * dt + + # Handle case where k is close to 1 + if np.abs(k - 1) < 1e-10: + # For k≈1, use exponential form + xi = 1 - np.exp(-V) + else: + # Standard case: ξ(t) = 1 - (1/(1+V))^(1/(k-1)) + xi = 1 - np.power(1 / (1 + V), 1/(k-1)) + + # Calculate γ_R(t) using equation (17) + gamma_R = gamma_R0 + (gamma_R_bar - gamma_R0) * xi + + return gamma_R + +def plot_improved_solution(): + """ + Plot the improved analytical solution with dynamic parameters. + """ + # Time range from 0 to 30 + t = np.linspace(0, 30, 1000) + + # Parameters + gamma_R0 = 0.1 + A1 = 2.0 + n1 = 1.5 + A, B = 1.0, 1.0 + n, m = 2.0, 2.0 + + # Calculate solution + gamma_R, gamma_R_bar, q = analytical_solution_improved( + t, gamma_R0, A1, n1, A, B, n, m, + t_switch=15.0, q1=10.0, q2=5.0 + ) + + # Create comprehensive plot + fig, axes = plt.subplots(2, 2, figsize=(15, 12)) + fig.suptitle('Improved Analytical Solution with Dynamic Parameters', fontsize=16) + + # Main solution plot + ax = axes[0, 0] + ax.plot(t, gamma_R, 'b-', linewidth=2, label='γ_R(t)') + ax.plot(t, gamma_R_bar, 'r--', linewidth=2, label='γ̄_R(t) = (q/A₁)^n₁') + ax.axhline(y=gamma_R0, color='g', linestyle=':', alpha=0.7, label='γ_R0') + ax.axvline(x=15, color='k', linestyle='--', alpha=0.5, label='t = 15 (q switch)') + ax.set_title('Main Solution: γ_R(t) and γ̄_R(t)') + ax.set_xlabel('Time t') + ax.set_ylabel('γ_R, γ̄_R') + ax.legend() + ax.grid(True, alpha=0.3) + + # q parameter evolution + ax = axes[0, 1] + ax.plot(t, q, 'g-', linewidth=2, label='q(t)') + ax.axvline(x=15, color='k', linestyle='--', alpha=0.5, label='t = 15') + ax.set_title('Parameter q(t) Evolution') + ax.set_xlabel('Time t') + ax.set_ylabel('q') + ax.legend() + ax.grid(True, alpha=0.3) + ax.set_ylim([4, 11]) + + # Phase portrait style plot + ax = axes[1, 0] + ax.plot(gamma_R_bar, gamma_R, 'purple', linewidth=2, label='Solution trajectory') + ax.plot(gamma_R_bar[0], gamma_R[0], 'go', markersize=8, label='Start') + ax.plot(gamma_R_bar[-1], gamma_R[-1], 'ro', markersize=8, label='End') + # Add diagonal line y=x + min_val = min(np.min(gamma_R_bar), np.min(gamma_R)) + max_val = max(np.max(gamma_R_bar), np.max(gamma_R)) + ax.plot([min_val, max_val], [min_val, max_val], 'k--', alpha=0.5, label='γ_R = γ̄_R') + ax.set_title('Phase Portrait: γ_R vs γ̄_R') + ax.set_xlabel('γ̄_R(t)') + ax.set_ylabel('γ_R(t)') + ax.legend() + ax.grid(True, alpha=0.3) + + # Parameter sensitivity analysis + ax = axes[1, 1] + for A1_val in [1.5, 2.0, 2.5]: + gamma_R_sens, _, _ = analytical_solution_improved( + t, gamma_R0, A1_val, n1, A, B, n, m + ) + ax.plot(t, gamma_R_sens, linewidth=2, label=f'A₁ = {A1_val}') + ax.axvline(x=15, color='k', linestyle='--', alpha=0.5, label='t = 15') + ax.set_title('Sensitivity to Parameter A₁') + ax.set_xlabel('Time t') + ax.set_ylabel('γ_R(t)') + ax.legend() + ax.grid(True, alpha=0.3) + + plt.tight_layout() + plt.show() + + return t, gamma_R, gamma_R_bar, q + +def analyze_solution_properties(t, gamma_R, gamma_R_bar, q): + """ + Analyze key properties of the solution. + """ + print("Solution Analysis") + print("="*50) + print(f"Time range: {t[0]:.1f} to {t[-1]:.1f}") + print(f"Initial γ_R: {gamma_R[0]:.4f}") + print(f"Final γ_R: {gamma_R[-1]:.4f}") + print(f"γ̄_R at t=0: {gamma_R_bar[0]:.4f}") + print(f"γ̄_R at t=15⁻: {gamma_R_bar[t <= 15][-1]:.4f}") + print(f"γ̄_R at t=15⁺: {gamma_R_bar[t > 15][0]:.4f}") + print(f"γ̄_R at t=30: {gamma_R_bar[-1]:.4f}") + + # Find discontinuity magnitude + idx_switch = np.where(t > 15)[0][0] + gamma_R_jump = gamma_R_bar[idx_switch] - gamma_R_bar[idx_switch-1] + print(f"γ̄_R discontinuity at t=15: {gamma_R_jump:.4f}") + + # Check if solution reaches equilibrium + final_diff = abs(gamma_R[-1] - gamma_R_bar[-1]) + print(f"Final |γ_R - γ̄_R|: {final_diff:.4f}") + + print("\nq parameter switch:") + print(f"q for t ≤ 15: {q[0]:.1f}") + print(f"q for t > 15: {q[-1]:.1f}") + +# Example usage and demonstration +if __name__ == "__main__": + # Run the improved solution + t, gamma_R, gamma_R_bar, q = plot_improved_solution() + + # Analyze the solution + analyze_solution_properties(t, gamma_R, gamma_R_bar, q) \ No newline at end of file diff --git a/examples/viscoelasticity/MunsonD/MunsonDawson_analytical.csv:Zone.Identifier b/examples/viscoelasticity/MunsonD/MunsonDawson_analytical.csv:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/examples/viscoelasticity/MunsonD/solution_compared.py b/examples/viscoelasticity/MunsonD/solution_compared.py new file mode 100644 index 0000000..f4fbe1f --- /dev/null +++ b/examples/viscoelasticity/MunsonD/solution_compared.py @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt + +# plt.style.use('publication.mplstyle') # Comment out if style file doesn't exist +plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text + +def read_analytical_data(): + filename = "MunsonDawson_analytical.csv" + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 4], unpack=True) + return t, gamma_vp + +def read_simulation_data(): + filename = "MunsonD_csv.csv" # Replace with your actual filename + t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 3], unpack=True) + return t, gamma_vp + +def plot_figure(): + fig, ax = plt.subplots(figsize=(8, 6)) + ax.set_title(r'$\gamma_{vp}$ vs Time (days)') # Fixed LaTeX syntax + + # Read data + t_analytical, gamma_vp_exp = read_analytical_data() + t_sim, gamma_vp_sim = read_simulation_data() + + # Plot experimental data + ax.plot(t_analytical, gamma_vp_exp, color="k", label="MunsonDawson_analytical _ $\gamma_{vp}$", linewidth=2) + # Plot simulation data + ax.plot(t_sim, gamma_vp_sim, color="r", label="Munson_Dawson_simulation _ $\gamma_{vp}$", linewidth=2) + + # Set x-axis limit + ax.set_xlim(None, None) # Automatically adjust x-axis limits + + # Additional plot settings + ax.set_ylabel(r'Shear Strain ($\gamma_{vp}$)/%') + ax.set_xlabel('Time (days)') + # ax.set_yscale('log') # Uncomment if log scale is desired + ax.legend() + ax.grid(True, alpha=0.3) # Add grid for better readability + + # Save figure + fig.savefig("simulation_vs_analytical_sol.pdf", format="pdf", dpi=300, bbox_inches="tight") + plt.show() # Display the plot + +if __name__ == '__main__': + plot_figure() \ No newline at end of file diff --git a/examples/viscoelasticity/MunsonD/solution_compared.py:Zone.Identifier b/examples/viscoelasticity/MunsonD/solution_compared.py:Zone.Identifier new file mode 100644 index 0000000..e69de29 From 2896fd5885e4ea1b0dbd39f6b8a9d860a943512f Mon Sep 17 00:00:00 2001 From: Antoine Jacquey Date: Fri, 30 May 2025 17:05:17 -0400 Subject: [PATCH 26/39] Changed power function and spacing --- examples/viscoelasticity/lemaitre/lemaitre.py | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/examples/viscoelasticity/lemaitre/lemaitre.py b/examples/viscoelasticity/lemaitre/lemaitre.py index 502b9a2..dfb8260 100644 --- a/examples/viscoelasticity/lemaitre/lemaitre.py +++ b/examples/viscoelasticity/lemaitre/lemaitre.py @@ -15,7 +15,7 @@ beta = 1.48 def analyticalSolution(t): - return 1.0e-02 * np.pow(q / A_2, beta) * np.pow(t, alpha) + return 1.0e-02 * np.power(q / A_2, beta) * np.power(t, alpha) def numericalSolution(): filename = "lemaitre_csv.csv" @@ -25,34 +25,34 @@ def numericalSolution(): return (t, e * 1.0e+04) def plot_lemaitre(ax): - ta = np.linspace(0.0, 1.0, 500) + ta = np.linspace(0.0, 1.0, 500) - # Analytical solution - ea = analyticalSolution(ta) - # Numerical solution - tn, en = numericalSolution() + # Analytical solution + ea = analyticalSolution(ta) + # Numerical solution + tn, en = numericalSolution() - # Plot analytical - ax.plot(ta, ea, color="xkcd:red", label="Analytical") - # Plot numerical - ax.scatter(tn, en, c="k", marker="o", linewidths=0.0, label="Numerical") + # Plot analytical + ax.plot(ta, ea, color="xkcd:red", label="Analytical") + # Plot numerical + ax.scatter(tn, en, c="k", marker="o", linewidths=0.0, label="Numerical") - # Legend - ax.legend(loc="best") + # Legend + ax.legend(loc="best") - # Additional plot settings - ax.set_ylabel(r"Shear creep strain, $\gamma_{vp}$ (\%)") - ax.set_xlabel(r"Time, $t$ (days)") - # ax.set_yscale('log') # Uncomment if log scale is desired + # Additional plot settings + ax.set_ylabel(r"Shear creep strain, $\gamma_{vp}$ (\%)") + ax.set_xlabel(r"Time, $t$ (days)") + # ax.set_yscale('log') # Uncomment if log scale is desired if __name__ == '__main__': - # Figure stress - fig, ax = plt.subplots() + # Figure stress + fig, ax = plt.subplots() - plot_lemaitre(ax) + plot_lemaitre(ax) - ax.set_xlim(-0.05, 1.0) - ax.set_ylim(0.0, 0.03) + ax.set_xlim(-0.05, 1.0) + ax.set_ylim(0.0, 0.03) - # plt.show() - fig.savefig("../../../doc/content/media/lemaitre_strain.png", format="PNG", dpi=300, bbox_inches="tight") \ No newline at end of file + # plt.show() + fig.savefig("../../../doc/content/media/lemaitre_strain.png", format="PNG", dpi=300, bbox_inches="tight") \ No newline at end of file From e84170034971aeaf419d295db93abe8e797d55cb Mon Sep 17 00:00:00 2001 From: iyevugah <168625298+iyevugah@users.noreply.github.com> Date: Fri, 30 May 2025 17:27:18 -0400 Subject: [PATCH 27/39] Delete examples/viscoelasticity/MunsonD directory --- examples/viscoelasticity/MunsonD/MunsonD.i | 262 --------------- .../MunsonD_analytical - Copy.py | 118 ------- ...nsonD_analytical - Copy.py:Zone.Identifier | 0 .../MunsonD_analytical/MunsonD_analytical.py | 108 ------- .../trash/MunsonD_analytical - Copy (2).py | 297 ------------------ .../trash/MunsonD_analytical - Copy.py | 287 ----------------- ...unsonDawson_analytical.csv:Zone.Identifier | 0 .../MunsonD/solution_compared.py | 45 --- .../solution_compared.py:Zone.Identifier | 0 9 files changed, 1117 deletions(-) delete mode 100644 examples/viscoelasticity/MunsonD/MunsonD.i delete mode 100644 examples/viscoelasticity/MunsonD/MunsonD_analytical/MunsonD_analytical - Copy.py delete mode 100644 examples/viscoelasticity/MunsonD/MunsonD_analytical/MunsonD_analytical - Copy.py:Zone.Identifier delete mode 100644 examples/viscoelasticity/MunsonD/MunsonD_analytical/MunsonD_analytical.py delete mode 100644 examples/viscoelasticity/MunsonD/MunsonD_analytical/trash/MunsonD_analytical - Copy (2).py delete mode 100644 examples/viscoelasticity/MunsonD/MunsonD_analytical/trash/MunsonD_analytical - Copy.py delete mode 100644 examples/viscoelasticity/MunsonD/MunsonDawson_analytical.csv:Zone.Identifier delete mode 100644 examples/viscoelasticity/MunsonD/solution_compared.py delete mode 100644 examples/viscoelasticity/MunsonD/solution_compared.py:Zone.Identifier diff --git a/examples/viscoelasticity/MunsonD/MunsonD.i b/examples/viscoelasticity/MunsonD/MunsonD.i deleted file mode 100644 index c6cb993..0000000 --- a/examples/viscoelasticity/MunsonD/MunsonD.i +++ /dev/null @@ -1,262 +0,0 @@ -# Input file for purely Lemaitre creep model based on RTL2020 model (Azabou et al. (2021)). -# Note: Parameter A is set to zero to ensure the Munson-Dawson component is zero. -# Also, volumetric part is set to false and parameter z is set to zero. -# Parameters -# Units: stress in MPa, time in days, strain in m / m - -E = 0.6 -nu = 0.000044 -alpha = 0.1 -A2 = 0.5 -n2 = 4 -Ar = 1 -Tr = 289 -# parameters for Munson-Dawson part -A1 = 0.3 -n1 = 3 -A = 0.5 -n = 5 -B = 0.05 -m = 5 -P = 1 -# parameters for volumetric part -z = 0.0 -Nz = 0.0241 -nz = 1.2644 -Mz = 0.024 -mz = 1.028 - -[Mesh] - type = GeneratedMesh - dim = 3 - nx = 1 - ny = 1 - nz = 2 - xmin = 0 - xmax = 1 - ymin = 0 - ymax = 1 - zmin = 0 - zmax = 0.1 -[] - -[Variables] - [disp_x] - order = FIRST - family = LAGRANGE - [] - [disp_y] - order = FIRST - family = LAGRANGE - [] - [disp_z] - order = FIRST - family = LAGRANGE - [] -[] - -[Kernels] - [stress_x] - type = BVStressDivergence - component = x - variable = disp_x - [] - [stress_y] - type = BVStressDivergence - component = y - variable = disp_y - [] - [stress_z] - type = BVStressDivergence - component = z - variable = disp_z - [] -[] - -[AuxVariables] - [temp] - order = FIRST - family = LAGRANGE - initial_condition = 289 - [] - [eqv_stress] - order = CONSTANT - family = MONOMIAL - [] - [eqv_strain] - order = CONSTANT - family = MONOMIAL - [] - [eqv_strain_rate] - order = CONSTANT - family = MONOMIAL - [] - [strain_yy] - order = CONSTANT - family = MONOMIAL - [] - [eqv_creep_strain_R] - order = CONSTANT - family = MONOMIAL - [] -[] - -[AuxKernels] - [temp_aux] - type = ConstantAux - variable = temp - value = 289 - execute_on = 'TIMESTEP_END' - [] - [eqv_stress_aux] - type = BVMisesStressAux - variable = eqv_stress - execute_on = 'TIMESTEP_END' - [] - [eqv_strain_aux] - type = BVEqvStrainAux - variable = eqv_strain - execute_on = 'TIMESTEP_END' - [] - [eqv_strain_rate_aux] - type = BVEqvStrainRateAux - variable = eqv_strain_rate - execute_on = 'TIMESTEP_END' - [] - [strain_yy_aux] - type = BVStrainComponentAux - variable = strain_yy - index_i = y - index_j = y - execute_on = 'TIMESTEP_END' - [] - [eqv_creep_strain_R_aux] - type = ADMaterialRealAux - variable = eqv_creep_strain_R - property = eqv_creep_strain_R - execute_on = 'TIMESTEP_END' - [] -[] - -[Functions] - [Q_loading] - type = ParsedFunction - expression = 'if(t<=15,10,5)' - [] -[] - -[BCs] - [no_x] - type = DirichletBC - variable = disp_x - boundary = 'left' - value = 0.0 - [] - [no_y] - type = DirichletBC - variable = disp_y - boundary = 'bottom' - value = 0.0 - [] - [no_z] - type = DirichletBC - variable = disp_z - boundary = 'front back' - value = 0.0 - [] - [BVPressure] - [pressure_right] - boundary = 'right' - displacement_vars = 'disp_x disp_y disp_z' - value = 0.0 - [] - [pressure_top] - boundary = 'top' - displacement_vars = 'disp_x disp_y disp_z' - function = Q_loading - # value = -10.0 - [] - [] -[] - -[Materials] - [elasticity] - type = BVMechanicalMaterial - displacements = 'disp_x disp_y disp_z' - young_modulus = ${E} - poisson_ratio = ${nu} - initial_stress = '-${P} ${P} 0.0' - inelastic_models = 'viscoelastic' - [] - [viscoelastic] - type = BVRTL2020ModelUpdate - volumetric = false - temperature = temp - Tr = ${Tr} - Ar = ${Ar} - alpha = ${alpha} - A1 = ${A1} - n1 = ${n1} - A2 = ${A2} - n2 = ${n2} - A = ${A} - n = ${n} - B = ${B} - m = ${m} - Nz = ${Nz} - nz = ${nz} - Mz = ${Mz} - mz = ${mz} - z = ${z} - [] -[] - -[Preconditioning] - active = 'hypre' - [hypre] - type = SMP - full = true - petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix' - petsc_options_iname = '-pc_type -pc_hypre_type - -snes_atol -snes_rtol -snes_stol -snes_max_it -snes_linesearch_type' - petsc_options_value = 'hypre boomeramg - 1.0e-10 1.0e-12 0 20 - basic' - [] -[] - -[Postprocessors] - [e] - type = ElementAverageValue - variable = eqv_strain - outputs = csv - [] - [e_rate] - type = ElementAverageValue - variable = eqv_strain_rate - outputs = csv - [] - [eqv_strain_R] - type = ElementAverageValue - variable = eqv_creep_strain_R - outputs = csv - [] -[] - -[Executioner] - type = Transient - solve_type = 'NEWTON' - start_time = 0.0 - end_time = 30.0 - dt = 0.01 -[] - -[Outputs] - perf_graph = true - execute_on = 'TIMESTEP_END' - print_linear_residuals = false - exodus = true - [csv] - type = CSV - [] -[] diff --git a/examples/viscoelasticity/MunsonD/MunsonD_analytical/MunsonD_analytical - Copy.py b/examples/viscoelasticity/MunsonD/MunsonD_analytical/MunsonD_analytical - Copy.py deleted file mode 100644 index 1732938..0000000 --- a/examples/viscoelasticity/MunsonD/MunsonD_analytical/MunsonD_analytical - Copy.py +++ /dev/null @@ -1,118 +0,0 @@ -import numpy as np -import matplotlib.pyplot as plt - -def calculate_gamma_R_bar(q, A1, n1): - return (q / A1) ** n1 - -def get_q_values(t, t_switch=15.0, q1=10.0, q2=5.0): - if t <= t_switch: - return q1 - else: - return q2 - -def solve_segment(t, gamma_R0, gamma_R_bar, A, B, n, m, t0, A1, A2, n1, n2, q_val): - # Determine regime - if gamma_R0 <= gamma_R_bar: - k = n - U = A * ((1 - gamma_R0/gamma_R_bar) ** (n-1)) - else: - k = m - U = B * ((gamma_R0/gamma_R_bar - 1) ** (m-1)) - - # Calculate Z - Z = (A1 ** n1) / (A2 ** n2) * (q_val ** (n2 - n1)) - - # Calculate V - dt = max(t - t0, 0) - V = (k - 1) * U * Z * dt - - # Calculate xi - if abs(k - 1) < 1e-10: - xi = 1 - np.exp(-V) - else: - V = max(V, 0) - xi = 1 - (1 / (1 + V)) ** (1/(k-1)) - - # Calculate gamma_R - gamma_R = gamma_R0 + (gamma_R_bar - gamma_R0) * xi - return gamma_R - -def analytical_solution(t_array, gamma_R0, A1, A2, n1, n2, A, B, n, m, t_switch=15.0, q1=10.0, q2=5.0): - gamma_R_results = [] - gamma_R_bar_results = [] - q_results = [] - - # Process first segment (t <= t_switch) - gamma_R_at_switch = gamma_R0 - - for i, t in enumerate(t_array): - q = get_q_values(t, t_switch, q1, q2) - gamma_R_bar = calculate_gamma_R_bar(q, A1, n1) - - if t <= t_switch: - # First segment - gamma_R = solve_segment(t, gamma_R0, gamma_R_bar, A, B, n, m, 0, A1, A2, n1, n2, q1) - if i == len([x for x in t_array if x <= t_switch]) - 1: - gamma_R_at_switch = gamma_R - else: - # Second segment - gamma_R = solve_segment(t, gamma_R_at_switch, gamma_R_bar, A, B, n, m, t_switch, A1, A2, n1, n2, q2) - - gamma_R_results.append(gamma_R) - gamma_R_bar_results.append(gamma_R_bar) - q_results.append(q) - - return gamma_R_results, gamma_R_bar_results, q_results - -def save_results_to_csv(t, gamma_R, gamma_R_bar, q, filename="MunsonDawson_analytical.csv"): - with open(filename, 'w') as f: - f.write("Time (t),Gamma_R,Gamma_R_bar,q_parameter\n") - for i in range(len(t)): - f.write(f"{t[i]},{gamma_R[i]},{gamma_R_bar[i]},{q[i]}\n") - print(f"Results saved to {filename}") - -def plot_solution(): - # Time range - t = np.linspace(0, 30, 1000) - - # Parameters - gamma_R0 = 0.0 - A1, A2 = 0.3, 0.5 - n1, n2 = 3.0, 4.0 - A, B = 0.5, 0.05 - n, m = 5.0, 5.0 - - # Calculate solution - gamma_R, gamma_R_bar, q = analytical_solution(t, gamma_R0, A1, A2, n1, n2, A, B, n, m) - - # Plot - plt.figure(figsize=(10, 6)) - plt.plot(t, gamma_R, 'b-', linewidth=2, label='γ_R(t)') - plt.plot(t, gamma_R_bar, 'r--', linewidth=2, label='γ̄_R(t)') - plt.axhline(y=gamma_R0, color='g', linestyle=':', label='γ_R0 = 0') - plt.axvline(x=15, color='k', linestyle='--', label='t = 15 (q switch)') - plt.title('Analytical Solution') - plt.xlabel('Time t') - plt.ylabel('γ_R, γ̄_R') - plt.legend() - plt.grid(True) - plt.show() - - # Save results - save_results_to_csv(t, gamma_R, gamma_R_bar, q) - - return t, gamma_R, gamma_R_bar, q - -# def analyze_solution(t, gamma_R, gamma_R_bar, q): -# print("Solution Analysis") -# print("="*50) -# print(f"Time range: {t[0]:.1f} to {t[-1]:.1f}") -# print(f"Initial γ_R: {gamma_R[0]:.4f}") -# print(f"Final γ_R: {gamma_R[-1]:.4f}") -# print(f"q for t ≤ 15: {q[0]:.1f}") -# print(f"q for t > 15: {q[-1]:.1f}") - -# Run the solution -if __name__ == "__main__": - t, gamma_R, gamma_R_bar, q = plot_solution() - # analyze_solution(t, gamma_R, gamma_R_bar, q) \ No newline at end of file diff --git a/examples/viscoelasticity/MunsonD/MunsonD_analytical/MunsonD_analytical - Copy.py:Zone.Identifier b/examples/viscoelasticity/MunsonD/MunsonD_analytical/MunsonD_analytical - Copy.py:Zone.Identifier deleted file mode 100644 index e69de29..0000000 diff --git a/examples/viscoelasticity/MunsonD/MunsonD_analytical/MunsonD_analytical.py b/examples/viscoelasticity/MunsonD/MunsonD_analytical/MunsonD_analytical.py deleted file mode 100644 index a12bb9d..0000000 --- a/examples/viscoelasticity/MunsonD/MunsonD_analytical/MunsonD_analytical.py +++ /dev/null @@ -1,108 +0,0 @@ -import numpy as np -import matplotlib.pyplot as plt - -def calculate_gamma_R_bar(q, A1, n1): - return (q / A1) ** n1 - -def get_q_values(t, t_switch=15.0, q1=10.0, q2=5.0): - if t <= t_switch: - return q1 - else: - return q2 - -def solve_segment(t, gamma_R0, gamma_R_bar, A, B, n, m, t0, A1, A2, n1, n2, q_val): - # Determine regime - if gamma_R0 <= gamma_R_bar: - k = n - U = A * ((1 - gamma_R0/gamma_R_bar) ** (n-1)) - else: - k = m - U = B * ((gamma_R0/gamma_R_bar - 1) ** (m-1)) - - # Calculate Z - Z = (A1 ** n1) / (A2 ** n2) * (q_val ** (n2 - n1)) - - # Calculate V - dt = max(t - t0, 0) - V = (k - 1) * U * Z * dt - - # Calculate xi - if abs(k - 1) < 1e-10: - xi = 1 - np.exp(-V) - else: - V = max(V, 0) - xi = 1 - (1 / (1 + V)) ** (1/(k-1)) - - # Calculate gamma_R - gamma_R = gamma_R0 + (gamma_R_bar - gamma_R0) * xi - return gamma_R - -def analytical_solution(t_array, gamma_R0, A1, A2, n1, n2, A, B, n, m, t_switch=15.0, q1=10.0, q2=5.0): - gamma_R_results = [] - gamma_R_bar_results = [] - q_results = [] - - # Process first segment (t <= t_switch) - gamma_R_at_switch = gamma_R0 - - for i, t in enumerate(t_array): - q = get_q_values(t, t_switch, q1, q2) - gamma_R_bar = calculate_gamma_R_bar(q, A1, n1) - - if t <= t_switch: - # First segment - gamma_R = solve_segment(t, gamma_R0, gamma_R_bar, A, B, n, m, 0, A1, A2, n1, n2, q1) - if i == len([x for x in t_array if x <= t_switch]) - 1: - gamma_R_at_switch = gamma_R - else: - # Second segment - gamma_R = solve_segment(t, gamma_R_at_switch, gamma_R_bar, A, B, n, m, t_switch, A1, A2, n1, n2, q2) - - gamma_R_results.append(gamma_R) - gamma_R_bar_results.append(gamma_R_bar) - q_results.append(q) - - return gamma_R_results, gamma_R_bar_results, q_results - -def save_results_to_csv(t, gamma_R, gamma_R_bar, q, filename="MunsonDawson_analytical.csv"): - with open(filename, 'w') as f: - f.write("Time (t),Gamma_R,Gamma_R_bar,q_parameter\n") - for i in range(len(t)): - f.write(f"{t[i]},{gamma_R[i]},{gamma_R_bar[i]},{q[i]}\n") - print(f"Results saved to {filename}") - -def plot_solution(): - # Time range - t = np.linspace(0, 30, 1000) - - # Parameters - gamma_R0 = 0.0 - A1, A2 = 0.3, 0.5 - n1, n2 = 3.0, 4.0 - A, B = 0.5, 0.05 - n, m = 5.0, 5.0 - - # Calculate solution - gamma_R, gamma_R_bar, q = analytical_solution(t, gamma_R0, A1, A2, n1, n2, A, B, n, m) - - # Plot - plt.figure(figsize=(10, 6)) - plt.plot(t, gamma_R, 'b-', linewidth=2, label='γ_R(t)') - plt.plot(t, gamma_R_bar, 'r--', linewidth=2, label='γ̄_R(t)') - plt.axhline(y=gamma_R0, color='g', linestyle=':', label='γ_R0 = 0') - plt.axvline(x=15, color='k', linestyle='--', label='t = 15 (q switch)') - plt.title('Analytical Solution') - plt.xlabel('Time t') - plt.ylabel('γ_R, γ̄_R') - plt.legend() - plt.grid(True) - plt.show() - - # Save results - save_results_to_csv(t, gamma_R, gamma_R_bar, q) - - return t, gamma_R, gamma_R_bar, q - -# Run the solution -if __name__ == "__main__": - t, gamma_R, gamma_R_bar, q = plot_solution() \ No newline at end of file diff --git a/examples/viscoelasticity/MunsonD/MunsonD_analytical/trash/MunsonD_analytical - Copy (2).py b/examples/viscoelasticity/MunsonD/MunsonD_analytical/trash/MunsonD_analytical - Copy (2).py deleted file mode 100644 index 3f6a292..0000000 --- a/examples/viscoelasticity/MunsonD/MunsonD_analytical/trash/MunsonD_analytical - Copy (2).py +++ /dev/null @@ -1,297 +0,0 @@ -import numpy as np -import matplotlib.pyplot as plt -from openpyxl import Workbook - -def calculate_gamma_R_bar(q, A1, n1): - """ - Calculate γ̄_R = (q/A1)^n1 - - Parameters: - ----------- - q : float or array - Time-dependent parameter q - A1 : float - Model parameter A1 - n1 : float - Exponent parameter n1 - - Returns: - -------- - gamma_R_bar : float or array - Target value γ̄_R - """ - return np.power(q / A1, n1) - -def get_q_values(t, t_switch=15.0, q1=10.0, q2=5.0): - """ - Get time-dependent q values. - - Parameters: - ----------- - t : array-like - Time points - t_switch : float - Time at which q switches from q1 to q2 - q1 : float - q value for t <= t_switch - q2 : float - q value for t > t_switch - - Returns: - -------- - q : array - Time-dependent q values - """ - t = np.asarray(t) - q = np.where(t <= t_switch, q1, q2) - return q - -def analytical_solution(t, gamma_R0, A1, A2, n1, n2, A, B, n, m, t0=0, - t_switch=15.0, q1=10.0, q2=5.0): - """ - Compute the improved analytical solution γ_R(t) with dynamic γ̄_R. - - Parameters: - ----------- - t : array-like - Time points - gamma_R0 : float - Initial value γ_R0 - A1 : float - Parameter A1 for γ̄_R calculation - A2 : float - Parameter A2 for Z calculation - n1 : float - Exponent n1 for γ̄_R calculation - n2 : float - Exponent n2 for Z calculation - A, B : float - Model parameters - n, m : float - Exponent parameters - t0 : float, optional - Initial time (default: 0) - t_switch : float, optional - Time at which q switches (default: 15.0) - q1, q2 : float, optional - q values before and after switch (default: 10.0, 5.0) - - Returns: - -------- - gamma_R : array - Solution γ_R(t) at time points t - gamma_R_bar : array - Time-dependent target values γ̄_R(t) - q : array - Time-dependent q values - """ - - t = np.asarray(t) - - # Get time-dependent q values - q = get_q_values(t, t_switch, q1, q2) - - # Calculate time-dependent γ̄_R - gamma_R_bar = calculate_gamma_R_bar(q, A1, n1) - - # Initialize solution array - gamma_R = np.zeros_like(t) - - # Handle each time segment separately due to discontinuity at t_switch - # Segment 1: t <= t_switch - mask1 = t <= t_switch - if np.any(mask1): - t1 = t[mask1] - gamma_R_bar1 = gamma_R_bar[mask1][0] # Constant in this segment - q1_val = q[mask1][0] # q value for this segment - gamma_R[mask1] = solve_segment(t1, gamma_R0, gamma_R_bar1, A, B, n, m, t0, - A1, A2, n1, n2, q1_val) - - # Segment 2: t > t_switch - mask2 = t > t_switch - if np.any(mask2): - t2 = t[mask2] - gamma_R_bar2 = gamma_R_bar[mask2][0] # Constant in this segment - q2_val = q[mask2][0] # q value for this segment - - # Initial condition for second segment is the value at t_switch - if np.any(mask1): - gamma_R0_seg2 = gamma_R[mask1][-1] - else: - # If no previous segment, use original initial condition - gamma_R0_seg2 = gamma_R0 - - gamma_R[mask2] = solve_segment(t2, gamma_R0_seg2, gamma_R_bar2, A, B, n, m, t_switch, - A1, A2, n1, n2, q2_val) - - return gamma_R, gamma_R_bar, q - -def solve_segment(t, gamma_R0, gamma_R_bar, A, B, n, m, t0, A1, A2, n1, n2, q_val): - """ - Solve the analytical solution for a single segment with constant γ̄_R. - - Parameters: - ----------- - t : array-like - Time points for this segment - gamma_R0 : float - Initial value for this segment - gamma_R_bar : float - Constant target value for this segment - A, B, n, m : float - Model parameters - t0 : float - Initial time for this segment - A1, A2 : float - Parameters for Z calculation - n1, n2 : float - Exponents for Z calculation - q_val : float - Constant q value for this segment - - Returns: - -------- - gamma_R : array - Solution for this segment - """ - - t = np.asarray(t) - - # Determine regime based on γ_R0 vs γ̄_R - if gamma_R0 <= gamma_R_bar: - # Case: γ_R0 ≤ γ̄_R (growth) - k = n - U = A * np.power(1 - gamma_R0/gamma_R_bar, n-1) - else: - # Case: γ_R0 ≥ γ̄_R (decay) - k = m - U = B * np.power(gamma_R0/gamma_R_bar - 1, m-1) - - # Calculate Z - constant for this segment - Z = (np.power(A1, n1) / np.power(A2, n2)) * np.power(q_val, (n2 - n1)) - - # Calculate V(t - t0) - simplified form - dt = np.maximum(t - t0, 0) - V = (k - 1) * U * Z * dt - - # Handle case where k is close to 1 - if np.abs(k - 1) < 1e-10: - # For k≈1, use exponential form - xi = 1 - np.exp(-V) - else: - # Standard case: ξ(t) = 1 - (1/(1+V))^(1/(k-1)) - # Ensure V is positive to avoid numerical issues - V = np.maximum(V, 0) - xi = 1 - np.power(1 / (1 + V), 1/(k-1)) - - # Calculate γ_R(t) using equation (17) - gamma_R = gamma_R0 + (gamma_R_bar - gamma_R0) * xi - - return gamma_R - -def save_results_to_excel(t, gamma_R, gamma_R_bar, q, filename="gamma_R_results.xlsx"): - """ - Save the analysis results to an Excel file. - - Parameters: - ----------- - t : array - Time values - gamma_R : array - Gamma_R values - gamma_R_bar : array - Gamma_R_bar values (target values) - q : array - q parameter values - filename : str - Output Excel filename - """ - # --- Save to Excel --- - wb = Workbook() - ws = wb.active - ws.title = "Gamma_R Results" - - # Add headers - ws.append(["Time (t)", "Gamma_R", "Gamma_R_bar", "q_parameter"]) - - # Add data rows - for t_val, gamma_r_val, gamma_r_bar_val, q_val in zip(t, gamma_R, gamma_R_bar, q): - ws.append([float(t_val), float(gamma_r_val), float(gamma_r_bar_val), float(q_val)]) - - # Save the workbook - wb.save(filename) - print(f"Results saved to {filename}") - -def plot_improved_solution(): - """ - Plot the improved analytical solution with dynamic parameters. - """ - # Time range from 0 to 30 - t = np.linspace(0, 30, 1000) - - # Parameters - gamma_R0 = 0.0 - A1, A2 = 0.3, 0.5 - n1, n2 = 3.0, 4.0 - A, B = 0.5, 0.05 - n, m = 5.0, 5.0 - - # Calculate solution - gamma_R, gamma_R_bar, q = analytical_solution( - t, gamma_R0, A1, A2, n1, n2, A, B, n, m, - t_switch=15.0, q1=10.0, q2=5.0 - ) - - # Create main plot only - plt.figure(figsize=(10, 6)) - plt.plot(t, gamma_R, 'b-', linewidth=2, label='γ_R(t)') - plt.plot(t, gamma_R_bar, 'r--', linewidth=2, label='γ̄_R(t) = (q/A₁)^n₁') - plt.axhline(y=gamma_R0, color='g', linestyle=':', alpha=0.7, label='γ_R0 = 0') - plt.axvline(x=15, color='k', linestyle='--', alpha=0.5, label='t = 15 (q switch)') - plt.title('Analytical Solution: γ_R(t) and γ̄_R(t)', fontsize=14) - plt.xlabel('Time t') - plt.ylabel('γ_R, γ̄_R') - plt.legend() - plt.grid(True, alpha=0.3) - plt.tight_layout() - plt.show() - - # Save results to Excel - save_results_to_excel(t, gamma_R, gamma_R_bar, q) - - return t, gamma_R, gamma_R_bar, q - -def analyze_solution_properties(t, gamma_R, gamma_R_bar, q): - """ - Analyze key properties of the solution. - """ - print("Solution Analysis") - print("="*50) - print(f"Time range: {t[0]:.1f} to {t[-1]:.1f}") - print(f"Initial γ_R: {gamma_R[0]:.4f}") - print(f"Final γ_R: {gamma_R[-1]:.4f}") - print(f"γ̄_R at t=0: {gamma_R_bar[0]:.4f}") - print(f"γ̄_R at t=15⁻: {gamma_R_bar[t <= 15][-1]:.4f}") - print(f"γ̄_R at t=15⁺: {gamma_R_bar[t > 15][0]:.4f}") - print(f"γ̄_R at t=30: {gamma_R_bar[-1]:.4f}") - - # Find discontinuity magnitude - idx_switch = np.where(t > 15)[0][0] - gamma_R_jump = gamma_R_bar[idx_switch] - gamma_R_bar[idx_switch-1] - print(f"γ̄_R discontinuity at t=15: {gamma_R_jump:.4f}") - - # Check if solution reaches equilibrium - final_diff = abs(gamma_R[-1] - gamma_R_bar[-1]) - print(f"Final |γ_R - γ̄_R|: {final_diff:.4f}") - - print("\nq parameter switch:") - print(f"q for t ≤ 15: {q[0]:.1f}") - print(f"q for t > 15: {q[-1]:.1f}") - -# Example usage and demonstration -if __name__ == "__main__": - # Run the improved solution - t, gamma_R, gamma_R_bar, q = plot_improved_solution() - - # Analyze the solution - analyze_solution_properties(t, gamma_R, gamma_R_bar, q) \ No newline at end of file diff --git a/examples/viscoelasticity/MunsonD/MunsonD_analytical/trash/MunsonD_analytical - Copy.py b/examples/viscoelasticity/MunsonD/MunsonD_analytical/trash/MunsonD_analytical - Copy.py deleted file mode 100644 index 15b5cac..0000000 --- a/examples/viscoelasticity/MunsonD/MunsonD_analytical/trash/MunsonD_analytical - Copy.py +++ /dev/null @@ -1,287 +0,0 @@ -import numpy as np -import matplotlib.pyplot as plt - -def calculate_gamma_R_bar(q, A1, n1): - """ - Calculate γ̄_R = (q/A1)^n1 - - Parameters: - ----------- - q : float or array - Time-dependent parameter q - A1 : float - Model parameter A1 - n1 : float - Exponent parameter n1 - - Returns: - -------- - gamma_R_bar : float or array - Target value γ̄_R - """ - return np.power(q / A1, n1) - -def get_q_values(t, t_switch=15.0, q1=10.0, q2=5.0): - """ - Get time-dependent q values. - - Parameters: - ----------- - t : array-like - Time points - t_switch : float - Time at which q switches from q1 to q2 - q1 : float - q value for t <= t_switch - q2 : float - q value for t > t_switch - - Returns: - -------- - q : array - Time-dependent q values - """ - t = np.asarray(t) - q = np.where(t <= t_switch, q1, q2) - return q - -def analytical_solution_improved(t, gamma_R0, A1, n1, A, B, n, m, t0=0, - t_switch=15.0, q1=10.0, q2=5.0): - """ - Compute the improved analytical solution γ_R(t) with dynamic γ̄_R. - - Parameters: - ----------- - t : array-like - Time points - gamma_R0 : float - Initial value γ_R0 - A1 : float - Parameter A1 for γ̄_R calculation - n1 : float - Exponent n1 for γ̄_R calculation - A, B : float - Model parameters - n, m : float - Exponent parameters - t0 : float, optional - Initial time (default: 0) - t_switch : float, optional - Time at which q switches (default: 15.0) - q1, q2 : float, optional - q values before and after switch (default: 10.0, 5.0) - - Returns: - -------- - gamma_R : array - Solution γ_R(t) at time points t - gamma_R_bar : array - Time-dependent target values γ̄_R(t) - q : array - Time-dependent q values - """ - - t = np.asarray(t) - - # Get time-dependent q values - q = get_q_values(t, t_switch, q1, q2) - - # Calculate time-dependent γ̄_R - gamma_R_bar = calculate_gamma_R_bar(q, A1, n1) - - # Initialize solution array - gamma_R = np.zeros_like(t) - - # Handle each time segment separately due to discontinuity at t_switch - # Segment 1: t <= t_switch - mask1 = t <= t_switch - if np.any(mask1): - t1 = t[mask1] - gamma_R_bar1 = gamma_R_bar[mask1][0] # Constant in this segment - gamma_R[mask1] = solve_segment(t1, gamma_R0, gamma_R_bar1, A, B, n, m, t0) - - # Segment 2: t > t_switch - mask2 = t > t_switch - if np.any(mask2): - t2 = t[mask2] - gamma_R_bar2 = gamma_R_bar[mask2][0] # Constant in this segment - - # Initial condition for second segment is the value at t_switch - if np.any(mask1): - gamma_R0_seg2 = gamma_R[mask1][-1] - else: - # If no previous segment, use original initial condition - gamma_R0_seg2 = gamma_R0 - - gamma_R[mask2] = solve_segment(t2, gamma_R0_seg2, gamma_R_bar2, A, B, n, m, t_switch) - - return gamma_R, gamma_R_bar, q - -def solve_segment(t, gamma_R0, gamma_R_bar, A, B, n, m, t0): - """ - Solve the analytical solution for a single segment with constant γ̄_R. - - Parameters: - ----------- - t : array-like - Time points for this segment - gamma_R0 : float - Initial value for this segment - gamma_R_bar : float - Constant target value for this segment - A, B, n, m : float - Model parameters - t0 : float - Initial time for this segment - - Returns: - -------- - gamma_R : array - Solution for this segment - """ - - t = np.asarray(t) - - # Determine regime based on γ_R0 vs γ̄_R - if gamma_R0 <= gamma_R_bar: - # Case: γ_R0 ≤ γ̄_R (growth) - k = n - U = A * np.power(1 - gamma_R0/gamma_R_bar, n-1) - else: - # Case: γ_R0 ≥ γ̄_R (decay) - k = m - U = B * np.power(gamma_R0/gamma_R_bar - 1, m-1) - - # Calculate V(t - t0) - simplified form - # Assuming V = (k-1)U * (t-t0) for this implementation - dt = np.maximum(t - t0, 0) - V = (k - 1) * U * dt - - # Handle case where k is close to 1 - if np.abs(k - 1) < 1e-10: - # For k≈1, use exponential form - xi = 1 - np.exp(-V) - else: - # Standard case: ξ(t) = 1 - (1/(1+V))^(1/(k-1)) - xi = 1 - np.power(1 / (1 + V), 1/(k-1)) - - # Calculate γ_R(t) using equation (17) - gamma_R = gamma_R0 + (gamma_R_bar - gamma_R0) * xi - - return gamma_R - -def plot_improved_solution(): - """ - Plot the improved analytical solution with dynamic parameters. - """ - # Time range from 0 to 30 - t = np.linspace(0, 30, 1000) - - # Parameters - gamma_R0 = 0.1 - A1 = 2.0 - n1 = 1.5 - A, B = 1.0, 1.0 - n, m = 2.0, 2.0 - - # Calculate solution - gamma_R, gamma_R_bar, q = analytical_solution_improved( - t, gamma_R0, A1, n1, A, B, n, m, - t_switch=15.0, q1=10.0, q2=5.0 - ) - - # Create comprehensive plot - fig, axes = plt.subplots(2, 2, figsize=(15, 12)) - fig.suptitle('Improved Analytical Solution with Dynamic Parameters', fontsize=16) - - # Main solution plot - ax = axes[0, 0] - ax.plot(t, gamma_R, 'b-', linewidth=2, label='γ_R(t)') - ax.plot(t, gamma_R_bar, 'r--', linewidth=2, label='γ̄_R(t) = (q/A₁)^n₁') - ax.axhline(y=gamma_R0, color='g', linestyle=':', alpha=0.7, label='γ_R0') - ax.axvline(x=15, color='k', linestyle='--', alpha=0.5, label='t = 15 (q switch)') - ax.set_title('Main Solution: γ_R(t) and γ̄_R(t)') - ax.set_xlabel('Time t') - ax.set_ylabel('γ_R, γ̄_R') - ax.legend() - ax.grid(True, alpha=0.3) - - # q parameter evolution - ax = axes[0, 1] - ax.plot(t, q, 'g-', linewidth=2, label='q(t)') - ax.axvline(x=15, color='k', linestyle='--', alpha=0.5, label='t = 15') - ax.set_title('Parameter q(t) Evolution') - ax.set_xlabel('Time t') - ax.set_ylabel('q') - ax.legend() - ax.grid(True, alpha=0.3) - ax.set_ylim([4, 11]) - - # Phase portrait style plot - ax = axes[1, 0] - ax.plot(gamma_R_bar, gamma_R, 'purple', linewidth=2, label='Solution trajectory') - ax.plot(gamma_R_bar[0], gamma_R[0], 'go', markersize=8, label='Start') - ax.plot(gamma_R_bar[-1], gamma_R[-1], 'ro', markersize=8, label='End') - # Add diagonal line y=x - min_val = min(np.min(gamma_R_bar), np.min(gamma_R)) - max_val = max(np.max(gamma_R_bar), np.max(gamma_R)) - ax.plot([min_val, max_val], [min_val, max_val], 'k--', alpha=0.5, label='γ_R = γ̄_R') - ax.set_title('Phase Portrait: γ_R vs γ̄_R') - ax.set_xlabel('γ̄_R(t)') - ax.set_ylabel('γ_R(t)') - ax.legend() - ax.grid(True, alpha=0.3) - - # Parameter sensitivity analysis - ax = axes[1, 1] - for A1_val in [1.5, 2.0, 2.5]: - gamma_R_sens, _, _ = analytical_solution_improved( - t, gamma_R0, A1_val, n1, A, B, n, m - ) - ax.plot(t, gamma_R_sens, linewidth=2, label=f'A₁ = {A1_val}') - ax.axvline(x=15, color='k', linestyle='--', alpha=0.5, label='t = 15') - ax.set_title('Sensitivity to Parameter A₁') - ax.set_xlabel('Time t') - ax.set_ylabel('γ_R(t)') - ax.legend() - ax.grid(True, alpha=0.3) - - plt.tight_layout() - plt.show() - - return t, gamma_R, gamma_R_bar, q - -def analyze_solution_properties(t, gamma_R, gamma_R_bar, q): - """ - Analyze key properties of the solution. - """ - print("Solution Analysis") - print("="*50) - print(f"Time range: {t[0]:.1f} to {t[-1]:.1f}") - print(f"Initial γ_R: {gamma_R[0]:.4f}") - print(f"Final γ_R: {gamma_R[-1]:.4f}") - print(f"γ̄_R at t=0: {gamma_R_bar[0]:.4f}") - print(f"γ̄_R at t=15⁻: {gamma_R_bar[t <= 15][-1]:.4f}") - print(f"γ̄_R at t=15⁺: {gamma_R_bar[t > 15][0]:.4f}") - print(f"γ̄_R at t=30: {gamma_R_bar[-1]:.4f}") - - # Find discontinuity magnitude - idx_switch = np.where(t > 15)[0][0] - gamma_R_jump = gamma_R_bar[idx_switch] - gamma_R_bar[idx_switch-1] - print(f"γ̄_R discontinuity at t=15: {gamma_R_jump:.4f}") - - # Check if solution reaches equilibrium - final_diff = abs(gamma_R[-1] - gamma_R_bar[-1]) - print(f"Final |γ_R - γ̄_R|: {final_diff:.4f}") - - print("\nq parameter switch:") - print(f"q for t ≤ 15: {q[0]:.1f}") - print(f"q for t > 15: {q[-1]:.1f}") - -# Example usage and demonstration -if __name__ == "__main__": - # Run the improved solution - t, gamma_R, gamma_R_bar, q = plot_improved_solution() - - # Analyze the solution - analyze_solution_properties(t, gamma_R, gamma_R_bar, q) \ No newline at end of file diff --git a/examples/viscoelasticity/MunsonD/MunsonDawson_analytical.csv:Zone.Identifier b/examples/viscoelasticity/MunsonD/MunsonDawson_analytical.csv:Zone.Identifier deleted file mode 100644 index e69de29..0000000 diff --git a/examples/viscoelasticity/MunsonD/solution_compared.py b/examples/viscoelasticity/MunsonD/solution_compared.py deleted file mode 100644 index f4fbe1f..0000000 --- a/examples/viscoelasticity/MunsonD/solution_compared.py +++ /dev/null @@ -1,45 +0,0 @@ -import numpy as np -import matplotlib.pyplot as plt - -# plt.style.use('publication.mplstyle') # Comment out if style file doesn't exist -plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text - -def read_analytical_data(): - filename = "MunsonDawson_analytical.csv" - t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 4], unpack=True) - return t, gamma_vp - -def read_simulation_data(): - filename = "MunsonD_csv.csv" # Replace with your actual filename - t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 3], unpack=True) - return t, gamma_vp - -def plot_figure(): - fig, ax = plt.subplots(figsize=(8, 6)) - ax.set_title(r'$\gamma_{vp}$ vs Time (days)') # Fixed LaTeX syntax - - # Read data - t_analytical, gamma_vp_exp = read_analytical_data() - t_sim, gamma_vp_sim = read_simulation_data() - - # Plot experimental data - ax.plot(t_analytical, gamma_vp_exp, color="k", label="MunsonDawson_analytical _ $\gamma_{vp}$", linewidth=2) - # Plot simulation data - ax.plot(t_sim, gamma_vp_sim, color="r", label="Munson_Dawson_simulation _ $\gamma_{vp}$", linewidth=2) - - # Set x-axis limit - ax.set_xlim(None, None) # Automatically adjust x-axis limits - - # Additional plot settings - ax.set_ylabel(r'Shear Strain ($\gamma_{vp}$)/%') - ax.set_xlabel('Time (days)') - # ax.set_yscale('log') # Uncomment if log scale is desired - ax.legend() - ax.grid(True, alpha=0.3) # Add grid for better readability - - # Save figure - fig.savefig("simulation_vs_analytical_sol.pdf", format="pdf", dpi=300, bbox_inches="tight") - plt.show() # Display the plot - -if __name__ == '__main__': - plot_figure() \ No newline at end of file diff --git a/examples/viscoelasticity/MunsonD/solution_compared.py:Zone.Identifier b/examples/viscoelasticity/MunsonD/solution_compared.py:Zone.Identifier deleted file mode 100644 index e69de29..0000000 From 3b196c478d967708814c5df1f23523497e47bd8a Mon Sep 17 00:00:00 2001 From: iyevugah Date: Fri, 30 May 2025 17:34:04 -0400 Subject: [PATCH 28/39] replaced old munson_dawson directory --- doc/content/media/lemaitre_strain.png | Bin 44161 -> 44160 bytes .../MunsonD_analytical - Copy.py | 118 ------- ...nsonD_analytical - Copy.py:Zone.Identifier | 0 .../MunsonD_analytical/MunsonD_analytical.py | 108 ------- .../trash/MunsonD_analytical - Copy (2).py | 297 ------------------ .../trash/MunsonD_analytical - Copy.py | 287 ----------------- ...unsonDawson_analytical.csv:Zone.Identifier | 0 .../MunsonD/solution_compared.py | 45 --- .../solution_compared.py:Zone.Identifier | 0 .../munson_dawson.i} | 0 .../munson_dawson/munson_dawson.py | 146 +++++++++ 11 files changed, 146 insertions(+), 855 deletions(-) delete mode 100644 examples/viscoelasticity/MunsonD/MunsonD_analytical/MunsonD_analytical - Copy.py delete mode 100644 examples/viscoelasticity/MunsonD/MunsonD_analytical/MunsonD_analytical - Copy.py:Zone.Identifier delete mode 100644 examples/viscoelasticity/MunsonD/MunsonD_analytical/MunsonD_analytical.py delete mode 100644 examples/viscoelasticity/MunsonD/MunsonD_analytical/trash/MunsonD_analytical - Copy (2).py delete mode 100644 examples/viscoelasticity/MunsonD/MunsonD_analytical/trash/MunsonD_analytical - Copy.py delete mode 100644 examples/viscoelasticity/MunsonD/MunsonDawson_analytical.csv:Zone.Identifier delete mode 100644 examples/viscoelasticity/MunsonD/solution_compared.py delete mode 100644 examples/viscoelasticity/MunsonD/solution_compared.py:Zone.Identifier rename examples/viscoelasticity/{MunsonD/MunsonD.i => munson_dawson/munson_dawson.i} (100%) create mode 100644 examples/viscoelasticity/munson_dawson/munson_dawson.py diff --git a/doc/content/media/lemaitre_strain.png b/doc/content/media/lemaitre_strain.png index 134d4ac617e970735802c2cc05ec3357bb298662..d1371cd817d454c46df0d01f242d9ab814a1997d 100644 GIT binary patch delta 50 zcmZp?$<%O@X@Ux)Tl9GaAD}DXk#FB!X{F0o^B)$Bibp7J|e@{22 HNv#0@z8Vts diff --git a/examples/viscoelasticity/MunsonD/MunsonD_analytical/MunsonD_analytical - Copy.py b/examples/viscoelasticity/MunsonD/MunsonD_analytical/MunsonD_analytical - Copy.py deleted file mode 100644 index 1732938..0000000 --- a/examples/viscoelasticity/MunsonD/MunsonD_analytical/MunsonD_analytical - Copy.py +++ /dev/null @@ -1,118 +0,0 @@ -import numpy as np -import matplotlib.pyplot as plt - -def calculate_gamma_R_bar(q, A1, n1): - return (q / A1) ** n1 - -def get_q_values(t, t_switch=15.0, q1=10.0, q2=5.0): - if t <= t_switch: - return q1 - else: - return q2 - -def solve_segment(t, gamma_R0, gamma_R_bar, A, B, n, m, t0, A1, A2, n1, n2, q_val): - # Determine regime - if gamma_R0 <= gamma_R_bar: - k = n - U = A * ((1 - gamma_R0/gamma_R_bar) ** (n-1)) - else: - k = m - U = B * ((gamma_R0/gamma_R_bar - 1) ** (m-1)) - - # Calculate Z - Z = (A1 ** n1) / (A2 ** n2) * (q_val ** (n2 - n1)) - - # Calculate V - dt = max(t - t0, 0) - V = (k - 1) * U * Z * dt - - # Calculate xi - if abs(k - 1) < 1e-10: - xi = 1 - np.exp(-V) - else: - V = max(V, 0) - xi = 1 - (1 / (1 + V)) ** (1/(k-1)) - - # Calculate gamma_R - gamma_R = gamma_R0 + (gamma_R_bar - gamma_R0) * xi - return gamma_R - -def analytical_solution(t_array, gamma_R0, A1, A2, n1, n2, A, B, n, m, t_switch=15.0, q1=10.0, q2=5.0): - gamma_R_results = [] - gamma_R_bar_results = [] - q_results = [] - - # Process first segment (t <= t_switch) - gamma_R_at_switch = gamma_R0 - - for i, t in enumerate(t_array): - q = get_q_values(t, t_switch, q1, q2) - gamma_R_bar = calculate_gamma_R_bar(q, A1, n1) - - if t <= t_switch: - # First segment - gamma_R = solve_segment(t, gamma_R0, gamma_R_bar, A, B, n, m, 0, A1, A2, n1, n2, q1) - if i == len([x for x in t_array if x <= t_switch]) - 1: - gamma_R_at_switch = gamma_R - else: - # Second segment - gamma_R = solve_segment(t, gamma_R_at_switch, gamma_R_bar, A, B, n, m, t_switch, A1, A2, n1, n2, q2) - - gamma_R_results.append(gamma_R) - gamma_R_bar_results.append(gamma_R_bar) - q_results.append(q) - - return gamma_R_results, gamma_R_bar_results, q_results - -def save_results_to_csv(t, gamma_R, gamma_R_bar, q, filename="MunsonDawson_analytical.csv"): - with open(filename, 'w') as f: - f.write("Time (t),Gamma_R,Gamma_R_bar,q_parameter\n") - for i in range(len(t)): - f.write(f"{t[i]},{gamma_R[i]},{gamma_R_bar[i]},{q[i]}\n") - print(f"Results saved to {filename}") - -def plot_solution(): - # Time range - t = np.linspace(0, 30, 1000) - - # Parameters - gamma_R0 = 0.0 - A1, A2 = 0.3, 0.5 - n1, n2 = 3.0, 4.0 - A, B = 0.5, 0.05 - n, m = 5.0, 5.0 - - # Calculate solution - gamma_R, gamma_R_bar, q = analytical_solution(t, gamma_R0, A1, A2, n1, n2, A, B, n, m) - - # Plot - plt.figure(figsize=(10, 6)) - plt.plot(t, gamma_R, 'b-', linewidth=2, label='γ_R(t)') - plt.plot(t, gamma_R_bar, 'r--', linewidth=2, label='γ̄_R(t)') - plt.axhline(y=gamma_R0, color='g', linestyle=':', label='γ_R0 = 0') - plt.axvline(x=15, color='k', linestyle='--', label='t = 15 (q switch)') - plt.title('Analytical Solution') - plt.xlabel('Time t') - plt.ylabel('γ_R, γ̄_R') - plt.legend() - plt.grid(True) - plt.show() - - # Save results - save_results_to_csv(t, gamma_R, gamma_R_bar, q) - - return t, gamma_R, gamma_R_bar, q - -# def analyze_solution(t, gamma_R, gamma_R_bar, q): -# print("Solution Analysis") -# print("="*50) -# print(f"Time range: {t[0]:.1f} to {t[-1]:.1f}") -# print(f"Initial γ_R: {gamma_R[0]:.4f}") -# print(f"Final γ_R: {gamma_R[-1]:.4f}") -# print(f"q for t ≤ 15: {q[0]:.1f}") -# print(f"q for t > 15: {q[-1]:.1f}") - -# Run the solution -if __name__ == "__main__": - t, gamma_R, gamma_R_bar, q = plot_solution() - # analyze_solution(t, gamma_R, gamma_R_bar, q) \ No newline at end of file diff --git a/examples/viscoelasticity/MunsonD/MunsonD_analytical/MunsonD_analytical - Copy.py:Zone.Identifier b/examples/viscoelasticity/MunsonD/MunsonD_analytical/MunsonD_analytical - Copy.py:Zone.Identifier deleted file mode 100644 index e69de29..0000000 diff --git a/examples/viscoelasticity/MunsonD/MunsonD_analytical/MunsonD_analytical.py b/examples/viscoelasticity/MunsonD/MunsonD_analytical/MunsonD_analytical.py deleted file mode 100644 index a12bb9d..0000000 --- a/examples/viscoelasticity/MunsonD/MunsonD_analytical/MunsonD_analytical.py +++ /dev/null @@ -1,108 +0,0 @@ -import numpy as np -import matplotlib.pyplot as plt - -def calculate_gamma_R_bar(q, A1, n1): - return (q / A1) ** n1 - -def get_q_values(t, t_switch=15.0, q1=10.0, q2=5.0): - if t <= t_switch: - return q1 - else: - return q2 - -def solve_segment(t, gamma_R0, gamma_R_bar, A, B, n, m, t0, A1, A2, n1, n2, q_val): - # Determine regime - if gamma_R0 <= gamma_R_bar: - k = n - U = A * ((1 - gamma_R0/gamma_R_bar) ** (n-1)) - else: - k = m - U = B * ((gamma_R0/gamma_R_bar - 1) ** (m-1)) - - # Calculate Z - Z = (A1 ** n1) / (A2 ** n2) * (q_val ** (n2 - n1)) - - # Calculate V - dt = max(t - t0, 0) - V = (k - 1) * U * Z * dt - - # Calculate xi - if abs(k - 1) < 1e-10: - xi = 1 - np.exp(-V) - else: - V = max(V, 0) - xi = 1 - (1 / (1 + V)) ** (1/(k-1)) - - # Calculate gamma_R - gamma_R = gamma_R0 + (gamma_R_bar - gamma_R0) * xi - return gamma_R - -def analytical_solution(t_array, gamma_R0, A1, A2, n1, n2, A, B, n, m, t_switch=15.0, q1=10.0, q2=5.0): - gamma_R_results = [] - gamma_R_bar_results = [] - q_results = [] - - # Process first segment (t <= t_switch) - gamma_R_at_switch = gamma_R0 - - for i, t in enumerate(t_array): - q = get_q_values(t, t_switch, q1, q2) - gamma_R_bar = calculate_gamma_R_bar(q, A1, n1) - - if t <= t_switch: - # First segment - gamma_R = solve_segment(t, gamma_R0, gamma_R_bar, A, B, n, m, 0, A1, A2, n1, n2, q1) - if i == len([x for x in t_array if x <= t_switch]) - 1: - gamma_R_at_switch = gamma_R - else: - # Second segment - gamma_R = solve_segment(t, gamma_R_at_switch, gamma_R_bar, A, B, n, m, t_switch, A1, A2, n1, n2, q2) - - gamma_R_results.append(gamma_R) - gamma_R_bar_results.append(gamma_R_bar) - q_results.append(q) - - return gamma_R_results, gamma_R_bar_results, q_results - -def save_results_to_csv(t, gamma_R, gamma_R_bar, q, filename="MunsonDawson_analytical.csv"): - with open(filename, 'w') as f: - f.write("Time (t),Gamma_R,Gamma_R_bar,q_parameter\n") - for i in range(len(t)): - f.write(f"{t[i]},{gamma_R[i]},{gamma_R_bar[i]},{q[i]}\n") - print(f"Results saved to {filename}") - -def plot_solution(): - # Time range - t = np.linspace(0, 30, 1000) - - # Parameters - gamma_R0 = 0.0 - A1, A2 = 0.3, 0.5 - n1, n2 = 3.0, 4.0 - A, B = 0.5, 0.05 - n, m = 5.0, 5.0 - - # Calculate solution - gamma_R, gamma_R_bar, q = analytical_solution(t, gamma_R0, A1, A2, n1, n2, A, B, n, m) - - # Plot - plt.figure(figsize=(10, 6)) - plt.plot(t, gamma_R, 'b-', linewidth=2, label='γ_R(t)') - plt.plot(t, gamma_R_bar, 'r--', linewidth=2, label='γ̄_R(t)') - plt.axhline(y=gamma_R0, color='g', linestyle=':', label='γ_R0 = 0') - plt.axvline(x=15, color='k', linestyle='--', label='t = 15 (q switch)') - plt.title('Analytical Solution') - plt.xlabel('Time t') - plt.ylabel('γ_R, γ̄_R') - plt.legend() - plt.grid(True) - plt.show() - - # Save results - save_results_to_csv(t, gamma_R, gamma_R_bar, q) - - return t, gamma_R, gamma_R_bar, q - -# Run the solution -if __name__ == "__main__": - t, gamma_R, gamma_R_bar, q = plot_solution() \ No newline at end of file diff --git a/examples/viscoelasticity/MunsonD/MunsonD_analytical/trash/MunsonD_analytical - Copy (2).py b/examples/viscoelasticity/MunsonD/MunsonD_analytical/trash/MunsonD_analytical - Copy (2).py deleted file mode 100644 index 3f6a292..0000000 --- a/examples/viscoelasticity/MunsonD/MunsonD_analytical/trash/MunsonD_analytical - Copy (2).py +++ /dev/null @@ -1,297 +0,0 @@ -import numpy as np -import matplotlib.pyplot as plt -from openpyxl import Workbook - -def calculate_gamma_R_bar(q, A1, n1): - """ - Calculate γ̄_R = (q/A1)^n1 - - Parameters: - ----------- - q : float or array - Time-dependent parameter q - A1 : float - Model parameter A1 - n1 : float - Exponent parameter n1 - - Returns: - -------- - gamma_R_bar : float or array - Target value γ̄_R - """ - return np.power(q / A1, n1) - -def get_q_values(t, t_switch=15.0, q1=10.0, q2=5.0): - """ - Get time-dependent q values. - - Parameters: - ----------- - t : array-like - Time points - t_switch : float - Time at which q switches from q1 to q2 - q1 : float - q value for t <= t_switch - q2 : float - q value for t > t_switch - - Returns: - -------- - q : array - Time-dependent q values - """ - t = np.asarray(t) - q = np.where(t <= t_switch, q1, q2) - return q - -def analytical_solution(t, gamma_R0, A1, A2, n1, n2, A, B, n, m, t0=0, - t_switch=15.0, q1=10.0, q2=5.0): - """ - Compute the improved analytical solution γ_R(t) with dynamic γ̄_R. - - Parameters: - ----------- - t : array-like - Time points - gamma_R0 : float - Initial value γ_R0 - A1 : float - Parameter A1 for γ̄_R calculation - A2 : float - Parameter A2 for Z calculation - n1 : float - Exponent n1 for γ̄_R calculation - n2 : float - Exponent n2 for Z calculation - A, B : float - Model parameters - n, m : float - Exponent parameters - t0 : float, optional - Initial time (default: 0) - t_switch : float, optional - Time at which q switches (default: 15.0) - q1, q2 : float, optional - q values before and after switch (default: 10.0, 5.0) - - Returns: - -------- - gamma_R : array - Solution γ_R(t) at time points t - gamma_R_bar : array - Time-dependent target values γ̄_R(t) - q : array - Time-dependent q values - """ - - t = np.asarray(t) - - # Get time-dependent q values - q = get_q_values(t, t_switch, q1, q2) - - # Calculate time-dependent γ̄_R - gamma_R_bar = calculate_gamma_R_bar(q, A1, n1) - - # Initialize solution array - gamma_R = np.zeros_like(t) - - # Handle each time segment separately due to discontinuity at t_switch - # Segment 1: t <= t_switch - mask1 = t <= t_switch - if np.any(mask1): - t1 = t[mask1] - gamma_R_bar1 = gamma_R_bar[mask1][0] # Constant in this segment - q1_val = q[mask1][0] # q value for this segment - gamma_R[mask1] = solve_segment(t1, gamma_R0, gamma_R_bar1, A, B, n, m, t0, - A1, A2, n1, n2, q1_val) - - # Segment 2: t > t_switch - mask2 = t > t_switch - if np.any(mask2): - t2 = t[mask2] - gamma_R_bar2 = gamma_R_bar[mask2][0] # Constant in this segment - q2_val = q[mask2][0] # q value for this segment - - # Initial condition for second segment is the value at t_switch - if np.any(mask1): - gamma_R0_seg2 = gamma_R[mask1][-1] - else: - # If no previous segment, use original initial condition - gamma_R0_seg2 = gamma_R0 - - gamma_R[mask2] = solve_segment(t2, gamma_R0_seg2, gamma_R_bar2, A, B, n, m, t_switch, - A1, A2, n1, n2, q2_val) - - return gamma_R, gamma_R_bar, q - -def solve_segment(t, gamma_R0, gamma_R_bar, A, B, n, m, t0, A1, A2, n1, n2, q_val): - """ - Solve the analytical solution for a single segment with constant γ̄_R. - - Parameters: - ----------- - t : array-like - Time points for this segment - gamma_R0 : float - Initial value for this segment - gamma_R_bar : float - Constant target value for this segment - A, B, n, m : float - Model parameters - t0 : float - Initial time for this segment - A1, A2 : float - Parameters for Z calculation - n1, n2 : float - Exponents for Z calculation - q_val : float - Constant q value for this segment - - Returns: - -------- - gamma_R : array - Solution for this segment - """ - - t = np.asarray(t) - - # Determine regime based on γ_R0 vs γ̄_R - if gamma_R0 <= gamma_R_bar: - # Case: γ_R0 ≤ γ̄_R (growth) - k = n - U = A * np.power(1 - gamma_R0/gamma_R_bar, n-1) - else: - # Case: γ_R0 ≥ γ̄_R (decay) - k = m - U = B * np.power(gamma_R0/gamma_R_bar - 1, m-1) - - # Calculate Z - constant for this segment - Z = (np.power(A1, n1) / np.power(A2, n2)) * np.power(q_val, (n2 - n1)) - - # Calculate V(t - t0) - simplified form - dt = np.maximum(t - t0, 0) - V = (k - 1) * U * Z * dt - - # Handle case where k is close to 1 - if np.abs(k - 1) < 1e-10: - # For k≈1, use exponential form - xi = 1 - np.exp(-V) - else: - # Standard case: ξ(t) = 1 - (1/(1+V))^(1/(k-1)) - # Ensure V is positive to avoid numerical issues - V = np.maximum(V, 0) - xi = 1 - np.power(1 / (1 + V), 1/(k-1)) - - # Calculate γ_R(t) using equation (17) - gamma_R = gamma_R0 + (gamma_R_bar - gamma_R0) * xi - - return gamma_R - -def save_results_to_excel(t, gamma_R, gamma_R_bar, q, filename="gamma_R_results.xlsx"): - """ - Save the analysis results to an Excel file. - - Parameters: - ----------- - t : array - Time values - gamma_R : array - Gamma_R values - gamma_R_bar : array - Gamma_R_bar values (target values) - q : array - q parameter values - filename : str - Output Excel filename - """ - # --- Save to Excel --- - wb = Workbook() - ws = wb.active - ws.title = "Gamma_R Results" - - # Add headers - ws.append(["Time (t)", "Gamma_R", "Gamma_R_bar", "q_parameter"]) - - # Add data rows - for t_val, gamma_r_val, gamma_r_bar_val, q_val in zip(t, gamma_R, gamma_R_bar, q): - ws.append([float(t_val), float(gamma_r_val), float(gamma_r_bar_val), float(q_val)]) - - # Save the workbook - wb.save(filename) - print(f"Results saved to {filename}") - -def plot_improved_solution(): - """ - Plot the improved analytical solution with dynamic parameters. - """ - # Time range from 0 to 30 - t = np.linspace(0, 30, 1000) - - # Parameters - gamma_R0 = 0.0 - A1, A2 = 0.3, 0.5 - n1, n2 = 3.0, 4.0 - A, B = 0.5, 0.05 - n, m = 5.0, 5.0 - - # Calculate solution - gamma_R, gamma_R_bar, q = analytical_solution( - t, gamma_R0, A1, A2, n1, n2, A, B, n, m, - t_switch=15.0, q1=10.0, q2=5.0 - ) - - # Create main plot only - plt.figure(figsize=(10, 6)) - plt.plot(t, gamma_R, 'b-', linewidth=2, label='γ_R(t)') - plt.plot(t, gamma_R_bar, 'r--', linewidth=2, label='γ̄_R(t) = (q/A₁)^n₁') - plt.axhline(y=gamma_R0, color='g', linestyle=':', alpha=0.7, label='γ_R0 = 0') - plt.axvline(x=15, color='k', linestyle='--', alpha=0.5, label='t = 15 (q switch)') - plt.title('Analytical Solution: γ_R(t) and γ̄_R(t)', fontsize=14) - plt.xlabel('Time t') - plt.ylabel('γ_R, γ̄_R') - plt.legend() - plt.grid(True, alpha=0.3) - plt.tight_layout() - plt.show() - - # Save results to Excel - save_results_to_excel(t, gamma_R, gamma_R_bar, q) - - return t, gamma_R, gamma_R_bar, q - -def analyze_solution_properties(t, gamma_R, gamma_R_bar, q): - """ - Analyze key properties of the solution. - """ - print("Solution Analysis") - print("="*50) - print(f"Time range: {t[0]:.1f} to {t[-1]:.1f}") - print(f"Initial γ_R: {gamma_R[0]:.4f}") - print(f"Final γ_R: {gamma_R[-1]:.4f}") - print(f"γ̄_R at t=0: {gamma_R_bar[0]:.4f}") - print(f"γ̄_R at t=15⁻: {gamma_R_bar[t <= 15][-1]:.4f}") - print(f"γ̄_R at t=15⁺: {gamma_R_bar[t > 15][0]:.4f}") - print(f"γ̄_R at t=30: {gamma_R_bar[-1]:.4f}") - - # Find discontinuity magnitude - idx_switch = np.where(t > 15)[0][0] - gamma_R_jump = gamma_R_bar[idx_switch] - gamma_R_bar[idx_switch-1] - print(f"γ̄_R discontinuity at t=15: {gamma_R_jump:.4f}") - - # Check if solution reaches equilibrium - final_diff = abs(gamma_R[-1] - gamma_R_bar[-1]) - print(f"Final |γ_R - γ̄_R|: {final_diff:.4f}") - - print("\nq parameter switch:") - print(f"q for t ≤ 15: {q[0]:.1f}") - print(f"q for t > 15: {q[-1]:.1f}") - -# Example usage and demonstration -if __name__ == "__main__": - # Run the improved solution - t, gamma_R, gamma_R_bar, q = plot_improved_solution() - - # Analyze the solution - analyze_solution_properties(t, gamma_R, gamma_R_bar, q) \ No newline at end of file diff --git a/examples/viscoelasticity/MunsonD/MunsonD_analytical/trash/MunsonD_analytical - Copy.py b/examples/viscoelasticity/MunsonD/MunsonD_analytical/trash/MunsonD_analytical - Copy.py deleted file mode 100644 index 15b5cac..0000000 --- a/examples/viscoelasticity/MunsonD/MunsonD_analytical/trash/MunsonD_analytical - Copy.py +++ /dev/null @@ -1,287 +0,0 @@ -import numpy as np -import matplotlib.pyplot as plt - -def calculate_gamma_R_bar(q, A1, n1): - """ - Calculate γ̄_R = (q/A1)^n1 - - Parameters: - ----------- - q : float or array - Time-dependent parameter q - A1 : float - Model parameter A1 - n1 : float - Exponent parameter n1 - - Returns: - -------- - gamma_R_bar : float or array - Target value γ̄_R - """ - return np.power(q / A1, n1) - -def get_q_values(t, t_switch=15.0, q1=10.0, q2=5.0): - """ - Get time-dependent q values. - - Parameters: - ----------- - t : array-like - Time points - t_switch : float - Time at which q switches from q1 to q2 - q1 : float - q value for t <= t_switch - q2 : float - q value for t > t_switch - - Returns: - -------- - q : array - Time-dependent q values - """ - t = np.asarray(t) - q = np.where(t <= t_switch, q1, q2) - return q - -def analytical_solution_improved(t, gamma_R0, A1, n1, A, B, n, m, t0=0, - t_switch=15.0, q1=10.0, q2=5.0): - """ - Compute the improved analytical solution γ_R(t) with dynamic γ̄_R. - - Parameters: - ----------- - t : array-like - Time points - gamma_R0 : float - Initial value γ_R0 - A1 : float - Parameter A1 for γ̄_R calculation - n1 : float - Exponent n1 for γ̄_R calculation - A, B : float - Model parameters - n, m : float - Exponent parameters - t0 : float, optional - Initial time (default: 0) - t_switch : float, optional - Time at which q switches (default: 15.0) - q1, q2 : float, optional - q values before and after switch (default: 10.0, 5.0) - - Returns: - -------- - gamma_R : array - Solution γ_R(t) at time points t - gamma_R_bar : array - Time-dependent target values γ̄_R(t) - q : array - Time-dependent q values - """ - - t = np.asarray(t) - - # Get time-dependent q values - q = get_q_values(t, t_switch, q1, q2) - - # Calculate time-dependent γ̄_R - gamma_R_bar = calculate_gamma_R_bar(q, A1, n1) - - # Initialize solution array - gamma_R = np.zeros_like(t) - - # Handle each time segment separately due to discontinuity at t_switch - # Segment 1: t <= t_switch - mask1 = t <= t_switch - if np.any(mask1): - t1 = t[mask1] - gamma_R_bar1 = gamma_R_bar[mask1][0] # Constant in this segment - gamma_R[mask1] = solve_segment(t1, gamma_R0, gamma_R_bar1, A, B, n, m, t0) - - # Segment 2: t > t_switch - mask2 = t > t_switch - if np.any(mask2): - t2 = t[mask2] - gamma_R_bar2 = gamma_R_bar[mask2][0] # Constant in this segment - - # Initial condition for second segment is the value at t_switch - if np.any(mask1): - gamma_R0_seg2 = gamma_R[mask1][-1] - else: - # If no previous segment, use original initial condition - gamma_R0_seg2 = gamma_R0 - - gamma_R[mask2] = solve_segment(t2, gamma_R0_seg2, gamma_R_bar2, A, B, n, m, t_switch) - - return gamma_R, gamma_R_bar, q - -def solve_segment(t, gamma_R0, gamma_R_bar, A, B, n, m, t0): - """ - Solve the analytical solution for a single segment with constant γ̄_R. - - Parameters: - ----------- - t : array-like - Time points for this segment - gamma_R0 : float - Initial value for this segment - gamma_R_bar : float - Constant target value for this segment - A, B, n, m : float - Model parameters - t0 : float - Initial time for this segment - - Returns: - -------- - gamma_R : array - Solution for this segment - """ - - t = np.asarray(t) - - # Determine regime based on γ_R0 vs γ̄_R - if gamma_R0 <= gamma_R_bar: - # Case: γ_R0 ≤ γ̄_R (growth) - k = n - U = A * np.power(1 - gamma_R0/gamma_R_bar, n-1) - else: - # Case: γ_R0 ≥ γ̄_R (decay) - k = m - U = B * np.power(gamma_R0/gamma_R_bar - 1, m-1) - - # Calculate V(t - t0) - simplified form - # Assuming V = (k-1)U * (t-t0) for this implementation - dt = np.maximum(t - t0, 0) - V = (k - 1) * U * dt - - # Handle case where k is close to 1 - if np.abs(k - 1) < 1e-10: - # For k≈1, use exponential form - xi = 1 - np.exp(-V) - else: - # Standard case: ξ(t) = 1 - (1/(1+V))^(1/(k-1)) - xi = 1 - np.power(1 / (1 + V), 1/(k-1)) - - # Calculate γ_R(t) using equation (17) - gamma_R = gamma_R0 + (gamma_R_bar - gamma_R0) * xi - - return gamma_R - -def plot_improved_solution(): - """ - Plot the improved analytical solution with dynamic parameters. - """ - # Time range from 0 to 30 - t = np.linspace(0, 30, 1000) - - # Parameters - gamma_R0 = 0.1 - A1 = 2.0 - n1 = 1.5 - A, B = 1.0, 1.0 - n, m = 2.0, 2.0 - - # Calculate solution - gamma_R, gamma_R_bar, q = analytical_solution_improved( - t, gamma_R0, A1, n1, A, B, n, m, - t_switch=15.0, q1=10.0, q2=5.0 - ) - - # Create comprehensive plot - fig, axes = plt.subplots(2, 2, figsize=(15, 12)) - fig.suptitle('Improved Analytical Solution with Dynamic Parameters', fontsize=16) - - # Main solution plot - ax = axes[0, 0] - ax.plot(t, gamma_R, 'b-', linewidth=2, label='γ_R(t)') - ax.plot(t, gamma_R_bar, 'r--', linewidth=2, label='γ̄_R(t) = (q/A₁)^n₁') - ax.axhline(y=gamma_R0, color='g', linestyle=':', alpha=0.7, label='γ_R0') - ax.axvline(x=15, color='k', linestyle='--', alpha=0.5, label='t = 15 (q switch)') - ax.set_title('Main Solution: γ_R(t) and γ̄_R(t)') - ax.set_xlabel('Time t') - ax.set_ylabel('γ_R, γ̄_R') - ax.legend() - ax.grid(True, alpha=0.3) - - # q parameter evolution - ax = axes[0, 1] - ax.plot(t, q, 'g-', linewidth=2, label='q(t)') - ax.axvline(x=15, color='k', linestyle='--', alpha=0.5, label='t = 15') - ax.set_title('Parameter q(t) Evolution') - ax.set_xlabel('Time t') - ax.set_ylabel('q') - ax.legend() - ax.grid(True, alpha=0.3) - ax.set_ylim([4, 11]) - - # Phase portrait style plot - ax = axes[1, 0] - ax.plot(gamma_R_bar, gamma_R, 'purple', linewidth=2, label='Solution trajectory') - ax.plot(gamma_R_bar[0], gamma_R[0], 'go', markersize=8, label='Start') - ax.plot(gamma_R_bar[-1], gamma_R[-1], 'ro', markersize=8, label='End') - # Add diagonal line y=x - min_val = min(np.min(gamma_R_bar), np.min(gamma_R)) - max_val = max(np.max(gamma_R_bar), np.max(gamma_R)) - ax.plot([min_val, max_val], [min_val, max_val], 'k--', alpha=0.5, label='γ_R = γ̄_R') - ax.set_title('Phase Portrait: γ_R vs γ̄_R') - ax.set_xlabel('γ̄_R(t)') - ax.set_ylabel('γ_R(t)') - ax.legend() - ax.grid(True, alpha=0.3) - - # Parameter sensitivity analysis - ax = axes[1, 1] - for A1_val in [1.5, 2.0, 2.5]: - gamma_R_sens, _, _ = analytical_solution_improved( - t, gamma_R0, A1_val, n1, A, B, n, m - ) - ax.plot(t, gamma_R_sens, linewidth=2, label=f'A₁ = {A1_val}') - ax.axvline(x=15, color='k', linestyle='--', alpha=0.5, label='t = 15') - ax.set_title('Sensitivity to Parameter A₁') - ax.set_xlabel('Time t') - ax.set_ylabel('γ_R(t)') - ax.legend() - ax.grid(True, alpha=0.3) - - plt.tight_layout() - plt.show() - - return t, gamma_R, gamma_R_bar, q - -def analyze_solution_properties(t, gamma_R, gamma_R_bar, q): - """ - Analyze key properties of the solution. - """ - print("Solution Analysis") - print("="*50) - print(f"Time range: {t[0]:.1f} to {t[-1]:.1f}") - print(f"Initial γ_R: {gamma_R[0]:.4f}") - print(f"Final γ_R: {gamma_R[-1]:.4f}") - print(f"γ̄_R at t=0: {gamma_R_bar[0]:.4f}") - print(f"γ̄_R at t=15⁻: {gamma_R_bar[t <= 15][-1]:.4f}") - print(f"γ̄_R at t=15⁺: {gamma_R_bar[t > 15][0]:.4f}") - print(f"γ̄_R at t=30: {gamma_R_bar[-1]:.4f}") - - # Find discontinuity magnitude - idx_switch = np.where(t > 15)[0][0] - gamma_R_jump = gamma_R_bar[idx_switch] - gamma_R_bar[idx_switch-1] - print(f"γ̄_R discontinuity at t=15: {gamma_R_jump:.4f}") - - # Check if solution reaches equilibrium - final_diff = abs(gamma_R[-1] - gamma_R_bar[-1]) - print(f"Final |γ_R - γ̄_R|: {final_diff:.4f}") - - print("\nq parameter switch:") - print(f"q for t ≤ 15: {q[0]:.1f}") - print(f"q for t > 15: {q[-1]:.1f}") - -# Example usage and demonstration -if __name__ == "__main__": - # Run the improved solution - t, gamma_R, gamma_R_bar, q = plot_improved_solution() - - # Analyze the solution - analyze_solution_properties(t, gamma_R, gamma_R_bar, q) \ No newline at end of file diff --git a/examples/viscoelasticity/MunsonD/MunsonDawson_analytical.csv:Zone.Identifier b/examples/viscoelasticity/MunsonD/MunsonDawson_analytical.csv:Zone.Identifier deleted file mode 100644 index e69de29..0000000 diff --git a/examples/viscoelasticity/MunsonD/solution_compared.py b/examples/viscoelasticity/MunsonD/solution_compared.py deleted file mode 100644 index f4fbe1f..0000000 --- a/examples/viscoelasticity/MunsonD/solution_compared.py +++ /dev/null @@ -1,45 +0,0 @@ -import numpy as np -import matplotlib.pyplot as plt - -# plt.style.use('publication.mplstyle') # Comment out if style file doesn't exist -plt.rcParams['text.usetex'] = False # Ensure LaTeX is not used for rendering text - -def read_analytical_data(): - filename = "MunsonDawson_analytical.csv" - t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 4], unpack=True) - return t, gamma_vp - -def read_simulation_data(): - filename = "MunsonD_csv.csv" # Replace with your actual filename - t, gamma_vp = np.loadtxt(filename, delimiter=',', skiprows=1, usecols=[0, 3], unpack=True) - return t, gamma_vp - -def plot_figure(): - fig, ax = plt.subplots(figsize=(8, 6)) - ax.set_title(r'$\gamma_{vp}$ vs Time (days)') # Fixed LaTeX syntax - - # Read data - t_analytical, gamma_vp_exp = read_analytical_data() - t_sim, gamma_vp_sim = read_simulation_data() - - # Plot experimental data - ax.plot(t_analytical, gamma_vp_exp, color="k", label="MunsonDawson_analytical _ $\gamma_{vp}$", linewidth=2) - # Plot simulation data - ax.plot(t_sim, gamma_vp_sim, color="r", label="Munson_Dawson_simulation _ $\gamma_{vp}$", linewidth=2) - - # Set x-axis limit - ax.set_xlim(None, None) # Automatically adjust x-axis limits - - # Additional plot settings - ax.set_ylabel(r'Shear Strain ($\gamma_{vp}$)/%') - ax.set_xlabel('Time (days)') - # ax.set_yscale('log') # Uncomment if log scale is desired - ax.legend() - ax.grid(True, alpha=0.3) # Add grid for better readability - - # Save figure - fig.savefig("simulation_vs_analytical_sol.pdf", format="pdf", dpi=300, bbox_inches="tight") - plt.show() # Display the plot - -if __name__ == '__main__': - plot_figure() \ No newline at end of file diff --git a/examples/viscoelasticity/MunsonD/solution_compared.py:Zone.Identifier b/examples/viscoelasticity/MunsonD/solution_compared.py:Zone.Identifier deleted file mode 100644 index e69de29..0000000 diff --git a/examples/viscoelasticity/MunsonD/MunsonD.i b/examples/viscoelasticity/munson_dawson/munson_dawson.i similarity index 100% rename from examples/viscoelasticity/MunsonD/MunsonD.i rename to examples/viscoelasticity/munson_dawson/munson_dawson.i diff --git a/examples/viscoelasticity/munson_dawson/munson_dawson.py b/examples/viscoelasticity/munson_dawson/munson_dawson.py new file mode 100644 index 0000000..66800f7 --- /dev/null +++ b/examples/viscoelasticity/munson_dawson/munson_dawson.py @@ -0,0 +1,146 @@ +import os, csv +import numpy as np +import matplotlib.pyplot as plt +from matplotlib.lines import Line2D + +# Munson-Dawson creep test +# Units +# Stress in MPa +# Strain dimensionless +# Time in days + +# Model parameters +gamma_R0 = 0.0 +A1, A2 = 0.3, 0.5 +n1, n2 = 3.0, 4.0 +A, B = 0.5, 0.05 +n, m = 5.0, 5.0 +t_switch = 15.0 +q1, q2 = 10.0, 5.0 + +def analyticalSolution(t_array): + gamma_R_results = [] + gamma_R_bar_results = [] + q_results = [] + scaling_factor = 1e-6 + + # Find gamma_R at switch point for second segment + gamma_R_at_switch = gamma_R0 + + for i, t in enumerate(t_array): + # Get q value based on time + if t <= t_switch: + q = q1 + else: + q = q2 + + # Calculate gamma_R_bar + gamma_R_bar = np.power(q / A1, n1) + + # Determine initial conditions and time reference for current segment + if t <= t_switch: + # First segment + gamma_R_current = gamma_R0 + t0 = 0 + q_val = q1 + else: + # Second segment - use gamma_R value at switch point + if len(gamma_R_results) > 0: + # Find the last point before or at switch + switch_indices = [idx for idx, time_val in enumerate(t_array[:i]) if time_val <= t_switch] + if switch_indices: + gamma_R_at_switch = gamma_R_results[switch_indices[-1]] / scaling_factor # Unscale for calculation + else: + gamma_R_at_switch = gamma_R0 + else: + gamma_R_at_switch = gamma_R0 + + gamma_R_current = gamma_R_at_switch + t0 = t_switch + q_val = q2 + + # Determine regime and calculate coefficients + if gamma_R_current <= gamma_R_bar: + k = n + U = A * np.power(1 - gamma_R_current/gamma_R_bar, n-1) + else: + k = m + U = B * np.power(gamma_R_current/gamma_R_bar - 1, m-1) + + # Calculate Z + Z = np.power(A1, n1) / np.power(A2, n2) * np.power(q_val, n2 - n1) + + # Calculate V + dt = max(t - t0, 0) + V = max((k - 1) * U * Z * dt, 0) + + # Calculate xi with numerical stability + if abs(k - 1) < 1e-10: + xi = 1 - np.exp(-V) if V < 700 else 1.0 # Prevent overflow + else: + if V > 0: + xi = 1 - np.power(1 / (1 + V), 1/(k-1)) + else: + xi = 0 + + # Calculate gamma_R + gamma_R = gamma_R_current + (gamma_R_bar - gamma_R_current) * xi + + # Store scaled results + gamma_R_results.append(gamma_R * scaling_factor) + gamma_R_bar_results.append(gamma_R_bar * scaling_factor) + q_results.append(q) + + return gamma_R_results, gamma_R_bar_results, q_results + +def numericalSolution(): + filename = "munson_dawson_csv.csv" + + t, gamma_R, gamma_R_bar = np.loadtxt(filename, delimiter=',', skiprows=1, + usecols=[0, 3, 2], unpack=True) + + return t, gamma_R, gamma_R_bar + +def plot_munson_dawson(ax): + """ + Plot Munson-Dawson analytical and numerical solutions + """ + # Time array for analytical solution + ta = np.linspace(0.0, 30.0, 1000) + + # Analytical solution + gamma_R_a, gamma_R_bar_a, q_a = analyticalSolution(ta) + + # Numerical solution + tn, gamma_R_n, gamma_R_bar_n = numericalSolution() + + # Plot analytical solutions + ax.plot(ta, gamma_R_a, color="red", linewidth=2, label="γ_R (Analytical)") + # ax.plot(ta, gamma_R_bar_a, color="blue", linestyle="--", linewidth=2, label="γ̄_R (Analytical)") + + # Plot numerical solutions + ax.scatter(tn, gamma_R_n, c="k", marker="o", s=20, linewidths=0.0, label="γ_R (Numerical)") + # ax.scatter(tn, gamma_R_bar_n, c="gray", marker="s", s=20, linewidths=0.0, label="γ̄_R (Numerical)") + + # Add vertical line at stress switch + ax.axvline(x=t_switch, color='k', linestyle=':', alpha=0.7, label=f'Stress switch (t = {t_switch} days)') + + # Legend + ax.legend(loc="best") + + # Additional plot settings + ax.set_ylabel(r"Creep strain, $\gamma_R$ (×1e-6)") + ax.set_xlabel(r"Time, $t$ (days)") + ax.grid(True, alpha=0.3) + +if __name__ == '__main__': + # Figure setup + fig, ax = plt.subplots(figsize=(10, 6)) + + plot_munson_dawson(ax) + + ax.set_xlim(0, 30.0) + ax.set_ylim(None, None) # Auto-scale y-axis + + fig.savefig("../../../doc/content/media/munson_dawson_strain.png", format="PNG", dpi=300, bbox_inches="tight") + plt.show() \ No newline at end of file From e1a21dcdbfab1f0426d3bfd56a6f76dc2855c215 Mon Sep 17 00:00:00 2001 From: iyevugah Date: Fri, 30 May 2025 17:39:05 -0400 Subject: [PATCH 29/39] replaced old munson_dawson directory --- examples/viscoelasticity/lemaitre/lemaitre.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/viscoelasticity/lemaitre/lemaitre.py b/examples/viscoelasticity/lemaitre/lemaitre.py index 502b9a2..0a952b3 100644 --- a/examples/viscoelasticity/lemaitre/lemaitre.py +++ b/examples/viscoelasticity/lemaitre/lemaitre.py @@ -15,7 +15,7 @@ beta = 1.48 def analyticalSolution(t): - return 1.0e-02 * np.pow(q / A_2, beta) * np.pow(t, alpha) + return 1.0e-02 * np.power(q / A_2, beta) * np.power(t, alpha) def numericalSolution(): filename = "lemaitre_csv.csv" From 783044826eb764fc3574718db8068f781c7789f9 Mon Sep 17 00:00:00 2001 From: iyevugah Date: Fri, 30 May 2025 17:47:56 -0400 Subject: [PATCH 30/39] updated a folder name to munson-dawson --- .../munson-dawson/munson_dawson.i | 262 ++++++++++++++++++ .../munson-dawson/munson_dawson.py | 146 ++++++++++ 2 files changed, 408 insertions(+) create mode 100644 examples/viscoelasticity/munson-dawson/munson_dawson.i create mode 100644 examples/viscoelasticity/munson-dawson/munson_dawson.py diff --git a/examples/viscoelasticity/munson-dawson/munson_dawson.i b/examples/viscoelasticity/munson-dawson/munson_dawson.i new file mode 100644 index 0000000..c6cb993 --- /dev/null +++ b/examples/viscoelasticity/munson-dawson/munson_dawson.i @@ -0,0 +1,262 @@ +# Input file for purely Lemaitre creep model based on RTL2020 model (Azabou et al. (2021)). +# Note: Parameter A is set to zero to ensure the Munson-Dawson component is zero. +# Also, volumetric part is set to false and parameter z is set to zero. +# Parameters +# Units: stress in MPa, time in days, strain in m / m + +E = 0.6 +nu = 0.000044 +alpha = 0.1 +A2 = 0.5 +n2 = 4 +Ar = 1 +Tr = 289 +# parameters for Munson-Dawson part +A1 = 0.3 +n1 = 3 +A = 0.5 +n = 5 +B = 0.05 +m = 5 +P = 1 +# parameters for volumetric part +z = 0.0 +Nz = 0.0241 +nz = 1.2644 +Mz = 0.024 +mz = 1.028 + +[Mesh] + type = GeneratedMesh + dim = 3 + nx = 1 + ny = 1 + nz = 2 + xmin = 0 + xmax = 1 + ymin = 0 + ymax = 1 + zmin = 0 + zmax = 0.1 +[] + +[Variables] + [disp_x] + order = FIRST + family = LAGRANGE + [] + [disp_y] + order = FIRST + family = LAGRANGE + [] + [disp_z] + order = FIRST + family = LAGRANGE + [] +[] + +[Kernels] + [stress_x] + type = BVStressDivergence + component = x + variable = disp_x + [] + [stress_y] + type = BVStressDivergence + component = y + variable = disp_y + [] + [stress_z] + type = BVStressDivergence + component = z + variable = disp_z + [] +[] + +[AuxVariables] + [temp] + order = FIRST + family = LAGRANGE + initial_condition = 289 + [] + [eqv_stress] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain] + order = CONSTANT + family = MONOMIAL + [] + [eqv_strain_rate] + order = CONSTANT + family = MONOMIAL + [] + [strain_yy] + order = CONSTANT + family = MONOMIAL + [] + [eqv_creep_strain_R] + order = CONSTANT + family = MONOMIAL + [] +[] + +[AuxKernels] + [temp_aux] + type = ConstantAux + variable = temp + value = 289 + execute_on = 'TIMESTEP_END' + [] + [eqv_stress_aux] + type = BVMisesStressAux + variable = eqv_stress + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_aux] + type = BVEqvStrainAux + variable = eqv_strain + execute_on = 'TIMESTEP_END' + [] + [eqv_strain_rate_aux] + type = BVEqvStrainRateAux + variable = eqv_strain_rate + execute_on = 'TIMESTEP_END' + [] + [strain_yy_aux] + type = BVStrainComponentAux + variable = strain_yy + index_i = y + index_j = y + execute_on = 'TIMESTEP_END' + [] + [eqv_creep_strain_R_aux] + type = ADMaterialRealAux + variable = eqv_creep_strain_R + property = eqv_creep_strain_R + execute_on = 'TIMESTEP_END' + [] +[] + +[Functions] + [Q_loading] + type = ParsedFunction + expression = 'if(t<=15,10,5)' + [] +[] + +[BCs] + [no_x] + type = DirichletBC + variable = disp_x + boundary = 'left' + value = 0.0 + [] + [no_y] + type = DirichletBC + variable = disp_y + boundary = 'bottom' + value = 0.0 + [] + [no_z] + type = DirichletBC + variable = disp_z + boundary = 'front back' + value = 0.0 + [] + [BVPressure] + [pressure_right] + boundary = 'right' + displacement_vars = 'disp_x disp_y disp_z' + value = 0.0 + [] + [pressure_top] + boundary = 'top' + displacement_vars = 'disp_x disp_y disp_z' + function = Q_loading + # value = -10.0 + [] + [] +[] + +[Materials] + [elasticity] + type = BVMechanicalMaterial + displacements = 'disp_x disp_y disp_z' + young_modulus = ${E} + poisson_ratio = ${nu} + initial_stress = '-${P} ${P} 0.0' + inelastic_models = 'viscoelastic' + [] + [viscoelastic] + type = BVRTL2020ModelUpdate + volumetric = false + temperature = temp + Tr = ${Tr} + Ar = ${Ar} + alpha = ${alpha} + A1 = ${A1} + n1 = ${n1} + A2 = ${A2} + n2 = ${n2} + A = ${A} + n = ${n} + B = ${B} + m = ${m} + Nz = ${Nz} + nz = ${nz} + Mz = ${Mz} + mz = ${mz} + z = ${z} + [] +[] + +[Preconditioning] + active = 'hypre' + [hypre] + type = SMP + full = true + petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix' + petsc_options_iname = '-pc_type -pc_hypre_type + -snes_atol -snes_rtol -snes_stol -snes_max_it -snes_linesearch_type' + petsc_options_value = 'hypre boomeramg + 1.0e-10 1.0e-12 0 20 + basic' + [] +[] + +[Postprocessors] + [e] + type = ElementAverageValue + variable = eqv_strain + outputs = csv + [] + [e_rate] + type = ElementAverageValue + variable = eqv_strain_rate + outputs = csv + [] + [eqv_strain_R] + type = ElementAverageValue + variable = eqv_creep_strain_R + outputs = csv + [] +[] + +[Executioner] + type = Transient + solve_type = 'NEWTON' + start_time = 0.0 + end_time = 30.0 + dt = 0.01 +[] + +[Outputs] + perf_graph = true + execute_on = 'TIMESTEP_END' + print_linear_residuals = false + exodus = true + [csv] + type = CSV + [] +[] diff --git a/examples/viscoelasticity/munson-dawson/munson_dawson.py b/examples/viscoelasticity/munson-dawson/munson_dawson.py new file mode 100644 index 0000000..66800f7 --- /dev/null +++ b/examples/viscoelasticity/munson-dawson/munson_dawson.py @@ -0,0 +1,146 @@ +import os, csv +import numpy as np +import matplotlib.pyplot as plt +from matplotlib.lines import Line2D + +# Munson-Dawson creep test +# Units +# Stress in MPa +# Strain dimensionless +# Time in days + +# Model parameters +gamma_R0 = 0.0 +A1, A2 = 0.3, 0.5 +n1, n2 = 3.0, 4.0 +A, B = 0.5, 0.05 +n, m = 5.0, 5.0 +t_switch = 15.0 +q1, q2 = 10.0, 5.0 + +def analyticalSolution(t_array): + gamma_R_results = [] + gamma_R_bar_results = [] + q_results = [] + scaling_factor = 1e-6 + + # Find gamma_R at switch point for second segment + gamma_R_at_switch = gamma_R0 + + for i, t in enumerate(t_array): + # Get q value based on time + if t <= t_switch: + q = q1 + else: + q = q2 + + # Calculate gamma_R_bar + gamma_R_bar = np.power(q / A1, n1) + + # Determine initial conditions and time reference for current segment + if t <= t_switch: + # First segment + gamma_R_current = gamma_R0 + t0 = 0 + q_val = q1 + else: + # Second segment - use gamma_R value at switch point + if len(gamma_R_results) > 0: + # Find the last point before or at switch + switch_indices = [idx for idx, time_val in enumerate(t_array[:i]) if time_val <= t_switch] + if switch_indices: + gamma_R_at_switch = gamma_R_results[switch_indices[-1]] / scaling_factor # Unscale for calculation + else: + gamma_R_at_switch = gamma_R0 + else: + gamma_R_at_switch = gamma_R0 + + gamma_R_current = gamma_R_at_switch + t0 = t_switch + q_val = q2 + + # Determine regime and calculate coefficients + if gamma_R_current <= gamma_R_bar: + k = n + U = A * np.power(1 - gamma_R_current/gamma_R_bar, n-1) + else: + k = m + U = B * np.power(gamma_R_current/gamma_R_bar - 1, m-1) + + # Calculate Z + Z = np.power(A1, n1) / np.power(A2, n2) * np.power(q_val, n2 - n1) + + # Calculate V + dt = max(t - t0, 0) + V = max((k - 1) * U * Z * dt, 0) + + # Calculate xi with numerical stability + if abs(k - 1) < 1e-10: + xi = 1 - np.exp(-V) if V < 700 else 1.0 # Prevent overflow + else: + if V > 0: + xi = 1 - np.power(1 / (1 + V), 1/(k-1)) + else: + xi = 0 + + # Calculate gamma_R + gamma_R = gamma_R_current + (gamma_R_bar - gamma_R_current) * xi + + # Store scaled results + gamma_R_results.append(gamma_R * scaling_factor) + gamma_R_bar_results.append(gamma_R_bar * scaling_factor) + q_results.append(q) + + return gamma_R_results, gamma_R_bar_results, q_results + +def numericalSolution(): + filename = "munson_dawson_csv.csv" + + t, gamma_R, gamma_R_bar = np.loadtxt(filename, delimiter=',', skiprows=1, + usecols=[0, 3, 2], unpack=True) + + return t, gamma_R, gamma_R_bar + +def plot_munson_dawson(ax): + """ + Plot Munson-Dawson analytical and numerical solutions + """ + # Time array for analytical solution + ta = np.linspace(0.0, 30.0, 1000) + + # Analytical solution + gamma_R_a, gamma_R_bar_a, q_a = analyticalSolution(ta) + + # Numerical solution + tn, gamma_R_n, gamma_R_bar_n = numericalSolution() + + # Plot analytical solutions + ax.plot(ta, gamma_R_a, color="red", linewidth=2, label="γ_R (Analytical)") + # ax.plot(ta, gamma_R_bar_a, color="blue", linestyle="--", linewidth=2, label="γ̄_R (Analytical)") + + # Plot numerical solutions + ax.scatter(tn, gamma_R_n, c="k", marker="o", s=20, linewidths=0.0, label="γ_R (Numerical)") + # ax.scatter(tn, gamma_R_bar_n, c="gray", marker="s", s=20, linewidths=0.0, label="γ̄_R (Numerical)") + + # Add vertical line at stress switch + ax.axvline(x=t_switch, color='k', linestyle=':', alpha=0.7, label=f'Stress switch (t = {t_switch} days)') + + # Legend + ax.legend(loc="best") + + # Additional plot settings + ax.set_ylabel(r"Creep strain, $\gamma_R$ (×1e-6)") + ax.set_xlabel(r"Time, $t$ (days)") + ax.grid(True, alpha=0.3) + +if __name__ == '__main__': + # Figure setup + fig, ax = plt.subplots(figsize=(10, 6)) + + plot_munson_dawson(ax) + + ax.set_xlim(0, 30.0) + ax.set_ylim(None, None) # Auto-scale y-axis + + fig.savefig("../../../doc/content/media/munson_dawson_strain.png", format="PNG", dpi=300, bbox_inches="tight") + plt.show() \ No newline at end of file From 1a4f4585e516af756211525b080397223285176c Mon Sep 17 00:00:00 2001 From: iyevugah <168625298+iyevugah@users.noreply.github.com> Date: Fri, 30 May 2025 17:49:25 -0400 Subject: [PATCH 31/39] Delete examples/viscoelasticity/munson_dawson directory --- .../munson_dawson/munson_dawson.i | 262 ------------------ .../munson_dawson/munson_dawson.py | 146 ---------- 2 files changed, 408 deletions(-) delete mode 100644 examples/viscoelasticity/munson_dawson/munson_dawson.i delete mode 100644 examples/viscoelasticity/munson_dawson/munson_dawson.py diff --git a/examples/viscoelasticity/munson_dawson/munson_dawson.i b/examples/viscoelasticity/munson_dawson/munson_dawson.i deleted file mode 100644 index c6cb993..0000000 --- a/examples/viscoelasticity/munson_dawson/munson_dawson.i +++ /dev/null @@ -1,262 +0,0 @@ -# Input file for purely Lemaitre creep model based on RTL2020 model (Azabou et al. (2021)). -# Note: Parameter A is set to zero to ensure the Munson-Dawson component is zero. -# Also, volumetric part is set to false and parameter z is set to zero. -# Parameters -# Units: stress in MPa, time in days, strain in m / m - -E = 0.6 -nu = 0.000044 -alpha = 0.1 -A2 = 0.5 -n2 = 4 -Ar = 1 -Tr = 289 -# parameters for Munson-Dawson part -A1 = 0.3 -n1 = 3 -A = 0.5 -n = 5 -B = 0.05 -m = 5 -P = 1 -# parameters for volumetric part -z = 0.0 -Nz = 0.0241 -nz = 1.2644 -Mz = 0.024 -mz = 1.028 - -[Mesh] - type = GeneratedMesh - dim = 3 - nx = 1 - ny = 1 - nz = 2 - xmin = 0 - xmax = 1 - ymin = 0 - ymax = 1 - zmin = 0 - zmax = 0.1 -[] - -[Variables] - [disp_x] - order = FIRST - family = LAGRANGE - [] - [disp_y] - order = FIRST - family = LAGRANGE - [] - [disp_z] - order = FIRST - family = LAGRANGE - [] -[] - -[Kernels] - [stress_x] - type = BVStressDivergence - component = x - variable = disp_x - [] - [stress_y] - type = BVStressDivergence - component = y - variable = disp_y - [] - [stress_z] - type = BVStressDivergence - component = z - variable = disp_z - [] -[] - -[AuxVariables] - [temp] - order = FIRST - family = LAGRANGE - initial_condition = 289 - [] - [eqv_stress] - order = CONSTANT - family = MONOMIAL - [] - [eqv_strain] - order = CONSTANT - family = MONOMIAL - [] - [eqv_strain_rate] - order = CONSTANT - family = MONOMIAL - [] - [strain_yy] - order = CONSTANT - family = MONOMIAL - [] - [eqv_creep_strain_R] - order = CONSTANT - family = MONOMIAL - [] -[] - -[AuxKernels] - [temp_aux] - type = ConstantAux - variable = temp - value = 289 - execute_on = 'TIMESTEP_END' - [] - [eqv_stress_aux] - type = BVMisesStressAux - variable = eqv_stress - execute_on = 'TIMESTEP_END' - [] - [eqv_strain_aux] - type = BVEqvStrainAux - variable = eqv_strain - execute_on = 'TIMESTEP_END' - [] - [eqv_strain_rate_aux] - type = BVEqvStrainRateAux - variable = eqv_strain_rate - execute_on = 'TIMESTEP_END' - [] - [strain_yy_aux] - type = BVStrainComponentAux - variable = strain_yy - index_i = y - index_j = y - execute_on = 'TIMESTEP_END' - [] - [eqv_creep_strain_R_aux] - type = ADMaterialRealAux - variable = eqv_creep_strain_R - property = eqv_creep_strain_R - execute_on = 'TIMESTEP_END' - [] -[] - -[Functions] - [Q_loading] - type = ParsedFunction - expression = 'if(t<=15,10,5)' - [] -[] - -[BCs] - [no_x] - type = DirichletBC - variable = disp_x - boundary = 'left' - value = 0.0 - [] - [no_y] - type = DirichletBC - variable = disp_y - boundary = 'bottom' - value = 0.0 - [] - [no_z] - type = DirichletBC - variable = disp_z - boundary = 'front back' - value = 0.0 - [] - [BVPressure] - [pressure_right] - boundary = 'right' - displacement_vars = 'disp_x disp_y disp_z' - value = 0.0 - [] - [pressure_top] - boundary = 'top' - displacement_vars = 'disp_x disp_y disp_z' - function = Q_loading - # value = -10.0 - [] - [] -[] - -[Materials] - [elasticity] - type = BVMechanicalMaterial - displacements = 'disp_x disp_y disp_z' - young_modulus = ${E} - poisson_ratio = ${nu} - initial_stress = '-${P} ${P} 0.0' - inelastic_models = 'viscoelastic' - [] - [viscoelastic] - type = BVRTL2020ModelUpdate - volumetric = false - temperature = temp - Tr = ${Tr} - Ar = ${Ar} - alpha = ${alpha} - A1 = ${A1} - n1 = ${n1} - A2 = ${A2} - n2 = ${n2} - A = ${A} - n = ${n} - B = ${B} - m = ${m} - Nz = ${Nz} - nz = ${nz} - Mz = ${Mz} - mz = ${mz} - z = ${z} - [] -[] - -[Preconditioning] - active = 'hypre' - [hypre] - type = SMP - full = true - petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix' - petsc_options_iname = '-pc_type -pc_hypre_type - -snes_atol -snes_rtol -snes_stol -snes_max_it -snes_linesearch_type' - petsc_options_value = 'hypre boomeramg - 1.0e-10 1.0e-12 0 20 - basic' - [] -[] - -[Postprocessors] - [e] - type = ElementAverageValue - variable = eqv_strain - outputs = csv - [] - [e_rate] - type = ElementAverageValue - variable = eqv_strain_rate - outputs = csv - [] - [eqv_strain_R] - type = ElementAverageValue - variable = eqv_creep_strain_R - outputs = csv - [] -[] - -[Executioner] - type = Transient - solve_type = 'NEWTON' - start_time = 0.0 - end_time = 30.0 - dt = 0.01 -[] - -[Outputs] - perf_graph = true - execute_on = 'TIMESTEP_END' - print_linear_residuals = false - exodus = true - [csv] - type = CSV - [] -[] diff --git a/examples/viscoelasticity/munson_dawson/munson_dawson.py b/examples/viscoelasticity/munson_dawson/munson_dawson.py deleted file mode 100644 index 66800f7..0000000 --- a/examples/viscoelasticity/munson_dawson/munson_dawson.py +++ /dev/null @@ -1,146 +0,0 @@ -import os, csv -import numpy as np -import matplotlib.pyplot as plt -from matplotlib.lines import Line2D - -# Munson-Dawson creep test -# Units -# Stress in MPa -# Strain dimensionless -# Time in days - -# Model parameters -gamma_R0 = 0.0 -A1, A2 = 0.3, 0.5 -n1, n2 = 3.0, 4.0 -A, B = 0.5, 0.05 -n, m = 5.0, 5.0 -t_switch = 15.0 -q1, q2 = 10.0, 5.0 - -def analyticalSolution(t_array): - gamma_R_results = [] - gamma_R_bar_results = [] - q_results = [] - scaling_factor = 1e-6 - - # Find gamma_R at switch point for second segment - gamma_R_at_switch = gamma_R0 - - for i, t in enumerate(t_array): - # Get q value based on time - if t <= t_switch: - q = q1 - else: - q = q2 - - # Calculate gamma_R_bar - gamma_R_bar = np.power(q / A1, n1) - - # Determine initial conditions and time reference for current segment - if t <= t_switch: - # First segment - gamma_R_current = gamma_R0 - t0 = 0 - q_val = q1 - else: - # Second segment - use gamma_R value at switch point - if len(gamma_R_results) > 0: - # Find the last point before or at switch - switch_indices = [idx for idx, time_val in enumerate(t_array[:i]) if time_val <= t_switch] - if switch_indices: - gamma_R_at_switch = gamma_R_results[switch_indices[-1]] / scaling_factor # Unscale for calculation - else: - gamma_R_at_switch = gamma_R0 - else: - gamma_R_at_switch = gamma_R0 - - gamma_R_current = gamma_R_at_switch - t0 = t_switch - q_val = q2 - - # Determine regime and calculate coefficients - if gamma_R_current <= gamma_R_bar: - k = n - U = A * np.power(1 - gamma_R_current/gamma_R_bar, n-1) - else: - k = m - U = B * np.power(gamma_R_current/gamma_R_bar - 1, m-1) - - # Calculate Z - Z = np.power(A1, n1) / np.power(A2, n2) * np.power(q_val, n2 - n1) - - # Calculate V - dt = max(t - t0, 0) - V = max((k - 1) * U * Z * dt, 0) - - # Calculate xi with numerical stability - if abs(k - 1) < 1e-10: - xi = 1 - np.exp(-V) if V < 700 else 1.0 # Prevent overflow - else: - if V > 0: - xi = 1 - np.power(1 / (1 + V), 1/(k-1)) - else: - xi = 0 - - # Calculate gamma_R - gamma_R = gamma_R_current + (gamma_R_bar - gamma_R_current) * xi - - # Store scaled results - gamma_R_results.append(gamma_R * scaling_factor) - gamma_R_bar_results.append(gamma_R_bar * scaling_factor) - q_results.append(q) - - return gamma_R_results, gamma_R_bar_results, q_results - -def numericalSolution(): - filename = "munson_dawson_csv.csv" - - t, gamma_R, gamma_R_bar = np.loadtxt(filename, delimiter=',', skiprows=1, - usecols=[0, 3, 2], unpack=True) - - return t, gamma_R, gamma_R_bar - -def plot_munson_dawson(ax): - """ - Plot Munson-Dawson analytical and numerical solutions - """ - # Time array for analytical solution - ta = np.linspace(0.0, 30.0, 1000) - - # Analytical solution - gamma_R_a, gamma_R_bar_a, q_a = analyticalSolution(ta) - - # Numerical solution - tn, gamma_R_n, gamma_R_bar_n = numericalSolution() - - # Plot analytical solutions - ax.plot(ta, gamma_R_a, color="red", linewidth=2, label="γ_R (Analytical)") - # ax.plot(ta, gamma_R_bar_a, color="blue", linestyle="--", linewidth=2, label="γ̄_R (Analytical)") - - # Plot numerical solutions - ax.scatter(tn, gamma_R_n, c="k", marker="o", s=20, linewidths=0.0, label="γ_R (Numerical)") - # ax.scatter(tn, gamma_R_bar_n, c="gray", marker="s", s=20, linewidths=0.0, label="γ̄_R (Numerical)") - - # Add vertical line at stress switch - ax.axvline(x=t_switch, color='k', linestyle=':', alpha=0.7, label=f'Stress switch (t = {t_switch} days)') - - # Legend - ax.legend(loc="best") - - # Additional plot settings - ax.set_ylabel(r"Creep strain, $\gamma_R$ (×1e-6)") - ax.set_xlabel(r"Time, $t$ (days)") - ax.grid(True, alpha=0.3) - -if __name__ == '__main__': - # Figure setup - fig, ax = plt.subplots(figsize=(10, 6)) - - plot_munson_dawson(ax) - - ax.set_xlim(0, 30.0) - ax.set_ylim(None, None) # Auto-scale y-axis - - fig.savefig("../../../doc/content/media/munson_dawson_strain.png", format="PNG", dpi=300, bbox_inches="tight") - plt.show() \ No newline at end of file From 7f4218d0c3fc84b7832c0befae9ecb96cc393254 Mon Sep 17 00:00:00 2001 From: iyevugah Date: Wed, 4 Jun 2025 00:36:39 -0400 Subject: [PATCH 32/39] added the doc for lemaitre model --- doc/content/bib/beaver.bib | 9 +++++ doc/content/examples/index.md | 3 +- doc/content/examples/viscoplasticity/index.md | 4 ++ .../examples/viscoplasticity/lemaitre.md | 39 +++++++++++++++++++ 4 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 doc/content/examples/viscoplasticity/index.md create mode 100644 doc/content/examples/viscoplasticity/lemaitre.md diff --git a/doc/content/bib/beaver.bib b/doc/content/bib/beaver.bib index 98f5643..d7cb93c 100644 --- a/doc/content/bib/beaver.bib +++ b/doc/content/bib/beaver.bib @@ -28,4 +28,13 @@ @article{Gerya2007 pages = {83--105}, number = {1-4}, volume = {163} +} +@article{azabou2021rock, + title={Rock salt behavior: From laboratory experiments to pertinent long-term predictions}, + author={Azabou, M and Rouabhi, Ahmed and Blanco-Mart{\'\i}n, L and Hadj-Hassen, F and Karimi-Jafari, M and H{\'e}vin, G}, + journal={International Journal of Rock Mechanics and Mining Sciences}, + volume={142}, + pages={104588}, + year={2021}, + publisher={Elsevier} } \ No newline at end of file diff --git a/doc/content/examples/index.md b/doc/content/examples/index.md index 8feebca..e20ff8b 100644 --- a/doc/content/examples/index.md +++ b/doc/content/examples/index.md @@ -1,4 +1,5 @@ # Examples !content outline max_level=3 pages=poroelasticity/index.md - viscoelasticity/index.md \ No newline at end of file + viscoelasticity/index.md + viscoplasticity/index.md \ No newline at end of file diff --git a/doc/content/examples/viscoplasticity/index.md b/doc/content/examples/viscoplasticity/index.md new file mode 100644 index 0000000..a5e31bc --- /dev/null +++ b/doc/content/examples/viscoplasticity/index.md @@ -0,0 +1,4 @@ +# Viscoplasticity + +!content outline max_level=3 pages=lemaitre.md + \ No newline at end of file diff --git a/doc/content/examples/viscoplasticity/lemaitre.md b/doc/content/examples/viscoplasticity/lemaitre.md new file mode 100644 index 0000000..e552d38 --- /dev/null +++ b/doc/content/examples/viscoplasticity/lemaitre.md @@ -0,0 +1,39 @@ +# Lemaitre's viscoplastic model + +This problem considers a squared medium subject to external stress leading to creep. The material deforms following the Lemaitre's viscoplastic constitutive model. + +## Setup + +The squared medium is subject to a compressive horizontal uniaxial stress at a constant temperature, resulting in a uniaxial deformation. The setup is sketched in [!ref](fig_linear_kelvin_setup). + +!media media/linear_kelvin.png style=display:block;margin:auto;width:80%; caption=Setup for the Lemaitre's viscoplastic medium. id=fig_lemaitre_creep_model_setup + +## Solutions + +The scalar equivalent creep strain evolution is governed by the following constitutive model: + +!equation +\dot{\gamma}_{vp} = A \left( \frac{q}{A_2} \right)^{\frac{\beta}{\alpha}} \gamma_{vp}^{1-\frac{1}{a}}, + +where $A$ is a time-scaling model parameter unique to the material under consideration. [!cite](azabou2021rock) expressed this parameter in terms of the Arrhenius law as $\alpha \exp\left(\frac{1}{T_r}-\frac{1}{T}\right)$ to describe the behavior of rock salt. +In this case, $A \approx \alpha$ for isothermal conditions. $\alpha$ and $\beta$ are material parameters. $A_2$ is a normalizing parameter always taken as 1.0. $\gamma_{vp}$ is the scalar equivalent creep strain. + +The analytical solution for this problem is given as: + +!equation +\gamma_{vp} = \left( \frac{A}{\alpha} \right)^{\alpha} \left[ \left( \frac{q}{A_2} \right)^{\beta} \right] t^{a}, + +where $t$ is time. + +The following creep curve shows a comparison between the analytical and the numerical solutions of the Lemaitre model. + +!media media/lemaitre_strain.png style=display:block;margin:auto;width:60%; caption=Creep strain evolution in a Lemaitre's viscoplastic medium. id=fig_lemaitre + +## Complete Source Files + +- [lemaitre.i](https://github.com/ajacquey/beaver/blob/main/examples/viscoplasticity/lemaitre/lemaitre.i) + +!bibtex bibliography + +!content pagination use_title=True + \ No newline at end of file From ff106a2d5de19a10b4940644eb9ad5d636d8a4b0 Mon Sep 17 00:00:00 2001 From: Antoine Jacquey Date: Thu, 5 Jun 2025 16:07:24 -0400 Subject: [PATCH 33/39] Restored viscoelastic tests and modified MD figure. --- doc/content/media/munson_dawson_strain.png | Bin 0 -> 126700 bytes .../munson-dawson/munson_dawson.py | 14 ++++---- test/tests/viscoelasticity/tests | 32 ++++++++++++++++++ 3 files changed, 39 insertions(+), 7 deletions(-) create mode 100644 doc/content/media/munson_dawson_strain.png create mode 100644 test/tests/viscoelasticity/tests diff --git a/doc/content/media/munson_dawson_strain.png b/doc/content/media/munson_dawson_strain.png new file mode 100644 index 0000000000000000000000000000000000000000..98e644fc1050dd22912d9fdde18967f8dc67d249 GIT binary patch literal 126700 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